diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 019c5d7..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.babelrc b/.babelrc deleted file mode 100644 index ff3059c..0000000 --- a/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/preset-env"] -} \ No newline at end of file diff --git a/.github/workflows/add-badges.yml b/.github/workflows/add-badges.yml deleted file mode 100644 index c66062f..0000000 --- a/.github/workflows/add-badges.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Add Badges -on: - push: - branches: - - main -jobs: - run: - runs-on: ubuntu-latest - steps: - - uses: wow-actions/add-badges@v1 - env: - repo_url: ${{ github.event.repository.html_url }} - repo_name: ${{ github.event.repository.name }} - repo_owner: ${{ github.event.repository.owner.login }} - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - center: true - badges: | - [ - [ - { - "badge": "https://img.shields.io/github/license/paulosabayomi/treeSpider?style=flat-square", - "alt": "MIT License", - "link": "${{ env.repo_url }}/blob/main/LICENSE" - }, - { - "badge": "https://img.shields.io/badge/language-TypeScript-blue.svg?style=flat-square", - "alt": "Language", - "link": "https://www.typescriptlang.org" - }, - { - "badge": "https://img.shields.io/badge/PRs-Welcome-brightgreen.svg?style=flat-square", - "alt": "PRs Welcome", - "link": "${{ env.repo_url }}/pulls" - }, - { - "badge": "https://github.com/paulosabayomi/treeSpider/actions/workflows/package.yml/badge.svg", - "alt": "Package", - "link": "${{ env.repo_url }}/actions/workflows/package.yml" - }, - { - "badge": "https://github.com/paulosabayomi/treeSpider/actions/workflows/npm-publish.yml/badge.svg", - "alt": "Publish to npm", - "link": "https://github.com/paulosabayomi/treeSpider/actions/workflows/npm-publish.yml" - }, - { - "badge": "https://github.com/paulosabayomi/treeSpider/actions/workflows/tests.yml/badge.svg", - "alt": "Tests", - "link": "https://github.com/paulosabayomi/treeSpider/actions/workflows/tests.yml" - } - ] - ] \ No newline at end of file diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml deleted file mode 100644 index b5ba0e2..0000000 --- a/.github/workflows/npm-publish.yml +++ /dev/null @@ -1,33 +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://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages - -name: Publish to npm - -on: - release: - types: [created] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - - run: npm ci - - run: npm test - - publish-npm: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - registry-url: https://registry.npmjs.org/ - - run: npm ci - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.npm_token}} diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml deleted file mode 100644 index 55bde96..0000000 --- a/.github/workflows/package.yml +++ /dev/null @@ -1,35 +0,0 @@ -# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs - -name: Package - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - build: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [18.x, 20.x, 22.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm i - - run: npm i sass - - run: npm ci - - run: npm run build --if-present - - run: npm run rollup - - run: npm run sass-c - - run: npm run build-ts diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index 667f49f..0000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,32 +0,0 @@ -# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs - -name: Tests - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - build: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [18.x, 20.x, 22.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm i - - run: npm ci - - run: npm run build --if-present - - run: npm run test diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 30bc162..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..0a8af30 --- /dev/null +++ b/404.html @@ -0,0 +1,14 @@ + + + + + +Page Not Found | TreeSpider + + + + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 2b2c526..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,12 +0,0 @@ -# Changelog - -## 0.0.2 (2024-10-26) - -- Fix: Typescript not resolving module error, and typos in the README doc. - -## 0.0.1 (2024-10-26) - -- Fix: Bloated bundle size because of bundled faker-js, now bundle size reduced from 15mb to 5.1mb -- Fix: TypeScript not properly configured -- Changed: Loading of d3 through the script tag to import and packaged with the library, and also faker-js changed from `allFakers` to `faker`. -- Removed: `random_data_locale` parameter has been removed until later, because of the change from using `allFakers` to `faker` diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 93c0914..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Abayomi Amusa - -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/README.md b/README.md deleted file mode 100644 index fda0ef3..0000000 --- a/README.md +++ /dev/null @@ -1,173 +0,0 @@ -# TreeSpider - -
- TreeSpider logo -
- - - -

- MIT License - Language - PRs Welcome - Package - Publish to npm - Tests -

- - -Display your organization structure in style, personalize and use the chart type of your choice and that fits your organization, and more. Built with D3js and TypeScript. - -## Installation - -```bash -npm i treespider -``` - -## Setup - -After installation you can either import treeSpider directly in your application or load it via the script tag, it has both ES6 and browser bundles. - -### ES6 import - -```ts -import TreeSpider from '/path/to/installation/folder/dist/es/treeSpider.bundle.min.js' - -const instance1 = new TreeSpider({ - targetContainer: '#container-1' -}) -``` - -### Browser - -```html - -
- - - - - - -``` - -After importing it or loading it with the script tag, add the CSS file - -```html - -``` - -And that is it, you will see treeSpider running in the browser with random automatically generated data, and one cool thing is there is no limit to the number of TreeSpider instances that can be on a page, next, add your organization's employee data. - -## Adding data - -The treeSpider data structure is linear and simple, each employee has a parent ID which is the id of the **department head** to whom each employee reports to and the head of the organization doesn't have an ID, and it is required to have one and only one data that doesn't have a parent id which is going to serve as the overall head of the organization or the organization's name in an organization where there's no particular person as the head, the data is an array in the following format - -```ts -{ - id: string; - parentId: string; - name: string; - role: string; - location: string; - image: string; -} -``` - -All properties of the data except the `id` are optional, but it is recommended that the name should contain at least one name either first and/or last name, check the documentation for more info on the properties. - -### Passing your organization's data - -This is an example of an organization's employee data - -```ts -const tree_data = [ - {id: "1", name: "Abayomi Amusa", role: "Manager", location: "Lagos, Nigeria"}, - {id: "2", parentId: "1", name: "Trey Anderson", role: "Product Manager", location: "California, United States"}, - {id: "3", parentId: "1", name: "Troy Manuel", role: "Software Developer", location: "Alberta, Canada"}, - {id: "4", parentId: "1", name: "Rebecca Oslon", role: "Software Developer", location: "London, United Kingdom"}, - {id: "5", parentId: "1", name: "David Scheg", role: "Product Designer", location: "Jiaozian, China"}, - {id: "6", parentId: "2", name: "James Zucks", role: "DevOps", location: "Accra, Ghana"}, - {id: "7", parentId: "2", name: "Zu Po Xe", role: "Backend Developer", location: "Johanesburg, South Africa"}, - {id: "8", parentId: "2", name: "Scott Ziagler", role: "FrontEnd Developer Intern"}, - {id: "9", parentId: "7", name: "Xervia Allero", role: "FrontEnd Developer Intern"}, - {id: "10", parentId: "3", name: "Adebowale Ajanlekoko", role: "Fullstack Developer"}, -] - -const instance1 = new TreeSpider({ - targetContainer: '#container-1', - tree_data: tree_data -}) -``` - -This is going to display the employee data with the default settings, the default tree type, default chart head, default chart link and pallet and all of them can be set, changed or tuned to meet your need, see few of the options below. - -## Options - -TreeSpider can be personalized to your taste, TreeSpider currently has 7 tree types including the default and 3 chart head types including the default, there is also a color pallet for the chart head for personalizing the chart head. For example displaying the data with the `hSpiderWalk` tree and with the `landscape` chart head. - -```ts -const chart = new TreeSpider({ - targetContainer: '#chart-container', - tree_data: tree_data, - chart_head_type: 'landscape', - tree_type: 'hSpiderWalk', - pallet: { - darker: .8, - gray: 10 - }, - // random_data_length: 500, // set the number of random automatically generated employee data -}) -``` - -See the options documentation for a list of all the options. - -## Methods - -You can also programmatically interract with TreeSpider through the methods, example, the method to programatically initialize the library. - -```ts -const chart = new TreeSpider({ - // ... - autoInitialize: false -}) - -document.querySelector('#random-button').onclick = () => chart.initialize() -``` - -The `autoInitialize: false` tells TreeSpider to not initialize by default, and it gets initialized once the `initialize` method has been called. - -See the Methods documentation for all the available methods. - -## Events - -Events can be subscribed to with the `addEventListener` or with the `on` method, example - -```ts -const chart = new TreeSpider({ - //... -}) - -// using the `on` method -chart.on('library.init', (e) => { - console.log("the library has been initialized", e) -}) - -// using the addEventListener -chart.on('chart_head.create', (e) => { - console.log("a chart head has been created", e) -}) - -``` - -See the documentation for more. - -## License - -[MIT](https://github.com/paulosabayomi/treeSpider/blob/main/README.md) - -Created with :heart: by Abayomi Amusa diff --git a/__test__/treeSpider.es.min.test.ts b/__test__/treeSpider.es.min.test.ts deleted file mode 100644 index 3db7971..0000000 --- a/__test__/treeSpider.es.min.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -"use strict"; -/** - * @jest-environment jsdom - */ - -import {describe, expect, test} from '@jest/globals'; -import TreeSpider from '../dist/es/treeSpider.bundle.min'; - -document.body.innerHTML = ` -
-
-
-
-
-`; - -describe('Bundle minified Version: Initialization', () => { - const init1 = new TreeSpider({ - targetContainer: '#bundle-min-init-1', - }) - test('Bundle minified Version: Library got initialized', () => { - expect(init1).toBeInstanceOf(TreeSpider) - }) - test('Bundle minified Version: Multiple instances on the same page', () => { - const init2 = new TreeSpider({ - targetContainer: '#bundle-min-init-2', - }) - const init3 = new TreeSpider({ - targetContainer: '#bundle-min-init-3', - }) - const init4 = new TreeSpider({ - targetContainer: '#bundle-min-init-4', - }) - expect(init2).toBeInstanceOf(TreeSpider) - expect(init3).toBeInstanceOf(TreeSpider) - expect(init4).toBeInstanceOf(TreeSpider) - }) -}) - -describe('Options', () => { - const init1 = new TreeSpider({ - targetContainer: '#bundle-min-init-5', - tree_type: 'cellar', - font_link: "https://fonts.googleapis.com/css2?family=Updock&display=swap", - font_name: "Updock" - }); - init1.setOptions({ - width: '1200px', - height: '900px', - }); - test('Bundle minified Version: Option set on intialization got set', () => { - expect(init1.options.tree_type).toBe('cellar'); - }); - test('Bundle minified Version: Custom fonts provided were set', () => { - expect(init1.options.font_link).toBe('https://fonts.googleapis.com/css2?family=Updock&display=swap'); - expect(init1.options.font_name).toBe('Updock'); - expect(document.querySelector('[href="https://fonts.googleapis.com/css2?family=Updock&display=swap"]')).not.toBe(null); - }, 1500); - test('Bundle minified Version: Options set with setOptions got set', () => { - expect(init1.options.width).toBe('1200px'); - expect(init1.options.height).toBe('900px'); - }); -}) \ No newline at end of file diff --git a/__test__/treeSpider.es.test.ts b/__test__/treeSpider.es.test.ts deleted file mode 100644 index fe973ff..0000000 --- a/__test__/treeSpider.es.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -"use strict"; -/** - * @jest-environment jsdom - */ - -import {describe, expect, test} from '@jest/globals'; -import TreeSpider from '../dist/es/treeSpider.bundle'; - -document.body.innerHTML = ` -
-
-
-
-
-`; - -describe('Bundle Version: Initialization', () => { - const init1 = new TreeSpider({ - targetContainer: '#bundle-init-1', - }) - test('Bundle Version: Library got initialized', () => { - expect(init1).toBeInstanceOf(TreeSpider) - }) - test('Bundle Version: Multiple instances on the same page', () => { - const init2 = new TreeSpider({ - targetContainer: '#bundle-init-2', - }) - const init3 = new TreeSpider({ - targetContainer: '#bundle-init-3', - }) - const init4 = new TreeSpider({ - targetContainer: '#bundle-init-4', - }) - expect(init2).toBeInstanceOf(TreeSpider) - expect(init3).toBeInstanceOf(TreeSpider) - expect(init4).toBeInstanceOf(TreeSpider) - }) -}) - -describe('Options', () => { - const init1 = new TreeSpider({ - targetContainer: '#bundle-init-5', - tree_type: 'cellar', - font_link: "https://fonts.googleapis.com/css2?family=Updock&display=swap", - font_name: "Updock" - }); - init1.setOptions({ - width: '1200px', - height: '900px', - }); - test('Bundle Version: Option set on intialization got set', () => { - expect(init1.options.tree_type).toBe('cellar'); - }); - test('Bundle Version: Custom fonts provided were set', () => { - expect(init1.options.font_link).toBe('https://fonts.googleapis.com/css2?family=Updock&display=swap'); - expect(init1.options.font_name).toBe('Updock'); - expect(document.querySelector('[href="https://fonts.googleapis.com/css2?family=Updock&display=swap"]')).not.toBe(null); - }, 1500); - test('Bundle Version: Options set with setOptions got set', () => { - expect(init1.options.width).toBe('1200px'); - expect(init1.options.height).toBe('900px'); - }); -}) \ No newline at end of file diff --git a/assets/css/styles.ff8b82b0.css b/assets/css/styles.ff8b82b0.css new file mode 100644 index 0000000..01cb375 --- /dev/null +++ b/assets/css/styles.ff8b82b0.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,.hash-link{-webkit-user-select:none}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem}:root,[data-theme=dark]{--ifm-color-primary:#3769bf;--ifm-color-primary-dark:#315eac;--ifm-color-primary-darker:#2f59a2;--ifm-color-primary-darkest:#274986;--ifm-color-primary-light:#4576c9;--ifm-color-primary-lighter:#4f7dcc;--ifm-color-primary-lightest:#6b92d4}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none,.st-cs-content-wrapper .st-child-wrapper:last-child .child-container,.st-cs-content-wrapper .st-child-wrapper:last-child .ts-head-node-wrapper,.st-hsw-content-wrapper .st-child-wrapper:nth-child(2) .child-container{margin:0!important}.margin-top--none{margin-top:0!important}.margin-vert--none{margin-top:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.main-svg-el .linker-line,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_BuS1>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid,.st-hsw-content-wrapper{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_mo7H:hover{text-decoration:none}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--ts-root-container-cursor:default;--zoom-level:1;--move-x:0px;--move-y:0px;--head-shadow-color:"";--vertical-space-var:80px;--font-family:"Lato";--root-cont-width:900px;--root-cont-height:500px;--docusaurus-blog-social-icon-size:1rem;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--docusaurus-highlighted-code-line-bg:#0000004d}.sections-container{margin-top:20px;width:100%}.buttons_AeoN,.tree-container{align-items:center;display:flex;justify-content:center}.tree-type-title{font-size:150%;font-weight:700;margin-bottom:10px;margin-top:30px;text-align:center}.last-container{align-items:center;display:flex;flex-direction:column}.try-it-btn{background-color:var(--ifm-color-primary-dark);border:none;border-radius:10px;color:#fff;font-size:110%;outline:0;padding:15px 30px}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size);font-weight:var(--ifm-font-weight-bold)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.yearGroupHeading_rMGB{margin-bottom:.4rem;margin-top:1.6rem}.yearGroupHeading_QT03{margin:1rem .75rem .5rem}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.cardTitle_rnsV{font-size:1.2rem}.cardDescription_PWke{font-size:.8rem}.features_t9lD{align-items:center;display:flex;padding:2rem 0;width:100%}.featureSvg_GfXr{height:200px;width:200px}.sectionsTitle_GVc4{font-size:110%;margin-bottom:20px;text-align:center;width:100%}.heroBanner_qdFl{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath fill='%23656466' fill-opacity='.4' fill-rule='evenodd' d='m0 38.59 2.83-2.83 1.41 1.41L1.41 40H0zM0 1.4l2.83 2.83 1.41-1.41L1.41 0H0v1.41zM38.59 40l-2.83-2.83 1.41-1.41L40 38.59V40zM40 1.41l-2.83 2.83-1.41-1.41L38.59 0H40zM20 18.6l2.83-2.83 1.41 1.41L21.41 20l2.83 2.83-1.41 1.41L20 21.41l-2.83 2.83-1.41-1.41L18.59 20l-2.83-2.83 1.41-1.41L20 18.59z'/%3E%3C/svg%3E");height:60vh;overflow:hidden;padding:4rem 0;position:relative;text-align:center}.ts-root-wrapper-element *{-webkit-user-select:none;user-select:none;font-family:var(--font-family)}.ts-root-wrapper-element{background-image:var(--ts-root-el-bg-image);cursor:var(--ts-root-container-cursor);display:flex;height:var(--root-cont-height);overflow:hidden;position:relative;width:var(--root-cont-width)}.authorSocialIcon_XYv3,.authorSocialLink_owbf,.authorSocials_rSDt{height:var(--docusaurus-blog-social-icon-size)}.ts-root-wrapper-element .root-el{transition:1s ease-in}.ts-root-wrapper-element .ts-inner-container{transform-origin:0 0;width:auto}.ts-root-wrapper-element .tools-container{backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);background:#fff9;border:1px solid #ffffff4d;border-radius:12px;box-shadow:0 4px 30px #0000001a;display:flex;height:auto;left:10px;overflow:hidden;position:absolute;top:10px;width:auto;z-index:10}.ts-root-wrapper-element .tools-container .tool-item{align-items:center;cursor:pointer;display:flex;height:30px;justify-content:center;padding:0 10px;width:auto}.ts-root-wrapper-element .tools-container .tool-item:hover{background-color:#c2c2c2}.ts-root-wrapper-element .tools-container .tool-item svg{height:16px!important;width:16px!important}.main-svg-el{background-color:#fff;border-radius:16px;box-shadow:-1px 2px 14px 3px #5b5b5b30;-webkit-box-shadow:-1px 2px 14px 3px #5b5b5b30;-moz-box-shadow:-1px 2px 14px 3px #5b5b5b30;margin:0!important;overflow:visible;transition:background-color .3s linear}.authorSocials_rSDt,.authorTitle_nd0D{overflow:hidden;-webkit-box-orient:vertical}.main-svg-el.rounded-head{background-color:initial!important;box-shadow:none!important}.inset-shadow{box-shadow:inset -1px 2px 14px 6px #5b5b5b30!important;-webkit-box-shadow:inset -1px 2px 14px 6px #5b5b5b30!important;-moz-box-shadow:inset -1px 2px 14px 6px #5b5b5b30!important}.ts-head-wrapper{display:flex;flex-wrap:wrap;padding:10px}.ts-head-wrapper svg{margin:0 25px}.child-container{flex-wrap:nowrap!important;margin-top:var(--vertical-space-var);width:100%}.authorSocialIcon_XYv3,.authorSocialLink_owbf{width:var(--docusaurus-blog-social-icon-size)}.ts-head-wrapper .ts-head-node-wrapper{align-content:flex-start;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:center;margin:10px}.ts-v-spider-head-wrapper{display:flex!important;flex-direction:column!important;flex-wrap:wrap;padding:10px}.ts-v-spider-head-wrapper>div{align-items:flex-start;display:flex;flex-direction:row;flex-shrink:0;flex-wrap:nowrap;justify-content:center}.ts-v-spider-head-wrapper>div:first-child{align-items:flex-end!important}.ts-v-spider-head-wrapper>div:nth-child(2){align-items:center!important;padding-top:calc(var(--vertical-space-var))}.ts-v-spider-head-wrapper>div:nth-child(2)>div{margin-bottom:var(--vertical-space-var)/2!important}.ts-v-spider-head-wrapper .child-container{align-items:flex-start;display:flex;flex-wrap:nowrap!important;justify-content:center;margin-top:var(--vertical-space-var);width:100%}.ts-v-spider-head-wrapper .child-container.top{align-items:flex-end!important;margin-bottom:var(--vertical-space-var)!important;margin-top:0!important}.ts-v-spider-head-wrapper .ts-head-node-wrapper{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:center;margin:0 20px!important}.st-single-h{align-items:center;display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important}.st-single-h,.st-single-h>div>svg{margin:0!important;padding:0!important}.st-single-h-child-container{align-items:flex-start!important;display:flex!important;flex-direction:column!important;flex-shrink:0;justify-content:center;margin:0 0 0 var(--vertical-space-var)!important}.st-single-h>div{display:flex;flex-direction:column;height:100%!important;justify-content:center}.st-single-h-child-container .st-single-h{margin-bottom:15px!important}.st-hsw-content-wrapper .st-child-wrapper{display:flex;flex-direction:column;justify-content:center}.st-hsw-content-wrapper .st-child-wrapper:nth-child(2){align-items:center;justify-content:center}.st-hsw-content-wrapper .st-child-wrapper:nth-child(2) .ts-head-node-wrapper{justify-content:center!important;margin:0!important;padding:0 var(--vertical-space-var) 0 var(--vertical-space-var)!important}.st-hsw-content-wrapper .ts-head-node-wrapper{align-items:center;display:flex;flex-direction:row;margin-bottom:15px}.st-hsw-content-wrapper .ts-head-node-wrapper.top{justify-content:flex-end!important}.st-hsw-content-wrapper .ts-head-node-wrapper .child-container{margin-left:var(--vertical-space-var);margin-top:0!important}.st-hsw-content-wrapper .ts-head-node-wrapper .child-container.top{margin-right:var(--vertical-space-var)}.st-cs-content-wrapper{display:grid;grid-row:1fr 60px;grid-template-areas:"e f" "g g";grid-template-columns:minmax(200px,1fr) minmax(200px,1fr);min-height:200px}.st-cs-content-wrapper .st-child-wrapper{display:flex;flex-direction:column;justify-content:flex-end;width:auto}.st-cs-content-wrapper .ts-head-node-wrapper{align-items:flex-end;display:flex;flex-direction:row!important;justify-content:flex-end;margin-bottom:15px;margin-right:var(--vertical-space-var)}.st-cs-content-wrapper .st-child-wrapper .child-container{margin:0 var(--vertical-space-var) var(--vertical-space-var) 0!important}.st-cs-content-wrapper .st-child-wrapper:nth-child(2) .child-container{margin:0 0 var(--vertical-space-var) var(--vertical-space-var)!important}.st-cs-content-wrapper .st-child-wrapper:first-child{grid-area:e}.st-cs-content-wrapper .st-child-wrapper:nth-child(2){grid-area:f}.st-cs-content-wrapper .st-child-wrapper:nth-child(2) .ts-head-node-wrapper{justify-content:flex-start!important;margin-left:var(--vertical-space-var)!important;margin-right:0!important}.st-cs-content-wrapper .st-child-wrapper:last-child{align-items:center;grid-area:g;justify-content:center;padding-top:var(--vertical-space-var)}[data-theme=dark] .githubSvg_Uu4N,[data-theme=dark] .xSvg_y3PF{fill:var(--light)}[data-theme=light] .githubSvg_Uu4N,[data-theme=light] .xSvg_y3PF{fill:var(--dark)}.authorSocials_rSDt{align-items:center;display:flex;flex-wrap:wrap;line-clamp:1;-webkit-line-clamp:1}.authorSocialLink_owbf,.authorSocials_rSDt{line-height:0}.authorSocialLink_owbf{margin-right:.4rem}.authorImage_XqGP{--ifm-avatar-photo-size:3.6rem}.author-as-h1_n9oJ .authorImage_XqGP{--ifm-avatar-photo-size:7rem}.author-as-h2_gXvM .authorImage_XqGP{--ifm-avatar-photo-size:5.4rem}.authorDetails_lV9A{align-items:flex-start;display:flex;flex-direction:column;justify-content:space-around}.authorName_yefp{display:flex;flex-direction:row;font-size:1.1rem;line-height:1.1rem}.author-as-h1_n9oJ .authorName_yefp{display:inline;font-size:2.4rem;line-height:2.4rem}.author-as-h2_gXvM .authorName_yefp{display:inline;font-size:1.4rem;line-height:1.4rem}.authorTitle_nd0D{display:-webkit-box;font-size:.8rem;line-height:1rem;line-clamp:1;-webkit-line-clamp:1}.author-as-h1_n9oJ .authorTitle_nd0D{font-size:1.2rem;line-height:1.6rem}.author-as-h2_gXvM .authorTitle_nd0D{font-size:1rem;line-height:1.3rem}.authorBlogPostCount_iiJ5{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.8rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.authorCol_Hf19{max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.authorListItem_n3yI{list-style-type:none;margin-bottom:2rem}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_ev3q{height:auto}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_f1Hy{font-size:2rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg b/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg new file mode 100644 index 0000000..11bda09 Binary files /dev/null and b/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg differ diff --git a/assets/js/0058b4c6.a109e95c.js b/assets/js/0058b4c6.a109e95c.js new file mode 100644 index 0000000..93026da --- /dev/null +++ b/assets/js/0058b4c6.a109e95c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[849],{6164:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/docs/intro","docId":"intro","unlisted":false},{"type":"link","label":"Installation","href":"/docs/installation","docId":"installation","unlisted":false},{"type":"link","label":"Basic Usage","href":"/docs/basic-usage","docId":"basic-usage","unlisted":false},{"type":"link","label":"Tree Data","href":"/docs/tree-data","docId":"tree-data","unlisted":false},{"type":"link","label":"Trees","href":"/docs/trees","docId":"trees","unlisted":false},{"type":"link","label":"Chart Heads","href":"/docs/chart-heads","docId":"chart-heads","unlisted":false},{"type":"link","label":"Options","href":"/docs/options","docId":"options","unlisted":false},{"type":"link","label":"Colors","href":"/docs/colors","docId":"colors","unlisted":false},{"type":"link","label":"Methods","href":"/docs/methods","docId":"methods","unlisted":false},{"type":"link","label":"Events","href":"/docs/events","docId":"events","unlisted":false},{"type":"category","label":"Frameworks","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"React JS","href":"/docs/frameworks/react-js","docId":"frameworks/react-js","unlisted":false}],"href":"/docs/category/frameworks"},{"type":"link","label":"Contributing","href":"/docs/contributing","docId":"contributing","unlisted":false}]},"docs":{"basic-usage":{"id":"basic-usage","title":"Basic Usage","description":"Presumming you\'ve followed the installation steps, here is the basic usage of TreeSpider, all TreeSpider options are optional except the targetContainer, to intialize TreeSpider.","sidebar":"tutorialSidebar"},"chart-heads":{"id":"chart-heads","title":"Chart Heads","description":"As TreeSpider has different tree types so it also has different options of chart heads that can be chosen from, each trees has a fitting chart head, for example the rounded chart head goes well on the goldenRod tree, the chart heads are as follows","sidebar":"tutorialSidebar"},"colors":{"id":"colors","title":"Colors","description":"This page explains more on the colorrange option, you can customize TreeSpider chart head colors to fit your taste by providing an array of colors to the colorrange option, by default, TreeSpider uses a range of rainbow colors, how does it work? TreeSpider interpolates the provided colors using d3.interpolateRgbBasis() which produces a color range based on the provided colors, it then slice out a color based on the index of the tree data of the chart head, the index gets converted into percentage, like for example if the index of the tree data is 98 and the total length of the tree data is 200, the maths is going to be 98/200 which then gives the percentage and with this percentage it is used to get a slice from the interpolated color range and then the tree data\'s chart head get assigned the color slice, next let\'s check out how it really works.","sidebar":"tutorialSidebar"},"contributing":{"id":"contributing","title":"Contributing","description":"TreeSpider is still a work-in-progress and I am planning to make it better that it currently is, and your contribution is highly appreciated, and if you need a feature or want to add a tree type, a new chart head, a new link type or any other things you are welcome to contribute them, or if you noticed a bug you\'re welcome to create a pull request, your contributions are appreciated.","sidebar":"tutorialSidebar"},"events":{"id":"events","title":"Events","description":"TreeSpider has a list of events that can be listened for, the below is a list of all events.","sidebar":"tutorialSidebar"},"frameworks/react-js":{"id":"frameworks/react-js","title":"React JS","description":"TreeSpider can run in React JS applications, this documentation uses React JS and it runs TreeSpider, the following are the steps to running TreeSpider in a React JS application.","sidebar":"tutorialSidebar"},"installation":{"id":"installation","title":"Installation","description":"TreeSpider can be installed with npm or can be included via CDN.","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Introduction","description":"TreeSpider is an easy-to-use javascript library built for the purpose of displaying organization structure and employee structure and hierarchy within the organization, i.e for displaying employee data to know who reports to who and in which department, it makes it easy to manage employees in any organization of all sizes.","sidebar":"tutorialSidebar"},"methods":{"id":"methods","title":"Methods","description":"The following methods can be used to interact with TreeSpider programmatically","sidebar":"tutorialSidebar"},"options":{"id":"options","title":"Options","description":"TreeSpider can be personalized and customized with the options, the options are as follows","sidebar":"tutorialSidebar"},"tree-data":{"id":"tree-data","title":"Tree Data","description":"The TreeSpider tree data is straight forward, each employee has the required id and parentId properties, the parentId is for specifying the employee that an employee reports to, and the root employee or the overall head of the organization should not have the parentId property.","sidebar":"tutorialSidebar"},"trees":{"id":"trees","title":"Trees","description":"These are the different tree choices that can be chosen from, they will be caterized into radial and non-radial trees:","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/01a85c17.5814afe2.js b/assets/js/01a85c17.5814afe2.js new file mode 100644 index 0000000..0308fe8 --- /dev/null +++ b/assets/js/01a85c17.5814afe2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8209],{4096:(e,t,a)=>{a.d(t,{in:()=>c,OU:()=>P,Ki:()=>y,kJ:()=>b,x:()=>l,e7:()=>m,J_:()=>f,Gx:()=>A});var s=a(6540),n=a(9532),i=a(6803),r=a(4848);function l(){const e=(0,i.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}const o=s.createContext(null);function c(e){let{children:t,content:a,isBlogPostPage:n=!1}=e;const i=function(e){let{content:t,isBlogPostPage:a}=e;return(0,s.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:a})),[t,a])}({content:a,isBlogPostPage:n});return(0,r.jsx)(o.Provider,{value:i,children:t})}function m(){const e=(0,s.useContext)(o);if(null===e)throw new n.dV("BlogPostProvider");return e}var d=a(6025),u=a(4586);const g=e=>new Date(e).toISOString();function h(e){const t=e.map(x);return{author:1===t.length?t[0]:t}}function p(e,t,a){return e?{image:j({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${a}`})}:{}}function b(e){const{siteConfig:t}=(0,u.A)(),{withBaseUrl:a}=(0,d.hH)(),{metadata:{blogDescription:s,blogTitle:n,permalink:i}}=e,r=`${t.url}${i}`;return{"@context":"https://schema.org","@type":"Blog","@id":r,mainEntityOfPage:r,headline:n,description:s,blogPost:e.items.map((e=>function(e,t,a){const{assets:s,frontMatter:n,metadata:i}=e,{date:r,title:l,description:o,lastUpdatedAt:c}=i,m=s.image??n.image,d=n.keywords??[],u=`${t.url}${i.permalink}`,b=c?g(c):void 0;return{"@type":"BlogPosting","@id":u,mainEntityOfPage:u,url:u,headline:l,name:l,description:o,datePublished:r,...b?{dateModified:b}:{},...h(i.authors),...p(m,a,l),...d?{keywords:d}:{}}}(e.content,t,a)))}}function f(){const e=l(),{assets:t,metadata:a}=m(),{siteConfig:s}=(0,u.A)(),{withBaseUrl:n}=(0,d.hH)(),{date:i,title:r,description:o,frontMatter:c,lastUpdatedAt:b}=a,f=t.image??c.image,x=c.keywords??[],j=b?g(b):void 0,N=`${s.url}${a.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":N,mainEntityOfPage:N,url:N,headline:r,name:r,description:o,datePublished:i,...j?{dateModified:j}:{},...h(a.authors),...p(f,n,r),...x?{keywords:x}:{},isPartOf:{"@type":"Blog","@id":`${s.url}${e.blogBasePath}`,name:e.blogTitle}}}function x(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function j(e){let{imageUrl:t,caption:a}=e;return{"@type":"ImageObject","@id":t,url:t,contentUrl:t,caption:a}}var N=a(6347),v=a(8774),C=a(1682),k=a(9169);function A(e){const{pathname:t}=(0,N.zy)();return(0,s.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,k.ys)(e.permalink,t))}(e,t)))),[e,t])}function y(e){const t=(0,C.$z)(e,(e=>`${new Date(e.date).getFullYear()}`)),a=Object.entries(t);return a.reverse(),a}function P(e){let{items:t,ulClassName:a,liClassName:s,linkClassName:n,linkActiveClassName:i}=e;return(0,r.jsx)("ul",{className:a,children:t.map((e=>(0,r.jsx)("li",{className:s,children:(0,r.jsx)(v.A,{isNavLink:!0,to:e.permalink,className:n,activeClassName:i,children:e.title})},e.permalink)))})}},8027:(e,t,a)=>{a.d(t,{A:()=>U});var s=a(6540),n=a(4164),i=a(781),r=a(4581),l=a(1312),o=a(4096),c=a(6342),m=a(1107),d=a(4848);function u(e){let{year:t,yearGroupHeadingClassName:a,children:s}=e;return(0,d.jsxs)("div",{role:"group",children:[(0,d.jsx)(m.A,{as:"h3",className:a,children:t}),s]})}function g(e){let{items:t,yearGroupHeadingClassName:a,ListComponent:s}=e;if((0,c.p)().blog.sidebar.groupByYear){const e=(0,o.Ki)(t);return(0,d.jsx)(d.Fragment,{children:e.map((e=>{let[t,n]=e;return(0,d.jsx)(u,{year:t,yearGroupHeadingClassName:a,children:(0,d.jsx)(s,{items:n})},t)}))})}return(0,d.jsx)(s,{items:t})}const h=(0,s.memo)(g),p="sidebar_re4s",b="sidebarItemTitle_pO2u",f="sidebarItemList_Yudw",x="sidebarItem__DBe",j="sidebarItemLink_mo7H",N="sidebarItemLinkActive_I1ZP",v="yearGroupHeading_rMGB",C=e=>{let{items:t}=e;return(0,d.jsx)(o.OU,{items:t,ulClassName:(0,n.A)(f,"clean-list"),liClassName:x,linkClassName:j,linkActiveClassName:N})};function k(e){let{sidebar:t}=e;const a=(0,o.Gx)(t.items);return(0,d.jsx)("aside",{className:"col col--3",children:(0,d.jsxs)("nav",{className:(0,n.A)(p,"thin-scrollbar"),"aria-label":(0,l.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,d.jsx)("div",{className:(0,n.A)(b,"margin-bottom--md"),children:t.title}),(0,d.jsx)(h,{items:a,ListComponent:C,yearGroupHeadingClassName:v})]})})}const A=(0,s.memo)(k);var y=a(5600);const P="yearGroupHeading_QT03",_=e=>{let{items:t}=e;return(0,d.jsx)(o.OU,{items:t,ulClassName:"menu__list",liClassName:"menu__list-item",linkClassName:"menu__link",linkActiveClassName:"menu__link--active"})};function w(e){let{sidebar:t}=e;const a=(0,o.Gx)(t.items);return(0,d.jsx)(h,{items:a,ListComponent:_,yearGroupHeadingClassName:P})}function B(e){return(0,d.jsx)(y.GX,{component:w,props:e})}const G=(0,s.memo)(B);function O(e){let{sidebar:t}=e;const a=(0,r.l)();return t?.items.length?"mobile"===a?(0,d.jsx)(G,{sidebar:t}):(0,d.jsx)(A,{sidebar:t}):null}function U(e){const{sidebar:t,toc:a,children:s,...r}=e,l=t&&t.items.length>0;return(0,d.jsx)(i.A,{...r,children:(0,d.jsx)("div",{className:"container margin-vert--lg",children:(0,d.jsxs)("div",{className:"row",children:[(0,d.jsx)(O,{sidebar:t}),(0,d.jsx)("main",{className:(0,n.A)("col",{"col--7":l,"col--9 col--offset-1":!l}),children:s}),a&&(0,d.jsx)("div",{className:"col col--2",children:a})]})})})}},9158:(e,t,a)=>{a.r(t),a.d(t,{default:()=>b});a(6540);var s=a(4164),n=a(1312);const i=()=>(0,n.T)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var r=a(1213),l=a(7559),o=a(8027),c=a(6133),m=a(1107);const d={tag:"tag_Nnez"};var u=a(4848);function g(e){let{letterEntry:t}=e;return(0,u.jsxs)("article",{children:[(0,u.jsx)(m.A,{as:"h2",id:t.letter,children:t.letter}),(0,u.jsx)("ul",{className:"padding--none",children:t.tags.map((e=>(0,u.jsx)("li",{className:d.tag,children:(0,u.jsx)(c.A,{...e})},e.permalink)))}),(0,u.jsx)("hr",{})]})}function h(e){let{tags:t}=e;const a=function(e){const t={};return Object.values(e).forEach((e=>{const a=function(e){return e[0].toUpperCase()}(e.label);t[a]??=[],t[a].push(e)})),Object.entries(t).sort(((e,t)=>{let[a]=e,[s]=t;return a.localeCompare(s)})).map((e=>{let[t,a]=e;return{letter:t,tags:a.sort(((e,t)=>e.label.localeCompare(t.label)))}}))}(t);return(0,u.jsx)("section",{className:"margin-vert--lg",children:a.map((e=>(0,u.jsx)(g,{letterEntry:e},e.letter)))})}var p=a(1463);function b(e){let{tags:t,sidebar:a}=e;const n=i();return(0,u.jsxs)(r.e3,{className:(0,s.A)(l.G.wrapper.blogPages,l.G.page.blogTagsListPage),children:[(0,u.jsx)(r.be,{title:n}),(0,u.jsx)(p.A,{tag:"blog_tags_list"}),(0,u.jsxs)(o.A,{sidebar:a,children:[(0,u.jsx)(m.A,{as:"h1",children:n}),(0,u.jsx)(h,{tags:t})]})]})}},6133:(e,t,a)=>{a.d(t,{A:()=>l});a(6540);var s=a(4164),n=a(8774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var r=a(4848);function l(e){let{permalink:t,label:a,count:l,description:o}=e;return(0,r.jsxs)(n.A,{href:t,title:o,className:(0,s.A)(i.tag,l?i.tagWithCount:i.tagRegular),children:[a,l&&(0,r.jsx)("span",{children:l})]})}}}]); \ No newline at end of file diff --git a/assets/js/0f2c6659.bbe568fe.js b/assets/js/0f2c6659.bbe568fe.js new file mode 100644 index 0000000..269588c --- /dev/null +++ b/assets/js/0f2c6659.bbe568fe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[6698],{4269:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>h,contentTitle:()=>d,default:()=>a,frontMatter:()=>t,metadata:()=>s,toc:()=>c});var r=i(4848),l=i(8453);i(6540),i(8777);const t={sidebar_position:7},d="Options",s={id:"options",title:"Options",description:"TreeSpider can be personalized and customized with the options, the options are as follows",source:"@site/docs/options.mdx",sourceDirName:".",slug:"/options",permalink:"/docs/options",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/options.mdx",tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Chart Heads",permalink:"/docs/chart-heads"},next:{title:"Colors",permalink:"/docs/colors"}},h={},c=[{value:"targetContainer",id:"targetcontainer",level:2},{value:"placeEl",id:"placeel",level:2},{value:"width",id:"width",level:2},{value:"height",id:"height",level:2},{value:"autoInitialize",id:"autoinitialize",level:2},{value:"tree_data",id:"tree_data",level:2},{value:"color_range",id:"color_range",level:2},{value:"tree_type",id:"tree_type",level:2},{value:"chart_head_type",id:"chart_head_type",level:2},{value:"show_tools",id:"show_tools",level:2},{value:"show_chart_head_border",id:"show_chart_head_border",level:2},{value:"animation_rotation_speed",id:"animation_rotation_speed",level:2},{value:"animation_rotation_interval",id:"animation_rotation_interval",level:2},{value:"backgroundPattern",id:"backgroundpattern",level:2},{value:"backgroundPosition",id:"backgroundposition",level:2},{value:"backgroundSize",id:"backgroundsize",level:2},{value:"customBackground",id:"custombackground",level:2},{value:"head_linker_thumb_circle_radius",id:"head_linker_thumb_circle_radius",level:2},{value:"linker_thumb_icon_color",id:"linker_thumb_icon_color",level:2},{value:"linker_thumb_shape",id:"linker_thumb_shape",level:2},{value:"head_image_shape",id:"head_image_shape",level:2},{value:"chart_head_bg",id:"chart_head_bg",level:2},{value:"auto_set_chart_head_bg",id:"auto_set_chart_head_bg",level:2},{value:"display_tree_in_step",id:"display_tree_in_step",level:2},{value:"auto_display_tree_in_step",id:"auto_display_tree_in_step",level:2},{value:"tree_level_step",id:"tree_level_step",level:2},{value:"pallet",id:"pallet",level:2},{value:"tree_link_type",id:"tree_link_type",level:2},{value:"random_data_length",id:"random_data_length",level:2},{value:"zoom_in_distance",id:"zoom_in_distance",level:2},{value:"zoom_out_distance",id:"zoom_out_distance",level:2},{value:"verticalSpace",id:"verticalspace",level:2},{value:"font_link",id:"font_link",level:2},{value:"font_name",id:"font_name",level:2},{value:"Interfaces",id:"interfaces",level:2},{value:"ITreeSpiderMain",id:"itreespidermain",level:3},{value:"IChartHead",id:"icharthead",level:3},{value:"ID3DataFormat",id:"id3dataformat",level:3},{value:"Types",id:"types",level:2},{value:"TColorPallet",id:"tcolorpallet",level:3},{value:"TTreeType",id:"ttreetype",level:3},{value:"TChartHeadType",id:"tchartheadtype",level:3},{value:"TLinkType",id:"tlinktype",level:3},{value:"THeadImageShape",id:"theadimageshape",level:3},{value:"TLinkerCircleColor",id:"tlinkercirclecolor",level:3},{value:"TLinkerShape",id:"tlinkershape",level:3},{value:"TEventType",id:"teventtype",level:3}];function o(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"options",children:"Options"})}),"\n",(0,r.jsx)(n.p,{children:"TreeSpider can be personalized and customized with the options, the options are as follows"}),"\n",(0,r.jsx)(n.h2,{id:"targetcontainer",children:"targetContainer"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.code,{children:"none"})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"required"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The target container in which TreeSpider will be spawned/created into, this is required, and it is the CSS selector of the HTML element in which you want TreeSpider should be created in, if you want TreeSpider to take the whole page, pass in ",(0,r.jsx)(n.code,{children:"body"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"placeel",children:"placeEl"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsxs)(n.em,{children:["'override' | 'start' | 'end' | ",(0,r.jsx)(n.code,{children:"{beforeEl: string}"})]})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.code,{children:"'override'"})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["How TreeSpider container should be placed in the target container, set it to an object if the TreeSpider root container should be placed before a container in the provided target container, pass in ",(0,r.jsx)(n.code,{children:"beforeEl"})," and the CSS selector of the container which TreeSpider should be inserted before in the target container."]}),"\n",(0,r.jsx)(n.h2,{id:"width",children:"width"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"900px"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The width of the TreeSpider wrapper container"}),"\n",(0,r.jsx)(n.h2,{id:"height",children:"height"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"500px"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The height of the TreeSpider wrapper container"}),"\n",(0,r.jsx)(n.h2,{id:"autoinitialize",children:"autoInitialize"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"true"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Set this option to ",(0,r.jsx)(n.code,{children:"false"})," if you want to programmatically initialize TreeSpider, treeSpider will not automatically get initialized if this option is set to ",(0,r.jsx)(n.code,{children:"false"}),", then you will have to call the ",(0,r.jsx)(n.code,{children:"TreeSpider.initialize()"})," method to manually initialize TreeSpider."]}),"\n",(0,r.jsx)(n.h2,{id:"tree_data",children:"tree_data"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:"Array"})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"undefined"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["An array of data containing employee details and relationship, see ",(0,r.jsx)(n.a,{href:"/tree-data",children:"tree data"})," page for more info."]}),"\n",(0,r.jsx)(n.h2,{id:"color_range",children:"color_range"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:"string[]"})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:"['#b31212', '#b34712', '#b38d12', '#9ab312', '#2fb312', '#12b362', '#12b3a8', '#1278b3', '#1712b3', '#5712b3', '#8d12b3', '#b3128d', '#b3124a', '#b31212']"})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["An array of colors which will be used as color range, set more than one color for better output, the provided number of colors should be more than one, by default it uses a set of color ranges, behind the scene TreeSpider will interpolates the provided color using ",(0,r.jsx)(n.a,{href:"https://d3js.org/d3-interpolate/color#interpolateRgbBasis",children:"d3.interpolateRgbBasis()"})," and then slice out the color at the index equivalent to the employee index in the provided tree data, the provided color can be either in hex format or color names like ",(0,r.jsx)(n.code,{children:"yellow"}),", ",(0,r.jsx)(n.code,{children:"red"}),", ",(0,r.jsx)(n.code,{children:"green"}),", ",(0,r.jsx)(n.code,{children:"blue"})," and so on."]}),"\n",(0,r.jsx)(n.h2,{id:"tree_type",children:"tree_type"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:"default"})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The type of chart or tree, by default it uses the 'default' chart/tree which is the hierarchy-like tree type, the possible values is one of the following"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.th,{children:"Tree types"})})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"default"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"cellar"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"goldenRod"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"hSpider"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"hSpiderWalk"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"radialSpiderLeg"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"vSpiderWalk"})})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"chart_head_type",children:"chart_head_type"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:"string"})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:"default"})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The type of chart head that will be used to display employee details, it is set to 'default' by default, and you can set it to either one of the following."}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.th,{children:"Chart head types"})})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:"'default'"})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:"'landscape'"})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:"'rounded'"})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"show_tools",children:"show_tools"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"boolean"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"true"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Set this to ",(0,r.jsx)(n.code,{children:"false"})," to not display the UI tools panel, the UI tool panel is the rectangular box floating at the top left corner of the TreeSpider container and it contains the tools for interacting with TreeSpider, note that some tools, like start rotating clockwise/anticlockwise and rotate once clockwise/anticlockwise, are only available for radial tree types or simply tree types that are circular in shape, example is the ",(0,r.jsx)(n.code,{children:"radialSpiderLeg"})," tree type."]}),"\n",(0,r.jsx)(n.h2,{id:"show_chart_head_border",children:"show_chart_head_border"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"boolean"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"true"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Set this parameter to ",(0,r.jsx)(n.code,{children:"false"})," to not show border around the chart head, note setting this to ",(0,r.jsx)(n.code,{children:"false"})," will also remove the background color of the chart head when using the ",(0,r.jsx)(n.code,{children:"radialSpiderLeg"})," tree type."]}),"\n",(0,r.jsx)(n.h2,{id:"animation_rotation_speed",children:"animation_rotation_speed"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"number"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"10"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Use this to set the animation rotation speed, it is in milliseconds, passing 1000 is going to be 1s, it works like the number passed to the ",(0,r.jsx)(n.code,{children:"setInterval"})," that sets the duration, if it was set to, for example, 20 milliseconds, and during continuous rotation the rotation callback function will be called with a pause of 20 milliseconds, the smaller the ",(0,r.jsx)(n.code,{children:"animation_rotation_speed"})," the smoother and faster the rotation."]}),"\n",(0,r.jsx)(n.h2,{id:"animation_rotation_interval",children:"animation_rotation_interval"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"number"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"1"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The degree increment of the rotation, default is 1, the provided number is going to be converted to degrees, for example if the provided number is 20 then the tree is going to be rotating 20 degrees per the interval set through the ",(0,r.jsx)(n.code,{children:"animation_rotation_speed"})," option, the smaller the interval the smoother the rotation."]}),"\n",(0,r.jsx)(n.h2,{id:"backgroundpattern",children:"backgroundPattern"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"default"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The pattern is an SVG pattern that will be used as the background of the TreeSpider container, by default it is set to the ",(0,r.jsx)(n.code,{children:"'default'"})," background pattern which is a dotted SVG background, the option can be one of the following."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.th,{children:"Patterns"})})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"none"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"default"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"flux"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"quad"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"blurry"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"chaos"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"flurry"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"spiral"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"whirling"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"replicate"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"scribble"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"squiggly"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"gyrrate"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"leaves"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"spot"})})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"backgroundposition",children:"backgroundPosition"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"undefined"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The CSS background position of the SVG background, to further customize the SVG background you can set this option to one of the following"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.th,{children:"Background positions"})})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"bottom"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"center"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"inherit"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"initial"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"left"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"right"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"top"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"unset"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"${number}%"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"${number}px"})})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"backgroundsize",children:"backgroundSize"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"undefined"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The size of the background svg pattern, for a further customization, you can set the size of the SVG background pattern, it is the CSS ",(0,r.jsx)(n.code,{children:"background-size"})," property, it can be in any CSS units, like ",(0,r.jsx)(n.code,{children:"px"}),", ",(0,r.jsx)(n.code,{children:"%"}),", ",(0,r.jsx)(n.code,{children:"pc"}),", ",(0,r.jsx)(n.code,{children:"rem"})," and so on."]}),"\n",(0,r.jsx)(n.h2,{id:"custombackground",children:"customBackground"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"undefined"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The SVG background to be used instead of the ones that comes with TreeSpider, if you would like to use a custom SVG background as the background pattern of the TreeSpider container you can set it with this option, set this option to the stringified SVG element to be used as the background pattern, then the above background options can be used to configure the provided custom background."}),"\n",(0,r.jsx)(n.h2,{id:"head_linker_thumb_circle_radius",children:"head_linker_thumb_circle_radius"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"number"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"8"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The radius/width of the linker thumb, ignore the confusing name of this option, the linker thumb is the SVG shape(s) that is/are at the edge(s) of chart heads which is/are used for hiding and unhiding chart children container and also for showing the link destination from a parent to child chart head, to change the size of the shape set this to a desired size."}),"\n",(0,r.jsx)(n.h2,{id:"linker_thumb_icon_color",children:"linker_thumb_icon_color"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"bright500"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The color of the linker thumb icon, that is, the icon inside the chart head link thumb, as described above, the inner thumb icon toggles between a plus icon and a times icon when the chart head child container hides and unhides, to customize the color you can set it to one of the following:"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.th,{children:"Thumb icon colors"})})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"brighter"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"bright500"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"bright100"})})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"linker_thumb_shape",children:"linker_thumb_shape"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"symbolCircle"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The shape of the linker thumb, the shape is a list of default D3 shapes, you can set it to the shape of your choice, the following is the of the supported shapes:"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.th,{children:"Linker thumb shapes"})})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolAsterisk"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolCircle"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolCross"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolDiamond"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolDiamond2"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolPlus"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolSquare"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolSquare2"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolStar"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolTriangle"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolTriangle2"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolWye"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolX"})})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"head_image_shape",children:"head_image_shape"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"symbolCircle"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The shape of the chart head image or the employee name initials container, just like the linker thumb, you can change the shape to the one you prefer, the shapes are default D3 shapes and the following is the list of shapes you can choose from:"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.th,{children:"Head image shapes"})})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolCircle"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolCross"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolDiamond"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolDiamond2"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolSquare"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolSquare2"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolStar"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolTriangle"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolTriangle2"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"symbolWye"})})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"chart_head_bg",children:"chart_head_bg"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"#ffffff"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The chart head background color, useful in the scenerio where you want the background to match your website's color mode"}),"\n",(0,r.jsx)(n.h2,{id:"auto_set_chart_head_bg",children:"auto_set_chart_head_bg"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"boolean"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"false"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Set this option to ",(0,r.jsx)(n.code,{children:"true"})," if you want TreeSpider to automatically use the webpage's body tag as the background color of the chart heads."]}),"\n",(0,r.jsx)(n.h2,{id:"display_tree_in_step",children:"display_tree_in_step"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"boolean"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"false"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["If this option is set to ",(0,r.jsx)(n.code,{children:"true"}),", TreeSpider will render the tree data in steps with the default or provided number of tree level steps, for instance, if the ",(0,r.jsx)(n.code,{children:"tree_level_step"})," option was set to 3, then the 3 level of the organization structure data will, by default on initialization, be displayed, excluding the root of the chart like, for example, ",(0,r.jsx)(n.code,{children:"Root (CEO) -> Heads (level 1) -> Leads (level 2) -> Seniors (level 3)"}),", then if there are further levels below ",(0,r.jsx)(n.strong,{children:"level 3"})," the linker thumb will be added to each of the level 3 chart heads to render further levels with the same step meaning the further levels below level 3 will also be rendered in 3 levels down and that is how it is going to keep going until the last level, this feature is useful when the tree data is more than 1000, or in an organization with employees more than 1000, rendering tree data that is 1000 in length can take 2 to 4 seconds on a 16gb RAM computer (that's because that is the kind of computer I used to build the library) to render and in if a tree data of 5000 in length were to be rendered that would be the average time taken to render 1000 tree data length times 5, that would be around maximum of 10s which is going to be bad for user experience, setting this option to ",(0,r.jsx)(n.code,{children:"true"})," fixes this issue."]}),"\n",(0,r.jsx)(n.h2,{id:"auto_display_tree_in_step",children:"auto_display_tree_in_step"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"boolean"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"true"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["This option, which is ",(0,r.jsx)(n.code,{children:"true"})," by default, displays the tree data in steps if the tree data is more than 500 for optimization, better performance and good user experience, but you can set it ",(0,r.jsx)(n.code,{children:"false"}),", though not recommended, if you are running TreeSpider on a computer with great capacity and that can render large tree data less than a second and will not affect the user experience."]}),"\n",(0,r.jsx)(n.h2,{id:"tree_level_step",children:"tree_level_step"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"number"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"2"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The steps to display trees, on initialization the number of the provided steps will be rendered, when a tree whose children are hidden by default is expanded its children will also be rendered in the number of the provided step."}),"\n",(0,r.jsx)(n.h2,{id:"pallet",children:"pallet"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"Object"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"{ h: 10, s: 0.5, l: 0.5, darker: 3, brighter: 0.8, bright100: 0.5, dark100: 0.5, gray: 50, gray85: 85 }"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"This option is for tuning the colors of the items in the chart heads, the chart head has variants of colors, first the chart head gets assigned a color from the interpolated color, of the default or the provided colors, based on the index of its data in the tree data, then other colors are then gotten from the variant of the assigned color, and to customize these color variants you can set the value of the properties of the color pallet to match your need, explanation of the properties of the option is below:"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Property"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"h"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"number"})}),(0,r.jsx)(n.td,{children:"h stands for the hue in the hsl CSS color"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"s"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"number"})}),(0,r.jsx)(n.td,{children:"s is the saturation in the hsl CSS color"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"l"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"number"})}),(0,r.jsx)(n.td,{children:"l is the light in the hsl CSS color, use this to set the brightness of the color variants"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"darker"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"number"})}),(0,r.jsx)(n.td,{children:"this property specifies how much darker should the darker variants be"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"brighter"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"number"})}),(0,r.jsx)(n.td,{children:"This property specifies how much brighter the brighter variants should be, this brighter value is the direct variant of the original color"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"bright100"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"number"})}),(0,r.jsx)(n.td,{children:"The brighter variant of the hsl tuned original color"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"dark100"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"number"})}),(0,r.jsx)(n.td,{children:"The bright variant of the hsl tuned original color"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"gray"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"number"})}),(0,r.jsxs)(n.td,{children:["This is a gray color, generated with ",(0,r.jsx)(n.code,{children:"d3.gray"}),", you can tune and set the level of the generated gray, the value ranges from ",(0,r.jsx)(n.code,{children:"0-100"})," where 0 is the darkest gray and 100 is the lightest gray."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"gray85"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"number"})}),(0,r.jsxs)(n.td,{children:["This property is just like ",(0,r.jsx)(n.code,{children:"gray"})," except that it is set to ",(0,r.jsx)(n.code,{children:"85%"})," by default and you can reduce or increase it as you wish"]})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["See ",(0,r.jsx)(n.a,{href:"https://d3js.org/d3-color",children:"d3 color documentation"})," to learn more."]}),"\n",(0,r.jsx)(n.h2,{id:"tree_link_type",children:"tree_link_type"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"undefined"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"TreeSpider uses d3 link curves, and some of the d3 curves are supported, the following are the d3 link curves that TreeSpider supports:"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.th,{children:"Link types"})})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"curveBumpX"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"curveBumpY"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"curveBasisClosed"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"curveLinear"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"curveStep"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"curveStepAfter"})})}),(0,r.jsx)(n.tr,{children:(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"curveStepBefore"})})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"random_data_length",children:"random_data_length"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"number"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"200"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The length of the random number, by default the length of the random generated fake data is 200 but you can increase or decrease it with this option."}),"\n",(0,r.jsx)(n.h2,{id:"zoom_in_distance",children:"zoom_in_distance"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"number"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"1.5"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The extent to be zoomed in when the zoom in button is clicked, this doesn't apply when zooming in with the mouse or touch event."}),"\n",(0,r.jsx)(n.h2,{id:"zoom_out_distance",children:"zoom_out_distance"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"number"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"0.5"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["The extent to be zoomed out when the zoom out button is clicked, just like the ",(0,r.jsx)(n.code,{children:"zoom_in_distance"})," this option also doesn't apply to when zooming out with the mouse and touch event."]}),"\n",(0,r.jsx)(n.h2,{id:"verticalspace",children:"verticalSpace"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"120px"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The vertical space between heads, set this to a lower or higher number to decrease or increase the distance between parent and children heads."}),"\n",(0,r.jsx)(n.h2,{id:"font_link",children:"font_link"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The link of the google font you would like TreeSpider to use, this can also be a path to a font available locally, but font CDN is highly recommended, and currently it is not guaranteed that other font CDNs except Google Fonts CDN are going to work well, but they can still be tried out."}),"\n",(0,r.jsx)(n.h2,{id:"font_name",children:"font_name"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Type: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"string"})})]}),"\n",(0,r.jsxs)(n.li,{children:["Default: ",(0,r.jsx)(n.em,{children:(0,r.jsx)(n.code,{children:"Lato"})})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.em,{children:"optional"})}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["If you provide a custom font to the ",(0,r.jsx)(n.code,{children:"font_link"})," option set this option to the name of the custom font that was provided to the ",(0,r.jsx)(n.code,{children:"font_link"})," option, you can also set this option to the name of the font that has already been loaded in the application."]}),"\n",(0,r.jsx)(n.h2,{id:"interfaces",children:"Interfaces"}),"\n",(0,r.jsx)(n.p,{children:"The following are the TreeSpider typeScript interfaces."}),"\n",(0,r.jsx)(n.h3,{id:"itreespidermain",children:"ITreeSpiderMain"}),"\n",(0,r.jsx)(n.p,{children:"This is the TreeSpider option typescript interface"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"{\n targetContainer: string;\n placeEl?: 'override' | 'start' | 'end' | {beforeEl: string};\n autoInitialize?: boolean;\n tree_data?: Array;\n color_range?: string[];\n tree_type?: 'default' | 'cellar' | 'goldenRod' | 'hSpider' | 'hSpiderWalk' | 'radialSpiderLeg' | 'vSpiderWalk';\n chart_head_type?: TChartHeadType;\n show_tools?: boolean;\n show_chart_head_border?: boolean;\n animation_rotation_speed?: number;\n animation_rotation_interval?: number;\n backgroundPattern?: 'none' | 'default' | 'flux' | 'quad' | 'blurry' | 'chaos' | \n 'flurry' | 'spiral' | 'whirling' | 'replicate' | 'scribble' | 'squiggly' | \n 'gyrrate' | 'leaves' | 'spot';\n backgroundPosition?: 'bottom' | 'center' | 'inherit' | 'initial' | 'left' | \n 'right' | 'top' | 'unset' | `${number}%` | `${number}px`;\n backgroundSize?: string;\n customBackground?: string;\n head_linker_thumb_circle_radius?: number;\n linker_thumb_icon_color?: TLinkerCircleColor;\n linker_thumb_shape?: TLinkerShape;\n head_image_shape?: THeadImageShape;\n chart_head_bg?: string;\n auto_set_chart_head_bg?: boolean;\n display_tree_in_step?: boolean;\n auto_display_tree_in_step?: boolean;\n tree_level_step?: number;\n pallet?: TColorPallet;\n tree_link_type?: TLinkType;\n random_data_length?: number;\n zoom_in_distance?: number;\n zoom_out_distance?: number;\n verticalSpace?: string;\n font_link?: string;\n font_name?: string;\n width?: string;\n height?: string;\n}\n"})}),"\n",(0,r.jsx)(n.h3,{id:"icharthead",children:"IChartHead"}),"\n",(0,r.jsx)(n.p,{children:"The tree data typescript interface"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"{\n id: string;\n name: string;\n role: string;\n location?: string;\n parentId?: string;\n stat?: number;\n image?: string;\n}\n"})}),"\n",(0,r.jsx)(n.h3,{id:"id3dataformat",children:"ID3DataFormat"}),"\n",(0,r.jsxs)(n.p,{children:["This is the d3 data format, it is just the same as the ",(0,r.jsx)(n.code,{children:"IChartHead"})," interface except that it has the ",(0,r.jsx)(n.code,{children:"children"})," property that is an array of ",(0,r.jsx)(n.code,{children:"IChartHead"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"ID3DataFormat extends IChartHead {\n children: IChartHead[];\n}\n"})}),"\n",(0,r.jsx)(n.h2,{id:"types",children:"Types"}),"\n",(0,r.jsx)(n.p,{children:"The following are the TreeSpider typeScript types"}),"\n",(0,r.jsx)(n.h3,{id:"tcolorpallet",children:"TColorPallet"}),"\n",(0,r.jsx)(n.p,{children:"This is the color pallet typescript type"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"{\n h: number;\n s: number;\n l: number;\n darker: number;\n brighter: number;\n bright100: number;\n dark100: number;\n gray: number;\n gray85: number;\n}\n"})}),"\n",(0,r.jsx)(n.h3,{id:"ttreetype",children:"TTreeType"}),"\n",(0,r.jsx)(n.p,{children:"This is the type of the TreeSpider tree types"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"'default' | 'cellar' | 'goldenRod' | 'hSpider' | 'hSpiderWalk' | 'radialSpiderLeg' | 'spiderlingsPack' | 'vSpiderWalk'\n"})}),"\n",(0,r.jsx)(n.h3,{id:"tchartheadtype",children:"TChartHeadType"}),"\n",(0,r.jsx)(n.p,{children:"The type of the chart head types"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"'default' | 'landscape' | 'rounded'\n"})}),"\n",(0,r.jsx)(n.h3,{id:"tlinktype",children:"TLinkType"}),"\n",(0,r.jsx)(n.p,{children:"The type of the link types"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"'curveBumpX' | 'curveBumpY' | 'curveBasisClosed' | 'curveLinear' | 'curveStep' | 'curveStepAfter' | 'curveStepBefore'\n"})}),"\n",(0,r.jsx)(n.h3,{id:"theadimageshape",children:"THeadImageShape"}),"\n",(0,r.jsx)(n.p,{children:"The type of the head image shapes"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"'symbolCircle' | 'symbolCross' | 'symbolDiamond' | 'symbolDiamond2' | 'symbolSquare' | 'symbolSquare2' | 'symbolStar' | 'symbolTriangle' | 'symbolTriangle2' | 'symbolWye'\n"})}),"\n",(0,r.jsx)(n.h3,{id:"tlinkercirclecolor",children:"TLinkerCircleColor"}),"\n",(0,r.jsx)(n.p,{children:"The type of the linker color"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"'brighter' | 'bright500' | 'bright100'\n"})}),"\n",(0,r.jsx)(n.h3,{id:"tlinkershape",children:"TLinkerShape"}),"\n",(0,r.jsx)(n.p,{children:"The type of the linker thumb shape"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"'symbolAsterisk' | 'symbolCircle' | 'symbolCross' | 'symbolDiamond' | 'symbolDiamond2' | 'symbolPlus' | 'symbolSquare' | 'symbolSquare2' | 'symbolStar' | 'symbolTriangle' | 'symbolTriangle2' | 'symbolWye' | 'symbolX'\n"})}),"\n",(0,r.jsx)(n.h3,{id:"teventtype",children:"TEventType"}),"\n",(0,r.jsx)(n.p,{children:"The type for the list of available events."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"'chart_head.create' | 'chart_head.expanded' | 'chart_head.collapsed' | 'zooming' | 'library.init'\n"})})]})}function a(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>s});var r=i(6540);const l={},t=r.createContext(l);function d(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:d(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/14eb3368.528b65af.js b/assets/js/14eb3368.528b65af.js new file mode 100644 index 0000000..9416f97 --- /dev/null +++ b/assets/js/14eb3368.528b65af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[6969],{1243:(e,t,n)=>{n.d(t,{A:()=>g});n(6540);var s=n(4164),r=n(7559),i=n(6972),a=n(9169),l=n(8774),o=n(1312),c=n(6025),d=n(4848);function u(e){return(0,d.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,d.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const m={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function h(){const e=(0,c.Ay)("/");return(0,d.jsx)("li",{className:"breadcrumbs__item",children:(0,d.jsx)(l.A,{"aria-label":(0,o.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,d.jsx)(u,{className:m.breadcrumbHomeIcon})})})}const b={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function p(e){let{children:t,href:n,isLast:s}=e;const r="breadcrumbs__link";return s?(0,d.jsx)("span",{className:r,itemProp:"name",children:t}):n?(0,d.jsx)(l.A,{className:r,href:n,itemProp:"item",children:(0,d.jsx)("span",{itemProp:"name",children:t})}):(0,d.jsx)("span",{className:r,children:t})}function x(e){let{children:t,active:n,index:r,addMicrodata:i}=e;return(0,d.jsxs)("li",{...i&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,s.A)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:[t,(0,d.jsx)("meta",{itemProp:"position",content:String(r+1)})]})}function g(){const e=(0,i.OF)(),t=(0,a.Dt)();return e?(0,d.jsx)("nav",{className:(0,s.A)(r.G.docs.docBreadcrumbs,b.breadcrumbsContainer),"aria-label":(0,o.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,d.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[t&&(0,d.jsx)(h,{}),e.map(((t,n)=>{const s=n===e.length-1,r="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,d.jsx)(x,{active:s,index:n,addMicrodata:!!r,children:(0,d.jsx)(p,{href:r,isLast:s,children:t.label})},n)}))]})}):null}},4136:(e,t,n)=>{n.r(t),n.d(t,{default:()=>w});n(6540);var s=n(1213),r=n(6972),i=n(6025),a=n(4164),l=n(8774),o=n(5846),c=n(6654),d=n(1312),u=n(1107);const m={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};var h=n(4848);function b(e){let{href:t,children:n}=e;return(0,h.jsx)(l.A,{href:t,className:(0,a.A)("card padding--lg",m.cardContainer),children:n})}function p(e){let{href:t,icon:n,title:s,description:r}=e;return(0,h.jsxs)(b,{href:t,children:[(0,h.jsxs)(u.A,{as:"h2",className:(0,a.A)("text--truncate",m.cardTitle),title:s,children:[n," ",s]}),r&&(0,h.jsx)("p",{className:(0,a.A)("text--truncate",m.cardDescription),title:r,children:r})]})}function x(e){let{item:t}=e;const n=(0,r.Nr)(t),s=function(){const{selectMessage:e}=(0,o.W)();return t=>e(t,(0,d.T)({message:"1 item|{count} items",id:"theme.docs.DocCard.categoryDescription.plurals",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t}))}();return n?(0,h.jsx)(p,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??s(t.items.length)}):null}function g(e){let{item:t}=e;const n=(0,c.A)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",s=(0,r.cC)(t.docId??void 0);return(0,h.jsx)(p,{href:t.href,icon:n,title:t.label,description:t.description??s?.description})}function v(e){let{item:t}=e;switch(t.type){case"link":return(0,h.jsx)(g,{item:t});case"category":return(0,h.jsx)(x,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function f(e){let{className:t}=e;const n=(0,r.$S)();return(0,h.jsx)(j,{items:n.items,className:t})}function j(e){const{items:t,className:n}=e;if(!t)return(0,h.jsx)(f,{...e});const s=(0,r.d1)(t);return(0,h.jsx)("section",{className:(0,a.A)("row",n),children:s.map(((e,t)=>(0,h.jsx)("article",{className:"col col--6 margin-bottom--lg",children:(0,h.jsx)(v,{item:e})},t)))})}var A=n(7719),N=n(1878),T=n(4267),_=n(1243);const L={generatedIndexPage:"generatedIndexPage_vN6x",list:"list_eTzJ",title:"title_kItE"};function k(e){let{categoryGeneratedIndex:t}=e;return(0,h.jsx)(s.be,{title:t.title,description:t.description,keywords:t.keywords,image:(0,i.Ay)(t.image)})}function y(e){let{categoryGeneratedIndex:t}=e;const n=(0,r.$S)();return(0,h.jsxs)("div",{className:L.generatedIndexPage,children:[(0,h.jsx)(N.A,{}),(0,h.jsx)(_.A,{}),(0,h.jsx)(T.A,{}),(0,h.jsxs)("header",{children:[(0,h.jsx)(u.A,{as:"h1",className:L.title,children:t.title}),t.description&&(0,h.jsx)("p",{children:t.description})]}),(0,h.jsx)("article",{className:"margin-top--lg",children:(0,h.jsx)(j,{items:n.items,className:L.list})}),(0,h.jsx)("footer",{className:"margin-top--lg",children:(0,h.jsx)(A.A,{previous:t.navigation.previous,next:t.navigation.next})})]})}function w(e){return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(k,{...e}),(0,h.jsx)(y,{...e})]})}},7719:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var s=n(1312),r=n(9022),i=n(4848);function a(e){const{previous:t,next:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,s.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,i.jsx)(r.A,{...t,subLabel:(0,i.jsx)(s.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,i.jsx)(r.A,{...n,subLabel:(0,i.jsx)(s.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}},4267:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var s=n(4164),r=n(1312),i=n(7559),a=n(3025),l=n(4848);function o(e){let{className:t}=e;const n=(0,a.r)();return n.badge?(0,l.jsx)("span",{className:(0,s.A)(t,i.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,l.jsx)(r.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}},1878:(e,t,n)=>{n.d(t,{A:()=>x});n(6540);var s=n(4164),r=n(4586),i=n(8774),a=n(1312),l=n(4070),o=n(7559),c=n(3886),d=n(3025),u=n(4848);const m={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,u.jsx)(a.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,u.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,u.jsx)(a.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,u.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function h(e){const t=m[e.versionMetadata.banner];return(0,u.jsx)(t,{...e})}function b(e){let{versionLabel:t,to:n,onClick:s}=e;return(0,u.jsx)(a.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,u.jsx)("b",{children:(0,u.jsx)(i.A,{to:n,onClick:s,children:(0,u.jsx)(a.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function p(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:i}}=(0,r.A)(),{pluginId:a}=(0,l.vT)({failfast:!0}),{savePreferredVersionName:d}=(0,c.g1)(a),{latestDocSuggestion:m,latestVersionSuggestion:p}=(0,l.HW)(a),x=m??(g=p).docs.find((e=>e.id===g.mainDocId));var g;return(0,u.jsxs)("div",{className:(0,s.A)(t,o.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,u.jsx)("div",{children:(0,u.jsx)(h,{siteTitle:i,versionMetadata:n})}),(0,u.jsx)("div",{className:"margin-top--md",children:(0,u.jsx)(b,{versionLabel:p.label,to:x.path,onClick:()=>d(p.name)})})]})}function x(e){let{className:t}=e;const n=(0,d.r)();return n.banner?(0,u.jsx)(p,{className:t,versionMetadata:n}):null}},9022:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var s=n(4164),r=n(8774),i=n(4848);function a(e){const{permalink:t,title:n,subLabel:a,isNext:l}=e;return(0,i.jsxs)(r.A,{className:(0,s.A)("pagination-nav__link",l?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[a&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:a}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}},5846:(e,t,n)=>{n.d(t,{W:()=>c});var s=n(6540),r=n(4586);const i=["zero","one","two","few","many","other"];function a(e){return i.filter((t=>e.includes(t)))}const l={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),l}}),[e])}function c(){const e=o();return{selectMessage:(t,n)=>function(e,t,n){const s=e.split("|");if(1===s.length)return s[0];s.length>n.pluralForms.length&&console.error(`For locale=${n.locale}, a maximum of ${n.pluralForms.length} plural forms are expected (${n.pluralForms.join(",")}), but the message contains ${s.length}: ${e}`);const r=n.select(t),i=n.pluralForms.indexOf(r);return s[Math.min(i,s.length-1)]}(n,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/1538.fe9f9ffe.js b/assets/js/1538.fe9f9ffe.js new file mode 100644 index 0000000..9374ea2 --- /dev/null +++ b/assets/js/1538.fe9f9ffe.js @@ -0,0 +1 @@ +(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[1538],{7293:(e,t,n)=>{"use strict";n.d(t,{A:()=>S});var s=n(6540),o=n(4848);function a(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),a=t.filter((e=>e!==n)),c=n?.props.children;return{mdxAdmonitionTitle:c,rest:a.length>0?(0,o.jsx)(o.Fragment,{children:a}):null}}(e.children),a=e.title??t;return{...e,...a&&{title:a},children:n}}var c=n(4164),r=n(1312),i=n(7559);const l="admonition_xJq3",d="admonitionHeading_Gvgb",u="admonitionIcon_Rf37",m="admonitionContent_BuS1";function h(e){let{type:t,className:n,children:s}=e;return(0,o.jsx)("div",{className:(0,c.A)(i.G.common.admonition,i.G.common.admonitionType(t),l,n),children:s})}function p(e){let{icon:t,title:n}=e;return(0,o.jsxs)("div",{className:d,children:[(0,o.jsx)("span",{className:u,children:t}),n]})}function f(e){let{children:t}=e;return t?(0,o.jsx)("div",{className:m,children:t}):null}function x(e){const{type:t,icon:n,title:s,children:a,className:c}=e;return(0,o.jsxs)(h,{type:t,className:c,children:[s||n?(0,o.jsx)(p,{title:s,icon:n}):null,(0,o.jsx)(f,{children:a})]})}function j(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const b={icon:(0,o.jsx)(j,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function g(e){return(0,o.jsx)(x,{...b,...e,className:(0,c.A)("alert alert--secondary",e.className),children:e.children})}function v(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const y={icon:(0,o.jsx)(v,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function N(e){return(0,o.jsx)(x,{...y,...e,className:(0,c.A)("alert alert--success",e.className),children:e.children})}function A(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const k={icon:(0,o.jsx)(A,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function B(e){return(0,o.jsx)(x,{...k,...e,className:(0,c.A)("alert alert--info",e.className),children:e.children})}function w(e){return(0,o.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const C={icon:(0,o.jsx)(w,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function E(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const T={icon:(0,o.jsx)(E,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const L={icon:(0,o.jsx)(w,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const _={...{note:g,tip:N,info:B,warning:function(e){return(0,o.jsx)(x,{...C,...e,className:(0,c.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,o.jsx)(x,{...T,...e,className:(0,c.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,o.jsx)(g,{title:"secondary",...e}),important:e=>(0,o.jsx)(B,{title:"important",...e}),success:e=>(0,o.jsx)(N,{title:"success",...e}),caution:function(e){return(0,o.jsx)(x,{...L,...e,className:(0,c.A)("alert alert--warning",e.className),children:e.children})}}};function S(e){const t=a(e),n=(s=t.type,_[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),_.info));var s;return(0,o.jsx)(n,{...t})}},4336:(e,t,n)=>{"use strict";n.d(t,{A:()=>x});n(6540);var s=n(4164),o=n(1312),a=n(7559),c=n(8774);const r={iconEdit:"iconEdit_Z9Sw"};var i=n(4848);function l(e){let{className:t,...n}=e;return(0,i.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.A)(r.iconEdit,t),"aria-hidden":"true",...n,children:(0,i.jsx)("g",{children:(0,i.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function d(e){let{editUrl:t}=e;return(0,i.jsxs)(c.A,{to:t,className:a.G.common.editThisPage,children:[(0,i.jsx)(l,{}),(0,i.jsx)(o.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}var u=n(6266);function m(e){let{lastUpdatedAt:t}=e;const n=new Date(t),s=(0,u.i)({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,i.jsx)(o.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,i.jsx)("b",{children:(0,i.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:s})})},children:" on {date}"})}function h(e){let{lastUpdatedBy:t}=e;return(0,i.jsx)(o.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,i.jsx)("b",{children:t})},children:" by {user}"})}function p(e){let{lastUpdatedAt:t,lastUpdatedBy:n}=e;return(0,i.jsxs)("span",{className:a.G.common.lastUpdated,children:[(0,i.jsx)(o.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t?(0,i.jsx)(m,{lastUpdatedAt:t}):"",byUser:n?(0,i.jsx)(h,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const f={lastUpdated:"lastUpdated_JAkA"};function x(e){let{className:t,editUrl:n,lastUpdatedAt:o,lastUpdatedBy:a}=e;return(0,i.jsxs)("div",{className:(0,s.A)("row",t),children:[(0,i.jsx)("div",{className:"col",children:n&&(0,i.jsx)(d,{editUrl:n})}),(0,i.jsx)("div",{className:(0,s.A)("col",f.lastUpdated),children:(o||a)&&(0,i.jsx)(p,{lastUpdatedAt:o,lastUpdatedBy:a})})]})}},5533:(e,t,n)=>{"use strict";n.d(t,{A:()=>me});var s=n(6540),o=n(8453),a=n(5260),c=n(2303),r=n(4164),i=n(5293),l=n(6342);function d(){const{prism:e}=(0,l.p)(),{colorMode:t}=(0,i.G)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var u=n(7559),m=n(8426),h=n.n(m);const p=/title=(?["'])(?.*?)\1/,f=/\{(?<range>[\d,-]+)\}/,x={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},j={...x,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},b=Object.keys(x);function g(e,t){const n=e.map((e=>{const{start:n,end:s}=j[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function v(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:o,metastring:a}=t;if(a&&f.test(a)){const e=a.match(f).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${a}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,s=h()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return g(["js","jsBlock"],t);case"jsx":case"tsx":return g(["js","jsBlock","jsx"],t);case"html":return g(["js","jsBlock","html"],t);case"python":case"py":case"bash":return g(["bash"],t);case"markdown":case"md":return g(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return g(["tex"],t);case"lua":case"haskell":case"sql":return g(["lua"],t);case"wasm":return g(["wasm"],t);case"vb":case"vba":case"visual-basic":return g(["vb","rem"],t);case"vbnet":return g(["vbnet","rem"],t);case"batch":return g(["rem"],t);case"basic":return g(["rem","f90"],t);case"fsharp":return g(["js","ml"],t);case"ocaml":case"sml":return g(["ml"],t);case"fortran":return g(["f90"],t);case"cobol":return g(["cobol"],t);default:return g(b,t)}}(s,o),r=n.split("\n"),i=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),l=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;h<r.length;){const e=r[h].match(c);if(!e){h+=1;continue}const t=e.slice(1).find((e=>void 0!==e));l[t]?i[l[t]].range+=`${h},`:d[t]?i[d[t]].start=h:u[t]&&(i[u[t]].range+=`${i[u[t]].start}-${h-1},`),r.splice(h,1)}n=r.join("\n");const m={};return Object.entries(i).forEach((e=>{let[t,{range:n}]=e;h()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const y="codeBlockContainer_Ckt0";var N=n(4848);function A(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,o]=e;const a=t[s];a&&"string"==typeof o&&(n[a]=o)})),n}(d());return(0,N.jsx)(t,{...n,style:s,className:(0,r.A)(n.className,y,u.G.common.codeBlock)})}const k={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function B(e){let{children:t,className:n}=e;return(0,N.jsx)(A,{as:"pre",tabIndex:0,className:(0,r.A)(k.codeBlockStandalone,"thin-scrollbar",n),children:(0,N.jsx)("code",{className:k.codeBlockLines,children:t})})}var w=n(9532);const C={attributes:!0,characterData:!0,childList:!0,subtree:!0};function E(e,t){const[n,o]=(0,s.useState)(),a=(0,s.useCallback)((()=>{o(e.current?.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,s.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=C);const o=(0,w._q)(t),a=(0,w.Be)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,a),()=>t.disconnect()}),[e,o,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var T=n(1765);const L="codeLine_lJS_",_="codeLineNumber_Tfdd",S="codeLineContent_feaV";function U(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:o,getTokenProps:a}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const c=o({line:t,className:(0,r.A)(n,s&&L)}),i=t.map(((e,t)=>(0,N.jsx)("span",{...a({token:e})},t)));return(0,N.jsxs)("span",{...c,children:[s?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)("span",{className:_}),(0,N.jsx)("span",{className:S,children:i})]}):i,(0,N.jsx)("br",{})]})}var M=n(1312);function z(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function H(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const I={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function R(e){let{code:t,className:n}=e;const[o,a]=(0,s.useState)(!1),c=(0,s.useRef)(void 0),i=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),o=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const a=document.getSelection(),c=a.rangeCount>0&&a.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let r=!1;try{r=document.execCommand("copy")}catch{}s.remove(),c&&(a.removeAllRanges(),a.addRange(c)),o&&o.focus()}(t),a(!0),c.current=window.setTimeout((()=>{a(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),(0,N.jsx)("button",{type:"button","aria-label":o?(0,M.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,M.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,M.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,r.A)("clean-btn",n,I.copyButton,o&&I.copyButtonCopied),onClick:i,children:(0,N.jsxs)("span",{className:I.copyButtonIcons,"aria-hidden":"true",children:[(0,N.jsx)(z,{className:I.copyButtonIcon}),(0,N.jsx)(H,{className:I.copyButtonSuccessIcon})]})})}function V(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const $="wordWrapButtonIcon_Bwma",D="wordWrapButtonEnabled_EoeP";function P(e){let{className:t,onClick:n,isEnabled:s}=e;const o=(0,M.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,N.jsx)("button",{type:"button",onClick:n,className:(0,r.A)("clean-btn",t,s&&D),"aria-label":o,title:o,children:(0,N.jsx)(V,{className:$,"aria-hidden":"true"})})}function W(e){let{children:t,className:n="",metastring:o,title:a,showLineNumbers:c,language:i}=e;const{prism:{defaultLanguage:u,magicComments:m}}=(0,l.p)(),h=function(e){return e?.toLowerCase()}(i??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??u),f=d(),x=function(){const[e,t]=(0,s.useState)(!1),[n,o]=(0,s.useState)(!1),a=(0,s.useRef)(null),c=(0,s.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),r=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");o(n)}),[a]);return E(a,r),(0,s.useEffect)((()=>{r()}),[e,r]),(0,s.useEffect)((()=>(window.addEventListener("resize",r,{passive:!0}),()=>{window.removeEventListener("resize",r)})),[r]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:c}}(),j=function(e){return e?.match(p)?.groups.title??""}(o)||a,{lineClassNames:b,code:g}=v(t,{metastring:o,language:h,magicComments:m}),y=c??function(e){return Boolean(e?.includes("showLineNumbers"))}(o);return(0,N.jsxs)(A,{as:"div",className:(0,r.A)(n,h&&!n.includes(`language-${h}`)&&`language-${h}`),children:[j&&(0,N.jsx)("div",{className:k.codeBlockTitle,children:j}),(0,N.jsxs)("div",{className:k.codeBlockContent,children:[(0,N.jsx)(T.f4,{theme:f,code:g,language:h??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:o,getTokenProps:a}=e;return(0,N.jsx)("pre",{tabIndex:0,ref:x.codeBlockRef,className:(0,r.A)(t,k.codeBlock,"thin-scrollbar"),style:n,children:(0,N.jsx)("code",{className:(0,r.A)(k.codeBlockLines,y&&k.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,N.jsx)(U,{line:e,getLineProps:o,getTokenProps:a,classNames:b[t],showLineNumbers:y},t)))})})}}),(0,N.jsxs)("div",{className:k.buttonGroup,children:[(x.isEnabled||x.isCodeScrollable)&&(0,N.jsx)(P,{className:k.codeButton,onClick:()=>x.toggle(),isEnabled:x.isEnabled}),(0,N.jsx)(R,{className:k.codeButton,code:g})]})]})]})}function q(e){let{children:t,...n}=e;const o=(0,c.A)(),a=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),r="string"==typeof a?W:B;return(0,N.jsx)(r,{...n,children:a},String(o))}function G(e){return(0,N.jsx)("code",{...e})}var O=n(8774);var F=n(3427),Z=n(1422);const J="details_lb9f",Y="isBrowser_bmU9",K="collapsibleContent_i85q";function Q(e){return!!e&&("SUMMARY"===e.tagName||Q(e.parentElement))}function X(e,t){return!!e&&(e===t||X(e.parentElement,t))}function ee(e){let{summary:t,children:n,...o}=e;(0,F.A)().collectAnchor(o.id);const a=(0,c.A)(),i=(0,s.useRef)(null),{collapsed:l,setCollapsed:d}=(0,Z.u)({initialState:!o.open}),[u,m]=(0,s.useState)(o.open),h=s.isValidElement(t)?t:(0,N.jsx)("summary",{children:t??"Details"});return(0,N.jsxs)("details",{...o,ref:i,open:u,"data-collapsed":l,className:(0,r.A)(J,a&&Y,o.className),onMouseDown:e=>{Q(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Q(t)&&X(t,i.current)&&(e.preventDefault(),l?(d(!1),m(!0)):d(!0))},children:[h,(0,N.jsx)(Z.N,{lazy:!1,collapsed:l,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{d(e),m(!e)},children:(0,N.jsx)("div",{className:K,children:n})})]})}const te="details_b_Ee";function ne(e){let{...t}=e;return(0,N.jsx)(ee,{...t,className:(0,r.A)("alert alert--info",te,t.className)})}function se(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),o=(0,N.jsx)(N.Fragment,{children:t.filter((e=>e!==n))});return(0,N.jsx)(ne,{...e,summary:n,children:o})}var oe=n(1107);function ae(e){return(0,N.jsx)(oe.A,{...e})}const ce="containsTaskList_mC6p";function re(e){if(void 0!==e)return(0,r.A)(e,e?.includes("contains-task-list")&&ce)}const ie="img_ev3q";var le=n(7293),de=n(418);const ue={Head:a.A,details:se,Details:se,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,N.jsx)(G,{...e}):(0,N.jsx)(q,{...e})},a:function(e){return(0,N.jsx)(O.A,{...e})},pre:function(e){return(0,N.jsx)(N.Fragment,{children:e.children})},ul:function(e){return(0,N.jsx)("ul",{...e,className:re(e.className)})},li:function(e){return(0,F.A)().collectAnchor(e.id),(0,N.jsx)("li",{...e})},img:function(e){return(0,N.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,r.A)(t,ie))});var t},h1:e=>(0,N.jsx)(ae,{as:"h1",...e}),h2:e=>(0,N.jsx)(ae,{as:"h2",...e}),h3:e=>(0,N.jsx)(ae,{as:"h3",...e}),h4:e=>(0,N.jsx)(ae,{as:"h4",...e}),h5:e=>(0,N.jsx)(ae,{as:"h5",...e}),h6:e=>(0,N.jsx)(ae,{as:"h6",...e}),admonition:le.A,mermaid:de.A};function me(e){let{children:t}=e;return(0,N.jsx)(o.x,{components:ue,children:t})}},6266:(e,t,n)=>{"use strict";n.d(t,{i:()=>o});var s=n(4586);function o(e){void 0===e&&(e={});const{i18n:{currentLocale:t}}=(0,s.A)(),n=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,s.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}},8426:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,o,a]=t;if(s&&a){s=parseInt(s),a=parseInt(a);const e=s<a?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(a+=e);for(let t=s;t!==a;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},8453:(e,t,n)=>{"use strict";n.d(t,{R:()=>c,x:()=>r});var s=n(6540);const o={},a=s.createContext(o);function c(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/17896441.6902eb47.js b/assets/js/17896441.6902eb47.js new file mode 100644 index 0000000..9a305f2 --- /dev/null +++ b/assets/js/17896441.6902eb47.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8401],{2234:(e,t,n)=>{n.d(t,{A:()=>c});n(6540);var s=n(4164),a=n(4084),i=n(7559),l=n(7293),o=n(4848);function r(e){let{className:t}=e;return(0,o.jsx)(l.A,{type:"caution",title:(0,o.jsx)(a.Rc,{}),className:(0,s.A)(t,i.G.common.unlistedBanner),children:(0,o.jsx)(a.Uh,{})})}function c(e){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.AE,{}),(0,o.jsx)(r,{...e})]})}},1689:(e,t,n)=>{n.d(t,{A:()=>d});n(6540);var s=n(4164),a=n(4084),i=n(7559),l=n(7293),o=n(4848);function r(e){let{className:t}=e;return(0,o.jsx)(l.A,{type:"caution",title:(0,o.jsx)(a.Yh,{}),className:(0,s.A)(t,i.G.common.draftBanner),children:(0,o.jsx)(a.TT,{})})}var c=n(2234);function d(e){let{metadata:t}=e;const{unlisted:n,frontMatter:s}=t;return(0,o.jsxs)(o.Fragment,{children:[(n||s.unlisted)&&(0,o.jsx)(c.A,{}),s.draft&&(0,o.jsx)(r,{})]})}},1243:(e,t,n)=>{n.d(t,{A:()=>g});n(6540);var s=n(4164),a=n(7559),i=n(6972),l=n(9169),o=n(8774),r=n(1312),c=n(6025),d=n(4848);function u(e){return(0,d.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,d.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const m={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function h(){const e=(0,c.Ay)("/");return(0,d.jsx)("li",{className:"breadcrumbs__item",children:(0,d.jsx)(o.A,{"aria-label":(0,r.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,d.jsx)(u,{className:m.breadcrumbHomeIcon})})})}const v={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function b(e){let{children:t,href:n,isLast:s}=e;const a="breadcrumbs__link";return s?(0,d.jsx)("span",{className:a,itemProp:"name",children:t}):n?(0,d.jsx)(o.A,{className:a,href:n,itemProp:"item",children:(0,d.jsx)("span",{itemProp:"name",children:t})}):(0,d.jsx)("span",{className:a,children:t})}function x(e){let{children:t,active:n,index:a,addMicrodata:i}=e;return(0,d.jsxs)("li",{...i&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,s.A)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:[t,(0,d.jsx)("meta",{itemProp:"position",content:String(a+1)})]})}function g(){const e=(0,i.OF)(),t=(0,l.Dt)();return e?(0,d.jsx)("nav",{className:(0,s.A)(a.G.docs.docBreadcrumbs,v.breadcrumbsContainer),"aria-label":(0,r.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,d.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[t&&(0,d.jsx)(h,{}),e.map(((t,n)=>{const s=n===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,d.jsx)(x,{active:s,index:n,addMicrodata:!!a,children:(0,d.jsx)(b,{href:a,isLast:s,children:t.label})},n)}))]})}):null}},833:(e,t,n)=>{n.r(t),n.d(t,{default:()=>S});var s=n(6540),a=n(1213),i=n(9532),l=n(4848);const o=s.createContext(null);function r(e){let{children:t,content:n}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return(0,l.jsx)(o.Provider,{value:a,children:t})}function c(){const e=(0,s.useContext)(o);if(null===e)throw new i.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:t,assets:n}=c();return(0,l.jsx)(a.be,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var u=n(4164),m=n(4581),h=n(7719);function v(){const{metadata:e}=c();return(0,l.jsx)(h.A,{previous:e.previous,next:e.next})}var b=n(1878),x=n(4267),g=n(7559),p=n(2053),f=n(4336);function j(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s,tags:a}=e,i=a.length>0,o=!!(t||n||s);return i||o?(0,l.jsxs)("footer",{className:(0,u.A)(g.G.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,l.jsx)("div",{className:(0,u.A)("row margin-top--sm",g.G.docs.docFooterTagsRow),children:(0,l.jsx)("div",{className:"col",children:(0,l.jsx)(p.A,{tags:a})})}),o&&(0,l.jsx)(f.A,{className:(0,u.A)("margin-top--sm",g.G.docs.docFooterEditMetaRow),editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s})]}):null}var A=n(1422),N=n(5195),L=n(1312);const C={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function _(e){let{collapsed:t,...n}=e;return(0,l.jsx)("button",{type:"button",...n,className:(0,u.A)("clean-btn",C.tocCollapsibleButton,!t&&C.tocCollapsibleButtonExpanded,n.className),children:(0,l.jsx)(L.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const T={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function k(e){let{toc:t,className:n,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:i,toggleCollapsed:o}=(0,A.u)({initialState:!0});return(0,l.jsxs)("div",{className:(0,u.A)(T.tocCollapsible,!i&&T.tocCollapsibleExpanded,n),children:[(0,l.jsx)(_,{collapsed:i,onClick:o}),(0,l.jsx)(A.N,{lazy:!0,className:T.tocCollapsibleContent,collapsed:i,children:(0,l.jsx)(N.A,{toc:t,minHeadingLevel:s,maxHeadingLevel:a})})]})}const H={tocMobile:"tocMobile_ITEo"};function M(){const{toc:e,frontMatter:t}=c();return(0,l.jsx)(k,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.A)(g.G.docs.docTocMobile,H.tocMobile)})}var y=n(7763);function B(){const{toc:e,frontMatter:t}=c();return(0,l.jsx)(y.A,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:g.G.docs.docTocDesktop})}var I=n(1107),w=n(5533);function E(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=c();return t.hide_title||void 0!==n?null:e.title}();return(0,l.jsxs)("div",{className:(0,u.A)(g.G.docs.docMarkdown,"markdown"),children:[n&&(0,l.jsx)("header",{children:(0,l.jsx)(I.A,{as:"h1",children:n})}),(0,l.jsx)(w.A,{children:t})]})}var V=n(1243),O=n(1689);const R={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function G(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=c(),n=(0,m.l)(),s=e.hide_table_of_contents,a=!s&&t.length>0;return{hidden:s,mobile:a?(0,l.jsx)(M,{}):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:(0,l.jsx)(B,{})}}(),{metadata:s}=c();return(0,l.jsxs)("div",{className:"row",children:[(0,l.jsxs)("div",{className:(0,u.A)("col",!n.hidden&&R.docItemCol),children:[(0,l.jsx)(O.A,{metadata:s}),(0,l.jsx)(b.A,{}),(0,l.jsxs)("div",{className:R.docItemContainer,children:[(0,l.jsxs)("article",{children:[(0,l.jsx)(V.A,{}),(0,l.jsx)(x.A,{}),n.mobile,(0,l.jsx)(E,{children:t}),(0,l.jsx)(j,{})]}),(0,l.jsx)(v,{})]})]}),n.desktop&&(0,l.jsx)("div",{className:"col col--3",children:n.desktop})]})}function S(e){const t=`docs-doc-id-${e.content.metadata.id}`,n=e.content;return(0,l.jsx)(r,{content:e.content,children:(0,l.jsxs)(a.e3,{className:t,children:[(0,l.jsx)(d,{}),(0,l.jsx)(G,{children:(0,l.jsx)(n,{})})]})})}},7719:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var s=n(1312),a=n(9022),i=n(4848);function l(e){const{previous:t,next:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,s.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,i.jsx)(a.A,{...t,subLabel:(0,i.jsx)(s.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,i.jsx)(a.A,{...n,subLabel:(0,i.jsx)(s.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}},4267:(e,t,n)=>{n.d(t,{A:()=>r});n(6540);var s=n(4164),a=n(1312),i=n(7559),l=n(3025),o=n(4848);function r(e){let{className:t}=e;const n=(0,l.r)();return n.badge?(0,o.jsx)("span",{className:(0,s.A)(t,i.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,o.jsx)(a.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}},1878:(e,t,n)=>{n.d(t,{A:()=>x});n(6540);var s=n(4164),a=n(4586),i=n(8774),l=n(1312),o=n(4070),r=n(7559),c=n(3886),d=n(3025),u=n(4848);const m={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,u.jsx)(l.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,u.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,u.jsx)(l.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,u.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function h(e){const t=m[e.versionMetadata.banner];return(0,u.jsx)(t,{...e})}function v(e){let{versionLabel:t,to:n,onClick:s}=e;return(0,u.jsx)(l.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,u.jsx)("b",{children:(0,u.jsx)(i.A,{to:n,onClick:s,children:(0,u.jsx)(l.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function b(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:i}}=(0,a.A)(),{pluginId:l}=(0,o.vT)({failfast:!0}),{savePreferredVersionName:d}=(0,c.g1)(l),{latestDocSuggestion:m,latestVersionSuggestion:b}=(0,o.HW)(l),x=m??(g=b).docs.find((e=>e.id===g.mainDocId));var g;return(0,u.jsxs)("div",{className:(0,s.A)(t,r.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,u.jsx)("div",{children:(0,u.jsx)(h,{siteTitle:i,versionMetadata:n})}),(0,u.jsx)("div",{className:"margin-top--md",children:(0,u.jsx)(v,{versionLabel:b.label,to:x.path,onClick:()=>d(b.name)})})]})}function x(e){let{className:t}=e;const n=(0,d.r)();return n.banner?(0,u.jsx)(b,{className:t,versionMetadata:n}):null}},9022:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var s=n(4164),a=n(8774),i=n(4848);function l(e){const{permalink:t,title:n,subLabel:l,isNext:o}=e;return(0,i.jsxs)(a.A,{className:(0,s.A)("pagination-nav__link",o?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[l&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}},7763:(e,t,n)=>{n.d(t,{A:()=>c});n(6540);var s=n(4164),a=n(5195);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var l=n(4848);const o="table-of-contents__link toc-highlight",r="table-of-contents__link--active";function c(e){let{className:t,...n}=e;return(0,l.jsx)("div",{className:(0,s.A)(i.tableOfContents,"thin-scrollbar",t),children:(0,l.jsx)(a.A,{...n,linkClassName:o,linkActiveClassName:r})})}},5195:(e,t,n)=>{n.d(t,{A:()=>b});var s=n(6540),a=n(6342);function i(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const s=n.slice(2,e.level);e.parentIndex=Math.max(...s),n[e.level]=t}));const s=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):s.push(a)})),s}function l(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:s}=e;return t.flatMap((e=>{const t=l({toc:e.children,minHeadingLevel:n,maxHeadingLevel:s});return function(e){return e.level>=n&&e.level<=s}(e)?[{...e,children:t}]:t}))}function o(e){const t=e.getBoundingClientRect();return t.top===t.bottom?o(e.parentNode):t}function r(e,t){let{anchorTopOffset:n}=t;const s=e.find((e=>o(e).top>=n));if(s){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(o(s))?s:e[e.indexOf(s)-1]??null}return e[e.length-1]??null}function c(){const e=(0,s.useRef)(0),{navbar:{hideOnScroll:t}}=(0,a.p)();return(0,s.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function d(e){const t=(0,s.useRef)(void 0),n=c();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:i,maxHeadingLevel:l}=e;function o(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),o=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const s=[];for(let a=t;a<=n;a+=1)s.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:i,maxHeadingLevel:l}),c=r(o,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}}),[e,n])}var u=n(8774),m=n(4848);function h(e){let{toc:t,className:n,linkClassName:s,isChild:a}=e;return t.length?(0,m.jsx)("ul",{className:a?void 0:n,children:t.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.A,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(h,{isChild:!0,toc:e.children,className:n,linkClassName:s})]},e.id)))}):null}const v=s.memo(h);function b(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:r,minHeadingLevel:c,maxHeadingLevel:u,...h}=e;const b=(0,a.p)(),x=c??b.tableOfContents.minHeadingLevel,g=u??b.tableOfContents.maxHeadingLevel,p=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>l({toc:i(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:x,maxHeadingLevel:g});return d((0,s.useMemo)((()=>{if(o&&r)return{linkClassName:o,linkActiveClassName:r,minHeadingLevel:x,maxHeadingLevel:g}}),[o,r,x,g])),(0,m.jsx)(v,{toc:p,className:n,linkClassName:o,...h})}},6133:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var s=n(4164),a=n(8774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=n(4848);function o(e){let{permalink:t,label:n,count:o,description:r}=e;return(0,l.jsxs)(a.A,{href:t,title:r,className:(0,s.A)(i.tag,o?i.tagWithCount:i.tagRegular),children:[n,o&&(0,l.jsx)("span",{children:o})]})}},2053:(e,t,n)=>{n.d(t,{A:()=>r});n(6540);var s=n(4164),a=n(1312),i=n(6133);const l={tags:"tags_jXut",tag:"tag_QGVx"};var o=n(4848);function r(e){let{tags:t}=e;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("b",{children:(0,o.jsx)(a.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,o.jsx)("ul",{className:(0,s.A)(l.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,o.jsx)("li",{className:l.tag,children:(0,o.jsx)(i.A,{...e})},e.permalink)))})]})}},4084:(e,t,n)=>{n.d(t,{AE:()=>r,Rc:()=>l,TT:()=>d,Uh:()=>o,Yh:()=>c});n(6540);var s=n(1312),a=n(5260),i=n(4848);function l(){return(0,i.jsx)(s.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function o(){return(0,i.jsx)(s.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function r(){return(0,i.jsx)(a.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function c(){return(0,i.jsx)(s.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function d(){return(0,i.jsx)(s.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}}}]); \ No newline at end of file diff --git a/assets/js/1dea6ca3.5e5c9c34.js b/assets/js/1dea6ca3.5e5c9c34.js new file mode 100644 index 0000000..a4e2149 --- /dev/null +++ b/assets/js/1dea6ca3.5e5c9c34.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[5407],{6067:t=>{t.exports=JSON.parse('{"author":{"name":"Yangshun Tay","title":"Front End Engineer @ Facebook","url":"https://github.com/yangshun","page":{"permalink":"/blog/authors/yangshun"},"socials":{"x":"https://x.com/yangshunz","github":"https://github.com/yangshun"},"imageURL":"https://github.com/yangshun.png","key":"yangshun","count":3},"listMetadata":{"permalink":"/blog/authors/yangshun","page":1,"postsPerPage":10,"totalPages":1,"totalCount":3,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/1df93b7f.df21736a.js b/assets/js/1df93b7f.df21736a.js new file mode 100644 index 0000000..1e346b3 --- /dev/null +++ b/assets/js/1df93b7f.df21736a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[4583],{5579:(e,t,r)=>{r.r(t),r.d(t,{default:()=>m});var n=r(4164),a=r(4586),s=r(781),i=r(8774);const c={features:"features_t9lD",featureSvg:"featureSvg_GfXr",sectionsTitle:"sectionsTitle_GVc4"};var l=r(6540),d=r(8777),o=r(4848);function h(){return l.useEffect((()=>{new d.A({targetContainer:"#container-1",random_data_length:120}),new d.A({targetContainer:"#container-2",random_data_length:120,tree_type:"hSpiderWalk",chart_head_type:"landscape",backgroundPattern:"flurry"}),new d.A({targetContainer:"#container-3",random_data_length:120,tree_type:"cellar",chart_head_type:"rounded",backgroundPattern:"blurry"})}),[]),(0,o.jsx)("section",{className:c.features,children:(0,o.jsx)("div",{className:"container",children:(0,o.jsxs)("div",{className:"row",children:[(0,o.jsxs)("div",{className:"sections-container",children:[(0,o.jsx)("div",{className:c.sectionsTitle,children:"Choose the tree that fits your organization"}),(0,o.jsx)("div",{className:"tree-type-title",children:"Default Tree"}),(0,o.jsx)("div",{className:"tree-container",id:"container-1"}),(0,o.jsx)("div",{className:"tree-type-title",children:"hSpiderWalk Tree with landscape chart heads with gyrrate background pattern"}),(0,o.jsx)("div",{className:"tree-container",id:"container-2"}),(0,o.jsx)("div",{className:"tree-type-title",children:"cellar Tree with rounded chart heads with blurry background pattern"}),(0,o.jsx)("div",{className:"tree-container",id:"container-3"})]}),(0,o.jsxs)("div",{className:"sections-container last-container",children:[(0,o.jsx)("div",{children:"And more"}),(0,o.jsx)("div",{children:(0,o.jsx)(i.A,{to:"/docs/intro",children:(0,o.jsx)("button",{className:"try-it-btn",style:{cursor:"pointer"},children:"try it out"})})})]})]})})})}var u=r(1107);const j={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function x(){const{siteConfig:e}=(0,a.A)();return(0,o.jsx)("header",{className:(0,n.A)("hero",j.heroBanner),children:(0,o.jsxs)("div",{className:"container",children:[(0,o.jsx)(u.A,{as:"h1",className:"hero__title",children:e.title}),(0,o.jsx)("p",{className:"hero__subtitle",children:e.tagline})]})})}function m(){const{siteConfig:e}=(0,a.A)();return(0,o.jsxs)(s.A,{title:`${e.title}`,description:"Description will go into a meta tag in <head />",children:[(0,o.jsx)(x,{}),(0,o.jsx)("main",{children:(0,o.jsx)(h,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.ea901a38.js b/assets/js/1f391b9e.ea901a38.js new file mode 100644 index 0000000..cdb8f20 --- /dev/null +++ b/assets/js/1f391b9e.ea901a38.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[6061],{2234:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var i=t(4164),a=t(4084),s=t(7559),r=t(7293),l=t(4848);function c(e){let{className:n}=e;return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(a.Rc,{}),className:(0,i.A)(n,s.G.common.unlistedBanner),children:(0,l.jsx)(a.Uh,{})})}function o(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(a.AE,{}),(0,l.jsx)(c,{...e})]})}},1689:(e,n,t)=>{t.d(n,{A:()=>d});t(6540);var i=t(4164),a=t(4084),s=t(7559),r=t(7293),l=t(4848);function c(e){let{className:n}=e;return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(a.Yh,{}),className:(0,i.A)(n,s.G.common.draftBanner),children:(0,l.jsx)(a.TT,{})})}var o=t(2234);function d(e){let{metadata:n}=e;const{unlisted:t,frontMatter:i}=n;return(0,l.jsxs)(l.Fragment,{children:[(t||i.unlisted)&&(0,l.jsx)(o.A,{}),i.draft&&(0,l.jsx)(c,{})]})}},7973:(e,n,t)=>{t.r(n),t.d(n,{default:()=>f});t(6540);var i=t(4164),a=t(1213),s=t(7559),r=t(781),l=t(5533),c=t(7763),o=t(1689),d=t(4336);const m={mdxPageWrapper:"mdxPageWrapper_j9I6"};var u=t(4848);function f(e){const{content:n}=e,{metadata:t,assets:f}=n,{title:h,editUrl:v,description:x,frontMatter:g,lastUpdatedBy:p,lastUpdatedAt:j}=t,{keywords:A,wrapperClassName:b,hide_table_of_contents:L}=g,N=f.image??g.image,C=!!(v||j||p);return(0,u.jsx)(a.e3,{className:(0,i.A)(b??s.G.wrapper.mdxPages,s.G.page.mdxPage),children:(0,u.jsxs)(r.A,{children:[(0,u.jsx)(a.be,{title:h,description:x,keywords:A,image:N}),(0,u.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,u.jsxs)("div",{className:(0,i.A)("row",m.mdxPageWrapper),children:[(0,u.jsxs)("div",{className:(0,i.A)("col",!L&&"col--8"),children:[(0,u.jsx)(o.A,{metadata:t}),(0,u.jsx)("article",{children:(0,u.jsx)(l.A,{children:(0,u.jsx)(n,{})})}),C&&(0,u.jsx)(d.A,{className:(0,i.A)("margin-top--sm",s.G.pages.pageFooterEditMetaRow),editUrl:v,lastUpdatedAt:j,lastUpdatedBy:p})]}),!L&&n.toc.length>0&&(0,u.jsx)("div",{className:"col col--2",children:(0,u.jsx)(c.A,{toc:n.toc,minHeadingLevel:g.toc_min_heading_level,maxHeadingLevel:g.toc_max_heading_level})})]})})]})})}},7763:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var i=t(4164),a=t(5195);const s={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var r=t(4848);const l="table-of-contents__link toc-highlight",c="table-of-contents__link--active";function o(e){let{className:n,...t}=e;return(0,r.jsx)("div",{className:(0,i.A)(s.tableOfContents,"thin-scrollbar",n),children:(0,r.jsx)(a.A,{...t,linkClassName:l,linkActiveClassName:c})})}},5195:(e,n,t)=>{t.d(n,{A:()=>v});var i=t(6540),a=t(6342);function s(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const i=t.slice(2,e.level);e.parentIndex=Math.max(...i),t[e.level]=n}));const i=[];return n.forEach((e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):i.push(a)})),i}function r(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:i}=e;return n.flatMap((e=>{const n=r({toc:e.children,minHeadingLevel:t,maxHeadingLevel:i});return function(e){return e.level>=t&&e.level<=i}(e)?[{...e,children:n}]:n}))}function l(e){const n=e.getBoundingClientRect();return n.top===n.bottom?l(e.parentNode):n}function c(e,n){let{anchorTopOffset:t}=n;const i=e.find((e=>l(e).top>=t));if(i){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(l(i))?i:e[e.indexOf(i)-1]??null}return e[e.length-1]??null}function o(){const e=(0,i.useRef)(0),{navbar:{hideOnScroll:n}}=(0,a.p)();return(0,i.useEffect)((()=>{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,i.useRef)(void 0),t=o();(0,i.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:i,linkActiveClassName:a,minHeadingLevel:s,maxHeadingLevel:r}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(i),l=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const i=[];for(let a=n;a<=t;a+=1)i.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(i.join()))}({minHeadingLevel:s,maxHeadingLevel:r}),o=c(l,{anchorTopOffset:t.current}),d=e.find((e=>o&&o.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,t])}var m=t(8774),u=t(4848);function f(e){let{toc:n,className:t,linkClassName:i,isChild:a}=e;return n.length?(0,u.jsx)("ul",{className:a?void 0:t,children:n.map((e=>(0,u.jsxs)("li",{children:[(0,u.jsx)(m.A,{to:`#${e.id}`,className:i??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,u.jsx)(f,{isChild:!0,toc:e.children,className:t,linkClassName:i})]},e.id)))}):null}const h=i.memo(f);function v(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:l="table-of-contents__link",linkActiveClassName:c,minHeadingLevel:o,maxHeadingLevel:m,...f}=e;const v=(0,a.p)(),x=o??v.tableOfContents.minHeadingLevel,g=m??v.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return(0,i.useMemo)((()=>r({toc:s(n),minHeadingLevel:t,maxHeadingLevel:a})),[n,t,a])}({toc:n,minHeadingLevel:x,maxHeadingLevel:g});return d((0,i.useMemo)((()=>{if(l&&c)return{linkClassName:l,linkActiveClassName:c,minHeadingLevel:x,maxHeadingLevel:g}}),[l,c,x,g])),(0,u.jsx)(h,{toc:p,className:t,linkClassName:l,...f})}},4084:(e,n,t)=>{t.d(n,{AE:()=>c,Rc:()=>r,TT:()=>d,Uh:()=>l,Yh:()=>o});t(6540);var i=t(1312),a=t(5260),s=t(4848);function r(){return(0,s.jsx)(i.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function l(){return(0,s.jsx)(i.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,s.jsx)(a.A,{children:(0,s.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function o(){return(0,s.jsx)(i.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function d(){return(0,s.jsx)(i.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}}}]); \ No newline at end of file diff --git a/assets/js/1ff56eb1.1faf0a29.js b/assets/js/1ff56eb1.1faf0a29.js new file mode 100644 index 0000000..bb13739 --- /dev/null +++ b/assets/js/1ff56eb1.1faf0a29.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[4105],{1659:(e,n,t)=>{t.r(n),t.d(n,{TestTSpyder:()=>h,TestTSpyderT:()=>u,TestTSpyderZ:()=>p,assets:()=>c,contentTitle:()=>l,default:()=>x,frontMatter:()=>d,metadata:()=>s,toc:()=>m});var a=t(4848),i=t(8453),r=t(6540),o=t(8777);const d={sidebar_position:3},l="Basic Usage",s={id:"basic-usage",title:"Basic Usage",description:"Presumming you've followed the installation steps, here is the basic usage of TreeSpider, all TreeSpider options are optional except the targetContainer, to intialize TreeSpider.",source:"@site/docs/basic-usage.mdx",sourceDirName:".",slug:"/basic-usage",permalink:"/docs/basic-usage",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/basic-usage.mdx",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/docs/installation"},next:{title:"Tree Data",permalink:"/docs/tree-data"}},c={},p=r.memo((()=>{const e=[{id:"1",name:"Abayomi Amusa",role:"CEO",location:"Lagos, Nigeria"},{id:"2",parentId:"1",name:"Trey Anderson",role:"Product Manager",location:"California, United States"},{id:"3",parentId:"1",name:"Troy Manuel",role:"Software Developer",location:"Alberta, Canada"},{id:"4",parentId:"1",name:"Rebecca Oslon",role:"Software Developer",location:"London, United Kingdom"},{id:"5",parentId:"1",name:"David Scheg",role:"Product Designer",location:"Jiaozian, China"},{id:"6",parentId:"2",name:"James Zucks",role:"DevOps",location:"Accra, Ghana"},{id:"7",parentId:"2",name:"Zu Po Xe",role:"Backend Developer",location:"Johanesburg, South Africa"},{id:"8",parentId:"2",name:"Scott Ziagler",role:"FrontEnd Developer Intern"},{id:"9",parentId:"7",name:"Xervia Allero",role:"FrontEnd Developer Intern"},{id:"10",parentId:"3",name:"Adebowale Ajanlekoko",role:"Fullstack Developer"}];return r.useLayoutEffect((()=>{new o.A({targetContainer:"#test-cont-bu-0",tree_data:e,width:"100%"})}),[]),(0,a.jsx)("div",{id:"test-cont-bu-0",style:{marginBottom:35}})})),h=r.memo((()=>{const e=[{id:"1",name:"Abayomi Amusa",role:"CEO",location:"Lagos, Nigeria"},{id:"2",parentId:"1",name:"Trey Anderson",role:"Product Manager",location:"California, United States"},{id:"3",parentId:"1",name:"Troy Manuel",role:"Software Developer",location:"Alberta, Canada"},{id:"4",parentId:"1",name:"Rebecca Oslon",role:"Software Developer",location:"London, United Kingdom"},{id:"5",parentId:"1",name:"David Scheg",role:"Product Designer",location:"Jiaozian, China"},{id:"6",parentId:"2",name:"James Zucks",role:"DevOps",location:"Accra, Ghana"},{id:"7",parentId:"2",name:"Zu Po Xe",role:"Backend Developer",location:"Johanesburg, South Africa"},{id:"8",parentId:"2",name:"Scott Ziagler",role:"FrontEnd Developer Intern"},{id:"9",parentId:"7",name:"Xervia Allero",role:"FrontEnd Developer Intern"},{id:"10",parentId:"3",name:"Adebowale Ajanlekoko",role:"Fullstack Developer"}];return r.useLayoutEffect((()=>{new o.A({targetContainer:"#test-cont-bu-1",tree_data:e,tree_type:"cellar",chart_head_type:"landscape",backgroundPattern:"blurry",width:"100%"})}),[]),(0,a.jsx)("div",{id:"test-cont-bu-1"})})),u=r.memo((()=>{const e=r.useRef(),n=r.useRef(),t=r.useCallback((()=>{e.current&&(e.current.initialize(),n.current.remove())}),[e.current,n.current]);return r.useLayoutEffect((()=>{e.current=new o.A({targetContainer:"#test-cont-bu-3",width:"100%",random_data_length:30,autoInitialize:!1})}),[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{id:"test-cont-bu-3"}),(0,a.jsx)("button",{ref:e=>n.current=e,onClick:t,children:"Click me to initialize TreeSpider"})]})})),m=[{value:"Initializing",id:"initializing",level:2},{value:"Passing organization data",id:"passing-organization-data",level:2},{value:"Options",id:"options",level:2},{value:"Methods",id:"methods",level:2},{value:"UI interaction",id:"ui-interaction",level:2}];function g(e){const n={admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.header,{children:(0,a.jsx)(n.h1,{id:"basic-usage",children:"Basic Usage"})}),"\n",(0,a.jsxs)(n.p,{children:["Presumming you've followed the installation steps, here is the basic usage of TreeSpider, all TreeSpider options are optional except the ",(0,a.jsx)(n.code,{children:"targetContainer"}),", to intialize TreeSpider."]}),"\n",(0,a.jsx)(n.h2,{id:"initializing",children:"Initializing"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-html",children:'<div id="container-1"></div>\n'})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:'import TreeSpider from "path/to/treespider/dist/es/treeSpider.bundle.min.js"\n\n// OR if TreeSpider was installed with npm in a project with a bundler\n\n// import TreeSpider from "treespider"\n\nconst instance1 = new TreeSpider({\n targetContainer: "#container-1"\n})\n'})}),"\n",(0,a.jsx)(n.p,{children:"Then this will display TreeSpider in the browser with randomly generated fake data, next, load your organization data into TreeSpider, the data is linear and straight forward."}),"\n",(0,a.jsx)(n.h2,{id:"passing-organization-data",children:"Passing organization data"}),"\n",(0,a.jsxs)(n.p,{children:["The ",(0,a.jsx)(n.code,{children:"tree_data"})," option takes an array of objects which will be the organization's employee data, the ",(0,a.jsx)(n.code,{children:"id"})," property is required, and each employee will have a ",(0,a.jsx)(n.code,{children:"parentId"})," which is the id of the department head that each employee reports to, and it is also required that there is an object/data that doesn't have a ",(0,a.jsx)(n.code,{children:"parentId"})," which will serve as the root or the overall head of the organization."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:'const employee_data = [\n {\n id: "1",\n name: "Abayomi Amusa",\n role: "CEO",\n location: "Lagos, Nigeria"\n },\n {\n id: "2",\n parentId: "1",\n name: "Trey Anderson",\n role: "Product Manager",\n location: "California, United States"\n },\n {\n id: "3",\n parentId: "1",\n name: "Troy Manuel",\n role: "Software Developer",\n location: "Alberta, Canada"\n },\n {\n id: "4",\n parentId: "1",\n name: "Rebecca Oslon",\n role: "Software Developer",\n location: "London, United Kingdom"\n },\n {\n id: "5",\n parentId: "1",\n name: "David Scheg",\n role: "Product Designer",\n location: "Jiaozian, China"\n },\n {\n id: "6",\n parentId: "2",\n name: "James Zucks",\n role: "DevOps",\n location: "Accra, Ghana"\n },\n {\n id: "7",\n parentId: "2",\n name: "Zu Po Xe",\n role: "Backend Developer",\n location: "Johanesburg, South Africa"\n },\n {\n id: "8",\n parentId: "2",\n name: "Scott Ziagler",\n role: "FrontEnd Developer Intern"\n },\n {\n id: "9",\n parentId: "7",\n name: "Xervia Allero",\n role: "FrontEnd Developer Intern"\n },\n {\n id: "10",\n parentId: "3",\n name: "Adebowale Ajanlekoko",\n role: "Fullstack Developer"\n },\n]\n\nconst instance1 = new TreeSpider({\n targetContainer: \'#container-1\',\n tree_data: employee_data\n})\n'})}),"\n",(0,a.jsxs)(n.p,{children:["Notice the ",(0,a.jsx)(n.code,{children:"CEO"})," doesn't have a ",(0,a.jsx)(n.code,{children:"parentId"})," property and that signifies it is the root or the overall head of the organization, and each employee has the ",(0,a.jsx)(n.code,{children:"parentId"})," property pointing the employee they report to, learn more about the tree data structure on the tree date page."]}),"\n",(0,a.jsx)(n.p,{children:"Then this will display the structure with the default tree type and other default options, zoom out and pan around to interact."}),"\n","\n",(0,a.jsx)(p,{}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"There can be multiple TreeSpider instances on the same page"})}),"\n",(0,a.jsx)(n.h2,{id:"options",children:"Options"}),"\n",(0,a.jsxs)(n.p,{children:["You can also customize it or choose the tree type and chart head you want, like for example let's choose the ",(0,a.jsx)(n.code,{children:"cellar"})," tree type with the ",(0,a.jsx)(n.code,{children:"landscape"})," chart head type and also a ",(0,a.jsx)(n.code,{children:"blurry"})," background pattern."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:'// ...\n\nconst instance1 = new TreeSpider({\n targetContainer: "#container-1",\n tree_data: employee_data, // from the example above\n tree_type: "cellar",\n chart_head_type: "landscape",\n backgroundPattern: "blurry",\n width: "100%", // added so it will fit the container area\n})\n'})}),"\n",(0,a.jsx)(n.p,{children:"And this will be displayed as below"}),"\n","\n",(0,a.jsx)(h,{}),"\n",(0,a.jsx)(n.h2,{id:"methods",children:"Methods"}),"\n",(0,a.jsxs)(n.p,{children:["You can also programmatically interact with TreeSpider, for instance let's programatically initialize TreeSpider, we will set the ",(0,a.jsx)(n.code,{children:"autoInitialize"})," option to ",(0,a.jsx)(n.code,{children:"false"})," then programmatically initialize it by calling the ",(0,a.jsx)(n.code,{children:"TreeSpider.initialize()"})," method."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:'const inst1 = new TreeSpider({\n targetContainer: "#container-1",\n // ...\n autoInitialize: false\n });\n\ndocument.querySelector("#button").onclick = () => {\n inst1.initialize();\n}\n\n'})}),"\n",(0,a.jsxs)(n.p,{children:["In the example above an ",(0,a.jsx)(n.code,{children:"onclick"})," event was attached to a button to initialize TreeSpider onclick, to see this option in action click on the button below."]}),"\n","\n",(0,a.jsx)(u,{}),"\n",(0,a.jsx)(n.h2,{id:"ui-interaction",children:"UI interaction"}),"\n",(0,a.jsx)(n.p,{children:"You can interact with the chart by double clicking on the chart heads to automatically zoom them in, pan in any direction, zoom in an out with pointer and mouse event, collapse and expand chart heads, and also interact using the UI tools."})]})}function x(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var a=t(6540);const i={},r=a.createContext(i);function o(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2237.75089972.js b/assets/js/2237.75089972.js new file mode 100644 index 0000000..bb72418 --- /dev/null +++ b/assets/js/2237.75089972.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[2237],{3363:(e,t,i)=>{i.d(t,{A:()=>a});i(6540);var n=i(4164),o=i(1312),s=i(1107),r=i(4848);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,n.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},2237:(e,t,i)=>{i.r(t),i.d(t,{default:()=>d});i(6540);var n=i(1312),o=i(1213),s=i(781),r=i(3363),a=i(4848);function d(){const e=(0,n.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.be,{title:e}),(0,a.jsx)(s.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/3217192f.50a04738.js b/assets/js/3217192f.50a04738.js new file mode 100644 index 0000000..1ffebae --- /dev/null +++ b/assets/js/3217192f.50a04738.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8462],{8174:s=>{s.exports=JSON.parse('{"tag":{"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description","allTagsPath":"/blog/tags","count":4,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/docusaurus","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/3347.72535ab0.js b/assets/js/3347.72535ab0.js new file mode 100644 index 0000000..727cac4 --- /dev/null +++ b/assets/js/3347.72535ab0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[3347],{4096:(e,t,a)=>{a.d(t,{in:()=>c,OU:()=>M,Ki:()=>A,kJ:()=>f,x:()=>i,e7:()=>u,J_:()=>x,Gx:()=>_});var n=a(6540),s=a(9532),r=a(6803),l=a(4848);function i(){const e=(0,r.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}const o=n.createContext(null);function c(e){let{children:t,content:a,isBlogPostPage:s=!1}=e;const r=function(e){let{content:t,isBlogPostPage:a}=e;return(0,n.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:a})),[t,a])}({content:a,isBlogPostPage:s});return(0,l.jsx)(o.Provider,{value:r,children:t})}function u(){const e=(0,n.useContext)(o);if(null===e)throw new s.dV("BlogPostProvider");return e}var m=a(6025),h=a(4586);const d=e=>new Date(e).toISOString();function g(e){const t=e.map(v);return{author:1===t.length?t[0]:t}}function p(e,t,a){return e?{image:j({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${a}`})}:{}}function f(e){const{siteConfig:t}=(0,h.A)(),{withBaseUrl:a}=(0,m.hH)(),{metadata:{blogDescription:n,blogTitle:s,permalink:r}}=e,l=`${t.url}${r}`;return{"@context":"https://schema.org","@type":"Blog","@id":l,mainEntityOfPage:l,headline:s,description:n,blogPost:e.items.map((e=>function(e,t,a){const{assets:n,frontMatter:s,metadata:r}=e,{date:l,title:i,description:o,lastUpdatedAt:c}=r,u=n.image??s.image,m=s.keywords??[],h=`${t.url}${r.permalink}`,f=c?d(c):void 0;return{"@type":"BlogPosting","@id":h,mainEntityOfPage:h,url:h,headline:i,name:i,description:o,datePublished:l,...f?{dateModified:f}:{},...g(r.authors),...p(u,a,i),...m?{keywords:m}:{}}}(e.content,t,a)))}}function x(){const e=i(),{assets:t,metadata:a}=u(),{siteConfig:n}=(0,h.A)(),{withBaseUrl:s}=(0,m.hH)(),{date:r,title:l,description:o,frontMatter:c,lastUpdatedAt:f}=a,x=t.image??c.image,v=c.keywords??[],j=f?d(f):void 0,b=`${n.url}${a.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":b,mainEntityOfPage:b,url:b,headline:l,name:l,description:o,datePublished:r,...j?{dateModified:j}:{},...g(a.authors),...p(x,s,l),...v?{keywords:v}:{},isPartOf:{"@type":"Blog","@id":`${n.url}${e.blogBasePath}`,name:e.blogTitle}}}function v(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function j(e){let{imageUrl:t,caption:a}=e;return{"@type":"ImageObject","@id":t,url:t,contentUrl:t,caption:a}}var b=a(6347),w=a(8774),N=a(1682),k=a(9169);function _(e){const{pathname:t}=(0,b.zy)();return(0,n.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,k.ys)(e.permalink,t))}(e,t)))),[e,t])}function A(e){const t=(0,N.$z)(e,(e=>`${new Date(e.date).getFullYear()}`)),a=Object.entries(t);return a.reverse(),a}function M(e){let{items:t,ulClassName:a,liClassName:n,linkClassName:s,linkActiveClassName:r}=e;return(0,l.jsx)("ul",{className:a,children:t.map((e=>(0,l.jsx)("li",{className:n,children:(0,l.jsx)(w.A,{isNavLink:!0,to:e.permalink,className:s,activeClassName:r,children:e.title})},e.permalink)))})}},6913:(e,t,a)=>{a.d(t,{A:()=>j});a(6540);var n=a(4164),s=a(8774),r=a(4848);const l="githubSvg_Uu4N";const i="xSvg_y3PF";const o=function(e){return(0,r.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[(0,r.jsx)("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),(0,r.jsx)("path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0"}),(0,r.jsx)("path",{d:"M3.6 9h16.8"}),(0,r.jsx)("path",{d:"M3.6 15h16.8"}),(0,r.jsx)("path",{d:"M11.5 3a17 17 0 0 0 0 18"}),(0,r.jsx)("path",{d:"M12.5 3a17 17 0 0 1 0 18"})]})},c={authorSocials:"authorSocials_rSDt",authorSocialLink:"authorSocialLink_owbf",authorSocialIcon:"authorSocialIcon_XYv3"},u={twitter:{Icon:function(e){return(0,r.jsx)("svg",{viewBox:"0 0 256 209",width:"1em",height:"1em",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid",...e,children:(0,r.jsx)("path",{d:"M256 25.45c-9.42 4.177-19.542 7-30.166 8.27 10.845-6.5 19.172-16.793 23.093-29.057a105.183 105.183 0 0 1-33.351 12.745C205.995 7.201 192.346.822 177.239.822c-29.006 0-52.523 23.516-52.523 52.52 0 4.117.465 8.125 1.36 11.97-43.65-2.191-82.35-23.1-108.255-54.876-4.52 7.757-7.11 16.78-7.11 26.404 0 18.222 9.273 34.297 23.365 43.716a52.312 52.312 0 0 1-23.79-6.57c-.003.22-.003.44-.003.661 0 25.447 18.104 46.675 42.13 51.5a52.592 52.592 0 0 1-23.718.9c6.683 20.866 26.08 36.05 49.062 36.475-17.975 14.086-40.622 22.483-65.228 22.483-4.24 0-8.42-.249-12.529-.734 23.243 14.902 50.85 23.597 80.51 23.597 96.607 0 149.434-80.031 149.434-149.435 0-2.278-.05-4.543-.152-6.795A106.748 106.748 0 0 0 256 25.45",fill:"#55acee"})})},label:"Twitter"},github:{Icon:function(e){return(0,r.jsx)("svg",{viewBox:"0 0 256 250",width:"1em",height:"1em",...e,className:(0,n.A)(e.className,l),xmlns:"http://www.w3.org/2000/svg",style:{"--dark":"#000","--light":"#fff"},preserveAspectRatio:"xMidYMid",children:(0,r.jsx)("path",{d:"M128.001 0C57.317 0 0 57.307 0 128.001c0 56.554 36.676 104.535 87.535 121.46 6.397 1.185 8.746-2.777 8.746-6.158 0-3.052-.12-13.135-.174-23.83-35.61 7.742-43.124-15.103-43.124-15.103-5.823-14.795-14.213-18.73-14.213-18.73-11.613-7.944.876-7.78.876-7.78 12.853.902 19.621 13.19 19.621 13.19 11.417 19.568 29.945 13.911 37.249 10.64 1.149-8.272 4.466-13.92 8.127-17.116-28.431-3.236-58.318-14.212-58.318-63.258 0-13.975 5-25.394 13.188-34.358-1.329-3.224-5.71-16.242 1.24-33.874 0 0 10.749-3.44 35.21 13.121 10.21-2.836 21.16-4.258 32.038-4.307 10.878.049 21.837 1.47 32.066 4.307 24.431-16.56 35.165-13.12 35.165-13.12 6.967 17.63 2.584 30.65 1.255 33.873 8.207 8.964 13.173 20.383 13.173 34.358 0 49.163-29.944 59.988-58.447 63.157 4.591 3.972 8.682 11.762 8.682 23.704 0 17.126-.148 30.91-.148 35.126 0 3.407 2.304 7.398 8.792 6.14C219.37 232.5 256 184.537 256 128.002 256 57.307 198.691 0 128.001 0Zm-80.06 182.34c-.282.636-1.283.827-2.194.39-.929-.417-1.45-1.284-1.15-1.922.276-.655 1.279-.838 2.205-.399.93.418 1.46 1.293 1.139 1.931Zm6.296 5.618c-.61.566-1.804.303-2.614-.591-.837-.892-.994-2.086-.375-2.66.63-.566 1.787-.301 2.626.591.838.903 1 2.088.363 2.66Zm4.32 7.188c-.785.545-2.067.034-2.86-1.104-.784-1.138-.784-2.503.017-3.05.795-.547 2.058-.055 2.861 1.075.782 1.157.782 2.522-.019 3.08Zm7.304 8.325c-.701.774-2.196.566-3.29-.49-1.119-1.032-1.43-2.496-.726-3.27.71-.776 2.213-.558 3.315.49 1.11 1.03 1.45 2.505.701 3.27Zm9.442 2.81c-.31 1.003-1.75 1.459-3.199 1.033-1.448-.439-2.395-1.613-2.103-2.626.301-1.01 1.747-1.484 3.207-1.028 1.446.436 2.396 1.602 2.095 2.622Zm10.744 1.193c.036 1.055-1.193 1.93-2.715 1.95-1.53.034-2.769-.82-2.786-1.86 0-1.065 1.202-1.932 2.733-1.958 1.522-.03 2.768.818 2.768 1.868Zm10.555-.405c.182 1.03-.875 2.088-2.387 2.37-1.485.271-2.861-.365-3.05-1.386-.184-1.056.893-2.114 2.376-2.387 1.514-.263 2.868.356 3.061 1.403Z"})})},label:"GitHub"},stackoverflow:{Icon:function(e){return(0,r.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 169.61 200",width:"1em",height:"1em",...e,children:[(0,r.jsx)("path",{d:"M140.44 178.38v-48.65h21.61V200H0v-70.27h21.61v48.65z",fill:"#bcbbbb"}),(0,r.jsx)("path",{d:"M124.24 140.54l4.32-16.22-86.97-17.83-3.78 17.83zM49.7 82.16L130.72 120l7.56-16.22-81.02-37.83zm22.68-40l68.06 57.3 11.35-13.51-68.6-57.3-11.35 13.51zM116.14 0l-14.59 10.81 53.48 71.89 14.58-10.81zM37.81 162.16h86.43v-16.21H37.81z",fill:"#f48024"})]})},label:"Stack Overflow"},linkedin:{Icon:function(e){return(0,r.jsx)("svg",{width:"1em",height:"1em",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid",viewBox:"0 0 256 256",...e,children:(0,r.jsx)("path",{d:"M218.123 218.127h-37.931v-59.403c0-14.165-.253-32.4-19.728-32.4-19.756 0-22.779 15.434-22.779 31.369v60.43h-37.93V95.967h36.413v16.694h.51a39.907 39.907 0 0 1 35.928-19.733c38.445 0 45.533 25.288 45.533 58.186l-.016 67.013ZM56.955 79.27c-12.157.002-22.014-9.852-22.016-22.009-.002-12.157 9.851-22.014 22.008-22.016 12.157-.003 22.014 9.851 22.016 22.008A22.013 22.013 0 0 1 56.955 79.27m18.966 138.858H37.95V95.967h37.97v122.16ZM237.033.018H18.89C8.58-.098.125 8.161-.001 18.471v219.053c.122 10.315 8.576 18.582 18.89 18.474h218.144c10.336.128 18.823-8.139 18.966-18.474V18.454c-.147-10.33-8.635-18.588-18.966-18.453",fill:"#0A66C2"})})},label:"LinkedIn"},x:{Icon:function(e){return(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"none",viewBox:"0 0 1200 1227",...e,className:(0,n.A)(e.className,i),style:{"--dark":"#000","--light":"#fff"},children:(0,r.jsx)("path",{d:"M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"})})},label:"X"}};function m(e){let{platform:t,link:a}=e;const{Icon:l,label:i}=u[m=t]??{Icon:o,label:m};var m;return(0,r.jsx)(s.A,{className:c.authorSocialLink,href:a,title:i,children:(0,r.jsx)(l,{className:(0,n.A)(c.authorSocialLink)})})}function h(e){let{author:t}=e;const a=Object.entries(t.socials??{});return(0,r.jsx)("div",{className:c.authorSocials,children:a.map((e=>{let[t,a]=e;return(0,r.jsx)(m,{platform:t,link:a},t)}))})}var d=a(1107);const g={authorImage:"authorImage_XqGP","author-as-h1":"author-as-h1_n9oJ","author-as-h2":"author-as-h2_gXvM",authorDetails:"authorDetails_lV9A",authorName:"authorName_yefp",authorTitle:"authorTitle_nd0D",authorBlogPostCount:"authorBlogPostCount_iiJ5"};function p(e){return e.href?(0,r.jsx)(s.A,{...e}):(0,r.jsx)(r.Fragment,{children:e.children})}function f(e){let{title:t}=e;return(0,r.jsx)("small",{className:g.authorTitle,title:t,children:t})}function x(e){let{name:t,as:a}=e;return a?(0,r.jsx)(d.A,{as:a,className:g.authorName,children:t}):(0,r.jsx)("span",{className:g.authorName,children:t})}function v(e){let{count:t}=e;return(0,r.jsx)("span",{className:(0,n.A)(g.authorBlogPostCount),children:t})}function j(e){let{as:t,author:a,className:s,count:l}=e;const{name:i,title:o,url:c,imageURL:u,email:m,page:d}=a,j=d?.permalink||c||m&&`mailto:${m}`||void 0;return(0,r.jsxs)("div",{className:(0,n.A)("avatar margin-bottom--sm",s,g[`author-as-${t}`]),children:[u&&(0,r.jsx)(p,{href:j,className:"avatar__photo-link",children:(0,r.jsx)("img",{className:(0,n.A)("avatar__photo",g.authorImage),src:u,alt:i})}),(i||o)&&(0,r.jsxs)("div",{className:(0,n.A)("avatar__intro",g.authorDetails),children:[(0,r.jsxs)("div",{className:"avatar__name",children:[i&&(0,r.jsx)(p,{href:j,children:(0,r.jsx)(x,{name:i,as:t})}),l&&(0,r.jsx)(v,{count:l})]}),!!o&&(0,r.jsx)(f,{title:o}),(0,r.jsx)(h,{author:a})]})]})}},8027:(e,t,a)=>{a.d(t,{A:()=>L});var n=a(6540),s=a(4164),r=a(781),l=a(4581),i=a(1312),o=a(4096),c=a(6342),u=a(1107),m=a(4848);function h(e){let{year:t,yearGroupHeadingClassName:a,children:n}=e;return(0,m.jsxs)("div",{role:"group",children:[(0,m.jsx)(u.A,{as:"h3",className:a,children:t}),n]})}function d(e){let{items:t,yearGroupHeadingClassName:a,ListComponent:n}=e;if((0,c.p)().blog.sidebar.groupByYear){const e=(0,o.Ki)(t);return(0,m.jsx)(m.Fragment,{children:e.map((e=>{let[t,s]=e;return(0,m.jsx)(h,{year:t,yearGroupHeadingClassName:a,children:(0,m.jsx)(n,{items:s})},t)}))})}return(0,m.jsx)(n,{items:t})}const g=(0,n.memo)(d),p="sidebar_re4s",f="sidebarItemTitle_pO2u",x="sidebarItemList_Yudw",v="sidebarItem__DBe",j="sidebarItemLink_mo7H",b="sidebarItemLinkActive_I1ZP",w="yearGroupHeading_rMGB",N=e=>{let{items:t}=e;return(0,m.jsx)(o.OU,{items:t,ulClassName:(0,s.A)(x,"clean-list"),liClassName:v,linkClassName:j,linkActiveClassName:b})};function k(e){let{sidebar:t}=e;const a=(0,o.Gx)(t.items);return(0,m.jsx)("aside",{className:"col col--3",children:(0,m.jsxs)("nav",{className:(0,s.A)(p,"thin-scrollbar"),"aria-label":(0,i.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,m.jsx)("div",{className:(0,s.A)(f,"margin-bottom--md"),children:t.title}),(0,m.jsx)(g,{items:a,ListComponent:N,yearGroupHeadingClassName:w})]})})}const _=(0,n.memo)(k);var A=a(5600);const M="yearGroupHeading_QT03",C=e=>{let{items:t}=e;return(0,m.jsx)(o.OU,{items:t,ulClassName:"menu__list",liClassName:"menu__list-item",linkClassName:"menu__link",linkActiveClassName:"menu__link--active"})};function y(e){let{sidebar:t}=e;const a=(0,o.Gx)(t.items);return(0,m.jsx)(g,{items:a,ListComponent:C,yearGroupHeadingClassName:M})}function P(e){return(0,m.jsx)(A.GX,{component:y,props:e})}const B=(0,n.memo)(P);function I(e){let{sidebar:t}=e;const a=(0,l.l)();return t?.items.length?"mobile"===a?(0,m.jsx)(B,{sidebar:t}):(0,m.jsx)(_,{sidebar:t}):null}function L(e){const{sidebar:t,toc:a,children:n,...l}=e,i=t&&t.items.length>0;return(0,m.jsx)(r.A,{...l,children:(0,m.jsx)("div",{className:"container margin-vert--lg",children:(0,m.jsxs)("div",{className:"row",children:[(0,m.jsx)(I,{sidebar:t}),(0,m.jsx)("main",{className:(0,s.A)("col",{"col--7":i,"col--9 col--offset-1":!i}),children:n}),a&&(0,m.jsx)("div",{className:"col col--2",children:a})]})})})}},5846:(e,t,a)=>{a.d(t,{W:()=>c});var n=a(6540),s=a(4586);const r=["zero","one","two","few","many","other"];function l(e){return r.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:l(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,n.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:l(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),i}}),[e])}function c(){const e=o();return{selectMessage:(t,a)=>function(e,t,a){const n=e.split("|");if(1===n.length)return n[0];n.length>a.pluralForms.length&&console.error(`For locale=${a.locale}, a maximum of ${a.pluralForms.length} plural forms are expected (${a.pluralForms.join(",")}), but the message contains ${n.length}: ${e}`);const s=a.select(t),r=a.pluralForms.indexOf(s);return n[Math.min(r,n.length-1)]}(a,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/33fc5bb8.e128642b.js b/assets/js/33fc5bb8.e128642b.js new file mode 100644 index 0000000..e05112a --- /dev/null +++ b/assets/js/33fc5bb8.e128642b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[867],{778:(e,t,a)=>{a.r(t),a.d(t,{default:()=>b});a(6540);var s=a(4164),n=a(1213),r=a(7559),l=a(6461),i=a(8774),o=a(4096),c=a(8027),d=a(7713),g=a(1463),u=a(3892),m=a(6913),h=a(4848);function p(e){let{author:t}=e;const a=(0,l.wI)(t);return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n.be,{title:a}),(0,h.jsx)(g.A,{tag:"blog_authors_posts"})]})}function x(){const{authorsListPath:e}=(0,o.x)();return(0,h.jsx)(i.A,{href:e,children:(0,h.jsx)(l.np,{})})}function j(e){let{author:t,items:a,sidebar:s,listMetadata:n}=e;return(0,h.jsxs)(c.A,{sidebar:s,children:[(0,h.jsxs)("header",{className:"margin-bottom--xl",children:[(0,h.jsx)(m.A,{as:"h1",author:t}),t.description&&(0,h.jsx)("p",{children:t.description}),(0,h.jsx)(x,{})]}),(0,h.jsx)("hr",{}),(0,h.jsx)(u.A,{items:a}),(0,h.jsx)(d.A,{metadata:n})]})}function b(e){return(0,h.jsxs)(n.e3,{className:(0,s.A)(r.G.wrapper.blogPages,r.G.page.blogAuthorsPostsPage),children:[(0,h.jsx)(p,{...e}),(0,h.jsx)(j,{...e})]})}},7713:(e,t,a)=>{a.d(t,{A:()=>l});a(6540);var s=a(1312),n=a(9022),r=a(4848);function l(e){const{metadata:t}=e,{previousPage:a,nextPage:l}=t;return(0,r.jsxs)("nav",{className:"pagination-nav","aria-label":(0,s.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[a&&(0,r.jsx)(n.A,{permalink:a,title:(0,r.jsx)(s.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer entries"})}),l&&(0,r.jsx)(n.A,{permalink:l,title:(0,r.jsx)(s.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older entries"}),isNext:!0})]})}},2907:(e,t,a)=>{a.d(t,{A:()=>C});a(6540);var s=a(4164),n=a(4096),r=a(4848);function l(e){let{children:t,className:a}=e;return(0,r.jsx)("article",{className:a,children:t})}var i=a(8774);const o={title:"title_f1Hy"};function c(e){let{className:t}=e;const{metadata:a,isBlogPostPage:l}=(0,n.e7)(),{permalink:c,title:d}=a,g=l?"h1":"h2";return(0,r.jsx)(g,{className:(0,s.A)(o.title,t),children:l?d:(0,r.jsx)(i.A,{to:c,children:d})})}var d=a(1312),g=a(5846),u=a(6266);const m={container:"container_mt6G"};function h(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,g.W)();return t=>{const a=Math.ceil(t);return e(a,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return(0,r.jsx)(r.Fragment,{children:a(t)})}function p(e){let{date:t,formattedDate:a}=e;return(0,r.jsx)("time",{dateTime:t,children:a})}function x(){return(0,r.jsx)(r.Fragment,{children:" \xb7 "})}function j(e){let{className:t}=e;const{metadata:a}=(0,n.e7)(),{date:l,readingTime:i}=a,o=(0,u.i)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,r.jsxs)("div",{className:(0,s.A)(m.container,"margin-vert--md",t),children:[(0,r.jsx)(p,{date:l,formattedDate:(c=l,o.format(new Date(c)))}),void 0!==i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x,{}),(0,r.jsx)(h,{readingTime:i})]})]});var c}var b=a(6913);const A={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function f(e){let{className:t}=e;const{metadata:{authors:a},assets:l}=(0,n.e7)();if(0===a.length)return null;const i=a.every((e=>{let{name:t}=e;return!t})),o=1===a.length;return(0,r.jsx)("div",{className:(0,s.A)("margin-top--md margin-bottom--sm",i?A.imageOnlyAuthorRow:"row",t),children:a.map(((e,t)=>(0,r.jsx)("div",{className:(0,s.A)(!i&&(o?"col col--12":"col col--6"),i?A.imageOnlyAuthorCol:A.authorCol),children:(0,r.jsx)(b.A,{author:{...e,imageURL:l.authorsImageUrls[t]??e.imageURL}})},t)))})}function v(){return(0,r.jsxs)("header",{children:[(0,r.jsx)(c,{}),(0,r.jsx)(j,{}),(0,r.jsx)(f,{})]})}var N=a(440),T=a(5533);function _(e){let{children:t,className:a}=e;const{isBlogPostPage:l}=(0,n.e7)();return(0,r.jsx)("div",{id:l?N.LU:void 0,className:(0,s.A)("markdown",a),children:(0,r.jsx)(T.A,{children:t})})}var w=a(7559),k=a(4336),P=a(2053);function y(){return(0,r.jsx)("b",{children:(0,r.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read more"})})}function R(e){const{blogPostTitle:t,...a}=e;return(0,r.jsx)(i.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...a,children:(0,r.jsx)(y,{})})}function U(){const{metadata:e,isBlogPostPage:t}=(0,n.e7)(),{tags:a,title:l,editUrl:i,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:d}=e,g=!t&&o,u=a.length>0;if(!(u||g||i))return null;if(t){const e=!!(i||d||c);return(0,r.jsxs)("footer",{className:"docusaurus-mt-lg",children:[u&&(0,r.jsx)("div",{className:(0,s.A)("row","margin-top--sm",w.G.blog.blogFooterEditMetaRow),children:(0,r.jsx)("div",{className:"col",children:(0,r.jsx)(P.A,{tags:a})})}),e&&(0,r.jsx)(k.A,{className:(0,s.A)("margin-top--sm",w.G.blog.blogFooterEditMetaRow),editUrl:i,lastUpdatedAt:d,lastUpdatedBy:c})]})}return(0,r.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[u&&(0,r.jsx)("div",{className:(0,s.A)("col",{"col--9":g}),children:(0,r.jsx)(P.A,{tags:a})}),g&&(0,r.jsx)("div",{className:(0,s.A)("col text--right",{"col--3":u}),children:(0,r.jsx)(R,{blogPostTitle:l,to:e.permalink})})]})}function C(e){let{children:t,className:a}=e;const i=function(){const{isBlogPostPage:e}=(0,n.e7)();return e?void 0:"margin-bottom--xl"}();return(0,r.jsxs)(l,{className:(0,s.A)(i,a),children:[(0,r.jsx)(v,{}),(0,r.jsx)(_,{children:t}),(0,r.jsx)(U,{})]})}},3892:(e,t,a)=>{a.d(t,{A:()=>l});a(6540);var s=a(4096),n=a(2907),r=a(4848);function l(e){let{items:t,component:a=n.A}=e;return(0,r.jsx)(r.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,r.jsx)(s.in,{content:t,children:(0,r.jsx)(a,{children:(0,r.jsx)(t,{})})},t.metadata.permalink)}))})}},9022:(e,t,a)=>{a.d(t,{A:()=>l});a(6540);var s=a(4164),n=a(8774),r=a(4848);function l(e){const{permalink:t,title:a,subLabel:l,isNext:i}=e;return(0,r.jsxs)(n.A,{className:(0,s.A)("pagination-nav__link",i?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[l&&(0,r.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,r.jsx)("div",{className:"pagination-nav__label",children:a})]})}},6133:(e,t,a)=>{a.d(t,{A:()=>i});a(6540);var s=a(4164),n=a(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=a(4848);function i(e){let{permalink:t,label:a,count:i,description:o}=e;return(0,l.jsxs)(n.A,{href:t,title:o,className:(0,s.A)(r.tag,i?r.tagWithCount:r.tagRegular),children:[a,i&&(0,l.jsx)("span",{children:i})]})}},2053:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var s=a(4164),n=a(1312),r=a(6133);const l={tags:"tags_jXut",tag:"tag_QGVx"};var i=a(4848);function o(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(n.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,s.A)(l.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,i.jsx)("li",{className:l.tag,children:(0,i.jsx)(r.A,{...e})},e.permalink)))})]})}},6461:(e,t,a)=>{a.d(t,{ZD:()=>i,np:()=>d,uz:()=>c,wI:()=>o});a(6540);var s=a(1312),n=a(5846),r=a(4848);function l(){const{selectMessage:e}=(0,n.W)();return t=>e(t,(0,s.T)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:t}))}function i(e){const t=l();return(0,s.T)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:t(e.count),tagName:e.label})}function o(e){const t=l();return(0,s.T)({id:"theme.blog.author.pageTitle",description:"The title of the page for a blog author",message:"{authorName} - {nPosts}"},{nPosts:t(e.count),authorName:e.name||e.key})}const c=()=>(0,s.T)({id:"theme.blog.authorsList.pageTitle",message:"Authors",description:"The title of the authors page"});function d(){return(0,r.jsx)(s.A,{id:"theme.blog.authorsList.viewAll",description:"The label of the link targeting the blog authors page",children:"View all authors"})}}}]); \ No newline at end of file diff --git a/assets/js/36994c47.993c3566.js b/assets/js/36994c47.993c3566.js new file mode 100644 index 0000000..6592f7d --- /dev/null +++ b/assets/js/36994c47.993c3566.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[9858],{5516:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/3a2db09e.39116d64.js b/assets/js/3a2db09e.39116d64.js new file mode 100644 index 0000000..fc89595 --- /dev/null +++ b/assets/js/3a2db09e.39116d64.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8121],{8070:e=>{e.exports=JSON.parse('{"tags":[{"label":"Facebook","permalink":"/blog/tags/facebook","description":"Facebook tag description","count":1},{"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description","count":2},{"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description","count":4},{"label":"Hola","permalink":"/blog/tags/hola","description":"Hola tag description","count":1}]}')}}]); \ No newline at end of file diff --git a/assets/js/3ee9ac3f.c0194097.js b/assets/js/3ee9ac3f.c0194097.js new file mode 100644 index 0000000..802ed98 --- /dev/null +++ b/assets/js/3ee9ac3f.c0194097.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[2794],{7928:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>s,default:()=>l,frontMatter:()=>d,metadata:()=>r,toc:()=>h});var a=t(4848),i=t(8453);const d={sidebar_position:10},s="Events",r={id:"events",title:"Events",description:"TreeSpider has a list of events that can be listened for, the below is a list of all events.",source:"@site/docs/events.mdx",sourceDirName:".",slug:"/events",permalink:"/docs/events",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/events.mdx",tags:[],version:"current",sidebarPosition:10,frontMatter:{sidebar_position:10},sidebar:"tutorialSidebar",previous:{title:"Methods",permalink:"/docs/methods"},next:{title:"Frameworks",permalink:"/docs/category/frameworks"}},o={},h=[{value:"library.init",id:"libraryinit",level:2},{value:"chart_head.create",id:"chart_headcreate",level:2},{value:"chart_head.expanded",id:"chart_headexpanded",level:2},{value:"chart_head.collapsed",id:"chart_headcollapsed",level:2},{value:"zooming",id:"zooming",level:2}];function c(e){const n={code:"code",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.header,{children:(0,a.jsx)(n.h1,{id:"events",children:"Events"})}),"\n",(0,a.jsx)(n.p,{children:"TreeSpider has a list of events that can be listened for, the below is a list of all events."}),"\n",(0,a.jsxs)(n.p,{children:["The events can be listened to by using the ",(0,a.jsx)(n.code,{children:"TreeSpider.addEventListener()"})," or with the ",(0,a.jsx)(n.code,{children:"on()"})," method."]}),"\n",(0,a.jsx)(n.h2,{id:"libraryinit",children:"library.init"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Data: ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"rootContainer: HTMLElement"})})]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:"This event is emited once and immediately after TreeSpider has been initialized, example:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:'const inst1 = new TreeSpider({\n targetContainer: "#container-1"\n})\n\ninst1.addEventListener("library.init", (e) => {\n console.log("TreeSpider has been initialized")\n})\n\n// OR\n// inst1.on("library.init", (e) => {\n// console.log("TreeSpider has been initialized")\n// })\n'})}),"\n",(0,a.jsx)(n.h2,{id:"chart_headcreate",children:"chart_head.create"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Data: ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"headNode: SVG"})})]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:"This event is emited after a chart head has been created and has not been added to the UI, it returns the SVG element of the chart head that was just created, this event is emited for each of the chat heads, example"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:'const inst1 = new TreeSpider({\n targetContainer: "#container-1"\n})\n\ninst1.addEventListener("chart_head.create", (e) => {\n console.log("Chat head created; SVG: ", e.detail.headNode)\n})\n\n// OR\n// inst1.on("chart_head.create", (e) => {\n// console.log("Chat head created; SVG: ", e.detail.headNode)\n// })\n'})}),"\n",(0,a.jsx)(n.h2,{id:"chart_headexpanded",children:"chart_head.expanded"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Data: ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"svgNode: SVG, head_data: Object, pointPosition: number"})})]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["This event is emited whenever a chat head got expanded, it returns the SVG node of the expanded chart head, the data of the chart head and the point position, the point position is always ",(0,a.jsx)(n.code,{children:"1"})," except for chart heads with double point positions, example."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:'const inst1 = new TreeSpider({\n targetContainer: "#container-1"\n})\n\ninst1.addEventListener("chart_head.expanded", (e) => {\n console.log("Chat head expanded; data ", e.detail)\n})\n\n// OR\n// inst1.on("chart_head.expanded", (e) => {\n// console.log("Chat head expanded; data ", e.detail)\n// })\n'})}),"\n",(0,a.jsx)(n.h2,{id:"chart_headcollapsed",children:"chart_head.collapsed"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Data: ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"svgNode: SVG, head_data: Object, pointPosition: number"})})]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["This event is emited whenever a chat head got collapsed, it is just like the ",(0,a.jsx)(n.code,{children:"chart_head.expanded"})," event and it also returns the SVG node of the expanded chart head, the data of the chart head and the point position, the point position is always ",(0,a.jsx)(n.code,{children:"1"})," except for chart heads with double point positions, example."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:'const inst1 = new TreeSpider({\n targetContainer: "#container-1"\n})\n\ninst1.addEventListener("chart_head.collapsed", (e) => {\n console.log("Chat head expanded; data ", e.detail)\n})\n\n// OR\n// inst1.on("chart_head.collapsed", (e) => {\n// console.log("Chat head expanded; data ", e.detail)\n// })\n'})}),"\n",(0,a.jsx)(n.h2,{id:"zooming",children:"zooming"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Data: ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.code,{children:"e: ZoomBehavior"})})]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:"This event is emited when zooming, note that it is also emited when panning and even when performing automatic zooming and panning, it returns d3 zoom behavior, example:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-ts",children:'const inst1 = new TreeSpider({\n targetContainer: "#container-1"\n})\n\ninst1.addEventListener("zooming", (e) => {\n console.log("Tree is zooming; data ", e.detail)\n})\n\n// OR\n// inst1.on("zooming", (e) => {\n// cconsole.log("Tree is zooming; data ", e.detail)\n// })\n'})})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>r});var a=t(6540);const i={},d=a.createContext(i);function s(e){const n=a.useContext(d);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),a.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/573d089f.127a3b83.js b/assets/js/573d089f.127a3b83.js new file mode 100644 index 0000000..6c65752 --- /dev/null +++ b/assets/js/573d089f.127a3b83.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[2311],{9523:(e,t,o)=>{o.r(t),o.d(t,{TestTSpyder1:()=>h,TestTSpyder2:()=>p,assets:()=>d,contentTitle:()=>l,default:()=>x,frontMatter:()=>i,metadata:()=>c,toc:()=>g});var r=o(4848),n=o(8453),s=o(6540),a=o(8777);const i={sidebar_position:8},l="Colors",c={id:"colors",title:"Colors",description:"This page explains more on the colorrange option, you can customize TreeSpider chart head colors to fit your taste by providing an array of colors to the colorrange option, by default, TreeSpider uses a range of rainbow colors, how does it work? TreeSpider interpolates the provided colors using d3.interpolateRgbBasis() which produces a color range based on the provided colors, it then slice out a color based on the index of the tree data of the chart head, the index gets converted into percentage, like for example if the index of the tree data is 98 and the total length of the tree data is 200, the maths is going to be 98/200 which then gives the percentage and with this percentage it is used to get a slice from the interpolated color range and then the tree data's chart head get assigned the color slice, next let's check out how it really works.",source:"@site/docs/colors.mdx",sourceDirName:".",slug:"/colors",permalink:"/docs/colors",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/colors.mdx",tags:[],version:"current",sidebarPosition:8,frontMatter:{sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Options",permalink:"/docs/options"},next:{title:"Methods",permalink:"/docs/methods"}},d={},h=s.memo((()=>(s.useLayoutEffect((()=>{new a.A({targetContainer:"#test-cont-cl-0",width:"100%",color_range:["red","#00FF00","blue"],random_data_length:30})}),[]),(0,r.jsx)("div",{id:"test-cont-cl-0",style:{marginBottom:35}})))),p=s.memo((()=>(s.useLayoutEffect((()=>{new a.A({targetContainer:"#test-cont-cl-1",width:"100%",color_range:["yellow","purple"],random_data_length:30})}),[]),(0,r.jsx)("div",{id:"test-cont-cl-1",style:{marginBottom:35}})))),g=[];function u(e){const t={a:"a",code:"code",h1:"h1",header:"header",p:"p",pre:"pre",strong:"strong",...(0,n.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"colors",children:"Colors"})}),"\n",(0,r.jsxs)(t.p,{children:["This page explains more on the ",(0,r.jsx)(t.code,{children:"color_range"})," option, you can customize TreeSpider chart head colors to fit your taste by providing an array of colors to the ",(0,r.jsx)(t.code,{children:"color_range"})," option, by default, TreeSpider uses a range of rainbow colors, how does it work? TreeSpider interpolates the provided colors using ",(0,r.jsx)(t.a,{href:"https://d3js.org/d3-interpolate/color#interpolateRgbBasis",children:"d3.interpolateRgbBasis()"})," which produces a color range based on the provided colors, it then slice out a color based on the index of the tree data of the chart head, the index gets converted into percentage, like for example if the index of the tree data is 98 and the total length of the tree data is 200, the maths is going to be 98/200 which then gives the percentage and with this percentage it is used to get a slice from the interpolated color range and then the tree data's chart head get assigned the color slice, next let's check out how it really works."]}),"\n",(0,r.jsxs)(t.p,{children:["For example lets use the 3 basic colors ",(0,r.jsx)(t.strong,{children:"red"}),", ",(0,r.jsx)(t.strong,{children:"green"}),", and ",(0,r.jsx)(t.strong,{children:"blue"}),"."]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:"const instance1 = new TreeSpider({\n targetContainer: '#container-1',\n color_range: ['red', '#00FF00', 'blue']\n})\n"})}),"\n",(0,r.jsx)(t.p,{children:"If you noticed the second color in the array is in hex format which is to show that the format of the color passed can be either or both hex and color names, if you run this you will get something similar to this working example"}),"\n","\n",(0,r.jsx)(h,{}),"\n",(0,r.jsxs)(t.p,{children:["You'll see that in this example the chart head colors are between the 3 provided colors, ",(0,r.jsx)(t.strong,{children:"red"}),", ",(0,r.jsx)(t.strong,{children:"green"})," and ",(0,r.jsx)(t.strong,{children:"blue"}),", there are no yellow, purple and other colors that are not within the 3 colors, and you will also notice that there are color variants of the 3 colors, like dark red, lighter blue, and darker green and others, that's the amazing work of d3 color interpolation."]}),"\n",(0,r.jsxs)(t.p,{children:["Let's try just 2 colors, this time let's try ",(0,r.jsx)(t.strong,{children:"yellow"})," and ",(0,r.jsx)(t.strong,{children:"purple"})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:"const instance1 = new TreeSpider({\n targetContainer: '#container-2',\n color_range: ['yellow', 'purple']\n})\n"})}),"\n",(0,r.jsx)(t.p,{children:"If you run this it would look like the example below"}),"\n","\n",(0,r.jsx)(p,{}),"\n",(0,r.jsx)(t.p,{children:"As you can see the colors are only yellows and purples, that is how it works, and you can pass in any number of colors."})]})}function x(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},8453:(e,t,o)=>{o.d(t,{R:()=>a,x:()=>i});var r=o(6540);const n={},s=r.createContext(n);function a(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/59362658.10f46e4e.js b/assets/js/59362658.10f46e4e.js new file mode 100644 index 0000000..a6f3639 --- /dev/null +++ b/assets/js/59362658.10f46e4e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[9325],{1180:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>n,metadata:()=>i,toc:()=>c});var s=o(4848),r=o(8453);const n={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},a=void 0,i={permalink:"/blog/mdx-blog-post",editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2021-08-01-mdx-blog-post.mdx",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",tags:[{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.235,hasTruncateMarker:!0,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",page:{permalink:"/blog/authors/all-sebastien-lorber-articles"},socials:{x:"https://x.com/sebastienlorber",linkedin:"https://www.linkedin.com/in/sebastienlorber/",github:"https://github.com/slorber",newsletter:"https://thisweekinreact.com"},imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},l={authorsImageUrls:[void 0]},c=[];function u(e){const t={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["Blog posts support ",(0,s.jsx)(t.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(t.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsx)(t.admonition,{type:"tip",children:(0,s.jsx)(t.p,{children:"Use the power of React to create interactive blog posts."})}),"\n","\n",(0,s.jsx)(t.p,{children:"For example, use JSX to create an interactive button:"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",children:"<button onClick={() => alert('button clicked!')}>Click me!</button>\n"})}),"\n",(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},8453:(e,t,o)=>{o.d(t,{R:()=>a,x:()=>i});var s=o(6540);const r={},n=s.createContext(r);function a(e){const t=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e90a9b3.c0681ce7.js b/assets/js/5e90a9b3.c0681ce7.js new file mode 100644 index 0000000..35d6949 --- /dev/null +++ b/assets/js/5e90a9b3.c0681ce7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8025],{7134:a=>{a.exports=JSON.parse('{"tag":{"label":"Hola","permalink":"/blog/tags/hola","description":"Hola tag description","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/hola","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.9e8323ae.js b/assets/js/5e95c892.9e8323ae.js new file mode 100644 index 0000000..07ba498 --- /dev/null +++ b/assets/js/5e95c892.9e8323ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[9647],{7121:(e,r,s)=>{s.r(r),s.d(r,{default:()=>p});s(6540);var c=s(4164),d=s(1213),t=s(7559),u=s(2831),a=s(781),n=s(4848);function p(e){return(0,n.jsx)(d.e3,{className:(0,c.A)(t.G.wrapper.docsPages),children:(0,n.jsx)(a.A,{children:(0,u.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/621db11d.c586372f.js b/assets/js/621db11d.c586372f.js new file mode 100644 index 0000000..d52733c --- /dev/null +++ b/assets/js/621db11d.c586372f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[4212],{3250:(e,t,s)=>{s.r(t),s.d(t,{default:()=>m});s(6540);var a=s(4164),o=s(1213),r=s(7559),l=s(6461),n=s(8027),u=s(1463),i=s(1107),h=s(6913);const c={authorListItem:"authorListItem_n3yI"};var g=s(4848);function p(e){let{author:t}=e;return(0,g.jsx)("li",{className:c.authorListItem,children:(0,g.jsx)(h.A,{as:"h2",author:t,count:t.count})})}function d(e){let{authors:t}=e;return(0,g.jsx)("section",{className:(0,a.A)("margin-vert--lg",c.authorsListSection),children:(0,g.jsx)("ul",{children:t.map((e=>(0,g.jsx)(p,{author:e},e.key)))})})}function m(e){let{authors:t,sidebar:s}=e;const h=(0,l.uz)();return(0,g.jsxs)(o.e3,{className:(0,a.A)(r.G.wrapper.blogPages,r.G.page.blogAuthorsListPage),children:[(0,g.jsx)(o.be,{title:h}),(0,g.jsx)(u.A,{tag:"blog_authors_list"}),(0,g.jsxs)(n.A,{sidebar:s,children:[(0,g.jsx)(i.A,{as:"h1",children:h}),(0,g.jsx)(d,{authors:t})]})]})}},6461:(e,t,s)=>{s.d(t,{ZD:()=>n,np:()=>h,uz:()=>i,wI:()=>u});s(6540);var a=s(1312),o=s(5846),r=s(4848);function l(){const{selectMessage:e}=(0,o.W)();return t=>e(t,(0,a.T)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:t}))}function n(e){const t=l();return(0,a.T)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:t(e.count),tagName:e.label})}function u(e){const t=l();return(0,a.T)({id:"theme.blog.author.pageTitle",description:"The title of the page for a blog author",message:"{authorName} - {nPosts}"},{nPosts:t(e.count),authorName:e.name||e.key})}const i=()=>(0,a.T)({id:"theme.blog.authorsList.pageTitle",message:"Authors",description:"The title of the authors page"});function h(){return(0,r.jsx)(a.A,{id:"theme.blog.authorsList.viewAll",description:"The label of the link targeting the blog authors page",children:"View all authors"})}}}]); \ No newline at end of file diff --git a/assets/js/6875c492.924378a9.js b/assets/js/6875c492.924378a9.js new file mode 100644 index 0000000..9e1769d --- /dev/null +++ b/assets/js/6875c492.924378a9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[4813],{7713:(e,t,a)=>{a.d(t,{A:()=>r});a(6540);var n=a(1312),s=a(9022),i=a(4848);function r(e){const{metadata:t}=e,{previousPage:a,nextPage:r}=t;return(0,i.jsxs)("nav",{className:"pagination-nav","aria-label":(0,n.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[a&&(0,i.jsx)(s.A,{permalink:a,title:(0,i.jsx)(n.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer entries"})}),r&&(0,i.jsx)(s.A,{permalink:r,title:(0,i.jsx)(n.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older entries"}),isNext:!0})]})}},2907:(e,t,a)=>{a.d(t,{A:()=>B});a(6540);var n=a(4164),s=a(4096),i=a(4848);function r(e){let{children:t,className:a}=e;return(0,i.jsx)("article",{className:a,children:t})}var l=a(8774);const o={title:"title_f1Hy"};function c(e){let{className:t}=e;const{metadata:a,isBlogPostPage:r}=(0,s.e7)(),{permalink:c,title:d}=a,g=r?"h1":"h2";return(0,i.jsx)(g,{className:(0,n.A)(o.title,t),children:r?d:(0,i.jsx)(l.A,{to:c,children:d})})}var d=a(1312),g=a(5846),u=a(6266);const h={container:"container_mt6G"};function m(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,g.W)();return t=>{const a=Math.ceil(t);return e(a,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return(0,i.jsx)(i.Fragment,{children:a(t)})}function p(e){let{date:t,formattedDate:a}=e;return(0,i.jsx)("time",{dateTime:t,children:a})}function x(){return(0,i.jsx)(i.Fragment,{children:" \xb7 "})}function j(e){let{className:t}=e;const{metadata:a}=(0,s.e7)(),{date:r,readingTime:l}=a,o=(0,u.i)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,i.jsxs)("div",{className:(0,n.A)(h.container,"margin-vert--md",t),children:[(0,i.jsx)(p,{date:r,formattedDate:(c=r,o.format(new Date(c)))}),void 0!==l&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(x,{}),(0,i.jsx)(m,{readingTime:l})]})]});var c}var b=a(6913);const f={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function A(e){let{className:t}=e;const{metadata:{authors:a},assets:r}=(0,s.e7)();if(0===a.length)return null;const l=a.every((e=>{let{name:t}=e;return!t})),o=1===a.length;return(0,i.jsx)("div",{className:(0,n.A)("margin-top--md margin-bottom--sm",l?f.imageOnlyAuthorRow:"row",t),children:a.map(((e,t)=>(0,i.jsx)("div",{className:(0,n.A)(!l&&(o?"col col--12":"col col--6"),l?f.imageOnlyAuthorCol:f.authorCol),children:(0,i.jsx)(b.A,{author:{...e,imageURL:r.authorsImageUrls[t]??e.imageURL}})},t)))})}function v(){return(0,i.jsxs)("header",{children:[(0,i.jsx)(c,{}),(0,i.jsx)(j,{}),(0,i.jsx)(A,{})]})}var T=a(440),N=a(5533);function w(e){let{children:t,className:a}=e;const{isBlogPostPage:r}=(0,s.e7)();return(0,i.jsx)("div",{id:r?T.LU:void 0,className:(0,n.A)("markdown",a),children:(0,i.jsx)(N.A,{children:t})})}var _=a(7559),k=a(4336),y=a(2053);function P(){return(0,i.jsx)("b",{children:(0,i.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read more"})})}function R(e){const{blogPostTitle:t,...a}=e;return(0,i.jsx)(l.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...a,children:(0,i.jsx)(P,{})})}function U(){const{metadata:e,isBlogPostPage:t}=(0,s.e7)(),{tags:a,title:r,editUrl:l,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:d}=e,g=!t&&o,u=a.length>0;if(!(u||g||l))return null;if(t){const e=!!(l||d||c);return(0,i.jsxs)("footer",{className:"docusaurus-mt-lg",children:[u&&(0,i.jsx)("div",{className:(0,n.A)("row","margin-top--sm",_.G.blog.blogFooterEditMetaRow),children:(0,i.jsx)("div",{className:"col",children:(0,i.jsx)(y.A,{tags:a})})}),e&&(0,i.jsx)(k.A,{className:(0,n.A)("margin-top--sm",_.G.blog.blogFooterEditMetaRow),editUrl:l,lastUpdatedAt:d,lastUpdatedBy:c})]})}return(0,i.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[u&&(0,i.jsx)("div",{className:(0,n.A)("col",{"col--9":g}),children:(0,i.jsx)(y.A,{tags:a})}),g&&(0,i.jsx)("div",{className:(0,n.A)("col text--right",{"col--3":u}),children:(0,i.jsx)(R,{blogPostTitle:r,to:e.permalink})})]})}function B(e){let{children:t,className:a}=e;const l=function(){const{isBlogPostPage:e}=(0,s.e7)();return e?void 0:"margin-bottom--xl"}();return(0,i.jsxs)(r,{className:(0,n.A)(l,a),children:[(0,i.jsx)(v,{}),(0,i.jsx)(w,{children:t}),(0,i.jsx)(U,{})]})}},3892:(e,t,a)=>{a.d(t,{A:()=>r});a(6540);var n=a(4096),s=a(2907),i=a(4848);function r(e){let{items:t,component:a=s.A}=e;return(0,i.jsx)(i.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,i.jsx)(n.in,{content:t,children:(0,i.jsx)(a,{children:(0,i.jsx)(t,{})})},t.metadata.permalink)}))})}},3069:(e,t,a)=>{a.r(t),a.d(t,{default:()=>b});a(6540);var n=a(4164),s=a(1312),i=a(1213),r=a(7559),l=a(6461),o=a(8774),c=a(8027),d=a(7713),g=a(1463),u=a(3892),h=a(2234),m=a(1107),p=a(4848);function x(e){let{tag:t}=e;const a=(0,l.ZD)(t);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(i.be,{title:a,description:t.description}),(0,p.jsx)(g.A,{tag:"blog_tags_posts"})]})}function j(e){let{tag:t,items:a,sidebar:n,listMetadata:i}=e;const r=(0,l.ZD)(t);return(0,p.jsxs)(c.A,{sidebar:n,children:[t.unlisted&&(0,p.jsx)(h.A,{}),(0,p.jsxs)("header",{className:"margin-bottom--xl",children:[(0,p.jsx)(m.A,{as:"h1",children:r}),t.description&&(0,p.jsx)("p",{children:t.description}),(0,p.jsx)(o.A,{href:t.allTagsPath,children:(0,p.jsx)(s.A,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page",children:"View All Tags"})})]}),(0,p.jsx)(u.A,{items:a}),(0,p.jsx)(d.A,{metadata:i})]})}function b(e){return(0,p.jsxs)(i.e3,{className:(0,n.A)(r.G.wrapper.blogPages,r.G.page.blogTagPostListPage),children:[(0,p.jsx)(x,{...e}),(0,p.jsx)(j,{...e})]})}},2234:(e,t,a)=>{a.d(t,{A:()=>c});a(6540);var n=a(4164),s=a(4084),i=a(7559),r=a(7293),l=a(4848);function o(e){let{className:t}=e;return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(s.Rc,{}),className:(0,n.A)(t,i.G.common.unlistedBanner),children:(0,l.jsx)(s.Uh,{})})}function c(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.AE,{}),(0,l.jsx)(o,{...e})]})}},9022:(e,t,a)=>{a.d(t,{A:()=>r});a(6540);var n=a(4164),s=a(8774),i=a(4848);function r(e){const{permalink:t,title:a,subLabel:r,isNext:l}=e;return(0,i.jsxs)(s.A,{className:(0,n.A)("pagination-nav__link",l?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[r&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:r}),(0,i.jsx)("div",{className:"pagination-nav__label",children:a})]})}},6133:(e,t,a)=>{a.d(t,{A:()=>l});a(6540);var n=a(4164),s=a(8774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var r=a(4848);function l(e){let{permalink:t,label:a,count:l,description:o}=e;return(0,r.jsxs)(s.A,{href:t,title:o,className:(0,n.A)(i.tag,l?i.tagWithCount:i.tagRegular),children:[a,l&&(0,r.jsx)("span",{children:l})]})}},2053:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var n=a(4164),s=a(1312),i=a(6133);const r={tags:"tags_jXut",tag:"tag_QGVx"};var l=a(4848);function o(e){let{tags:t}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("b",{children:(0,l.jsx)(s.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,l.jsx)("ul",{className:(0,n.A)(r.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,l.jsx)("li",{className:r.tag,children:(0,l.jsx)(i.A,{...e})},e.permalink)))})]})}},6461:(e,t,a)=>{a.d(t,{ZD:()=>l,np:()=>d,uz:()=>c,wI:()=>o});a(6540);var n=a(1312),s=a(5846),i=a(4848);function r(){const{selectMessage:e}=(0,s.W)();return t=>e(t,(0,n.T)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:t}))}function l(e){const t=r();return(0,n.T)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:t(e.count),tagName:e.label})}function o(e){const t=r();return(0,n.T)({id:"theme.blog.author.pageTitle",description:"The title of the page for a blog author",message:"{authorName} - {nPosts}"},{nPosts:t(e.count),authorName:e.name||e.key})}const c=()=>(0,n.T)({id:"theme.blog.authorsList.pageTitle",message:"Authors",description:"The title of the authors page"});function d(){return(0,i.jsx)(n.A,{id:"theme.blog.authorsList.viewAll",description:"The label of the link targeting the blog authors page",children:"View all authors"})}},4084:(e,t,a)=>{a.d(t,{AE:()=>o,Rc:()=>r,TT:()=>d,Uh:()=>l,Yh:()=>c});a(6540);var n=a(1312),s=a(5260),i=a(4848);function r(){return(0,i.jsx)(n.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function l(){return(0,i.jsx)(n.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function o(){return(0,i.jsx)(s.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function c(){return(0,i.jsx)(n.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function d(){return(0,i.jsx)(n.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}}}]); \ No newline at end of file diff --git a/assets/js/72791873.61fa8534.js b/assets/js/72791873.61fa8534.js new file mode 100644 index 0000000..8c0e1e8 --- /dev/null +++ b/assets/js/72791873.61fa8534.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[7457],{4916:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Frameworks","description":"The list of frameworks that TreeSpider can work with","slug":"/category/frameworks","permalink":"/docs/category/frameworks","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"Events","permalink":"/docs/events"},"next":{"title":"React JS","permalink":"/docs/frameworks/react-js"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/72a427b3.12dfd67f.js b/assets/js/72a427b3.12dfd67f.js new file mode 100644 index 0000000..803316f --- /dev/null +++ b/assets/js/72a427b3.12dfd67f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[5643],{5451:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>c});var r=n(4848),i=n(8453);n(6540),n(8777);const s={sidebar_position:12},o="Contributing",a={id:"contributing",title:"Contributing",description:"TreeSpider is still a work-in-progress and I am planning to make it better that it currently is, and your contribution is highly appreciated, and if you need a feature or want to add a tree type, a new chart head, a new link type or any other things you are welcome to contribute them, or if you noticed a bug you're welcome to create a pull request, your contributions are appreciated.",source:"@site/docs/contributing.mdx",sourceDirName:".",slug:"/contributing",permalink:"/docs/contributing",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/contributing.mdx",tags:[],version:"current",sidebarPosition:12,frontMatter:{sidebar_position:12},sidebar:"tutorialSidebar",previous:{title:"React JS",permalink:"/docs/frameworks/react-js"}},d={},c=[{value:"Codebase short intro",id:"codebase-short-intro",level:2},{value:"Technologies used",id:"technologies-used",level:2},{value:"Getting started",id:"getting-started",level:2},{value:"Starting the project",id:"starting-the-project",level:2},{value:"Testing",id:"testing",level:2}];function l(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"contributing",children:"Contributing"})}),"\n",(0,r.jsx)(t.p,{children:"TreeSpider is still a work-in-progress and I am planning to make it better that it currently is, and your contribution is highly appreciated, and if you need a feature or want to add a tree type, a new chart head, a new link type or any other things you are welcome to contribute them, or if you noticed a bug you're welcome to create a pull request, your contributions are appreciated."}),"\n",(0,r.jsx)(t.h2,{id:"codebase-short-intro",children:"Codebase short intro"}),"\n",(0,r.jsxs)(t.p,{children:["TreeSpider is fully built with D3 and object oriented TypeScript, and it also uses rollup as the bundler, the source code is under the ",(0,r.jsx)(t.strong,{children:"src"})," directory and the output bundle is in the ",(0,r.jsx)(t.strong,{children:"dist"})," directory."]}),"\n",(0,r.jsx)(t.h2,{id:"technologies-used",children:"Technologies used"}),"\n",(0,r.jsx)(t.p,{children:"The following are the technologies used"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"D3.js"}),"\n",(0,r.jsx)(t.li,{children:"TypeScript"}),"\n",(0,r.jsx)(t.li,{children:"SCSS"}),"\n",(0,r.jsx)(t.li,{children:"rollup"}),"\n",(0,r.jsx)(t.li,{children:"babel"}),"\n",(0,r.jsx)(t.li,{children:"jest"}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"getting-started",children:"Getting started"}),"\n",(0,r.jsxs)(t.p,{children:["To get started to contribute, in a convenient directory on your computer, open the terminal and clone the ",(0,r.jsx)(t.a,{href:"https://github.com/paulosabayomi/treeSpider",children:"TreeSpider github repository"}),", then run ",(0,r.jsx)(t.code,{children:"npm i"})," to install all the dev dependencies, then install ",(0,r.jsx)(t.code,{children:"sass"})," globally with ",(0,r.jsx)(t.code,{children:"npm i -g sass"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"starting-the-project",children:"Starting the project"}),"\n",(0,r.jsxs)(t.p,{children:["To start the project, in the ",(0,r.jsx)(t.code,{children:"package.json"})," file check the list of commands under the ",(0,r.jsx)(t.code,{children:"scripts"})," property for all the commands needed for development and bundling, to start rollup bundler in watch-mode for development run"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"npm run rollup-watch\n"})}),"\n",(0,r.jsx)(t.p,{children:"Next, start the sass css compiler in watch mode by running"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"npm run sass\n"})}),"\n",(0,r.jsxs)(t.p,{children:["Then you are good to go and to start making changes, the single scss file is under the ",(0,r.jsx)(t.code,{children:"/scss"})," directory."]}),"\n",(0,r.jsx)(t.h2,{id:"testing",children:"Testing"}),"\n",(0,r.jsxs)(t.p,{children:["After development, testing is neccessary, to test you can either add some test cases to the already created test files under the ",(0,r.jsx)(t.code,{children:"/__test__"})," directory or create new test files, after creating the tests or if no tests were added, run"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"npm run test\n"})}),"\n",(0,r.jsx)(t.p,{children:"If all tests passed, then you can create a pull request, no need for bundling as it will be bundled with GitHub Actions after it has been merged."})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>a});var r=n(6540);const i={},s=r.createContext(i);function o(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/730f34f0.e4e041ac.js b/assets/js/730f34f0.e4e041ac.js new file mode 100644 index 0000000..bdb494c --- /dev/null +++ b/assets/js/730f34f0.e4e041ac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[5216],{6377:(e,n,t)=>{t.r(n),t.d(n,{TestTSpyder1:()=>p,TestTSpyder2:()=>h,TestTSpyder3:()=>u,assets:()=>c,contentTitle:()=>l,default:()=>x,frontMatter:()=>d,metadata:()=>a,toc:()=>g});var r=t(4848),i=t(8453),s=t(6540),o=t(8777);const d={title:"TreeSpider Examples"},l="TreeSpider Examples",a={type:"mdx",permalink:"/examples",source:"@site/src/pages/examples.mdx",title:"TreeSpider Examples",description:"Basic Example",frontMatter:{title:"TreeSpider Examples"},unlisted:!1},c={},p=s.memo((()=>(s.useLayoutEffect((()=>{new o.A({targetContainer:"#test-cont-ex-1",width:"100%"})}),[]),(0,r.jsx)("div",{id:"test-cont-ex-1",style:{marginBottom:20}})))),h=s.memo((()=>(s.useLayoutEffect((()=>{new o.A({targetContainer:"#test-cont-ex-2",width:"100%",customBackground:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><g id="Page-1" fill="none" fill-rule="evenodd"><g id="Artboard-5" fill="#000000"><path id="Combined-Shape" d="M0 38.59l2.83-2.83 1.41 1.41L1.41 40H0v-1.41zM0 1.4l2.83 2.83 1.41-1.41L1.41 0H0v1.41zM38.59 40l-2.83-2.83 1.41-1.41L40 38.59V40h-1.41zM40 1.41l-2.83 2.83-1.41-1.41L38.59 0H40v1.41zM20 18.6l2.83-2.83 1.41 1.41L21.41 20l2.83 2.83-1.41 1.41L20 21.41l-2.83 2.83-1.41-1.41L18.59 20l-2.83-2.83 1.41-1.41L20 18.59z"/></g></g></svg>'})}),[]),(0,r.jsx)("div",{id:"test-cont-ex-2",style:{marginBottom:20}})))),u=s.memo((()=>(s.useLayoutEffect((()=>{new o.A({targetContainer:"#test-cont-ex-3",width:"100%",customBackground:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><g id="Page-1" fill="none" fill-rule="evenodd"><g id="Artboard-5" fill="#000000"><path id="Combined-Shape" d="M0 38.59l2.83-2.83 1.41 1.41L1.41 40H0v-1.41zM0 1.4l2.83 2.83 1.41-1.41L1.41 0H0v1.41zM38.59 40l-2.83-2.83 1.41-1.41L40 38.59V40h-1.41zM40 1.41l-2.83 2.83-1.41-1.41L38.59 0H40v1.41zM20 18.6l2.83-2.83 1.41 1.41L21.41 20l2.83 2.83-1.41 1.41L20 21.41l-2.83 2.83-1.41-1.41L18.59 20l-2.83-2.83 1.41-1.41L20 18.59z"/></g></g></svg>',backgroundSize:"20px"})}),[]),(0,r.jsx)("div",{id:"test-cont-ex-3",style:{marginBottom:20}})))),g=[{value:"Basic Example",id:"basic-example",level:2},{value:"Using TreeSpider in a project with no bundler",id:"using-treespider-in-a-project-with-no-bundler",level:3},{value:"ES6 import",id:"es6-import",level:4},{value:"Browser - Script tag",id:"browser---script-tag",level:4},{value:"Project with a bundler",id:"project-with-a-bundler",level:3},{value:"Using Custom background pattern",id:"using-custom-background-pattern",level:2}];function m(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"treespider-examples",children:"TreeSpider Examples"})}),"\n",(0,r.jsx)(n.h2,{id:"basic-example",children:"Basic Example"}),"\n",(0,r.jsx)(n.p,{children:"After installing TreeSpdier, if the project doesn't have a bundler, copy TreeSpider from the node_modules to the root of your project directory, then TreeSpider can be used in 2 ways, through ES6 import or through the browser script tag, first ES6 import."}),"\n",(0,r.jsx)(n.h3,{id:"using-treespider-in-a-project-with-no-bundler",children:"Using TreeSpider in a project with no bundler"}),"\n",(0,r.jsx)(n.h4,{id:"es6-import",children:"ES6 import"}),"\n",(0,r.jsxs)(n.p,{children:["The ES6 bundles are in the ",(0,r.jsx)(n.code,{children:"dist/es"})," directory, and the minified bundle will be used, example"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:'import TreeSpider from "./treespider/dist/es/treeSpider.bundle.min.js"\n\nconst instance1 = new TreeSpider({\n targetContainer: "#container-1"\n})\n'})}),"\n",(0,r.jsx)(n.p,{children:"Then you will see something like this in the browser"}),"\n","\n",(0,r.jsx)(p,{}),"\n",(0,r.jsx)(n.h4,{id:"browser---script-tag",children:"Browser - Script tag"}),"\n",(0,r.jsxs)(n.p,{children:["The browser bundles are in the ",(0,r.jsx)(n.code,{children:"dist/browser"})," directory, the browser bundles allow TreeSpider to be loaded through the script tag, example:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-html",children:'<div id="container-1"></div>\n\n<script src="/treespider/dist/browser/treeSpdier.bundle.min.js"><\/script>\n\n<script>\n const instance1 = new TreeSpider({\n targetContainer: "#container-1"\n })\n<\/script>\n'})}),"\n",(0,r.jsx)(n.p,{children:"Then you will see it display like the working example above"}),"\n",(0,r.jsx)(n.h3,{id:"project-with-a-bundler",children:"Project with a bundler"}),"\n",(0,r.jsx)(n.p,{children:"If you're running TreeSpider in a project that has a bundler, then the process of initializing TreeSpider is simple as follows"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:'import TreeSpider from "treespider"\n\nconst instance1 = new TreeSpider({\n targetContainer: "#container-1"\n})\n'})}),"\n",(0,r.jsx)(n.p,{children:"TreeSpider can work in both JavaScript applications and pure TypeScript applications because TreeSpider was built completely with TypeScript"}),"\n",(0,r.jsx)(n.h2,{id:"using-custom-background-pattern",children:"Using Custom background pattern"}),"\n",(0,r.jsxs)(n.p,{children:["You can use custom SVG background with TreeSpider, to provide a custom SVG background the SVG must have been stringified, you can use the ",(0,r.jsx)(n.code,{children:"new XMLSerializer().serializeToString()"})," method to serialize your SVG DOM element to string, or pass it directly to the ",(0,r.jsx)(n.code,{children:"customBackground"})," option if it's already in the string format and it's not a DOM element, example"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:'import TreeSpider from "treespider";\n\nconst custom_svg = document.createElementNS("http://www.w3.org/2000/svg", "svg")\n// ... add other stuffs like rect, circle, paths and so on...\n\nconst custom_svg_bg = new XMLSerializer().serializeToString(custom_svg)\n\n// OR if you already have the svg in a string format\n\nconst custom_svg_bg = \'<svg xmlns="http://www.w3.org/2000/svg">...</svg>\'\n\nconst instance1 = new TreeSpider({\n targetContainer: "#container-1",\n customBackground: custom_svg_bg\n})\n\n'})}),"\n",(0,r.jsx)(n.p,{children:"Then it will look something like this"}),"\n","\n",(0,r.jsx)(h,{}),"\n",(0,r.jsxs)(n.p,{children:["The background is an SVG string that was provided to the ",(0,r.jsx)(n.code,{children:"customBackground"})," option, the SVG string is below:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-xml",children:'\x3c!-- Source: https://heropatterns.com/ --\x3e\n<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><g id="Page-1" fill="none" fill-rule="evenodd"><g id="Artboard-5" fill="#000000"><path id="Combined-Shape" d="M0 38.59l2.83-2.83 1.41 1.41L1.41 40H0v-1.41zM0 1.4l2.83 2.83 1.41-1.41L1.41 0H0v1.41zM38.59 40l-2.83-2.83 1.41-1.41L40 38.59V40h-1.41zM40 1.41l-2.83 2.83-1.41-1.41L38.59 0H40v1.41zM20 18.6l2.83-2.83 1.41 1.41L21.41 20l2.83 2.83-1.41 1.41L20 21.41l-2.83 2.83-1.41-1.41L18.59 20l-2.83-2.83 1.41-1.41L20 18.59z"/></g></g></svg>\n'})}),"\n",(0,r.jsxs)(n.p,{children:["Then to further customize our custom svg background, let's try to set the background size to ",(0,r.jsx)(n.code,{children:"20px"}),", example"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n customBackground: custom_svg_bg,\n backgroundSize: "20px"\n})\n'})}),"\n",(0,r.jsx)(n.p,{children:"Then if you run that, it will look something like this"}),"\n","\n",(0,r.jsx)(u,{}),"\n",(0,r.jsx)(n.p,{children:"As you can see the size of the SVG background has changed and it's now looking better."})]})}function x(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(m,{...e})}):m(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var r=t(6540);const i={},s=r.createContext(i);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/73664a40.661c6848.js b/assets/js/73664a40.661c6848.js new file mode 100644 index 0000000..183e528 --- /dev/null +++ b/assets/js/73664a40.661c6848.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[1972],{9581:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>m,contentTitle:()=>r,default:()=>a,frontMatter:()=>n,metadata:()=>u,toc:()=>l});var t=i(4848),o=i(8453);const n={slug:"long-blog-post",title:"Long Blog Post",authors:"yangshun",tags:["hello","docusaurus"]},r=void 0,u={permalink:"/blog/long-blog-post",editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2019-05-29-long-blog-post.md",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",tags:[{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:2.06,hasTruncateMarker:!0,authors:[{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",page:{permalink:"/blog/authors/yangshun"},socials:{x:"https://x.com/yangshunz",github:"https://github.com/yangshun"},imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"yangshun",tags:["hello","docusaurus"]},unlisted:!1,prevItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/blog/first-blog-post"}},m={authorsImageUrls:[void 0]},l=[];function c(e){const s={code:"code",p:"p",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.p,{children:"This is the summary of a very long blog post,"}),"\n",(0,t.jsxs)(s.p,{children:["Use a ",(0,t.jsx)(s.code,{children:"\x3c!--"})," ",(0,t.jsx)(s.code,{children:"truncate"})," ",(0,t.jsx)(s.code,{children:"--\x3e"})," comment to limit blog post size in the list view."]}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})]})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,s,i)=>{i.d(s,{R:()=>r,x:()=>u});var t=i(6540);const o={},n=t.createContext(o);function r(e){const s=t.useContext(n);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function u(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(n.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7661071f.da5c7a1a.js b/assets/js/7661071f.da5c7a1a.js new file mode 100644 index 0000000..c3e6167 --- /dev/null +++ b/assets/js/7661071f.da5c7a1a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8737],{4137:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>g,frontMatter:()=>r,metadata:()=>i,toc:()=>u});var s=o(4848),n=o(8453);const r={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},a=void 0,i={permalink:"/blog/welcome",editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2021-08-26-welcome/index.md",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",tags:[{inline:!1,label:"Facebook",permalink:"/blog/tags/facebook",description:"Facebook tag description"},{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.465,hasTruncateMarker:!0,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",page:{permalink:"/blog/authors/all-sebastien-lorber-articles"},socials:{x:"https://x.com/sebastienlorber",linkedin:"https://www.linkedin.com/in/sebastienlorber/",github:"https://github.com/slorber",newsletter:"https://thisweekinreact.com"},imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",page:{permalink:"/blog/authors/yangshun"},socials:{x:"https://x.com/yangshunz",github:"https://github.com/yangshun"},imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},unlisted:!1,nextItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"}},l={authorsImageUrls:[void 0,void 0]},u=[];function c(e){const t={a:"a",p:"p",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"https://docusaurus.io/docs/blog",children:"Docusaurus blogging features"})," are powered by the ",(0,s.jsx)(t.a,{href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog",children:"blog plugin"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Here are a few tips you might find useful."})]})}function g(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},8453:(e,t,o)=>{o.d(t,{R:()=>a,x:()=>i});var s=o(6540);const n={},r=s.createContext(n);function a(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/814f3328.9e652481.js b/assets/js/814f3328.9e652481.js new file mode 100644 index 0000000..8cd543f --- /dev/null +++ b/assets/js/814f3328.9e652481.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[7472],{5513:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Welcome","permalink":"/blog/welcome","unlisted":false,"date":"2021-08-26T00:00:00.000Z"},{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post","unlisted":false,"date":"2021-08-01T00:00:00.000Z"},{"title":"Long Blog Post","permalink":"/blog/long-blog-post","unlisted":false,"date":"2019-05-29T00:00:00.000Z"},{"title":"First Blog Post","permalink":"/blog/first-blog-post","unlisted":false,"date":"2019-05-28T00:00:00.000Z"}]}')}}]); \ No newline at end of file diff --git a/assets/js/86752f55.f4bafcc5.js b/assets/js/86752f55.f4bafcc5.js new file mode 100644 index 0000000..376ffb1 --- /dev/null +++ b/assets/js/86752f55.f4bafcc5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[283],{9726:(e,n,t)=>{t.r(n),t.d(n,{TestTSpyderTD:()=>c,assets:()=>h,contentTitle:()=>s,default:()=>g,frontMatter:()=>d,metadata:()=>l,toc:()=>p});var i=t(4848),r=t(8453),o=t(6540),a=t(8777);const d={sidebar_position:4},s="Tree Data",l={id:"tree-data",title:"Tree Data",description:"The TreeSpider tree data is straight forward, each employee has the required id and parentId properties, the parentId is for specifying the employee that an employee reports to, and the root employee or the overall head of the organization should not have the parentId property.",source:"@site/docs/tree-data.mdx",sourceDirName:".",slug:"/tree-data",permalink:"/docs/tree-data",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/tree-data.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Basic Usage",permalink:"/docs/basic-usage"},next:{title:"Trees",permalink:"/docs/trees"}},h={},c=o.memo((()=>{const e=[{id:"1",role:"CEO",name:"Lorem John"},{id:"2",role:"Chief of Engineering",parentId:"1",name:"Doe Ipsum"},{id:"3",role:"Lead Engineer",parentId:"2",name:"Walter Rock"},{id:"4",role:"Senior Engineer",parentId:"3",name:"Nick Rand"},{id:"5",role:"Junior Engineer no. 1",parentId:"4",name:"Bob Teest"},{id:"6",role:"Junior Engineer no. 2",parentId:"4",name:"Robb Derth"},{id:"7",role:"Junior Engineer no. 3",parentId:"4",name:"Pete Perth"}];return o.useLayoutEffect((()=>{new a.A({targetContainer:"#test-cont-td-1",width:"100%",tree_data:e})}),[]),(0,i.jsx)(i.Fragment,{children:(0,i.jsx)("div",{id:"test-cont-td-1"})})})),p=[{value:"Simple representation",id:"simple-representation",level:2},{value:"Simple Data Example",id:"simple-data-example",level:2},{value:"Data definition",id:"data-definition",level:2},{value:"<code>id</code>",id:"id",level:3},{value:"<code>parentId</code>",id:"parentid",level:3},{value:"<code>name</code>",id:"name",level:3},{value:"<code>role</code>",id:"role",level:3},{value:"<code>location</code>",id:"location",level:3},{value:"<code>image</code>",id:"image",level:3}];function m(e){const n={code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"tree-data",children:"Tree Data"})}),"\n",(0,i.jsxs)(n.p,{children:["The TreeSpider tree data is straight forward, each employee has the required ",(0,i.jsx)(n.code,{children:"id"})," and ",(0,i.jsx)(n.code,{children:"parentId"})," properties, the ",(0,i.jsx)(n.code,{children:"parentId"})," is for specifying the employee that an employee reports to, and the root employee or the overall head of the organization should not have the ",(0,i.jsx)(n.code,{children:"parentId"})," property."]}),"\n",(0,i.jsx)(n.h2,{id:"simple-representation",children:"Simple representation"}),"\n",(0,i.jsx)(n.p,{children:"In simple diagram, the data is like so"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-txt",children:"CEO -> Chief of Engineering -> Lead Engineer -> Senior Engineer -> Junior Engineers\n"})}),"\n",(0,i.jsxs)(n.p,{children:["In the simple diagram the ",(0,i.jsx)(n.strong,{children:"Junior Engineers"})," report to the ",(0,i.jsx)(n.strong,{children:"Senior Engineer"})," who reports to the ",(0,i.jsx)(n.strong,{children:"Lead Engineer"})," who then also reports to the ",(0,i.jsx)(n.strong,{children:"Chief of Engineering"})," who then finally reports to the ",(0,i.jsx)(n.strong,{children:"CEO"}),", the CEO doesn't reports to anyone except if there is a board then in that case the root of the structure is going to be the organization's name then the board of directors then the CEO, but in the case of the simple diagram the CEO is the root of the structure, so in the object representation, all the employees except the CEO will have a ",(0,i.jsx)(n.code,{children:"parentId"})," property pointing to the ",(0,i.jsx)(n.code,{children:"id"})," of the employee they report to, for example the next section is the object representation of the above simple example diagram."]}),"\n",(0,i.jsx)(n.h2,{id:"simple-data-example",children:"Simple Data Example"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",children:'[\n {\n id: "1",\n role: "CEO"\n },\n {\n id: "2",\n role: "Chief of Engineering",\n parentId: "1"\n },\n {\n id: "3",\n role: "Lead Engineer",\n parentId: "2"\n },\n {\n id: "4",\n role: "Senior Engineer",\n parentId: "3"\n },\n {\n id: "5",\n role: "Junior Engineer no. 1",\n parentId: "4"\n },\n {\n id: "6",\n role: "Junior Engineer no. 2",\n parentId: "4"\n },\n {\n id: "7",\n role: "Junior Engineer no. 3",\n parentId: "4"\n },\n\n]\n'})}),"\n",(0,i.jsxs)(n.p,{children:["In the above data, notice the CEO doesn't have a ",(0,i.jsx)(n.code,{children:"parentId"})," and the rest of the employees each have the ",(0,i.jsx)(n.code,{children:"parentId"})," which points to the id of the employee they report to, and also notice that all the junior engineers have a ",(0,i.jsx)(n.code,{children:"parentId"})," set to the id of the ",(0,i.jsx)(n.strong,{children:"Senior Engineer"})," which they report to, this is a valid data that can be passed to TreeSpider, then TreeSpider will do the hard work of sorting, organizing and displaying the data with your choice of selected tree type."]}),"\n",(0,i.jsxs)(n.p,{children:["Now passing the data, still using the example data above but adding ",(0,i.jsx)(n.code,{children:"name"})," property to each employee"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",children:'// ...\n\nconst employee_data = [\n {\n id: "1",\n role: "CEO",\n name: "Lorem John"\n },\n {\n id: "2",\n role: "Chief of Engineering",\n parentId: "1",\n name: "Doe Ipsum"\n },\n {\n id: "3",\n role: "Lead Engineer",\n parentId: "2",\n name: "Walter Rock"\n },\n {\n id: "4",\n role: "Senior Engineer",\n parentId: "3",\n name: "Nick Rand"\n },\n {\n id: "5",\n role: "Junior Engineer no. 1",\n parentId: "4",\n name: "Bob Teest"\n },\n {\n id: "6",\n role: "Junior Engineer no. 2",\n parentId: "4",\n name: "Robb Derth"\n },\n {\n id: "7",\n role: "Junior Engineer no. 3",\n parentId: "4",\n name: "Pete Perth"\n },\n\n]\n\nconst instance1 = new TreeSpider({\n targetContainer: "#container-1",\n tree_data: employee_data\n})\n\n'})}),"\n",(0,i.jsx)(n.p,{children:"The above data will be rendered like the working example below, zoom in and out and pan to interact"}),"\n","\n",(0,i.jsx)(c,{}),"\n",(0,i.jsx)(n.h2,{id:"data-definition",children:"Data definition"}),"\n",(0,i.jsx)(n.p,{children:"More about the data and other properties that can be provided to the employee data, the data structure is as below:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",children:"{\n id: string; \n parentId: string; \n name: string; \n role?: string; \n location?: string;\n image?: string;\n}\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Technically, only the ",(0,i.jsx)(n.code,{children:"id"})," is required, but the ",(0,i.jsx)(n.code,{children:"parentId"})," and ",(0,i.jsx)(n.code,{children:"name"})," are also required for the data to make sense, explanation of each property below."]}),"\n",(0,i.jsx)(n.h3,{id:"id",children:(0,i.jsx)(n.code,{children:"id"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"required"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"id"})," property is required and it is a ",(0,i.jsx)(n.code,{children:"string"})," that indicates the index of the data, if the ",(0,i.jsx)(n.code,{children:"id"})," of an object in the data array is missing, it can cause recursion issue and which will affect the rendering operation of the data, the ",(0,i.jsx)(n.code,{children:"id"})," is not compulsory to be ordered according to employee hierarchy, in fact the root of the organization can be ordered last in the array, it doesn't affect the data rendering."]}),"\n",(0,i.jsx)(n.h3,{id:"parentid",children:(0,i.jsx)(n.code,{children:"parentId"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"required"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"parentId"})," is required to be added to each employee except the root/head of the organization, it points to the department head to which the employee reports, and it is required that only one object/data should not have a ",(0,i.jsx)(n.code,{children:"parentId"})," to indicate it as the root/head of the organization, if more than one data has a missing ",(0,i.jsx)(n.code,{children:"parentId"})," it can give cause irregularities in the rendering or even an error."]}),"\n",(0,i.jsx)(n.h3,{id:"name",children:(0,i.jsx)(n.code,{children:"name"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"required"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"name"})," is also on the same level of requirement as the ",(0,i.jsx)(n.code,{children:"parentId"})," except it indicate an employee instead of pointing to the lead which the employee reports too, as not everyone has first and last name, so at least a name must be provided either first or last, and if more than 2 names was provided in the name it would assume the first name comes first and the last name comes last and it will create the initials from them and also only display the first and last name, and in the case of only one name it will only render the only name passed and render the initial of the passed name."]}),"\n",(0,i.jsx)(n.h3,{id:"role",children:(0,i.jsx)(n.code,{children:"role"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Optional"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This is not required but neccessary to indicate the role, position, department or job title of the employee, set this role to the department name if the employee is a lead of their department."}),"\n",(0,i.jsx)(n.h3,{id:"location",children:(0,i.jsx)(n.code,{children:"location"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Optional"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This is also not required but necessary to show the location of the employee, that is, the city and country of the employee."}),"\n",(0,i.jsx)(n.h3,{id:"image",children:(0,i.jsx)(n.code,{children:"image"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Optional"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"The picture of the employee, the link/url to the employee's picture, if an employee doesn't have a picture leave the image field in the employee's data as undefined, TreeSpider in that case will automatically use the employee's initials instead."}),"\n",(0,i.jsx)(n.p,{children:"The data to be provided to TreeSpider is going to be an array of the object described above, for example"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",children:"[\n { // taking this as the root, note this object is missing the parentId property\n id: string; \n name: string; \n role: string; \n location: string;\n image: string;\n },\n {\n id: string; \n parentId: string; \n name: string; \n role: string; \n location: string;\n image: string;\n },\n {\n id: string; \n parentId: string; \n name: string; \n role: string; \n location: string;\n image: string;\n }\n]\n"})})]})}function g(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(m,{...e})}):m(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>d});var i=t(6540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8717b14a.b59a4b8d.js b/assets/js/8717b14a.b59a4b8d.js new file mode 100644 index 0000000..d5003a9 --- /dev/null +++ b/assets/js/8717b14a.b59a4b8d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[3694],{1615:(t,o,e)=>{e.r(o),e.d(o,{assets:()=>a,contentTitle:()=>r,default:()=>g,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var n=e(4848),s=e(8453);const l={slug:"long-blog-post",title:"Long Blog Post",authors:"yangshun",tags:["hello","docusaurus"]},r=void 0,i={permalink:"/blog/long-blog-post",editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2019-05-29-long-blog-post.md",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",tags:[{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:2.06,hasTruncateMarker:!0,authors:[{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",page:{permalink:"/blog/authors/yangshun"},socials:{x:"https://x.com/yangshunz",github:"https://github.com/yangshun"},imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"yangshun",tags:["hello","docusaurus"]},unlisted:!1,prevItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/blog/first-blog-post"}},a={authorsImageUrls:[void 0]},u=[];function c(t){const o={code:"code",p:"p",...(0,s.R)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.p,{children:"This is the summary of a very long blog post,"}),"\n",(0,n.jsxs)(o.p,{children:["Use a ",(0,n.jsx)(o.code,{children:"\x3c!--"})," ",(0,n.jsx)(o.code,{children:"truncate"})," ",(0,n.jsx)(o.code,{children:"--\x3e"})," comment to limit blog post size in the list view."]})]})}function g(t={}){const{wrapper:o}={...(0,s.R)(),...t.components};return o?(0,n.jsx)(o,{...t,children:(0,n.jsx)(c,{...t})}):c(t)}},8453:(t,o,e)=>{e.d(o,{R:()=>r,x:()=>i});var n=e(6540);const s={},l=n.createContext(s);function r(t){const o=n.useContext(l);return n.useMemo((function(){return"function"==typeof t?t(o):{...o,...t}}),[o,t])}function i(t){let o;return o=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:r(t.components),n.createElement(l.Provider,{value:o},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/8777.f91db9c9.js b/assets/js/8777.f91db9c9.js new file mode 100644 index 0000000..e997c9e --- /dev/null +++ b/assets/js/8777.f91db9c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8777],{8777:(e,t,r)=>{r.d(t,{A:()=>C_});var a='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 700 700" width="700" height="700" opacity="1">\n <defs>\n <filter id="nnnoise-filter" x="-20%" y="-20%" width="140%" height="140%" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="linearRGB">\n <feTurbulence type="turbulence" baseFrequency="0.102" numOctaves="4" seed="15" stitchTiles="stitch" x="0%" y="0%" width="100%" height="100%" result="turbulence"></feTurbulence>\n <feSpecularLighting surfaceScale="15" specularConstant="0.75" specularExponent="20" lighting-color="#9013fe" x="0%" y="0%" width="100%" height="100%" in="turbulence" result="specularLighting">\n <feDistantLight azimuth="3" elevation="100"></feDistantLight>\n </feSpecularLighting>\n\n </filter></defs><rect width="700" height="700" fill="#fafafa00"></rect><rect width="700" height="700" fill="#9013fe" filter="url(#nnnoise-filter)"></rect></svg>',i='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 1422 800"><g shape-rendering="crispEdges" stroke-linejoin="round" fill="none" stroke-width="2" stroke="#555555"><polygon points="1422,200 1066.5,200 1422,0"></polygon><polygon points="888.75,100 1066.5,100 1066.5,0"></polygon><polygon points="888.75,100 888.75,0 711,0"></polygon><polygon points="711,200 888.75,200 888.75,100"></polygon><polygon points="888.75,200 888.75,100 1066.5,100"></polygon><polygon points="1066.5,200 1066.5,300 888.75,300"></polygon><polygon points="888.75,300 888.75,200 711,300"></polygon><polygon points="888.75,300 711,300 888.75,400"></polygon><polygon points="977.625,300 1066.5,350 1066.5,300"></polygon><polygon points="977.625,300 888.75,300 977.625,350"></polygon><polygon points="977.625,400 888.75,350 888.75,400"></polygon><polygon points="1066.5,350 977.625,350 977.625,400"></polygon><polygon points="1422,300 1244.25,300 1244.25,200"></polygon><polygon points="1244.25,200 1155.375,200 1155.375,250"></polygon><polygon points="1066.5,250 1155.375,250 1155.375,200"></polygon><polygon points="1155.375,250 1155.375,300 1066.5,300"></polygon><polygon points="1155.375,300 1244.25,250 1244.25,300"></polygon><polygon points="1244.25,300 1244.25,400 1066.5,300"></polygon><polygon points="1244.25,400 1422,400 1422,300"></polygon><polygon points="711,0 533.25,100 533.25,0"></polygon><polygon points="533.25,100 533.25,0 355.5,0"></polygon><polygon points="533.25,100 444.375,150 533.25,150"></polygon><polygon points="355.5,100 444.375,150 355.5,150"></polygon><polygon points="444.375,150 444.375,200 355.5,150"></polygon><polygon points="444.375,200 533.25,150 533.25,200"></polygon><polygon points="711,200 711,100 533.25,100"></polygon><polygon points="0,0 355.5,200 0,200"></polygon><polygon points="177.75,200 355.5,300 355.5,200"></polygon><polygon points="0,300 0,200 177.75,300"></polygon><polygon points="177.75,400 177.75,300 0,300"></polygon><polygon points="355.5,300 355.5,400 177.75,400"></polygon><polygon points="711,200 533.25,200 711,300"></polygon><polygon points="533.25,200 355.5,200 533.25,300"></polygon><polygon points="355.5,300 533.25,400 355.5,400"></polygon><polygon points="622.125,300 711,350 622.125,350"></polygon><polygon points="622.125,300 622.125,350 533.25,300"></polygon><polygon points="622.125,350 622.125,400 533.25,400"></polygon><polygon points="711,350 711,400 622.125,400"></polygon><polygon points="711,450 622.125,450 711,400"></polygon><polygon points="622.125,400 533.25,400 533.25,450"></polygon><polygon points="622.125,500 622.125,450 533.25,450"></polygon><polygon points="711,450 622.125,450 711,500"></polygon><polygon points="444.375,450 533.25,400 444.375,400"></polygon><polygon points="444.375,450 444.375,400 355.5,450"></polygon><polygon points="444.375,450 355.5,450 444.375,500"></polygon><polygon points="533.25,450 444.375,500 444.375,450"></polygon><polygon points="533.25,600 355.5,500 355.5,600"></polygon><polygon points="711,600 711,500 533.25,500"></polygon><polygon points="355.5,400 355.5,500 177.75,400"></polygon><polygon points="177.75,400 0,500 0,400"></polygon><polygon points="0,600 0,500 177.75,600"></polygon><polygon points="177.75,500 355.5,600 355.5,500"></polygon><polygon points="355.5,700 355.5,600 177.75,600"></polygon><polygon points="177.75,600 177.75,700 0,700"></polygon><polygon points="177.75,800 177.75,700 0,700"></polygon><polygon points="355.5,700 355.5,800 177.75,700"></polygon><polygon points="533.25,600 711,700 711,600"></polygon><polygon points="355.5,600 533.25,700 355.5,700"></polygon><polygon points="533.25,800 533.25,700 355.5,700"></polygon><polygon points="711,800 711,700 533.25,800"></polygon><polygon points="1244.25,400 1422,400 1422,500"></polygon><polygon points="1066.5,400 1244.25,500 1244.25,400"></polygon><polygon points="1244.25,600 1066.5,600 1066.5,500"></polygon><polygon points="1244.25,600 1422,500 1422,600"></polygon><polygon points="888.75,500 888.75,400 1066.5,400"></polygon><polygon points="888.75,500 711,500 711,400"></polygon><polygon points="888.75,550 888.75,500 799.875,550"></polygon><polygon points="799.875,550 711,550 711,500"></polygon><polygon points="799.875,600 711,550 799.875,550"></polygon><polygon points="888.75,550 888.75,600 799.875,550"></polygon><polygon points="1066.5,500 1066.5,600 888.75,600"></polygon><polygon points="1066.5,600 888.75,700 888.75,600"></polygon><polygon points="888.75,700 711,700 711,600"></polygon><polygon points="888.75,800 711,700 888.75,700"></polygon><polygon points="1066.5,700 1066.5,800 888.75,800"></polygon><polygon points="1066.5,600 1422,800 1422,600"></polygon></g><g fill="hsl(220, 62%, 45%)" stroke-width="3" stroke="hsl(220, 43%, 13%)"></g></svg>',n='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><filter id="bbblurry-filter" x="-100%" y="-100%" width="400%" height="400%" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">\n <feGaussianBlur stdDeviation="40" x="0%" y="0%" width="100%" height="100%" in="SourceGraphic" edgeMode="none" result="blur"></feGaussianBlur></filter></defs><g filter="url(#bbblurry-filter)"><ellipse rx="150" ry="150" cx="480.2749546822011" cy="522.7053198219844" fill="hsla(0, 0%, 82%, 1.00)"></ellipse><ellipse rx="150" ry="150" cx="408.35757076303446" cy="306.69744219029485" fill="hsla(0, 0%, 73%, 1.00)"></ellipse><ellipse rx="150" ry="150" cx="573.4834909452665" cy="492.0339400445383" fill="hsla(0, 0%, 47%, 1.00)"></ellipse></g></svg>',o='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="ccchaos-grad"><stop stop-color="hsl(206, 1%, 81%)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsl(0, 0%, 22%)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><g stroke-width="2" stroke="url(#ccchaos-grad)" fill="none" stroke-linecap="round"><path d="M383.62 112.25C393.11 115.52 402.64 119.18 412.22 123.05 421.82 126.56 431.49 130.04 441.21 133.4 450.99 136.14 460.86 138.67 470.83 141.01 480.89 142.73 491.07 144.34 501.38 145.91 511.8 147.08 522.36 148.39 533.02 149.96 543.79 151.42 554.64 153.33 565.52 155.76 576.41 158.35 587.24 161.6 597.89 165.53 608.39 169.8 618.56 174.79 628.25 180.49 637.54 186.57 646.14 193.32 653.87 200.69 660.95 208.39 666.96 216.62 671.78 225.31 675.75 234.25 678.42 243.56 679.74 253.14 680.24 262.9 679.48 272.86 677.53 282.96 675.09 293.16 671.78 303.45 667.79 313.77 663.93 324.14 659.88 334.52 655.88 344.86 652.74 355.23 650.13 365.54 648.28 375.75 647.81 385.98 648.34 396.1 649.92 406.06 652.95 416.02 656.79 425.58 661.2 434.7 666.49 443.8 671.85 452.45 676.98 460.62 682.19 468.75 686.64 476.39 690.11 483.53 692.96 490.63 694.48 497.22 694.57 503.33 693.69 509.44 691.29 515.11 687.45 520.39 682.62 525.78 676.47 530.89 669.17 535.8 661.14 541.02 652.21 546.21 642.57 551.49 632.55 557.31 622.07 563.42 611.32 569.92 600.49 577.17 589.57 584.95 578.67 593.3 567.9 602.43 557.24 612.11 546.75 622.27 536.47 632.94 526.37 643.83 516.45 654.7 506.74 665.51 497.18 675.83 487.74 685.32 478.47 693.99 469.26 701.31 460.1 706.96 451.04 711.17 441.97 713.39 432.87 713.5 423.81 712.06 414.69 708.63 405.5 703.39 396.32 697.2 387.05 689.81 377.71 681.63 368.36 673.68 359.15 665.96 350.12 658.87 341.08 653.07 332.23 648.37 323.58 644.88 314.96 643.05 306.56 642.38 298.43 642.72 290.33 644.35 282.51 646.53 275 648.97 267.53 651.94 260.37 654.59 253.56 656.66 246.77 658.49 240.31 659.31 234.2 658.98 228.08 657.91 222.28 655.53 216.79 651.84 211.23 647.29 205.95 641.5 200.93 634.6 195.77 626.98 190.82 618.45 186.08 609.17 181.12 599.43 176.33 589.17 171.7 578.54 166.82 567.71 162.07 556.68 157.48 545.57 152.65 534.42 147.99 523.3 143.53 512.26 138.89 501.27 134.5 490.39 130.42 479.68 126.27 469.03 122.5 458.52 119.17 448.18 115.91 437.89 113.17 427.74 111.03 417.74 109.07 407.77 107.78 397.92 107.21 388.22 106.91 378.52 107.37 369.19 108.56 360.22 110.02 351.25 112.18 342.64 114.99 334.41 118 326.16 121.6 318.29 125.72 310.79 129.94 303.27 134.6 296.12 139.65 289.34 144.66 282.49 149.98 275.98 155.56 269.78 160.99 263.45 166.62 257.38 172.41 251.52 178 245.44 183.72 239.49 189.57 233.64 195.19 227.46 200.94 221.28 206.82 215.06 212.5 208.45 218.34 201.75 224.36 194.96 230.21 187.77 236.29 180.51 242.59 173.21 248.79 165.64 255.25 158.16 261.99 150.86 268.66 143.54 275.63 136.59 282.9 130.17 290.14 124.04 297.68 118.64 305.53 114.12 313.36 110.16 321.49 107.23 329.9 105.4 338.3 104.23 346.99 104.16 355.95 105.16 364.9 106.67 374.12 109.07 383.61 112.25" stroke-dasharray="1 3" transform="rotate(0, 400, 400)" opacity="0.69"></path><path d="M387.47 123.2C396.67 126.44 405.96 130.05 415.32 133.88 424.7 137.38 434.17 140.88 443.73 144.27 453.33 147.09 463.04 149.73 472.84 152.18 482.72 154.03 492.72 155.76 502.82 157.44 513 158.69 523.29 160.05 533.63 161.59 544.03 162.97 554.44 164.72 564.81 166.91 575.13 169.19 585.32 172.05 595.25 175.51 604.97 179.24 614.3 183.64 623.08 188.69 631.44 194.07 639.09 200.1 645.86 206.72 652 213.65 657.12 221.13 661.1 229.07 664.32 237.27 666.34 245.85 667.15 254.75 667.26 263.83 666.26 273.15 664.22 282.65 661.81 292.26 658.67 301.99 654.96 311.78 651.44 321.63 647.79 331.51 644.23 341.36 641.48 351.25 639.24 361.09 637.67 370.83 637.37 380.59 637.96 390.24 639.48 399.73 642.33 409.22 645.88 418.31 649.95 426.97 654.85 435.63 659.81 443.85 664.59 451.62 669.49 459.38 673.74 466.68 677.13 473.53 680.03 480.37 681.74 486.79 682.18 492.79 681.77 498.85 679.99 504.56 676.86 509.98 672.84 515.57 667.57 520.98 661.18 526.29 654.07 531.94 646.05 537.65 637.29 543.51 628.1 549.91 618.4 556.62 608.32 563.72 598.11 571.48 587.7 579.73 577.23 588.46 566.81 597.83 556.41 607.63 546.12 617.74 535.98 628.21 525.96 638.74 516.09 649.09 506.4 659.27 496.84 668.84 487.4 677.52 478.12 685.35 468.91 691.84 459.79 696.73 450.75 700.26 441.75 701.94 432.76 701.68 423.83 700.02 414.88 696.55 405.91 691.44 396.96 685.5 387.97 678.46 378.95 670.68 369.94 663.11 361.1 655.73 352.47 648.87 343.84 643.16 335.41 638.42 327.22 634.75 319.03 632.58 311.09 631.47 303.42 631.3 295.76 632.37 288.39 634 281.32 635.95 274.26 638.49 267.51 640.86 261.08 642.8 254.64 644.65 248.52 645.68 242.71 645.75 236.86 645.25 231.3 643.59 226.02 640.77 220.64 637.19 215.51 632.46 210.61 626.66 205.56 620.19 200.69 612.79 196 604.62 191.1 595.96 186.34 586.71 181.73 577.01 176.87 567.05 172.15 556.8 167.57 546.38 162.77 535.87 158.13 525.28 153.69 514.72 149.08 504.15 144.73 493.64 140.68 483.25 136.57 472.9 132.84 462.66 129.54 452.59 126.31 442.54 123.6 432.63 121.47 422.89 119.52 413.17 118.23 403.59 117.64 394.18 117.33 384.77 117.75 375.74 118.89 367.08 120.3 358.41 122.39 350.11 125.12 342.18 128.06 334.22 131.57 326.62 135.6 319.38 139.73 312.09 144.31 305.13 149.26 298.51 154.21 291.79 159.46 285.36 164.96 279.19 170.35 272.87 175.94 266.75 181.7 260.78 187.27 254.59 192.97 248.48 198.8 242.42 204.41 236.05 210.15 229.65 216 223.21 221.65 216.4 227.45 209.52 233.41 202.57 239.19 195.28 245.17 187.96 251.35 180.65 257.41 173.15 263.71 165.78 270.25 158.65 276.71 151.57 283.44 144.9 290.45 138.78 297.41 132.98 304.66 127.93 312.2 123.74 319.71 120.11 327.52 117.47 335.61 115.87 343.68 114.91 352.05 114.99 360.69 116.08 369.33 117.65 378.25 120.05 387.46 123.2" stroke-dasharray="10 4" transform="rotate(4.04, 400, 400)" opacity="0.29"></path><path d="M391.94 134.15C400.88 137.34 409.92 140.91 419.04 144.69 428.18 148.17 437.43 151.67 446.76 155.09 456.14 157.98 465.62 160.71 475.2 163.27 484.83 165.25 494.56 167.12 504.36 168.92 514.21 170.27 524.12 171.69 534.03 173.25 543.96 174.6 553.84 176.24 563.61 178.26 573.29 180.29 582.75 182.82 591.9 185.89 600.81 189.14 609.26 193 617.13 197.46 624.58 202.19 631.29 207.54 637.15 213.44 642.42 219.64 646.7 226.36 649.93 233.55 652.5 240.99 653.97 248.83 654.35 257.01 654.16 265.36 652.98 274 650.92 282.83 648.59 291.79 645.65 300.9 642.24 310.1 639.07 319.37 635.82 328.7 632.67 338.02 630.3 347.38 628.38 356.71 627.08 365.95 626.94 375.22 627.58 384.39 629.04 393.41 631.71 402.43 635 411.08 638.74 419.35 643.25 427.6 647.83 435.45 652.26 442.91 656.86 450.36 660.88 457.41 664.17 464.08 667.06 470.76 668.91 477.1 669.63 483.11 669.63 489.21 668.38 495.06 665.89 500.71 662.61 506.55 658.15 512.31 652.62 518.06 646.41 524.15 639.3 530.36 631.42 536.77 623.09 543.68 614.19 550.9 604.86 558.49 595.33 566.65 585.54 575.22 575.59 584.18 565.63 593.64 555.62 603.4 545.64 613.33 535.75 623.47 525.93 633.53 516.23 643.29 506.65 652.77 497.18 661.57 487.84 669.42 478.61 676.43 469.48 682.12 460.43 686.28 451.48 689.19 442.58 690.38 433.73 689.79 424.93 687.94 416.16 684.47 407.41 679.5 398.68 673.8 389.96 667.11 381.25 659.73 372.55 652.54 364.06 645.48 355.8 638.87 347.53 633.28 339.5 628.52 331.71 624.7 323.92 622.24 316.39 620.74 309.13 620.1 301.87 620.62 294.88 621.71 288.2 623.16 281.5 625.25 275.09 627.28 268.99 629.01 259.93 631.36 243.14 631.64 235.34 628.99 230.11 626.27 225.1 622.48 220.29 617.69 215.31 612.28 210.5 605.98 205.84 598.88 200.98 591.31 196.24 583.1 191.64 574.38 186.81 565.36 182.1 555.98 177.53 546.35 172.76 536.58 168.15 526.66 163.73 516.68 159.17 506.66 154.86 496.64 150.85 486.68 146.8 476.73 143.11 466.87 139.86 457.12 136.68 447.4 134 437.81 131.89 428.36 129.97 418.93 128.68 409.64 128.08 400.52 127.75 391.4 128.14 382.65 129.22 374.27 130.57 365.87 132.58 357.83 135.22 350.13 138.07 342.41 141.48 335.01 145.41 327.94 149.44 320.82 153.91 313.99 158.77 307.44 163.62 300.78 168.79 294.36 174.22 288.16 179.55 281.78 185.09 275.56 190.79 269.46 196.33 263.12 202.02 256.83 207.82 250.56 213.42 244 219.14 237.4 224.98 230.76 230.62 223.8 236.39 216.79 242.31 209.73 248.04 202.4 253.96 195.08 260.05 187.83 266 180.45 272.17 173.26 278.56 166.35 284.86 159.54 291.4 153.18 298.2 147.4 304.93 141.96 311.94 137.26 319.22 133.41 326.46 130.11 333.99 127.75 341.8 126.4 349.58 125.63 357.65 125.85 366.01 127.03 374.35 128.63 382.99 131.04 391.93 134.15" stroke-dasharray="9 4" transform="rotate(8.08, 400, 400)" opacity="0.95"></path><path d="M396.82 145.1C405.49 148.24 414.26 151.75 423.12 155.47 432 158.93 440.98 162.42 450.05 165.86 459.15 168.8 468.35 171.62 477.62 174.28 486.93 176.4 496.31 178.4 505.72 180.32 515.16 181.8 524.61 183.31 534.01 184.91 543.38 186.27 552.65 187.87 561.75 189.76 570.72 191.61 579.42 193.89 587.74 196.62 595.81 199.48 603.39 202.87 610.36 206.81 616.92 210.96 622.75 215.67 627.76 220.91 632.22 226.4 635.76 232.4 638.33 238.86 640.32 245.54 641.34 252.63 641.37 260.08 640.96 267.7 639.69 275.62 637.65 283.76 635.45 292.03 632.73 300.48 629.63 309.05 626.81 317.7 623.94 326.43 621.2 335.18 619.18 343.98 617.58 352.77 616.52 361.51 616.51 370.27 617.2 378.95 618.61 387.52 621.1 396.09 624.13 404.33 627.56 412.23 631.71 420.12 635.91 427.67 640 434.87 644.27 442.08 648.07 448.96 651.21 455.53 654.07 462.14 656 468.47 656.94 474.57 657.27 480.77 656.48 486.81 654.57 492.74 651.95 498.87 648.23 505 643.51 511.17 638.15 517.68 631.91 524.34 624.9 531.22 617.44 538.55 609.37 546.18 600.83 554.12 592.05 562.55 582.93 571.3 573.59 580.34 564.18 589.74 554.66 599.32 545.1 608.95 535.58 618.65 526.07 628.15 516.63 637.25 507.28 645.98 498 653.98 488.83 661.02 479.74 667.22 470.75 672.15 461.85 675.63 453.03 677.96 444.27 678.71 435.6 677.83 426.97 675.84 418.39 672.38 409.87 667.56 401.36 662.12 392.9 655.77 384.49 648.78 376.08 641.96 367.91 635.24 359.99 628.88 352.07 623.41 344.39 618.66 336.97 614.74 329.53 612.02 322.36 610.16 315.46 609.09 308.55 609.11 301.91 609.69 295.54 610.64 289.16 612.25 283.05 613.89 277.21 615.36 268.52 617.53 252.3 618.46 244.7 616.62 239.58 614.59 234.65 611.62 229.9 607.72 224.98 603.29 220.2 597.99 215.57 591.92 210.73 585.4 206.01 578.22 201.41 570.49 196.6 562.46 191.91 554 187.35 545.22 182.62 536.27 178.04 527.1 173.66 517.8 169.16 508.43 164.9 499 160.94 489.57 156.95 480.12 153.33 470.7 150.12 461.38 147 452.05 144.37 442.82 142.29 433.72 140.41 424.63 139.13 415.65 138.52 406.83 138.17 398.01 138.52 389.53 139.54 381.4 140.83 373.25 142.76 365.42 145.3 357.92 148.05 350.38 151.35 343.14 155.15 336.19 159.07 329.17 163.43 322.4 168.16 315.87 172.92 309.23 177.98 302.77 183.31 296.49 188.57 290.03 194.04 283.68 199.68 277.42 205.18 270.93 210.83 264.46 216.6 258 222.19 251.28 227.9 244.52 233.72 237.73 239.35 230.67 245.1 223.57 250.98 216.47 256.7 209.17 262.56 201.92 268.58 194.78 274.47 187.59 280.54 180.62 286.81 173.99 292.98 167.49 299.38 161.48 306 156.05 312.56 150.99 319.36 146.66 326.42 143.15 333.44 140.17 340.72 138.09 348.27 136.97 355.8 136.39 363.61 136.74 371.7 137.99 379.77 139.63 388.14 142.03 396.81 145.1" stroke-dasharray="2 6" transform="rotate(12.12, 400, 400)" opacity="0.86"></path><path d="M401.86 156.05C410.25 159.14 418.74 162.57 427.31 166.23 435.9 169.65 444.59 173.12 453.34 176.57 462.12 179.56 470.97 182.45 479.87 185.2 488.79 187.45 497.75 189.58 506.7 191.63 515.64 193.24 524.55 194.87 533.37 196.55 542.12 197.95 550.72 199.54 559.1 201.37 567.32 203.1 575.23 205.18 582.73 207.66 589.96 210.19 596.67 213.2 602.78 216.68 608.5 220.32 613.51 224.47 617.73 229.11 621.47 233.95 624.35 239.27 626.35 245.04 627.86 251 628.5 257.37 628.28 264.09 627.71 270.98 626.4 278.18 624.44 285.63 622.4 293.2 619.93 300.97 617.15 308.9 614.68 316.89 612.18 325.01 609.81 333.18 608.13 341.39 606.82 349.63 605.98 357.86 606.1 366.1 606.83 374.31 608.17 382.44 610.49 390.58 613.28 398.44 616.41 406.01 620.21 413.58 624.06 420.87 627.8 427.88 631.76 434.9 635.31 441.67 638.29 448.2 641.07 454.78 643.05 461.17 644.14 467.39 644.74 473.74 644.33 480 642.92 486.21 640.89 492.63 637.85 499.09 633.87 505.65 629.31 512.51 623.89 519.55 617.73 526.81 611.12 534.44 603.89 542.34 596.16 550.5 588.15 559.04 579.76 567.82 571.1 576.79 562.32 586 553.37 595.27 544.32 604.48 535.26 613.64 526.16 622.51 517.08 630.9 508.05 638.87 499.05 646.06 490.14 652.3 481.29 657.72 472.51 661.93 463.82 664.78 455.19 666.58 446.64 666.93 438.17 665.81 429.74 663.71 421.38 660.28 413.1 655.64 404.84 650.45 396.63 644.44 388.51 637.83 380.39 631.38 372.52 624.98 364.91 618.88 357.3 613.56 349.94 608.85 342.84 604.85 335.72 601.93 328.87 599.76 322.28 598.3 315.67 597.85 309.32 597.93 303.23 598.39 294.17 600.14 277.23 603.78 269.3 604.8 261.45 605.01 246.53 601.14 239.38 596.86 234.5 593.28 229.75 588.89 225.13 583.77 220.31 578.23 215.6 572.04 211.01 565.28 206.22 558.22 201.55 550.7 197.02 542.8 192.33 534.72 187.8 526.36 183.47 517.81 179.03 509.16 174.84 500.38 170.95 491.55 167.04 482.68 163.49 473.8 160.34 464.94 157.3 456.08 154.72 447.27 152.68 438.55 150.83 429.83 149.57 421.21 148.95 412.69 148.59 404.18 148.91 395.97 149.87 388.08 151.09 380.16 152.93 372.53 155.36 365.19 158 357.81 161.18 350.68 164.84 343.8 168.64 336.85 172.86 330.11 177.45 323.56 182.09 316.9 187.03 310.39 192.25 304 197.41 297.45 202.79 290.97 208.36 284.55 213.8 277.93 219.4 271.31 225.12 264.7 230.69 257.86 236.37 250.99 242.16 244.1 247.78 237 253.52 229.9 259.37 222.83 265.06 215.62 270.89 208.5 276.85 201.55 282.69 194.59 288.69 187.91 294.87 181.58 300.94 175.45 307.22 169.8 313.7 164.75 320.11 160.08 326.75 156.12 333.62 152.95 340.44 150.29 347.51 148.49 354.84 147.59 362.13 147.19 369.7 147.66 377.53 148.98 385.35 150.65 393.46 153.03 401.85 156.05" stroke-dasharray="8 1" transform="rotate(16.16, 400, 400)" opacity="0.10"></path><path d="M406.8 167C414.91 170.02 423.1 173.38 431.35 176.97 439.62 180.34 447.96 183.78 456.36 187.21 464.76 190.25 473.21 193.19 481.68 196.03 490.15 198.39 498.62 200.66 507.05 202.83 515.44 204.59 523.76 206.34 531.94 208.11 540.03 209.6 547.92 211.22 555.55 213.03 563.01 214.7 570.12 216.66 576.8 218.95 583.21 221.23 589.11 223.93 594.4 227.03 601.46 232.07 611.36 244.63 614.04 252.12 615.16 257.41 615.51 263.1 615.11 269.14 614.45 275.32 613.16 281.82 611.32 288.59 609.46 295.46 607.25 302.56 604.8 309.85 602.67 317.19 600.53 324.69 598.52 332.28 597.14 339.9 596.1 347.6 595.47 355.32 595.7 363.05 596.45 370.79 597.73 378.51 599.89 386.22 602.45 393.73 605.3 401.01 608.75 408.29 612.26 415.35 615.67 422.21 619.32 429.09 622.6 435.78 625.41 442.3 628.08 448.89 630.05 455.35 631.25 461.72 632.05 468.21 631.96 474.68 630.97 481.15 629.45 487.82 627.01 494.57 623.71 501.43 619.88 508.57 615.24 515.88 609.88 523.39 604.1 531.2 597.7 539.24 590.77 547.48 583.56 555.99 575.93 564.66 567.99 573.41 559.89 582.3 551.57 591.15 543.11 599.83 534.59 608.39 525.98 616.57 517.35 624.21 508.72 631.4 500.1 637.8 491.53 643.25 482.99 647.93 474.5 651.46 466.09 653.73 457.72 655.06 449.42 655.07 441.2 653.74 433.02 651.56 424.91 648.18 416.89 643.72 408.88 638.79 400.95 633.11 393.11 626.88 385.26 620.79 377.68 614.72 370.37 608.88 363.04 603.73 355.97 599.08 349.17 595.03 342.34 591.94 335.76 589.51 329.44 587.71 323.09 586.83 316.98 586.44 311.13 586.44 302.39 587.49 285.96 590.18 278.22 591.04 270.52 591.38 255.79 588.6 248.69 585.21 243.83 582.36 239.1 578.76 234.48 574.47 229.69 569.84 224.99 564.56 220.41 558.72 215.66 552.59 211.02 545.98 206.53 538.97 201.89 531.76 197.42 524.23 193.15 516.46 188.79 508.58 184.69 500.51 180.87 492.33 177.05 484.09 173.59 475.79 170.52 467.46 167.55 459.12 165.05 450.78 163.05 442.47 161.25 434.17 160.01 425.92 159.39 417.73 159.02 409.54 159.29 401.62 160.19 393.95 161.34 386.27 163.09 378.83 165.4 371.62 167.92 364.38 170.96 357.36 174.48 350.53 178.13 343.63 182.2 336.9 186.65 330.32 191.14 323.63 195.95 317.05 201.03 310.57 206.08 303.94 211.35 297.36 216.81 290.81 222.18 284.09 227.7 277.37 233.36 270.65 238.88 263.75 244.53 256.83 250.27 249.92 255.87 242.85 261.58 235.81 267.4 228.84 273.07 221.8 278.87 214.88 284.79 208.17 290.58 201.51 296.53 195.15 302.62 189.18 308.62 183.43 314.79 178.18 321.15 173.53 327.44 169.24 333.93 165.66 340.63 162.84 347.28 160.49 354.16 158.96 361.28 158.27 368.36 158.04 375.7 158.62 383.28 159.99 390.85 161.68 398.69 164.04 406.79 167" stroke-dasharray="5 5" transform="rotate(20.200000000000003, 400, 400)" opacity="0.99"></path><path d="M411.41 177.95C419.21 180.9 427.07 184.18 434.98 187.68 442.9 190.99 450.86 194.39 458.85 197.8 466.84 200.86 474.85 203.85 482.84 206.75 490.81 209.22 498.75 211.61 506.6 213.91 514.4 215.81 522.09 217.69 529.59 219.58 537 221.17 544.17 222.86 551.04 224.69 557.74 226.35 564.07 228.24 569.95 230.4 578.15 233.75 591.26 242.28 595.95 247.57 599.42 253.42 602.35 267.29 601.91 275.23 601.21 280.76 599.99 286.6 598.3 292.72 596.65 298.93 594.72 305.39 592.59 312.05 590.78 318.77 588.99 325.66 587.31 332.68 586.22 339.73 585.42 346.89 584.98 354.12 585.31 361.36 586.08 368.65 587.3 375.97 589.3 383.29 591.64 390.46 594.22 397.47 597.35 404.49 600.52 411.36 603.62 418.08 606.95 424.83 609.97 431.47 612.59 437.99 615.12 444.59 617.05 451.12 618.31 457.62 619.25 464.23 619.41 470.87 618.77 477.54 617.69 484.4 615.77 491.35 613.07 498.43 609.9 505.73 605.98 513.2 601.37 520.82 596.37 528.69 590.76 536.72 584.63 544.88 578.21 553.22 571.36 561.64 564.15 570.06 556.78 578.51 549.14 586.84 541.31 594.92 533.39 602.81 525.35 610.26 517.23 617.14 509.09 623.55 500.92 629.17 492.76 633.87 484.61 637.85 476.48 640.76 468.4 642.5 460.36 643.41 452.36 643.11 444.44 641.62 436.55 639.39 428.72 636.09 420.98 631.81 413.26 627.14 405.61 621.79 398.05 615.93 390.49 610.2 383.19 604.45 376.15 598.88 369.1 593.9 362.3 589.34 355.75 585.28 349.17 582.06 342.84 579.41 336.75 577.31 327.68 575.65 310.59 575.17 302.54 575.76 294.57 576.8 279.4 577.71 272.13 577.07 264.81 575.63 250.56 569.19 243.6 564.16 238.83 560.31 234.16 555.85 229.61 550.84 224.9 545.59 220.31 539.84 215.86 533.67 211.3 527.32 206.9 520.62 202.7 513.62 198.45 506.51 194.43 499.18 190.71 491.67 187 484.11 183.63 476.42 180.65 468.65 177.78 460.86 175.35 453.02 173.41 445.17 171.66 437.31 170.45 429.45 169.83 421.61 169.45 413.77 169.68 406.13 170.51 398.7 171.59 391.26 173.24 384 175.43 376.94 177.82 369.84 180.72 362.91 184.07 356.13 187.57 349.3 191.48 342.58 195.75 335.98 200.08 329.28 204.73 322.66 209.65 316.11 214.57 309.43 219.71 302.78 225.04 296.16 230.31 289.39 235.74 282.63 241.3 275.87 246.76 268.97 252.34 262.09 258.03 255.23 263.59 248.27 269.26 241.37 275.02 234.58 280.66 227.76 286.42 221.11 292.29 214.7 298.04 208.38 303.92 202.4 309.94 196.82 315.87 191.47 321.95 186.64 328.2 182.39 334.37 178.51 340.73 175.29 347.28 172.81 353.77 170.77 360.48 169.49 367.39 169 374.27 168.93 381.38 169.61 388.71 171.02 396.03 172.73 403.59 175.06 411.4 177.95" stroke-dasharray="6 8" transform="rotate(24.24, 400, 400)" opacity="0.46"></path><path d="M415.44 188.9C422.92 191.77 430.43 194.96 437.97 198.36 445.5 201.61 453.06 204.96 460.6 208.33 468.15 211.39 475.67 214.41 483.13 217.37 490.58 219.93 497.94 222.42 505.19 224.84 512.38 226.89 519.41 228.9 526.23 230.92 532.94 232.63 539.39 234.41 545.52 236.3 554.27 238.93 569.32 245.12 575.39 248.86 580.47 252.93 587.14 262.9 588.69 268.84 589.27 275.26 587.48 289.92 585.41 298.07 583.99 303.66 582.33 309.51 580.52 315.59 579.03 321.71 577.56 328.03 576.19 334.51 575.37 341.01 574.79 347.66 574.51 354.42 574.92 361.18 575.7 368.05 576.86 374.99 578.71 381.94 580.84 388.79 583.17 395.55 585.99 402.32 588.85 409 591.64 415.6 594.66 422.22 597.42 428.79 599.82 435.31 602.19 441.9 604.05 448.47 605.32 455.05 606.35 461.74 606.7 468.48 606.34 475.28 605.62 482.24 604.16 489.3 601.98 496.47 599.41 503.82 596.14 511.31 592.21 518.92 587.94 526.69 583.09 534.58 577.71 542.53 572.06 550.58 565.97 558.62 559.51 566.59 552.87 574.52 545.94 582.25 538.77 589.67 531.51 596.85 524.08 603.55 516.53 609.66 508.94 615.3 501.28 620.17 493.59 624.16 485.89 627.49 478.19 629.82 470.51 631.09 462.84 631.62 455.2 631.08 447.63 629.45 440.06 627.2 432.56 623.99 425.13 619.91 417.71 615.51 410.35 610.48 403.09 604.98 395.82 599.6 388.8 594.17 382.02 588.88 375.24 584.09 368.69 579.64 362.38 575.6 356.04 572.29 349.93 569.46 344.04 567.11 335.26 564.92 318.65 563.18 310.78 563.17 302.98 563.7 288.02 564.11 280.82 563.52 273.55 562.37 259.38 557.14 252.45 552.96 247.72 549.77 243.09 546.02 238.57 541.75 233.92 537.27 229.4 532.31 225.02 526.93 220.54 521.38 216.24 515.46 212.14 509.22 207.99 502.87 204.09 496.26 200.47 489.44 196.88 482.55 193.62 475.49 190.74 468.3 187.97 461.09 185.62 453.77 183.75 446.39 182.06 439 180.88 431.56 180.26 424.09 179.88 416.61 180.08 409.28 180.84 402.1 181.84 394.91 183.38 387.86 185.44 380.95 187.7 374.01 190.45 367.19 193.63 360.48 196.96 353.72 200.69 347.05 204.77 340.45 208.93 333.78 213.4 327.16 218.14 320.58 222.9 313.9 227.88 307.25 233.06 300.61 238.2 293.87 243.51 287.13 248.95 280.42 254.32 273.61 259.81 266.82 265.41 260.1 270.91 253.32 276.51 246.64 282.21 240.09 287.8 233.57 293.5 227.25 299.3 221.19 305 215.27 310.81 209.68 316.75 204.52 322.6 199.61 328.59 195.2 334.72 191.36 340.79 187.88 347.01 185.03 353.4 182.88 359.75 181.13 366.27 180.09 372.98 179.79 379.66 179.86 386.53 180.63 393.61 182.08 400.67 183.79 407.95 186.08 415.43 188.89" stroke-dasharray="10 3" transform="rotate(28.28, 400, 400)" opacity="0.14"></path><path d="M418.69 199.85C425.83 202.64 432.98 205.72 440.11 209.03 447.24 212.2 454.36 215.47 461.43 218.8 468.5 221.85 475.51 224.88 482.43 227.87 489.32 230.51 496.1 233.1 502.72 235.62 509.29 237.8 515.66 239.95 521.8 242.08 530.71 244.88 546.71 250.51 553.61 253.54 564.46 260.25 574.61 272.96 575.78 278.31 576.16 284.06 574.47 297.21 572.67 304.57 570.79 312.27 566.82 328.93 565.16 337.8 564.57 343.79 564.19 349.96 564.06 356.28 564.54 362.6 565.33 369.06 566.42 375.64 568.13 382.23 570.06 388.79 572.15 395.3 574.69 401.82 577.24 408.31 579.73 414.77 582.45 421.26 584.94 427.74 587.13 434.22 589.33 440.75 591.08 447.32 592.33 453.92 593.4 460.61 593.88 467.37 593.74 474.2 593.32 481.15 592.23 488.21 590.5 495.35 588.44 502.63 585.74 510.01 582.44 517.46 578.84 525.03 574.68 532.64 570.02 540.24 565.11 547.89 559.75 555.46 554.02 562.89 548.11 570.21 541.89 577.29 535.41 584 528.82 590.44 522.03 596.39 515.09 601.74 508.09 606.63 500.99 610.79 493.81 614.12 486.62 616.85 479.39 618.67 472.16 619.51 464.92 619.72 457.69 618.97 450.49 617.25 443.31 615 436.15 611.9 429.06 608.03 421.97 603.88 414.93 599.18 407.97 594.03 401 588.99 394.27 583.89 387.75 578.87 381.23 574.28 374.93 569.96 368.84 565.97 362.73 562.61 356.82 559.66 351.12 557.1 342.6 554.45 326.42 551.56 318.71 550.95 311.04 550.95 296.28 550.68 289.14 550.02 281.94 548.99 267.88 544.58 261.01 541.07 254.04 536.82 240.51 525.65 234 518.84 229.63 514.02 225.43 508.82 221.44 503.29 217.43 497.66 213.65 491.75 210.16 485.58 206.7 479.36 203.57 472.92 200.8 466.31 198.13 459.68 195.88 452.9 194.08 446 192.45 439.09 191.31 432.08 190.7 424.99 190.31 417.9 190.47 410.9 191.17 403.99 192.09 397.08 193.52 390.25 195.45 383.52 197.57 376.77 200.15 370.09 203.15 363.48 206.3 356.84 209.84 350.25 213.72 343.71 217.68 337.11 221.96 330.54 226.5 324.01 231.07 317.4 235.87 310.8 240.87 304.23 245.85 297.58 251.01 290.95 256.3 284.37 261.54 277.72 266.92 271.13 272.4 264.62 277.8 258.1 283.31 251.7 288.91 245.47 294.43 239.3 300.04 233.36 305.75 227.71 311.38 222.2 317.11 217.06 322.95 212.33 328.71 207.86 334.59 203.88 340.6 200.46 346.55 197.37 352.63 194.88 358.85 193.04 365.04 191.57 371.38 190.77 377.87 190.64 384.34 190.84 390.98 191.69 397.78 193.17 404.57 194.87 411.54 197.11 418.68 199.84" stroke-dasharray="11 4" transform="rotate(32.32, 400, 400)" opacity="0.36"></path><path d="M421.01 210.8C427.79 213.49 434.54 216.47 441.25 219.67 447.96 222.74 454.61 225.94 461.2 229.2 467.77 232.22 474.25 235.25 480.61 238.26 486.94 240.95 493.13 243.61 499.14 246.22 507.95 249.66 524.22 256.04 531.52 259.12 543.87 265.02 557.43 275.09 560.04 279.16 562.49 288.52 561.59 305.47 560.09 312.13 558.58 319.11 555.47 334.32 554.21 342.5 553.84 348.03 553.63 353.75 553.64 359.66 554.17 365.56 554.95 371.64 555.99 377.88 557.56 384.12 559.3 390.38 561.16 396.64 563.42 402.91 565.69 409.2 567.9 415.5 570.33 421.82 572.56 428.18 574.53 434.56 576.53 440.99 578.15 447.48 579.35 454.02 580.42 460.63 580.98 467.32 581 474.07 580.8 480.92 580.02 487.85 578.67 494.84 577.04 501.93 574.85 509.07 572.1 516.24 569.09 523.47 565.57 530.69 561.56 537.85 557.34 544.99 552.68 552 547.65 558.81 542.45 565.49 536.93 571.86 531.13 577.85 525.22 583.55 519.08 588.76 512.76 593.37 506.39 597.55 499.87 601.04 493.25 603.76 486.6 605.95 479.89 607.3 473.13 607.78 466.37 607.71 459.58 606.79 452.8 605.01 446.02 602.79 439.26 599.81 432.52 596.15 425.8 592.27 419.1 587.88 412.45 583.08 405.81 578.38 399.36 573.59 393.11 568.85 386.86 564.48 380.8 560.31 374.93 556.4 369.04 553.03 363.33 549.98 357.8 547.27 349.54 544.23 333.76 540.31 326.2 539.14 318.67 538.59 304.11 537.54 297.05 536.68 289.94 535.63 276.04 531.7 269.25 528.67 262.4 525.05 249.14 515.47 242.79 509.55 238.55 505.37 234.49 500.82 230.63 495.93 226.76 490.96 223.13 485.69 219.77 480.14 216.46 474.55 213.46 468.71 210.81 462.67 208.27 456.61 206.12 450.35 204.4 443.94 202.83 437.52 201.74 430.96 201.14 424.27 200.74 417.58 200.87 410.93 201.5 404.32 202.34 397.71 203.66 391.14 205.46 384.63 207.43 378.09 209.84 371.6 212.65 365.15 215.61 358.67 218.94 352.22 222.6 345.8 226.36 339.33 230.41 332.89 234.73 326.47 239.09 319.99 243.69 313.54 248.49 307.12 253.28 300.64 258.25 294.21 263.37 287.83 268.45 281.43 273.67 275.1 279 268.89 284.28 262.69 289.66 256.65 295.13 250.8 300.54 245.03 306.04 239.51 311.63 234.3 317.15 229.24 322.77 224.56 328.48 220.29 334.14 216.27 339.89 212.72 345.75 209.7 351.56 207 357.49 204.86 363.53 203.32 369.53 202.11 375.67 201.52 381.93 201.55 388.17 201.87 394.56 202.79 401.07 204.28 407.57 205.96 414.22 208.15 421 210.79" stroke-dasharray="1 4" transform="rotate(36.36, 400, 400)" opacity="0.18"></path><path d="M422.27 221.75C428.67 224.34 435.01 227.21 441.28 230.28 447.55 233.26 453.73 236.36 459.81 239.54 471.94 245.26 483.56 251.02 494.42 256.64 505.06 261.16 514.73 265.65 523.14 270.22 531.09 273.96 537.56 278.13 542.34 282.89 546.54 287.29 549.03 292.58 549.82 298.82 550.34 305.02 549.54 312.29 547.7 320.58 546.43 328.91 544.86 338.24 543.35 348.45 543.14 356.23 544.19 372.79 545.55 381.55 546.99 387.46 548.55 393.42 550.2 399.42 552.21 405.43 554.21 411.49 556.15 417.59 560.6 429.86 564.15 442.38 566.41 455.1 568.37 468.04 568.45 481.28 566.55 494.68 563.8 508.26 559.01 521.87 552.39 535.17 545 548.2 536.05 560.39 525.89 571.17 515.29 580.81 503.81 588.3 491.76 593.09 479.57 596.02 467.01 595.94 454.34 592.75 448 590.57 441.65 587.74 435.3 584.29 428.96 580.67 422.62 576.59 416.31 572.14 410 567.76 403.86 563.29 397.89 558.83 391.91 554.69 386.1 550.68 380.45 546.87 369.1 540.67 358.35 535.52 348.2 531.41 337.86 529.11 328 527.31 318.62 525.6 308.93 524.77 299.6 523.27 290.68 520.75 281.4 518.25 272.47 514.32 264.01 508.9 255.28 503.16 247.1 495.92 239.7 487.34 232.31 478.49 225.92 468.47 220.79 457.49 218.38 451.96 216.34 446.22 214.7 440.3 213.21 434.36 212.16 428.25 211.57 421.97 211.18 415.7 211.27 409.41 211.84 403.13 212.59 396.85 213.81 390.58 215.46 384.32 219.27 371.78 224.68 359.25 231.44 346.81 238.58 334.27 246.83 321.75 255.92 309.39 265.08 296.96 274.92 284.75 285.23 273.01 295.4 261.47 306 250.68 316.91 241.02 327.63 232.05 338.71 224.62 350.11 219.1 361.37 214.71 373.03 212.47 385.06 212.52 391.06 212.95 397.16 213.92 403.36 215.41 409.56 217.07 415.86 219.19 422.26 221.74" stroke-dasharray="7 8" transform="rotate(40.400000000000006, 400, 400)" opacity="0.69"></path><path d="M422.42 232.7C434.42 237.66 446.08 243.51 457.25 249.82 468.37 255.45 478.9 261.19 488.61 266.87 498.12 271.58 506.65 276.28 513.96 281.04 520.89 285.02 526.45 289.33 530.49 294.11 534.1 298.48 536.23 303.59 536.9 309.5 537.45 315.3 536.91 322.03 535.5 329.7 534.68 337.36 533.6 345.96 532.56 355.45 532.89 364.92 533.72 375.27 535.11 386.43 538.11 397.59 541.33 409.07 544.47 420.77 548.39 432.53 551.51 444.6 553.53 456.86 555.4 469.26 555.65 481.9 554.19 494.58 552.08 507.31 548.15 519.91 542.56 532.04 536.31 543.78 528.59 554.58 519.68 563.92 510.37 572.17 500.12 578.38 489.23 582.12 478.18 584.26 466.67 583.72 454.94 580.46 443.18 576 431.27 569.42 419.35 561.19 407.43 553.21 396.05 545.09 385.24 537.39 374.37 531.22 363.99 525.87 354.12 521.36 344.1 518.45 334.47 516.01 325.27 513.71 315.81 512.32 306.68 510.45 297.93 507.82 288.89 505.36 280.2 501.74 271.99 496.86 263.59 491.8 255.74 485.4 248.67 477.75 241.65 469.92 235.59 460.93 230.74 450.95 226.31 440.89 223.32 429.94 222.01 418.24 221.4 406.54 222.61 394.66 225.47 382.76 228.96 370.84 233.96 358.86 240.24 346.93 246.9 334.95 254.64 323 263.21 311.23 271.9 299.49 281.26 288.03 291.11 277.11 300.89 266.47 311.1 256.64 321.61 247.94 331.99 239.94 342.7 233.41 353.67 228.68 364.54 224.97 375.74 223.22 387.21 223.56 398.64 224.8 410.41 227.89 422.41 232.69" stroke-dasharray="4 8" transform="rotate(44.44, 400, 400)" opacity="0.69"></path><path d="M421.44 243.65C432.61 248.39 443.36 253.97 453.55 260.03 463.68 265.53 473.16 271.21 481.8 276.9 490.27 281.74 497.76 286.62 504.11 291.54 512.56 297.98 522.51 311.99 524.1 320.2 524.75 325.72 524.49 332.06 523.5 339.23 523.11 346.34 522.48 354.34 521.85 363.18 522.42 372 523.35 381.68 524.68 392.18 527.38 402.69 530.19 413.57 532.88 424.69 536.28 435.86 538.98 447.33 540.74 458.96 542.46 470.66 542.8 482.5 541.66 494.28 540.04 506 536.83 517.46 532.13 528.32 526.89 538.73 520.29 548.12 512.53 556.07 504.42 563.01 495.36 568.06 485.61 570.87 475.69 572.33 465.25 571.43 454.47 568.16 443.66 563.92 432.59 557.83 421.42 550.24 410.24 542.87 399.47 535.28 389.16 527.95 378.8 521.88 368.83 516.41 359.29 511.62 349.62 508.21 340.28 505.19 331.31 502.36 322.13 500.41 313.26 498.13 304.74 495.29 296.01 492.73 287.63 489.24 279.73 484.7 271.71 480.12 264.24 474.37 257.53 467.49 250.91 460.49 245.21 452.4 240.67 443.33 236.51 434.2 233.7 424.17 232.45 413.32 231.83 402.48 232.89 391.37 235.48 380.16 238.65 368.96 243.24 357.64 249.02 346.35 255.18 335.07 262.37 323.83 270.38 312.81 278.54 301.89 287.37 291.31 296.69 281.32 305.99 271.65 315.73 262.81 325.75 255.11 335.71 248.06 345.96 242.42 356.43 238.45 366.84 235.37 377.51 234.07 388.36 234.67 399.2 236.02 410.26 239.05 421.44 243.65" stroke-dasharray="1 10" transform="rotate(48.48, 400, 400)" opacity="0.80"></path><path d="M419.38 254.6C429.71 259.09 439.54 264.39 448.77 270.18 457.95 275.52 466.44 281.08 474.1 286.72 481.61 291.64 488.2 296.64 493.72 301.69 501.11 308.41 509.9 322.66 511.47 330.71 512.26 336.06 512.29 342.1 511.72 348.88 511.71 355.56 511.49 363.05 511.22 371.31 511.98 379.55 512.98 388.6 514.24 398.45 516.66 408.3 519.09 418.51 521.36 428.96 524.27 439.45 526.57 450.18 528.05 461.03 529.57 471.88 529.92 482.79 529.01 493.52 527.77 504.12 525.14 514.35 521.19 523.88 516.82 532.95 511.2 540.98 504.5 547.61 497.49 553.35 489.55 557.35 480.88 559.35 472.07 560.24 462.67 559.07 452.85 555.84 443 551.86 432.81 546.24 422.41 539.29 412.01 532.53 401.89 525.47 392.12 518.54 382.31 512.64 372.81 507.15 363.64 502.17 354.38 498.36 345.39 494.88 336.72 491.58 327.9 489.09 319.35 486.39 311.14 483.28 302.79 480.52 294.78 477.03 287.25 472.71 279.66 468.42 272.61 463.14 266.3 456.88 260.11 450.55 254.8 443.23 250.56 434.98 246.7 426.69 244.07 417.52 242.88 407.54 242.27 397.55 243.19 387.26 245.51 376.83 248.36 366.42 252.51 355.88 257.79 345.36 263.43 334.9 270.05 324.49 277.45 314.35 285.03 304.36 293.27 294.74 301.99 285.75 310.75 277.11 319.93 269.29 329.4 262.58 338.83 256.47 348.55 251.68 358.45 248.41 368.31 245.92 378.38 245.03 388.56 245.84 398.74 247.28 409.05 250.22 419.38 254.6" stroke-dasharray="5 3" transform="rotate(52.52, 400, 400)" opacity="0.41"></path><path d="M416.35 265.55C425.82 269.79 434.76 274.78 443.07 280.27 451.33 285.4 458.91 290.8 465.68 296.32 472.34 301.26 478.14 306.31 482.97 311.43 489.49 318.37 497.44 332.86 499.09 340.82 500.04 346.06 500.36 351.89 500.17 358.34 500.5 364.69 500.62 371.73 500.66 379.48 501.58 387.18 502.62 395.63 503.8 404.81 505.95 413.99 508.04 423.49 509.92 433.19 512.38 442.9 514.28 452.8 515.48 462.73 516.79 472.63 517.09 482.49 516.32 492.07 515.35 501.48 513.17 510.43 509.84 518.64 506.2 526.4 501.43 533.13 495.66 538.55 489.65 543.19 482.74 546.27 475.1 547.59 467.33 548.01 458.94 546.65 450.08 543.52 441.18 539.81 431.88 534.67 422.28 528.34 412.68 522.17 403.25 515.66 394.07 509.16 384.87 503.48 375.87 498.06 367.15 493 358.36 488.92 349.79 485.07 341.5 481.39 333.11 478.43 324.96 475.33 317.14 471.95 309.23 468.94 301.66 465.37 294.56 461.13 287.45 457 280.87 452.06 274.99 446.27 269.26 440.48 264.35 433.81 260.44 426.29 256.87 418.75 254.44 410.39 253.32 401.26 252.71 392.13 253.49 382.69 255.55 373.11 258.08 363.55 261.81 353.87 266.57 344.24 271.68 334.68 277.7 325.22 284.47 316.05 291.43 307.06 299.02 298.47 307.09 290.52 315.23 282.93 323.78 276.14 332.61 270.39 341.45 265.19 350.54 261.19 359.79 258.58 369.03 256.62 378.43 256.1 387.89 257.07 397.35 258.57 406.88 261.41 416.35 265.55" stroke-dasharray="2 9" transform="rotate(56.56, 400, 400)" opacity="0.89"></path><path d="M412.5 276.5C421.1 280.46 429.16 285.14 436.6 290.29 444.01 295.17 450.74 300.36 456.73 305.71 462.63 310.6 467.75 315.62 472 320.74 477.83 327.82 485.2 342.47 486.97 350.35 488.09 355.52 488.68 361.18 488.84 367.34 489.46 373.4 489.88 380.05 490.18 387.3 491.2 394.51 492.27 402.37 493.37 410.86 495.26 419.35 497.03 428.09 498.56 436.96 500.59 445.83 502.13 454.81 503.05 463.73 504.11 472.61 504.33 481.34 503.64 489.73 502.83 497.92 501 505.6 498.17 512.53 495.13 519.03 491.09 524.57 486.14 528.88 481 532.56 475.03 534.85 468.34 535.6 461.54 535.65 454.12 534.18 446.19 531.2 438.22 527.77 429.8 523.11 421.03 517.39 412.26 511.8 403.55 505.84 395.02 499.8 386.47 494.41 378.05 489.14 369.84 484.1 361.6 479.85 353.52 475.76 345.69 471.79 337.8 468.45 330.13 465.02 322.77 461.38 315.37 458.11 308.31 454.41 301.69 450.21 295.1 446.14 289.03 441.43 283.62 436.02 278.36 430.64 273.87 424.51 270.3 417.66 267.03 410.79 264.8 403.19 263.76 394.9 263.15 386.61 263.81 378.05 265.61 369.36 267.83 360.7 271.13 351.96 275.38 343.29 279.95 334.7 285.36 326.25 291.47 318.12 297.77 310.17 304.68 302.65 312.04 295.76 319.5 289.2 327.36 283.41 335.49 278.59 343.65 274.24 352.05 270.99 360.58 268.97 369.13 267.49 377.8 267.27 386.49 268.38 395.19 269.9 403.9 272.62 412.5 276.5" stroke-dasharray="3 4" transform="rotate(60.599999999999994, 400, 400)" opacity="0.91"></path><path d="M408.02 287.45C415.76 291.12 422.98 295.46 429.6 300.26 436.19 304.85 442.17 309.77 447.46 314.89 452.69 319.64 457.23 324.57 461.02 329.62 466.27 336.71 473.25 351.36 475.18 359.14 476.45 364.23 477.29 369.71 477.74 375.6 478.6 381.39 479.25 387.67 479.76 394.44 480.85 401.17 481.92 408.43 482.93 416.21 484.59 423.99 486.06 431.93 487.29 439.92 488.93 447.9 490.12 455.9 490.78 463.77 491.6 471.57 491.7 479.15 491.03 486.34 490.32 493.33 488.75 499.79 486.32 505.51 482.03 513.08 469.11 522.3 460.72 523.42 454.82 523.2 448.3 521.68 441.26 518.88 434.2 515.76 426.66 511.57 418.72 506.44 410.79 501.41 402.85 496.01 395 490.46 387.15 485.41 379.38 480.37 371.76 475.45 364.12 471.15 356.62 466.93 349.33 462.79 342.01 459.18 334.89 455.49 328.07 451.66 321.25 448.16 314.74 444.34 308.67 440.14 302.64 436.1 297.11 431.55 292.19 426.46 287.43 421.41 283.36 415.75 280.14 409.49 277.19 403.22 275.16 396.34 274.19 388.87 273.6 381.41 274.14 373.72 275.69 365.96 277.61 358.23 280.49 350.46 284.23 342.79 288.25 335.21 293.05 327.81 298.48 320.74 304.11 313.85 310.3 307.4 316.93 301.55 323.66 295.99 330.77 291.16 338.13 287.2 345.55 283.65 353.2 281.07 360.96 279.57 368.74 278.51 376.63 278.55 384.51 279.75 392.41 281.27 400.28 283.84 408.02 287.45" stroke-dasharray="2 1" transform="rotate(64.64, 400, 400)" opacity="0.84"></path><path d="M403.14 298.39C410.03 301.77 416.42 305.75 422.28 310.16 428.12 314.43 433.4 319.03 438.07 323.85 442.72 328.41 446.76 333.16 450.17 338.04 454.95 345.02 461.65 359.45 463.73 367.03 465.66 374.65 468.33 391.35 469.4 400.56 470.53 406.8 471.57 413.45 472.49 420.5 473.93 427.54 475.14 434.65 476.08 441.73 477.38 448.79 478.26 455.79 478.68 462.59 479.25 469.31 479.22 475.77 478.55 481.79 477.18 490.3 470.7 503.61 465.59 507.88 459.65 510.55 444.47 509.9 435.45 506.57 429.24 503.77 422.56 500.04 415.48 495.49 408.39 491.02 401.25 486.17 394.14 481.13 387.03 476.47 379.96 471.72 372.99 467.02 366.03 462.78 359.17 458.56 352.49 454.37 345.81 450.6 339.32 446.76 333.11 442.82 326.91 439.16 321.01 435.26 315.52 431.09 310.1 427.07 305.13 422.67 300.72 417.85 296.47 413.09 292.84 407.85 289.97 402.14 287.33 396.44 285.52 390.24 284.63 383.57 284.06 376.9 284.48 370.1 285.8 363.27 287.42 356.47 289.9 349.68 293.14 343.04 296.63 336.48 300.81 330.12 305.57 324.11 310.5 318.25 315.96 312.83 321.82 307.98 327.78 303.37 334.11 299.42 340.67 296.26 347.3 293.43 354.14 291.44 361.08 290.4 368.06 289.7 375.12 289.94 382.17 291.18 389.23 292.67 396.26 295.08 403.14 298.39" stroke-dasharray="2 4" transform="rotate(68.68, 400, 400)" opacity="0.43"></path><path d="M398.1 309.34C410.2 315.45 420.53 323.53 428.81 332.62 437.03 340.95 443.26 350.12 447.41 359.75 451.84 368.65 454.73 378.44 456.24 389.02 458.85 399.33 460.82 410.87 462.06 423.45 464.88 436.03 466.53 448.48 466.76 460.05 467.56 471.35 466.15 481.24 462.44 488.73 458.58 495.28 452.19 498.79 443.58 498.58 434.79 497.27 423.94 492.51 411.45 484.54 398.97 476.84 386.15 467.92 373.65 458.78 361.19 451.03 349.06 443.03 337.93 434.89 326.93 427.68 317.1 419.57 309.23 410.44 301.9 401.53 296.91 391.11 295.07 379.34 294.26 367.56 296.83 355.6 302.13 344.25 308.24 333.18 316.73 323.15 326.79 315.1 337.25 307.82 348.96 303.04 361.12 301.45 373.42 300.85 386.01 303.44 398.1 309.34" stroke-dasharray="1 4" transform="rotate(72.72, 400, 400)" opacity="0.86"></path><path d="M393.16 320.29C403.62 325.75 412.6 332.97 419.87 341.19 427.13 348.89 432.78 357.45 436.76 366.44 441.02 374.92 444.02 384.13 445.82 393.88 448.49 403.43 450.47 413.85 451.62 424.88 453.96 435.9 455.13 446.5 455.02 456.06 455.41 465.41 453.97 473.32 450.63 479.05 447.27 484.11 441.8 486.57 434.43 485.97 426.96 484.64 417.66 480.47 406.86 473.59 396.05 466.92 384.85 459.02 373.89 450.73 362.98 443.41 352.35 435.71 342.61 427.85 333.04 420.7 324.52 412.87 317.74 404.37 311.42 396.07 307.12 386.7 305.5 376.45 304.71 366.19 306.79 356.04 311.21 346.63 316.27 337.42 323.41 329.3 331.94 322.97 340.81 317.21 350.82 313.62 361.27 312.72 371.85 312.52 382.7 315 393.16 320.29" stroke-dasharray="2 0" transform="rotate(76.76, 400, 400)" opacity="0.77"></path><path d="M388.56 331.24C397.42 336.01 405.11 342.33 411.44 349.57 417.79 356.5 422.88 364.25 426.65 372.41 430.67 380.23 433.67 388.65 435.63 397.41 438.24 406.04 440.15 415.23 441.18 424.68 443.08 434.13 443.85 442.94 443.49 450.64 442.79 461.27 433.76 473.26 425.2 473.28 418.91 472.02 411.07 468.45 401.91 462.64 392.76 456.98 383.23 450.14 373.87 442.82 364.57 436.14 355.51 428.99 347.24 421.66 339.13 414.83 331.95 407.49 326.25 399.74 320.94 392.15 317.32 383.86 315.94 375.09 315.19 366.31 316.82 357.89 320.39 350.28 324.47 342.81 330.29 336.41 337.33 331.59 344.64 327.16 352.96 324.57 361.71 324.2 370.56 324.3 379.69 326.6 388.56 331.24" stroke-dasharray="8 7" transform="rotate(80.80000000000001, 400, 400)" opacity="0.65"></path><path d="M384.53 342.19C391.85 346.24 398.29 351.6 403.7 357.79 409.14 363.8 413.64 370.56 417.12 377.69 420.8 384.63 423.67 392.05 425.65 399.65 428.08 407.18 429.84 415.03 430.75 422.88 432.46 434.28 431.19 452.11 427.79 457.53 423.22 460.86 407.64 457.93 396.88 451.69 389.34 447.02 381.48 441.29 373.77 435.03 366.12 429.17 358.67 422.8 351.9 416.24 345.27 410.01 339.41 403.38 334.79 396.53 330.47 389.8 327.52 382.66 326.38 375.35 325.68 368.04 326.91 361.23 329.7 355.26 332.85 349.38 337.44 344.49 343.04 340.96 348.85 337.67 355.52 335.89 362.6 335.89 369.76 336.17 377.22 338.24 384.53 342.19" stroke-dasharray="0 8" transform="rotate(84.84, 400, 400)" opacity="0.25"></path><path d="M381.28 353.14C392.89 359.72 402.17 370.43 408.21 382.36 414.8 393.92 419.18 407.08 420.31 419.59 422.89 432.1 421.61 441.45 416.93 445.91 412.52 449.76 403.91 448.24 391.99 440.74 380.07 433.49 367.33 422.82 356.67 411.52 346.44 400.95 338.91 388.95 336.82 377.22 335.9 365.48 340.79 356.14 349.15 351.04 358.07 346.47 369.67 346.79 381.28 353.14" stroke-dasharray="8 9" transform="rotate(88.88, 400, 400)" opacity="0.88"></path><path d="M378.97 364.09C387.62 369.12 394.89 377.32 399.9 386.5 405.25 395.54 408.91 405.7 409.87 415.02 410.99 427.65 399.64 435.94 387.51 429.79 378.67 424.38 369.35 416.19 361.64 407.36 354.2 398.88 348.76 389.41 347.25 380.57 346.43 371.72 349.78 365.1 355.71 361.77 361.96 358.68 370.31 359.2 378.97 364.09" stroke-dasharray="6 3" transform="rotate(92.92, 400, 400)" opacity="0.42"></path><path d="M377.71 375.04C389.22 381.85 398.36 397.15 399.44 409.48 401.9 421.8 395.34 426.11 383.66 418.84 371.97 411.81 359.9 397.06 357.69 385.18 356.72 373.29 366.2 368.46 377.71 375.04" stroke-dasharray="8 4" transform="rotate(96.96, 400, 400)" opacity="0.32"></path></g></svg>',c='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 1422 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="oooscillate-grad"><stop stop-color="hsl(0, 0%, 84%)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsl(0, 0%, 34%)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><g stroke-width="2" stroke="url(#oooscillate-grad)" fill="none" stroke-linecap="round"><path d="M 0 572 Q 355.5 -100 711 400 Q 1066.5 900 1422 572" opacity="0.48"></path><path d="M 0 550 Q 355.5 -100 711 400 Q 1066.5 900 1422 550" opacity="0.56"></path><path d="M 0 528 Q 355.5 -100 711 400 Q 1066.5 900 1422 528" opacity="0.70"></path><path d="M 0 506 Q 355.5 -100 711 400 Q 1066.5 900 1422 506" opacity="1.00"></path><path d="M 0 484 Q 355.5 -100 711 400 Q 1066.5 900 1422 484" opacity="0.72"></path><path d="M 0 462 Q 355.5 -100 711 400 Q 1066.5 900 1422 462" opacity="0.18"></path><path d="M 0 440 Q 355.5 -100 711 400 Q 1066.5 900 1422 440" opacity="0.63"></path><path d="M 0 418 Q 355.5 -100 711 400 Q 1066.5 900 1422 418" opacity="0.93"></path><path d="M 0 396 Q 355.5 -100 711 400 Q 1066.5 900 1422 396" opacity="0.42"></path><path d="M 0 374 Q 355.5 -100 711 400 Q 1066.5 900 1422 374" opacity="0.89"></path><path d="M 0 352 Q 355.5 -100 711 400 Q 1066.5 900 1422 352" opacity="0.82"></path><path d="M 0 330 Q 355.5 -100 711 400 Q 1066.5 900 1422 330" opacity="0.67"></path><path d="M 0 308 Q 355.5 -100 711 400 Q 1066.5 900 1422 308" opacity="0.25"></path><path d="M 0 286 Q 355.5 -100 711 400 Q 1066.5 900 1422 286" opacity="0.21"></path><path d="M 0 264 Q 355.5 -100 711 400 Q 1066.5 900 1422 264" opacity="0.80"></path><path d="M 0 242 Q 355.5 -100 711 400 Q 1066.5 900 1422 242" opacity="0.92"></path><path d="M 0 220 Q 355.5 -100 711 400 Q 1066.5 900 1422 220" opacity="0.24"></path><path d="M 0 198 Q 355.5 -100 711 400 Q 1066.5 900 1422 198" opacity="1.00"></path><path d="M 0 176 Q 355.5 -100 711 400 Q 1066.5 900 1422 176" opacity="0.81"></path><path d="M 0 154 Q 355.5 -100 711 400 Q 1066.5 900 1422 154" opacity="0.85"></path><path d="M 0 132 Q 355.5 -100 711 400 Q 1066.5 900 1422 132" opacity="0.14"></path><path d="M 0 110 Q 355.5 -100 711 400 Q 1066.5 900 1422 110" opacity="0.49"></path><path d="M 0 88 Q 355.5 -100 711 400 Q 1066.5 900 1422 88" opacity="0.62"></path><path d="M 0 66 Q 355.5 -100 711 400 Q 1066.5 900 1422 66" opacity="0.54"></path><path d="M 0 44 Q 355.5 -100 711 400 Q 1066.5 900 1422 44" opacity="0.22"></path></g></svg>',l='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="ffflurry-grad" gradientTransform="rotate(270)"><stop stop-color="hsl(0, 0%, 100%)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsl(0, 0%, 81%)" stop-opacity="1" offset="45%"></stop><stop stop-color="hsl(0, 0%, 34%)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><rect width="100%" height="100%" fill="transparent"></rect><g fill="url(#ffflurry-grad)"><rect width="357" height="3" x="561.5" y="485.5" rx="1.5" transform="rotate(45, 740, 487)" opacity="0.97"></rect><rect width="245" height="3" x="172.5" y="592.5" rx="1.5" transform="rotate(45, 295, 594)" opacity="0.69"></rect><rect width="309" height="3" x="133.5" y="773.5" rx="1.5" transform="rotate(45, 288, 775)" opacity="0.13"></rect><rect width="474" height="3" x="29" y="241.5" rx="1.5" transform="rotate(45, 266, 243)" opacity="0.73"></rect><rect width="391" height="3" x="376.5" y="280.5" rx="1.5" transform="rotate(45, 572, 282)" opacity="0.49"></rect><rect width="329" height="3" x="407.5" y="687.5" rx="1.5" transform="rotate(45, 572, 689)" opacity="0.72"></rect><rect width="55" height="3" x="259.5" y="504.5" rx="1.5" transform="rotate(45, 287, 506)" opacity="0.17"></rect><rect width="536" height="3" x="379" y="490.5" rx="1.5" transform="rotate(45, 647, 492)" opacity="0.84"></rect><rect width="395" height="3" x="135.5" y="733.5" rx="1.5" transform="rotate(45, 333, 735)" opacity="0.41"></rect><rect width="299" height="3" x="487.5" y="274.5" rx="1.5" transform="rotate(45, 637, 276)" opacity="0.95"></rect><rect width="180" height="3" x="13" y="503.5" rx="1.5" transform="rotate(45, 103, 505)" opacity="0.30"></rect><rect width="573" height="3" x="-68.5" y="726.5" rx="1.5" transform="rotate(45, 218, 728)" opacity="0.90"></rect><rect width="422" height="3" x="539" y="52.5" rx="1.5" transform="rotate(45, 750, 54)" opacity="0.18"></rect><rect width="240" height="3" x="97" y="610.5" rx="1.5" transform="rotate(45, 217, 612)" opacity="0.79"></rect><rect width="476" height="3" x="280" y="206.5" rx="1.5" transform="rotate(45, 518, 208)" opacity="0.62"></rect><rect width="551" height="3" x="62.5" y="327.5" rx="1.5" transform="rotate(45, 338, 329)" opacity="0.68"></rect><rect width="89" height="3" x="16.5" y="142.5" rx="1.5" transform="rotate(45, 61, 144)" opacity="0.75"></rect><rect width="336" height="3" x="600" y="240.5" rx="1.5" transform="rotate(45, 768, 242)" opacity="0.66"></rect><rect width="564" height="3" x="479" y="147.5" rx="1.5" transform="rotate(45, 761, 149)" opacity="0.08"></rect><rect width="604" height="3" x="-256" y="753.5" rx="1.5" transform="rotate(45, 46, 755)" opacity="0.10"></rect><rect width="253" height="3" x="430.5" y="120.5" rx="1.5" transform="rotate(45, 557, 122)" opacity="0.46"></rect><rect width="212" height="3" x="308" y="123.5" rx="1.5" transform="rotate(45, 414, 125)" opacity="0.43"></rect><rect width="213" height="3" x="582.5" y="308.5" rx="1.5" transform="rotate(45, 689, 310)" opacity="0.12"></rect><rect width="477" height="3" x="174.5" y="745.5" rx="1.5" transform="rotate(45, 413, 747)" opacity="0.37"></rect><rect width="545" height="3" x="-65.5" y="168.5" rx="1.5" transform="rotate(45, 207, 170)" opacity="0.73"></rect><rect width="67" height="3" x="420.5" y="190.5" rx="1.5" transform="rotate(45, 454, 192)" opacity="0.94"></rect><rect width="144" height="3" x="6" y="210.5" rx="1.5" transform="rotate(45, 78, 212)" opacity="0.16"></rect><rect width="108" height="3" x="521" y="475.5" rx="1.5" transform="rotate(45, 575, 477)" opacity="0.98"></rect><rect width="118" height="3" x="343" y="635.5" rx="1.5" transform="rotate(45, 402, 637)" opacity="0.39"></rect><rect width="428" height="3" x="279" y="456.5" rx="1.5" transform="rotate(45, 493, 458)" opacity="0.14"></rect><rect width="151" height="3" x="88.5" y="377.5" rx="1.5" transform="rotate(45, 164, 379)" opacity="0.99"></rect><rect width="594" height="3" x="180" y="288.5" rx="1.5" transform="rotate(45, 477, 290)" opacity="0.99"></rect><rect width="378" height="3" x="185" y="541.5" rx="1.5" transform="rotate(45, 374, 543)" opacity="0.62"></rect><rect width="104" height="3" x="367" y="361.5" rx="1.5" transform="rotate(45, 419, 363)" opacity="0.55"></rect><rect width="284" height="3" x="44" y="503.5" rx="1.5" transform="rotate(45, 186, 505)" opacity="0.76"></rect><rect width="273" height="3" x="447.5" y="771.5" rx="1.5" transform="rotate(45, 584, 773)" opacity="0.75"></rect><rect width="378" height="3" x="-156" y="283.5" rx="1.5" transform="rotate(45, 33, 285)" opacity="0.56"></rect><rect width="110" height="3" x="671" y="772.5" rx="1.5" transform="rotate(45, 726, 774)" opacity="0.14"></rect><rect width="194" height="3" x="409" y="627.5" rx="1.5" transform="rotate(45, 506, 629)" opacity="0.48"></rect><rect width="132" height="3" x="563" y="204.5" rx="1.5" transform="rotate(45, 629, 206)" opacity="0.47"></rect><rect width="269" height="3" x="178.5" y="415.5" rx="1.5" transform="rotate(45, 313, 417)" opacity="0.38"></rect><rect width="148" height="3" x="-28" y="571.5" rx="1.5" transform="rotate(45, 46, 573)" opacity="0.33"></rect><rect width="156" height="3" x="503" y="186.5" rx="1.5" transform="rotate(45, 581, 188)" opacity="0.39"></rect><rect width="528" height="3" x="382" y="38.5" rx="1.5" transform="rotate(45, 646, 40)" opacity="0.59"></rect><rect width="286" height="3" x="331" y="538.5" rx="1.5" transform="rotate(45, 474, 540)" opacity="0.40"></rect><rect width="291" height="3" x="568.5" y="192.5" rx="1.5" transform="rotate(45, 714, 194)" opacity="0.30"></rect><rect width="672" height="3" x="48" y="243.5" rx="1.5" transform="rotate(45, 384, 245)" opacity="0.16"></rect><rect width="115" height="3" x="83.5" y="753.5" rx="1.5" transform="rotate(45, 141, 755)" opacity="0.56"></rect><rect width="425" height="3" x="406.5" y="589.5" rx="1.5" transform="rotate(45, 619, 591)" opacity="0.33"></rect><rect width="415" height="3" x="337.5" y="38.5" rx="1.5" transform="rotate(45, 545, 40)" opacity="0.51"></rect><rect width="88" height="3" x="87" y="285.5" rx="1.5" transform="rotate(45, 131, 287)" opacity="0.21"></rect><rect width="46" height="3" x="726" y="705.5" rx="1.5" transform="rotate(45, 749, 707)" opacity="0.60"></rect><rect width="588" height="3" x="40" y="131.5" rx="1.5" transform="rotate(45, 334, 133)" opacity="0.90"></rect><rect width="560" height="3" x="380" y="121.5" rx="1.5" transform="rotate(45, 660, 123)" opacity="0.50"></rect><rect width="301" height="3" x="82.5" y="425.5" rx="1.5" transform="rotate(45, 233, 427)" opacity="0.31"></rect><rect width="517" height="3" x="-196.5" y="378.5" rx="1.5" transform="rotate(45, 62, 380)" opacity="0.60"></rect><rect width="262" height="3" x="387" y="347.5" rx="1.5" transform="rotate(45, 518, 349)" opacity="0.38"></rect><rect width="207" height="3" x="205.5" y="670.5" rx="1.5" transform="rotate(45, 309, 672)" opacity="0.86"></rect><rect width="275" height="3" x="545.5" y="229.5" rx="1.5" transform="rotate(45, 683, 231)" opacity="0.35"></rect><rect width="444" height="3" x="427" y="712.5" rx="1.5" transform="rotate(45, 649, 714)" opacity="0.44"></rect><rect width="311" height="3" x="-119.5" y="458.5" rx="1.5" transform="rotate(45, 36, 460)" opacity="0.85"></rect><rect width="425" height="3" x="-65.5" y="64.5" rx="1.5" transform="rotate(45, 147, 66)" opacity="0.90"></rect><rect width="327" height="3" x="590.5" y="317.5" rx="1.5" transform="rotate(45, 754, 319)" opacity="0.41"></rect><rect width="127" height="3" x="-31.5" y="657.5" rx="1.5" transform="rotate(45, 32, 659)" opacity="1.00"></rect><rect width="213" height="3" x="287.5" y="450.5" rx="1.5" transform="rotate(45, 394, 452)" opacity="0.49"></rect><rect width="294" height="3" x="-102" y="48.5" rx="1.5" transform="rotate(45, 45, 50)" opacity="0.56"></rect><rect width="301" height="3" x="98.5" y="327.5" rx="1.5" transform="rotate(45, 249, 329)" opacity="0.91"></rect><rect width="462" height="3" x="-131" y="678.5" rx="1.5" transform="rotate(45, 100, 680)" opacity="0.21"></rect><rect width="139" height="3" x="410.5" y="94.5" rx="1.5" transform="rotate(45, 480, 96)" opacity="0.36"></rect><rect width="379" height="3" x="448.5" y="374.5" rx="1.5" transform="rotate(45, 638, 376)" opacity="0.79"></rect><rect width="343" height="3" x="-27.5" y="617.5" rx="1.5" transform="rotate(45, 144, 619)" opacity="0.53"></rect><rect width="414" height="3" x="532" y="604.5" rx="1.5" transform="rotate(45, 739, 606)" opacity="0.75"></rect><rect width="425" height="3" x="54.5" y="47.5" rx="1.5" transform="rotate(45, 267, 49)" opacity="0.60"></rect><rect width="507" height="3" x="159.5" y="32.5" rx="1.5" transform="rotate(45, 413, 34)" opacity="0.85"></rect><rect width="370" height="3" x="364" y="398.5" rx="1.5" transform="rotate(45, 549, 400)" opacity="0.11"></rect><rect width="60" height="3" x="724" y="393.5" rx="1.5" transform="rotate(45, 754, 395)" opacity="0.09"></rect><rect width="294" height="3" x="348" y="741.5" rx="1.5" transform="rotate(45, 495, 743)" opacity="0.80"></rect></g></svg>',s='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><g fill="hsl(0, 0%, 28%)" transform="matrix(1.1,0,0,1.1,-39.10000000000002,-39.00000000000006)"><circle r="1.5" cx="405" cy="400" opacity="0.69"></circle><circle r="1.5" cx="402" cy="406" opacity="0.61"></circle><circle r="1.5" cx="395" cy="405" opacity="0.27"></circle><circle r="1.5" cx="392" cy="397" opacity="0.61"></circle><circle r="1.5" cx="399" cy="390" opacity="0.79"></circle><circle r="1.5" cx="410" cy="395" opacity="0.95"></circle><circle r="1.5" cx="409" cy="407" opacity="0.81"></circle><circle r="1.5" cx="397" cy="413" opacity="0.27"></circle><circle r="1.5" cx="386" cy="402" opacity="0.55"></circle><circle r="1.5" cx="392" cy="387" opacity="0.59"></circle><circle r="1.5" cx="409" cy="386" opacity="0.57"></circle><circle r="1.5" cx="417" cy="403" opacity="0.53"></circle><circle r="1.5" cx="404" cy="418" opacity="0.20"></circle><circle r="1.5" cx="384" cy="412" opacity="0.73"></circle><circle r="1.5" cx="382" cy="389" opacity="0.45"></circle><circle r="1.5" cx="403" cy="378" opacity="0.32"></circle><circle r="1.5" cx="423" cy="393" opacity="0.61"></circle><circle r="1.5" cx="416" cy="419" opacity="0.23"></circle><circle r="1.5" cx="389" cy="423" opacity="0.36"></circle><circle r="1.5" cx="373" cy="399" opacity="0.27"></circle><circle r="1.5" cx="390" cy="374" opacity="0.51"></circle><circle r="1.5" cx="421" cy="380" opacity="0.48"></circle><circle r="1.5" cx="428" cy="412" opacity="0.23"></circle><circle r="1.5" cx="401" cy="432" opacity="0.15"></circle><circle r="1.5" cx="370" cy="414" opacity="0.63"></circle><circle r="1.5" cx="375" cy="377" opacity="0.47"></circle><circle r="1.5" cx="411" cy="367" opacity="0.70"></circle><circle r="1.5" cx="436" cy="397" opacity="0.98"></circle><circle r="1.5" cx="418" cy="433" opacity="0.17"></circle><circle r="1.5" cx="377" cy="431" opacity="0.78"></circle><circle r="1.5" cx="361" cy="390" opacity="0.96"></circle><circle r="2" cx="393" cy="360" opacity="0.72"></circle><circle r="2" cx="435" cy="377" opacity="0.36"></circle><circle r="2" cx="436" cy="424" opacity="0.32"></circle><circle r="2" cx="392" cy="444" opacity="0.40"></circle><circle r="2" cx="356" cy="411" opacity="0.28"></circle><circle r="2" cx="372" cy="363" opacity="0.17"></circle><circle r="2" cx="423" cy="358" opacity="0.82"></circle><circle r="2" cx="449" cy="405" opacity="0.25"></circle><circle r="2" cx="415" cy="448" opacity="0.32"></circle><circle r="2" cx="361" cy="434" opacity="0.35"></circle><circle r="2" cx="352" cy="378" opacity="0.48"></circle><circle r="2" cx="401" cy="346" opacity="0.85"></circle><circle r="2" cx="451" cy="379" opacity="0.17"></circle><circle r="2" cx="440" cy="439" opacity="0.77"></circle><circle r="2" cx="380" cy="453" opacity="0.28"></circle><circle r="2" cx="342" cy="403" opacity="0.99"></circle><circle r="2" cx="374" cy="347" opacity="0.24"></circle><circle r="2" cx="439" cy="354" opacity="0.24"></circle><circle r="2" cx="459" cy="418" opacity="0.72"></circle><circle r="2" cx="408" cy="463" opacity="0.95"></circle><circle r="2" cx="345" cy="432" opacity="0.80"></circle><circle r="2" cx="347" cy="362" opacity="0.40"></circle><circle r="2" cx="414" cy="335" opacity="0.42"></circle><circle r="2" cx="466" cy="387" opacity="0.27"></circle><circle r="2" cx="439" cy="457" opacity="0.67"></circle><circle r="2" cx="363" cy="459" opacity="0.11"></circle><circle r="2" cx="330" cy="390" opacity="0.66"></circle><circle r="2" cx="381" cy="330" opacity="0.33"></circle><circle r="2" cx="457" cy="354" opacity="0.31"></circle><circle r="2" cx="466" cy="435" opacity="0.50"></circle><circle r="2" cx="394" cy="476" opacity="0.51"></circle><circle r="2" cx="327" cy="425" opacity="0.69"></circle><circle r="2" cx="347" cy="343" opacity="0.71"></circle><circle r="2" cx="432" cy="327" opacity="0.65"></circle><circle r="2" cx="480" cy="400" opacity="0.64"></circle><circle r="2" cx="432" cy="475" opacity="0.39"></circle><circle r="2" cx="344" cy="460" opacity="0.94"></circle><circle r="2" cx="321" cy="372" opacity="0.85"></circle><circle r="2" cx="394" cy="315" opacity="0.73"></circle><circle r="2" cx="476" cy="360" opacity="0.41"></circle><circle r="2" cx="468" cy="455" opacity="0.79"></circle><circle r="2" cx="377" cy="485" opacity="0.48"></circle><circle r="2" cx="311" cy="413" opacity="0.77"></circle><circle r="2" cx="352" cy="323" opacity="0.51"></circle><circle r="2" cx="452" cy="324" opacity="0.26"></circle><circle r="2" cx="491" cy="418" opacity="0.84"></circle><circle r="2" cx="420" cy="492" opacity="0.69"></circle><circle r="2" cx="323" cy="456" opacity="0.49"></circle><circle r="2" cx="317" cy="351" opacity="0.62"></circle><circle r="2" cx="412" cy="303" opacity="0.79"></circle><circle r="2" cx="495" cy="372" opacity="0.46"></circle><circle r="2" cx="464" cy="477" opacity="0.77"></circle><circle r="2" cx="355" cy="491" opacity="0.16"></circle><circle r="2" cx="298" cy="395" opacity="0.35"></circle><circle r="2" cx="363" cy="303" opacity="0.92"></circle><circle r="2" cx="475" cy="327" opacity="0.83"></circle><circle r="2" cx="498" cy="440" opacity="0.43"></circle><circle r="2" cx="402" cy="507" opacity="0.21"></circle><circle r="2" cx="302" cy="445" opacity="0.12"></circle><circle r="2" cx="318" cy="327" opacity="0.24"></circle><circle r="2" cx="434" cy="295" opacity="0.67"></circle><circle r="2" cx="511" cy="389" opacity="0.98"></circle><circle r="2" cx="455" cy="499" opacity="0.34"></circle><circle r="2" cx="331" cy="490" opacity="0.16"></circle><circle r="2" cx="288" cy="372" opacity="0.19"></circle><circle r="2" cx="381" cy="285" opacity="0.27"></circle><circle r="2" cx="498" cy="336" opacity="0.48"></circle><circle r="2" cx="499" cy="465" opacity="0.20"></circle><circle r="2" cx="380" cy="518" opacity="0.55"></circle><circle r="2" cx="282" cy="429" opacity="0.52"></circle><circle r="2" cx="326" cy="303" opacity="0.84"></circle><circle r="2" cx="460" cy="292" opacity="0.82"></circle><circle r="2" cx="524" cy="412" opacity="0.82"></circle><circle r="2" cx="438" cy="520" opacity="0.94"></circle><circle r="2" cx="305" cy="484" opacity="0.41"></circle><circle r="2" cx="284" cy="346" opacity="0.28"></circle><circle r="2" cx="403" cy="271" opacity="0.28"></circle><circle r="2" cx="521" cy="351" opacity="0.52"></circle><circle r="2" cx="494" cy="492" opacity="0.84"></circle><circle r="2" cx="353" cy="524" opacity="0.13"></circle><circle r="2" cx="266" cy="406" opacity="0.79"></circle><circle r="2" cx="341" cy="279" opacity="0.70"></circle><circle r="2" cx="488" cy="296" opacity="0.72"></circle><circle r="2" cx="531" cy="440" opacity="0.10"></circle><circle r="2" cx="416" cy="537" opacity="0.73"></circle><circle r="2" cx="279" cy="470" opacity="0.55"></circle><circle r="2" cx="286" cy="317" opacity="0.91"></circle><circle r="2" cx="431" cy="262" opacity="0.22"></circle><circle r="2" cx="540" cy="373" opacity="0.85"></circle><circle r="2" cx="482" cy="519" opacity="0.79"></circle><circle r="2" cx="323" cy="523" opacity="0.75"></circle><circle r="2" cx="255" cy="378" opacity="0.85"></circle><circle r="2" cx="362" cy="257" opacity="0.97"></circle><circle r="2" cx="516" cy="307" opacity="0.43"></circle><circle r="2" cx="533" cy="470" opacity="0.65"></circle><circle r="2" cx="389" cy="551" opacity="0.86"></circle><circle r="2" cx="256" cy="450" opacity="0.61"></circle><circle r="2" cx="296" cy="287" opacity="0.55"></circle><circle r="2" cx="462" cy="258" opacity="0.57"></circle><circle r="2" cx="556" cy="401" opacity="0.72"></circle><circle r="2" cx="462" cy="544" opacity="0.20"></circle><circle r="2" cx="292" cy="515" opacity="0.94"></circle><circle r="2" cx="250" cy="347" opacity="0.97"></circle><circle r="2" cx="389" cy="240" opacity="0.79"></circle><circle r="2" cx="543" cy="325" opacity="0.60"></circle><circle r="2" cx="527" cy="502" opacity="0.40"></circle><circle r="2" cx="356" cy="558" opacity="1.00"></circle><circle r="2" cx="237" cy="423" opacity="0.89"></circle><circle r="2" cx="313" cy="258" opacity="0.21"></circle><circle r="2" cx="496" cy="263" opacity="0.71"></circle><circle r="2" cx="565" cy="433" opacity="0.86"></circle><circle r="2" cx="436" cy="566" opacity="0.64"></circle><circle r="2" cx="261" cy="500" opacity="1.00"></circle><circle r="2" cx="252" cy="312" opacity="0.66"></circle><circle r="2" cx="422" cy="228" opacity="0.23"></circle><circle r="2" cx="567" cy="351" opacity="0.65"></circle><circle r="2" cx="513" cy="535" opacity="0.57"></circle><circle r="2" cx="321" cy="558" opacity="0.82"></circle><circle r="2" cx="222" cy="391" opacity="0.16"></circle><circle r="2" cx="337" cy="232" opacity="0.79"></circle><circle r="2" cx="529" cy="275" opacity="0.14"></circle><circle r="2" cx="568" cy="469" opacity="0.13"></circle><circle r="2" cx="404" cy="582" opacity="0.18"></circle><circle r="2" cx="233" cy="477" opacity="0.68"></circle><circle r="2" cx="262" cy="277" opacity="0.90"></circle><circle r="2" cx="458" cy="223" opacity="0.65"></circle><circle r="2" cx="586" cy="383" opacity="0.64"></circle><circle r="2" cx="491" cy="565" opacity="0.95"></circle><circle r="2" cx="284" cy="550" opacity="0.95"></circle><circle r="2" cx="215" cy="354" opacity="0.13"></circle><circle r="2" cx="369" cy="211" opacity="0.82"></circle><circle r="2" cx="562" cy="295" opacity="0.77"></circle><circle r="2" cx="562" cy="507" opacity="0.70"></circle><circle r="2" cx="366" cy="592" opacity="0.83"></circle><circle r="2" cx="209" cy="446" opacity="0.30"></circle><circle r="2" cx="281" cy="242" opacity="0.41"></circle><circle r="2" cx="497" cy="227" opacity="0.87"></circle><circle r="2" cx="599" cy="420" opacity="0.41"></circle><circle r="2" cx="461" cy="591" opacity="0.14"></circle><circle r="2" cx="248" cy="533" opacity="0.93"></circle><circle r="2" cx="216" cy="313" opacity="0.76"></circle><circle r="2" cx="406" cy="196" opacity="0.72"></circle><circle r="2" cx="591" cy="323" opacity="0.87"></circle><circle r="2" cx="547" cy="545" opacity="0.33"></circle><circle r="2" cx="325" cy="594" opacity="0.63"></circle><circle r="2" cx="191" cy="409" opacity="0.54"></circle><circle r="2" cx="308" cy="211" opacity="0.48"></circle><circle r="2" cx="537" cy="239" opacity="0.93"></circle><circle r="2" cx="603" cy="462" opacity="0.92"></circle><circle r="2" cx="425" cy="612" opacity="0.90"></circle><circle r="2" cx="214" cy="508" opacity="0.52"></circle><circle r="2" cx="226" cy="272" opacity="0.32"></circle><circle r="2" cx="448" cy="188" opacity="0.72"></circle><circle r="2.5" cx="615" cy="359" opacity="0.30"></circle><circle r="2.5" cx="524" cy="581" opacity="0.14"></circle><circle r="2.5" cx="283" cy="587" opacity="0.39"></circle><circle r="2.5" cx="181" cy="367" opacity="0.83"></circle><circle r="2.5" cx="343" cy="184" opacity="0.16"></circle><circle r="2.5" cx="576" cy="260" opacity="0.38"></circle><circle r="2.5" cx="599" cy="506" opacity="0.88"></circle><circle r="2.5" cx="382" cy="626" opacity="0.49"></circle><circle r="2.5" cx="185" cy="474" opacity="0.94"></circle><circle r="2.5" cx="245" cy="232" opacity="0.85"></circle><circle r="2.5" cx="493" cy="190" opacity="0.28"></circle><circle r="2.5" cx="631" cy="401" opacity="0.41"></circle><circle r="2.5" cx="492" cy="614" opacity="0.30"></circle><circle r="2.5" cx="240" cy="570" opacity="0.65"></circle><circle r="2.5" cx="179" cy="321" opacity="0.55"></circle><circle r="2.5" cx="384" cy="165" opacity="0.70"></circle><circle r="2.5" cx="610" cy="291" opacity="0.81"></circle><circle r="2.5" cx="585" cy="550" opacity="0.41"></circle><circle r="2.5" cx="336" cy="631" opacity="0.87"></circle><circle r="2.5" cx="162" cy="433" opacity="0.68"></circle><circle r="2.5" cx="274" cy="194" opacity="0.53"></circle><circle r="2.5" cx="539" cy="201" opacity="0.58"></circle><circle r="2.5" cx="639" cy="448" opacity="0.37"></circle><circle r="2.5" cx="452" cy="640" opacity="0.48"></circle><circle r="2.5" cx="200" cy="544" opacity="0.25"></circle><circle r="2.5" cx="187" cy="273" opacity="0.66"></circle><circle r="2.5" cx="431" cy="153" opacity="0.93"></circle><circle r="2.5" cx="640" cy="330" opacity="0.56"></circle><circle r="2.5" cx="561" cy="593" opacity="0.71"></circle><circle r="2.5" cx="287" cy="625" opacity="0.14"></circle><circle r="2.5" cx="147" cy="386" opacity="0.42"></circle><circle r="2.5" cx="311" cy="162" opacity="0.97"></circle><circle r="2.5" cx="584" cy="223" opacity="0.20"></circle><circle r="2.5" cx="637" cy="498" opacity="0.86"></circle><circle r="2.5" cx="405" cy="658" opacity="0.15"></circle><circle r="2.5" cx="164" cy="508" opacity="0.15"></circle><circle r="2.5" cx="206" cy="226" opacity="0.78"></circle><circle r="2.5" cx="482" cy="152" opacity="0.63"></circle><circle r="2.5" cx="661" cy="376" opacity="1.00"></circle><circle r="2.5" cx="527" cy="631" opacity="0.42"></circle><circle r="2.5" cx="238" cy="609" opacity="0.19"></circle><circle r="2.5" cx="142" cy="335" opacity="0.36"></circle><circle r="2.5" cx="357" cy="136" opacity="0.75"></circle><circle r="2.5" cx="625" cy="254" opacity="0.24"></circle><circle r="2.5" cx="624" cy="549" opacity="0.85"></circle><circle r="2.5" cx="353" cy="666" opacity="0.42"></circle><circle r="2.5" cx="136" cy="463" opacity="0.53"></circle><circle r="2.5" cx="236" cy="182" opacity="0.52"></circle><circle r="2.5" cx="535" cy="161" opacity="0.87"></circle><circle r="2.5" cx="674" cy="428" opacity="0.49"></circle><circle r="2.5" cx="484" cy="663" opacity="0.77"></circle><circle r="2.5" cx="191" cy="583" opacity="0.51"></circle><circle r="2.5" cx="148" cy="281" opacity="0.11"></circle><circle r="2.5" cx="409" cy="120" opacity="0.94"></circle><circle r="2.5" cx="661" cy="296" opacity="0.59"></circle><circle r="2.5" cx="601" cy="598" opacity="0.83"></circle><circle r="2.5" cx="298" cy="664" opacity="0.40"></circle><circle r="2.5" cx="116" cy="412" opacity="0.91"></circle><circle r="2.5" cx="275" cy="143" opacity="0.36"></circle><circle r="2.5" cx="586" cy="182" opacity="0.58"></circle><circle r="2.5" cx="675" cy="484" opacity="0.54"></circle><circle r="2.5" cx="433" cy="687" opacity="0.20"></circle><circle r="2.5" cx="149" cy="546" opacity="0.94"></circle><circle r="2.5" cx="165" cy="227" opacity="0.32"></circle><circle r="2.5" cx="465" cy="115" opacity="0.14"></circle><circle r="2.5" cx="689" cy="346" opacity="0.23"></circle><circle r="2.5" cx="566" cy="644" opacity="0.80"></circle><circle r="2.5" cx="242" cy="651" opacity="0.53"></circle><circle r="2.5" cx="106" cy="355" opacity="0.99"></circle><circle r="2.5" cx="324" cy="111" opacity="0.64"></circle><circle r="2.5" cx="635" cy="214" opacity="0.91"></circle><circle r="2.5" cx="665" cy="542" opacity="0.86"></circle><circle r="2.5" cx="376" cy="701" opacity="0.46"></circle><circle r="2.5" cx="113" cy="499" opacity="0.90"></circle><circle r="2.5" cx="194" cy="176" opacity="0.19"></circle><circle r="2.5" cx="524" cy="121" opacity="0.97"></circle><circle r="2.5" cx="707" cy="402" opacity="0.78"></circle><circle r="2.5" cx="521" cy="683" opacity="0.62"></circle><circle r="2.5" cx="188" cy="625" opacity="0.76"></circle><circle r="2.5" cx="108" cy="295" opacity="0.34"></circle><circle r="2.5" cx="380" cy="89" opacity="0.47"></circle><circle r="2.5" cx="678" cy="257" opacity="0.86"></circle><circle r="2.5" cx="643" cy="598" opacity="0.83"></circle><circle r="2.5" cx="315" cy="703" opacity="0.99"></circle><circle r="2.5" cx="87" cy="443" opacity="0.43"></circle><circle r="2.5" cx="235" cy="129" opacity="0.54"></circle><circle r="2.5" cx="583" cy="139" opacity="0.77"></circle><circle r="2.5" cx="713" cy="464" opacity="0.77"></circle><circle r="2.5" cx="467" cy="713" opacity="0.37"></circle><circle r="2.5" cx="138" cy="587" opacity="0.45"></circle><circle r="2.5" cx="123" cy="234" opacity="0.24"></circle><circle r="2.5" cx="441" cy="79" opacity="0.27"></circle><circle r="2.5" cx="712" cy="309" opacity="0.31"></circle><circle r="2.5" cx="609" cy="651" opacity="0.82"></circle><circle r="2.5" cx="253" cy="692" opacity="0.57"></circle><circle r="2.5" cx="72" cy="382" opacity="0.68"></circle><circle r="2.5" cx="285" cy="91" opacity="0.37"></circle><circle r="2.5" cx="639" cy="171" opacity="0.86"></circle><circle r="2.5" cx="707" cy="528" opacity="0.47"></circle><circle r="2.5" cx="405" cy="733" opacity="0.53"></circle><circle r="2.5" cx="96" cy="539" opacity="0.85"></circle><circle r="2.5" cx="151" cy="176" opacity="0.38"></circle><circle r="2.5" cx="507" cy="81" opacity="0.11"></circle><circle r="2.5" cx="737" cy="370" opacity="0.57"></circle><circle r="2.5" cx="562" cy="698" opacity="0.30"></circle><circle r="2.5" cx="191" cy="669" opacity="0.11"></circle><circle r="2.5" cx="69" cy="316" opacity="0.76"></circle><circle r="2.5" cx="345" cy="62" opacity="0.49"></circle><circle r="2.5" cx="689" cy="214" opacity="0.76"></circle><circle r="2.5" cx="687" cy="591" opacity="0.57"></circle><circle r="2.5" cx="339" cy="741" opacity="0.87"></circle><circle r="2.5" cx="62" cy="480" opacity="0.96"></circle><circle r="2.5" cx="191" cy="121" opacity="0.51"></circle><circle r="2.5" cx="572" cy="96" opacity="0.82"></circle><circle r="2.5" cx="749" cy="437" opacity="0.82"></circle><circle r="2.5" cx="506" cy="735" opacity="0.43"></circle><circle r="2.5" cx="134" cy="632" opacity="0.53"></circle><circle r="2.5" cx="80" cy="248" opacity="0.15"></circle><circle r="2.5" cx="412" cy="45" opacity="0.29"></circle><circle r="2.5" cx="731" cy="268" opacity="0.79"></circle><circle r="2.5" cx="654" cy="652" opacity="0.54"></circle><circle r="2.5" cx="270" cy="734" opacity="0.11"></circle><circle r="2.5" cx="40" cy="414" opacity="0.72"></circle><circle r="2.5" cx="243" cy="75" opacity="0.70"></circle><circle r="2.5" cx="636" cy="125" opacity="0.12"></circle><circle r="2.5" cx="747" cy="507" opacity="0.95"></circle><circle r="2.5" cx="441" cy="762" opacity="0.39"></circle><circle r="2.5" cx="83" cy="583" opacity="0.94"></circle><circle r="2.5" cx="105" cy="182" opacity="0.30"></circle><circle r="2.5" cx="482" cy="41" opacity="0.88"></circle><circle r="2.5" cx="763" cy="332" opacity="0.95"></circle><circle r="2.5" cx="608" cy="707" opacity="0.27"></circle><circle r="2.5" cx="201" cy="714" opacity="0.79"></circle><circle r="2.5" cx="32" cy="343" opacity="0.20"></circle><circle r="2.5" cx="305" cy="38" opacity="0.56"></circle><circle r="2.5" cx="694" cy="168" opacity="0.77"></circle><circle r="2.5" cx="732" cy="578" opacity="0.85"></circle><circle r="2.5" cx="369" cy="776" opacity="0.91"></circle><circle r="2.5" cx="42" cy="522" opacity="0.46"></circle><circle r="2.5" cx="144" cy="120" opacity="0.23"></circle><circle r="2.5" cx="555" cy="52" opacity="0.45"></circle><circle r="2.5" cx="782" cy="403" opacity="0.66"></circle><circle r="2.5" cx="550" cy="753" opacity="0.83"></circle><circle r="2.5" cx="136" cy="679" opacity="0.53"></circle><circle r="2.5" cx="38" cy="269" opacity="0.88"></circle><circle r="2.5" cx="375" cy="14" opacity="0.84"></circle><circle r="2.5" cx="745" cy="223" opacity="0.21"></circle><circle r="2.5" cx="701" cy="646" opacity="0.15"></circle><circle r="2.5" cx="294" cy="775" opacity="0.25"></circle><circle r="2.5" cx="12" cy="453" opacity="0.76"></circle><circle r="2.5" cx="196" cy="65" opacity="0.48"></circle><circle r="2.5" cx="627" cy="78" opacity="0.23"></circle><circle r="2.5" cx="787" cy="479" opacity="0.51"></circle><circle r="3" cx="482" cy="787" opacity="0.12"></circle><circle r="3" cx="77" cy="630" opacity="0.45"></circle><circle r="3" cx="59" cy="195" opacity="0.48"></circle><circle r="3" cx="452" cy="4" opacity="0.88"></circle><circle r="3" cx="785" cy="289" opacity="0.41"></circle><circle r="3" cx="656" cy="709" opacity="0.99"></circle><circle r="3" cx="218" cy="759" opacity="0.45"></circle><circle r="3" cx="-3" cy="377" opacity="0.23"></circle><circle r="3" cx="260" cy="20" opacity="0.91"></circle><circle r="3" cx="693" cy="119" opacity="0.34"></circle><circle r="3" cx="776" cy="557" opacity="0.51"></circle><circle r="3" cx="406" cy="809" opacity="0.14"></circle><circle r="3" cx="27" cy="569" opacity="0.57"></circle><circle r="3" cx="95" cy="125" opacity="0.75"></circle><circle r="3" cx="531" cy="9" opacity="0.20"></circle><circle r="3" cx="812" cy="364" opacity="0.80"></circle><circle r="3" cx="598" cy="764" opacity="0.34"></circle><circle r="3" cx="144" cy="728" opacity="0.22"></circle><circle r="3" cx="-4" cy="296" opacity="0.58"></circle><circle r="3" cx="334" cy="-13" opacity="0.68"></circle><circle r="3" cx="753" cy="174" opacity="0.19"></circle><circle r="3" cx="749" cy="634" opacity="0.70"></circle><circle r="3" cx="325" cy="815" opacity="0.28"></circle><circle r="3" cx="-11" cy="497" opacity="0.15"></circle><circle r="3" cx="146" cy="61" opacity="0.69"></circle><circle r="3" cx="610" cy="31" opacity="0.94"></circle><circle r="3" cx="824" cy="445" opacity="0.18"></circle><circle r="3" cx="528" cy="808" opacity="0.14"></circle><circle r="3" cx="77" cy="681" opacity="0.47"></circle><circle r="3" cx="12" cy="215" opacity="0.80"></circle><circle r="3" cx="415" cy="-30" opacity="0.34"></circle><circle r="3" cx="802" cy="241" opacity="0.33"></circle><circle r="3" cx="707" cy="706" opacity="0.29"></circle><circle r="3" cx="242" cy="804" opacity="0.10"></circle><circle r="3" cx="-35" cy="417" opacity="0.73"></circle><circle r="3" cx="211" cy="7" opacity="0.95"></circle><circle r="3" cx="686" cy="68" opacity="0.75"></circle><circle r="3" cx="819" cy="530" opacity="0.33"></circle><circle r="3" cx="449" cy="837" opacity="0.22"></circle><circle r="3" cx="17" cy="620" opacity="0.32"></circle><circle r="3" cx="45" cy="136" opacity="0.85"></circle><circle r="3" cx="500" cy="-32" opacity="0.71"></circle><circle r="3" cx="837" cy="319" opacity="0.24"></circle><circle r="3" cx="649" cy="769" opacity="0.12"></circle><circle r="3" cx="160" cy="777" opacity="0.96"></circle><circle r="3" cx="-43" cy="331" opacity="0.60"></circle><circle r="3" cx="287" cy="-35" opacity="0.69"></circle><circle r="3" cx="754" cy="122" opacity="0.34"></circle><circle r="3" cx="798" cy="614" opacity="0.30"></circle><circle r="3" cx="362" cy="851" opacity="0.18"></circle><circle r="3" cx="-30" cy="546" opacity="0.70"></circle><circle r="3" cx="94" cy="63" opacity="0.54"></circle><circle r="3" cx="587" cy="-16" opacity="0.75"></circle><circle r="3" cx="857" cy="405" opacity="0.16"></circle><circle r="3" cx="579" cy="822" opacity="0.60"></circle><circle r="3" cx="83" cy="733" opacity="0.82"></circle><circle r="3" cx="-33" cy="242" opacity="0.32"></circle><circle r="3" cx="371" cy="-61" opacity="0.23"></circle><circle r="3" cx="812" cy="189" opacity="0.95"></circle><circle r="3" cx="759" cy="695" opacity="0.57"></circle><circle r="3" cx="273" cy="848" opacity="0.56"></circle><circle r="3" cx="-62" cy="462" opacity="0.84"></circle><circle r="3" cx="157" cy="0" opacity="0.41"></circle><circle r="3" cx="671" cy="17" opacity="0.72"></circle><circle r="3" cx="860" cy="495" opacity="0.22"></circle><circle r="3" cx="497" cy="861" opacity="0.18"></circle><circle r="3" cx="15" cy="673" opacity="0.23"></circle><circle r="3" cx="-6" cy="155" opacity="0.32"></circle><circle r="3" cx="462" cy="-71" opacity="0.29"></circle><circle r="3" cx="858" cy="269" opacity="0.36"></circle><circle r="3" cx="704" cy="768" opacity="0.53"></circle><circle r="3" cx="183" cy="826" opacity="0.87"></circle><circle r="3" cx="-79" cy="371" opacity="0.86"></circle><circle r="3" cx="235" cy="-51" opacity="0.79"></circle><circle r="3" cx="749" cy="67" opacity="0.95"></circle><circle r="3" cx="845" cy="587" opacity="0.92"></circle><circle r="3" cx="406" cy="884" opacity="0.28"></circle><circle r="3" cx="-42" cy="599" opacity="0.36"></circle><circle r="3" cx="40" cy="73" opacity="0.47"></circle><circle r="3" cx="556" cy="-62" opacity="0.80"></circle><circle r="3" cx="887" cy="358" opacity="0.60"></circle><circle r="3" cx="633" cy="831" opacity="0.37"></circle><circle r="3" cx="97" cy="787" opacity="0.74"></circle><circle r="3" cx="-77" cy="277" opacity="0.41"></circle><circle r="3" cx="323" cy="-87" opacity="0.25"></circle><circle r="3" cx="817" cy="134" opacity="0.21"></circle><circle r="3" cx="811" cy="676" opacity="0.95"></circle><circle r="3" cx="311" cy="889" opacity="0.85"></circle><circle r="3" cx="-85" cy="514" opacity="0.48"></circle><circle r="3" cx="102" cy="0" opacity="0.17"></circle><circle r="3" cx="648" cy="-34" opacity="0.13"></circle><circle r="3" cx="899" cy="454" opacity="0.32"></circle><circle r="3" cx="550" cy="880" opacity="0.18"></circle><circle r="3" cx="19" cy="730" opacity="0.29"></circle><circle r="3" cx="-55" cy="182" opacity="0.70"></circle><circle r="3" cx="418" cy="-106" opacity="0.20"></circle><circle r="3" cx="872" cy="214" opacity="0.87"></circle><circle r="3" cx="760" cy="759" opacity="0.98"></circle><circle r="3" cx="214" cy="874" opacity="0.83"></circle><circle r="3" cx="-110" cy="419" opacity="0.89"></circle><circle r="3" cx="179" cy="-62" opacity="0.88"></circle><circle r="3" cx="736" cy="12" opacity="0.62"></circle><circle r="3" cx="891" cy="553" opacity="0.22"></circle><circle r="3" cx="456" cy="912" opacity="0.40"></circle><circle r="3" cx="-48" cy="656" opacity="0.55"></circle><circle r="3" cx="-15" cy="91" opacity="0.95"></circle><circle r="3" cx="518" cy="-105" opacity="0.19"></circle><circle r="3" cx="912" cy="306" opacity="0.92"></circle><circle r="3" cx="691" cy="833" opacity="0.27"></circle><circle r="3" cx="119" cy="840" opacity="0.81"></circle><circle r="3" cx="-117" cy="318" opacity="0.64"></circle><circle r="3" cx="268" cy="-108" opacity="0.34"></circle><circle r="3" cx="814" cy="76" opacity="0.31"></circle><circle r="3" cx="864" cy="651" opacity="0.34"></circle><circle r="3" cx="355" cy="926" opacity="0.19"></circle><circle r="3" cx="-101" cy="570" opacity="0.81"></circle><circle r="3" cx="44" cy="7" opacity="0.92"></circle><circle r="3" cx="618" cy="-85" opacity="0.63"></circle><circle r="3" cx="933" cy="407" opacity="0.70"></circle><circle r="3" cx="607" cy="892" opacity="0.21"></circle><circle r="3" cx="31" cy="787" opacity="0.52"></circle><circle r="3" cx="-104" cy="216" opacity="0.71"></circle><circle r="3" cx="368" cy="-136" opacity="0.68"></circle><circle r="3" cx="880" cy="156" opacity="0.69"></circle><circle r="3" cx="817" cy="743" opacity="0.99"></circle><circle r="3" cx="251" cy="920" opacity="0.14"></circle><circle r="3" cx="-137" cy="472" opacity="0.57"></circle><circle r="3" cx="119" cy="-65" opacity="0.46"></circle><circle r="3" cx="715" cy="-44" opacity="0.30"></circle><circle r="3" cx="934" cy="512" opacity="0.49"></circle><circle r="3" cx="511" cy="935" opacity="0.81"></circle><circle r="3" cx="-47" cy="716" opacity="0.54"></circle><circle r="3" cx="-70" cy="116" opacity="0.27"></circle><circle r="3" cx="473" cy="-145" opacity="0.59"></circle><circle r="3" cx="930" cy="249" opacity="0.32"></circle><circle r="3" cx="751" cy="827" opacity="0.84"></circle><circle r="3" cx="148" cy="893" opacity="0.88"></circle><circle r="3" cx="-154" cy="366" opacity="0.33"></circle><circle r="3" cx="210" cy="-122" opacity="0.40"></circle><circle r="3" cx="804" cy="16" opacity="0.38"></circle><circle r="3" cx="914" cy="617" opacity="0.30"></circle><circle r="3" cx="406" cy="959" opacity="0.12"></circle><circle r="3" cx="-111" cy="630" opacity="0.15"></circle><circle r="3" cx="-16" cy="22" opacity="0.24"></circle><circle r="3" cx="581" cy="-133" opacity="0.59"></circle><circle r="3" cx="962" cy="353" opacity="0.68"></circle><circle r="3" cx="668" cy="898" opacity="0.88"></circle><circle r="3" cx="50" cy="845" opacity="0.45"></circle><circle r="3" cx="-149" cy="257" opacity="0.40"></circle><circle r="3" cx="312" cy="-162" opacity="0.70"></circle><circle r="3" cx="881" cy="94" opacity="0.18"></circle><circle r="3" cx="873" cy="719" opacity="0.18"></circle><circle r="3.5" cx="296" cy="963" opacity="0.21"></circle><circle r="3.5" cx="-159" cy="530" opacity="0.44"></circle><circle r="3.5" cx="57" cy="-61" opacity="0.79"></circle><circle r="3.5" cx="687" cy="-99" opacity="0.57"></circle><circle r="3.5" cx="973" cy="463" opacity="0.48"></circle><circle r="3.5" cx="571" cy="952" opacity="0.93"></circle><circle r="3.5" cx="-39" cy="778" opacity="0.22"></circle><circle r="3.5" cx="-123" cy="148" opacity="0.50"></circle><circle r="3.5" cx="422" cy="-181" opacity="0.57"></circle><circle r="3.5" cx="943" cy="188" opacity="0.26"></circle><circle r="3.5" cx="812" cy="813" opacity="0.36"></circle><circle r="3.5" cx="185" cy="944" opacity="0.35"></circle><circle r="3.5" cx="-186" cy="420" opacity="0.43"></circle><circle r="3.5" cx="147" cy="-130" opacity="0.61"></circle><circle r="3.5" cx="786" cy="-45" opacity="0.83"></circle><circle r="3.5" cx="963" cy="576" opacity="0.34"></circle><circle r="3.5" cx="463" cy="987" opacity="0.85"></circle><circle r="3.5" cx="-114" cy="693" opacity="0.33"></circle><circle r="3.5" cx="-75" cy="45" opacity="0.39"></circle><circle r="3.5" cx="536" cy="-178" opacity="0.66"></circle><circle r="3.5" cx="986" cy="294" opacity="0.50"></circle><circle r="3.5" cx="732" cy="896" opacity="0.19"></circle><circle r="3.5" cx="78" cy="903" opacity="0.17"></circle><circle r="3.5" cx="-191" cy="305" opacity="0.95"></circle><circle r="3.5" cx="250" cy="-181" opacity="0.58"></circle><circle r="3.5" cx="874" cy="30" opacity="0.50"></circle><circle r="3.5" cx="929" cy="687" opacity="0.56"></circle><circle r="3.5" cx="348" cy="1001" opacity="0.70"></circle><circle r="3.5" cx="-173" cy="593" opacity="0.41"></circle><circle r="3.5" cx="-6" cy="-49" opacity="0.42"></circle><circle r="3.5" cx="650" cy="-153" opacity="0.89"></circle><circle r="3.5" cx="1008" cy="409" opacity="0.65"></circle><circle r="3.5" cx="635" cy="962" opacity="0.23"></circle><circle r="3.5" cx="-22" cy="841" opacity="0.58"></circle><circle r="3.5" cx="-174" cy="189" opacity="0.74"></circle><circle r="3.5" cx="364" cy="-212" opacity="0.31"></circle><circle r="3.5" cx="948" cy="122" opacity="0.78"></circle><circle r="3.5" cx="874" cy="792" opacity="0.61"></circle><circle r="3.5" cx="230" cy="992" opacity="0.33"></circle><circle r="3.5" cx="-212" cy="480" opacity="0.29"></circle><circle r="3.5" cx="81" cy="-130" opacity="0.38"></circle><circle r="3.5" cx="759" cy="-105" opacity="0.31"></circle><circle r="3.5" cx="1008" cy="528" opacity="0.37"></circle><circle r="3.5" cx="525" cy="1009" opacity="0.91"></circle><circle r="3.5" cx="-110" cy="759" opacity="0.79"></circle><circle r="3.5" cx="-134" cy="76" opacity="0.76"></circle><circle r="3.5" cx="484" cy="-220" opacity="0.25"></circle><circle r="3.5" cx="1003" cy="230" opacity="0.26"></circle><circle r="3.5" cx="798" cy="886" opacity="0.49"></circle><circle r="3.5" cx="113" cy="960" opacity="0.17"></circle><circle r="3.5" cx="-229" cy="360" opacity="0.94"></circle><circle r="3.5" cx="185" cy="-194" opacity="0.84"></circle><circle r="3.5" cx="859" cy="-35" opacity="0.96"></circle><circle r="3.5" cx="983" cy="648" opacity="0.41"></circle><circle r="3.5" cx="406" cy="1035" opacity="0.51"></circle><circle r="3.5" cx="-181" cy="659" opacity="0.46"></circle><circle r="3.5" cx="-71" cy="-30" opacity="0.72"></circle><circle r="3.5" cx="606" cy="-204" opacity="0.94"></circle><circle r="3.5" cx="1037" cy="348" opacity="0.51"></circle><circle r="3.5" cx="703" cy="965" opacity="0.23"></circle><circle r="3.5" cx="3" cy="904" opacity="0.13"></circle><circle r="3.5" cx="-222" cy="237" opacity="0.79"></circle><circle r="3.5" cx="301" cy="-237" opacity="0.57"></circle><circle r="3.5" cx="945" cy="55" opacity="0.96"></circle><circle r="3.5" cx="935" cy="762" opacity="0.47"></circle><circle r="3.5" cx="281" cy="1037" opacity="0.58"></circle><circle r="3.5" cx="-232" cy="546" opacity="0.93"></circle><circle r="3.5" cx="13" cy="-122" opacity="0.99"></circle><circle r="3.5" cx="725" cy="-164" opacity="0.42"></circle><circle r="3.5" cx="1048" cy="473" opacity="0.99"></circle><circle r="3.5" cx="592" cy="1024" opacity="0.65"></circle><circle r="3.5" cx="-97" cy="827" opacity="0.70"></circle><circle r="3.5" cx="-190" cy="115" opacity="0.74"></circle><circle r="3.5" cx="426" cy="-256" opacity="0.63"></circle><circle r="3.5" cx="1013" cy="161" opacity="0.84"></circle><circle r="3.5" cx="865" cy="868" opacity="0.80"></circle><circle r="3.5" cx="156" cy="1014" opacity="0.23"></circle><circle r="3.5" cx="-261" cy="422" opacity="0.41"></circle><circle r="3.5" cx="116" cy="-199" opacity="0.62"></circle><circle r="3.5" cx="836" cy="-101" opacity="0.51"></circle><circle r="3.5" cx="1034" cy="600" opacity="0.74"></circle><circle r="3.5" cx="470" cy="1063" opacity="0.82"></circle><circle r="3.5" cx="-180" cy="729" opacity="0.94"></circle><circle r="3.5" cx="-135" cy="-1" opacity="0.24"></circle><circle r="3.5" cx="555" cy="-252" opacity="0.39"></circle><circle r="3.5" cx="1060" cy="281" opacity="0.66"></circle><circle r="3.5" cx="773" cy="959" opacity="0.10"></circle><circle r="3.5" cx="36" cy="966" opacity="0.11"></circle><circle r="3.5" cx="-266" cy="292" opacity="0.12"></circle><circle r="3.5" cx="233" cy="-254" opacity="0.51"></circle><circle r="3.5" cx="934" cy="-15" opacity="0.26"></circle><circle r="3.5" cx="995" cy="724" opacity="0.42"></circle><circle r="3.5" cx="340" cy="1076" opacity="0.94"></circle><circle r="3.5" cx="-245" cy="616" opacity="0.85"></circle><circle r="3.5" cx="-56" cy="-106" opacity="0.86"></circle><circle r="3.5" cx="682" cy="-221" opacity="0.26"></circle><circle r="3.5" cx="1084" cy="411" opacity="0.80"></circle><circle r="3.5" cx="663" cy="1032" opacity="0.93"></circle><circle r="3.5" cx="-75" cy="895" opacity="0.23"></circle><circle r="3.5" cx="-244" cy="162" opacity="0.74"></circle><circle r="3.5" cx="361" cy="-287" opacity="0.33"></circle><circle r="3.5" cx="1016" cy="90" opacity="0.89"></circle><circle r="3.5" cx="931" cy="841" opacity="0.51"></circle><circle r="3.5" cx="208" cy="1064" opacity="0.71"></circle><circle r="3.5" cx="-287" cy="489" opacity="0.26"></circle><circle r="3.5" cx="43" cy="-195" opacity="0.80"></circle><circle r="3.5" cx="804" cy="-166" opacity="0.11"></circle><circle r="3.5" cx="1081" cy="545" opacity="0.87"></circle><circle r="3.5" cx="539" cy="1083" opacity="0.76"></circle><circle r="3.5" cx="-172" cy="801" opacity="0.90"></circle><circle r="3.5" cx="-197" cy="35" opacity="0.93"></circle><circle r="3.5" cx="496" cy="-294" opacity="0.28"></circle><circle r="3.5" cx="1076" cy="210" opacity="0.32"></circle><circle r="3.5" cx="845" cy="945" opacity="0.92"></circle><circle r="3.5" cx="77" cy="1026" opacity="0.74"></circle><circle r="3.5" cx="-304" cy="354" opacity="0.54"></circle><circle r="3.5" cx="160" cy="-265" opacity="0.24"></circle><circle r="3.5" cx="915" cy="-86" opacity="0.65"></circle><circle r="3.5" cx="1052" cy="678" opacity="0.49"></circle><circle r="3.5" cx="405" cy="1110" opacity="0.85"></circle><circle r="3.5" cx="-250" cy="689" opacity="0.46"></circle><circle r="3.5" cx="-125" cy="-81" opacity="0.85"></circle><circle r="3.5" cx="632" cy="-275" opacity="0.63"></circle><circle r="3.5" cx="1113" cy="343" opacity="0.21"></circle><circle r="3.5" cx="737" cy="1032" opacity="0.98"></circle><circle r="3.5" cx="-45" cy="963" opacity="0.93"></circle><circle r="3.5" cx="-295" cy="216" opacity="0.78"></circle><circle r="3.5" cx="291" cy="-311" opacity="0.75"></circle><circle r="3.5" cx="1009" cy="15" opacity="0.58"></circle><circle r="3.5" cx="997" cy="806" opacity="0.26"></circle><circle r="3.5" cx="266" cy="1111" opacity="0.12"></circle><circle r="3.5" cx="-306" cy="561" opacity="0.30"></circle><circle r="3.5" cx="-31" cy="-184" opacity="0.62"></circle><circle r="3.5" cx="764" cy="-229" opacity="0.44"></circle><circle r="3.5" cx="1123" cy="483" opacity="0.48"></circle><circle r="3.5" cx="613" cy="1097" opacity="0.85"></circle><circle r="3.5" cx="-155" cy="875" opacity="0.17"></circle><circle r="3.5" cx="-258" cy="81" opacity="0.66"></circle><circle r="3.5" cx="430" cy="-332" opacity="1.00"></circle><circle r="3.5" cx="1084" cy="135" opacity="0.66"></circle><circle r="3.5" cx="917" cy="922" opacity="0.11"></circle><circle r="3.5" cx="127" cy="1083" opacity="0.78"></circle><circle r="3.5" cx="-337" cy="423" opacity="0.54"></circle><circle r="3.5" cx="84" cy="-267" opacity="0.83"></circle><circle r="3.5" cx="886" cy="-157" opacity="0.38"></circle><circle r="3.5" cx="1106" cy="624" opacity="0.46"></circle><circle r="3.5" cx="477" cy="1138" opacity="0.67"></circle><circle r="3.5" cx="-247" cy="765" opacity="0.75"></circle><circle r="3.5" cx="-194" cy="-48" opacity="0.15"></circle><circle r="3.5" cx="573" cy="-325" opacity="0.18"></circle><circle r="3.5" cx="1135" cy="269" opacity="0.67"></circle><circle r="3.5" cx="814" cy="1022" opacity="0.37"></circle><circle r="3.5" cx="-6" cy="1029" opacity="0.12"></circle><circle r="4" cx="-340" cy="279" opacity="0.11"></circle><circle r="4" cx="215" cy="-328" opacity="0.62"></circle><circle r="4" cx="995" cy="-61" opacity="0.57"></circle><circle r="4" cx="1061" cy="762" opacity="0.83"></circle><circle r="4" cx="332" cy="1151" opacity="0.49"></circle><circle r="4" cx="-317" cy="638" opacity="0.50"></circle><circle r="4" cx="-105" cy="-163" opacity="0.80"></circle><circle r="4" cx="715" cy="-289" opacity="0.55"></circle><circle r="4" cx="1159" cy="413" opacity="0.73"></circle><circle r="4" cx="691" cy="1102" opacity="0.96"></circle><circle r="4" cx="-128" cy="948" opacity="0.90"></circle><circle r="4" cx="-315" cy="134" opacity="0.86"></circle><circle r="4" cx="358" cy="-363" opacity="0.91"></circle><circle r="4" cx="1083" cy="57" opacity="0.17"></circle><circle r="4" cx="989" cy="890" opacity="0.58"></circle><circle r="4" cx="185" cy="1136" opacity="0.41"></circle><circle r="4" cx="-362" cy="497" opacity="0.91"></circle><circle r="4" cx="6" cy="-261" opacity="0.59"></circle><circle r="4" cx="849" cy="-226" opacity="0.98"></circle><circle r="4" cx="1155" cy="562" opacity="0.56"></circle><circle r="4" cx="553" cy="1158" opacity="0.95"></circle><circle r="4" cx="-234" cy="844" opacity="0.84"></circle><circle r="4" cx="-261" cy="-5" opacity="0.75"></circle><circle r="4" cx="508" cy="-369" opacity="0.56"></circle><circle r="4" cx="1149" cy="191" opacity="0.48"></circle><circle r="4" cx="891" cy="1004" opacity="0.89"></circle><circle r="4" cx="42" cy="1093" opacity="0.90"></circle><circle r="4" cx="-379" cy="348" opacity="0.49"></circle><circle r="4" cx="136" cy="-336" opacity="0.18"></circle><circle r="4" cx="971" cy="-137" opacity="0.15"></circle><circle r="4" cx="1121" cy="709" opacity="0.11"></circle><circle r="4" cx="405" cy="1186" opacity="0.61"></circle><circle r="4" cx="-320" cy="718" opacity="0.53"></circle><circle r="4" cx="-180" cy="-133" opacity="0.12"></circle><circle r="4" cx="658" cy="-346" opacity="0.10"></circle><circle r="4" cx="1188" cy="338" opacity="0.76"></circle><circle r="4" cx="772" cy="1099" opacity="0.35"></circle><circle r="4" cx="-93" cy="1021" opacity="0.71"></circle><circle r="4" cx="-367" cy="196" opacity="0.14"></circle><circle r="4" cx="281" cy="-386" opacity="0.69"></circle><circle r="4" cx="1074" cy="-24" opacity="0.14"></circle><circle r="4" cx="1059" cy="849" opacity="0.10"></circle><circle r="4" cx="251" cy="1184" opacity="0.34"></circle><circle r="4" cx="-380" cy="577" opacity="0.89"></circle><circle r="4" cx="-74" cy="-245" opacity="0.88"></circle><circle r="4" cx="803" cy="-293" opacity="0.10"></circle><circle r="4" cx="1198" cy="493" opacity="0.26"></circle><circle r="4" cx="634" cy="1169" opacity="0.64"></circle><circle r="4" cx="-213" cy="923" opacity="0.80"></circle><circle r="4" cx="-325" cy="46" opacity="0.15"></circle><circle r="4" cx="435" cy="-407" opacity="0.28"></circle><circle r="4" cx="1155" cy="109" opacity="0.65"></circle><circle r="4" cx="969" cy="977" opacity="0.15"></circle><circle r="4" cx="98" cy="1153" opacity="0.98"></circle><circle r="4" cx="-412" cy="424" opacity="0.64"></circle><circle r="4" cx="53" cy="-336" opacity="0.72"></circle><circle r="4" cx="937" cy="-213" opacity="0.30"></circle><circle r="4" cx="1177" cy="648" opacity="0.59"></circle><circle r="4" cx="483" cy="1213" opacity="0.34"></circle><circle r="4" cx="-313" cy="801" opacity="0.56"></circle><circle r="4" cx="-253" cy="-94" opacity="0.35"></circle><circle r="4" cx="592" cy="-398" opacity="0.67"></circle><circle r="4" cx="1209" cy="258" opacity="0.74"></circle><circle r="4" cx="854" cy="1086" opacity="0.70"></circle><circle r="4" cx="-48" cy="1091" opacity="0.20"></circle><circle r="4" cx="-414" cy="265" opacity="0.51"></circle><circle r="4" cx="198" cy="-401" opacity="0.67"></circle><circle r="4" cx="1055" cy="-106" opacity="0.54"></circle><circle r="4" cx="1126" cy="799" opacity="0.94"></circle><circle r="4" cx="324" cy="1226" opacity="0.11"></circle><circle r="4" cx="-389" cy="660" opacity="0.18"></circle><circle r="4" cx="-155" cy="-220" opacity="0.29"></circle><circle r="4" cx="748" cy="-357" opacity="0.64"></circle><circle r="4" cx="1234" cy="416" opacity="0.66"></circle><circle r="4" cx="719" cy="1172" opacity="0.38"></circle><circle r="4" cx="-182" cy="1001" opacity="0.15"></circle><circle r="4" cx="-385" cy="106" opacity="0.97"></circle><circle r="4" cx="356" cy="-438" opacity="0.89"></circle><circle r="4" cx="1151" cy="24" opacity="0.53"></circle><circle r="4" cx="1045" cy="940" opacity="0.31"></circle><circle r="4" cx="163" cy="1208" opacity="0.34"></circle><circle r="4" cx="-437" cy="505" opacity="0.56"></circle><circle r="4" cx="-31" cy="-326" opacity="0.48"></circle><circle r="4" cx="894" cy="-287" opacity="0.74"></circle><circle r="4" cx="1228" cy="579" opacity="0.48"></circle><circle r="4" cx="567" cy="1232" opacity="0.49"></circle><circle r="4" cx="-297" cy="886" opacity="0.46"></circle><circle r="4" cx="-324" cy="-46" opacity="0.32"></circle><circle r="4" cx="520" cy="-443" opacity="0.68"></circle><circle r="4" cx="1222" cy="172" opacity="0.86"></circle><circle r="4" cx="938" cy="1064" opacity="0.46"></circle><circle r="4" cx="6" cy="1159" opacity="0.12"></circle><circle r="4" cx="-454" cy="341" opacity="0.22"></circle><circle r="4" cx="112" cy="-408" opacity="0.66"></circle><circle r="4" cx="1026" cy="-187" opacity="0.18"></circle><circle r="4" cx="1190" cy="740" opacity="0.39"></circle><circle r="4" cx="403" cy="1261" opacity="0.90"></circle><circle r="4" cx="-389" cy="747" opacity="0.80"></circle><circle r="4" cx="-235" cy="-185" opacity="0.84"></circle><circle r="4" cx="684" cy="-417" opacity="0.67"></circle><circle r="4" cx="1263" cy="334" opacity="0.57"></circle><circle r="4" cx="806" cy="1166" opacity="0.56"></circle><circle r="4" cx="-141" cy="1079" opacity="0.19"></circle><circle r="4" cx="-440" cy="175" opacity="0.33"></circle><circle r="4" cx="271" cy="-461" opacity="0.21"></circle><circle r="4" cx="1139" cy="-63" opacity="0.82"></circle><circle r="4" cx="1120" cy="893" opacity="0.71"></circle><circle r="4" cx="235" cy="1258" opacity="0.34"></circle><circle r="4" cx="-454" cy="592" opacity="0.82"></circle><circle r="4" cx="-118" cy="-307" opacity="0.33"></circle><circle r="4" cx="842" cy="-358" opacity="0.87"></circle><circle r="4" cx="1272" cy="503" opacity="0.21"></circle><circle r="4" cx="655" cy="1242" opacity="0.82"></circle><circle r="4" cx="-271" cy="970" opacity="0.44"></circle><circle r="4" cx="-392" cy="12" opacity="0.81"></circle><circle r="4" cx="440" cy="-482" opacity="0.63"></circle><circle r="4" cx="1226" cy="84" opacity="0.70"></circle><circle r="4" cx="1021" cy="1031" opacity="0.94"></circle><circle r="4" cx="68" cy="1222" opacity="0.62"></circle><circle r="4" cx="-487" cy="424" opacity="0.54"></circle><circle r="4" cx="23" cy="-405" opacity="0.71"></circle><circle r="4" cx="988" cy="-268" opacity="0.14"></circle><circle r="4" cx="1249" cy="673" opacity="0.38"></circle><circle r="4" cx="489" cy="1288" opacity="0.13"></circle><circle r="4" cx="-380" cy="837" opacity="0.24"></circle><circle r="4" cx="-313" cy="-141" opacity="0.78"></circle><circle r="4" cx="612" cy="-471" opacity="0.78"></circle><circle r="4" cx="1284" cy="246" opacity="0.49"></circle><circle r="4" cx="895" cy="1150" opacity="0.95"></circle><circle r="4" cx="-91" cy="1154" opacity="0.66"></circle><circle r="4" cx="-488" cy="251" opacity="0.69"></circle><circle r="4" cx="182" cy="-475" opacity="0.19"></circle><circle r="4" cx="1116" cy="-150" opacity="0.45"></circle><circle r="4" cx="1191" cy="837" opacity="0.10"></circle><circle r="4" cx="315" cy="1301" opacity="0.58"></circle><circle r="4" cx="-461" cy="683" opacity="0.26"></circle><circle r="4" cx="-204" cy="-278" opacity="0.28"></circle><circle r="4" cx="781" cy="-425" opacity="0.74"></circle><circle r="4" cx="1310" cy="419" opacity="0.71"></circle><circle r="4" cx="746" cy="1243" opacity="0.27"></circle><circle r="4" cx="-235" cy="1054" opacity="0.61"></circle><circle r="4" cx="-455" cy="79" opacity="0.97"></circle><circle r="4" cx="353" cy="-513" opacity="0.24"></circle><circle r="4" cx="1220" cy="-8" opacity="0.14"></circle><circle r="4" cx="1102" cy="989" opacity="0.39"></circle><circle r="4" cx="140" cy="1280" opacity="0.87"></circle><circle r="4" cx="-512" cy="513" opacity="0.90"></circle><circle r="4" cx="-69" cy="-392" opacity="0.84"></circle><circle r="4" cx="940" cy="-347" opacity="0.94"></circle><circle r="4" cx="1301" cy="597" opacity="0.62"></circle><circle r="4" cx="580" cy="1306" opacity="0.39"></circle><circle r="4" cx="-360" cy="927" opacity="0.62"></circle><circle r="4" cx="-388" cy="-87" opacity="0.65"></circle><circle r="4.5" cx="532" cy="-518" opacity="0.97"></circle><circle r="4.5" cx="1295" cy="154" opacity="0.44"></circle><circle r="4.5" cx="984" cy="1123" opacity="0.87"></circle><circle r="4.5" cx="-31" cy="1225" opacity="0.78"></circle><circle r="4.5" cx="-530" cy="335" opacity="0.11"></circle><circle r="4.5" cx="88" cy="-479" opacity="0.21"></circle><circle r="4.5" cx="1083" cy="-238" opacity="0.23"></circle><circle r="4.5" cx="1258" cy="772" opacity="0.24"></circle><circle r="4.5" cx="402" cy="1336" opacity="0.96"></circle><circle r="4.5" cx="-459" cy="776" opacity="0.33"></circle><circle r="4.5" cx="-289" cy="-238" opacity="0.29"></circle><circle r="4.5" cx="710" cy="-487" opacity="0.94"></circle><circle r="4.5" cx="1339" cy="330" opacity="0.43"></circle><circle r="4.5" cx="840" cy="1233" opacity="0.76"></circle><circle r="4.5" cx="-189" cy="1137" opacity="0.59"></circle><circle r="4.5" cx="-512" cy="154" opacity="0.37"></circle><circle r="4.5" cx="261" cy="-536" opacity="0.87"></circle><circle r="4.5" cx="1203" cy="-101" opacity="0.65"></circle><circle r="4.5" cx="1181" cy="937" opacity="0.22"></circle><circle r="4.5" cx="219" cy="1332" opacity="0.39"></circle><circle r="4.5" cx="-528" cy="607" opacity="0.78"></circle><circle r="4.5" cx="-161" cy="-369" opacity="0.74"></circle><circle r="4.5" cx="881" cy="-422" opacity="0.42"></circle><circle r="4.5" cx="1347" cy="513" opacity="0.59"></circle><circle r="4.5" cx="675" cy="1315" opacity="0.29"></circle><circle r="4.5" cx="-330" cy="1018" opacity="0.26"></circle><circle r="4.5" cx="-459" cy="-23" opacity="0.64"></circle><circle r="4.5" cx="445" cy="-557" opacity="0.54"></circle><circle r="4.5" cx="1297" cy="58" opacity="0.15"></circle><circle r="4.5" cx="1072" cy="1086" opacity="0.54"></circle><circle r="4.5" cx="39" cy="1292" opacity="0.84"></circle><circle r="4.5" cx="-563" cy="425" opacity="0.30"></circle><circle r="4.5" cx="-8" cy="-474" opacity="0.35"></circle><circle r="4.5" cx="1039" cy="-324" opacity="0.21"></circle><circle r="4.5" cx="1320" cy="697" opacity="0.63"></circle><circle r="4.5" cx="495" cy="1363" opacity="0.94"></circle><circle r="4.5" cx="-446" cy="872" opacity="0.34"></circle><circle r="4.5" cx="-372" cy="-188" opacity="0.15"></circle><circle r="4.5" cx="631" cy="-543" opacity="0.74"></circle><circle r="4.5" cx="1358" cy="235" opacity="0.18"></circle><circle r="4.5" cx="935" cy="1214" opacity="0.89"></circle><circle r="4.5" cx="-133" cy="1216" opacity="0.16"></circle><circle r="4.5" cx="-562" cy="237" opacity="0.40"></circle><circle r="4.5" cx="165" cy="-548" opacity="0.51"></circle><circle r="4.5" cx="1177" cy="-195" opacity="0.56"></circle><circle r="4.5" cx="1257" cy="875" opacity="0.11"></circle><circle r="4.5" cx="307" cy="1376" opacity="0.61"></circle><circle r="4.5" cx="-533" cy="704" opacity="0.15"></circle><circle r="4.5" cx="-253" cy="-335" opacity="0.67"></circle><circle r="4.5" cx="814" cy="-493" opacity="0.66"></circle><circle r="4.5" cx="1385" cy="423" opacity="0.85"></circle><circle r="4.5" cx="773" cy="1313" opacity="0.55"></circle><circle r="4.5" cx="-289" cy="1107" opacity="0.50"></circle><circle r="4.5" cx="-525" cy="50" opacity="0.40"></circle><circle r="4.5" cx="351" cy="-589" opacity="0.29"></circle><circle r="4.5" cx="1288" cy="-40" opacity="0.64"></circle><circle r="4.5" cx="1159" cy="1039" opacity="0.30"></circle><circle r="4.5" cx="117" cy="1352" opacity="0.79"></circle><circle r="4.5" cx="-587" cy="521" opacity="0.95"></circle><circle r="4.5" cx="-105" cy="-458" opacity="0.69"></circle><circle r="4.5" cx="985" cy="-407" opacity="0.66"></circle><circle r="4.5" cx="1375" cy="615" opacity="0.60"></circle><circle r="4.5" cx="593" cy="1380" opacity="0.80"></circle><circle r="4.5" cx="-423" cy="969" opacity="0.51"></circle><circle r="4.5" cx="-451" cy="-128" opacity="0.77"></circle><circle r="4.5" cx="544" cy="-592" opacity="0.65"></circle><circle r="4.5" cx="1368" cy="136" opacity="0.24"></circle><circle r="4.5" cx="1030" cy="1183" opacity="0.41"></circle><circle r="4.5" cx="-67" cy="1291" opacity="0.22"></circle><circle r="4.5" cx="-605" cy="328" opacity="0.95"></circle><circle r="4.5" cx="65" cy="-551" opacity="0.84"></circle><circle r="4.5" cx="1139" cy="-288" opacity="0.20"></circle><circle r="4.5" cx="1327" cy="803" opacity="0.39"></circle><circle r="4.5" cx="400" cy="1412" opacity="0.63"></circle><circle r="4.5" cx="-529" cy="805" opacity="0.83"></circle><circle r="4.5" cx="-343" cy="-290" opacity="0.92"></circle><circle r="4.5" cx="737" cy="-558" opacity="0.71"></circle><circle r="4.5" cx="1414" cy="326" opacity="0.51"></circle><circle r="4.5" cx="873" cy="1301" opacity="0.71"></circle><circle r="4.5" cx="-238" cy="1195" opacity="0.19"></circle><circle r="4.5" cx="-584" cy="132" opacity="0.22"></circle><circle r="4.5" cx="252" cy="-610" opacity="0.67"></circle><circle r="4.5" cx="1268" cy="-140" opacity="0.51"></circle><circle r="4.5" cx="1242" cy="981" opacity="0.93"></circle><circle r="4.5" cx="203" cy="1406" opacity="0.73"></circle><circle r="4.5" cx="-602" cy="621" opacity="0.18"></circle><circle r="4.5" cx="-204" cy="-431" opacity="0.84"></circle><circle r="4.5" cx="921" cy="-486" opacity="0.40"></circle><circle r="4.5" cx="1422" cy="524" opacity="0.90"></circle><circle r="4.5" cx="695" cy="1387" opacity="0.49"></circle><circle r="4.5" cx="-388" cy="1065" opacity="0.85"></circle><circle r="4.5" cx="-526" cy="-58" opacity="0.89"></circle><circle r="4.5" cx="450" cy="-633" opacity="0.72"></circle><circle r="4.5" cx="1368" cy="33" opacity="0.43"></circle><circle r="4.5" cx="1124" cy="1142" opacity="0.17"></circle><circle r="4.5" cx="9" cy="1361" opacity="0.87"></circle><circle r="4.5" cx="-638" cy="425" opacity="0.38"></circle><circle r="4.5" cx="-38" cy="-543" opacity="0.84"></circle><circle r="4.5" cx="1090" cy="-379" opacity="0.71"></circle><circle r="4.5" cx="1391" cy="722" opacity="0.76"></circle><circle r="4.5" cx="500" cy="1438" opacity="0.70"></circle><circle r="4.5" cx="-513" cy="907" opacity="0.99"></circle><circle r="4.5" cx="-431" cy="-235" opacity="0.94"></circle><circle r="4.5" cx="651" cy="-616" opacity="0.19"></circle><circle r="4.5" cx="1433" cy="224" opacity="0.31"></circle><circle r="4.5" cx="974" cy="1278" opacity="0.49"></circle><circle r="4.5" cx="-176" cy="1278" opacity="0.60"></circle><circle r="4.5" cx="-636" cy="223" opacity="0.88"></circle><circle r="4.5" cx="149" cy="-622" opacity="0.63"></circle><circle r="4.5" cx="1238" cy="-239" opacity="0.71"></circle><circle r="4.5" cx="1322" cy="913" opacity="0.76"></circle><circle r="4.5" cx="297" cy="1451" opacity="0.98"></circle><circle r="4.5" cx="-606" cy="726" opacity="0.18"></circle><circle r="4.5" cx="-301" cy="-393" opacity="0.54"></circle><circle r="4.5" cx="847" cy="-560" opacity="0.32"></circle><circle r="4.5" cx="1460" cy="426" opacity="0.78"></circle><circle r="4.5" cx="800" cy="1384" opacity="0.43"></circle><circle r="4.5" cx="-343" cy="1160" opacity="0.55"></circle><circle r="4.5" cx="-595" cy="22" opacity="0.46"></circle><circle r="4.5" cx="349" cy="-664" opacity="0.52"></circle><circle r="4.5" cx="1356" cy="-72" opacity="0.38"></circle><circle r="4.5" cx="1215" cy="1089" opacity="0.69"></circle><circle r="4.5" cx="93" cy="1424" opacity="0.90"></circle><circle r="4.5" cx="-662" cy="528" opacity="0.40"></circle><circle r="4.5" cx="-142" cy="-524" opacity="0.45"></circle><circle r="4.5" cx="1031" cy="-467" opacity="0.96"></circle><circle r="4.5" cx="1448" cy="633" opacity="0.14"></circle><circle r="4.5" cx="605" cy="1455" opacity="0.37"></circle><circle r="4.5" cx="-486" cy="1010" opacity="0.42"></circle><circle r="4.5" cx="-514" cy="-169" opacity="0.19"></circle><circle r="4.5" cx="557" cy="-667" opacity="0.69"></circle><circle r="4.5" cx="1442" cy="118" opacity="0.42"></circle><circle r="4.5" cx="1075" cy="1243" opacity="0.60"></circle><circle r="4.5" cx="-104" cy="1357" opacity="0.86"></circle><circle r="4.5" cx="-680" cy="320" opacity="0.97"></circle><circle r="4.5" cx="42" cy="-623" opacity="0.99"></circle><circle r="4.5" cx="1195" cy="-338" opacity="0.12"></circle><circle r="4.5" cx="1395" cy="835" opacity="0.31"></circle><circle r="4.5" cx="399" cy="1487" opacity="0.51"></circle><circle r="4.5" cx="-598" cy="833" opacity="0.97"></circle><circle r="4.5" cx="-397" cy="-343" opacity="0.36"></circle><circle r="4.5" cx="763" cy="-628" opacity="0.95"></circle><circle r="4.5" cx="1489" cy="322" opacity="0.99"></circle><circle r="4.5" cx="907" cy="1369" opacity="0.86"></circle><circle r="4.5" cx="-286" cy="1252" opacity="0.32"></circle><circle r="4.5" cx="-656" cy="111" opacity="0.74"></circle><circle r="4.5" cx="243" cy="-685" opacity="0.79"></circle><circle r="4.5" cx="1333" cy="-178" opacity="0.52"></circle><circle r="4.5" cx="1303" cy="1026" opacity="0.57"></circle><circle r="4.5" cx="187" cy="1479" opacity="0.72"></circle><circle r="4.5" cx="-676" cy="636" opacity="0.11"></circle><circle r="4.5" cx="-246" cy="-493" opacity="0.71"></circle><circle r="4.5" cx="961" cy="-550" opacity="0.97"></circle><circle r="5" cx="1496" cy="535" opacity="0.66"></circle><circle r="5" cx="714" cy="1460" opacity="0.58"></circle><circle r="5" cx="-447" cy="1112" opacity="0.76"></circle><circle r="5" cx="-592" cy="-93" opacity="0.74"></circle><circle r="5" cx="456" cy="-708" opacity="0.82"></circle><circle r="5" cx="1439" cy="8" opacity="0.15"></circle><circle r="5" cx="1175" cy="1197" opacity="0.44"></circle><circle r="5" cx="-22" cy="1430" opacity="0.43"></circle><circle r="5" cx="-714" cy="425" opacity="0.95"></circle><circle r="5" cx="-68" cy="-612" opacity="0.96"></circle><circle r="5" cx="1142" cy="-434" opacity="0.51"></circle><circle r="5" cx="1462" cy="747" opacity="0.36"></circle><circle r="5" cx="506" cy="1514" opacity="0.77"></circle><circle r="5" cx="-580" cy="942" opacity="0.80"></circle><circle r="5" cx="-489" cy="-282" opacity="0.40"></circle><circle r="5" cx="671" cy="-689" opacity="0.11"></circle><circle r="5" cx="1508" cy="213" opacity="0.39"></circle><circle r="5" cx="1014" cy="1342" opacity="0.79"></circle><circle r="5" cx="-219" cy="1340" opacity="0.58"></circle><circle r="5" cx="-710" cy="208" opacity="0.27"></circle><circle r="5" cx="133" cy="-696" opacity="0.41"></circle><circle r="5" cx="1299" cy="-283" opacity="0.68"></circle><circle r="5" cx="1386" cy="952" opacity="0.92"></circle><circle r="5" cx="288" cy="1526" opacity="0.45"></circle><circle r="5" cx="-678" cy="747" opacity="0.55"></circle><circle r="5" cx="-350" cy="-450" opacity="0.33"></circle><circle r="5" cx="881" cy="-628" opacity="0.75"></circle><circle r="5" cx="1536" cy="430" opacity="0.92"></circle><circle r="5" cx="826" cy="1454" opacity="0.55"></circle><circle r="5" cx="-397" cy="1213" opacity="0.95"></circle><circle r="5" cx="-664" cy="-7" opacity="0.36"></circle><circle r="5" cx="348" cy="-739" opacity="0.77"></circle><circle r="5" cx="1425" cy="-103" opacity="0.34"></circle><circle r="5" cx="1272" cy="1139" opacity="0.94"></circle><circle r="5" cx="70" cy="1495" opacity="0.24"></circle><circle r="5" cx="-737" cy="535" opacity="0.46"></circle><circle r="5" cx="-179" cy="-590" opacity="0.12"></circle><circle r="5" cx="1077" cy="-527" opacity="0.96"></circle><circle r="5" cx="1521" cy="651" opacity="0.21"></circle><circle r="5" cx="618" cy="1529" opacity="0.76"></circle><circle r="5" cx="-549" cy="1051" opacity="0.14"></circle><circle r="5" cx="-577" cy="-211" opacity="0.99"></circle><circle r="5" cx="570" cy="-741" opacity="0.67"></circle><circle r="5" cx="1515" cy="100" opacity="0.48"></circle><circle r="5" cx="1121" cy="1303" opacity="0.86"></circle><circle r="5" cx="-141" cy="1423" opacity="0.65"></circle><circle r="5" cx="-755" cy="313" opacity="0.97"></circle><circle r="5" cx="19" cy="-695" opacity="0.79"></circle><circle r="5" cx="1252" cy="-388" opacity="0.89"></circle><circle r="5" cx="1463" cy="867" opacity="0.11"></circle><circle r="5" cx="396" cy="1563" opacity="0.98"></circle><circle r="5" cx="-668" cy="861" opacity="0.15"></circle><circle r="5" cx="-451" cy="-396" opacity="0.52"></circle><circle r="5" cx="791" cy="-699" opacity="0.78"></circle><circle r="5" cx="1565" cy="319" opacity="0.33"></circle><circle r="5" cx="940" cy="1436" opacity="0.95"></circle><circle r="5" cx="-335" cy="1310" opacity="0.60"></circle><circle r="5" cx="-729" cy="89" opacity="0.46"></circle><circle r="5" cx="235" cy="-760" opacity="0.89"></circle><circle r="5" cx="1399" cy="-216" opacity="0.47"></circle><circle r="5" cx="1364" cy="1070" opacity="0.13"></circle><circle r="5" cx="170" cy="1553" opacity="0.40"></circle><circle r="5" cx="-750" cy="650" opacity="0.91"></circle><circle r="5" cx="-289" cy="-555" opacity="0.78"></circle><circle r="5" cx="1001" cy="-614" opacity="0.63"></circle><circle r="5" cx="1571" cy="546" opacity="0.73"></circle><circle r="5" cx="734" cy="1533" opacity="0.18"></circle><circle r="5" cx="-506" cy="1159" opacity="0.34"></circle><circle r="5" cx="-659" cy="-128" opacity="0.58"></circle><circle r="5" cx="462" cy="-783" opacity="0.72"></circle><circle r="5" cx="1510" cy="-16" opacity="0.66"></circle><circle r="5" cx="1226" cy="1252" opacity="0.31"></circle><circle r="5" cx="-52" cy="1499" opacity="0.78"></circle><circle r="5" cx="-789" cy="424" opacity="0.87"></circle><circle r="5" cx="-98" cy="-682" opacity="0.21"></circle><circle r="5" cx="1194" cy="-489" opacity="0.30"></circle></g></svg>',u='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 1422 800" width="1422" height="800"><g transform="scale(1) rotate(0) translate(0 0) skewX(0) skewY(0)" transform-origin="711 400"><rect width="2844" height="1600" x="-711" y="-400" fill="url(#rrreplicate-pattern1)"></rect><rect width="2844" height="1600" x="-711" y="-400" fill="url(#rrreplicate-pattern2)"></rect><rect width="2844" height="1600" x="-711" y="-400" fill="url(#rrreplicate-pattern3)"></rect></g><defs><pattern id="rrreplicate-pattern1" width="260" height="260" patternUnits="userSpaceOnUse" patternTransform="rotate(30)" stroke-width="4" fill="none" stroke="#d3d3d3" stroke-opacity="0.48">\n <line x1="32.5" y1="0" x2="32.5" y2="260"></line><line x1="97.5" y1="0" x2="97.5" y2="260"></line><line x1="162.5" y1="0" x2="162.5" y2="260"></line><line x1="227.5" y1="0" x2="227.5" y2="260"></line>\n </pattern><pattern id="rrreplicate-pattern2" width="260" height="260" patternUnits="userSpaceOnUse" patternTransform="rotate(30)" stroke-opacity="0.67" stroke-width="2.2" fill="none" stroke="#787878">\n <line x1="65" y1="0" x2="65" y2="260"></line><line x1="195" y1="0" x2="195" y2="260"></line>\n </pattern><pattern id="rrreplicate-pattern3" width="260" height="260" patternUnits="userSpaceOnUse" patternTransform="rotate(115)" stroke-opacity="1" stroke-width="1.2" fill="none" stroke="#4e4e4e">\n <line x1="32.5" y1="0" x2="32.5" y2="260"></line><line x1="97.5" y1="0" x2="97.5" y2="260"></line><line x1="162.5" y1="0" x2="162.5" y2="260"></line><line x1="227.5" y1="0" x2="227.5" y2="260"></line>\n </pattern></defs></svg>',h='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="ssscribble-grad"><stop stop-color="hsl(0, 0%, 75%)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsl(0, 0%, 32%)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><g fill="none" stroke-width="1.5" stroke="url(#ssscribble-grad)" stroke-linecap="round"><path d="M914.05 179.57C1021.96 212.43 1085.52 241.39 1090.95 269.18 1041.43 300.62 948.16 337.78 835.14 386.82 722.84 447.31 632.47 526.38 574.84 624.12 553.38 726.73 563.11 832.85 592.77 924.64 639.61 982.07 685.89 993.91 722.61 950.47 755.05 867.93 770.96 761.34 771.14 666.44 764.33 625.87 745.9 656.31 719.87 758.73 691.5 901.18 659.85 1033.62 626.99 1100.58 594.13 1073.97 561.62 964.8 528.01 820.83 492.07 693.78 450.72 626.23 400.58 631.13 343.46 701.51 273.43 802.24 190.34 896.35 102.98 964.94 9.52 983.24 -80.38 953.28 -153.11 883.73 -201.8 789.8 -214.56 690.13 -191.14 587.68 -130.24 498.81 -42.03 426.96 46.89 364.25 121.45 315.36 158.29 275.66 140.18 239.5 69.96 206.15 -37.94 173.29 -156.3 140.43 -247.49 109.61 -289.16 83.8 -276.31 61.52 -210.42 50.63 -110.35 56.39 4.59 71.29 111.45 106.04 194.12 157.84 255.03 230.24 207.84 238.39 153.23 106.96 116.2 -21.35 91.99 -151.55 82.37 -246.03 77.73 -275.03 86.14 -226.21 104.96 -111.85 125.85 19.43 153.5 121.96 186.36 148.59 219.22 81.65 255.73 -44.12 296.81 -173.89 339.97 -263.65 391.33 -275.4 452.91 -210.76 519.47 -91.77 597.8 44.28 685.48 161.04 771.69 238.7 856.97 265.84 930.33 251.48 980.55 202.77 1000.93 143.83 983.54 91.87 935.09 44.77 857.7 19.81 766.85 16.26 690.86 24.17 643.66 46.78 643.49 77.32 697.82 111.49 795.66 146.7 914.01 179.56Q914.05 179.57 914.05 179.57" opacity="0.98"></path><path d="M880.05 194.5C981.27 225.01 1045.26 261.15 1059.88 304.1 1026.51 349.62 951.21 406.24 851.98 475.9 744.73 550.35 648.03 637.22 573.95 730.84 527.24 816.08 508.97 890.26 512.99 938.07 537.59 950.29 569.95 920.61 601.29 849.88 635.61 761.04 659.82 668.51 671.59 602.39 680.14 592.23 676.59 644.86 662.49 753.74 646.83 888.16 623.25 1007.12 592.74 1066.58 562.23 1044.97 526.22 949.86 484.34 818.33 440.89 691.53 388.93 607.26 327.51 582.92 262.85 619.86 188.4 696.89 107.04 785.57 28.68 870.11 -47.48 922.61 -112.07 935.93 -156.08 913.99 -174 860.1 -159.06 788.05 -116.75 701.89 -47.42 616.27 37.45 539.19 114.32 463.74 172.25 400.63 193.84 349.83 167.45 300.96 97.28 261.48 -3.94 230.96 -114.2 200.45 -202.41 180.34 -249.71 171.67 -251.17 164.92 -204.6 172.52 -123.01 195.08 -20.69 219.28 83.94 254.65 175.48 293.79 246.85 318.82 291.47 328.9 311.55 310.86 308.52 257.55 291.62 168.88 269.61 52.57 239.97 -67.88 215.86 -172.27 201.42 -231.59 187.84 -229.63 185.95 -162.75 195.66 -47.73 206.4 72.02 227.2 160.95 257.7 182.59 288.22 123.14 327 10.38 373.8 -112.26 421.64 -209.37 479.04 -244.65 545.49 -212.14 612.81 -123.66 687.17 -3.77 763.84 116.83 832.88 219.35 893.59 285.21 936.62 312.99 956.54 305.18 948.1 274.82 908.52 236.61 848.75 190.02 771.47 153.4 691.52 131.83 632.29 115.04 603.08 113.92 616.31 125.95 675.37 140.54 769.75 163.98 880.01 194.49Q880.05 194.5 880.05 194.5" opacity="0.81"></path><path d="M846.05 300.84C940.39 329.01 1003.86 368.32 1026.05 418.13 1007.33 468.69 949.94 530.49 866.77 601.5 769.71 670.71 673.86 743.47 591.02 811.64 526.05 864.13 483.97 897.03 462.85 900.36 461.57 875.14 472.78 818.29 489.29 737.39 523.85 622.09 562.12 604.64 556.25 750.23 548.19 874.7 530.13 980.24 501.97 1032.58 473.8 1015.51 436.86 933.96 391.79 816.09 346.16 693.71 291.69 598.83 229.55 550.34 167.73 554.53 100.72 601.57 33.06 672.09 -26.86 754.89 -78.5 824.13 -114.14 867.93 -129.93 887.55 -121.25 876.6 -85.61 842.33 -32.1 789.77 38.48 727.32 114.9 663.89 177.42 596.01 218.79 534.72 226.63 483.54 193.57 432.35 124.39 392 30.05 363.83 -72.01 335.66 -156.43 321.01 -207.62 319.08 -221.24 317.13 -192.72 327.18 -130.42 346.25 -44.48 360.86 51.37 376.94 143.61 386.09 225.91 376.95 289.43 347.48 332.64 290.95 356.39 210.24 364.22 107.6 362.26 -4.52 343.01 -140.52 313.81 -134.27 318.83 16.64 325.51 123.64 342.61 199.5 370.78 216.59 398.94 164.27 436.83 64.45 483.27 -49.16 529.7 -149.14 584.29 -202.6 644.7 -199.24 702.74 -143.72 762.51 -49.31 818.48 60.74 863.86 170.97 896.48 261.22 909.64 323.36 903.35 356.95 873.24 364.48 820.27 355.4 757.36 330.65 686.75 304.27 621.46 283.87 579.8 261.67 567.3 251.11 591.78 253.66 653.83 256.98 743.95 272.67 846.01 300.83Q846.05 300.84 846.05 300.84" opacity="0.43"></path><path d="M812.05 451.3C899.32 477.11 961.34 513.82 989.45 559.55 983.61 604.45 943.35 656.3 877.45 710.89 794.45 759.57 705.74 803.64 621.83 835.62 546.93 851.31 488.02 845.68 446.2 814.6 420.53 766.49 408.57 699.78 405.5 625.02 411.96 563.56 420.12 522.96 425.65 518.41 433.98 558.38 435.8 638.99 429.15 747.65 422.79 860.66 407.11 952.99 381.29 998.58 355.47 985.6 320.73 916.96 278.4 813.56 236.36 699.2 187.57 599.78 134.5 533.46 84.22 508.72 33.54 523.99 -12.7 568.05 -49.43 634.32 -74.53 702.31 -82.71 759.24 -74.73 805.42 -46.43 828.7 1.57 830.29 58.61 816 124.15 786.49 188.23 748.67 235.2 703.6 260.78 658 256.65 616.68 218.57 573.96 151.32 538.61 64.05 512.79 -29.72 486.96 -109.59 471.9 -163 465.92 -186.48 458.54 -174.13 457.18 -130.82 457.51 -63.53 450.58 18.46 437.58 104.09 412.09 188.27 370.7 261.8 310.36 320.89 230.35 366.27 139.58 396.95 40.97 416.21 -52.17 424.93 -123.13 428.49 -161.56 431.29 -155.76 429.97 -108.38 432.58 -23.66 441.69 80.73 450.05 174.17 466.59 237.59 492.41 250.59 518.23 205.01 552.1 117.93 592.43 14.87 632.01 -83.82 676.37 -149.74 722.43 -170.81 764.38 -147.33 803.35 -83.58 834.43 4.75 854.96 106.4 861.36 203.72 849.82 285.68 824.57 350.6 781.66 393.3 724.36 417.4 665.62 425.22 606.77 423.67 558.4 419.73 534.02 409.88 536.35 405 569.78 408.8 633.15 411.75 718.24 425.47 812.01 451.29Q812.05 451.3 812.05 451.3" opacity="0.12"></path><path d="M778.05 578.93C858.06 602.4 917.75 631.76 950.13 664.98 955.15 696.59 930.59 728.83 882.1 757.47 815.61 779.46 738.99 791.71 660.88 789.46 584.54 775.36 517.26 743.59 461.96 694.79 417.59 640.88 385.43 580.74 363.09 524.8 349.55 489.21 341.05 478.05 334.11 499.94 330.97 556.64 325.4 642.62 315.07 745.43 305.55 845.85 289.57 925.34 266.1 964.58 242.62 955.23 212.78 898.71 178.02 810.15 144.09 706.73 106.96 608.44 69.42 531.3 35.69 483.86 5.53 469.78 -17.09 484.3 -30.93 524.4 -32.47 576.31 -18.86 629.05 5.67 682.85 45.11 724.08 97.01 749.78 150.69 765.98 206.25 767.01 255.54 756.31 286.83 738.99 298.03 715.36 283.95 689.4 242.51 661.63 178.06 635.04 98.05 611.57 12.64 588.09 -61.98 568.85 -115.97 552.35 -146.91 534.05 -148.37 514.98 -122.77 491.62 -74.83 461.65 -10.02 421.98 63.23 369.6 141.13 307.73 215.51 232.81 281.63 148.24 340.27 64.74 387.59 -15 424.38 -79.55 452.87 -118.51 474.18 -125.5 491.29 -95.27 504.1 -35.34 516.73 49.57 531.58 143.93 545.36 223.44 563.47 275.21 586.94 284.59 610.41 245.37 638.13 170.64 668.62 79.27 698.04 -14.48 728.11 -87.1 755.97 -126.61 779.54 -131.3 796.89 -99.1 804.59 -39.06 803.97 41.3 790.35 129.27 762.48 213.95 727.12 293.51 680.58 358.98 627.12 409.26 578.3 447.69 534.54 474.09 503.79 492.78 495.39 504.81 510.21 515.28 550.19 527.93 613.23 538.97 692.61 555.45 778.01 578.92Q778.05 578.93 778.05 578.93" opacity="0.47"></path><path d="M744.05 626.96C816.64 648.09 873.16 668.33 908.17 686.39 921.85 702.96 911.05 714.55 879.09 718.51 830.08 717.7 768.81 705.9 701.89 681.57 631.66 651.92 564.56 611.13 504.23 562.64 449.46 518.24 403.78 476.9 366.82 447.03 336.27 438.88 312.07 454.11 292.1 496.34 275.67 563.16 260.33 649.06 244.22 742.97 229.05 830.11 211.3 897.29 190.17 930.58 169.05 924.37 145.56 879.07 120.88 805.29 97.15 714.98 74.06 622.76 53.89 541.81 31.95 460.65 36.72 452.72 71.48 501.43 104.13 545.48 146.18 586.55 194.41 619.82 239.34 650.74 281.66 670.37 315.19 678.85 331.66 683.51 330.44 679.13 308.6 667.66 265.44 654.82 204.64 637.35 132.05 616.23 55.08 595.11 -13.67 571.33 -66.72 544.33 -102.67 515.96 -115.24 481.91 -105.21 440.65 -75.86 395.56 -29.64 341.15 27.5 277.67 92.78 211.84 159.93 140.44 224.23 68.71 286.52 5.73 341.76 -46.16 388.96 -78.69 431.13 -87.59 466.17 -69 495.4 -22.11 521.28 43.35 543.99 123.53 565.08 205.69 585.19 271.33 605.52 312.36 626.65 318.59 647.77 285.31 668.69 222.42 688.42 143.43 707.17 57.67 722.89 -16.2 733.62 -67.55 741.01 -94.3 740.76 -90.59 731.15 -60.45 716.51 -8.58 691.6 57.8 657 129.88 620.38 206.06 578.28 277.19 534.99 339.4 499.84 396.28 472.57 442.88 458.7 480.29 464.14 512.94 488.72 539.78 532.83 563.05 594.01 584.83 667.04 605.83 744.01 626.95Q744.05 626.96 744.05 626.96" opacity="0.74"></path><path d="M710.05 574.03C775.06 592.81 827.62 605.47 863.66 611.71 883.73 617.12 884.29 614.71 867.12 603.81 835.13 591.06 790.66 569.3 738.39 539.49 680 510.17 620.4 476.49 563.13 442.69 507.01 417.92 456.32 401.41 412.06 398.78 371.27 415.01 336.42 450.53 306.84 505.65 279.7 575.99 255.96 657.01 234.65 739.69 214.09 813.28 194.56 868.81 175.78 896.58 157 893.04 139.86 857.92 125.01 798.44 110.91 722.58 100.49 640.42 95.08 562.06 92.13 493.01 96.05 440.08 107.9 405.37 123.22 388.98 146.95 388.66 178.46 399.89 211.12 422.72 248.46 449.26 287.3 474.78 333.83 514.57 363.65 557.76 330.72 557.84 287.43 554.5 231.06 543.48 166.05 524.7 97.56 505.92 35.23 480.29 -15.43 448.21 -54.03 415.59 -74.77 375.7 -77.51 328.98 -64.72 281.61 -36.64 228.05 2.84 170.65 51.64 116.18 105.64 62.68 160.82 15.24 217.84 -20.6 271.89 -42.55 321.01 -45.72 368.32 -30.57 409.98 5.5 445.89 60.79 479.92 125.38 509.36 196.85 534.69 265.47 559.37 317.71 581.1 349.03 599.88 352.59 618.66 324.83 633.6 273.11 644.33 206.77 654.42 131.33 659.14 60.99 657.65 4.41 654.29 -36.94 643.55 -55.63 625.19 -52.31 605.01 -30.13 577.92 8.63 545.51 58.02 514.94 116.42 483.2 177.06 453.95 235.33 434.01 294.07 422.77 346.76 423.73 392.05 440.23 435.5 471.65 472.07 517.49 502.06 575.4 531.24 641.53 555.24 710.01 574.02Q710.05 574.03 710.05 574.03" opacity="0.67"></path><path d="M676.05 443.67C783.96 476.53 843.18 477.87 845.34 451.89 800.64 428.27 719.14 388.75 626.38 356.67 526.68 363.23 439.1 416.54 371.31 525.08 308.08 663.34 260.01 795.62 227.15 862.58 194.28 835.97 179.75 726.67 186.03 588.5 196.87 460.05 233.17 376.77 289.8 341.98 362.81 360.55 344.23 411.3 200.05 377.69 81.68 344.84 -4.34 283.74 -39.52 204.07 -29.06 130.36 26.45 55.02 104.35 5.4 197.45 -2.88 286.32 45.53 358.44 149.89 428.65 263.97 481.62 359.95 514.48 386.59 547.35 319.64 556.99 200.68 543.74 86.49 528.57 2.04 490.98 -16.41 440.95 20.07 406.12 95.23 385.44 186.04 399.06 266.61 458.32 349.53 557.66 410.8 676.01 443.66Q676.05 443.67 676.05 443.67" opacity="0.99"></path><path d="M642.05 293.89C766.1 324.39 771.44 308.74 681 318.63 603.38 361.33 528.26 440.01 466.11 551.06 404.33 670.73 357.37 776.24 329.2 828.58 301.03 811.51 294.33 729.59 307.3 617.09 320.63 497.79 351.8 400.01 392.5 335.39 421.18 298.91 441 284.75 437.35 277.2 399.22 278.23 328.39 268.77 234.05 240.61 131.98 212.44 52.25 168.23 8.47 118.38 -4.17 77.12 19.74 47.33 66.79 46.89 130.46 74.59 198.51 142.48 258.23 241.13 319.67 332.98 367.35 403.5 395.51 420.59 423.69 368.26 429.68 274.17 417.06 175.14 394.11 60.32 348.14 79.13 384.39 156.64 448.81 216.71 539.95 265.72 642.01 293.88Q642.05 293.89 642.05 293.89" opacity="0.90"></path><path d="M608.05 191.31C688.06 214.78 744.12 229.6 771 241.3 775.03 259.64 753.21 286.9 715.32 331.76 665.47 394.32 611.94 479.79 564.23 579.62 514.63 675.69 475.49 755.35 452.02 794.58 428.55 785.23 422.97 728.1 431.89 643.64 438.92 544.99 455.82 451.44 474.9 376.17 482.03 314.42 478.95 271.52 457.72 241.88 413.64 218.86 348.06 197.9 268.05 174.43 182.64 150.95 112.1 127.2 65.7 109.54 38.25 98.5 37.67 104.77 57.29 135.75 90.54 180.26 132.56 248.9 173.6 330.35 217.72 397.6 254.38 445.21 277.85 454.59 301.33 415.36 309.39 345.23 305.95 266.35 305.59 183.72 300.2 123.14 297.71 91.35 308.85 77.25 334.32 86.62 378.97 108.95 442.56 137.93 522.61 167.83 608.01 191.3Q608.05 191.31 608.05 191.31" opacity="0.13"></path><path d="M574.05 181.56C639.06 200.34 688.54 223.56 719 252.57 736.2 285.38 735.19 330.01 720.66 387.62 697.31 451.77 667.56 527.64 637.84 606.55 605.85 676.94 578.36 732.81 559.58 760.58 540.8 757.04 532.51 721.14 531.96 664.12 529.14 592.53 529.59 517.43 528.32 449.6 518.24 384.57 499.33 331.49 468.38 291.77 424.16 255.09 367.06 227.37 302.05 208.59 233.56 189.81 174.61 181.75 130.98 185.89 97.19 193.07 81.27 216.84 80.83 257.26 89.14 300.49 107.09 355.67 129.02 413.5 153.63 456.75 177.24 485.04 196.02 488.58 214.8 460.81 226.96 412.55 234.9 355.93 245.51 290.78 256.87 234.82 273.16 195.28 298.21 162.29 334.05 146.95 381.6 146.69 438.98 150.21 505.53 162.77 574.01 181.55Q574.05 181.56 574.05 181.56" opacity="0.08"></path><path d="M540.05 268.98C634.39 297.15 685.65 368.01 692.66 468.1 680.27 568.73 648.5 674.24 620.34 726.58 592.17 709.51 572.93 626.76 548.41 533.6 504.48 432.15 430.39 356.07 336.05 327.9 233.97 299.73 163.66 324.82 137.48 389.35 128.05 445.59 145.83 505.51 174 522.58 202.16 470.24 235.39 387.56 281.73 323.85 344.82 260.68 437.97 240.81 540.05 268.98Q540.05 268.98 540.05 268.98" opacity="0.36"></path><path d="M506.05 414.69C626.68 452.24 654.03 609.63 616.48 692.58 578.92 654.68 490.68 516.83 370.05 479.28 235.85 441.72 180.69 518.68 218.25 556.58 255.8 473.63 371.85 377.13 506.05 414.69Q506.05 414.69 506.05 414.69" opacity="0.95"></path></g></svg>',d='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient gradientTransform="rotate(270)" x1="50%" y1="0%" x2="50%" y2="100%" id="sssquiggly-grad"><stop stop-color="hsla(0, 0%, 74%, 1.00)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsla(0, 0%, 33%, 1.00)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><g stroke-width="2" stroke="url(#sssquiggly-grad)" fill="none" stroke-linecap="round" transform="matrix(1,0,0,1,0,53.62754440307617)"><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,665)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,630)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,595)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,560)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,525)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,490)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,455)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,420)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,385)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,350)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,315)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,280)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,245)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,210)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,175)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,140)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,105)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,70)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,35)"></path></g></svg>',p='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="gggyrate-grad"><stop stop-color="hsl(0, 0%, 72%)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsl(0, 0%, 38%)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><g stroke-width="1" stroke="url(#gggyrate-grad)" fill="none"><path d="M400.0000305175781 -19.15570068359375L763.0000537130439 190.4221548070758V609.5778657884148L400.0000305175781 819.1557212790844L37.00000732211237 609.5778657884148V190.4221548070758L400.0000305175781 -19.15570068359375Z " transform="rotate(44, 400, 400)" opacity="0.05"></path><path d="M400.0000305175781 -0.1031494140625L746.5000526587046 199.94843991794022V600.0516185819456L400.0000305175781 800.1032079139484L53.50000837645172 600.0516185819456V199.94843991794022L400.0000305175781 -0.1031494140625Z " transform="rotate(42, 400, 400)" opacity="0.10"></path><path d="M400.0000305175781 18.9493408203125L730.0000516043651 209.4746639936484V590.5253103403203L400.0000305175781 781.0506335136562L70.00000943079107 590.5253103403203V209.4746639936484L400.0000305175781 18.9493408203125Z " transform="rotate(40, 400, 400)" opacity="0.14"></path><path d="M400.0000305175781 38.00189208984375L713.5000505500258 219.00094910451287V580.9990631338511L400.0000305175781 761.9981201485202L86.50001048513042 580.9990631338511V219.00094910451287L400.0000305175781 38.00189208984375Z " transform="rotate(38, 400, 400)" opacity="0.19"></path><path d="M400.0000305175781 57.054412841796875L697.0000494956864 228.52720369779922V571.4727854098039L400.0000305175781 742.9455762658063L103.00001153946977 571.4727854098039V228.52720369779922L400.0000305175781 57.054412841796875Z " transform="rotate(36, 400, 400)" opacity="0.23"></path><path d="M400.0000305175781 76.10696411132812L680.5000484413472 238.0534888086637V561.9465382033347L400.0000305175781 723.8930629006703L119.50001259380912 561.9465382033347V238.0534888086637L400.0000305175781 76.10696411132812Z " transform="rotate(34, 400, 400)" opacity="0.28"></path><path d="M400.0000305175781 95.15948486328125L664.0000473870078 247.57974340195V552.4202604792875L400.0000305175781 704.8405190179562L136.00001364814847 552.4202604792875V247.57974340195L400.0000305175781 95.15948486328125Z " transform="rotate(32, 400, 400)" opacity="0.32"></path><path d="M400.00001525878906 114.21200561523438L647.5000310738794 257.1059979952363V542.8939827552402L400.00001525878906 685.7879751352422L152.49999944369875 542.8939827552402V257.1059979952363L400.00001525878906 114.21200561523438Z " transform="rotate(30, 400, 400)" opacity="0.37"></path><path d="M400 133.26455688476562L631.0000147607509 266.6322831061008V533.3677355487711L400 666.7354617701062L168.99998523924904 533.3677355487711V266.6322831061008L400 133.26455688476562Z " transform="rotate(28, 400, 400)" opacity="0.41"></path><path d="M400 152.31707763671875L614.5000137064116 276.15853769938707V523.8414578247238L400 647.682917887392L185.4999862935884 523.8414578247238V276.15853769938707L400 152.31707763671875Z " transform="rotate(26, 400, 400)" opacity="0.46"></path><path d="M400 171.36959838867188L598.0000126520722 285.6847922926735V514.3151801006766L400 628.6303740046782L201.99998734792774 514.3151801006766V285.6847922926735L400 171.36959838867188Z " transform="rotate(24, 400, 400)" opacity="0.50"></path><path d="M400 190.42214965820312L581.500011597733 295.2110774035379V504.7889328942074L400 609.5778606395422L218.4999884022671 504.7889328942074V295.2110774035379L400 190.42214965820312Z " transform="rotate(22, 400, 400)" opacity="0.55"></path><path d="M400 209.47467041015625L565.0000105433935 304.7373319968242V495.2626551701601L400 590.525316756828L234.99998945660644 495.2626551701601V304.7373319968242L400 209.47467041015625Z " transform="rotate(20, 400, 400)" opacity="0.59"></path><path d="M400 228.5272216796875L548.5000094890542 314.2636171076887V485.736407963691L400 571.4728033916922L251.49999051094585 485.736407963691V314.2636171076887L400 228.5272216796875Z " transform="rotate(18, 400, 400)" opacity="0.64"></path><path d="M400 247.57974243164062L532.0000084347148 323.789871700975V476.2101302396438L400 552.4202595089781L267.9999915652852 476.2101302396438V323.789871700975L400 247.57974243164062Z " transform="rotate(16, 400, 400)" opacity="0.68"></path><path d="M400 266.63226318359375L515.5000073803755 333.3161262942613V466.68385251559647L400 533.367715626264L284.49999261962455 466.68385251559647V333.3161262942613L400 266.63226318359375Z " transform="rotate(14, 400, 400)" opacity="0.73"></path><path d="M400 285.68479919433594L499.0000063260361 342.84239614633674V457.1575900503383L400 514.3151870023391L300.9999936739639 457.1575900503383V342.84239614633674L400 285.68479919433594Z " transform="rotate(12, 400, 400)" opacity="0.77"></path><path d="M400 304.7373352050781L482.50000527169675 352.3686659984121V447.63132758508004L400 495.262658378414L317.49999472830325 447.63132758508004V352.3686659984121L400 304.7373352050781Z " transform="rotate(10, 400, 400)" opacity="0.82"></path><path d="M400 323.7898712158203L466.0000042173574 361.8949358504875V438.1050651198219L400 476.21012975448906L333.9999957826426 438.1050651198219V361.8949358504875L400 323.7898712158203Z " transform="rotate(8, 400, 400)" opacity="0.86"></path><path d="M400 342.8424072265625L449.50000316301805 371.4212057025629V428.5788026545637L400 457.1576011305641L350.49999683698195 428.5788026545637V371.4212057025629L400 342.8424072265625Z " transform="rotate(6, 400, 400)" opacity="0.91"></path><path d="M400 361.8949279785156L433.0000021086787 380.9474602958492V419.0525249305164L400 438.10505724785L366.9999978913213 419.0525249305164V380.9474602958492L400 361.8949279785156Z " transform="rotate(4, 400, 400)" opacity="0.95"></path><path d="M400 380.9474639892578L416.50000105433935 390.4737301479246V409.5262624652582L400 419.052528623925L383.49999894566065 409.5262624652582V390.4737301479246L400 380.9474639892578Z " transform="rotate(2, 400, 400)" opacity="1.00"></path></g></svg>',y='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><filter id="llleaves-blur-2" x="-100%" y="-100%" width="400%" height="400%"><feGaussianBlur in="SourceGraphic" stdDeviation="2"></feGaussianBlur></filter><filter id="llleaves-blur-3" x="-100%" y="-100%" width="400%" height="400%"><feGaussianBlur in="SourceGraphic" stdDeviation="4"></feGaussianBlur></filter><filter id="llleaves-blur-4" x="-100%" y="-100%" width="400%" height="400%"><feGaussianBlur in="SourceGraphic" stdDeviation="12"></feGaussianBlur></filter></defs><g fill="hsl(0, 0%, 48%)"><path d="M254 117H304C332 117 354 139 354 167H304C276 167 254 145 254 117Z " transform="matrix(-0.2953922490001962,-0.33980991098778723,0.33980991098778723,-0.2953922490001962,345.5462363357939,287.2479122983152)" opacity="0.69"></path><path d="M3 218H53C81 218 103 240 103 268H53C25 268 3 246 3 218Z " transform="matrix(0.01797819046047583,-0.5148280155946784,0.5148280155946784,0.01797819046047583,-73.05605188391208,265.91718454462233)" opacity="0.79"></path><path d="M300 487H350C378 487 400 509 400 537H350C322 537 300 515 300 487Z " transform="matrix(-0.23322124145511378,-0.40395103960454554,0.40395103960454554,-0.23322124145511378,224.8045022317625,772.7921394866091)" opacity="0.72"></path><path d="M71 115H121C149 115 171 137 171 165H121C93 165 71 143 71 115Z " transform="matrix(-0.17951433779682988,-0.44431357748066536,0.44431357748066536,-0.17951433779682988,80.51733402612327,218.89395016671665)" opacity="0.74"></path><path d="M627 432H677C705 432 727 454 727 482H677C649 482 627 460 627 432Z " transform="matrix(-0.3830539845813393,-0.04703311529892784,0.04703311529892784,-0.3830539845813393,914.8334138699565,663.8970900110462)" filter="url(#llleaves-blur-2)" opacity="0.59"></path><path d="M573 630H623C651 630 673 652 673 680H623C595 680 573 658 573 630Z " transform="matrix(-0.3827771105130054,-0.12437182247279545,0.12437182247279545,-0.3827771105130054,780.0065961299213,983.2026527865701)" opacity="0.62"></path><path d="M450 188H500C528 188 550 210 550 238H500C472 238 450 216 450 188Z " transform="matrix(-0.33385356512332526,-0.2801364033622022,0.2801364033622022,-0.33385356512332526,607.2577286455136,424.17901105236945)" opacity="0.67"></path><path d="M591 727H641C669 727 691 749 691 777H641C613 777 591 755 591 727Z " transform="matrix(-0.3837194371186922,-0.10281731329607838,0.10281731329607838,-0.3837194371186922,809.6455395944308,1106.4629145360427)" filter="url(#llleaves-blur-2)" opacity="0.61"></path><path d="M708 492H758C786 492 808 514 808 542H758C730 542 708 520 708 492Z " transform="matrix(-0.34040528417256866,0.09121132099332671,-0.09121132099332671,-0.34040528417256866,1063.1834583563568,623.8513506042764)" filter="url(#llleaves-blur-2)" opacity="0.54"></path><path d="M119 200H169C197 200 219 222 219 250H169C141 250 119 228 119 200Z " transform="matrix(-0.06961285767523812,-0.4953212197910323,0.4953212197910323,-0.06961285767523812,69.31729849413298,324.37217912161304)" opacity="0.77"></path><path d="M-8 442H42C70 442 92 464 92 492H42C14 492 -8 470 -8 442Z " transform="matrix(0.018010076783796368,-0.5157411204255463,0.5157411204255463,0.018010076783796368,-199.60752646364955,480.25042119984005)" opacity="0.79"></path><path d="M481 722H531C559 722 581 744 581 772H531C503 772 481 750 481 722Z " transform="matrix(-0.3510569529260324,-0.24581272477973895,0.24581272477973895,-0.3510569529260324,533.7891365932583,1139.7661006937874)" opacity="0.66"></path><path d="M696 614H746C774 614 796 636 796 664H746C718 664 696 642 696 614Z " transform="matrix(-0.3542185504132941,0.062458287505305306,-0.062458287505305306,-0.3542185504132941,1050.1578843242073,818.7517712351371)" filter="url(#llleaves-blur-2)" opacity="0.55"></path><path d="M366 588H416C444 588 466 610 466 638H416C388 638 366 616 366 588Z " transform="matrix(-0.2849455595886792,-0.3518784613033493,0.3518784613033493,-0.2849455595886792,318.8358560099374,934.0530679300535)" opacity="0.70"></path><path d="M356 345H406C434 345 456 367 456 395H406C378 395 356 373 356 345Z " transform="matrix(-0.2849455595886792,-0.3518784613033493,0.3518784613033493,-0.2849455595886792,391.4928665107645,618.2925123369711)" opacity="0.70"></path><path d="M374 9H424C452 9 474 31 474 59H424C396 59 374 37 374 9Z " transform="matrix(-0.3836236788346756,-0.11000231977366201,0.11000231977366201,-0.3836236788346756,582.916360953598,93.68418866441166)" filter="url(#llleaves-blur-2)" opacity="0.61"></path><path d="M245 735H295C323 735 345 757 345 785H295C267 785 245 763 245 735Z " transform="matrix(-0.18636546518258623,-0.4390495220582399,0.4390495220582399,-0.18636546518258623,16.300175464600613,1031.1573625459464)" opacity="0.73"></path><path d="M406 271H456C484 271 506 293 506 321H456C428 321 406 299 406 271Z " transform="matrix(-0.31845399072931724,-0.30752744413981775,0.30752744413981775,-0.31845399072931724,510.1868963071826,530.4948957836348)" opacity="0.68"></path><path d="M235 17H285C313 17 335 39 335 67H285C257 67 235 45 235 17Z " transform="matrix(-0.3848415529516155,-0.09595177580849437,0.09595177580849437,-0.3848415529516155,390.64986800725364,85.50960132938874)" filter="url(#llleaves-blur-2)" opacity="0.61"></path><path d="M256 565H306C334 565 356 587 356 615H306C278 615 256 593 256 565Z " transform="matrix(-0.20754546214339273,-0.4255312583349481,0.4255312583349481,-0.20754546214339273,118.4454689982588,842.6643877150958)" opacity="0.73"></path><path d="M84 288H134C162 288 184 310 184 338H134C106 338 84 316 84 288Z " transform="matrix(-0.03527706809846801,-0.5044855773914882,0.5044855773914882,-0.03527706809846801,-19.176858598341113,391.6427896852799)" opacity="0.78"></path><path d="M323 72H373C401 72 423 94 423 122H373C345 122 323 100 323 72Z " transform="matrix(-0.36923841290278064,-0.196327546672124,0.196327546672124,-0.36923841290278064,491.68215598554116,206.04630096027196)" opacity="0.64"></path><path d="M465 616H515C543 616 565 638 565 666H515C487 666 465 644 465 616Z " transform="matrix(-0.34520809364150107,-0.2601329570918176,0.2601329570918176,-0.34520809364150107,526.0369427295179,996.2468609264884)" opacity="0.66"></path><path d="M-1 644H49C77 644 99 666 99 694H49C21 694 -1 672 -1 644Z " transform="matrix(0.018010076783796368,-0.5157411204255463,0.5157411204255463,0.018010076783796368,-296.9133033270965,682.222573532492)" opacity="0.79"></path><path d="M701 245H751C779 245 801 267 801 295H751C723 295 701 273 701 245Z " transform="matrix(-0.34040528417256866,0.09121132099332671,-0.09121132099332671,-0.34040528417256866,1031.2714250817971,293.4097246606052)" filter="url(#llleaves-blur-2)" opacity="0.54"></path><path d="M91 484H141C169 484 191 506 191 534H141C113 534 91 512 91 484Z " transform="matrix(-0.03527706809846801,-0.5044855773914882,0.5044855773914882,-0.03527706809846801,-110.80909229038352,598.08849407432)" opacity="0.78"></path><path d="M191 286H241C269 286 291 308 291 336H241C213 336 191 314 191 286Z " transform="matrix(-0.1343406430917446,-0.4685014991130271,0.4685014991130271,-0.1343406430917446,127.67212876095903,465.6888012877721)" opacity="0.75"></path><path d="M88 610H138C166 610 188 632 188 660H138C110 660 88 638 88 610Z " transform="matrix(-0.03527706809846801,-0.5044855773914882,0.5044855773914882,-0.03527706809846801,-177.48010624600647,727.0199479225525)" opacity="0.78"></path><path d="M700 25H750C778 25 800 47 800 75H750C722 75 700 53 700 25Z " transform="matrix(-0.3772580435139389,-0.013174141176457967,0.013174141176457967,-0.3772580435139389,1032.2848255766312,78.74350805804042)" filter="url(#llleaves-blur-2)" opacity="0.58"></path><path d="M117 19H167C195 19 217 41 217 69H167C139 69 117 47 117 19Z " transform="matrix(-0.3838172112864224,-0.1173446975621604,0.1173446975621604,-0.3838172112864224,225.9343075920975,80.48452178948338)" opacity="0.62"></path><path d="M613 304H663C691 304 713 326 713 354H663C635 354 613 332 613 304Z " transform="matrix(-0.3845457334088762,-0.074748118537608,0.074748118537608,-0.3845457334088762,893.3616902512119,505.07354888195437)" filter="url(#llleaves-blur-2)" opacity="0.60"></path><path d="M525 508H575C603 508 625 530 625 558H575C547 558 525 536 525 508Z " transform="matrix(-0.37112098523430703,-0.18909558681832528,0.18909558681832528,-0.37112098523430703,687.6066187355591,839.5374475504227)" opacity="0.64"></path><path d="M422 96H472C500 96 522 118 522 146H472C444 146 422 124 422 96Z " transform="matrix(-0.36448689252527927,-0.21043660551556026,0.21043660551556026,-0.36448689252527927,618.5749840045489,264.4289917989032)" opacity="0.65"></path><path d="M187 648H237C265 648 287 670 287 698H237C209 698 187 676 187 648Z " transform="matrix(-0.1343406430917446,-0.4685014991130271,0.4685014991130271,-0.1343406430917446,-46.46277649032379,874.4461080905317)" opacity="0.75"></path><path d="M697 720H747C775 720 797 742 797 770H747C719 770 697 748 697 720Z " transform="matrix(-0.3542185504132941,0.062458287505305306,-0.062458287505305306,-0.3542185504132941,1058.132681350183,962.236479291441)" filter="url(#llleaves-blur-2)" opacity="0.55"></path><path d="M-9 325H41C69 325 91 347 91 375H41C13 375 -9 353 -9 325Z " transform="matrix(0.018010076783796368,-0.5157411204255463,0.5157411204255463,0.018010076783796368,-140.24780529707684,364.84185906311865)" opacity="0.79"></path></g><g fill="none" stroke-width="3" stroke="hsl(0, 0%, 48%)"><path d="M1 544H51C79 544 101 566 101 594H51C23 594 1 572 1 544Z " transform="matrix(0.01797819046047583,-0.5148280155946784,0.5148280155946784,0.01797819046047583,-242.85402858685626,585.0266384233179)" opacity="0.79"></path><path d="M64 386H114C142 386 164 408 164 436H114C86 436 64 414 64 386Z " transform="matrix(-0.0089070012150814,-0.5102817578571414,0.5102817578571414,-0.0089070012150814,-94.71040434076582,472.8328978951126)" opacity="0.78"></path><path d="M5 22H55C83 22 105 44 105 72H55C27 72 5 50 5 22Z " transform="matrix(-0.38254955963579196,-0.13172237683440474,0.13172237683440474,-0.38254955963579196,69.84927406875154,72.22456002877448)" opacity="0.62"></path><path d="M119 725H169C197 725 219 747 219 775H169C141 775 119 753 119 725Z " transform="matrix(-0.06961285767523812,-0.4953212197910323,0.4953212197910323,-0.06961285767523812,-190.72634189615894,885.918929401113)" opacity="0.77"></path><path d="M426 506H476C504 506 526 528 526 556H476C448 556 426 534 426 506Z " transform="matrix(-0.3264570935921235,-0.2939432873600664,0.2939432873600664,-0.3264570935921235,475.30969096165546,844.2657214808091)" opacity="0.67"></path><path d="M8 732H58C86 732 108 754 108 782H58C30 782 8 760 8 732Z " transform="matrix(0.01797819046047583,-0.5148280155946784,0.5148280155946784,0.01797819046047583,-332.76754285187917,773.2505347259112)" opacity="0.79"></path><path d="M492 19H542C570 19 592 41 592 69H542C514 69 492 47 492 19Z " transform="matrix(-0.38100753497913875,-0.1386754017635454,0.1386754017635454,-0.38100753497913875,742.4043662810973,135.9263992949237)" opacity="0.62"></path><path d="M602 34H652C680 34 702 56 702 84H652C624 84 602 62 602 34Z " transform="matrix(-0.38405838470748105,-0.09575651003429414,0.09575651003429414,-0.38405838470748105,896.7564327372544,144.09268924010115)" filter="url(#llleaves-blur-2)" opacity="0.61"></path><path d="M259 374H309C337 374 359 396 359 424H309C281 424 259 402 259 374Z " transform="matrix(-0.20754546214339273,-0.4255312583349481,0.4255312583349481,-0.20754546214339273,203.34457572666406,613.2997982207127)" opacity="0.73"></path><path d="M620 167H670C698 167 720 189 720 217H670C642 217 620 195 620 167Z " transform="matrix(-0.3830539845813393,-0.04703311529892784,0.04703311529892784,-0.3830539845813393,917.6158115321033,297.0585522898988)" filter="url(#llleaves-blur-2)" opacity="0.59"></path><path d="M165 104H215C243 104 265 126 265 154H215C187 154 165 132 165 104Z " transform="matrix(-0.26884028279970135,-0.37002690473986627,0.37002690473986627,-0.26884028279970135,225.06719009049306,243.2361810002327)" opacity="0.70"></path><path d="M499 305H549C577 305 599 327 599 355H549C521 355 499 333 499 305Z " transform="matrix(-0.3562079759936054,-0.2313241643677639,0.2313241643677639,-0.3562079759936054,668.2212045791273,574.5455983157922)" opacity="0.65"></path><path d="M163 547H213C241 547 263 569 263 597H213C185 597 163 575 163 547Z " transform="matrix(-0.10271023864389431,-0.48321368127578157,0.48321368127578157,-0.10271023864389431,-41.520944858597574,733.674770616049)" opacity="0.76"></path><path d="M152 374H202C230 374 252 396 252 424H202C174 424 152 402 152 374Z " transform="matrix(-0.10271023864389431,-0.48321368127578157,0.48321368127578157,-0.10271023864389431,29.945209377029812,537.5905488366217)" opacity="0.76"></path><path d="M543 221H593C621 221 643 243 643 271H593C565 271 543 249 543 221Z " transform="matrix(-0.37646289601111577,-0.16761208025847305,0.16761208025847305,-0.37646289601111577,775.0099255910073,438.00383601200895)" opacity="0.63"></path><path d="M546 396H596C624 396 646 418 646 446H596C568 446 546 424 546 396Z " transform="matrix(-0.37646289601111577,-0.16761208025847305,0.16761208025847305,-0.37646289601111577,749.8072002338079,679.3876790547296)" opacity="0.63"></path><path d="M373 720H423C451 720 473 742 473 770H423C395 770 373 748 373 720Z " transform="matrix(-0.2948516195622703,-0.3391879879623836,0.3391879879623836,-0.2948516195622703,295.0271840428646,1108.1409754819797)" opacity="0.69"></path><path d="M296 654H346C374 654 396 676 396 704H346C318 704 296 682 296 654Z " transform="matrix(-0.23322124145511378,-0.40395103960454554,0.40395103960454554,-0.23322124145511378,152.41179365198295,977.124282651195)" opacity="0.72"></path><path d="M342 177H392C420 177 442 199 442 227H392C364 227 342 205 342 177Z " transform="matrix(-0.27451992834167466,-0.36430024933742544,0.36430024933742544,-0.27451992834167466,426.02316154377655,400.258723265289)" opacity="0.70"></path><path d="M200 458H250C278 458 300 480 300 508H250C222 508 200 486 200 458Z " transform="matrix(-0.1343406430917446,-0.4685014991130271,0.4685014991130271,-0.1343406430917446,57.298936701344076,665.0119053915694)" opacity="0.75"></path><path d="M295 268H345C373 268 395 290 395 318H345C317 318 295 296 295 268Z " transform="matrix(-0.23322124145511378,-0.40395103960454554,0.40395103960454554,-0.23322124145511378,307.1036736978824,500.69693240991654)" opacity="0.72"></path><path d="M618 540H668C696 540 718 562 718 590H668C640 590 618 568 618 540Z " transform="matrix(-0.3830539845813393,-0.04703311529892784,0.04703311529892784,-0.3830539845813393,897.3063515564406,812.8436223081407)" filter="url(#llleaves-blur-2)" opacity="0.59"></path><path d="M451 397H501C529 397 551 419 551 447H501C473 447 451 425 451 397Z " transform="matrix(-0.34520809364150107,-0.2601329570918176,0.2601329570918176,-0.34520809364150107,564.173147021645,698.0044270197141)" opacity="0.66"></path><path d="M531 114H581C609 114 631 136 631 164H581C553 164 531 142 531 114Z " transform="matrix(-0.37951117493522923,-0.15333246767134662,0.15333246767134662,-0.37951117493522923,780.1827796310508,280.8382170330492)" opacity="0.63"></path><path d="M704 365H754C782 365 804 387 804 415H754C726 415 704 393 704 365Z " transform="matrix(-0.34040528417256866,0.09121132099332671,-0.09121132099332671,-0.34040528417256866,1046.2379994535142,453.98472479833345)" filter="url(#llleaves-blur-2)" opacity="0.54"></path><path d="M702 128H752C780 128 802 150 802 178H752C724 178 702 156 702 128Z " transform="matrix(-0.3403759083932654,0.09120344977698536,-0.09120344977698536,-0.3403759083932654,1021.9168109276143,136.4925197518766)" filter="url(#llleaves-blur-2)" opacity="0.54"></path><path d="M361 432H411C439 432 461 454 461 482H411C383 482 361 460 361 432Z " transform="matrix(-0.2849455595886792,-0.3518784613033493,0.3518784613033493,-0.2849455595886792,367.3041681753165,731.8421683277029)" opacity="0.70"></path><path d="M225 197H275C303 197 325 219 325 247H275C247 247 225 225 225 197Z " transform="matrix(-0.1721867540883599,-0.4485618301607065,0.4485618301607065,-0.1721867540883599,222.77063107862213,383.57996270181025)" opacity="0.74"></path><path d="M-12 120H38C66 120 88 142 88 170H38C10 170 -12 148 -12 120Z " transform="matrix(-0.1499991097700465,-0.4616497907302155,0.4616497907302155,-0.1499991097700465,-23.239253484619482,184.29256296440494)" opacity="0.75"></path></g></svg>',f='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="rrreflection-grad"><stop stop-color="hsla(0, 0%, 75%, 1.00)" stop-opacity="1" offset="45%"></stop><stop stop-color="hsla(0, 0%, 36%, 1.00)" stop-opacity="1" offset="100%"></stop></linearGradient><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="rrreflection-grad-2"><stop stop-color="hsla(0, 0%, 36%, 1.00)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsla(0, 0%, 75%, 1.00)" stop-opacity="1" offset="45%"></stop></linearGradient><linearGradient gradientTransform="rotate(270)" x1="50%" y1="0%" x2="50%" y2="100%" id="rrreflection-grad-3"><stop stop-color="hsla(0, 0%, 75%, 1.00)" stop-opacity="1" offset="45%"></stop><stop stop-color="hsla(0, 0%, 36%, 1.00)" stop-opacity="1" offset="100%"></stop></linearGradient><linearGradient gradientTransform="rotate(270)" x1="50%" y1="0%" x2="50%" y2="100%" id="rrreflection-grad-4"><stop stop-color="hsla(0, 0%, 36%, 1.00)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsla(0, 0%, 75%, 1.00)" stop-opacity="1" offset="45%"></stop></linearGradient></defs><g stroke-width="2" stroke="url(#rrreflection-grad)" fill="none"><circle r="375" cx="50%" cy="0"></circle><circle r="362.5" cx="50%" cy="0"></circle><circle r="350" cx="50%" cy="0"></circle><circle r="337.5" cx="50%" cy="0"></circle><circle r="325" cx="50%" cy="0"></circle><circle r="312.5" cx="50%" cy="0"></circle><circle r="300" cx="50%" cy="0"></circle><circle r="287.5" cx="50%" cy="0"></circle><circle r="275" cx="50%" cy="0"></circle><circle r="262.5" cx="50%" cy="0"></circle><circle r="250" cx="50%" cy="0"></circle><circle r="237.5" cx="50%" cy="0"></circle><circle r="225" cx="50%" cy="0"></circle><circle r="212.5" cx="50%" cy="0"></circle><circle r="200" cx="50%" cy="0"></circle><circle r="187.5" cx="50%" cy="0"></circle><circle r="175" cx="50%" cy="0"></circle><circle r="162.5" cx="50%" cy="0"></circle><circle r="150" cx="50%" cy="0"></circle><circle r="137.5" cx="50%" cy="0"></circle><circle r="125" cx="50%" cy="0"></circle><circle r="112.5" cx="50%" cy="0"></circle><circle r="100" cx="50%" cy="0"></circle><circle r="87.5" cx="50%" cy="0"></circle><circle r="75" cx="50%" cy="0"></circle><circle r="62.5" cx="50%" cy="0"></circle><circle r="50" cx="50%" cy="0"></circle><circle r="37.5" cx="50%" cy="0"></circle><circle r="25" cx="50%" cy="0"></circle><circle r="12.5" cx="50%" cy="0"></circle></g><g stroke-width="2" stroke="url(#rrreflection-grad-2)" fill="none"><circle r="375" cx="50%" cy="100%"></circle><circle r="362.5" cx="50%" cy="100%"></circle><circle r="350" cx="50%" cy="100%"></circle><circle r="337.5" cx="50%" cy="100%"></circle><circle r="325" cx="50%" cy="100%"></circle><circle r="312.5" cx="50%" cy="100%"></circle><circle r="300" cx="50%" cy="100%"></circle><circle r="287.5" cx="50%" cy="100%"></circle><circle r="275" cx="50%" cy="100%"></circle><circle r="262.5" cx="50%" cy="100%"></circle><circle r="250" cx="50%" cy="100%"></circle><circle r="237.5" cx="50%" cy="100%"></circle><circle r="225" cx="50%" cy="100%"></circle><circle r="212.5" cx="50%" cy="100%"></circle><circle r="200" cx="50%" cy="100%"></circle><circle r="187.5" cx="50%" cy="100%"></circle><circle r="175" cx="50%" cy="100%"></circle><circle r="162.5" cx="50%" cy="100%"></circle><circle r="150" cx="50%" cy="100%"></circle><circle r="137.5" cx="50%" cy="100%"></circle><circle r="125" cx="50%" cy="100%"></circle><circle r="112.5" cx="50%" cy="100%"></circle><circle r="100" cx="50%" cy="100%"></circle><circle r="87.5" cx="50%" cy="100%"></circle><circle r="75" cx="50%" cy="100%"></circle><circle r="62.5" cx="50%" cy="100%"></circle><circle r="50" cx="50%" cy="100%"></circle><circle r="37.5" cx="50%" cy="100%"></circle><circle r="25" cx="50%" cy="100%"></circle><circle r="12.5" cx="50%" cy="100%"></circle></g><g stroke-width="2" stroke="url(#rrreflection-grad-3)" fill="none"><circle r="375" cx="0" cy="50%"></circle><circle r="362.5" cx="0" cy="50%"></circle><circle r="350" cx="0" cy="50%"></circle><circle r="337.5" cx="0" cy="50%"></circle><circle r="325" cx="0" cy="50%"></circle><circle r="312.5" cx="0" cy="50%"></circle><circle r="300" cx="0" cy="50%"></circle><circle r="287.5" cx="0" cy="50%"></circle><circle r="275" cx="0" cy="50%"></circle><circle r="262.5" cx="0" cy="50%"></circle><circle r="250" cx="0" cy="50%"></circle><circle r="237.5" cx="0" cy="50%"></circle><circle r="225" cx="0" cy="50%"></circle><circle r="212.5" cx="0" cy="50%"></circle><circle r="200" cx="0" cy="50%"></circle><circle r="187.5" cx="0" cy="50%"></circle><circle r="175" cx="0" cy="50%"></circle><circle r="162.5" cx="0" cy="50%"></circle><circle r="150" cx="0" cy="50%"></circle><circle r="137.5" cx="0" cy="50%"></circle><circle r="125" cx="0" cy="50%"></circle><circle r="112.5" cx="0" cy="50%"></circle><circle r="100" cx="0" cy="50%"></circle><circle r="87.5" cx="0" cy="50%"></circle><circle r="75" cx="0" cy="50%"></circle><circle r="62.5" cx="0" cy="50%"></circle><circle r="50" cx="0" cy="50%"></circle><circle r="37.5" cx="0" cy="50%"></circle><circle r="25" cx="0" cy="50%"></circle><circle r="12.5" cx="0" cy="50%"></circle></g><g stroke-width="2" stroke="url(#rrreflection-grad-4)" fill="none"><circle r="375" cx="100%" cy="50%"></circle><circle r="362.5" cx="100%" cy="50%"></circle><circle r="350" cx="100%" cy="50%"></circle><circle r="337.5" cx="100%" cy="50%"></circle><circle r="325" cx="100%" cy="50%"></circle><circle r="312.5" cx="100%" cy="50%"></circle><circle r="300" cx="100%" cy="50%"></circle><circle r="287.5" cx="100%" cy="50%"></circle><circle r="275" cx="100%" cy="50%"></circle><circle r="262.5" cx="100%" cy="50%"></circle><circle r="250" cx="100%" cy="50%"></circle><circle r="237.5" cx="100%" cy="50%"></circle><circle r="225" cx="100%" cy="50%"></circle><circle r="212.5" cx="100%" cy="50%"></circle><circle r="200" cx="100%" cy="50%"></circle><circle r="187.5" cx="100%" cy="50%"></circle><circle r="175" cx="100%" cy="50%"></circle><circle r="162.5" cx="100%" cy="50%"></circle><circle r="150" cx="100%" cy="50%"></circle><circle r="137.5" cx="100%" cy="50%"></circle><circle r="125" cx="100%" cy="50%"></circle><circle r="112.5" cx="100%" cy="50%"></circle><circle r="100" cx="100%" cy="50%"></circle><circle r="87.5" cx="100%" cy="50%"></circle><circle r="75" cx="100%" cy="50%"></circle><circle r="62.5" cx="100%" cy="50%"></circle><circle r="50" cx="100%" cy="50%"></circle><circle r="37.5" cx="100%" cy="50%"></circle><circle r="25" cx="100%" cy="50%"></circle><circle r="12.5" cx="100%" cy="50%"></circle></g></svg>',m='<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="ssspill-grad"><stop stop-color="hsl(0, 0%, 77%)" stop-opacity="1" offset="45%"></stop><stop stop-color="hsl(0, 0%, 37%)" stop-opacity="1" offset="100%"></stop></linearGradient><filter id="ssspot-filter" x="-20%" y="-20%" width="140%" height="140%" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">\n <feTurbulence type="turbulence" baseFrequency="0.022 0.218" numOctaves="2" seed="87" stitchTiles="stitch" x="0%" y="0%" width="100%" height="100%" result="turbulence"></feTurbulence>\n <feGaussianBlur stdDeviation="0 3" x="0%" y="0%" width="100%" height="100%" in="turbulence" edgeMode="duplicate" result="blur"></feGaussianBlur>\n <feDisplacementMap in="SourceGraphic" in2="blur" scale="32" xChannelSelector="R" yChannelSelector="B" x="0%" y="0%" width="100%" height="100%" result="displacementMap"></feDisplacementMap>\n </filter></defs><rect width="100%" height="100%" fill="transparent"></rect><g fill="url(#ssspill-grad)" filter="url(#ssspot-filter)"><circle r="5.064637581237235" cx="136.70038490450102" cy="322.87185543706664" opacity="0.3244644128181912"></circle><circle r="4.770509280668091" cx="421.5778568832103" cy="710.1043840075182" opacity="0.64696020927194"></circle><circle r="9.835882218732523" cx="617.769473021036" cy="477.12597866641005" opacity="0.38566873988271266"></circle><circle r="3.8535350454815425" cx="714.2776046404942" cy="33.31004964351794" opacity="0.2614721505518711"></circle><circle r="9.275104770978938" cx="289.96964528808513" cy="763.8151793066729" opacity="0.5763166430882171"></circle><circle r="4.576124000103315" cx="269.54226794832033" cy="70.2515553635124" opacity="0.6076606141159029"></circle><circle r="5.790178959599836" cx="543.8175770109568" cy="642.6740590662263" opacity="0.7495523452366633"></circle><circle r="7.743472686206912" cx="26.28445121652266" cy="710.9477237956756" opacity="0.4736425784619894"></circle><circle r="9.962257889027647" cx="435.43616477391015" cy="422.7310547177035" opacity="0.11755425746822348"></circle><circle r="8.427846223093308" cx="247.97371238042658" cy="646.5264858303534" opacity="0.9237689569422886"></circle><circle r="6.376053396233492" cx="437.3532320238557" cy="282.8082413056359" opacity="0.8275546647641976"></circle><circle r="6.426153923676907" cx="600.1387231167249" cy="206.30940426901802" opacity="0.9329175951848773"></circle><circle r="8.1361382836631" cx="728.2950255754564" cy="741.9924134064652" opacity="0.4754630399750627"></circle><circle r="8.115993295395503" cx="311.7329464581275" cy="410.6170333522057" opacity="0.32029393131985895"></circle><circle r="5.585880444787948" cx="356.448847168845" cy="186.84920078681031" opacity="0.5362850227042624"></circle><circle r="7.686171374960393" cx="542.6814890035384" cy="596.5955082593058" opacity="0.9889592008005293"></circle><circle r="6.0805413136994435" cx="200.86886332492335" cy="765.0786433671055" opacity="0.8159336722560525"></circle><circle r="3.5937712425105035" cx="351.6463296369334" cy="237.757870499709" opacity="0.8228926231857105"></circle><circle r="9.460629885360593" cx="597.9711464679282" cy="755.6512018500514" opacity="0.7472534378018393"></circle><circle r="3.8703858366846196" cx="639.9566849364124" cy="541.6400039826909" opacity="0.8139164656582928"></circle><circle r="6.694319237705958" cx="253.11832734221542" cy="400.1844551974358" opacity="0.7832071357998105"></circle><circle r="6.595693971351071" cx="753.5175848074468" cy="360.10145832528036" opacity="0.6628515513662742"></circle><circle r="8.034614380701655" cx="50.424967780332985" cy="498.75536380435994" opacity="0.8752641293902157"></circle><circle r="4.639875187239055" cx="642.4825231771774" cy="765.0822769729735" opacity="0.7076909712588525"></circle><circle r="5.664347712591181" cx="747.2762567308683" cy="402.6268518939984" opacity="0.9237665847162766"></circle><circle r="6.410009271293615" cx="434.059741877686" cy="625.8570695408984" opacity="0.3645156881551104"></circle><circle r="2.8374735583139223" cx="470.7093209606608" cy="96.67857735393873" opacity="0.37825548954517174"></circle><circle r="8.63613829429884" cx="693.1548556178711" cy="60.93760993321313" opacity="0.3787680395096509"></circle><circle r="10.718949149858375" cx="129.58240675168977" cy="543.2334185586851" opacity="0.5686054221250393"></circle><circle r="5.692821218191993" cx="777.4370464725866" cy="113.50430653814902" opacity="0.5628795557985314"></circle><circle r="6.317980093988491" cx="427.09578627556584" cy="325.27808530674434" opacity="0.2736182770815919"></circle><circle r="7.88712208824338" cx="631.7079924942394" cy="231.4124721715011" opacity="0.5224398002072077"></circle><circle r="4.357756446711518" cx="323.29943113334986" cy="222.52592917361653" opacity="0.5169797967844608"></circle><circle r="5.493888744447794" cx="665.8598581579554" cy="787.1033430906083" opacity="0.5223214116744193"></circle><circle r="7.517853476842912" cx="116.30017536838176" cy="62.64032909174142" opacity="0.39904602328708183"></circle><circle r="5.023844287095297" cx="777.8207493455711" cy="651.9808126388087" opacity="0.5269737774854121"></circle><circle r="8.261546199699792" cx="397.4726409012115" cy="772.479339096511" opacity="0.9552392165572949"></circle><circle r="6.975305699615512" cx="530.4043083657534" cy="56.52801107881783" opacity="0.3737523316596554"></circle><circle r="6.314252516004984" cx="581.0426048998821" cy="263.0088076423418" opacity="0.9313945380497066"></circle><circle r="5.586018293179707" cx="781.7115314667565" cy="26.978659048420653" opacity="0.9917420517714075"></circle><circle r="5.189868525318406" cx="391.04754444795367" cy="638.072917264706" opacity="0.23302740559333018"></circle><circle r="8.582658615723016" cx="673.9576138616025" cy="19.933809505711753" opacity="0.6701279200139074"></circle><circle r="6.357493540079289" cx="123.90669631373837" cy="488.0247324258988" opacity="0.7642331101641929"></circle><circle r="4.948087264939262" cx="18.550629536363477" cy="486.1339794117908" opacity="0.5068299780740904"></circle><circle r="7.022256171754835" cx="635.7889384085983" cy="18.928934527753363" opacity="0.5995140994419672"></circle><circle r="8.069011145691581" cx="743.2055937818895" cy="157.13026366233964" opacity="0.6781326623315344"></circle><circle r="6.318855156144187" cx="365.4272171137583" cy="623.550937663551" opacity="0.40052734307106186"></circle><circle r="13.109566677482693" cx="155.728208130776" cy="698.7011028175236" opacity="0.9863651501714024"></circle><circle r="5.529714667429072" cx="124.00039618952381" cy="600.6005872192408" opacity="0.7013424113614146"></circle><circle r="8.291190685289456" cx="193.1740017478093" cy="20.389839256964233" opacity="0.714863193623361"></circle><circle r="11.307598752001851" cx="104.73007892158189" cy="154.31131625731152" opacity="0.3971388164145284"></circle><circle r="6.652038656178473" cx="677.4236517398409" cy="240.16424118897612" opacity="0.5813498863568359"></circle><circle r="4.711492236104993" cx="652.3416903952999" cy="52.88691210667636" opacity="0.16941983937584826"></circle><circle r="8.962484493393578" cx="304.0208990989756" cy="54.13048634779509" opacity="0.27134575835485986"></circle><circle r="4.966902895068733" cx="738.5670895322293" cy="287.27014134587836" opacity="0.11454964467488238"></circle><circle r="6.323754221490008" cx="579.3035561807245" cy="395.58836306868585" opacity="0.24775327347795462"></circle><circle r="8.852252656839175" cx="617.9455240813732" cy="266.9400079907079" opacity="0.6568129412905462"></circle><circle r="8.908371115857683" cx="271.6816211909598" cy="595.0317907157486" opacity="0.9140257685401563"></circle><circle r="7.414090408218658" cx="61.09803585294196" cy="135.3874610327573" opacity="0.12830547740693263"></circle><circle r="4.778558993493531" cx="194.46771390883075" cy="161.95221194961363" opacity="0.12397978601400744"></circle><circle r="7.659897065433649" cx="575.3511198138068" cy="721.6016229296499" opacity="0.9252443286863737"></circle><circle r="7.918703741937398" cx="642.592835831386" cy="376.3476613292704" opacity="0.7458626899189483"></circle><circle r="7.303172468799648" cx="660.246072259717" cy="699.1013098876236" opacity="0.9706673669625604"></circle><circle r="7.525523183578668" cx="18.78126103844683" cy="133.38925884694171" opacity="0.1191121931650569"></circle><circle r="8.335598043144977" cx="62.75622479877466" cy="397.28202764052537" opacity="0.630801632348704"></circle><circle r="8.011458092893253" cx="563.9361170956951" cy="160.56447580059188" opacity="0.48558490403557986"></circle><circle r="3.775704650284953" cx="473.97878657322536" cy="73.40175913218401" opacity="0.7271771570579831"></circle><circle r="5.642380230497978" cx="19.659242202124315" cy="398.65609444270353" opacity="0.6794944416150649"></circle><circle r="5.242677014793258" cx="761.8749859220591" cy="480.222787564896" opacity="0.5555133978484065"></circle><circle r="7.924448092034644" cx="216.56698120908683" cy="706.8250386728305" opacity="0.6411405747178552"></circle><circle r="8.189379214550701" cx="19.299531103793683" cy="181.85815719434925" opacity="0.1571764844018614"></circle><circle r="6.720833886137405" cx="159.2170073257431" cy="608.3457020201118" opacity="0.14584693725463327"></circle><circle r="6.700089021795847" cx="45.36211961875453" cy="437.7363468735674" opacity="0.15320439706470876"></circle><circle r="5.076367600327887" cx="145.6558433554847" cy="402.34667657085146" opacity="0.6415914983434743"></circle><circle r="7.764713064291891" cx="182.11217931562547" cy="556.2539307705125" opacity="0.4561826790960456"></circle><circle r="7.015909935162834" cx="233.76279025712103" cy="596.9618871495659" opacity="0.8522721891082585"></circle><circle r="5.033587564414365" cx="507.51260875730514" cy="290.1100331232045" opacity="0.6992860853244991"></circle><circle r="6.457614954817046" cx="167.41100229823937" cy="266.29948466799095" opacity="0.8589524200842407"></circle><circle r="7.045250825416426" cx="706.6125246834927" cy="428.4540986079489" opacity="0.8025516717085965"></circle><circle r="6.175537037846302" cx="73.50771670302261" cy="356.53026431486916" opacity="0.6353172914954376"></circle><circle r="7.007463818812145" cx="501.31002617372445" cy="668.7500771294677" opacity="0.22350388742308003"></circle><circle r="12.41177643663164" cx="713.4362647548354" cy="112.87292617267158" opacity="0.9717727645817735"></circle><circle r="4.385321771053903" cx="635.6516015840753" cy="738.3107818387881" opacity="0.5643270958015024"></circle><circle r="8.719745635192822" cx="71.17965372410578" cy="68.63043775367211" opacity="0.41513293252376504"></circle><circle r="7.273486074685287" cx="25.12109085467052" cy="650.4161398482097" opacity="0.9731295239377785"></circle><circle r="8.530296899115285" cx="671.4863297330435" cy="664.153293820015" opacity="0.3217013016935649"></circle><circle r="8.458185260931904" cx="241.8285621737752" cy="322.2479343878232" opacity="0.8087240910494169"></circle><circle r="6.4435249084510255" cx="260.36035586683283" cy="696.6006708382541" opacity="0.22377431584057123"></circle><circle r="7.980206118764022" cx="687.146367921709" cy="154.88984819966385" opacity="0.582047311383192"></circle><circle r="5.086290093904966" cx="76.64337159618167" cy="300.57291310774013" opacity="0.20286003186761248"></circle><circle r="6.545663374129814" cx="504.70233957204465" cy="472.90164363843746" opacity="0.23647084027603357"></circle><circle r="5.2395977026094736" cx="56.75620187947368" cy="270.0118960837851" opacity="0.8435471714830057"></circle><circle r="5.3155842969018545" cx="188.13072638749298" cy="303.0486698924277" opacity="0.5394693812511525"></circle><circle r="8.734600651696763" cx="227.18056489445013" cy="274.0407447293409" opacity="0.7224956531192559"></circle><circle r="8.611406000306744" cx="760.8488410711525" cy="690.0083221600172" opacity="0.5092992532706102"></circle><circle r="7.439660037892503" cx="450.5927246909684" cy="731.7323204596263" opacity="0.7884946421942951"></circle><circle r="5.52246549737656" cx="748.4889853192769" cy="785.4741355304044" opacity="0.992843188453467"></circle><circle r="5.299417326668993" cx="395.9167132452262" cy="594.3519312863972" opacity="0.19909122341904079"></circle><circle r="3.1636870468347182" cx="712.8807615709318" cy="9.572962955560795" opacity="0.3501577379211317"></circle><circle r="11.669242647184692" cx="638.2318799443445" cy="431.2551344436883" opacity="0.6350449744738439"></circle><circle r="9.756375349577748" cx="734.9903194248748" cy="240.34137568653196" opacity="0.45015445927841713"></circle><circle r="9.417651781130118" cx="43.46634711092323" cy="334.52121543731636" opacity="0.5692814587665942"></circle><circle r="6.641234502006504" cx="405.5360959872538" cy="279.6403618396718" opacity="0.37282764216476705"></circle><circle r="4.81443572395604" cx="462.7142763327462" cy="161.20464683416287" opacity="0.7354250432759134"></circle><circle r="7.835313403018421" cx="189.54904177382036" cy="658.4469221445786" opacity="0.9703663768540637"></circle><circle r="7.397865159553385" cx="438.4878598179197" cy="587.404057328699" opacity="0.8665894748796236"></circle><circle r="7.246774360001709" cx="777.0086746411627" cy="322.39470060870593" opacity="0.8677864953038456"></circle><circle r="8.571416326075788" cx="268.4955507533609" cy="118.5112174611568" opacity="0.5125198973177103"></circle><circle r="6.550232535320235" cx="347.4065254857393" cy="714.9095373206203" opacity="0.30326018868288807"></circle><circle r="7.2638482416744505" cx="127.01275272120493" cy="284.67648863992684" opacity="0.2202297491907314"></circle><circle r="4.385600303169796" cx="177.58656906044584" cy="355.6083664576744" opacity="0.9368346273905513"></circle><circle r="8.415810404622682" cx="721.1896659307722" cy="318.4489767955445" opacity="0.9051474942608474"></circle><circle r="5.647692726105001" cx="81.33014284599874" cy="452.37737556369234" opacity="0.43625622027050137"></circle><circle r="7.43207370843628" cx="365.46368259143884" cy="137.22267986245183" opacity="0.6102022150903069"></circle><circle r="7.584322434541415" cx="465.51751907754686" cy="513.4225453236667" opacity="0.3964668128860708"></circle><circle r="11.071405605117215" cx="382.00274059366166" cy="32.78184556890254" opacity="0.9496845569277172"></circle><circle r="4.258642968726291" cx="576.3375898792762" cy="784.3975182484722" opacity="0.3802314517095432"></circle><circle r="7.206046893007546" cx="648.1911963743094" cy="630.0317865567177" opacity="0.6854828506896351"></circle><circle r="6.841254534234591" cx="198.96778471322725" cy="463.11331458407545" opacity="0.3098770528061461"></circle><circle r="8.101453816290187" cx="16.02665298974565" cy="241.69491139103863" opacity="0.43959118412700315"></circle><circle r="8.098542520990984" cx="303.5714509666179" cy="95.43908133226675" opacity="0.5699354732523207"></circle><circle r="5.257219093193318" cx="521.0660934001576" cy="164.36065205489834" opacity="0.12165113724905458"></circle><circle r="7.917793785283358" cx="425.4314151589354" cy="542.2504804535222" opacity="0.2411785813882599"></circle><circle r="7.514768574567557" cx="347.6406486374675" cy="279.2241092428677" opacity="0.580821554136325"></circle><circle r="7.456898142640802" cx="778.678250985459" cy="274.91323405472656" opacity="0.2332113699535817"></circle><circle r="7.962855936735491" cx="403.4583822591733" cy="501.31296254830715" opacity="0.7965385982707839"></circle><circle r="6.598990145840922" cx="666.2319968016682" cy="478.19505915635585" opacity="0.7869514416960721"></circle><circle r="5.609210184199726" cx="331.16809498139986" cy="480.24606795030024" opacity="0.7381041857594369"></circle><circle r="5.0400895893404805" cx="530.9391850992259" cy="784.5088082515726" opacity="0.3370161232724904"></circle><circle r="8.775750183206744" cx="341.1401234065241" cy="780.0423237685471" opacity="0.21759236764779213"></circle><circle r="5.443762472501068" cx="785.2749674308429" cy="378.4659397610304" opacity="0.15500468006955"></circle><circle r="9.840443550869185" cx="731.2901538576398" cy="629.3343193428204" opacity="0.23826202765791848"></circle><circle r="8.016449286791318" cx="744.7847260911549" cy="445.88132899340377" opacity="0.44495781177648486"></circle><circle r="9.78606262778629" cx="190.29012374812459" cy="71.09207622435906" opacity="0.6783865279596056"></circle><circle r="4.5088012195923985" cx="765.1668566388765" cy="73.56018757065955" opacity="0.6572731552918818"></circle><circle r="3.830462363718081" cx="194.2666648713141" cy="331.96233923153073" opacity="0.9262254037497483"></circle><circle r="6.420573218435653" cx="227.04454407121634" cy="180.73959569001647" opacity="0.15635228550743108"></circle><circle r="10.048495574623413" cx="489.97906907957827" cy="775.9122773777985" opacity="0.1333455871040725"></circle><circle r="6.375799251176586" cx="223.2097966507663" cy="108.87544297682496" opacity="0.7091031625905038"></circle><circle r="6.702192195667295" cx="199.51934129338377" cy="388.3995274328202" opacity="0.7953756655167288"></circle><circle r="7.089020018202121" cx="764.6629774509177" cy="520.7846085897828" opacity="0.11741534208229731"></circle><circle r="6.945432991899392" cx="517.4148530565933" cy="386.9052336901037" opacity="0.5029808934903003"></circle><circle r="3.7610079124285645" cx="614.2204254249345" cy="678.6738035978748" opacity="0.43068054170738657"></circle><circle r="9.845705807279812" cx="347.2476104268483" cy="79.35116296138591" opacity="0.18344061140456136"></circle><circle r="7.365524316325441" cx="538.6221549045497" cy="304.17293433014567" opacity="0.4422680469993068"></circle><circle r="7.5519784767536375" cx="454.0794068354004" cy="466.90037893051567" opacity="0.9526565915164886"></circle><circle r="7.940321515420564" cx="727.3874314694827" cy="67.37195155258495" opacity="0.9269168448925449"></circle><circle r="7.57128082143249" cx="123.37805349295293" cy="650.7400058423701" opacity="0.6953358634412146"></circle><circle r="6.852910293292272" cx="92.84934360071843" cy="584.2871217320823" opacity="0.10049436500544454"></circle><circle r="6.193381977807996" cx="778.0107657186678" cy="767.8897734586259" opacity="0.393816295923638"></circle><circle r="6.081295115168796" cx="578.206258551679" cy="685.8387064410873" opacity="0.7116662378201754"></circle><circle r="7.338058530672943" cx="59.52742853467022" cy="235.94532090390942" opacity="0.8157680371784527"></circle><circle r="8.631520672934123" cx="577.3241515106093" cy="619.4660632373211" opacity="0.744076356871003"></circle><circle r="4.441467378341081" cx="718.2604664837716" cy="775.0818399470976" opacity="0.8258049203644658"></circle><circle r="7.910908171872279" cx="309.1297521597622" cy="262.5885661959638" opacity="0.37681313775814507"></circle><circle r="3.948541282676593" cx="613.99183283453" cy="616.1695721072304" opacity="0.6775104678794266"></circle><circle r="7.663849496810265" cx="443.886010803943" cy="775.4468268012772" opacity="0.4277463578883335"></circle><circle r="5.07974683092374" cx="602.5235269103167" cy="21.873685804905875" opacity="0.8348189951463489"></circle><circle r="3.651193840247742" cx="572.2219428829699" cy="44.71085087882149" opacity="0.604608220700013"></circle><circle r="7.83397962462907" cx="451.0235279707316" cy="43.359594808469474" opacity="0.2959744863451549"></circle><circle r="6.897514650742886" cx="666.4795123026872" cy="85.79870297388403" opacity="0.9248420699989549"></circle><circle r="8.473483691353719" cx="72.16784946041642" cy="626.4678962356389" opacity="0.7367877845476904"></circle><circle r="9.318943119273058" cx="317.0606551612133" cy="186.03448806256534" opacity="0.21265668606032218"></circle><circle r="6.803174603223332" cx="85.1364001370328" cy="509.2107369488916" opacity="0.7315975815840046"></circle><circle r="4.820128241443864" cx="493.76954305074304" cy="137.80657022159926" opacity="0.8734521981100677"></circle><circle r="7.5143881602916665" cx="345.9531291016979" cy="438.17143003920256" opacity="0.10519611723775196"></circle><circle r="6.6964725812977655" cx="601.5958678580321" cy="97.75591153720833" opacity="0.8916886150283613"></circle><circle r="9.067629460497889" cx="697.493888690139" cy="273.50741218084005" opacity="0.6979836084864585"></circle><circle r="7.094497902667049" cx="278.91049166995293" cy="559.2502710979127" opacity="0.16388848067403067"></circle><circle r="9.091854738661976" cx="234.11255819932688" cy="216.53295008390145" opacity="0.4442701415076721"></circle><circle r="6.177739190582818" cx="536.5543994741591" cy="496.5704040722936" opacity="0.6324162108603771"></circle><circle r="4.000303704868288" cx="662.048322604047" cy="213.72717929158082" opacity="0.24020068271825237"></circle><circle r="9.071451652950493" cx="570.885938922287" cy="331.67959348660133" opacity="0.11429652978058089"></circle><circle r="6.091326213541136" cx="427.36363320419144" cy="20.619356459861926" opacity="0.9116219145515876"></circle><circle r="6.700289250626518" cx="782.8847582527836" cy="563.9747324651512" opacity="0.26437965040417044"></circle><circle r="11.815595066975725" cx="676.7258073744119" cy="334.2891672438532" opacity="0.7984261776035365"></circle><circle r="6.146139314073305" cx="182.22996254696747" cy="428.1450227149034" opacity="0.4261393283305397"></circle><circle r="7.026227597645121" cx="332.8667737493708" cy="740.5359219462022" opacity="0.9912874850070633"></circle><circle r="6.341040793115079" cx="237.24427881130435" cy="360.2557754840087" opacity="0.11435698543785276"></circle><circle r="7.897572331960999" cx="488.2694241736434" cy="726.6283176452023" opacity="0.6456494936794189"></circle><circle r="5.009322826272824" cx="237.41275142305582" cy="74.18193792513749" opacity="0.484491037306102"></circle><circle r="11.748204580655093" cx="475.148258642383" cy="326.73600584588354" opacity="0.8579694684331344"></circle><circle r="8.007999662071791" cx="232.43184724314204" cy="494.74613435951284" opacity="0.4270800149346551"></circle><circle r="5.144080347704373" cx="684.4597047685228" cy="198.08144642106654" opacity="0.6625430511684035"></circle><circle r="6.841637603371597" cx="13.732722692536962" cy="587.4456497226386" opacity="0.14399061466455532"></circle><circle r="8.695810194937494" cx="563.6089337747048" cy="76.03347681528042" opacity="0.5903380073328596"></circle><circle r="8.358182259588808" cx="546.3049710281766" cy="754.6606402753853" opacity="0.33577995371720093"></circle><circle r="7.684571423357671" cx="510.89155054572655" cy="579.7566131627286" opacity="0.16765831156439895"></circle><circle r="7.607605772755072" cx="292.8529837328239" cy="714.9212917086336" opacity="0.7513249787196437"></circle><circle r="10.830826703385384" cx="82.03086955409495" cy="678.1134128411442" opacity="0.9850675474291201"></circle><circle r="10.075112323614597" cx="272.53718396784404" cy="231.70218916390877" opacity="0.261195501536672"></circle><circle r="6.937254385815201" cx="329.9755516481212" cy="360.67267615116936" opacity="0.9672342341613264"></circle><circle r="5.8062031743095" cx="150.81602969098896" cy="37.606206386053586" opacity="0.37073096886360635"></circle><circle r="5.365502762187068" cx="197.3898634494079" cy="241.56176156198487" opacity="0.12480250757491014"></circle><circle r="7.453250036562872" cx="116.6448573243729" cy="241.96627129818742" opacity="0.5279472088724734"></circle><circle r="7.6370766361660065" cx="17.075523735313915" cy="770.3976703722925" opacity="0.8045533174309203"></circle><circle r="9.351020025966388" cx="359.3464793869413" cy="574.550320359675" opacity="0.5045591108742998"></circle><circle r="5.428426298734818" cx="586.3865194073447" cy="512.9242725898599" opacity="0.45364143823491865"></circle><circle r="8.277099346575536" cx="414.98323455643003" cy="154.99917898783352" opacity="0.2358574604803521"></circle><circle r="8.236449539147062" cx="514.0194737051015" cy="92.4184147250529" opacity="0.3650180007501648"></circle><circle r="8.921089518389609" cx="305.5490866421908" cy="613.6233679733137" opacity="0.6262185561133695"></circle><circle r="7.4254805345875905" cx="373.9671369868551" cy="343.7457063459892" opacity="0.8150762343712149"></circle><circle r="4.31372640000137" cx="344.507635081422" cy="512.9104750601039" opacity="0.43575105068137043"></circle><circle r="9.763776844394606" cx="779.2948655591113" cy="178.24642622510825" opacity="0.5581991663474417"></circle><circle r="7.9195060120859075" cx="679.8610852867392" cy="725.553568421376" opacity="0.18333197555848535"></circle><circle r="8.153792885717424" cx="463.94119231186386" cy="377.56833737562704" opacity="0.5585564258927173"></circle><circle r="6.9687606315667185" cx="316.727995987873" cy="564.1358538496379" opacity="0.8458275244666489"></circle><circle r="4.778356768180751" cx="422.9479312591002" cy="663.1534342123479" opacity="0.12930080546412862"></circle><circle r="6.910541121943013" cx="281.5224010112568" cy="21.32612038567043" opacity="0.858792653083427"></circle><circle r="3.898884844928625" cx="607.3348057860397" cy="651.3101328644498" opacity="0.3901069769711024"></circle><circle r="6.363927774432611" cx="502.9516887137163" cy="430.82726684299485" opacity="0.7265873314145073"></circle><circle r="6.426591613339324" cx="365.31367611000445" cy="488.8812695309712" opacity="0.542556584370511"></circle><circle r="7.354935398936647" cx="535.7602366591138" cy="121.13169878413774" opacity="0.4221391004609455"></circle><circle r="4.29224140063669" cx="377.61487386724946" cy="695.7381610213306" opacity="0.7910058185948741"></circle><circle r="4.982780223522146" cx="162.7516700190924" cy="758.4634262318892" opacity="0.30466022694681466"></circle><circle r="5.44653463990577" cx="508.4722814766893" cy="530.335171051675" opacity="0.11776787142863615"></circle><circle r="4.899124596728283" cx="374.938587881358" cy="244.44364871847708" opacity="0.6218839508311164"></circle><circle r="11.303892575850277" cx="700.5111038963901" cy="554.0222000804632" opacity="0.9505781207729541"></circle><circle r="6.849848873828087" cx="720.2278280406003" cy="197.8628630653738" opacity="0.1543038984731945"></circle><circle r="4.830200944843276" cx="331.74071129568983" cy="535.3215099062725" opacity="0.8485033550983442"></circle><circle r="8.670902942320192" cx="183.31797638149158" cy="206.08088017387672" opacity="0.3960026346280683"></circle><circle r="5.981293132012777" cx="605.9837375817826" cy="143.31067738284307" opacity="0.3870834244328737"></circle><circle r="7.262463713129081" cx="296.0004246850335" cy="659.2936338065474" opacity="0.8209872301792466"></circle><circle r="9.467757900644287" cx="312.88975365986244" cy="138.42412452133593" opacity="0.22893337600097344"></circle><circle r="5.400487421051687" cx="554.503014074738" cy="279.9036208793905" opacity="0.23685988663015198"></circle><circle r="8.718371581504002" cx="150.55959055947142" cy="117.21743575692743" opacity="0.9471615188849125"></circle><circle r="5.786069112934122" cx="471.32864838543213" cy="282.73822967441384" opacity="0.49127145660175764"></circle><circle r="7.782522007321978" cx="188.04834241699032" cy="123.11385382767344" opacity="0.9416182117383335"></circle><circle r="8.40619158456839" cx="459.54437637143025" cy="195.40056918645087" opacity="0.1823963045179595"></circle><circle r="7.8183562174531325" cx="774.2205522607769" cy="610.1395982701189" opacity="0.6639436749651573"></circle><circle r="4.268538559409171" cx="680.475849225657" cy="757.6588350919938" opacity="0.158329811204849"></circle><circle r="5.177686902444603" cx="473.2404771555223" cy="567.5444144333854" opacity="0.6145802714550291"></circle><circle r="5.295683823934196" cx="693.4920794303222" cy="613.4611329498755" opacity="0.5475765686563124"></circle><circle r="8.111169730603907" cx="719.1741003247839" cy="666.5333638825074" opacity="0.4687946996628811"></circle><circle r="6.453964566271154" cx="640.3129151790368" cy="191.81621318103467" opacity="0.9116126917875789"></circle><circle r="10.158274566429395" cx="273.3937933366764" cy="290.31089016560225" opacity="0.37283409050252414"></circle><circle r="8.910964095596892" cx="572.4574435597003" cy="462.94450524092207" opacity="0.20571010338682072"></circle><circle r="4.821135069190028" cx="424.81096563395397" cy="229.81899552492513" opacity="0.4626456484304171"></circle><circle r="5.545299564365751" cx="561.0847390036027" cy="204.72168897511906" opacity="0.2926614719091558"></circle><circle r="5.232362106941418" cx="464.43026659893167" cy="121.69327201720948" opacity="0.9567598680425956"></circle><circle r="5.694750212290348" cx="510.07809044450244" cy="15.855750663100865" opacity="0.22371390378106154"></circle><circle r="8.195291890660236" cx="778.0028037348183" cy="228.11354196110858" opacity="0.8145698058311709"></circle><circle r="6.143821344453561" cx="198.98418747871423" cy="613.8120348878473" opacity="0.8374198524615567"></circle><circle r="7.467396781417417" cx="528.5235345623563" cy="241.5979670429472" opacity="0.33353309503475653"></circle><circle r="9.76561965616186" cx="657.8440415514161" cy="283.52101045606577" opacity="0.48763507171328613"></circle><circle r="6.570386326609224" cx="394.6890754539444" cy="452.22605280608127" opacity="0.5125564607054494"></circle><circle r="7.497375470989098" cx="124.67618101612445" cy="439.0984560548739" opacity="0.109800740546023"></circle><circle r="7.806949781640361" cx="706.9841511672817" cy="492.8229048622268" opacity="0.12231337626263708"></circle><circle r="6.796137428760568" cx="13.736829182441687" cy="441.817582344068" opacity="0.7409657052920119"></circle><circle r="11.625872669854369" cx="32.00513111783989" cy="26.742668464470523" opacity="0.8373481793564644"></circle><circle r="7.351162163753516" cx="286.69194407597496" cy="467.9001935620481" opacity="0.23412541599672287"></circle><circle r="5.095729341047018" cx="139.94002568256616" cy="784.541921242959" opacity="0.1335706607376518"></circle><circle r="8.872087070025962" cx="137.89232618573016" cy="363.239295153966" opacity="0.8916698468392202"></circle><circle r="7.8780193230004265" cx="638.5371976847533" cy="160.13257935302482" opacity="0.9481173737673985"></circle><circle r="4.4730446139326325" cx="784.7219496614637" cy="435.08676269233393" opacity="0.36005138174418716"></circle><circle r="4.572303604067548" cx="601.4019255957738" cy="587.02097432097" opacity="0.49791683391719566"></circle><circle r="7.45849805322272" cx="378.1752305486861" cy="541.2487033137804" opacity="0.9999994264707277"></circle><circle r="5.270780657640222" cx="697.9131399209938" cy="788.1550337170787" opacity="0.8789858196133218"></circle><circle r="9.005657606360344" cx="483.56552087958687" cy="627.7555057848923" opacity="0.3550428897695391"></circle><circle r="8.60989941265549" cx="332.5885017069303" cy="20.94090278116953" opacity="0.650714429842505"></circle><circle r="8.527421463830656" cx="531.5925200860758" cy="689.174314848865" opacity="0.14286419204613127"></circle><circle r="7.409159294829378" cx="381.2482900231633" cy="306.5763565210384" opacity="0.442309506849797"></circle><circle r="6.2307752432913235" cx="547.6744534587845" cy="538.2874208546498" opacity="0.9842466302924551"></circle><circle r="7.28659982608459" cx="740.2465702839404" cy="575.990212816582" opacity="0.4191183225981927"></circle><circle r="6.656153919688053" cx="323.6588465166462" cy="311.20488136253283" opacity="0.4941910523084332"></circle><circle r="7.569604113811989" cx="21.56491067218682" cy="361.72508980880156" opacity="0.2972014539524511"></circle><circle r="8.579390508501119" cx="110.903205647314" cy="103.67186746305883" opacity="0.16691054279612708"></circle><circle r="8.135048691117959" cx="284.52311900517844" cy="356.8306262834612" opacity="0.15890554730573175"></circle><circle r="9.094189963827127" cx="572.7671193302094" cy="115.26761931431925" opacity="0.6020930444352551"></circle><circle r="8.73045707816777" cx="119.74479499561933" cy="734.1006211943569" opacity="0.7813371298009067"></circle><circle r="8.512806327990042" cx="101.05352044252774" cy="390.7390882504592" opacity="0.1185013040846034"></circle><circle r="6.401870113154963" cx="608.8309908023591" cy="59.07700357570815" opacity="0.4056325325900004"></circle><circle r="7.597644524767278" cx="657.1544018366064" cy="519.6910441155998" opacity="0.8821551893101544"></circle><circle r="8.475573659503647" cx="505.2258322968283" cy="199.88183831876646" opacity="0.9903756332010172"></circle><circle r="6.220783121391349" cx="560.5361380779622" cy="15.823225049806709" opacity="0.7147970274508623"></circle><circle r="7.690853558352812" cx="272.8062174780109" cy="520.1172687502215" opacity="0.5552941445721268"></circle><circle r="5.797308570122228" cx="658.1462359353977" cy="586.2598957099735" opacity="0.5043393190718021"></circle><circle r="6.591414289438559" cx="451.79189992116557" cy="248.53237684118523" opacity="0.9210101043662676"></circle><circle r="6.512662139545132" cx="747.2697221057034" cy="25.248378751142674" opacity="0.5993174650333782"></circle><circle r="6.689144628626593" cx="600.182992394777" cy="547.66657701116" opacity="0.7921499906757861"></circle><circle r="9.412705185206502" cx="402.3951124998586" cy="88.39017726459534" opacity="0.34737674328816415"></circle><circle r="4.3859565190556555" cx="421.0379276356665" cy="255.30103661270036" opacity="0.5397932233532013"></circle><circle r="7.964794033215702" cx="483.27580722080296" cy="239.677386595787" opacity="0.9319538871778625"></circle><circle r="6.116251443798696" cx="625.6158434626855" cy="707.7332372996892" opacity="0.2962723014495485"></circle><circle r="4.348032966713854" cx="628.3400904501898" cy="569.1666408046204" opacity="0.5188269700197483"></circle><circle r="9.235253770642808" cx="75.9006439263279" cy="724.0732040570457" opacity="0.8305050429381791"></circle><circle r="6.344070868765103" cx="385.0191320013029" cy="731.7192858641871" opacity="0.5159038457045089"></circle><circle r="5.443137874460575" cx="433.1514020350148" cy="116.25402688615208" opacity="0.6266117738133872"></circle><circle r="7.904070150688739" cx="304.866008131537" cy="509.38395393878676" opacity="0.33123871385818915"></circle><circle r="5.72422465322327" cx="392.8552997141008" cy="195.43163435786735" opacity="0.6140231691219559"></circle><circle r="9.444035823807075" cx="625.1199514438879" cy="317.6127513577742" opacity="0.5899966264665499"></circle><circle r="6.563049135090843" cx="331.44674658992403" cy="687.058731636218" opacity="0.6152122120270627"></circle><circle r="9.351955027957134" cx="23.36409116641601" cy="538.9146599547579" opacity="0.8651026381332414"></circle><circle r="6.858351622293705" cx="567.8681468471963" cy="566.6550000139866" opacity="0.3073420514965527"></circle><circle r="4.382150545291733" cx="432.21747177879297" cy="205.94763693397016" opacity="0.6012582994375516"></circle><circle r="7.860604961030742" cx="100.34689807751941" cy="335.52669242511143" opacity="0.5741072299478377"></circle><circle r="5.722236556554564" cx="49.13847730889499" cy="196.8408564351461" opacity="0.9487900808755321"></circle><circle r="6.526458639357968" cx="247.33384181907053" cy="770.9380652701562" opacity="0.12566093349840118"></circle><circle r="10.073639767666148" cx="603.1403402092467" cy="360.9972823667756" opacity="0.5988367107905812"></circle><circle r="7.8417902630500995" cx="340.0429813352073" cy="608.9705362760965" opacity="0.9406139454359942"></circle><circle r="8.006011321905147" cx="96.92357895293672" cy="778.2280637826613" opacity="0.18823635263246122"></circle><circle r="4.794527901478206" cx="383.75889226945384" cy="669.4654054607981" opacity="0.4161603866252864"></circle><circle r="5.775823553671489" cx="654.5999484263168" cy="119.84152330029728" opacity="0.18371363152117726"></circle><circle r="5.6572154418996" cx="137.77424950300806" cy="203.65153039014834" opacity="0.576609380798992"></circle><circle r="4.103251401271198" cx="629.172584438964" cy="86.55153478926597" opacity="0.11873990726069912"></circle><circle r="6.728755020363183" cx="713.4062172800966" cy="705.168674746734" opacity="0.46300553949147805"></circle><circle r="6.572945987964477" cx="341.4406725971793" cy="653.2396326706827" opacity="0.9260756339747709"></circle><circle r="6.449937871307975" cx="681.18473093316" cy="397.3900766032763" opacity="0.8474564696128152"></circle><circle r="5.317084226147687" cx="72.27545818865731" cy="551.7695141680105" opacity="0.8238239361154492"></circle><circle r="7.472721081830629" cx="55.11936871028954" cy="772.1956208740166" opacity="0.7005770679484891"></circle><circle r="9.32539319905262" cx="170.4166680480729" cy="497.009749817253" opacity="0.2900621947133065"></circle><circle r="7.361800082465338" cx="239.52826033587965" cy="26.64166405474629" opacity="0.7889267822556776"></circle><circle r="9.946822699536968" cx="18.164958379222387" cy="303.1490675285036" opacity="0.6301828997653156"></circle><circle r="4.802329177367757" cx="527.7575988085367" cy="725.9662495868247" opacity="0.2761631731039004"></circle><circle r="5.309795047972727" cx="623.821508331144" cy="787.413725976396" opacity="0.3432762660547904"></circle><circle r="5.950605928408601" cx="246.04052065805988" cy="441.12686145962306" opacity="0.4935777263181931"></circle><circle r="6.477175300442692" cx="780.1030776143622" cy="720.5383718333713" opacity="0.9480578065984275"></circle><circle r="8.379140999498285" cx="99.19172055899742" cy="18.507742584163125" opacity="0.913041858240442"></circle><circle r="5.332246510115541" cx="396.5518908831085" cy="235.98137976620157" opacity="0.10224645714425284"></circle><circle r="6.027558782605079" cx="459.54869062676465" cy="680.9104168810849" opacity="0.36941962632306025"></circle><circle r="5.516874931144115" cx="44.39900137976972" cy="592.7638419830391" opacity="0.33843972673519973"></circle><circle r="7.244996362554669" cx="25.293694928007785" cy="83.39270267103367" opacity="0.6342369152938245"></circle><circle r="8.730888138831178" cx="553.4241471459036" cy="426.1214499461198" opacity="0.4277178335905967"></circle><circle r="10.37141718200127" cx="230.05841135888707" cy="543.589561731901" opacity="0.9351677719349046"></circle><circle r="5.213672076216341" cx="522.9142194449881" cy="344.4221091567481" opacity="0.4467301818987277"></circle><circle r="6.186719525171318" cx="377.613250889396" cy="273.7676231463378" opacity="0.44978260596342035"></circle><circle r="8.04414906451377" cx="88.20368434908013" cy="199.63850404083638" opacity="0.15022632708388134"></circle><circle r="5.492085417042085" cx="489.2886585103749" cy="41.86114979169611" opacity="0.7367024372783173"></circle><circle r="6.670420463345189" cx="714.1920745019098" cy="361.48756234221736" opacity="0.6391829871817065"></circle><circle r="5.093557764743654" cx="240.26505492047872" cy="146.55418713923288" opacity="0.9683658702751737"></circle><circle r="6.599963293193509" cx="395.80291298301785" cy="385.036560209407" opacity="0.7516772426350525"></circle><circle r="5.878211511073218" cx="276.3312394794478" cy="177.67104552033757" opacity="0.6465823392337651"></circle><circle r="7.13522343023425" cx="153.5692429699822" cy="167.08338772776474" opacity="0.24649264144924546"></circle></g></svg>';function g(e,t){return null==e||null==t?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function b(e,t){return null==e||null==t?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function v(e){let t,r,a;function i(e,a,i=0,n=e.length){if(i<n){if(0!==t(a,a))return n;do{const t=i+n>>>1;r(e[t],a)<0?i=t+1:n=t}while(i<n)}return i}return 2!==e.length?(t=g,r=(t,r)=>g(e(t),r),a=(t,r)=>e(t)-r):(t=e===g||e===b?e:x,r=e,a=e),{left:i,center:function(e,t,r=0,n=e.length){const o=i(e,t,r,n-1);return o>r&&a(e[o-1],t)>-a(e[o],t)?o-1:o},right:function(e,a,i=0,n=e.length){if(i<n){if(0!==t(a,a))return n;do{const t=i+n>>>1;r(e[t],a)<=0?i=t+1:n=t}while(i<n)}return i}}}function x(){return 0}function k(e){return null===e?NaN:+e}const w=v(g),C=w.right,_=w.left,S=v(k).center,A=T(E),M=T((function(e){const t=E(e);return(e,r,a,i,n)=>{t(e,r,0+(a<<=2),0+(i<<=2),n<<=2),t(e,r,a+1,i+1,n),t(e,r,a+2,i+2,n),t(e,r,a+3,i+3,n)}}));function T(e){return function(t,r,a=r){if(!((r=+r)>=0))throw new RangeError("invalid rx");if(!((a=+a)>=0))throw new RangeError("invalid ry");let{data:i,width:n,height:o}=t;if(!((n=Math.floor(n))>=0))throw new RangeError("invalid width");if(!((o=Math.floor(void 0!==o?o:i.length/n))>=0))throw new RangeError("invalid height");if(!n||!o||!r&&!a)return t;const c=r&&e(r),l=a&&e(a),s=i.slice();return c&&l?(B(c,s,i,n,o),B(c,i,s,n,o),B(c,s,i,n,o),L(l,i,s,n,o),L(l,s,i,n,o),L(l,i,s,n,o)):c?(B(c,i,s,n,o),B(c,s,i,n,o),B(c,i,s,n,o)):l&&(L(l,i,s,n,o),L(l,s,i,n,o),L(l,i,s,n,o)),t}}function B(e,t,r,a,i){for(let n=0,o=a*i;n<o;)e(t,r,n,n+=a,1)}function L(e,t,r,a,i){for(let n=0,o=a*i;n<a;++n)e(t,r,n,n+o,a)}function E(e){const t=Math.floor(e);if(t===e)return function(e){const t=2*e+1;return(r,a,i,n,o)=>{if(!((n-=o)>=i))return;let c=e*a[i];const l=o*e;for(let e=i,t=i+l;e<t;e+=o)c+=a[Math.min(n,e)];for(let e=i,s=n;e<=s;e+=o)c+=a[Math.min(n,e+l)],r[e]=c/t,c-=a[Math.max(i,e-l)]}}(e);const r=e-t,a=2*e+1;return(e,i,n,o,c)=>{if(!((o-=c)>=n))return;let l=t*i[n];const s=c*t,u=s+c;for(let t=n,r=n+s;t<r;t+=c)l+=i[Math.min(o,t)];for(let t=n,h=o;t<=h;t+=c)l+=i[Math.min(o,t+s)],e[t]=(l+r*(i[Math.max(n,t-u)]+i[Math.min(o,t+u)]))/a,l-=i[Math.max(n,t-s)]}}function R(e,t){let r=0;if(void 0===t)for(let a of e)null!=a&&(a=+a)>=a&&++r;else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(i=+i)>=i&&++r}return r}function H(e){return 0|e.length}function D(e){return!(e>0)}function P(e){return"object"!=typeof e||"length"in e?e:Array.from(e)}function N(e,t){let r,a=0,i=0,n=0;if(void 0===t)for(let o of e)null!=o&&(o=+o)>=o&&(r=o-i,i+=r/++a,n+=r*(o-i));else{let o=-1;for(let c of e)null!=(c=t(c,++o,e))&&(c=+c)>=c&&(r=c-i,i+=r/++a,n+=r*(c-i))}if(a>1)return n/(a-1)}function G(e,t){const r=N(e,t);return r?Math.sqrt(r):r}function I(e,t){let r,a;if(void 0===t)for(const i of e)null!=i&&(void 0===r?i>=i&&(r=a=i):(r>i&&(r=i),a<i&&(a=i)));else{let i=-1;for(let n of e)null!=(n=t(n,++i,e))&&(void 0===r?n>=n&&(r=a=n):(r>n&&(r=n),a<n&&(a=n)))}return[r,a]}class W{constructor(){this._partials=new Float64Array(32),this._n=0}add(e){const t=this._partials;let r=0;for(let a=0;a<this._n&&a<32;a++){const i=t[a],n=e+i,o=Math.abs(e)<Math.abs(i)?e-(n-i):i-(n-e);o&&(t[r++]=o),e=n}return t[r]=e,this._n=r+1,this}valueOf(){const e=this._partials;let t,r,a,i=this._n,n=0;if(i>0){for(n=e[--i];i>0&&(t=n,r=e[--i],n=t+r,a=r-(n-t),!a););i>0&&(a<0&&e[i-1]<0||a>0&&e[i-1]>0)&&(r=2*a,t=n+r,r==t-n&&(n=t))}return n}}class F extends Map{constructor(e,t=V){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const[r,a]of e)this.set(r,a)}get(e){return super.get(z(this,e))}has(e){return super.has(z(this,e))}set(e,t){return super.set(K(this,e),t)}delete(e){return super.delete(J(this,e))}}class O extends Set{constructor(e,t=V){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const r of e)this.add(r)}has(e){return super.has(z(this,e))}add(e){return super.add(K(this,e))}delete(e){return super.delete(J(this,e))}}function z({_intern:e,_key:t},r){const a=t(r);return e.has(a)?e.get(a):r}function K({_intern:e,_key:t},r){const a=t(r);return e.has(a)?e.get(a):(e.set(a,r),r)}function J({_intern:e,_key:t},r){const a=t(r);return e.has(a)&&(r=e.get(a),e.delete(a)),r}function V(e){return null!==e&&"object"==typeof e?e.valueOf():e}function j(e){return e}function Y(e,...t){return X(e,j,j,t)}function $(e,...t){return X(e,Array.from,j,t)}function U(e,t){for(let r=1,a=t.length;r<a;++r)e=e.flatMap((e=>e.pop().map((([t,r])=>[...e,t,r]))));return e}function q(e,t,...r){return X(e,j,t,r)}function Z(e,t,...r){return X(e,Array.from,t,r)}function Q(e){if(1!==e.length)throw new Error("duplicate key");return e[0]}function X(e,t,r,a){return function e(i,n){if(n>=a.length)return r(i);const o=new F,c=a[n++];let l=-1;for(const t of i){const e=c(t,++l,i),r=o.get(e);r?r.push(t):o.set(e,[t])}for(const[t,r]of o)o.set(t,e(r,n));return t(o)}(e,0)}function ee(e,t){return Array.from(t,(t=>e[t]))}function te(e,...t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");e=Array.from(e);let[r]=t;if(r&&2!==r.length||t.length>1){const a=Uint32Array.from(e,((e,t)=>t));return t.length>1?(t=t.map((t=>e.map(t))),a.sort(((e,r)=>{for(const a of t){const t=ae(a[e],a[r]);if(t)return t}}))):(r=e.map(r),a.sort(((e,t)=>ae(r[e],r[t])))),ee(e,a)}return e.sort(re(r))}function re(e=g){if(e===g)return ae;if("function"!=typeof e)throw new TypeError("compare is not a function");return(t,r)=>{const a=e(t,r);return a||0===a?a:(0===e(r,r))-(0===e(t,t))}}function ae(e,t){return(null==e||!(e>=e))-(null==t||!(t>=t))||(e<t?-1:e>t?1:0)}var ie=Array.prototype.slice;function ne(e){return()=>e}const oe=Math.sqrt(50),ce=Math.sqrt(10),le=Math.sqrt(2);function se(e,t,r){const a=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(a)),n=a/Math.pow(10,i),o=n>=oe?10:n>=ce?5:n>=le?2:1;let c,l,s;return i<0?(s=Math.pow(10,-i)/o,c=Math.round(e*s),l=Math.round(t*s),c/s<e&&++c,l/s>t&&--l,s=-s):(s=Math.pow(10,i)*o,c=Math.round(e/s),l=Math.round(t/s),c*s<e&&++c,l*s>t&&--l),l<c&&.5<=r&&r<2?se(e,t,2*r):[c,l,s]}function ue(e,t,r){if(!((r=+r)>0))return[];if((e=+e)==(t=+t))return[e];const a=t<e,[i,n,o]=a?se(t,e,r):se(e,t,r);if(!(n>=i))return[];const c=n-i+1,l=new Array(c);if(a)if(o<0)for(let s=0;s<c;++s)l[s]=(n-s)/-o;else for(let s=0;s<c;++s)l[s]=(n-s)*o;else if(o<0)for(let s=0;s<c;++s)l[s]=(i+s)/-o;else for(let s=0;s<c;++s)l[s]=(i+s)*o;return l}function he(e,t,r){return se(e=+e,t=+t,r=+r)[2]}function de(e,t,r){r=+r;const a=(t=+t)<(e=+e),i=a?he(t,e,r):he(e,t,r);return(a?-1:1)*(i<0?1/-i:i)}function pe(e,t,r){let a;for(;;){const i=he(e,t,r);if(i===a||0===i||!isFinite(i))return[e,t];i>0?(e=Math.floor(e/i)*i,t=Math.ceil(t/i)*i):i<0&&(e=Math.ceil(e*i)/i,t=Math.floor(t*i)/i),a=i}}function ye(e){return Math.max(1,Math.ceil(Math.log(R(e))/Math.LN2)+1)}function fe(){var e=j,t=I,r=ye;function a(a){Array.isArray(a)||(a=Array.from(a));var i,n,o,c=a.length,l=new Array(c);for(i=0;i<c;++i)l[i]=e(a[i],i,a);var s=t(l),u=s[0],h=s[1],d=r(l,u,h);if(!Array.isArray(d)){const e=h,r=+d;if(t===I&&([u,h]=pe(u,h,r)),(d=ue(u,h,r))[0]<=u&&(o=he(u,h,r)),d[d.length-1]>=h)if(e>=h&&t===I){const e=he(u,h,r);isFinite(e)&&(e>0?h=(Math.floor(h/e)+1)*e:e<0&&(h=(Math.ceil(h*-e)+1)/-e))}else d.pop()}for(var p=d.length,y=0,f=p;d[y]<=u;)++y;for(;d[f-1]>h;)--f;(y||f<p)&&(d=d.slice(y,f),p=f-y);var m,g=new Array(p+1);for(i=0;i<=p;++i)(m=g[i]=[]).x0=i>0?d[i-1]:u,m.x1=i<p?d[i]:h;if(isFinite(o)){if(o>0)for(i=0;i<c;++i)null!=(n=l[i])&&u<=n&&n<=h&&g[Math.min(p,Math.floor((n-u)/o))].push(a[i]);else if(o<0)for(i=0;i<c;++i)if(null!=(n=l[i])&&u<=n&&n<=h){const e=Math.floor((u-n)*o);g[Math.min(p,e+(d[e]<=n))].push(a[i])}}else for(i=0;i<c;++i)null!=(n=l[i])&&u<=n&&n<=h&&g[C(d,n,0,p)].push(a[i]);return g}return a.value=function(t){return arguments.length?(e="function"==typeof t?t:ne(t),a):e},a.domain=function(e){return arguments.length?(t="function"==typeof e?e:ne([e[0],e[1]]),a):t},a.thresholds=function(e){return arguments.length?(r="function"==typeof e?e:ne(Array.isArray(e)?ie.call(e):e),a):r},a}function me(e,t){let r;if(void 0===t)for(const a of e)null!=a&&(r<a||void 0===r&&a>=a)&&(r=a);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(r<i||void 0===r&&i>=i)&&(r=i)}return r}function ge(e,t){let r,a=-1,i=-1;if(void 0===t)for(const n of e)++i,null!=n&&(r<n||void 0===r&&n>=n)&&(r=n,a=i);else for(let n of e)null!=(n=t(n,++i,e))&&(r<n||void 0===r&&n>=n)&&(r=n,a=i);return a}function be(e,t){let r;if(void 0===t)for(const a of e)null!=a&&(r>a||void 0===r&&a>=a)&&(r=a);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(r>i||void 0===r&&i>=i)&&(r=i)}return r}function ve(e,t){let r,a=-1,i=-1;if(void 0===t)for(const n of e)++i,null!=n&&(r>n||void 0===r&&n>=n)&&(r=n,a=i);else for(let n of e)null!=(n=t(n,++i,e))&&(r>n||void 0===r&&n>=n)&&(r=n,a=i);return a}function xe(e,t,r=0,a=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),a=Math.floor(Math.min(e.length-1,a)),!(r<=t&&t<=a))return e;for(i=void 0===i?ae:re(i);a>r;){if(a-r>600){const n=a-r+1,o=t-r+1,c=Math.log(n),l=.5*Math.exp(2*c/3),s=.5*Math.sqrt(c*l*(n-l)/n)*(o-n/2<0?-1:1);xe(e,t,Math.max(r,Math.floor(t-o*l/n+s)),Math.min(a,Math.floor(t+(n-o)*l/n+s)),i)}const n=e[t];let o=r,c=a;for(ke(e,r,t),i(e[a],n)>0&&ke(e,r,a);o<c;){for(ke(e,o,c),++o,--c;i(e[o],n)<0;)++o;for(;i(e[c],n)>0;)--c}0===i(e[r],n)?ke(e,r,c):(++c,ke(e,c,a)),c<=t&&(r=c+1),t<=c&&(a=c-1)}return e}function ke(e,t,r){const a=e[t];e[t]=e[r],e[r]=a}function we(e,t=g){let r,a=!1;if(1===t.length){let i;for(const n of e){const e=t(n);(a?g(e,i)>0:0===g(e,e))&&(r=n,i=e,a=!0)}}else for(const i of e)(a?t(i,r)>0:0===t(i,i))&&(r=i,a=!0);return r}function Ce(e,t,r){if(e=Float64Array.from(function*(e,t){if(void 0===t)for(let r of e)null!=r&&(r=+r)>=r&&(yield r);else{let r=-1;for(let a of e)null!=(a=t(a,++r,e))&&(a=+a)>=a&&(yield a)}}(e,r)),(a=e.length)&&!isNaN(t=+t)){if(t<=0||a<2)return be(e);if(t>=1)return me(e);var a,i=(a-1)*t,n=Math.floor(i),o=me(xe(e,n).subarray(0,n+1));return o+(be(e.subarray(n+1))-o)*(i-n)}}function _e(e,t,r=k){if((a=e.length)&&!isNaN(t=+t)){if(t<=0||a<2)return+r(e[0],0,e);if(t>=1)return+r(e[a-1],a-1,e);var a,i=(a-1)*t,n=Math.floor(i),o=+r(e[n],n,e);return o+(+r(e[n+1],n+1,e)-o)*(i-n)}}function Se(e,t,r=k){if(!isNaN(t=+t)){if(a=Float64Array.from(e,((t,a)=>k(r(e[a],a,e)))),t<=0)return ve(a);if(t>=1)return ge(a);var a,i=Uint32Array.from(e,((e,t)=>t)),n=a.length-1,o=Math.floor(n*t);return xe(i,o,0,n,((e,t)=>ae(a[e],a[t]))),(o=we(i.subarray(0,o+1),(e=>a[e])))>=0?o:-1}}function Ae(e){return Array.from(function*(e){for(const t of e)yield*t}(e))}function Me(e,t){return[e,t]}function Te(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var a=-1,i=0|Math.max(0,Math.ceil((t-e)/r)),n=new Array(i);++a<i;)n[a]=e+a*r;return n}function Be(e,t=g){if(1===t.length)return ve(e,t);let r,a=-1,i=-1;for(const n of e)++i,(a<0?0===t(n,n):t(n,r)<0)&&(r=n,a=i);return a}var Le=Ee(Math.random);function Ee(e){return function(t,r=0,a=t.length){let i=a-(r=+r);for(;i;){const a=e()*i--|0,n=t[i+r];t[i+r]=t[a+r],t[a+r]=n}return t}}function Re(e){if(!(i=e.length))return[];for(var t=-1,r=be(e,He),a=new Array(r);++t<r;)for(var i,n=-1,o=a[t]=new Array(i);++n<i;)o[n]=e[n][t];return a}function He(e){return e.length}function De(e){return e instanceof O?e:new O(e)}function Pe(e,t){const r=e[Symbol.iterator](),a=new Set;for(const i of t){const e=Ne(i);if(a.has(e))continue;let t,n;for(;({value:t,done:n}=r.next());){if(n)return!1;const r=Ne(t);if(a.add(r),Object.is(e,r))break}}return!0}function Ne(e){return null!==e&&"object"==typeof e?e.valueOf():e}function Ge(e){return e}var Ie=1e-6;function We(e){return"translate("+e+",0)"}function Fe(e){return"translate(0,"+e+")"}function Oe(e){return t=>+e(t)}function ze(e,t){return t=Math.max(0,e.bandwidth()-2*t)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function Ke(){return!this.__axis}function Je(e,t){var r=[],a=null,i=null,n=6,o=6,c=3,l="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,s=1===e||4===e?-1:1,u=4===e||2===e?"x":"y",h=1===e||3===e?We:Fe;function d(d){var p=null==a?t.ticks?t.ticks.apply(t,r):t.domain():a,y=null==i?t.tickFormat?t.tickFormat.apply(t,r):Ge:i,f=Math.max(n,0)+c,m=t.range(),g=+m[0]+l,b=+m[m.length-1]+l,v=(t.bandwidth?ze:Oe)(t.copy(),l),x=d.selection?d.selection():d,k=x.selectAll(".domain").data([null]),w=x.selectAll(".tick").data(p,t).order(),C=w.exit(),_=w.enter().append("g").attr("class","tick"),S=w.select("line"),A=w.select("text");k=k.merge(k.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(_),S=S.merge(_.append("line").attr("stroke","currentColor").attr(u+"2",s*n)),A=A.merge(_.append("text").attr("fill","currentColor").attr(u,s*f).attr("dy",1===e?"0em":3===e?"0.71em":"0.32em")),d!==x&&(k=k.transition(d),w=w.transition(d),S=S.transition(d),A=A.transition(d),C=C.transition(d).attr("opacity",Ie).attr("transform",(function(e){return isFinite(e=v(e))?h(e+l):this.getAttribute("transform")})),_.attr("opacity",Ie).attr("transform",(function(e){var t=this.parentNode.__axis;return h((t&&isFinite(t=t(e))?t:v(e))+l)}))),C.remove(),k.attr("d",4===e||2===e?o?"M"+s*o+","+g+"H"+l+"V"+b+"H"+s*o:"M"+l+","+g+"V"+b:o?"M"+g+","+s*o+"V"+l+"H"+b+"V"+s*o:"M"+g+","+l+"H"+b),w.attr("opacity",1).attr("transform",(function(e){return h(v(e)+l)})),S.attr(u+"2",s*n),A.attr(u,s*f).text(y),x.filter(Ke).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===e?"start":4===e?"end":"middle"),x.each((function(){this.__axis=v}))}return d.scale=function(e){return arguments.length?(t=e,d):t},d.ticks=function(){return r=Array.from(arguments),d},d.tickArguments=function(e){return arguments.length?(r=null==e?[]:Array.from(e),d):r.slice()},d.tickValues=function(e){return arguments.length?(a=null==e?null:Array.from(e),d):a&&a.slice()},d.tickFormat=function(e){return arguments.length?(i=e,d):i},d.tickSize=function(e){return arguments.length?(n=o=+e,d):n},d.tickSizeInner=function(e){return arguments.length?(n=+e,d):n},d.tickSizeOuter=function(e){return arguments.length?(o=+e,d):o},d.tickPadding=function(e){return arguments.length?(c=+e,d):c},d.offset=function(e){return arguments.length?(l=+e,d):l},d}var Ve={value:()=>{}};function je(){for(var e,t=0,r=arguments.length,a={};t<r;++t){if(!(e=arguments[t]+"")||e in a||/[\s.]/.test(e))throw new Error("illegal type: "+e);a[e]=[]}return new Ye(a)}function Ye(e){this._=e}function $e(e,t){for(var r,a=0,i=e.length;a<i;++a)if((r=e[a]).name===t)return r.value}function Ue(e,t,r){for(var a=0,i=e.length;a<i;++a)if(e[a].name===t){e[a]=Ve,e=e.slice(0,a).concat(e.slice(a+1));break}return null!=r&&e.push({name:t,value:r}),e}Ye.prototype=je.prototype={constructor:Ye,on:function(e,t){var r,a,i=this._,n=(a=i,(e+"").trim().split(/^|\s+/).map((function(e){var t="",r=e.indexOf(".");if(r>=0&&(t=e.slice(r+1),e=e.slice(0,r)),e&&!a.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:t}}))),o=-1,c=n.length;if(!(arguments.length<2)){if(null!=t&&"function"!=typeof t)throw new Error("invalid callback: "+t);for(;++o<c;)if(r=(e=n[o]).type)i[r]=Ue(i[r],e.name,t);else if(null==t)for(r in i)i[r]=Ue(i[r],e.name,null);return this}for(;++o<c;)if((r=(e=n[o]).type)&&(r=$e(i[r],e.name)))return r},copy:function(){var e={},t=this._;for(var r in t)e[r]=t[r].slice();return new Ye(e)},call:function(e,t){if((r=arguments.length-2)>0)for(var r,a,i=new Array(r),n=0;n<r;++n)i[n]=arguments[n+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(n=0,r=(a=this._[e]).length;n<r;++n)a[n].value.apply(t,i)},apply:function(e,t,r){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var a=this._[e],i=0,n=a.length;i<n;++i)a[i].value.apply(t,r)}};var qe="http://www.w3.org/1999/xhtml",Ze={svg:"http://www.w3.org/2000/svg",xhtml:qe,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Qe(e){var t=e+="",r=t.indexOf(":");return r>=0&&"xmlns"!==(t=e.slice(0,r))&&(e=e.slice(r+1)),Ze.hasOwnProperty(t)?{space:Ze[t],local:e}:e}function Xe(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===qe&&t.documentElement.namespaceURI===qe?t.createElement(e):t.createElementNS(r,e)}}function et(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function tt(e){var t=Qe(e);return(t.local?et:Xe)(t)}function rt(){}function at(e){return null==e?rt:function(){return this.querySelector(e)}}function it(e){return null==e?[]:Array.isArray(e)?e:Array.from(e)}function nt(){return[]}function ot(e){return null==e?nt:function(){return this.querySelectorAll(e)}}function ct(e){return function(){return this.matches(e)}}function lt(e){return function(t){return t.matches(e)}}var st=Array.prototype.find;function ut(){return this.firstElementChild}var ht=Array.prototype.filter;function dt(){return Array.from(this.children)}function pt(e){return new Array(e.length)}function yt(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function ft(e,t,r,a,i,n){for(var o,c=0,l=t.length,s=n.length;c<s;++c)(o=t[c])?(o.__data__=n[c],a[c]=o):r[c]=new yt(e,n[c]);for(;c<l;++c)(o=t[c])&&(i[c]=o)}function mt(e,t,r,a,i,n,o){var c,l,s,u=new Map,h=t.length,d=n.length,p=new Array(h);for(c=0;c<h;++c)(l=t[c])&&(p[c]=s=o.call(l,l.__data__,c,t)+"",u.has(s)?i[c]=l:u.set(s,l));for(c=0;c<d;++c)s=o.call(e,n[c],c,n)+"",(l=u.get(s))?(a[c]=l,l.__data__=n[c],u.delete(s)):r[c]=new yt(e,n[c]);for(c=0;c<h;++c)(l=t[c])&&u.get(p[c])===l&&(i[c]=l)}function gt(e){return e.__data__}function bt(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function vt(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function xt(e){return function(){this.removeAttribute(e)}}function kt(e){return function(){this.removeAttributeNS(e.space,e.local)}}function wt(e,t){return function(){this.setAttribute(e,t)}}function Ct(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function _t(e,t){return function(){var r=t.apply(this,arguments);null==r?this.removeAttribute(e):this.setAttribute(e,r)}}function St(e,t){return function(){var r=t.apply(this,arguments);null==r?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function At(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Mt(e){return function(){this.style.removeProperty(e)}}function Tt(e,t,r){return function(){this.style.setProperty(e,t,r)}}function Bt(e,t,r){return function(){var a=t.apply(this,arguments);null==a?this.style.removeProperty(e):this.style.setProperty(e,a,r)}}function Lt(e,t){return e.style.getPropertyValue(t)||At(e).getComputedStyle(e,null).getPropertyValue(t)}function Et(e){return function(){delete this[e]}}function Rt(e,t){return function(){this[e]=t}}function Ht(e,t){return function(){var r=t.apply(this,arguments);null==r?delete this[e]:this[e]=r}}function Dt(e){return e.trim().split(/^|\s+/)}function Pt(e){return e.classList||new Nt(e)}function Nt(e){this._node=e,this._names=Dt(e.getAttribute("class")||"")}function Gt(e,t){for(var r=Pt(e),a=-1,i=t.length;++a<i;)r.add(t[a])}function It(e,t){for(var r=Pt(e),a=-1,i=t.length;++a<i;)r.remove(t[a])}function Wt(e){return function(){Gt(this,e)}}function Ft(e){return function(){It(this,e)}}function Ot(e,t){return function(){(t.apply(this,arguments)?Gt:It)(this,e)}}function zt(){this.textContent=""}function Kt(e){return function(){this.textContent=e}}function Jt(e){return function(){var t=e.apply(this,arguments);this.textContent=null==t?"":t}}function Vt(){this.innerHTML=""}function jt(e){return function(){this.innerHTML=e}}function Yt(e){return function(){var t=e.apply(this,arguments);this.innerHTML=null==t?"":t}}function $t(){this.nextSibling&&this.parentNode.appendChild(this)}function Ut(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function qt(){return null}function Zt(){var e=this.parentNode;e&&e.removeChild(this)}function Qt(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Xt(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function er(e){return function(){var t=this.__on;if(t){for(var r,a=0,i=-1,n=t.length;a<n;++a)r=t[a],e.type&&r.type!==e.type||r.name!==e.name?t[++i]=r:this.removeEventListener(r.type,r.listener,r.options);++i?t.length=i:delete this.__on}}}function tr(e,t,r){return function(){var a,i=this.__on,n=function(e){return function(t){e.call(this,t,this.__data__)}}(t);if(i)for(var o=0,c=i.length;o<c;++o)if((a=i[o]).type===e.type&&a.name===e.name)return this.removeEventListener(a.type,a.listener,a.options),this.addEventListener(a.type,a.listener=n,a.options=r),void(a.value=t);this.addEventListener(e.type,n,r),a={type:e.type,name:e.name,value:t,listener:n,options:r},i?i.push(a):this.__on=[a]}}function rr(e,t,r){var a=At(e),i=a.CustomEvent;"function"==typeof i?i=new i(t,r):(i=a.document.createEvent("Event"),r?(i.initEvent(t,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function ar(e,t){return function(){return rr(this,e,t)}}function ir(e,t){return function(){return rr(this,e,t.apply(this,arguments))}}yt.prototype={constructor:yt,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}},Nt.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var nr=[null];function or(e,t){this._groups=e,this._parents=t}function cr(){return new or([[document.documentElement]],nr)}function lr(e){return"string"==typeof e?new or([[document.querySelector(e)]],[document.documentElement]):new or([[e]],nr)}function sr(e){return lr(tt(e).call(document.documentElement))}or.prototype=cr.prototype={constructor:or,select:function(e){"function"!=typeof e&&(e=at(e));for(var t=this._groups,r=t.length,a=new Array(r),i=0;i<r;++i)for(var n,o,c=t[i],l=c.length,s=a[i]=new Array(l),u=0;u<l;++u)(n=c[u])&&(o=e.call(n,n.__data__,u,c))&&("__data__"in n&&(o.__data__=n.__data__),s[u]=o);return new or(a,this._parents)},selectAll:function(e){e="function"==typeof e?function(e){return function(){return it(e.apply(this,arguments))}}(e):ot(e);for(var t=this._groups,r=t.length,a=[],i=[],n=0;n<r;++n)for(var o,c=t[n],l=c.length,s=0;s<l;++s)(o=c[s])&&(a.push(e.call(o,o.__data__,s,c)),i.push(o));return new or(a,i)},selectChild:function(e){return this.select(null==e?ut:function(e){return function(){return st.call(this.children,e)}}("function"==typeof e?e:lt(e)))},selectChildren:function(e){return this.selectAll(null==e?dt:function(e){return function(){return ht.call(this.children,e)}}("function"==typeof e?e:lt(e)))},filter:function(e){"function"!=typeof e&&(e=ct(e));for(var t=this._groups,r=t.length,a=new Array(r),i=0;i<r;++i)for(var n,o=t[i],c=o.length,l=a[i]=[],s=0;s<c;++s)(n=o[s])&&e.call(n,n.__data__,s,o)&&l.push(n);return new or(a,this._parents)},data:function(e,t){if(!arguments.length)return Array.from(this,gt);var r=t?mt:ft,a=this._parents,i=this._groups;"function"!=typeof e&&(e=function(e){return function(){return e}}(e));for(var n=i.length,o=new Array(n),c=new Array(n),l=new Array(n),s=0;s<n;++s){var u=a[s],h=i[s],d=h.length,p=bt(e.call(u,u&&u.__data__,s,a)),y=p.length,f=c[s]=new Array(y),m=o[s]=new Array(y);r(u,h,f,m,l[s]=new Array(d),p,t);for(var g,b,v=0,x=0;v<y;++v)if(g=f[v]){for(v>=x&&(x=v+1);!(b=m[x])&&++x<y;);g._next=b||null}}return(o=new or(o,a))._enter=c,o._exit=l,o},enter:function(){return new or(this._enter||this._groups.map(pt),this._parents)},exit:function(){return new or(this._exit||this._groups.map(pt),this._parents)},join:function(e,t,r){var a=this.enter(),i=this,n=this.exit();return"function"==typeof e?(a=e(a))&&(a=a.selection()):a=a.append(e+""),null!=t&&(i=t(i))&&(i=i.selection()),null==r?n.remove():r(n),a&&i?a.merge(i).order():i},merge:function(e){for(var t=e.selection?e.selection():e,r=this._groups,a=t._groups,i=r.length,n=a.length,o=Math.min(i,n),c=new Array(i),l=0;l<o;++l)for(var s,u=r[l],h=a[l],d=u.length,p=c[l]=new Array(d),y=0;y<d;++y)(s=u[y]||h[y])&&(p[y]=s);for(;l<i;++l)c[l]=r[l];return new or(c,this._parents)},selection:function(){return this},order:function(){for(var e=this._groups,t=-1,r=e.length;++t<r;)for(var a,i=e[t],n=i.length-1,o=i[n];--n>=0;)(a=i[n])&&(o&&4^a.compareDocumentPosition(o)&&o.parentNode.insertBefore(a,o),o=a);return this},sort:function(e){function t(t,r){return t&&r?e(t.__data__,r.__data__):!t-!r}e||(e=vt);for(var r=this._groups,a=r.length,i=new Array(a),n=0;n<a;++n){for(var o,c=r[n],l=c.length,s=i[n]=new Array(l),u=0;u<l;++u)(o=c[u])&&(s[u]=o);s.sort(t)}return new or(i,this._parents).order()},call:function(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var a=e[t],i=0,n=a.length;i<n;++i){var o=a[i];if(o)return o}return null},size:function(){let e=0;for(const t of this)++e;return e},empty:function(){return!this.node()},each:function(e){for(var t=this._groups,r=0,a=t.length;r<a;++r)for(var i,n=t[r],o=0,c=n.length;o<c;++o)(i=n[o])&&e.call(i,i.__data__,o,n);return this},attr:function(e,t){var r=Qe(e);if(arguments.length<2){var a=this.node();return r.local?a.getAttributeNS(r.space,r.local):a.getAttribute(r)}return this.each((null==t?r.local?kt:xt:"function"==typeof t?r.local?St:_t:r.local?Ct:wt)(r,t))},style:function(e,t,r){return arguments.length>1?this.each((null==t?Mt:"function"==typeof t?Bt:Tt)(e,t,null==r?"":r)):Lt(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?Et:"function"==typeof t?Ht:Rt)(e,t)):this.node()[e]},classed:function(e,t){var r=Dt(e+"");if(arguments.length<2){for(var a=Pt(this.node()),i=-1,n=r.length;++i<n;)if(!a.contains(r[i]))return!1;return!0}return this.each(("function"==typeof t?Ot:t?Wt:Ft)(r,t))},text:function(e){return arguments.length?this.each(null==e?zt:("function"==typeof e?Jt:Kt)(e)):this.node().textContent},html:function(e){return arguments.length?this.each(null==e?Vt:("function"==typeof e?Yt:jt)(e)):this.node().innerHTML},raise:function(){return this.each($t)},lower:function(){return this.each(Ut)},append:function(e){var t="function"==typeof e?e:tt(e);return this.select((function(){return this.appendChild(t.apply(this,arguments))}))},insert:function(e,t){var r="function"==typeof e?e:tt(e),a=null==t?qt:"function"==typeof t?t:at(t);return this.select((function(){return this.insertBefore(r.apply(this,arguments),a.apply(this,arguments)||null)}))},remove:function(){return this.each(Zt)},clone:function(e){return this.select(e?Xt:Qt)},datum:function(e){return arguments.length?this.property("__data__",e):this.node().__data__},on:function(e,t,r){var a,i,n=function(e){return e.trim().split(/^|\s+/).map((function(e){var t="",r=e.indexOf(".");return r>=0&&(t=e.slice(r+1),e=e.slice(0,r)),{type:e,name:t}}))}(e+""),o=n.length;if(!(arguments.length<2)){for(c=t?tr:er,a=0;a<o;++a)this.each(c(n[a],t,r));return this}var c=this.node().__on;if(c)for(var l,s=0,u=c.length;s<u;++s)for(a=0,l=c[s];a<o;++a)if((i=n[a]).type===l.type&&i.name===l.name)return l.value},dispatch:function(e,t){return this.each(("function"==typeof t?ir:ar)(e,t))},[Symbol.iterator]:function*(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var a,i=e[t],n=0,o=i.length;n<o;++n)(a=i[n])&&(yield a)}};var ur=0;function hr(){return new dr}function dr(){this._="@"+(++ur).toString(36)}function pr(e){let t;for(;t=e.sourceEvent;)e=t;return e}function yr(e,t){if(e=pr(e),void 0===t&&(t=e.currentTarget),t){var r=t.ownerSVGElement||t;if(r.createSVGPoint){var a=r.createSVGPoint();return a.x=e.clientX,a.y=e.clientY,[(a=a.matrixTransform(t.getScreenCTM().inverse())).x,a.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}dr.prototype=hr.prototype={constructor:dr,get:function(e){for(var t=this._;!(t in e);)if(!(e=e.parentNode))return;return e[t]},set:function(e,t){return e[this._]=t},remove:function(e){return this._ in e&&delete e[this._]},toString:function(){return this._}};const fr={passive:!1},mr={capture:!0,passive:!1};function gr(e){e.stopImmediatePropagation()}function br(e){e.preventDefault(),e.stopImmediatePropagation()}function vr(e){var t=e.document.documentElement,r=lr(e).on("dragstart.drag",br,mr);"onselectstart"in t?r.on("selectstart.drag",br,mr):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function xr(e,t){var r=e.document.documentElement,a=lr(e).on("dragstart.drag",null);t&&(a.on("click.drag",br,mr),setTimeout((function(){a.on("click.drag",null)}),0)),"onselectstart"in r?a.on("selectstart.drag",null):(r.style.MozUserSelect=r.__noselect,delete r.__noselect)}var kr=e=>()=>e;function wr(e,{sourceEvent:t,subject:r,target:a,identifier:i,active:n,x:o,y:c,dx:l,dy:s,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:a,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:n,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:c,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:s,enumerable:!0,configurable:!0},_:{value:u}})}function Cr(e){return!e.ctrlKey&&!e.button}function _r(){return this.parentNode}function Sr(e,t){return null==t?{x:e.x,y:e.y}:t}function Ar(){return navigator.maxTouchPoints||"ontouchstart"in this}function Mr(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function Tr(e,t){var r=Object.create(e.prototype);for(var a in t)r[a]=t[a];return r}function Br(){}wr.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};var Lr=.7,Er=1/Lr,Rr="\\s*([+-]?\\d+)\\s*",Hr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Dr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Pr=/^#([0-9a-f]{3,8})$/,Nr=new RegExp(`^rgb\\(${Rr},${Rr},${Rr}\\)$`),Gr=new RegExp(`^rgb\\(${Dr},${Dr},${Dr}\\)$`),Ir=new RegExp(`^rgba\\(${Rr},${Rr},${Rr},${Hr}\\)$`),Wr=new RegExp(`^rgba\\(${Dr},${Dr},${Dr},${Hr}\\)$`),Fr=new RegExp(`^hsl\\(${Hr},${Dr},${Dr}\\)$`),Or=new RegExp(`^hsla\\(${Hr},${Dr},${Dr},${Hr}\\)$`),zr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Kr(){return this.rgb().formatHex()}function Jr(){return this.rgb().formatRgb()}function Vr(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Pr.exec(e))?(r=t[1].length,t=parseInt(t[1],16),6===r?jr(t):3===r?new qr(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?Yr(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?Yr(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=Nr.exec(e))?new qr(t[1],t[2],t[3],1):(t=Gr.exec(e))?new qr(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=Ir.exec(e))?Yr(t[1],t[2],t[3],t[4]):(t=Wr.exec(e))?Yr(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=Fr.exec(e))?ra(t[1],t[2]/100,t[3]/100,1):(t=Or.exec(e))?ra(t[1],t[2]/100,t[3]/100,t[4]):zr.hasOwnProperty(e)?jr(zr[e]):"transparent"===e?new qr(NaN,NaN,NaN,0):null}function jr(e){return new qr(e>>16&255,e>>8&255,255&e,1)}function Yr(e,t,r,a){return a<=0&&(e=t=r=NaN),new qr(e,t,r,a)}function $r(e){return e instanceof Br||(e=Vr(e)),e?new qr((e=e.rgb()).r,e.g,e.b,e.opacity):new qr}function Ur(e,t,r,a){return 1===arguments.length?$r(e):new qr(e,t,r,null==a?1:a)}function qr(e,t,r,a){this.r=+e,this.g=+t,this.b=+r,this.opacity=+a}function Zr(){return`#${ta(this.r)}${ta(this.g)}${ta(this.b)}`}function Qr(){const e=Xr(this.opacity);return`${1===e?"rgb(":"rgba("}${ea(this.r)}, ${ea(this.g)}, ${ea(this.b)}${1===e?")":`, ${e})`}`}function Xr(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ea(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ta(e){return((e=ea(e))<16?"0":"")+e.toString(16)}function ra(e,t,r,a){return a<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new na(e,t,r,a)}function aa(e){if(e instanceof na)return new na(e.h,e.s,e.l,e.opacity);if(e instanceof Br||(e=Vr(e)),!e)return new na;if(e instanceof na)return e;var t=(e=e.rgb()).r/255,r=e.g/255,a=e.b/255,i=Math.min(t,r,a),n=Math.max(t,r,a),o=NaN,c=n-i,l=(n+i)/2;return c?(o=t===n?(r-a)/c+6*(r<a):r===n?(a-t)/c+2:(t-r)/c+4,c/=l<.5?n+i:2-n-i,o*=60):c=l>0&&l<1?0:o,new na(o,c,l,e.opacity)}function ia(e,t,r,a){return 1===arguments.length?aa(e):new na(e,t,r,null==a?1:a)}function na(e,t,r,a){this.h=+e,this.s=+t,this.l=+r,this.opacity=+a}function oa(e){return(e=(e||0)%360)<0?e+360:e}function ca(e){return Math.max(0,Math.min(1,e||0))}function la(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}Mr(Br,Vr,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Kr,formatHex:Kr,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return aa(this).formatHsl()},formatRgb:Jr,toString:Jr}),Mr(qr,Ur,Tr(Br,{brighter(e){return e=null==e?Er:Math.pow(Er,e),new qr(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?Lr:Math.pow(Lr,e),new qr(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new qr(ea(this.r),ea(this.g),ea(this.b),Xr(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Zr,formatHex:Zr,formatHex8:function(){return`#${ta(this.r)}${ta(this.g)}${ta(this.b)}${ta(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Qr,toString:Qr})),Mr(na,ia,Tr(Br,{brighter(e){return e=null==e?Er:Math.pow(Er,e),new na(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?Lr:Math.pow(Lr,e),new na(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,a=r+(r<.5?r:1-r)*t,i=2*r-a;return new qr(la(e>=240?e-240:e+120,i,a),la(e,i,a),la(e<120?e+240:e-120,i,a),this.opacity)},clamp(){return new na(oa(this.h),ca(this.s),ca(this.l),Xr(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Xr(this.opacity);return`${1===e?"hsl(":"hsla("}${oa(this.h)}, ${100*ca(this.s)}%, ${100*ca(this.l)}%${1===e?")":`, ${e})`}`}}));const sa=Math.PI/180,ua=180/Math.PI,ha=.96422,da=.82521,pa=4/29,ya=6/29,fa=3*ya*ya,ma=ya*ya*ya;function ga(e){if(e instanceof xa)return new xa(e.l,e.a,e.b,e.opacity);if(e instanceof Ma)return Ta(e);e instanceof qr||(e=$r(e));var t,r,a=_a(e.r),i=_a(e.g),n=_a(e.b),o=ka((.2225045*a+.7168786*i+.0606169*n)/1);return a===i&&i===n?t=r=o:(t=ka((.4360747*a+.3850649*i+.1430804*n)/ha),r=ka((.0139322*a+.0971045*i+.7141733*n)/da)),new xa(116*o-16,500*(t-o),200*(o-r),e.opacity)}function ba(e,t){return new xa(e,0,0,null==t?1:t)}function va(e,t,r,a){return 1===arguments.length?ga(e):new xa(e,t,r,null==a?1:a)}function xa(e,t,r,a){this.l=+e,this.a=+t,this.b=+r,this.opacity=+a}function ka(e){return e>ma?Math.pow(e,1/3):e/fa+pa}function wa(e){return e>ya?e*e*e:fa*(e-pa)}function Ca(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function _a(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function Sa(e){if(e instanceof Ma)return new Ma(e.h,e.c,e.l,e.opacity);if(e instanceof xa||(e=ga(e)),0===e.a&&0===e.b)return new Ma(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*ua;return new Ma(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function Aa(e,t,r,a){return 1===arguments.length?Sa(e):new Ma(e,t,r,null==a?1:a)}function Ma(e,t,r,a){this.h=+e,this.c=+t,this.l=+r,this.opacity=+a}function Ta(e){if(isNaN(e.h))return new xa(e.l,0,0,e.opacity);var t=e.h*sa;return new xa(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}Mr(xa,va,Tr(Br,{brighter(e){return new xa(this.l+18*(null==e?1:e),this.a,this.b,this.opacity)},darker(e){return new xa(this.l-18*(null==e?1:e),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return new qr(Ca(3.1338561*(t=ha*wa(t))-1.6168667*(e=1*wa(e))-.4906146*(r=da*wa(r))),Ca(-.9787684*t+1.9161415*e+.033454*r),Ca(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}})),Mr(Ma,Aa,Tr(Br,{brighter(e){return new Ma(this.h,this.c,this.l+18*(null==e?1:e),this.opacity)},darker(e){return new Ma(this.h,this.c,this.l-18*(null==e?1:e),this.opacity)},rgb(){return Ta(this).rgb()}}));var Ba=-.14861,La=1.78277,Ea=-.29227,Ra=-.90649,Ha=1.97294,Da=Ha*Ra,Pa=Ha*La,Na=La*Ea-Ra*Ba;function Ga(e,t,r,a){return 1===arguments.length?function(e){if(e instanceof Ia)return new Ia(e.h,e.s,e.l,e.opacity);e instanceof qr||(e=$r(e));var t=e.r/255,r=e.g/255,a=e.b/255,i=(Na*a+Da*t-Pa*r)/(Na+Da-Pa),n=a-i,o=(Ha*(r-i)-Ea*n)/Ra,c=Math.sqrt(o*o+n*n)/(Ha*i*(1-i)),l=c?Math.atan2(o,n)*ua-120:NaN;return new Ia(l<0?l+360:l,c,i,e.opacity)}(e):new Ia(e,t,r,null==a?1:a)}function Ia(e,t,r,a){this.h=+e,this.s=+t,this.l=+r,this.opacity=+a}function Wa(e,t,r,a,i){var n=e*e,o=n*e;return((1-3*e+3*n-o)*t+(4-6*n+3*o)*r+(1+3*e+3*n-3*o)*a+o*i)/6}function Fa(e){var t=e.length-1;return function(r){var a=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[a],n=e[a+1],o=a>0?e[a-1]:2*i-n,c=a<t-1?e[a+2]:2*n-i;return Wa((r-a/t)*t,o,i,n,c)}}function Oa(e){var t=e.length;return function(r){var a=Math.floor(((r%=1)<0?++r:r)*t),i=e[(a+t-1)%t],n=e[a%t],o=e[(a+1)%t],c=e[(a+2)%t];return Wa((r-a/t)*t,i,n,o,c)}}Mr(Ia,Ga,Tr(Br,{brighter(e){return e=null==e?Er:Math.pow(Er,e),new Ia(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?Lr:Math.pow(Lr,e),new Ia(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*sa,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),a=Math.cos(e),i=Math.sin(e);return new qr(255*(t+r*(Ba*a+La*i)),255*(t+r*(Ea*a+Ra*i)),255*(t+r*(Ha*a)),this.opacity)}}));var za=e=>()=>e;function Ka(e,t){return function(r){return e+r*t}}function Ja(e,t){var r=t-e;return r?Ka(e,r>180||r<-180?r-360*Math.round(r/360):r):za(isNaN(e)?t:e)}function Va(e,t){var r=t-e;return r?Ka(e,r):za(isNaN(e)?t:e)}var ja=function e(t){var r=function(e){return 1==(e=+e)?Va:function(t,r){return r-t?function(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(a){return Math.pow(e+a*t,r)}}(t,r,e):za(isNaN(t)?r:t)}}(t);function a(e,t){var a=r((e=Ur(e)).r,(t=Ur(t)).r),i=r(e.g,t.g),n=r(e.b,t.b),o=Va(e.opacity,t.opacity);return function(t){return e.r=a(t),e.g=i(t),e.b=n(t),e.opacity=o(t),e+""}}return a.gamma=e,a}(1);function Ya(e){return function(t){var r,a,i=t.length,n=new Array(i),o=new Array(i),c=new Array(i);for(r=0;r<i;++r)a=Ur(t[r]),n[r]=a.r||0,o[r]=a.g||0,c[r]=a.b||0;return n=e(n),o=e(o),c=e(c),a.opacity=1,function(e){return a.r=n(e),a.g=o(e),a.b=c(e),a+""}}}var $a=Ya(Fa),Ua=Ya(Oa);function qa(e,t){t||(t=[]);var r,a=e?Math.min(t.length,e.length):0,i=t.slice();return function(n){for(r=0;r<a;++r)i[r]=e[r]*(1-n)+t[r]*n;return i}}function Za(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Qa(e,t){var r,a=t?t.length:0,i=e?Math.min(a,e.length):0,n=new Array(i),o=new Array(a);for(r=0;r<i;++r)n[r]=ni(e[r],t[r]);for(;r<a;++r)o[r]=t[r];return function(e){for(r=0;r<i;++r)o[r]=n[r](e);return o}}function Xa(e,t){var r=new Date;return e=+e,t=+t,function(a){return r.setTime(e*(1-a)+t*a),r}}function ei(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}function ti(e,t){var r,a={},i={};for(r in null!==e&&"object"==typeof e||(e={}),null!==t&&"object"==typeof t||(t={}),t)r in e?a[r]=ni(e[r],t[r]):i[r]=t[r];return function(e){for(r in a)i[r]=a[r](e);return i}}var ri=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ai=new RegExp(ri.source,"g");function ii(e,t){var r,a,i,n=ri.lastIndex=ai.lastIndex=0,o=-1,c=[],l=[];for(e+="",t+="";(r=ri.exec(e))&&(a=ai.exec(t));)(i=a.index)>n&&(i=t.slice(n,i),c[o]?c[o]+=i:c[++o]=i),(r=r[0])===(a=a[0])?c[o]?c[o]+=a:c[++o]=a:(c[++o]=null,l.push({i:o,x:ei(r,a)})),n=ai.lastIndex;return n<t.length&&(i=t.slice(n),c[o]?c[o]+=i:c[++o]=i),c.length<2?l[0]?function(e){return function(t){return e(t)+""}}(l[0].x):function(e){return function(){return e}}(t):(t=l.length,function(e){for(var r,a=0;a<t;++a)c[(r=l[a]).i]=r.x(e);return c.join("")})}function ni(e,t){var r,a=typeof t;return null==t||"boolean"===a?za(t):("number"===a?ei:"string"===a?(r=Vr(t))?(t=r,ja):ii:t instanceof Vr?ja:t instanceof Date?Xa:Za(t)?qa:Array.isArray(t)?Qa:"function"!=typeof t.valueOf&&"function"!=typeof t.toString||isNaN(t)?ti:ei)(e,t)}function oi(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var ci,li=180/Math.PI,si={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ui(e,t,r,a,i,n){var o,c,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*r+t*a)&&(r-=e*l,a-=t*l),(c=Math.sqrt(r*r+a*a))&&(r/=c,a/=c,l/=c),e*a<t*r&&(e=-e,t=-t,l=-l,o=-o),{translateX:i,translateY:n,rotate:Math.atan2(t,e)*li,skewX:Math.atan(l)*li,scaleX:o,scaleY:c}}function hi(e,t,r,a){function i(e){return e.length?e.pop()+" ":""}return function(n,o){var c=[],l=[];return n=e(n),o=e(o),function(e,a,i,n,o,c){if(e!==i||a!==n){var l=o.push("translate(",null,t,null,r);c.push({i:l-4,x:ei(e,i)},{i:l-2,x:ei(a,n)})}else(i||n)&&o.push("translate("+i+t+n+r)}(n.translateX,n.translateY,o.translateX,o.translateY,c,l),function(e,t,r,n){e!==t?(e-t>180?t+=360:t-e>180&&(e+=360),n.push({i:r.push(i(r)+"rotate(",null,a)-2,x:ei(e,t)})):t&&r.push(i(r)+"rotate("+t+a)}(n.rotate,o.rotate,c,l),function(e,t,r,n){e!==t?n.push({i:r.push(i(r)+"skewX(",null,a)-2,x:ei(e,t)}):t&&r.push(i(r)+"skewX("+t+a)}(n.skewX,o.skewX,c,l),function(e,t,r,a,n,o){if(e!==r||t!==a){var c=n.push(i(n)+"scale(",null,",",null,")");o.push({i:c-4,x:ei(e,r)},{i:c-2,x:ei(t,a)})}else 1===r&&1===a||n.push(i(n)+"scale("+r+","+a+")")}(n.scaleX,n.scaleY,o.scaleX,o.scaleY,c,l),n=o=null,function(e){for(var t,r=-1,a=l.length;++r<a;)c[(t=l[r]).i]=t.x(e);return c.join("")}}}var di=hi((function(e){const t=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?si:ui(t.a,t.b,t.c,t.d,t.e,t.f)}),"px, ","px)","deg)"),pi=hi((function(e){return null==e?si:(ci||(ci=document.createElementNS("http://www.w3.org/2000/svg","g")),ci.setAttribute("transform",e),(e=ci.transform.baseVal.consolidate())?ui((e=e.matrix).a,e.b,e.c,e.d,e.e,e.f):si)}),", ",")",")");function yi(e){return((e=Math.exp(e))+1/e)/2}var fi=function e(t,r,a){function i(e,i){var n,o,c=e[0],l=e[1],s=e[2],u=i[0],h=i[1],d=i[2],p=u-c,y=h-l,f=p*p+y*y;if(f<1e-12)o=Math.log(d/s)/t,n=function(e){return[c+e*p,l+e*y,s*Math.exp(t*e*o)]};else{var m=Math.sqrt(f),g=(d*d-s*s+a*f)/(2*s*r*m),b=(d*d-s*s-a*f)/(2*d*r*m),v=Math.log(Math.sqrt(g*g+1)-g),x=Math.log(Math.sqrt(b*b+1)-b);o=(x-v)/t,n=function(e){var a=e*o,i=yi(v),n=s/(r*m)*(i*function(e){return((e=Math.exp(2*e))-1)/(e+1)}(t*a+v)-function(e){return((e=Math.exp(e))-1/e)/2}(v));return[c+n*p,l+n*y,s*i/yi(t*a+v)]}}return n.duration=1e3*o*t/Math.SQRT2,n}return i.rho=function(t){var r=Math.max(.001,+t),a=r*r;return e(r,a,a*a)},i}(Math.SQRT2,2,4);function mi(e){return function(t,r){var a=e((t=ia(t)).h,(r=ia(r)).h),i=Va(t.s,r.s),n=Va(t.l,r.l),o=Va(t.opacity,r.opacity);return function(e){return t.h=a(e),t.s=i(e),t.l=n(e),t.opacity=o(e),t+""}}}var gi=mi(Ja),bi=mi(Va);function vi(e){return function(t,r){var a=e((t=Aa(t)).h,(r=Aa(r)).h),i=Va(t.c,r.c),n=Va(t.l,r.l),o=Va(t.opacity,r.opacity);return function(e){return t.h=a(e),t.c=i(e),t.l=n(e),t.opacity=o(e),t+""}}}var xi=vi(Ja),ki=vi(Va);function wi(e){return function t(r){function a(t,a){var i=e((t=Ga(t)).h,(a=Ga(a)).h),n=Va(t.s,a.s),o=Va(t.l,a.l),c=Va(t.opacity,a.opacity);return function(e){return t.h=i(e),t.s=n(e),t.l=o(Math.pow(e,r)),t.opacity=c(e),t+""}}return r=+r,a.gamma=t,a}(1)}var Ci=wi(Ja),_i=wi(Va);function Si(e,t){void 0===t&&(t=e,e=ni);for(var r=0,a=t.length-1,i=t[0],n=new Array(a<0?0:a);r<a;)n[r]=e(i,i=t[++r]);return function(e){var t=Math.max(0,Math.min(a-1,Math.floor(e*=a)));return n[t](e-t)}}var Ai,Mi,Ti=0,Bi=0,Li=0,Ei=0,Ri=0,Hi=0,Di="object"==typeof performance&&performance.now?performance:Date,Pi="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Ni(){return Ri||(Pi(Gi),Ri=Di.now()+Hi)}function Gi(){Ri=0}function Ii(){this._call=this._time=this._next=null}function Wi(e,t,r){var a=new Ii;return a.restart(e,t,r),a}function Fi(){Ni(),++Ti;for(var e,t=Ai;t;)(e=Ri-t._time)>=0&&t._call.call(void 0,e),t=t._next;--Ti}function Oi(){Ri=(Ei=Di.now())+Hi,Ti=Bi=0;try{Fi()}finally{Ti=0,function(){for(var e,t,r=Ai,a=1/0;r;)r._call?(a>r._time&&(a=r._time),e=r,r=r._next):(t=r._next,r._next=null,r=e?e._next=t:Ai=t);Mi=e,Ki(a)}(),Ri=0}}function zi(){var e=Di.now(),t=e-Ei;t>1e3&&(Hi-=t,Ei=e)}function Ki(e){Ti||(Bi&&(Bi=clearTimeout(Bi)),e-Ri>24?(e<1/0&&(Bi=setTimeout(Oi,e-Di.now()-Hi)),Li&&(Li=clearInterval(Li))):(Li||(Ei=Di.now(),Li=setInterval(zi,1e3)),Ti=1,Pi(Oi)))}function Ji(e,t,r){var a=new Ii;return t=null==t?0:+t,a.restart((r=>{a.stop(),e(r+t)}),t,r),a}Ii.prototype=Wi.prototype={constructor:Ii,restart:function(e,t,r){if("function"!=typeof e)throw new TypeError("callback is not a function");r=(null==r?Ni():+r)+(null==t?0:+t),this._next||Mi===this||(Mi?Mi._next=this:Ai=this,Mi=this),this._call=e,this._time=r,Ki()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ki())}};var Vi=je("start","end","cancel","interrupt"),ji=[];function Yi(e,t,r,a,i,n){var o=e.__transition;if(o){if(r in o)return}else e.__transition={};!function(e,t,r){var a,i=e.__transition;function n(l){var s,u,h,d;if(1!==r.state)return c();for(s in i)if((d=i[s]).name===r.name){if(3===d.state)return Ji(n);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",e,e.__data__,d.index,d.group),delete i[s]):+s<t&&(d.state=6,d.timer.stop(),d.on.call("cancel",e,e.__data__,d.index,d.group),delete i[s])}if(Ji((function(){3===r.state&&(r.state=4,r.timer.restart(o,r.delay,r.time),o(l))})),r.state=2,r.on.call("start",e,e.__data__,r.index,r.group),2===r.state){for(r.state=3,a=new Array(h=r.tween.length),s=0,u=-1;s<h;++s)(d=r.tween[s].value.call(e,e.__data__,r.index,r.group))&&(a[++u]=d);a.length=u+1}}function o(t){for(var i=t<r.duration?r.ease.call(null,t/r.duration):(r.timer.restart(c),r.state=5,1),n=-1,o=a.length;++n<o;)a[n].call(e,i);5===r.state&&(r.on.call("end",e,e.__data__,r.index,r.group),c())}function c(){for(var a in r.state=6,r.timer.stop(),delete i[t],i)return;delete e.__transition}i[t]=r,r.timer=Wi((function(e){r.state=1,r.timer.restart(n,r.delay,r.time),r.delay<=e&&n(e-r.delay)}),0,r.time)}(e,r,{name:t,index:a,group:i,on:Vi,tween:ji,time:n.time,delay:n.delay,duration:n.duration,ease:n.ease,timer:null,state:0})}function $i(e,t){var r=qi(e,t);if(r.state>0)throw new Error("too late; already scheduled");return r}function Ui(e,t){var r=qi(e,t);if(r.state>3)throw new Error("too late; already running");return r}function qi(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function Zi(e,t){var r,a,i,n=e.__transition,o=!0;if(n){for(i in t=null==t?null:t+"",n)(r=n[i]).name===t?(a=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(a?"interrupt":"cancel",e,e.__data__,r.index,r.group),delete n[i]):o=!1;o&&delete e.__transition}}function Qi(e,t){var r,a;return function(){var i=Ui(this,e),n=i.tween;if(n!==r)for(var o=0,c=(a=r=n).length;o<c;++o)if(a[o].name===t){(a=a.slice()).splice(o,1);break}i.tween=a}}function Xi(e,t,r){var a,i;if("function"!=typeof r)throw new Error;return function(){var n=Ui(this,e),o=n.tween;if(o!==a){i=(a=o).slice();for(var c={name:t,value:r},l=0,s=i.length;l<s;++l)if(i[l].name===t){i[l]=c;break}l===s&&i.push(c)}n.tween=i}}function en(e,t,r){var a=e._id;return e.each((function(){var e=Ui(this,a);(e.value||(e.value={}))[t]=r.apply(this,arguments)})),function(e){return qi(e,a).value[t]}}function tn(e,t){var r;return("number"==typeof t?ei:t instanceof Vr?ja:(r=Vr(t))?(t=r,ja):ii)(e,t)}function rn(e){return function(){this.removeAttribute(e)}}function an(e){return function(){this.removeAttributeNS(e.space,e.local)}}function nn(e,t,r){var a,i,n=r+"";return function(){var o=this.getAttribute(e);return o===n?null:o===a?i:i=t(a=o,r)}}function on(e,t,r){var a,i,n=r+"";return function(){var o=this.getAttributeNS(e.space,e.local);return o===n?null:o===a?i:i=t(a=o,r)}}function cn(e,t,r){var a,i,n;return function(){var o,c,l=r(this);if(null!=l)return(o=this.getAttribute(e))===(c=l+"")?null:o===a&&c===i?n:(i=c,n=t(a=o,l));this.removeAttribute(e)}}function ln(e,t,r){var a,i,n;return function(){var o,c,l=r(this);if(null!=l)return(o=this.getAttributeNS(e.space,e.local))===(c=l+"")?null:o===a&&c===i?n:(i=c,n=t(a=o,l));this.removeAttributeNS(e.space,e.local)}}function sn(e,t){var r,a;function i(){var i=t.apply(this,arguments);return i!==a&&(r=(a=i)&&function(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}(e,i)),r}return i._value=t,i}function un(e,t){var r,a;function i(){var i=t.apply(this,arguments);return i!==a&&(r=(a=i)&&function(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}(e,i)),r}return i._value=t,i}function hn(e,t){return function(){$i(this,e).delay=+t.apply(this,arguments)}}function dn(e,t){return t=+t,function(){$i(this,e).delay=t}}function pn(e,t){return function(){Ui(this,e).duration=+t.apply(this,arguments)}}function yn(e,t){return t=+t,function(){Ui(this,e).duration=t}}var fn=cr.prototype.constructor;function mn(e){return function(){this.style.removeProperty(e)}}var gn=0;function bn(e,t,r,a){this._groups=e,this._parents=t,this._name=r,this._id=a}function vn(e){return cr().transition(e)}function xn(){return++gn}var kn=cr.prototype;function wn(e){return((e*=2)<=1?e*e:--e*(2-e)+1)/2}function Cn(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}bn.prototype=vn.prototype={constructor:bn,select:function(e){var t=this._name,r=this._id;"function"!=typeof e&&(e=at(e));for(var a=this._groups,i=a.length,n=new Array(i),o=0;o<i;++o)for(var c,l,s=a[o],u=s.length,h=n[o]=new Array(u),d=0;d<u;++d)(c=s[d])&&(l=e.call(c,c.__data__,d,s))&&("__data__"in c&&(l.__data__=c.__data__),h[d]=l,Yi(h[d],t,r,d,h,qi(c,r)));return new bn(n,this._parents,t,r)},selectAll:function(e){var t=this._name,r=this._id;"function"!=typeof e&&(e=ot(e));for(var a=this._groups,i=a.length,n=[],o=[],c=0;c<i;++c)for(var l,s=a[c],u=s.length,h=0;h<u;++h)if(l=s[h]){for(var d,p=e.call(l,l.__data__,h,s),y=qi(l,r),f=0,m=p.length;f<m;++f)(d=p[f])&&Yi(d,t,r,f,p,y);n.push(p),o.push(l)}return new bn(n,o,t,r)},selectChild:kn.selectChild,selectChildren:kn.selectChildren,filter:function(e){"function"!=typeof e&&(e=ct(e));for(var t=this._groups,r=t.length,a=new Array(r),i=0;i<r;++i)for(var n,o=t[i],c=o.length,l=a[i]=[],s=0;s<c;++s)(n=o[s])&&e.call(n,n.__data__,s,o)&&l.push(n);return new bn(a,this._parents,this._name,this._id)},merge:function(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,a=t.length,i=r.length,n=Math.min(a,i),o=new Array(a),c=0;c<n;++c)for(var l,s=t[c],u=r[c],h=s.length,d=o[c]=new Array(h),p=0;p<h;++p)(l=s[p]||u[p])&&(d[p]=l);for(;c<a;++c)o[c]=t[c];return new bn(o,this._parents,this._name,this._id)},selection:function(){return new fn(this._groups,this._parents)},transition:function(){for(var e=this._name,t=this._id,r=xn(),a=this._groups,i=a.length,n=0;n<i;++n)for(var o,c=a[n],l=c.length,s=0;s<l;++s)if(o=c[s]){var u=qi(o,t);Yi(o,e,r,s,c,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new bn(a,this._parents,e,r)},call:kn.call,nodes:kn.nodes,node:kn.node,size:kn.size,empty:kn.empty,each:kn.each,on:function(e,t){var r=this._id;return arguments.length<2?qi(this.node(),r).on.on(e):this.each(function(e,t,r){var a,i,n=function(e){return(e+"").trim().split(/^|\s+/).every((function(e){var t=e.indexOf(".");return t>=0&&(e=e.slice(0,t)),!e||"start"===e}))}(t)?$i:Ui;return function(){var o=n(this,e),c=o.on;c!==a&&(i=(a=c).copy()).on(t,r),o.on=i}}(r,e,t))},attr:function(e,t){var r=Qe(e),a="transform"===r?pi:tn;return this.attrTween(e,"function"==typeof t?(r.local?ln:cn)(r,a,en(this,"attr."+e,t)):null==t?(r.local?an:rn)(r):(r.local?on:nn)(r,a,t))},attrTween:function(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==t)return this.tween(r,null);if("function"!=typeof t)throw new Error;var a=Qe(e);return this.tween(r,(a.local?sn:un)(a,t))},style:function(e,t,r){var a="transform"==(e+="")?di:tn;return null==t?this.styleTween(e,function(e,t){var r,a,i;return function(){var n=Lt(this,e),o=(this.style.removeProperty(e),Lt(this,e));return n===o?null:n===r&&o===a?i:i=t(r=n,a=o)}}(e,a)).on("end.style."+e,mn(e)):"function"==typeof t?this.styleTween(e,function(e,t,r){var a,i,n;return function(){var o=Lt(this,e),c=r(this),l=c+"";return null==c&&(this.style.removeProperty(e),l=c=Lt(this,e)),o===l?null:o===a&&l===i?n:(i=l,n=t(a=o,c))}}(e,a,en(this,"style."+e,t))).each(function(e,t){var r,a,i,n,o="style."+t,c="end."+o;return function(){var l=Ui(this,e),s=l.on,u=null==l.value[o]?n||(n=mn(t)):void 0;s===r&&i===u||(a=(r=s).copy()).on(c,i=u),l.on=a}}(this._id,e)):this.styleTween(e,function(e,t,r){var a,i,n=r+"";return function(){var o=Lt(this,e);return o===n?null:o===a?i:i=t(a=o,r)}}(e,a,t),r).on("end.style."+e,null)},styleTween:function(e,t,r){var a="style."+(e+="");if(arguments.length<2)return(a=this.tween(a))&&a._value;if(null==t)return this.tween(a,null);if("function"!=typeof t)throw new Error;return this.tween(a,function(e,t,r){var a,i;function n(){var n=t.apply(this,arguments);return n!==i&&(a=(i=n)&&function(e,t,r){return function(a){this.style.setProperty(e,t.call(this,a),r)}}(e,n,r)),a}return n._value=t,n}(e,t,null==r?"":r))},text:function(e){return this.tween("text","function"==typeof e?function(e){return function(){var t=e(this);this.textContent=null==t?"":t}}(en(this,"text",e)):function(e){return function(){this.textContent=e}}(null==e?"":e+""))},textTween:function(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(null==e)return this.tween(t,null);if("function"!=typeof e)throw new Error;return this.tween(t,function(e){var t,r;function a(){var a=e.apply(this,arguments);return a!==r&&(t=(r=a)&&function(e){return function(t){this.textContent=e.call(this,t)}}(a)),t}return a._value=e,a}(e))},remove:function(){return this.on("end.remove",function(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}(this._id))},tween:function(e,t){var r=this._id;if(e+="",arguments.length<2){for(var a,i=qi(this.node(),r).tween,n=0,o=i.length;n<o;++n)if((a=i[n]).name===e)return a.value;return null}return this.each((null==t?Qi:Xi)(r,e,t))},delay:function(e){var t=this._id;return arguments.length?this.each(("function"==typeof e?hn:dn)(t,e)):qi(this.node(),t).delay},duration:function(e){var t=this._id;return arguments.length?this.each(("function"==typeof e?pn:yn)(t,e)):qi(this.node(),t).duration},ease:function(e){var t=this._id;return arguments.length?this.each(function(e,t){if("function"!=typeof t)throw new Error;return function(){Ui(this,e).ease=t}}(t,e)):qi(this.node(),t).ease},easeVarying:function(e){if("function"!=typeof e)throw new Error;return this.each(function(e,t){return function(){var r=t.apply(this,arguments);if("function"!=typeof r)throw new Error;Ui(this,e).ease=r}}(this._id,e))},end:function(){var e,t,r=this,a=r._id,i=r.size();return new Promise((function(n,o){var c={value:o},l={value:function(){0==--i&&n()}};r.each((function(){var r=Ui(this,a),i=r.on;i!==e&&((t=(e=i).copy())._.cancel.push(c),t._.interrupt.push(c),t._.end.push(l)),r.on=t})),0===i&&n()}))},[Symbol.iterator]:kn[Symbol.iterator]};var _n=function e(t){function r(e){return Math.pow(e,t)}return t=+t,r.exponent=e,r}(3),Sn=function e(t){function r(e){return 1-Math.pow(1-e,t)}return t=+t,r.exponent=e,r}(3),An=function e(t){function r(e){return((e*=2)<=1?Math.pow(e,t):2-Math.pow(2-e,t))/2}return t=+t,r.exponent=e,r}(3),Mn=Math.PI,Tn=Mn/2;function Bn(e){return(1-Math.cos(Mn*e))/2}function Ln(e){return 1.0009775171065494*(Math.pow(2,-10*e)-.0009765625)}function En(e){return((e*=2)<=1?Ln(1-e):2-Ln(e-1))/2}function Rn(e){return((e*=2)<=1?1-Math.sqrt(1-e*e):Math.sqrt(1-(e-=2)*e)+1)/2}var Hn=4/11,Dn=6/11,Pn=8/11,Nn=9/11,Gn=10/11,In=21/22,Wn=7.5625;function Fn(e){return(e=+e)<Hn?Wn*e*e:e<Pn?Wn*(e-=Dn)*e+.75:e<Gn?Wn*(e-=Nn)*e+.9375:Wn*(e-=In)*e+.984375}var On=1.70158,zn=function e(t){function r(e){return(e=+e)*e*(t*(e-1)+e)}return t=+t,r.overshoot=e,r}(On),Kn=function e(t){function r(e){return--e*e*((e+1)*t+e)+1}return t=+t,r.overshoot=e,r}(On),Jn=function e(t){function r(e){return((e*=2)<1?e*e*((t+1)*e-t):(e-=2)*e*((t+1)*e+t)+2)/2}return t=+t,r.overshoot=e,r}(On),Vn=2*Math.PI,jn=function e(t,r){var a=Math.asin(1/(t=Math.max(1,t)))*(r/=Vn);function i(e){return t*Ln(- --e)*Math.sin((a-e)/r)}return i.amplitude=function(t){return e(t,r*Vn)},i.period=function(r){return e(t,r)},i}(1,.3),Yn=function e(t,r){var a=Math.asin(1/(t=Math.max(1,t)))*(r/=Vn);function i(e){return 1-t*Ln(e=+e)*Math.sin((e+a)/r)}return i.amplitude=function(t){return e(t,r*Vn)},i.period=function(r){return e(t,r)},i}(1,.3),$n=function e(t,r){var a=Math.asin(1/(t=Math.max(1,t)))*(r/=Vn);function i(e){return((e=2*e-1)<0?t*Ln(-e)*Math.sin((a-e)/r):2-t*Ln(e)*Math.sin((a+e)/r))/2}return i.amplitude=function(t){return e(t,r*Vn)},i.period=function(r){return e(t,r)},i}(1,.3),Un={time:null,delay:0,duration:250,ease:Cn};function qn(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}cr.prototype.interrupt=function(e){return this.each((function(){Zi(this,e)}))},cr.prototype.transition=function(e){var t,r;e instanceof bn?(t=e._id,e=e._name):(t=xn(),(r=Un).time=Ni(),e=null==e?null:e+"");for(var a=this._groups,i=a.length,n=0;n<i;++n)for(var o,c=a[n],l=c.length,s=0;s<l;++s)(o=c[s])&&Yi(o,e,t,s,c,r||qn(o,t));return new bn(a,this._parents,e,t)};var Zn=[null],Qn=e=>()=>e;function Xn(e,{sourceEvent:t,target:r,selection:a,mode:i,dispatch:n}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},selection:{value:a,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:n}})}function eo(e){e.preventDefault(),e.stopImmediatePropagation()}var to={name:"drag"},ro={name:"space"},ao={name:"handle"},io={name:"center"};const{abs:no,max:oo,min:co}=Math;function lo(e){return[+e[0],+e[1]]}function so(e){return[lo(e[0]),lo(e[1])]}var uo={name:"x",handles:["w","e"].map(vo),input:function(e,t){return null==e?null:[[+e[0],t[0][1]],[+e[1],t[1][1]]]},output:function(e){return e&&[e[0][0],e[1][0]]}},ho={name:"y",handles:["n","s"].map(vo),input:function(e,t){return null==e?null:[[t[0][0],+e[0]],[t[1][0],+e[1]]]},output:function(e){return e&&[e[0][1],e[1][1]]}},po={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(vo),input:function(e){return null==e?null:so(e)},output:function(e){return e}},yo={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},fo={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},mo={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},go={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},bo={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function vo(e){return{type:e}}function xo(e){return!e.ctrlKey&&!e.button}function ko(){var e=this.ownerSVGElement||this;return e.hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]}function wo(){return navigator.maxTouchPoints||"ontouchstart"in this}function Co(e){for(;!e.__brush;)if(!(e=e.parentNode))return;return e.__brush}function _o(e){var t,r=ko,a=xo,i=wo,n=!0,o=je("start","brush","end"),c=6;function l(t){var r=t.property("__brush",f).selectAll(".overlay").data([vo("overlay")]);r.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",yo.overlay).merge(r).each((function(){var e=Co(this).extent;lr(this).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1])})),t.selectAll(".selection").data([vo("selection")]).enter().append("rect").attr("class","selection").attr("cursor",yo.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var a=t.selectAll(".handle").data(e.handles,(function(e){return e.type}));a.exit().remove(),a.enter().append("rect").attr("class",(function(e){return"handle handle--"+e.type})).attr("cursor",(function(e){return yo[e.type]})),t.each(s).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",d).filter(i).on("touchstart.brush",d).on("touchmove.brush",p).on("touchend.brush touchcancel.brush",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function s(){var e=lr(this),t=Co(this).selection;t?(e.selectAll(".selection").style("display",null).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1]),e.selectAll(".handle").style("display",null).attr("x",(function(e){return"e"===e.type[e.type.length-1]?t[1][0]-c/2:t[0][0]-c/2})).attr("y",(function(e){return"s"===e.type[0]?t[1][1]-c/2:t[0][1]-c/2})).attr("width",(function(e){return"n"===e.type||"s"===e.type?t[1][0]-t[0][0]+c:c})).attr("height",(function(e){return"e"===e.type||"w"===e.type?t[1][1]-t[0][1]+c:c}))):e.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function u(e,t,r){var a=e.__brush.emitter;return!a||r&&a.clean?new h(e,t,r):a}function h(e,t,r){this.that=e,this.args=t,this.state=e.__brush,this.active=0,this.clean=r}function d(r){if((!t||r.touches)&&a.apply(this,arguments)){var i,o,c,l,h,d,p,y,f,m,g,b=this,v=r.target.__data__.type,x="selection"===(n&&r.metaKey?v="overlay":v)?to:n&&r.altKey?io:ao,k=e===ho?null:go[v],w=e===uo?null:bo[v],C=Co(b),_=C.extent,S=C.selection,A=_[0][0],M=_[0][1],T=_[1][0],B=_[1][1],L=0,E=0,R=k&&w&&n&&r.shiftKey,H=Array.from(r.touches||[r],(e=>{const t=e.identifier;return(e=yr(e,b)).point0=e.slice(),e.identifier=t,e}));Zi(b);var D=u(b,arguments,!0).beforestart();if("overlay"===v){S&&(f=!0);const t=[H[0],H[1]||H[0]];C.selection=S=[[i=e===ho?A:co(t[0][0],t[1][0]),c=e===uo?M:co(t[0][1],t[1][1])],[h=e===ho?T:oo(t[0][0],t[1][0]),p=e===uo?B:oo(t[0][1],t[1][1])]],H.length>1&&W(r)}else i=S[0][0],c=S[0][1],h=S[1][0],p=S[1][1];o=i,l=c,d=h,y=p;var P=lr(b).attr("pointer-events","none"),N=P.selectAll(".overlay").attr("cursor",yo[v]);if(r.touches)D.moved=I,D.ended=F;else{var G=lr(r.view).on("mousemove.brush",I,!0).on("mouseup.brush",F,!0);n&&G.on("keydown.brush",(function(e){switch(e.keyCode){case 16:R=k&&w;break;case 18:x===ao&&(k&&(h=d-L*k,i=o+L*k),w&&(p=y-E*w,c=l+E*w),x=io,W(e));break;case 32:x!==ao&&x!==io||(k<0?h=d-L:k>0&&(i=o-L),w<0?p=y-E:w>0&&(c=l-E),x=ro,N.attr("cursor",yo.selection),W(e));break;default:return}eo(e)}),!0).on("keyup.brush",(function(e){switch(e.keyCode){case 16:R&&(m=g=R=!1,W(e));break;case 18:x===io&&(k<0?h=d:k>0&&(i=o),w<0?p=y:w>0&&(c=l),x=ao,W(e));break;case 32:x===ro&&(e.altKey?(k&&(h=d-L*k,i=o+L*k),w&&(p=y-E*w,c=l+E*w),x=io):(k<0?h=d:k>0&&(i=o),w<0?p=y:w>0&&(c=l),x=ao),N.attr("cursor",yo[v]),W(e));break;default:return}eo(e)}),!0),vr(r.view)}s.call(b),D.start(r,x.name)}function I(e){for(const t of e.changedTouches||[e])for(const e of H)e.identifier===t.identifier&&(e.cur=yr(t,b));if(R&&!m&&!g&&1===H.length){const e=H[0];no(e.cur[0]-e[0])>no(e.cur[1]-e[1])?g=!0:m=!0}for(const t of H)t.cur&&(t[0]=t.cur[0],t[1]=t.cur[1]);f=!0,eo(e),W(e)}function W(e){const t=H[0],r=t.point0;var a;switch(L=t[0]-r[0],E=t[1]-r[1],x){case ro:case to:k&&(L=oo(A-i,co(T-h,L)),o=i+L,d=h+L),w&&(E=oo(M-c,co(B-p,E)),l=c+E,y=p+E);break;case ao:H[1]?(k&&(o=oo(A,co(T,H[0][0])),d=oo(A,co(T,H[1][0])),k=1),w&&(l=oo(M,co(B,H[0][1])),y=oo(M,co(B,H[1][1])),w=1)):(k<0?(L=oo(A-i,co(T-i,L)),o=i+L,d=h):k>0&&(L=oo(A-h,co(T-h,L)),o=i,d=h+L),w<0?(E=oo(M-c,co(B-c,E)),l=c+E,y=p):w>0&&(E=oo(M-p,co(B-p,E)),l=c,y=p+E));break;case io:k&&(o=oo(A,co(T,i-L*k)),d=oo(A,co(T,h+L*k))),w&&(l=oo(M,co(B,c-E*w)),y=oo(M,co(B,p+E*w)))}d<o&&(k*=-1,a=i,i=h,h=a,a=o,o=d,d=a,v in fo&&N.attr("cursor",yo[v=fo[v]])),y<l&&(w*=-1,a=c,c=p,p=a,a=l,l=y,y=a,v in mo&&N.attr("cursor",yo[v=mo[v]])),C.selection&&(S=C.selection),m&&(o=S[0][0],d=S[1][0]),g&&(l=S[0][1],y=S[1][1]),S[0][0]===o&&S[0][1]===l&&S[1][0]===d&&S[1][1]===y||(C.selection=[[o,l],[d,y]],s.call(b),D.brush(e,x.name))}function F(e){if(function(e){e.stopImmediatePropagation()}(e),e.touches){if(e.touches.length)return;t&&clearTimeout(t),t=setTimeout((function(){t=null}),500)}else xr(e.view,f),G.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);P.attr("pointer-events","all"),N.attr("cursor",yo.overlay),C.selection&&(S=C.selection),function(e){return e[0][0]===e[1][0]||e[0][1]===e[1][1]}(S)&&(C.selection=null,s.call(b)),D.end(e,x.name)}}function p(e){u(this,arguments).moved(e)}function y(e){u(this,arguments).ended(e)}function f(){var t=this.__brush||{selection:null};return t.extent=so(r.apply(this,arguments)),t.dim=e,t}return l.move=function(t,r,a){t.tween?t.on("start.brush",(function(e){u(this,arguments).beforestart().start(e)})).on("interrupt.brush end.brush",(function(e){u(this,arguments).end(e)})).tween("brush",(function(){var t=this,a=t.__brush,i=u(t,arguments),n=a.selection,o=e.input("function"==typeof r?r.apply(this,arguments):r,a.extent),c=ni(n,o);function l(e){a.selection=1===e&&null===o?null:c(e),s.call(t),i.brush()}return null!==n&&null!==o?l:l(1)})):t.each((function(){var t=this,i=arguments,n=t.__brush,o=e.input("function"==typeof r?r.apply(t,i):r,n.extent),c=u(t,i).beforestart();Zi(t),n.selection=null===o?null:o,s.call(t),c.start(a).brush(a).end(a)}))},l.clear=function(e,t){l.move(e,null,t)},h.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(e,t){return this.starting?(this.starting=!1,this.emit("start",e,t)):this.emit("brush",e),this},brush:function(e,t){return this.emit("brush",e,t),this},end:function(e,t){return 0==--this.active&&(delete this.state.emitter,this.emit("end",e,t)),this},emit:function(t,r,a){var i=lr(this.that).datum();o.call(t,this.that,new Xn(t,{sourceEvent:r,target:l,selection:e.output(this.state.selection),mode:a,dispatch:o}),i)}},l.extent=function(e){return arguments.length?(r="function"==typeof e?e:Qn(so(e)),l):r},l.filter=function(e){return arguments.length?(a="function"==typeof e?e:Qn(!!e),l):a},l.touchable=function(e){return arguments.length?(i="function"==typeof e?e:Qn(!!e),l):i},l.handleSize=function(e){return arguments.length?(c=+e,l):c},l.keyModifiers=function(e){return arguments.length?(n=!!e,l):n},l.on=function(){var e=o.on.apply(o,arguments);return e===o?l:e},l}var So=Math.abs,Ao=Math.cos,Mo=Math.sin,To=Math.PI,Bo=To/2,Lo=2*To,Eo=Math.max,Ro=1e-12;function Ho(e,t){return Array.from({length:t-e},((t,r)=>e+r))}function Do(e,t){var r=0,a=null,i=null,n=null;function o(o){var c,l=o.length,s=new Array(l),u=Ho(0,l),h=new Array(l*l),d=new Array(l),p=0;o=Float64Array.from({length:l*l},t?(e,t)=>o[t%l][t/l|0]:(e,t)=>o[t/l|0][t%l]);for(let t=0;t<l;++t){let r=0;for(let a=0;a<l;++a)r+=o[t*l+a]+e*o[a*l+t];p+=s[t]=r}c=(p=Eo(0,Lo-r*l)/p)?r:Lo/l;{let t=0;a&&u.sort(((e,t)=>a(s[e],s[t])));for(const r of u){const a=t;if(e){const e=Ho(1+~l,l).filter((e=>e<0?o[~e*l+r]:o[r*l+e]));i&&e.sort(((e,t)=>i(e<0?-o[~e*l+r]:o[r*l+e],t<0?-o[~t*l+r]:o[r*l+t])));for(const a of e)a<0?(h[~a*l+r]||(h[~a*l+r]={source:null,target:null})).target={index:r,startAngle:t,endAngle:t+=o[~a*l+r]*p,value:o[~a*l+r]}:(h[r*l+a]||(h[r*l+a]={source:null,target:null})).source={index:r,startAngle:t,endAngle:t+=o[r*l+a]*p,value:o[r*l+a]};d[r]={index:r,startAngle:a,endAngle:t,value:s[r]}}else{const e=Ho(0,l).filter((e=>o[r*l+e]||o[e*l+r]));i&&e.sort(((e,t)=>i(o[r*l+e],o[r*l+t])));for(const a of e){let e;if(r<a?(e=h[r*l+a]||(h[r*l+a]={source:null,target:null}),e.source={index:r,startAngle:t,endAngle:t+=o[r*l+a]*p,value:o[r*l+a]}):(e=h[a*l+r]||(h[a*l+r]={source:null,target:null}),e.target={index:r,startAngle:t,endAngle:t+=o[r*l+a]*p,value:o[r*l+a]},r===a&&(e.source=e.target)),e.source&&e.target&&e.source.value<e.target.value){const t=e.source;e.source=e.target,e.target=t}}d[r]={index:r,startAngle:a,endAngle:t,value:s[r]}}t+=c}}return(h=Object.values(h)).groups=d,n?h.sort(n):h}return o.padAngle=function(e){return arguments.length?(r=Eo(0,e),o):r},o.sortGroups=function(e){return arguments.length?(a=e,o):a},o.sortSubgroups=function(e){return arguments.length?(i=e,o):i},o.sortChords=function(e){return arguments.length?(null==e?n=null:(t=e,n=function(e,r){return t(e.source.value+e.target.value,r.source.value+r.target.value)})._=e,o):n&&n._;var t},o}const Po=Math.PI,No=2*Po,Go=1e-6,Io=No-Go;function Wo(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}let Fo=class{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==e?Wo:function(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Wo;const r=10**t;return function(e){this._+=e[0];for(let t=1,a=e.length;t<a;++t)this._+=Math.round(arguments[t]*r)/r+e[t]}}(e)}moveTo(e,t){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,t){this._append`L${this._x1=+e},${this._y1=+t}`}quadraticCurveTo(e,t,r,a){this._append`Q${+e},${+t},${this._x1=+r},${this._y1=+a}`}bezierCurveTo(e,t,r,a,i,n){this._append`C${+e},${+t},${+r},${+a},${this._x1=+i},${this._y1=+n}`}arcTo(e,t,r,a,i){if(e=+e,t=+t,r=+r,a=+a,(i=+i)<0)throw new Error(`negative radius: ${i}`);let n=this._x1,o=this._y1,c=r-e,l=a-t,s=n-e,u=o-t,h=s*s+u*u;if(null===this._x1)this._append`M${this._x1=e},${this._y1=t}`;else if(h>Go)if(Math.abs(u*c-l*s)>Go&&i){let d=r-n,p=a-o,y=c*c+l*l,f=d*d+p*p,m=Math.sqrt(y),g=Math.sqrt(h),b=i*Math.tan((Po-Math.acos((y+h-f)/(2*m*g)))/2),v=b/g,x=b/m;Math.abs(v-1)>Go&&this._append`L${e+v*s},${t+v*u}`,this._append`A${i},${i},0,0,${+(u*d>s*p)},${this._x1=e+x*c},${this._y1=t+x*l}`}else this._append`L${this._x1=e},${this._y1=t}`}arc(e,t,r,a,i,n){if(e=+e,t=+t,n=!!n,(r=+r)<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(a),c=r*Math.sin(a),l=e+o,s=t+c,u=1^n,h=n?a-i:i-a;null===this._x1?this._append`M${l},${s}`:(Math.abs(this._x1-l)>Go||Math.abs(this._y1-s)>Go)&&this._append`L${l},${s}`,r&&(h<0&&(h=h%No+No),h>Io?this._append`A${r},${r},0,1,${u},${e-o},${t-c}A${r},${r},0,1,${u},${this._x1=l},${this._y1=s}`:h>Go&&this._append`A${r},${r},0,${+(h>=Po)},${u},${this._x1=e+r*Math.cos(i)},${this._y1=t+r*Math.sin(i)}`)}rect(e,t,r,a){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${r=+r}v${+a}h${-r}Z`}toString(){return this._}};function Oo(){return new Fo}Oo.prototype=Fo.prototype;var zo=Array.prototype.slice;function Ko(e){return function(){return e}}function Jo(e){return e.source}function Vo(e){return e.target}function jo(e){return e.radius}function Yo(e){return e.startAngle}function $o(e){return e.endAngle}function Uo(){return 0}function qo(){return 10}function Zo(e){var t=Jo,r=Vo,a=jo,i=jo,n=Yo,o=$o,c=Uo,l=null;function s(){var s,u=t.apply(this,arguments),h=r.apply(this,arguments),d=c.apply(this,arguments)/2,p=zo.call(arguments),y=+a.apply(this,(p[0]=u,p)),f=n.apply(this,p)-Bo,m=o.apply(this,p)-Bo,g=+i.apply(this,(p[0]=h,p)),b=n.apply(this,p)-Bo,v=o.apply(this,p)-Bo;if(l||(l=s=Oo()),d>Ro&&(So(m-f)>2*d+Ro?m>f?(f+=d,m-=d):(f-=d,m+=d):f=m=(f+m)/2,So(v-b)>2*d+Ro?v>b?(b+=d,v-=d):(b-=d,v+=d):b=v=(b+v)/2),l.moveTo(y*Ao(f),y*Mo(f)),l.arc(0,0,y,f,m),f!==b||m!==v)if(e){var x=g-+e.apply(this,arguments),k=(b+v)/2;l.quadraticCurveTo(0,0,x*Ao(b),x*Mo(b)),l.lineTo(g*Ao(k),g*Mo(k)),l.lineTo(x*Ao(v),x*Mo(v))}else l.quadraticCurveTo(0,0,g*Ao(b),g*Mo(b)),l.arc(0,0,g,b,v);if(l.quadraticCurveTo(0,0,y*Ao(f),y*Mo(f)),l.closePath(),s)return l=null,s+""||null}return e&&(s.headRadius=function(t){return arguments.length?(e="function"==typeof t?t:Ko(+t),s):e}),s.radius=function(e){return arguments.length?(a=i="function"==typeof e?e:Ko(+e),s):a},s.sourceRadius=function(e){return arguments.length?(a="function"==typeof e?e:Ko(+e),s):a},s.targetRadius=function(e){return arguments.length?(i="function"==typeof e?e:Ko(+e),s):i},s.startAngle=function(e){return arguments.length?(n="function"==typeof e?e:Ko(+e),s):n},s.endAngle=function(e){return arguments.length?(o="function"==typeof e?e:Ko(+e),s):o},s.padAngle=function(e){return arguments.length?(c="function"==typeof e?e:Ko(+e),s):c},s.source=function(e){return arguments.length?(t=e,s):t},s.target=function(e){return arguments.length?(r=e,s):r},s.context=function(e){return arguments.length?(l=null==e?null:e,s):l},s}var Qo=Array.prototype.slice;function Xo(e,t){return e-t}var ec=e=>()=>e;function tc(e,t){for(var r,a=-1,i=t.length;++a<i;)if(r=rc(e,t[a]))return r;return 0}function rc(e,t){for(var r=t[0],a=t[1],i=-1,n=0,o=e.length,c=o-1;n<o;c=n++){var l=e[n],s=l[0],u=l[1],h=e[c],d=h[0],p=h[1];if(ac(l,h,t))return 0;u>a!=p>a&&r<(d-s)*(a-u)/(p-u)+s&&(i=-i)}return i}function ac(e,t,r){var a;return function(e,t,r){return(t[0]-e[0])*(r[1]-e[1])==(r[0]-e[0])*(t[1]-e[1])}(e,t,r)&&function(e,t,r){return e<=t&&t<=r||r<=t&&t<=e}(e[a=+(e[0]===t[0])],r[a],t[a])}function ic(){}var nc=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function oc(){var e=1,t=1,r=ye,a=c;function i(e){var t=r(e);if(Array.isArray(t))t=t.slice().sort(Xo);else{const r=I(e,cc);for(t=ue(...pe(r[0],r[1],t),t);t[t.length-1]>=r[1];)t.pop();for(;t[1]<r[0];)t.shift()}return t.map((t=>n(e,t)))}function n(r,i){const n=null==i?NaN:+i;if(isNaN(n))throw new Error(`invalid value: ${i}`);var c=[],l=[];return function(r,a,i){var n,c,l,s,u,h,d=new Array,p=new Array;for(n=c=-1,s=lc(r[0],a),nc[s<<1].forEach(y);++n<e-1;)l=s,s=lc(r[n+1],a),nc[l|s<<1].forEach(y);for(nc[0|s].forEach(y);++c<t-1;){for(n=-1,s=lc(r[c*e+e],a),u=lc(r[c*e],a),nc[s<<1|u<<2].forEach(y);++n<e-1;)l=s,s=lc(r[c*e+e+n+1],a),h=u,u=lc(r[c*e+n+1],a),nc[l|s<<1|u<<2|h<<3].forEach(y);nc[s|u<<3].forEach(y)}for(n=-1,u=r[c*e]>=a,nc[u<<2].forEach(y);++n<e-1;)h=u,u=lc(r[c*e+n+1],a),nc[u<<2|h<<3].forEach(y);function y(e){var t,r,a=[e[0][0]+n,e[0][1]+c],l=[e[1][0]+n,e[1][1]+c],s=o(a),u=o(l);(t=p[s])?(r=d[u])?(delete p[t.end],delete d[r.start],t===r?(t.ring.push(l),i(t.ring)):d[t.start]=p[r.end]={start:t.start,end:r.end,ring:t.ring.concat(r.ring)}):(delete p[t.end],t.ring.push(l),p[t.end=u]=t):(t=d[u])?(r=p[s])?(delete d[t.start],delete p[r.end],t===r?(t.ring.push(l),i(t.ring)):d[r.start]=p[t.end]={start:r.start,end:t.end,ring:r.ring.concat(t.ring)}):(delete d[t.start],t.ring.unshift(a),d[t.start=s]=t):d[s]=p[u]={start:s,end:u,ring:[a,l]}}nc[u<<3].forEach(y)}(r,n,(function(e){a(e,r,n),function(e){for(var t=0,r=e.length,a=e[r-1][1]*e[0][0]-e[r-1][0]*e[0][1];++t<r;)a+=e[t-1][1]*e[t][0]-e[t-1][0]*e[t][1];return a}(e)>0?c.push([e]):l.push(e)})),l.forEach((function(e){for(var t,r=0,a=c.length;r<a;++r)if(-1!==tc((t=c[r])[0],e))return void t.push(e)})),{type:"MultiPolygon",value:i,coordinates:c}}function o(t){return 2*t[0]+t[1]*(e+1)*4}function c(r,a,i){r.forEach((function(r){var n=r[0],o=r[1],c=0|n,l=0|o,s=sc(a[l*e+c]);n>0&&n<e&&c===n&&(r[0]=uc(n,sc(a[l*e+c-1]),s,i)),o>0&&o<t&&l===o&&(r[1]=uc(o,sc(a[(l-1)*e+c]),s,i))}))}return i.contour=n,i.size=function(r){if(!arguments.length)return[e,t];var a=Math.floor(r[0]),n=Math.floor(r[1]);if(!(a>=0&&n>=0))throw new Error("invalid size");return e=a,t=n,i},i.thresholds=function(e){return arguments.length?(r="function"==typeof e?e:Array.isArray(e)?ec(Qo.call(e)):ec(e),i):r},i.smooth=function(e){return arguments.length?(a=e?c:ic,i):a===c},i}function cc(e){return isFinite(e)?e:NaN}function lc(e,t){return null!=e&&+e>=t}function sc(e){return null==e||isNaN(e=+e)?-1/0:e}function uc(e,t,r,a){const i=a-t,n=r-t,o=isFinite(i)||isFinite(n)?i/n:Math.sign(i)/Math.sign(n);return isNaN(o)?e:e+o-.5}function hc(e){return e[0]}function dc(e){return e[1]}function pc(){return 1}const yc=134217729;function fc(e,t,r,a,i){let n,o,c,l,s=t[0],u=a[0],h=0,d=0;u>s==u>-s?(n=s,s=t[++h]):(n=u,u=a[++d]);let p=0;if(h<e&&d<r)for(u>s==u>-s?(o=s+n,c=n-(o-s),s=t[++h]):(o=u+n,c=n-(o-u),u=a[++d]),n=o,0!==c&&(i[p++]=c);h<e&&d<r;)u>s==u>-s?(o=n+s,l=o-n,c=n-(o-l)+(s-l),s=t[++h]):(o=n+u,l=o-n,c=n-(o-l)+(u-l),u=a[++d]),n=o,0!==c&&(i[p++]=c);for(;h<e;)o=n+s,l=o-n,c=n-(o-l)+(s-l),s=t[++h],n=o,0!==c&&(i[p++]=c);for(;d<r;)o=n+u,l=o-n,c=n-(o-l)+(u-l),u=a[++d],n=o,0!==c&&(i[p++]=c);return 0===n&&0!==p||(i[p++]=n),p}function mc(e){return new Float64Array(e)}const gc=mc(4),bc=mc(8),vc=mc(12),xc=mc(16),kc=mc(4);function wc(e,t,r,a,i,n){const o=(t-n)*(r-i),c=(e-i)*(a-n),l=o-c,s=Math.abs(o+c);return Math.abs(l)>=33306690738754716e-32*s?l:-function(e,t,r,a,i,n,o){let c,l,s,u,h,d,p,y,f,m,g,b,v,x,k,w,C,_;const S=e-i,A=r-i,M=t-n,T=a-n;x=S*T,d=yc*S,p=d-(d-S),y=S-p,d=yc*T,f=d-(d-T),m=T-f,k=y*m-(x-p*f-y*f-p*m),w=M*A,d=yc*M,p=d-(d-M),y=M-p,d=yc*A,f=d-(d-A),m=A-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,gc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,gc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,gc[2]=b-(_-h)+(g-h),gc[3]=_;let B=function(e,t){let r=t[0];for(let a=1;a<4;a++)r+=t[a];return r}(0,gc),L=22204460492503146e-32*o;if(B>=L||-B>=L)return B;if(h=e-S,c=e-(S+h)+(h-i),h=r-A,s=r-(A+h)+(h-i),h=t-M,l=t-(M+h)+(h-n),h=a-T,u=a-(T+h)+(h-n),0===c&&0===l&&0===s&&0===u)return B;if(L=11093356479670487e-47*o+33306690738754706e-32*Math.abs(B),B+=S*u+T*c-(M*s+A*l),B>=L||-B>=L)return B;x=c*T,d=yc*c,p=d-(d-c),y=c-p,d=yc*T,f=d-(d-T),m=T-f,k=y*m-(x-p*f-y*f-p*m),w=l*A,d=yc*l,p=d-(d-l),y=l-p,d=yc*A,f=d-(d-A),m=A-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,kc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,kc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,kc[2]=b-(_-h)+(g-h),kc[3]=_;const E=fc(4,gc,4,kc,bc);x=S*u,d=yc*S,p=d-(d-S),y=S-p,d=yc*u,f=d-(d-u),m=u-f,k=y*m-(x-p*f-y*f-p*m),w=M*s,d=yc*M,p=d-(d-M),y=M-p,d=yc*s,f=d-(d-s),m=s-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,kc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,kc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,kc[2]=b-(_-h)+(g-h),kc[3]=_;const R=fc(E,bc,4,kc,vc);x=c*u,d=yc*c,p=d-(d-c),y=c-p,d=yc*u,f=d-(d-u),m=u-f,k=y*m-(x-p*f-y*f-p*m),w=l*s,d=yc*l,p=d-(d-l),y=l-p,d=yc*s,f=d-(d-s),m=s-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,kc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,kc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,kc[2]=b-(_-h)+(g-h),kc[3]=_;const H=fc(R,vc,4,kc,xc);return xc[H-1]}(e,t,r,a,i,n,s)}const Cc=Math.pow(2,-52),_c=new Uint32Array(512);class Sc{static from(e,t=Ec,r=Rc){const a=e.length,i=new Float64Array(2*a);for(let n=0;n<a;n++){const a=e[n];i[2*n]=t(a),i[2*n+1]=r(a)}return new Sc(i)}constructor(e){const t=e.length>>1;if(t>0&&"number"!=typeof e[0])throw new Error("Expected coords to contain numbers.");this.coords=e;const r=Math.max(2*t-5,0);this._triangles=new Uint32Array(3*r),this._halfedges=new Int32Array(3*r),this._hashSize=Math.ceil(Math.sqrt(t)),this._hullPrev=new Uint32Array(t),this._hullNext=new Uint32Array(t),this._hullTri=new Uint32Array(t),this._hullHash=new Int32Array(this._hashSize),this._ids=new Uint32Array(t),this._dists=new Float64Array(t),this.update()}update(){const{coords:e,_hullPrev:t,_hullNext:r,_hullTri:a,_hullHash:i}=this,n=e.length>>1;let o=1/0,c=1/0,l=-1/0,s=-1/0;for(let _=0;_<n;_++){const t=e[2*_],r=e[2*_+1];t<o&&(o=t),r<c&&(c=r),t>l&&(l=t),r>s&&(s=r),this._ids[_]=_}const u=(o+l)/2,h=(c+s)/2;let d,p,y;for(let _=0,S=1/0;_<n;_++){const t=Ac(u,h,e[2*_],e[2*_+1]);t<S&&(d=_,S=t)}const f=e[2*d],m=e[2*d+1];for(let _=0,S=1/0;_<n;_++){if(_===d)continue;const t=Ac(f,m,e[2*_],e[2*_+1]);t<S&&t>0&&(p=_,S=t)}let g=e[2*p],b=e[2*p+1],v=1/0;for(let _=0;_<n;_++){if(_===d||_===p)continue;const t=Tc(f,m,g,b,e[2*_],e[2*_+1]);t<v&&(y=_,v=t)}let x=e[2*y],k=e[2*y+1];if(v===1/0){for(let a=0;a<n;a++)this._dists[a]=e[2*a]-e[0]||e[2*a+1]-e[1];Bc(this._ids,this._dists,0,n-1);const t=new Uint32Array(n);let r=0;for(let e=0,a=-1/0;e<n;e++){const i=this._ids[e],n=this._dists[i];n>a&&(t[r++]=i,a=n)}return this.hull=t.subarray(0,r),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(wc(f,m,g,b,x,k)<0){const e=p,t=g,r=b;p=y,g=x,b=k,y=e,x=t,k=r}const w=function(e,t,r,a,i,n){const o=r-e,c=a-t,l=i-e,s=n-t,u=o*o+c*c,h=l*l+s*s,d=.5/(o*s-c*l);return{x:e+(s*u-c*h)*d,y:t+(o*h-l*u)*d}}(f,m,g,b,x,k);this._cx=w.x,this._cy=w.y;for(let _=0;_<n;_++)this._dists[_]=Ac(e[2*_],e[2*_+1],w.x,w.y);Bc(this._ids,this._dists,0,n-1),this._hullStart=d;let C=3;r[d]=t[y]=p,r[p]=t[d]=y,r[y]=t[p]=d,a[d]=0,a[p]=1,a[y]=2,i.fill(-1),i[this._hashKey(f,m)]=d,i[this._hashKey(g,b)]=p,i[this._hashKey(x,k)]=y,this.trianglesLen=0,this._addTriangle(d,p,y,-1,-1,-1);for(let _,S,A=0;A<this._ids.length;A++){const n=this._ids[A],o=e[2*n],c=e[2*n+1];if(A>0&&Math.abs(o-_)<=Cc&&Math.abs(c-S)<=Cc)continue;if(_=o,S=c,n===d||n===p||n===y)continue;let l=0;for(let e=0,t=this._hashKey(o,c);e<this._hashSize&&(l=i[(t+e)%this._hashSize],-1===l||l===r[l]);e++);l=t[l];let s,u=l;for(;s=r[u],wc(o,c,e[2*u],e[2*u+1],e[2*s],e[2*s+1])>=0;)if(u=s,u===l){u=-1;break}if(-1===u)continue;let h=this._addTriangle(u,n,r[u],-1,-1,a[u]);a[n]=this._legalize(h+2),a[u]=h,C++;let f=r[u];for(;s=r[f],wc(o,c,e[2*f],e[2*f+1],e[2*s],e[2*s+1])<0;)h=this._addTriangle(f,n,s,a[n],-1,a[f]),a[n]=this._legalize(h+2),r[f]=f,C--,f=s;if(u===l)for(;s=t[u],wc(o,c,e[2*s],e[2*s+1],e[2*u],e[2*u+1])<0;)h=this._addTriangle(s,n,u,-1,a[u],a[s]),this._legalize(h+2),a[s]=h,r[u]=u,C--,u=s;this._hullStart=t[n]=u,r[u]=t[f]=n,r[n]=f,i[this._hashKey(o,c)]=n,i[this._hashKey(e[2*u],e[2*u+1])]=u}this.hull=new Uint32Array(C);for(let _=0,S=this._hullStart;_<C;_++)this.hull[_]=S,S=r[S];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(e,t){return Math.floor(function(e,t){const r=e/(Math.abs(e)+Math.abs(t));return(t>0?3-r:1+r)/4}(e-this._cx,t-this._cy)*this._hashSize)%this._hashSize}_legalize(e){const{_triangles:t,_halfedges:r,coords:a}=this;let i=0,n=0;for(;;){const o=r[e],c=e-e%3;if(n=c+(e+2)%3,-1===o){if(0===i)break;e=_c[--i];continue}const l=o-o%3,s=c+(e+1)%3,u=l+(o+2)%3,h=t[n],d=t[e],p=t[s],y=t[u];if(Mc(a[2*h],a[2*h+1],a[2*d],a[2*d+1],a[2*p],a[2*p+1],a[2*y],a[2*y+1])){t[e]=y,t[o]=h;const a=r[u];if(-1===a){let t=this._hullStart;do{if(this._hullTri[t]===u){this._hullTri[t]=e;break}t=this._hullPrev[t]}while(t!==this._hullStart)}this._link(e,a),this._link(o,r[n]),this._link(n,u);const c=l+(o+1)%3;i<_c.length&&(_c[i++]=c)}else{if(0===i)break;e=_c[--i]}}return n}_link(e,t){this._halfedges[e]=t,-1!==t&&(this._halfedges[t]=e)}_addTriangle(e,t,r,a,i,n){const o=this.trianglesLen;return this._triangles[o]=e,this._triangles[o+1]=t,this._triangles[o+2]=r,this._link(o,a),this._link(o+1,i),this._link(o+2,n),this.trianglesLen+=3,o}}function Ac(e,t,r,a){const i=e-r,n=t-a;return i*i+n*n}function Mc(e,t,r,a,i,n,o,c){const l=e-o,s=t-c,u=r-o,h=a-c,d=i-o,p=n-c,y=u*u+h*h,f=d*d+p*p;return l*(h*f-y*p)-s*(u*f-y*d)+(l*l+s*s)*(u*p-h*d)<0}function Tc(e,t,r,a,i,n){const o=r-e,c=a-t,l=i-e,s=n-t,u=o*o+c*c,h=l*l+s*s,d=.5/(o*s-c*l),p=(s*u-c*h)*d,y=(o*h-l*u)*d;return p*p+y*y}function Bc(e,t,r,a){if(a-r<=20)for(let i=r+1;i<=a;i++){const a=e[i],n=t[a];let o=i-1;for(;o>=r&&t[e[o]]>n;)e[o+1]=e[o--];e[o+1]=a}else{let i=r+1,n=a;Lc(e,r+a>>1,i),t[e[r]]>t[e[a]]&&Lc(e,r,a),t[e[i]]>t[e[a]]&&Lc(e,i,a),t[e[r]]>t[e[i]]&&Lc(e,r,i);const o=e[i],c=t[o];for(;;){do{i++}while(t[e[i]]<c);do{n--}while(t[e[n]]>c);if(n<i)break;Lc(e,i,n)}e[r+1]=e[n],e[n]=o,a-i+1>=n-r?(Bc(e,t,i,a),Bc(e,t,r,n-1)):(Bc(e,t,r,n-1),Bc(e,t,i,a))}}function Lc(e,t,r){const a=e[t];e[t]=e[r],e[r]=a}function Ec(e){return e[0]}function Rc(e){return e[1]}const Hc=1e-6;class Dc{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(e,t){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(e,t){this._+=`L${this._x1=+e},${this._y1=+t}`}arc(e,t,r){const a=(e=+e)+(r=+r),i=t=+t;if(r<0)throw new Error("negative radius");null===this._x1?this._+=`M${a},${i}`:(Math.abs(this._x1-a)>Hc||Math.abs(this._y1-i)>Hc)&&(this._+="L"+a+","+i),r&&(this._+=`A${r},${r},0,1,1,${e-r},${t}A${r},${r},0,1,1,${this._x1=a},${this._y1=i}`)}rect(e,t,r,a){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${+r}v${+a}h${-r}Z`}value(){return this._||null}}class Pc{constructor(){this._=[]}moveTo(e,t){this._.push([e,t])}closePath(){this._.push(this._[0].slice())}lineTo(e,t){this._.push([e,t])}value(){return this._.length?this._:null}}class Nc{constructor(e,[t,r,a,i]=[0,0,960,500]){if(!((a=+a)>=(t=+t)&&(i=+i)>=(r=+r)))throw new Error("invalid bounds");this.delaunay=e,this._circumcenters=new Float64Array(2*e.points.length),this.vectors=new Float64Array(2*e.points.length),this.xmax=a,this.xmin=t,this.ymax=i,this.ymin=r,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:e,hull:t,triangles:r},vectors:a}=this;let i,n;const o=this.circumcenters=this._circumcenters.subarray(0,r.length/3*2);for(let y,f,m=0,g=0,b=r.length;m<b;m+=3,g+=2){const a=2*r[m],c=2*r[m+1],l=2*r[m+2],s=e[a],u=e[a+1],h=e[c],d=e[c+1],p=e[l],b=e[l+1],v=h-s,x=d-u,k=p-s,w=b-u,C=2*(v*w-x*k);if(Math.abs(C)<1e-9){if(void 0===i){i=n=0;for(const r of t)i+=e[2*r],n+=e[2*r+1];i/=t.length,n/=t.length}const r=1e9*Math.sign((i-s)*w-(n-u)*k);y=(s+p)/2-r*w,f=(u+b)/2+r*k}else{const e=1/C,t=v*v+x*x,r=k*k+w*w;y=s+(w*t-x*r)*e,f=u+(v*r-k*t)*e}o[g]=y,o[g+1]=f}let c,l,s,u=t[t.length-1],h=4*u,d=e[2*u],p=e[2*u+1];a.fill(0);for(let y=0;y<t.length;++y)u=t[y],c=h,l=d,s=p,h=4*u,d=e[2*u],p=e[2*u+1],a[c+2]=a[h]=s-p,a[c+3]=a[h+1]=d-l}render(e){const t=null==e?e=new Dc:void 0,{delaunay:{halfedges:r,inedges:a,hull:i},circumcenters:n,vectors:o}=this;if(i.length<=1)return null;for(let s=0,u=r.length;s<u;++s){const t=r[s];if(t<s)continue;const a=2*Math.floor(s/3),i=2*Math.floor(t/3),o=n[a],c=n[a+1],l=n[i],u=n[i+1];this._renderSegment(o,c,l,u,e)}let c,l=i[i.length-1];for(let s=0;s<i.length;++s){c=l,l=i[s];const t=2*Math.floor(a[l]/3),r=n[t],u=n[t+1],h=4*c,d=this._project(r,u,o[h+2],o[h+3]);d&&this._renderSegment(r,u,d[0],d[1],e)}return t&&t.value()}renderBounds(e){const t=null==e?e=new Dc:void 0;return e.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),t&&t.value()}renderCell(e,t){const r=null==t?t=new Dc:void 0,a=this._clip(e);if(null===a||!a.length)return;t.moveTo(a[0],a[1]);let i=a.length;for(;a[0]===a[i-2]&&a[1]===a[i-1]&&i>1;)i-=2;for(let n=2;n<i;n+=2)a[n]===a[n-2]&&a[n+1]===a[n-1]||t.lineTo(a[n],a[n+1]);return t.closePath(),r&&r.value()}*cellPolygons(){const{delaunay:{points:e}}=this;for(let t=0,r=e.length/2;t<r;++t){const e=this.cellPolygon(t);e&&(e.index=t,yield e)}}cellPolygon(e){const t=new Pc;return this.renderCell(e,t),t.value()}_renderSegment(e,t,r,a,i){let n;const o=this._regioncode(e,t),c=this._regioncode(r,a);0===o&&0===c?(i.moveTo(e,t),i.lineTo(r,a)):(n=this._clipSegment(e,t,r,a,o,c))&&(i.moveTo(n[0],n[1]),i.lineTo(n[2],n[3]))}contains(e,t,r){return(t=+t)==t&&(r=+r)==r&&this.delaunay._step(e,t,r)===e}*neighbors(e){const t=this._clip(e);if(t)for(const r of this.delaunay.neighbors(e)){const e=this._clip(r);if(e)e:for(let a=0,i=t.length;a<i;a+=2)for(let n=0,o=e.length;n<o;n+=2)if(t[a]===e[n]&&t[a+1]===e[n+1]&&t[(a+2)%i]===e[(n+o-2)%o]&&t[(a+3)%i]===e[(n+o-1)%o]){yield r;break e}}}_cell(e){const{circumcenters:t,delaunay:{inedges:r,halfedges:a,triangles:i}}=this,n=r[e];if(-1===n)return null;const o=[];let c=n;do{const r=Math.floor(c/3);if(o.push(t[2*r],t[2*r+1]),c=c%3==2?c-2:c+1,i[c]!==e)break;c=a[c]}while(c!==n&&-1!==c);return o}_clip(e){if(0===e&&1===this.delaunay.hull.length)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const t=this._cell(e);if(null===t)return null;const{vectors:r}=this,a=4*e;return this._simplify(r[a]||r[a+1]?this._clipInfinite(e,t,r[a],r[a+1],r[a+2],r[a+3]):this._clipFinite(e,t))}_clipFinite(e,t){const r=t.length;let a,i,n,o,c=null,l=t[r-2],s=t[r-1],u=this._regioncode(l,s),h=0;for(let d=0;d<r;d+=2)if(a=l,i=s,l=t[d],s=t[d+1],n=u,u=this._regioncode(l,s),0===n&&0===u)o=h,h=0,c?c.push(l,s):c=[l,s];else{let t,r,d,p,y;if(0===n){if(null===(t=this._clipSegment(a,i,l,s,n,u)))continue;[r,d,p,y]=t}else{if(null===(t=this._clipSegment(l,s,a,i,u,n)))continue;[p,y,r,d]=t,o=h,h=this._edgecode(r,d),o&&h&&this._edge(e,o,h,c,c.length),c?c.push(r,d):c=[r,d]}o=h,h=this._edgecode(p,y),o&&h&&this._edge(e,o,h,c,c.length),c?c.push(p,y):c=[p,y]}if(c)o=h,h=this._edgecode(c[0],c[1]),o&&h&&this._edge(e,o,h,c,c.length);else if(this.contains(e,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return c}_clipSegment(e,t,r,a,i,n){const o=i<n;for(o&&([e,t,r,a,i,n]=[r,a,e,t,n,i]);;){if(0===i&&0===n)return o?[r,a,e,t]:[e,t,r,a];if(i&n)return null;let c,l,s=i||n;8&s?(c=e+(r-e)*(this.ymax-t)/(a-t),l=this.ymax):4&s?(c=e+(r-e)*(this.ymin-t)/(a-t),l=this.ymin):2&s?(l=t+(a-t)*(this.xmax-e)/(r-e),c=this.xmax):(l=t+(a-t)*(this.xmin-e)/(r-e),c=this.xmin),i?(e=c,t=l,i=this._regioncode(e,t)):(r=c,a=l,n=this._regioncode(r,a))}}_clipInfinite(e,t,r,a,i,n){let o,c=Array.from(t);if((o=this._project(c[0],c[1],r,a))&&c.unshift(o[0],o[1]),(o=this._project(c[c.length-2],c[c.length-1],i,n))&&c.push(o[0],o[1]),c=this._clipFinite(e,c))for(let l,s=0,u=c.length,h=this._edgecode(c[u-2],c[u-1]);s<u;s+=2)l=h,h=this._edgecode(c[s],c[s+1]),l&&h&&(s=this._edge(e,l,h,c,s),u=c.length);else this.contains(e,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(c=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return c}_edge(e,t,r,a,i){for(;t!==r;){let r,n;switch(t){case 5:t=4;continue;case 4:t=6,r=this.xmax,n=this.ymin;break;case 6:t=2;continue;case 2:t=10,r=this.xmax,n=this.ymax;break;case 10:t=8;continue;case 8:t=9,r=this.xmin,n=this.ymax;break;case 9:t=1;continue;case 1:t=5,r=this.xmin,n=this.ymin}a[i]===r&&a[i+1]===n||!this.contains(e,r,n)||(a.splice(i,0,r,n),i+=2)}return i}_project(e,t,r,a){let i,n,o,c=1/0;if(a<0){if(t<=this.ymin)return null;(i=(this.ymin-t)/a)<c&&(o=this.ymin,n=e+(c=i)*r)}else if(a>0){if(t>=this.ymax)return null;(i=(this.ymax-t)/a)<c&&(o=this.ymax,n=e+(c=i)*r)}if(r>0){if(e>=this.xmax)return null;(i=(this.xmax-e)/r)<c&&(n=this.xmax,o=t+(c=i)*a)}else if(r<0){if(e<=this.xmin)return null;(i=(this.xmin-e)/r)<c&&(n=this.xmin,o=t+(c=i)*a)}return[n,o]}_edgecode(e,t){return(e===this.xmin?1:e===this.xmax?2:0)|(t===this.ymin?4:t===this.ymax?8:0)}_regioncode(e,t){return(e<this.xmin?1:e>this.xmax?2:0)|(t<this.ymin?4:t>this.ymax?8:0)}_simplify(e){if(e&&e.length>4){for(let t=0;t<e.length;t+=2){const r=(t+2)%e.length,a=(t+4)%e.length;(e[t]===e[r]&&e[r]===e[a]||e[t+1]===e[r+1]&&e[r+1]===e[a+1])&&(e.splice(r,2),t-=2)}e.length||(e=null)}return e}}const Gc=2*Math.PI,Ic=Math.pow;function Wc(e){return e[0]}function Fc(e){return e[1]}function Oc(e,t,r){return[e+Math.sin(e+t)*r,t+Math.cos(e-t)*r]}class zc{static from(e,t=Wc,r=Fc,a){return new zc("length"in e?function(e,t,r,a){const i=e.length,n=new Float64Array(2*i);for(let o=0;o<i;++o){const i=e[o];n[2*o]=t.call(a,i,o,e),n[2*o+1]=r.call(a,i,o,e)}return n}(e,t,r,a):Float64Array.from(function*(e,t,r,a){let i=0;for(const n of e)yield t.call(a,n,i,e),yield r.call(a,n,i,e),++i}(e,t,r,a)))}constructor(e){this._delaunator=new Sc(e),this.inedges=new Int32Array(e.length/2),this._hullIndex=new Int32Array(e.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const e=this._delaunator,t=this.points;if(e.hull&&e.hull.length>2&&function(e){const{triangles:t,coords:r}=e;for(let a=0;a<t.length;a+=3){const e=2*t[a],i=2*t[a+1],n=2*t[a+2];if((r[n]-r[e])*(r[i+1]-r[e+1])-(r[i]-r[e])*(r[n+1]-r[e+1])>1e-10)return!1}return!0}(e)){this.collinear=Int32Array.from({length:t.length/2},((e,t)=>t)).sort(((e,r)=>t[2*e]-t[2*r]||t[2*e+1]-t[2*r+1]));const e=this.collinear[0],r=this.collinear[this.collinear.length-1],a=[t[2*e],t[2*e+1],t[2*r],t[2*r+1]],i=1e-8*Math.hypot(a[3]-a[1],a[2]-a[0]);for(let n=0,o=t.length/2;n<o;++n){const e=Oc(t[2*n],t[2*n+1],i);t[2*n]=e[0],t[2*n+1]=e[1]}this._delaunator=new Sc(t)}else delete this.collinear;const r=this.halfedges=this._delaunator.halfedges,a=this.hull=this._delaunator.hull,i=this.triangles=this._delaunator.triangles,n=this.inedges.fill(-1),o=this._hullIndex.fill(-1);for(let c=0,l=r.length;c<l;++c){const e=i[c%3==2?c-2:c+1];-1!==r[c]&&-1!==n[e]||(n[e]=c)}for(let c=0,l=a.length;c<l;++c)o[a[c]]=c;a.length<=2&&a.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=a[0],n[a[0]]=1,2===a.length&&(n[a[1]]=0,this.triangles[1]=a[1],this.triangles[2]=a[1]))}voronoi(e){return new Nc(this,e)}*neighbors(e){const{inedges:t,hull:r,_hullIndex:a,halfedges:i,triangles:n,collinear:o}=this;if(o){const t=o.indexOf(e);return t>0&&(yield o[t-1]),void(t<o.length-1&&(yield o[t+1]))}const c=t[e];if(-1===c)return;let l=c,s=-1;do{if(yield s=n[l],l=l%3==2?l-2:l+1,n[l]!==e)return;if(l=i[l],-1===l){const t=r[(a[e]+1)%r.length];return void(t!==s&&(yield t))}}while(l!==c)}find(e,t,r=0){if((e=+e)!=e||(t=+t)!=t)return-1;const a=r;let i;for(;(i=this._step(r,e,t))>=0&&i!==r&&i!==a;)r=i;return i}_step(e,t,r){const{inedges:a,hull:i,_hullIndex:n,halfedges:o,triangles:c,points:l}=this;if(-1===a[e]||!l.length)return(e+1)%(l.length>>1);let s=e,u=Ic(t-l[2*e],2)+Ic(r-l[2*e+1],2);const h=a[e];let d=h;do{let a=c[d];const h=Ic(t-l[2*a],2)+Ic(r-l[2*a+1],2);if(h<u&&(u=h,s=a),d=d%3==2?d-2:d+1,c[d]!==e)break;if(d=o[d],-1===d){if(d=i[(n[e]+1)%i.length],d!==a&&Ic(t-l[2*d],2)+Ic(r-l[2*d+1],2)<u)return d;break}}while(d!==h);return s}render(e){const t=null==e?e=new Dc:void 0,{points:r,halfedges:a,triangles:i}=this;for(let n=0,o=a.length;n<o;++n){const t=a[n];if(t<n)continue;const o=2*i[n],c=2*i[t];e.moveTo(r[o],r[o+1]),e.lineTo(r[c],r[c+1])}return this.renderHull(e),t&&t.value()}renderPoints(e,t){void 0!==t||e&&"function"==typeof e.moveTo||(t=e,e=null),t=null==t?2:+t;const r=null==e?e=new Dc:void 0,{points:a}=this;for(let i=0,n=a.length;i<n;i+=2){const r=a[i],n=a[i+1];e.moveTo(r+t,n),e.arc(r,n,t,0,Gc)}return r&&r.value()}renderHull(e){const t=null==e?e=new Dc:void 0,{hull:r,points:a}=this,i=2*r[0],n=r.length;e.moveTo(a[i],a[i+1]);for(let o=1;o<n;++o){const t=2*r[o];e.lineTo(a[t],a[t+1])}return e.closePath(),t&&t.value()}hullPolygon(){const e=new Pc;return this.renderHull(e),e.value()}renderTriangle(e,t){const r=null==t?t=new Dc:void 0,{points:a,triangles:i}=this,n=2*i[e*=3],o=2*i[e+1],c=2*i[e+2];return t.moveTo(a[n],a[n+1]),t.lineTo(a[o],a[o+1]),t.lineTo(a[c],a[c+1]),t.closePath(),r&&r.value()}*trianglePolygons(){const{triangles:e}=this;for(let t=0,r=e.length/3;t<r;++t)yield this.trianglePolygon(t)}trianglePolygon(e){const t=new Pc;return this.renderTriangle(e,t),t.value()}}var Kc={},Jc={};function Vc(e){return new Function("d","return {"+e.map((function(e,t){return JSON.stringify(e)+": d["+t+'] || ""'})).join(",")+"}")}function jc(e){var t=Object.create(null),r=[];return e.forEach((function(e){for(var a in e)a in t||r.push(t[a]=a)})),r}function Yc(e,t){var r=e+"",a=r.length;return a<t?new Array(t-a+1).join(0)+r:r}function $c(e){var t=new RegExp('["'+e+"\n\r]"),r=e.charCodeAt(0);function a(e,t){var a,i=[],n=e.length,o=0,c=0,l=n<=0,s=!1;function u(){if(l)return Jc;if(s)return s=!1,Kc;var t,a,i=o;if(34===e.charCodeAt(i)){for(;o++<n&&34!==e.charCodeAt(o)||34===e.charCodeAt(++o););return(t=o)>=n?l=!0:10===(a=e.charCodeAt(o++))?s=!0:13===a&&(s=!0,10===e.charCodeAt(o)&&++o),e.slice(i+1,t-1).replace(/""/g,'"')}for(;o<n;){if(10===(a=e.charCodeAt(t=o++)))s=!0;else if(13===a)s=!0,10===e.charCodeAt(o)&&++o;else if(a!==r)continue;return e.slice(i,t)}return l=!0,e.slice(i,n)}for(10===e.charCodeAt(n-1)&&--n,13===e.charCodeAt(n-1)&&--n;(a=u())!==Jc;){for(var h=[];a!==Kc&&a!==Jc;)h.push(a),a=u();t&&null==(h=t(h,c++))||i.push(h)}return i}function i(t,r){return t.map((function(t){return r.map((function(e){return o(t[e])})).join(e)}))}function n(t){return t.map(o).join(e)}function o(e){return null==e?"":e instanceof Date?function(e){var t,r=e.getUTCHours(),a=e.getUTCMinutes(),i=e.getUTCSeconds(),n=e.getUTCMilliseconds();return isNaN(e)?"Invalid Date":((t=e.getUTCFullYear())<0?"-"+Yc(-t,6):t>9999?"+"+Yc(t,6):Yc(t,4))+"-"+Yc(e.getUTCMonth()+1,2)+"-"+Yc(e.getUTCDate(),2)+(n?"T"+Yc(r,2)+":"+Yc(a,2)+":"+Yc(i,2)+"."+Yc(n,3)+"Z":i?"T"+Yc(r,2)+":"+Yc(a,2)+":"+Yc(i,2)+"Z":a||r?"T"+Yc(r,2)+":"+Yc(a,2)+"Z":"")}(e):t.test(e+="")?'"'+e.replace(/"/g,'""')+'"':e}return{parse:function(e,t){var r,i,n=a(e,(function(e,a){if(r)return r(e,a-1);i=e,r=t?function(e,t){var r=Vc(e);return function(a,i){return t(r(a),i,e)}}(e,t):Vc(e)}));return n.columns=i||[],n},parseRows:a,format:function(t,r){return null==r&&(r=jc(t)),[r.map(o).join(e)].concat(i(t,r)).join("\n")},formatBody:function(e,t){return null==t&&(t=jc(e)),i(e,t).join("\n")},formatRows:function(e){return e.map(n).join("\n")},formatRow:n,formatValue:o}}var Uc=$c(","),qc=Uc.parse,Zc=Uc.parseRows,Qc=Uc.format,Xc=Uc.formatBody,el=Uc.formatRows,tl=Uc.formatRow,rl=Uc.formatValue,al=$c("\t"),il=al.parse,nl=al.parseRows,ol=al.format,cl=al.formatBody,ll=al.formatRows,sl=al.formatRow,ul=al.formatValue;const hl=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function dl(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.blob()}function pl(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.arrayBuffer()}function yl(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.text()}function fl(e,t){return fetch(e,t).then(yl)}function ml(e){return function(t,r,a){return 2===arguments.length&&"function"==typeof r&&(a=r,r=void 0),fl(t,r).then((function(t){return e(t,a)}))}}var gl=ml(qc),bl=ml(il);function vl(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);if(204!==e.status&&205!==e.status)return e.json()}function xl(e){return(t,r)=>fl(t,r).then((t=>(new DOMParser).parseFromString(t,e)))}var kl=xl("application/xml"),wl=xl("text/html"),Cl=xl("image/svg+xml");function _l(e,t,r,a){if(isNaN(t)||isNaN(r))return e;var i,n,o,c,l,s,u,h,d,p=e._root,y={data:a},f=e._x0,m=e._y0,g=e._x1,b=e._y1;if(!p)return e._root=y,e;for(;p.length;)if((s=t>=(n=(f+g)/2))?f=n:g=n,(u=r>=(o=(m+b)/2))?m=o:b=o,i=p,!(p=p[h=u<<1|s]))return i[h]=y,e;if(c=+e._x.call(null,p.data),l=+e._y.call(null,p.data),t===c&&r===l)return y.next=p,i?i[h]=y:e._root=y,e;do{i=i?i[h]=new Array(4):e._root=new Array(4),(s=t>=(n=(f+g)/2))?f=n:g=n,(u=r>=(o=(m+b)/2))?m=o:b=o}while((h=u<<1|s)==(d=(l>=o)<<1|c>=n));return i[d]=p,i[h]=y,e}function Sl(e,t,r,a,i){this.node=e,this.x0=t,this.y0=r,this.x1=a,this.y1=i}function Al(e){return e[0]}function Ml(e){return e[1]}function Tl(e,t,r){var a=new Bl(null==t?Al:t,null==r?Ml:r,NaN,NaN,NaN,NaN);return null==e?a:a.addAll(e)}function Bl(e,t,r,a,i,n){this._x=e,this._y=t,this._x0=r,this._y0=a,this._x1=i,this._y1=n,this._root=void 0}function Ll(e){for(var t={data:e.data},r=t;e=e.next;)r=r.next={data:e.data};return t}var El=Tl.prototype=Bl.prototype;function Rl(e){return function(){return e}}function Hl(e){return 1e-6*(e()-.5)}function Dl(e){return e.x+e.vx}function Pl(e){return e.y+e.vy}function Nl(e){return e.index}function Gl(e,t){var r=e.get(t);if(!r)throw new Error("node not found: "+t);return r}El.copy=function(){var e,t,r=new Bl(this._x,this._y,this._x0,this._y0,this._x1,this._y1),a=this._root;if(!a)return r;if(!a.length)return r._root=Ll(a),r;for(e=[{source:a,target:r._root=new Array(4)}];a=e.pop();)for(var i=0;i<4;++i)(t=a.source[i])&&(t.length?e.push({source:t,target:a.target[i]=new Array(4)}):a.target[i]=Ll(t));return r},El.add=function(e){const t=+this._x.call(null,e),r=+this._y.call(null,e);return _l(this.cover(t,r),t,r,e)},El.addAll=function(e){var t,r,a,i,n=e.length,o=new Array(n),c=new Array(n),l=1/0,s=1/0,u=-1/0,h=-1/0;for(r=0;r<n;++r)isNaN(a=+this._x.call(null,t=e[r]))||isNaN(i=+this._y.call(null,t))||(o[r]=a,c[r]=i,a<l&&(l=a),a>u&&(u=a),i<s&&(s=i),i>h&&(h=i));if(l>u||s>h)return this;for(this.cover(l,s).cover(u,h),r=0;r<n;++r)_l(this,o[r],c[r],e[r]);return this},El.cover=function(e,t){if(isNaN(e=+e)||isNaN(t=+t))return this;var r=this._x0,a=this._y0,i=this._x1,n=this._y1;if(isNaN(r))i=(r=Math.floor(e))+1,n=(a=Math.floor(t))+1;else{for(var o,c,l=i-r||1,s=this._root;r>e||e>=i||a>t||t>=n;)switch(c=(t<a)<<1|e<r,(o=new Array(4))[c]=s,s=o,l*=2,c){case 0:i=r+l,n=a+l;break;case 1:r=i-l,n=a+l;break;case 2:i=r+l,a=n-l;break;case 3:r=i-l,a=n-l}this._root&&this._root.length&&(this._root=s)}return this._x0=r,this._y0=a,this._x1=i,this._y1=n,this},El.data=function(){var e=[];return this.visit((function(t){if(!t.length)do{e.push(t.data)}while(t=t.next)})),e},El.extent=function(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},El.find=function(e,t,r){var a,i,n,o,c,l,s,u=this._x0,h=this._y0,d=this._x1,p=this._y1,y=[],f=this._root;for(f&&y.push(new Sl(f,u,h,d,p)),null==r?r=1/0:(u=e-r,h=t-r,d=e+r,p=t+r,r*=r);l=y.pop();)if(!(!(f=l.node)||(i=l.x0)>d||(n=l.y0)>p||(o=l.x1)<u||(c=l.y1)<h))if(f.length){var m=(i+o)/2,g=(n+c)/2;y.push(new Sl(f[3],m,g,o,c),new Sl(f[2],i,g,m,c),new Sl(f[1],m,n,o,g),new Sl(f[0],i,n,m,g)),(s=(t>=g)<<1|e>=m)&&(l=y[y.length-1],y[y.length-1]=y[y.length-1-s],y[y.length-1-s]=l)}else{var b=e-+this._x.call(null,f.data),v=t-+this._y.call(null,f.data),x=b*b+v*v;if(x<r){var k=Math.sqrt(r=x);u=e-k,h=t-k,d=e+k,p=t+k,a=f.data}}return a},El.remove=function(e){if(isNaN(n=+this._x.call(null,e))||isNaN(o=+this._y.call(null,e)))return this;var t,r,a,i,n,o,c,l,s,u,h,d,p=this._root,y=this._x0,f=this._y0,m=this._x1,g=this._y1;if(!p)return this;if(p.length)for(;;){if((s=n>=(c=(y+m)/2))?y=c:m=c,(u=o>=(l=(f+g)/2))?f=l:g=l,t=p,!(p=p[h=u<<1|s]))return this;if(!p.length)break;(t[h+1&3]||t[h+2&3]||t[h+3&3])&&(r=t,d=h)}for(;p.data!==e;)if(a=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,a?(i?a.next=i:delete a.next,this):t?(i?t[h]=i:delete t[h],(p=t[0]||t[1]||t[2]||t[3])&&p===(t[3]||t[2]||t[1]||t[0])&&!p.length&&(r?r[d]=p:this._root=p),this):(this._root=i,this)},El.removeAll=function(e){for(var t=0,r=e.length;t<r;++t)this.remove(e[t]);return this},El.root=function(){return this._root},El.size=function(){var e=0;return this.visit((function(t){if(!t.length)do{++e}while(t=t.next)})),e},El.visit=function(e){var t,r,a,i,n,o,c=[],l=this._root;for(l&&c.push(new Sl(l,this._x0,this._y0,this._x1,this._y1));t=c.pop();)if(!e(l=t.node,a=t.x0,i=t.y0,n=t.x1,o=t.y1)&&l.length){var s=(a+n)/2,u=(i+o)/2;(r=l[3])&&c.push(new Sl(r,s,u,n,o)),(r=l[2])&&c.push(new Sl(r,a,u,s,o)),(r=l[1])&&c.push(new Sl(r,s,i,n,u)),(r=l[0])&&c.push(new Sl(r,a,i,s,u))}return this},El.visitAfter=function(e){var t,r=[],a=[];for(this._root&&r.push(new Sl(this._root,this._x0,this._y0,this._x1,this._y1));t=r.pop();){var i=t.node;if(i.length){var n,o=t.x0,c=t.y0,l=t.x1,s=t.y1,u=(o+l)/2,h=(c+s)/2;(n=i[0])&&r.push(new Sl(n,o,c,u,h)),(n=i[1])&&r.push(new Sl(n,u,c,l,h)),(n=i[2])&&r.push(new Sl(n,o,h,u,s)),(n=i[3])&&r.push(new Sl(n,u,h,l,s))}a.push(t)}for(;t=a.pop();)e(t.node,t.x0,t.y0,t.x1,t.y1);return this},El.x=function(e){return arguments.length?(this._x=e,this):this._x},El.y=function(e){return arguments.length?(this._y=e,this):this._y};const Il=4294967296;function Wl(e){return e.x}function Fl(e){return e.y}var Ol=Math.PI*(3-Math.sqrt(5));function zl(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,a=e.slice(0,r);return[a.length>1?a[0]+a.slice(2):a,+e.slice(r+1)]}function Kl(e){return(e=zl(Math.abs(e)))?e[1]:NaN}var Jl,Vl=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function jl(e){if(!(t=Vl.exec(e)))throw new Error("invalid format: "+e);var t;return new Yl({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function Yl(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function $l(e,t){var r=zl(e,t);if(!r)return e+"";var a=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+a:a.length>i+1?a.slice(0,i+1)+"."+a.slice(i+1):a+new Array(i-a.length+2).join("0")}jl.prototype=Yl.prototype,Yl.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ul={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>$l(100*e,t),r:$l,s:function(e,t){var r=zl(e,t);if(!r)return e+"";var a=r[0],i=r[1],n=i-(Jl=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=a.length;return n===o?a:n>o?a+new Array(n-o+1).join("0"):n>0?a.slice(0,n)+"."+a.slice(n):"0."+new Array(1-n).join("0")+zl(e,Math.max(0,t+n-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function ql(e){return e}var Zl,Ql,Xl,es=Array.prototype.map,ts=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function rs(e){var t,r,a=void 0===e.grouping||void 0===e.thousands?ql:(t=es.call(e.grouping,Number),r=e.thousands+"",function(e,a){for(var i=e.length,n=[],o=0,c=t[0],l=0;i>0&&c>0&&(l+c+1>a&&(c=Math.max(1,a-l)),n.push(e.substring(i-=c,i+c)),!((l+=c+1)>a));)c=t[o=(o+1)%t.length];return n.reverse().join(r)}),i=void 0===e.currency?"":e.currency[0]+"",n=void 0===e.currency?"":e.currency[1]+"",o=void 0===e.decimal?".":e.decimal+"",c=void 0===e.numerals?ql:function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(es.call(e.numerals,String)),l=void 0===e.percent?"%":e.percent+"",s=void 0===e.minus?"\u2212":e.minus+"",u=void 0===e.nan?"NaN":e.nan+"";function h(e){var t=(e=jl(e)).fill,r=e.align,h=e.sign,d=e.symbol,p=e.zero,y=e.width,f=e.comma,m=e.precision,g=e.trim,b=e.type;"n"===b?(f=!0,b="g"):Ul[b]||(void 0===m&&(m=12),g=!0,b="g"),(p||"0"===t&&"="===r)&&(p=!0,t="0",r="=");var v="$"===d?i:"#"===d&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x="$"===d?n:/[%p]/.test(b)?l:"",k=Ul[b],w=/[defgprs%]/.test(b);function C(e){var i,n,l,d=v,C=x;if("c"===b)C=k(e)+C,e="";else{var _=(e=+e)<0||1/e<0;if(e=isNaN(e)?u:k(Math.abs(e),m),g&&(e=function(e){e:for(var t,r=e.length,a=1,i=-1;a<r;++a)switch(e[a]){case".":i=t=a;break;case"0":0===i&&(i=a),t=a;break;default:if(!+e[a])break e;i>0&&(i=0)}return i>0?e.slice(0,i)+e.slice(t+1):e}(e)),_&&0==+e&&"+"!==h&&(_=!1),d=(_?"("===h?h:s:"-"===h||"("===h?"":h)+d,C=("s"===b?ts[8+Jl/3]:"")+C+(_&&"("===h?")":""),w)for(i=-1,n=e.length;++i<n;)if(48>(l=e.charCodeAt(i))||l>57){C=(46===l?o+e.slice(i+1):e.slice(i))+C,e=e.slice(0,i);break}}f&&!p&&(e=a(e,1/0));var S=d.length+e.length+C.length,A=S<y?new Array(y-S+1).join(t):"";switch(f&&p&&(e=a(A+e,A.length?y-C.length:1/0),A=""),r){case"<":e=d+e+C+A;break;case"=":e=d+A+e+C;break;case"^":e=A.slice(0,S=A.length>>1)+d+e+C+A.slice(S);break;default:e=A+d+e+C}return c(e)}return m=void 0===m?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),C.toString=function(){return e+""},C}return{format:h,formatPrefix:function(e,t){var r=h(((e=jl(e)).type="f",e)),a=3*Math.max(-8,Math.min(8,Math.floor(Kl(t)/3))),i=Math.pow(10,-a),n=ts[8+a/3];return function(e){return r(i*e)+n}}}}function as(e){return Zl=rs(e),Ql=Zl.format,Xl=Zl.formatPrefix,Zl}function is(e){return Math.max(0,-Kl(Math.abs(e)))}function ns(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Kl(t)/3)))-Kl(Math.abs(e)))}function os(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Kl(t)-Kl(e))+1}as({thousands:",",grouping:[3],currency:["$",""]});var cs=1e-6,ls=1e-12,ss=Math.PI,us=ss/2,hs=ss/4,ds=2*ss,ps=180/ss,ys=ss/180,fs=Math.abs,ms=Math.atan,gs=Math.atan2,bs=Math.cos,vs=Math.ceil,xs=Math.exp,ks=Math.hypot,ws=Math.log,Cs=Math.pow,_s=Math.sin,Ss=Math.sign||function(e){return e>0?1:e<0?-1:0},As=Math.sqrt,Ms=Math.tan;function Ts(e){return e>1?0:e<-1?ss:Math.acos(e)}function Bs(e){return e>1?us:e<-1?-us:Math.asin(e)}function Ls(e){return(e=_s(e/2))*e}function Es(){}function Rs(e,t){e&&Ds.hasOwnProperty(e.type)&&Ds[e.type](e,t)}var Hs={Feature:function(e,t){Rs(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,a=-1,i=r.length;++a<i;)Rs(r[a].geometry,t)}},Ds={Sphere:function(e,t){t.sphere()},Point:function(e,t){e=e.coordinates,t.point(e[0],e[1],e[2])},MultiPoint:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)e=r[a],t.point(e[0],e[1],e[2])},LineString:function(e,t){Ps(e.coordinates,t,0)},MultiLineString:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)Ps(r[a],t,0)},Polygon:function(e,t){Ns(e.coordinates,t)},MultiPolygon:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)Ns(r[a],t)},GeometryCollection:function(e,t){for(var r=e.geometries,a=-1,i=r.length;++a<i;)Rs(r[a],t)}};function Ps(e,t,r){var a,i=-1,n=e.length-r;for(t.lineStart();++i<n;)a=e[i],t.point(a[0],a[1],a[2]);t.lineEnd()}function Ns(e,t){var r=-1,a=e.length;for(t.polygonStart();++r<a;)Ps(e[r],t,1);t.polygonEnd()}function Gs(e,t){e&&Hs.hasOwnProperty(e.type)?Hs[e.type](e,t):Rs(e,t)}var Is,Ws,Fs,Os,zs,Ks,Js,Vs,js,Ys,$s,Us,qs,Zs,Qs,Xs,eu=new W,tu=new W,ru={point:Es,lineStart:Es,lineEnd:Es,polygonStart:function(){eu=new W,ru.lineStart=au,ru.lineEnd=iu},polygonEnd:function(){var e=+eu;tu.add(e<0?ds+e:e),this.lineStart=this.lineEnd=this.point=Es},sphere:function(){tu.add(ds)}};function au(){ru.point=nu}function iu(){ou(Is,Ws)}function nu(e,t){ru.point=ou,Is=e,Ws=t,Fs=e*=ys,Os=bs(t=(t*=ys)/2+hs),zs=_s(t)}function ou(e,t){var r=(e*=ys)-Fs,a=r>=0?1:-1,i=a*r,n=bs(t=(t*=ys)/2+hs),o=_s(t),c=zs*o,l=Os*n+c*bs(i),s=c*a*_s(i);eu.add(gs(s,l)),Fs=e,Os=n,zs=o}function cu(e){return[gs(e[1],e[0]),Bs(e[2])]}function lu(e){var t=e[0],r=e[1],a=bs(r);return[a*bs(t),a*_s(t),_s(r)]}function su(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function uu(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function hu(e,t){e[0]+=t[0],e[1]+=t[1],e[2]+=t[2]}function du(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function pu(e){var t=As(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}var yu,fu,mu,gu,bu,vu,xu,ku,wu,Cu,_u,Su,Au,Mu,Tu,Bu,Lu={point:Eu,lineStart:Hu,lineEnd:Du,polygonStart:function(){Lu.point=Pu,Lu.lineStart=Nu,Lu.lineEnd=Gu,Zs=new W,ru.polygonStart()},polygonEnd:function(){ru.polygonEnd(),Lu.point=Eu,Lu.lineStart=Hu,Lu.lineEnd=Du,eu<0?(Ks=-(Vs=180),Js=-(js=90)):Zs>cs?js=90:Zs<-1e-6&&(Js=-90),Xs[0]=Ks,Xs[1]=Vs},sphere:function(){Ks=-(Vs=180),Js=-(js=90)}};function Eu(e,t){Qs.push(Xs=[Ks=e,Vs=e]),t<Js&&(Js=t),t>js&&(js=t)}function Ru(e,t){var r=lu([e*ys,t*ys]);if(qs){var a=uu(qs,r),i=uu([a[1],-a[0],0],a);pu(i),i=cu(i);var n,o=e-Ys,c=o>0?1:-1,l=i[0]*ps*c,s=fs(o)>180;s^(c*Ys<l&&l<c*e)?(n=i[1]*ps)>js&&(js=n):s^(c*Ys<(l=(l+360)%360-180)&&l<c*e)?(n=-i[1]*ps)<Js&&(Js=n):(t<Js&&(Js=t),t>js&&(js=t)),s?e<Ys?Iu(Ks,e)>Iu(Ks,Vs)&&(Vs=e):Iu(e,Vs)>Iu(Ks,Vs)&&(Ks=e):Vs>=Ks?(e<Ks&&(Ks=e),e>Vs&&(Vs=e)):e>Ys?Iu(Ks,e)>Iu(Ks,Vs)&&(Vs=e):Iu(e,Vs)>Iu(Ks,Vs)&&(Ks=e)}else Qs.push(Xs=[Ks=e,Vs=e]);t<Js&&(Js=t),t>js&&(js=t),qs=r,Ys=e}function Hu(){Lu.point=Ru}function Du(){Xs[0]=Ks,Xs[1]=Vs,Lu.point=Eu,qs=null}function Pu(e,t){if(qs){var r=e-Ys;Zs.add(fs(r)>180?r+(r>0?360:-360):r)}else $s=e,Us=t;ru.point(e,t),Ru(e,t)}function Nu(){ru.lineStart()}function Gu(){Pu($s,Us),ru.lineEnd(),fs(Zs)>cs&&(Ks=-(Vs=180)),Xs[0]=Ks,Xs[1]=Vs,qs=null}function Iu(e,t){return(t-=e)<0?t+360:t}function Wu(e,t){return e[0]-t[0]}function Fu(e,t){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:t<e[0]||e[1]<t}var Ou={sphere:Es,point:zu,lineStart:Ju,lineEnd:Yu,polygonStart:function(){Ou.lineStart=$u,Ou.lineEnd=Uu},polygonEnd:function(){Ou.lineStart=Ju,Ou.lineEnd=Yu}};function zu(e,t){e*=ys;var r=bs(t*=ys);Ku(r*bs(e),r*_s(e),_s(t))}function Ku(e,t,r){++yu,mu+=(e-mu)/yu,gu+=(t-gu)/yu,bu+=(r-bu)/yu}function Ju(){Ou.point=Vu}function Vu(e,t){e*=ys;var r=bs(t*=ys);Mu=r*bs(e),Tu=r*_s(e),Bu=_s(t),Ou.point=ju,Ku(Mu,Tu,Bu)}function ju(e,t){e*=ys;var r=bs(t*=ys),a=r*bs(e),i=r*_s(e),n=_s(t),o=gs(As((o=Tu*n-Bu*i)*o+(o=Bu*a-Mu*n)*o+(o=Mu*i-Tu*a)*o),Mu*a+Tu*i+Bu*n);fu+=o,vu+=o*(Mu+(Mu=a)),xu+=o*(Tu+(Tu=i)),ku+=o*(Bu+(Bu=n)),Ku(Mu,Tu,Bu)}function Yu(){Ou.point=zu}function $u(){Ou.point=qu}function Uu(){Zu(Su,Au),Ou.point=zu}function qu(e,t){Su=e,Au=t,e*=ys,t*=ys,Ou.point=Zu;var r=bs(t);Mu=r*bs(e),Tu=r*_s(e),Bu=_s(t),Ku(Mu,Tu,Bu)}function Zu(e,t){e*=ys;var r=bs(t*=ys),a=r*bs(e),i=r*_s(e),n=_s(t),o=Tu*n-Bu*i,c=Bu*a-Mu*n,l=Mu*i-Tu*a,s=ks(o,c,l),u=Bs(s),h=s&&-u/s;wu.add(h*o),Cu.add(h*c),_u.add(h*l),fu+=u,vu+=u*(Mu+(Mu=a)),xu+=u*(Tu+(Tu=i)),ku+=u*(Bu+(Bu=n)),Ku(Mu,Tu,Bu)}function Qu(e){return function(){return e}}function Xu(e,t){function r(r,a){return r=e(r,a),t(r[0],r[1])}return e.invert&&t.invert&&(r.invert=function(r,a){return(r=t.invert(r,a))&&e.invert(r[0],r[1])}),r}function eh(e,t){return fs(e)>ss&&(e-=Math.round(e/ds)*ds),[e,t]}function th(e,t,r){return(e%=ds)?t||r?Xu(ah(e),ih(t,r)):ah(e):t||r?ih(t,r):eh}function rh(e){return function(t,r){return fs(t+=e)>ss&&(t-=Math.round(t/ds)*ds),[t,r]}}function ah(e){var t=rh(e);return t.invert=rh(-e),t}function ih(e,t){var r=bs(e),a=_s(e),i=bs(t),n=_s(t);function o(e,t){var o=bs(t),c=bs(e)*o,l=_s(e)*o,s=_s(t),u=s*r+c*a;return[gs(l*i-u*n,c*r-s*a),Bs(u*i+l*n)]}return o.invert=function(e,t){var o=bs(t),c=bs(e)*o,l=_s(e)*o,s=_s(t),u=s*i-l*n;return[gs(l*i+s*n,c*r+u*a),Bs(u*r-c*a)]},o}function nh(e){function t(t){return(t=e(t[0]*ys,t[1]*ys))[0]*=ps,t[1]*=ps,t}return e=th(e[0]*ys,e[1]*ys,e.length>2?e[2]*ys:0),t.invert=function(t){return(t=e.invert(t[0]*ys,t[1]*ys))[0]*=ps,t[1]*=ps,t},t}function oh(e,t,r,a,i,n){if(r){var o=bs(t),c=_s(t),l=a*r;null==i?(i=t+a*ds,n=t-l/2):(i=ch(o,i),n=ch(o,n),(a>0?i<n:i>n)&&(i+=a*ds));for(var s,u=i;a>0?u>n:u<n;u-=l)s=cu([o,-c*bs(u),-c*_s(u)]),e.point(s[0],s[1])}}function ch(e,t){(t=lu(t))[0]-=e,pu(t);var r=Ts(-t[1]);return((-t[2]<0?-r:r)+ds-cs)%ds}function lh(){var e,t=[];return{point:function(t,r,a){e.push([t,r,a])},lineStart:function(){t.push(e=[])},lineEnd:Es,rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))},result:function(){var r=t;return t=[],e=null,r}}}function sh(e,t){return fs(e[0]-t[0])<cs&&fs(e[1]-t[1])<cs}function uh(e,t,r,a){this.x=e,this.z=t,this.o=r,this.e=a,this.v=!1,this.n=this.p=null}function hh(e,t,r,a,i){var n,o,c=[],l=[];if(e.forEach((function(e){if(!((t=e.length-1)<=0)){var t,r,a=e[0],o=e[t];if(sh(a,o)){if(!a[2]&&!o[2]){for(i.lineStart(),n=0;n<t;++n)i.point((a=e[n])[0],a[1]);return void i.lineEnd()}o[0]+=2e-6}c.push(r=new uh(a,e,null,!0)),l.push(r.o=new uh(a,null,r,!1)),c.push(r=new uh(o,e,null,!1)),l.push(r.o=new uh(o,null,r,!0))}})),c.length){for(l.sort(t),dh(c),dh(l),n=0,o=l.length;n<o;++n)l[n].e=r=!r;for(var s,u,h=c[0];;){for(var d=h,p=!0;d.v;)if((d=d.n)===h)return;s=d.z,i.lineStart();do{if(d.v=d.o.v=!0,d.e){if(p)for(n=0,o=s.length;n<o;++n)i.point((u=s[n])[0],u[1]);else a(d.x,d.n.x,1,i);d=d.n}else{if(p)for(s=d.p.z,n=s.length-1;n>=0;--n)i.point((u=s[n])[0],u[1]);else a(d.x,d.p.x,-1,i);d=d.p}s=(d=d.o).z,p=!p}while(!d.v);i.lineEnd()}}}function dh(e){if(t=e.length){for(var t,r,a=0,i=e[0];++a<t;)i.n=r=e[a],r.p=i,i=r;i.n=r=e[0],r.p=i}}function ph(e){return fs(e[0])<=ss?e[0]:Ss(e[0])*((fs(e[0])+ss)%ds-ss)}function yh(e,t){var r=ph(t),a=t[1],i=_s(a),n=[_s(r),-bs(r),0],o=0,c=0,l=new W;1===i?a=us+cs:-1===i&&(a=-us-cs);for(var s=0,u=e.length;s<u;++s)if(d=(h=e[s]).length)for(var h,d,p=h[d-1],y=ph(p),f=p[1]/2+hs,m=_s(f),g=bs(f),b=0;b<d;++b,y=x,m=w,g=C,p=v){var v=h[b],x=ph(v),k=v[1]/2+hs,w=_s(k),C=bs(k),_=x-y,S=_>=0?1:-1,A=S*_,M=A>ss,T=m*w;if(l.add(gs(T*S*_s(A),g*C+T*bs(A))),o+=M?_+S*ds:_,M^y>=r^x>=r){var B=uu(lu(p),lu(v));pu(B);var L=uu(n,B);pu(L);var E=(M^_>=0?-1:1)*Bs(L[2]);(a>E||a===E&&(B[0]||B[1]))&&(c+=M^_>=0?1:-1)}}return(o<-1e-6||o<cs&&l<-1e-12)^1&c}function fh(e,t,r,a){return function(i){var n,o,c,l=t(i),s=lh(),u=t(s),h=!1,d={point:p,lineStart:f,lineEnd:m,polygonStart:function(){d.point=g,d.lineStart=b,d.lineEnd=v,o=[],n=[]},polygonEnd:function(){d.point=p,d.lineStart=f,d.lineEnd=m,o=Ae(o);var e=yh(n,a);o.length?(h||(i.polygonStart(),h=!0),hh(o,gh,e,r,i)):e&&(h||(i.polygonStart(),h=!0),i.lineStart(),r(null,null,1,i),i.lineEnd()),h&&(i.polygonEnd(),h=!1),o=n=null},sphere:function(){i.polygonStart(),i.lineStart(),r(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function p(t,r){e(t,r)&&i.point(t,r)}function y(e,t){l.point(e,t)}function f(){d.point=y,l.lineStart()}function m(){d.point=p,l.lineEnd()}function g(e,t){c.push([e,t]),u.point(e,t)}function b(){u.lineStart(),c=[]}function v(){g(c[0][0],c[0][1]),u.lineEnd();var e,t,r,a,l=u.clean(),d=s.result(),p=d.length;if(c.pop(),n.push(c),c=null,p)if(1&l){if((t=(r=d[0]).length-1)>0){for(h||(i.polygonStart(),h=!0),i.lineStart(),e=0;e<t;++e)i.point((a=r[e])[0],a[1]);i.lineEnd()}}else p>1&&2&l&&d.push(d.pop().concat(d.shift())),o.push(d.filter(mh))}return d}}function mh(e){return e.length>1}function gh(e,t){return((e=e.x)[0]<0?e[1]-us-cs:us-e[1])-((t=t.x)[0]<0?t[1]-us-cs:us-t[1])}eh.invert=eh;var bh=fh((function(){return!0}),(function(e){var t,r=NaN,a=NaN,i=NaN;return{lineStart:function(){e.lineStart(),t=1},point:function(n,o){var c=n>0?ss:-ss,l=fs(n-r);fs(l-ss)<cs?(e.point(r,a=(a+o)/2>0?us:-us),e.point(i,a),e.lineEnd(),e.lineStart(),e.point(c,a),e.point(n,a),t=0):i!==c&&l>=ss&&(fs(r-i)<cs&&(r-=i*cs),fs(n-c)<cs&&(n-=c*cs),a=function(e,t,r,a){var i,n,o=_s(e-r);return fs(o)>cs?ms((_s(t)*(n=bs(a))*_s(r)-_s(a)*(i=bs(t))*_s(e))/(i*n*o)):(t+a)/2}(r,a,n,o),e.point(i,a),e.lineEnd(),e.lineStart(),e.point(c,a),t=0),e.point(r=n,a=o),i=c},lineEnd:function(){e.lineEnd(),r=a=NaN},clean:function(){return 2-t}}}),(function(e,t,r,a){var i;if(null==e)i=r*us,a.point(-ss,i),a.point(0,i),a.point(ss,i),a.point(ss,0),a.point(ss,-i),a.point(0,-i),a.point(-ss,-i),a.point(-ss,0),a.point(-ss,i);else if(fs(e[0]-t[0])>cs){var n=e[0]<t[0]?ss:-ss;i=r*n/2,a.point(-n,i),a.point(0,i),a.point(n,i)}else a.point(t[0],t[1])}),[-ss,-us]);function vh(e){var t=bs(e),r=2*ys,a=t>0,i=fs(t)>cs;function n(e,r){return bs(e)*bs(r)>t}function o(e,r,a){var i=[1,0,0],n=uu(lu(e),lu(r)),o=su(n,n),c=n[0],l=o-c*c;if(!l)return!a&&e;var s=t*o/l,u=-t*c/l,h=uu(i,n),d=du(i,s);hu(d,du(n,u));var p=h,y=su(d,p),f=su(p,p),m=y*y-f*(su(d,d)-1);if(!(m<0)){var g=As(m),b=du(p,(-y-g)/f);if(hu(b,d),b=cu(b),!a)return b;var v,x=e[0],k=r[0],w=e[1],C=r[1];k<x&&(v=x,x=k,k=v);var _=k-x,S=fs(_-ss)<cs;if(!S&&C<w&&(v=w,w=C,C=v),S||_<cs?S?w+C>0^b[1]<(fs(b[0]-x)<cs?w:C):w<=b[1]&&b[1]<=C:_>ss^(x<=b[0]&&b[0]<=k)){var A=du(p,(-y+g)/f);return hu(A,d),[b,cu(A)]}}}function c(t,r){var i=a?e:ss-e,n=0;return t<-i?n|=1:t>i&&(n|=2),r<-i?n|=4:r>i&&(n|=8),n}return fh(n,(function(e){var t,r,l,s,u;return{lineStart:function(){s=l=!1,u=1},point:function(h,d){var p,y=[h,d],f=n(h,d),m=a?f?0:c(h,d):f?c(h+(h<0?ss:-ss),d):0;if(!t&&(s=l=f)&&e.lineStart(),f!==l&&(!(p=o(t,y))||sh(t,p)||sh(y,p))&&(y[2]=1),f!==l)u=0,f?(e.lineStart(),p=o(y,t),e.point(p[0],p[1])):(p=o(t,y),e.point(p[0],p[1],2),e.lineEnd()),t=p;else if(i&&t&&a^f){var g;m&r||!(g=o(y,t,!0))||(u=0,a?(e.lineStart(),e.point(g[0][0],g[0][1]),e.point(g[1][0],g[1][1]),e.lineEnd()):(e.point(g[1][0],g[1][1]),e.lineEnd(),e.lineStart(),e.point(g[0][0],g[0][1],3)))}!f||t&&sh(t,y)||e.point(y[0],y[1]),t=y,l=f,r=m},lineEnd:function(){l&&e.lineEnd(),t=null},clean:function(){return u|(s&&l)<<1}}}),(function(t,a,i,n){oh(n,e,r,i,t,a)}),a?[0,-e]:[-ss,e-ss])}var xh,kh,wh,Ch,_h=1e9,Sh=-_h;function Ah(e,t,r,a){function i(i,n){return e<=i&&i<=r&&t<=n&&n<=a}function n(i,n,c,s){var u=0,h=0;if(null==i||(u=o(i,c))!==(h=o(n,c))||l(i,n)<0^c>0)do{s.point(0===u||3===u?e:r,u>1?a:t)}while((u=(u+c+4)%4)!==h);else s.point(n[0],n[1])}function o(a,i){return fs(a[0]-e)<cs?i>0?0:3:fs(a[0]-r)<cs?i>0?2:1:fs(a[1]-t)<cs?i>0?1:0:i>0?3:2}function c(e,t){return l(e.x,t.x)}function l(e,t){var r=o(e,1),a=o(t,1);return r!==a?r-a:0===r?t[1]-e[1]:1===r?e[0]-t[0]:2===r?e[1]-t[1]:t[0]-e[0]}return function(o){var l,s,u,h,d,p,y,f,m,g,b,v=o,x=lh(),k={point:w,lineStart:function(){k.point=C,s&&s.push(u=[]),g=!0,m=!1,y=f=NaN},lineEnd:function(){l&&(C(h,d),p&&m&&x.rejoin(),l.push(x.result())),k.point=w,m&&v.lineEnd()},polygonStart:function(){v=x,l=[],s=[],b=!0},polygonEnd:function(){var t=function(){for(var t=0,r=0,i=s.length;r<i;++r)for(var n,o,c=s[r],l=1,u=c.length,h=c[0],d=h[0],p=h[1];l<u;++l)n=d,o=p,d=(h=c[l])[0],p=h[1],o<=a?p>a&&(d-n)*(a-o)>(p-o)*(e-n)&&++t:p<=a&&(d-n)*(a-o)<(p-o)*(e-n)&&--t;return t}(),r=b&&t,i=(l=Ae(l)).length;(r||i)&&(o.polygonStart(),r&&(o.lineStart(),n(null,null,1,o),o.lineEnd()),i&&hh(l,c,t,n,o),o.polygonEnd()),v=o,l=s=u=null}};function w(e,t){i(e,t)&&v.point(e,t)}function C(n,o){var c=i(n,o);if(s&&u.push([n,o]),g)h=n,d=o,p=c,g=!1,c&&(v.lineStart(),v.point(n,o));else if(c&&m)v.point(n,o);else{var l=[y=Math.max(Sh,Math.min(_h,y)),f=Math.max(Sh,Math.min(_h,f))],x=[n=Math.max(Sh,Math.min(_h,n)),o=Math.max(Sh,Math.min(_h,o))];!function(e,t,r,a,i,n){var o,c=e[0],l=e[1],s=0,u=1,h=t[0]-c,d=t[1]-l;if(o=r-c,h||!(o>0)){if(o/=h,h<0){if(o<s)return;o<u&&(u=o)}else if(h>0){if(o>u)return;o>s&&(s=o)}if(o=i-c,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>s&&(s=o)}else if(h>0){if(o<s)return;o<u&&(u=o)}if(o=a-l,d||!(o>0)){if(o/=d,d<0){if(o<s)return;o<u&&(u=o)}else if(d>0){if(o>u)return;o>s&&(s=o)}if(o=n-l,d||!(o<0)){if(o/=d,d<0){if(o>u)return;o>s&&(s=o)}else if(d>0){if(o<s)return;o<u&&(u=o)}return s>0&&(e[0]=c+s*h,e[1]=l+s*d),u<1&&(t[0]=c+u*h,t[1]=l+u*d),!0}}}}}(l,x,e,t,r,a)?c&&(v.lineStart(),v.point(n,o),b=!1):(m||(v.lineStart(),v.point(l[0],l[1])),v.point(x[0],x[1]),c||v.lineEnd(),b=!1)}y=n,f=o,m=c}return k}}var Mh={sphere:Es,point:Es,lineStart:function(){Mh.point=Bh,Mh.lineEnd=Th},lineEnd:Es,polygonStart:Es,polygonEnd:Es};function Th(){Mh.point=Mh.lineEnd=Es}function Bh(e,t){kh=e*=ys,wh=_s(t*=ys),Ch=bs(t),Mh.point=Lh}function Lh(e,t){e*=ys;var r=_s(t*=ys),a=bs(t),i=fs(e-kh),n=bs(i),o=a*_s(i),c=Ch*r-wh*a*n,l=wh*r+Ch*a*n;xh.add(gs(As(o*o+c*c),l)),kh=e,wh=r,Ch=a}function Eh(e){return xh=new W,Gs(e,Mh),+xh}var Rh=[null,null],Hh={type:"LineString",coordinates:Rh};function Dh(e,t){return Rh[0]=e,Rh[1]=t,Eh(Hh)}var Ph={Feature:function(e,t){return Gh(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,a=-1,i=r.length;++a<i;)if(Gh(r[a].geometry,t))return!0;return!1}},Nh={Sphere:function(){return!0},Point:function(e,t){return Ih(e.coordinates,t)},MultiPoint:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)if(Ih(r[a],t))return!0;return!1},LineString:function(e,t){return Wh(e.coordinates,t)},MultiLineString:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)if(Wh(r[a],t))return!0;return!1},Polygon:function(e,t){return Fh(e.coordinates,t)},MultiPolygon:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)if(Fh(r[a],t))return!0;return!1},GeometryCollection:function(e,t){for(var r=e.geometries,a=-1,i=r.length;++a<i;)if(Gh(r[a],t))return!0;return!1}};function Gh(e,t){return!(!e||!Nh.hasOwnProperty(e.type))&&Nh[e.type](e,t)}function Ih(e,t){return 0===Dh(e,t)}function Wh(e,t){for(var r,a,i,n=0,o=e.length;n<o;n++){if(0===(a=Dh(e[n],t)))return!0;if(n>0&&(i=Dh(e[n],e[n-1]))>0&&r<=i&&a<=i&&(r+a-i)*(1-Math.pow((r-a)/i,2))<ls*i)return!0;r=a}return!1}function Fh(e,t){return!!yh(e.map(Oh),zh(t))}function Oh(e){return(e=e.map(zh)).pop(),e}function zh(e){return[e[0]*ys,e[1]*ys]}function Kh(e,t,r){var a=Te(e,t-cs,r).concat(t);return function(e){return a.map((function(t){return[e,t]}))}}function Jh(e,t,r){var a=Te(e,t-cs,r).concat(t);return function(e){return a.map((function(t){return[t,e]}))}}function Vh(){var e,t,r,a,i,n,o,c,l,s,u,h,d=10,p=d,y=90,f=360,m=2.5;function g(){return{type:"MultiLineString",coordinates:b()}}function b(){return Te(vs(a/y)*y,r,y).map(u).concat(Te(vs(c/f)*f,o,f).map(h)).concat(Te(vs(t/d)*d,e,d).filter((function(e){return fs(e%y)>cs})).map(l)).concat(Te(vs(n/p)*p,i,p).filter((function(e){return fs(e%f)>cs})).map(s))}return g.lines=function(){return b().map((function(e){return{type:"LineString",coordinates:e}}))},g.outline=function(){return{type:"Polygon",coordinates:[u(a).concat(h(o).slice(1),u(r).reverse().slice(1),h(c).reverse().slice(1))]}},g.extent=function(e){return arguments.length?g.extentMajor(e).extentMinor(e):g.extentMinor()},g.extentMajor=function(e){return arguments.length?(a=+e[0][0],r=+e[1][0],c=+e[0][1],o=+e[1][1],a>r&&(e=a,a=r,r=e),c>o&&(e=c,c=o,o=e),g.precision(m)):[[a,c],[r,o]]},g.extentMinor=function(r){return arguments.length?(t=+r[0][0],e=+r[1][0],n=+r[0][1],i=+r[1][1],t>e&&(r=t,t=e,e=r),n>i&&(r=n,n=i,i=r),g.precision(m)):[[t,n],[e,i]]},g.step=function(e){return arguments.length?g.stepMajor(e).stepMinor(e):g.stepMinor()},g.stepMajor=function(e){return arguments.length?(y=+e[0],f=+e[1],g):[y,f]},g.stepMinor=function(e){return arguments.length?(d=+e[0],p=+e[1],g):[d,p]},g.precision=function(d){return arguments.length?(m=+d,l=Kh(n,i,90),s=Jh(t,e,m),u=Kh(c,o,90),h=Jh(a,r,m),g):m},g.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}var jh,Yh,$h,Uh,qh=e=>e,Zh=new W,Qh=new W,Xh={point:Es,lineStart:Es,lineEnd:Es,polygonStart:function(){Xh.lineStart=ed,Xh.lineEnd=ad},polygonEnd:function(){Xh.lineStart=Xh.lineEnd=Xh.point=Es,Zh.add(fs(Qh)),Qh=new W},result:function(){var e=Zh/2;return Zh=new W,e}};function ed(){Xh.point=td}function td(e,t){Xh.point=rd,jh=$h=e,Yh=Uh=t}function rd(e,t){Qh.add(Uh*e-$h*t),$h=e,Uh=t}function ad(){rd(jh,Yh)}var id,nd,od,cd,ld=1/0,sd=ld,ud=-ld,hd=ud,dd={point:function(e,t){e<ld&&(ld=e),e>ud&&(ud=e),t<sd&&(sd=t),t>hd&&(hd=t)},lineStart:Es,lineEnd:Es,polygonStart:Es,polygonEnd:Es,result:function(){var e=[[ld,sd],[ud,hd]];return ud=hd=-(sd=ld=1/0),e}},pd=0,yd=0,fd=0,md=0,gd=0,bd=0,vd=0,xd=0,kd=0,wd={point:Cd,lineStart:_d,lineEnd:Md,polygonStart:function(){wd.lineStart=Td,wd.lineEnd=Bd},polygonEnd:function(){wd.point=Cd,wd.lineStart=_d,wd.lineEnd=Md},result:function(){var e=kd?[vd/kd,xd/kd]:bd?[md/bd,gd/bd]:fd?[pd/fd,yd/fd]:[NaN,NaN];return pd=yd=fd=md=gd=bd=vd=xd=kd=0,e}};function Cd(e,t){pd+=e,yd+=t,++fd}function _d(){wd.point=Sd}function Sd(e,t){wd.point=Ad,Cd(od=e,cd=t)}function Ad(e,t){var r=e-od,a=t-cd,i=As(r*r+a*a);md+=i*(od+e)/2,gd+=i*(cd+t)/2,bd+=i,Cd(od=e,cd=t)}function Md(){wd.point=Cd}function Td(){wd.point=Ld}function Bd(){Ed(id,nd)}function Ld(e,t){wd.point=Ed,Cd(id=od=e,nd=cd=t)}function Ed(e,t){var r=e-od,a=t-cd,i=As(r*r+a*a);md+=i*(od+e)/2,gd+=i*(cd+t)/2,bd+=i,vd+=(i=cd*e-od*t)*(od+e),xd+=i*(cd+t),kd+=3*i,Cd(od=e,cd=t)}function Rd(e){this._context=e}Rd.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:this._context.moveTo(e,t),this._point=1;break;case 1:this._context.lineTo(e,t);break;default:this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,ds)}},result:Es};var Hd,Dd,Pd,Nd,Gd,Id=new W,Wd={point:Es,lineStart:function(){Wd.point=Fd},lineEnd:function(){Hd&&Od(Dd,Pd),Wd.point=Es},polygonStart:function(){Hd=!0},polygonEnd:function(){Hd=null},result:function(){var e=+Id;return Id=new W,e}};function Fd(e,t){Wd.point=Od,Dd=Nd=e,Pd=Gd=t}function Od(e,t){Nd-=e,Gd-=t,Id.add(As(Nd*Nd+Gd*Gd)),Nd=e,Gd=t}let zd,Kd,Jd,Vd;class jd{constructor(e){this._append=null==e?Yd:function(e){const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);if(t>15)return Yd;if(t!==zd){const e=10**t;zd=t,Kd=function(t){let r=1;this._+=t[0];for(const a=t.length;r<a;++r)this._+=Math.round(arguments[r]*e)/e+t[r]}}return Kd}(e),this._radius=4.5,this._=""}pointRadius(e){return this._radius=+e,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){0===this._line&&(this._+="Z"),this._point=NaN}point(e,t){switch(this._point){case 0:this._append`M${e},${t}`,this._point=1;break;case 1:this._append`L${e},${t}`;break;default:if(this._append`M${e},${t}`,this._radius!==Jd||this._append!==Kd){const e=this._radius,t=this._;this._="",this._append`m0,${e}a${e},${e} 0 1,1 0,${-2*e}a${e},${e} 0 1,1 0,${2*e}z`,Jd=e,Kd=this._append,Vd=this._,this._=t}this._+=Vd}}result(){const e=this._;return this._="",e.length?e:null}}function Yd(e){let t=1;this._+=e[0];for(const r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function $d(e){return function(t){var r=new Ud;for(var a in e)r[a]=e[a];return r.stream=t,r}}function Ud(){}function qd(e,t,r){var a=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),null!=a&&e.clipExtent(null),Gs(r,e.stream(dd)),t(dd.result()),null!=a&&e.clipExtent(a),e}function Zd(e,t,r){return qd(e,(function(r){var a=t[1][0]-t[0][0],i=t[1][1]-t[0][1],n=Math.min(a/(r[1][0]-r[0][0]),i/(r[1][1]-r[0][1])),o=+t[0][0]+(a-n*(r[1][0]+r[0][0]))/2,c=+t[0][1]+(i-n*(r[1][1]+r[0][1]))/2;e.scale(150*n).translate([o,c])}),r)}function Qd(e,t,r){return Zd(e,[[0,0],t],r)}function Xd(e,t,r){return qd(e,(function(r){var a=+t,i=a/(r[1][0]-r[0][0]),n=(a-i*(r[1][0]+r[0][0]))/2,o=-i*r[0][1];e.scale(150*i).translate([n,o])}),r)}function ep(e,t,r){return qd(e,(function(r){var a=+t,i=a/(r[1][1]-r[0][1]),n=-i*r[0][0],o=(a-i*(r[1][1]+r[0][1]))/2;e.scale(150*i).translate([n,o])}),r)}Ud.prototype={constructor:Ud,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var tp=bs(30*ys);function rp(e,t){return+t?function(e,t){function r(a,i,n,o,c,l,s,u,h,d,p,y,f,m){var g=s-a,b=u-i,v=g*g+b*b;if(v>4*t&&f--){var x=o+d,k=c+p,w=l+y,C=As(x*x+k*k+w*w),_=Bs(w/=C),S=fs(fs(w)-1)<cs||fs(n-h)<cs?(n+h)/2:gs(k,x),A=e(S,_),M=A[0],T=A[1],B=M-a,L=T-i,E=b*B-g*L;(E*E/v>t||fs((g*B+b*L)/v-.5)>.3||o*d+c*p+l*y<tp)&&(r(a,i,n,o,c,l,M,T,S,x/=C,k/=C,w,f,m),m.point(M,T),r(M,T,S,x,k,w,s,u,h,d,p,y,f,m))}}return function(t){var a,i,n,o,c,l,s,u,h,d,p,y,f={point:m,lineStart:g,lineEnd:v,polygonStart:function(){t.polygonStart(),f.lineStart=x},polygonEnd:function(){t.polygonEnd(),f.lineStart=g}};function m(r,a){r=e(r,a),t.point(r[0],r[1])}function g(){u=NaN,f.point=b,t.lineStart()}function b(a,i){var n=lu([a,i]),o=e(a,i);r(u,h,s,d,p,y,u=o[0],h=o[1],s=a,d=n[0],p=n[1],y=n[2],16,t),t.point(u,h)}function v(){f.point=m,t.lineEnd()}function x(){g(),f.point=k,f.lineEnd=w}function k(e,t){b(a=e,t),i=u,n=h,o=d,c=p,l=y,f.point=b}function w(){r(u,h,s,d,p,y,i,n,a,o,c,l,16,t),f.lineEnd=v,v()}return f}}(e,t):function(e){return $d({point:function(t,r){t=e(t,r),this.stream.point(t[0],t[1])}})}(e)}var ap=$d({point:function(e,t){this.stream.point(e*ys,t*ys)}});function ip(e,t,r,a,i,n){if(!n)return function(e,t,r,a,i){function n(n,o){return[t+e*(n*=a),r-e*(o*=i)]}return n.invert=function(n,o){return[(n-t)/e*a,(r-o)/e*i]},n}(e,t,r,a,i);var o=bs(n),c=_s(n),l=o*e,s=c*e,u=o/e,h=c/e,d=(c*r-o*t)/e,p=(c*t+o*r)/e;function y(e,n){return[l*(e*=a)-s*(n*=i)+t,r-s*e-l*n]}return y.invert=function(e,t){return[a*(u*e-h*t+d),i*(p-h*e-u*t)]},y}function np(e){return op((function(){return e}))()}function op(e){var t,r,a,i,n,o,c,l,s,u,h=150,d=480,p=250,y=0,f=0,m=0,g=0,b=0,v=0,x=1,k=1,w=null,C=bh,_=null,S=qh,A=.5;function M(e){return l(e[0]*ys,e[1]*ys)}function T(e){return(e=l.invert(e[0],e[1]))&&[e[0]*ps,e[1]*ps]}function B(){var e=ip(h,0,0,x,k,v).apply(null,t(y,f)),a=ip(h,d-e[0],p-e[1],x,k,v);return r=th(m,g,b),c=Xu(t,a),l=Xu(r,c),o=rp(c,A),L()}function L(){return s=u=null,M}return M.stream=function(e){return s&&u===e?s:s=ap(function(e){return $d({point:function(t,r){var a=e(t,r);return this.stream.point(a[0],a[1])}})}(r)(C(o(S(u=e)))))},M.preclip=function(e){return arguments.length?(C=e,w=void 0,L()):C},M.postclip=function(e){return arguments.length?(S=e,_=a=i=n=null,L()):S},M.clipAngle=function(e){return arguments.length?(C=+e?vh(w=e*ys):(w=null,bh),L()):w*ps},M.clipExtent=function(e){return arguments.length?(S=null==e?(_=a=i=n=null,qh):Ah(_=+e[0][0],a=+e[0][1],i=+e[1][0],n=+e[1][1]),L()):null==_?null:[[_,a],[i,n]]},M.scale=function(e){return arguments.length?(h=+e,B()):h},M.translate=function(e){return arguments.length?(d=+e[0],p=+e[1],B()):[d,p]},M.center=function(e){return arguments.length?(y=e[0]%360*ys,f=e[1]%360*ys,B()):[y*ps,f*ps]},M.rotate=function(e){return arguments.length?(m=e[0]%360*ys,g=e[1]%360*ys,b=e.length>2?e[2]%360*ys:0,B()):[m*ps,g*ps,b*ps]},M.angle=function(e){return arguments.length?(v=e%360*ys,B()):v*ps},M.reflectX=function(e){return arguments.length?(x=e?-1:1,B()):x<0},M.reflectY=function(e){return arguments.length?(k=e?-1:1,B()):k<0},M.precision=function(e){return arguments.length?(o=rp(c,A=e*e),L()):As(A)},M.fitExtent=function(e,t){return Zd(M,e,t)},M.fitSize=function(e,t){return Qd(M,e,t)},M.fitWidth=function(e,t){return Xd(M,e,t)},M.fitHeight=function(e,t){return ep(M,e,t)},function(){return t=e.apply(this,arguments),M.invert=t.invert&&T,B()}}function cp(e){var t=0,r=ss/3,a=op(e),i=a(t,r);return i.parallels=function(e){return arguments.length?a(t=e[0]*ys,r=e[1]*ys):[t*ps,r*ps]},i}function lp(e,t){var r=_s(e),a=(r+_s(t))/2;if(fs(a)<cs)return function(e){var t=bs(e);function r(e,r){return[e*t,_s(r)/t]}return r.invert=function(e,r){return[e/t,Bs(r*t)]},r}(e);var i=1+r*(2*a-r),n=As(i)/a;function o(e,t){var r=As(i-2*a*_s(t))/a;return[r*_s(e*=a),n-r*bs(e)]}return o.invert=function(e,t){var r=n-t,o=gs(e,fs(r))*Ss(r);return r*a<0&&(o-=ss*Ss(e)*Ss(r)),[o/a,Bs((i-(e*e+r*r)*a*a)/(2*a))]},o}function sp(){return cp(lp).scale(155.424).center([0,33.6442])}function up(){return sp().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function hp(e){return function(t,r){var a=bs(t),i=bs(r),n=e(a*i);return n===1/0?[2,0]:[n*i*_s(t),n*_s(r)]}}function dp(e){return function(t,r){var a=As(t*t+r*r),i=e(a),n=_s(i),o=bs(i);return[gs(t*n,a*o),Bs(a&&r*n/a)]}}var pp=hp((function(e){return As(2/(1+e))}));pp.invert=dp((function(e){return 2*Bs(e/2)}));var yp=hp((function(e){return(e=Ts(e))&&e/_s(e)}));function fp(e,t){return[e,ws(Ms((us+t)/2))]}function mp(e){var t,r,a,i=np(e),n=i.center,o=i.scale,c=i.translate,l=i.clipExtent,s=null;function u(){var n=ss*o(),c=i(nh(i.rotate()).invert([0,0]));return l(null==s?[[c[0]-n,c[1]-n],[c[0]+n,c[1]+n]]:e===fp?[[Math.max(c[0]-n,s),t],[Math.min(c[0]+n,r),a]]:[[s,Math.max(c[1]-n,t)],[r,Math.min(c[1]+n,a)]])}return i.scale=function(e){return arguments.length?(o(e),u()):o()},i.translate=function(e){return arguments.length?(c(e),u()):c()},i.center=function(e){return arguments.length?(n(e),u()):n()},i.clipExtent=function(e){return arguments.length?(null==e?s=t=r=a=null:(s=+e[0][0],t=+e[0][1],r=+e[1][0],a=+e[1][1]),u()):null==s?null:[[s,t],[r,a]]},u()}function gp(e){return Ms((us+e)/2)}function bp(e,t){var r=bs(e),a=e===t?_s(e):ws(r/bs(t))/ws(gp(t)/gp(e)),i=r*Cs(gp(e),a)/a;if(!a)return fp;function n(e,t){i>0?t<-us+cs&&(t=-us+cs):t>us-cs&&(t=us-cs);var r=i/Cs(gp(t),a);return[r*_s(a*e),i-r*bs(a*e)]}return n.invert=function(e,t){var r=i-t,n=Ss(a)*As(e*e+r*r),o=gs(e,fs(r))*Ss(r);return r*a<0&&(o-=ss*Ss(e)*Ss(r)),[o/a,2*ms(Cs(i/n,1/a))-us]},n}function vp(e,t){return[e,t]}function xp(e,t){var r=bs(e),a=e===t?_s(e):(r-bs(t))/(t-e),i=r/a+e;if(fs(a)<cs)return vp;function n(e,t){var r=i-t,n=a*e;return[r*_s(n),i-r*bs(n)]}return n.invert=function(e,t){var r=i-t,n=gs(e,fs(r))*Ss(r);return r*a<0&&(n-=ss*Ss(e)*Ss(r)),[n/a,i-Ss(a)*As(e*e+r*r)]},n}yp.invert=dp((function(e){return e})),fp.invert=function(e,t){return[e,2*ms(xs(t))-us]},vp.invert=vp;var kp=1.340264,wp=-.081106,Cp=893e-6,_p=.003796,Sp=As(3)/2;function Ap(e,t){var r=Bs(Sp*_s(t)),a=r*r,i=a*a*a;return[e*bs(r)/(Sp*(kp+3*wp*a+i*(7*Cp+9*_p*a))),r*(kp+wp*a+i*(Cp+_p*a))]}function Mp(e,t){var r=bs(t),a=bs(e)*r;return[r*_s(e)/a,_s(t)/a]}function Tp(e,t){var r=t*t,a=r*r;return[e*(.8707-.131979*r+a*(a*(.003971*r-.001529*a)-.013791)),t*(1.007226+r*(.015085+a*(.028874*r-.044475-.005916*a)))]}function Bp(e,t){return[bs(t)*_s(e),_s(t)]}function Lp(e,t){var r=bs(t),a=1+bs(e)*r;return[r*_s(e)/a,_s(t)/a]}function Ep(e,t){return[ws(Ms((us+t)/2)),-e]}function Rp(e,t){return e.parent===t.parent?1:2}function Hp(e,t){return e+t.x}function Dp(e,t){return Math.max(e,t.y)}function Pp(){var e=Rp,t=1,r=1,a=!1;function i(i){var n,o=0;i.eachAfter((function(t){var r=t.children;r?(t.x=function(e){return e.reduce(Hp,0)/e.length}(r),t.y=function(e){return 1+e.reduce(Dp,0)}(r)):(t.x=n?o+=e(t,n):0,t.y=0,n=t)}));var c=function(e){for(var t;t=e.children;)e=t[0];return e}(i),l=function(e){for(var t;t=e.children;)e=t[t.length-1];return e}(i),s=c.x-e(c,l)/2,u=l.x+e(l,c)/2;return i.eachAfter(a?function(e){e.x=(e.x-i.x)*t,e.y=(i.y-e.y)*r}:function(e){e.x=(e.x-s)/(u-s)*t,e.y=(1-(i.y?e.y/i.y:1))*r})}return i.separation=function(t){return arguments.length?(e=t,i):e},i.size=function(e){return arguments.length?(a=!1,t=+e[0],r=+e[1],i):a?null:[t,r]},i.nodeSize=function(e){return arguments.length?(a=!0,t=+e[0],r=+e[1],i):a?[t,r]:null},i}function Np(e){var t=0,r=e.children,a=r&&r.length;if(a)for(;--a>=0;)t+=r[a].value;else t=1;e.value=t}function Gp(e,t){e instanceof Map?(e=[void 0,e],void 0===t&&(t=Wp)):void 0===t&&(t=Ip);for(var r,a,i,n,o,c=new zp(e),l=[c];r=l.pop();)if((i=t(r.data))&&(o=(i=Array.from(i)).length))for(r.children=i,n=o-1;n>=0;--n)l.push(a=i[n]=new zp(i[n])),a.parent=r,a.depth=r.depth+1;return c.eachBefore(Op)}function Ip(e){return e.children}function Wp(e){return Array.isArray(e)?e[1]:null}function Fp(e){void 0!==e.data.value&&(e.value=e.data.value),e.data=e.data.data}function Op(e){var t=0;do{e.height=t}while((e=e.parent)&&e.height<++t)}function zp(e){this.data=e,this.depth=this.height=0,this.parent=null}function Kp(e){return null==e?null:Jp(e)}function Jp(e){if("function"!=typeof e)throw new Error;return e}function Vp(){return 0}function jp(e){return function(){return e}}Ap.invert=function(e,t){for(var r,a=t,i=a*a,n=i*i*i,o=0;o<12&&(n=(i=(a-=r=(a*(kp+wp*i+n*(Cp+_p*i))-t)/(kp+3*wp*i+n*(7*Cp+9*_p*i)))*a)*i*i,!(fs(r)<ls));++o);return[Sp*e*(kp+3*wp*i+n*(7*Cp+9*_p*i))/bs(a),Bs(_s(a)/Sp)]},Mp.invert=dp(ms),Tp.invert=function(e,t){var r,a=t,i=25;do{var n=a*a,o=n*n;a-=r=(a*(1.007226+n*(.015085+o*(.028874*n-.044475-.005916*o)))-t)/(1.007226+n*(.045255+o*(.259866*n-.311325-.005916*11*o)))}while(fs(r)>cs&&--i>0);return[e/(.8707+(n=a*a)*(n*(n*n*n*(.003971-.001529*n)-.013791)-.131979)),a]},Bp.invert=dp(Bs),Lp.invert=dp((function(e){return 2*ms(e)})),Ep.invert=function(e,t){return[-t,2*ms(xs(e))-us]},zp.prototype=Gp.prototype={constructor:zp,count:function(){return this.eachAfter(Np)},each:function(e,t){let r=-1;for(const a of this)e.call(t,a,++r,this);return this},eachAfter:function(e,t){for(var r,a,i,n=this,o=[n],c=[],l=-1;n=o.pop();)if(c.push(n),r=n.children)for(a=0,i=r.length;a<i;++a)o.push(r[a]);for(;n=c.pop();)e.call(t,n,++l,this);return this},eachBefore:function(e,t){for(var r,a,i=this,n=[i],o=-1;i=n.pop();)if(e.call(t,i,++o,this),r=i.children)for(a=r.length-1;a>=0;--a)n.push(r[a]);return this},find:function(e,t){let r=-1;for(const a of this)if(e.call(t,a,++r,this))return a},sum:function(e){return this.eachAfter((function(t){for(var r=+e(t.data)||0,a=t.children,i=a&&a.length;--i>=0;)r+=a[i].value;t.value=r}))},sort:function(e){return this.eachBefore((function(t){t.children&&t.children.sort(e)}))},path:function(e){for(var t=this,r=function(e,t){if(e===t)return e;var r=e.ancestors(),a=t.ancestors(),i=null;for(e=r.pop(),t=a.pop();e===t;)i=e,e=r.pop(),t=a.pop();return i}(t,e),a=[t];t!==r;)t=t.parent,a.push(t);for(var i=a.length;e!==r;)a.splice(i,0,e),e=e.parent;return a},ancestors:function(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t},descendants:function(){return Array.from(this)},leaves:function(){var e=[];return this.eachBefore((function(t){t.children||e.push(t)})),e},links:function(){var e=this,t=[];return e.each((function(r){r!==e&&t.push({source:r.parent,target:r})})),t},copy:function(){return Gp(this).eachBefore(Fp)},[Symbol.iterator]:function*(){var e,t,r,a,i=this,n=[i];do{for(e=n.reverse(),n=[];i=e.pop();)if(yield i,t=i.children)for(r=0,a=t.length;r<a;++r)n.push(t[r])}while(n.length)}};const Yp=4294967296;function $p(){let e=1;return()=>(e=(1664525*e+1013904223)%Yp)/Yp}function Up(e,t){for(var r,a,i=0,n=(e=function(e,t){let r,a,i=e.length;for(;i;)a=t()*i--|0,r=e[i],e[i]=e[a],e[a]=r;return e}(Array.from(e),t)).length,o=[];i<n;)r=e[i],a&&Qp(a,r)?++i:(a=ey(o=qp(o,r)),i=0);return a}function qp(e,t){var r,a;if(Xp(t,e))return[t];for(r=0;r<e.length;++r)if(Zp(t,e[r])&&Xp(ty(e[r],t),e))return[e[r],t];for(r=0;r<e.length-1;++r)for(a=r+1;a<e.length;++a)if(Zp(ty(e[r],e[a]),t)&&Zp(ty(e[r],t),e[a])&&Zp(ty(e[a],t),e[r])&&Xp(ry(e[r],e[a],t),e))return[e[r],e[a],t];throw new Error}function Zp(e,t){var r=e.r-t.r,a=t.x-e.x,i=t.y-e.y;return r<0||r*r<a*a+i*i}function Qp(e,t){var r=e.r-t.r+1e-9*Math.max(e.r,t.r,1),a=t.x-e.x,i=t.y-e.y;return r>0&&r*r>a*a+i*i}function Xp(e,t){for(var r=0;r<t.length;++r)if(!Qp(e,t[r]))return!1;return!0}function ey(e){switch(e.length){case 1:return function(e){return{x:e.x,y:e.y,r:e.r}}(e[0]);case 2:return ty(e[0],e[1]);case 3:return ry(e[0],e[1],e[2])}}function ty(e,t){var r=e.x,a=e.y,i=e.r,n=t.x,o=t.y,c=t.r,l=n-r,s=o-a,u=c-i,h=Math.sqrt(l*l+s*s);return{x:(r+n+l/h*u)/2,y:(a+o+s/h*u)/2,r:(h+i+c)/2}}function ry(e,t,r){var a=e.x,i=e.y,n=e.r,o=t.x,c=t.y,l=t.r,s=r.x,u=r.y,h=r.r,d=a-o,p=a-s,y=i-c,f=i-u,m=l-n,g=h-n,b=a*a+i*i-n*n,v=b-o*o-c*c+l*l,x=b-s*s-u*u+h*h,k=p*y-d*f,w=(y*x-f*v)/(2*k)-a,C=(f*m-y*g)/k,_=(p*v-d*x)/(2*k)-i,S=(d*g-p*m)/k,A=C*C+S*S-1,M=2*(n+w*C+_*S),T=w*w+_*_-n*n,B=-(Math.abs(A)>1e-6?(M+Math.sqrt(M*M-4*A*T))/(2*A):T/M);return{x:a+w+C*B,y:i+_+S*B,r:B}}function ay(e,t,r){var a,i,n,o,c=e.x-t.x,l=e.y-t.y,s=c*c+l*l;s?(i=t.r+r.r,i*=i,o=e.r+r.r,i>(o*=o)?(a=(s+o-i)/(2*s),n=Math.sqrt(Math.max(0,o/s-a*a)),r.x=e.x-a*c-n*l,r.y=e.y-a*l+n*c):(a=(s+i-o)/(2*s),n=Math.sqrt(Math.max(0,i/s-a*a)),r.x=t.x+a*c-n*l,r.y=t.y+a*l+n*c)):(r.x=t.x+r.r,r.y=t.y)}function iy(e,t){var r=e.r+t.r-1e-6,a=t.x-e.x,i=t.y-e.y;return r>0&&r*r>a*a+i*i}function ny(e){var t=e._,r=e.next._,a=t.r+r.r,i=(t.x*r.r+r.x*t.r)/a,n=(t.y*r.r+r.y*t.r)/a;return i*i+n*n}function oy(e){this._=e,this.next=null,this.previous=null}function cy(e,t){if(!(n=(e=function(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}(e)).length))return 0;var r,a,i,n,o,c,l,s,u,h,d;if((r=e[0]).x=0,r.y=0,!(n>1))return r.r;if(a=e[1],r.x=-a.r,a.x=r.r,a.y=0,!(n>2))return r.r+a.r;ay(a,r,i=e[2]),r=new oy(r),a=new oy(a),i=new oy(i),r.next=i.previous=a,a.next=r.previous=i,i.next=a.previous=r;e:for(l=3;l<n;++l){ay(r._,a._,i=e[l]),i=new oy(i),s=a.next,u=r.previous,h=a._.r,d=r._.r;do{if(h<=d){if(iy(s._,i._)){a=s,r.next=a,a.previous=r,--l;continue e}h+=s._.r,s=s.next}else{if(iy(u._,i._)){(r=u).next=a,a.previous=r,--l;continue e}d+=u._.r,u=u.previous}}while(s!==u.next);for(i.previous=r,i.next=a,r.next=a.previous=a=i,o=ny(r);(i=i.next)!==a;)(c=ny(i))<o&&(r=i,o=c);a=r.next}for(r=[a._],i=a;(i=i.next)!==a;)r.push(i._);for(i=Up(r,t),l=0;l<n;++l)(r=e[l]).x-=i.x,r.y-=i.y;return i.r}function ly(e){return Math.sqrt(e.value)}function sy(e){return function(t){t.children||(t.r=Math.max(0,+e(t)||0))}}function uy(e,t,r){return function(a){if(i=a.children){var i,n,o,c=i.length,l=e(a)*t||0;if(l)for(n=0;n<c;++n)i[n].r+=l;if(o=cy(i,r),l)for(n=0;n<c;++n)i[n].r-=l;a.r=o+l}}}function hy(e){return function(t){var r=t.parent;t.r*=e,r&&(t.x=r.x+e*t.x,t.y=r.y+e*t.y)}}function dy(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function py(e,t,r,a,i){for(var n,o=e.children,c=-1,l=o.length,s=e.value&&(a-t)/e.value;++c<l;)(n=o[c]).y0=r,n.y1=i,n.x0=t,n.x1=t+=n.value*s}var yy={depth:-1},fy={},my={};function gy(e){return e.id}function by(e){return e.parentId}function vy(e){let t=e.length;if(t<2)return"";for(;--t>1&&!xy(e,t););return e.slice(0,t)}function xy(e,t){if("/"===e[t]){let r=0;for(;t>0&&"\\"===e[--t];)++r;if(!(1&r))return!0}return!1}function ky(e,t){return e.parent===t.parent?1:2}function wy(e){var t=e.children;return t?t[0]:e.t}function Cy(e){var t=e.children;return t?t[t.length-1]:e.t}function _y(e,t,r){var a=r/(t.i-e.i);t.c-=a,t.s+=r,e.c+=a,t.z+=r,t.m+=r}function Sy(e,t,r){return e.a.parent===t.parent?e.a:r}function Ay(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}function My(){var e=ky,t=1,r=1,a=null;function i(i){var l=function(e){for(var t,r,a,i,n,o=new Ay(e,0),c=[o];t=c.pop();)if(a=t._.children)for(t.children=new Array(n=a.length),i=n-1;i>=0;--i)c.push(r=t.children[i]=new Ay(a[i],i)),r.parent=t;return(o.parent=new Ay(null,0)).children=[o],o}(i);if(l.eachAfter(n),l.parent.m=-l.z,l.eachBefore(o),a)i.eachBefore(c);else{var s=i,u=i,h=i;i.eachBefore((function(e){e.x<s.x&&(s=e),e.x>u.x&&(u=e),e.depth>h.depth&&(h=e)}));var d=s===u?1:e(s,u)/2,p=d-s.x,y=t/(u.x+d+p),f=r/(h.depth||1);i.eachBefore((function(e){e.x=(e.x+p)*y,e.y=e.depth*f}))}return i}function n(t){var r=t.children,a=t.parent.children,i=t.i?a[t.i-1]:null;if(r){!function(e){for(var t,r=0,a=0,i=e.children,n=i.length;--n>=0;)(t=i[n]).z+=r,t.m+=r,r+=t.s+(a+=t.c)}(t);var n=(r[0].z+r[r.length-1].z)/2;i?(t.z=i.z+e(t._,i._),t.m=t.z-n):t.z=n}else i&&(t.z=i.z+e(t._,i._));t.parent.A=function(t,r,a){if(r){for(var i,n=t,o=t,c=r,l=n.parent.children[0],s=n.m,u=o.m,h=c.m,d=l.m;c=Cy(c),n=wy(n),c&&n;)l=wy(l),(o=Cy(o)).a=t,(i=c.z+h-n.z-s+e(c._,n._))>0&&(_y(Sy(c,t,a),t,i),s+=i,u+=i),h+=c.m,s+=n.m,d+=l.m,u+=o.m;c&&!Cy(o)&&(o.t=c,o.m+=h-u),n&&!wy(l)&&(l.t=n,l.m+=s-d,a=t)}return a}(t,i,t.parent.A||a[0])}function o(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function c(e){e.x*=t,e.y=e.depth*r}return i.separation=function(t){return arguments.length?(e=t,i):e},i.size=function(e){return arguments.length?(a=!1,t=+e[0],r=+e[1],i):a?null:[t,r]},i.nodeSize=function(e){return arguments.length?(a=!0,t=+e[0],r=+e[1],i):a?[t,r]:null},i}function Ty(e,t,r,a,i){for(var n,o=e.children,c=-1,l=o.length,s=e.value&&(i-r)/e.value;++c<l;)(n=o[c]).x0=t,n.x1=a,n.y0=r,n.y1=r+=n.value*s}Ay.prototype=Object.create(zp.prototype);var By=(1+Math.sqrt(5))/2;function Ly(e,t,r,a,i,n){for(var o,c,l,s,u,h,d,p,y,f,m,g=[],b=t.children,v=0,x=0,k=b.length,w=t.value;v<k;){l=i-r,s=n-a;do{u=b[x++].value}while(!u&&x<k);for(h=d=u,m=u*u*(f=Math.max(s/l,l/s)/(w*e)),y=Math.max(d/m,m/h);x<k;++x){if(u+=c=b[x].value,c<h&&(h=c),c>d&&(d=c),m=u*u*f,(p=Math.max(d/m,m/h))>y){u-=c;break}y=p}g.push(o={value:u,dice:l<s,children:b.slice(v,x)}),o.dice?py(o,r,a,i,w?a+=s*u/w:n):Ty(o,r,a,w?r+=l*u/w:i,n),w-=u,v=x}return g}var Ey=function e(t){function r(e,r,a,i,n){Ly(t,e,r,a,i,n)}return r.ratio=function(t){return e((t=+t)>1?t:1)},r}(By),Ry=function e(t){function r(e,r,a,i,n){if((o=e._squarify)&&o.ratio===t)for(var o,c,l,s,u,h=-1,d=o.length,p=e.value;++h<d;){for(l=(c=o[h]).children,s=c.value=0,u=l.length;s<u;++s)c.value+=l[s].value;c.dice?py(c,r,a,i,p?a+=(n-a)*c.value/p:n):Ty(c,r,a,p?r+=(i-r)*c.value/p:i,n),p-=c.value}else e._squarify=o=Ly(t,e,r,a,i,n),o.ratio=t}return r.ratio=function(t){return e((t=+t)>1?t:1)},r}(By);function Hy(e,t,r){return(t[0]-e[0])*(r[1]-e[1])-(t[1]-e[1])*(r[0]-e[0])}function Dy(e,t){return e[0]-t[0]||e[1]-t[1]}function Py(e){const t=e.length,r=[0,1];let a,i=2;for(a=2;a<t;++a){for(;i>1&&Hy(e[r[i-2]],e[r[i-1]],e[a])<=0;)--i;r[i++]=a}return r.slice(0,i)}var Ny=Math.random,Gy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,1===arguments.length?(r=e,e=0):r-=e,function(){return t()*r+e}}return r.source=e,r}(Ny),Iy=function e(t){function r(e,r){return arguments.length<2&&(r=e,e=0),e=Math.floor(e),r=Math.floor(r)-e,function(){return Math.floor(t()*r+e)}}return r.source=e,r}(Ny),Wy=function e(t){function r(e,r){var a,i;return e=null==e?0:+e,r=null==r?1:+r,function(){var n;if(null!=a)n=a,a=null;else do{a=2*t()-1,n=2*t()-1,i=a*a+n*n}while(!i||i>1);return e+r*n*Math.sqrt(-2*Math.log(i)/i)}}return r.source=e,r}(Ny),Fy=function e(t){var r=Wy.source(t);function a(){var e=r.apply(this,arguments);return function(){return Math.exp(e())}}return a.source=e,a}(Ny),Oy=function e(t){function r(e){return(e=+e)<=0?()=>0:function(){for(var r=0,a=e;a>1;--a)r+=t();return r+a*t()}}return r.source=e,r}(Ny),zy=function e(t){var r=Oy.source(t);function a(e){if(0==(e=+e))return t;var a=r(e);return function(){return a()/e}}return a.source=e,a}(Ny),Ky=function e(t){function r(e){return function(){return-Math.log1p(-t())/e}}return r.source=e,r}(Ny),Jy=function e(t){function r(e){if((e=+e)<0)throw new RangeError("invalid alpha");return e=1/-e,function(){return Math.pow(1-t(),e)}}return r.source=e,r}(Ny),Vy=function e(t){function r(e){if((e=+e)<0||e>1)throw new RangeError("invalid p");return function(){return Math.floor(t()+e)}}return r.source=e,r}(Ny),jy=function e(t){function r(e){if((e=+e)<0||e>1)throw new RangeError("invalid p");return 0===e?()=>1/0:1===e?()=>1:(e=Math.log1p(-e),function(){return 1+Math.floor(Math.log1p(-t())/e)})}return r.source=e,r}(Ny),Yy=function e(t){var r=Wy.source(t)();function a(e,a){if((e=+e)<0)throw new RangeError("invalid k");if(0===e)return()=>0;if(a=null==a?1:+a,1===e)return()=>-Math.log1p(-t())*a;var i=(e<1?e+1:e)-1/3,n=1/(3*Math.sqrt(i)),o=e<1?()=>Math.pow(t(),1/e):()=>1;return function(){do{do{var e=r(),c=1+n*e}while(c<=0);c*=c*c;var l=1-t()}while(l>=1-.0331*e*e*e*e&&Math.log(l)>=.5*e*e+i*(1-c+Math.log(c)));return i*c*o()*a}}return a.source=e,a}(Ny),$y=function e(t){var r=Yy.source(t);function a(e,t){var a=r(e),i=r(t);return function(){var e=a();return 0===e?0:e/(e+i())}}return a.source=e,a}(Ny),Uy=function e(t){var r=jy.source(t),a=$y.source(t);function i(e,t){return e=+e,(t=+t)>=1?()=>e:t<=0?()=>0:function(){for(var i=0,n=e,o=t;n*o>16&&n*(1-o)>16;){var c=Math.floor((n+1)*o),l=a(c,n-c+1)();l<=o?(i+=c,n-=c,o=(o-l)/(1-l)):(n=c-1,o/=l)}for(var s=o<.5,u=r(s?o:1-o),h=u(),d=0;h<=n;++d)h+=u();return i+(s?d:n-d)}}return i.source=e,i}(Ny),qy=function e(t){function r(e,r,a){var i;return 0==(e=+e)?i=e=>-Math.log(e):(e=1/e,i=t=>Math.pow(t,e)),r=null==r?0:+r,a=null==a?1:+a,function(){return r+a*i(-Math.log1p(-t()))}}return r.source=e,r}(Ny),Zy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*Math.tan(Math.PI*t())}}return r.source=e,r}(Ny),Qy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,function(){var a=t();return e+r*Math.log(a/(1-a))}}return r.source=e,r}(Ny),Xy=function e(t){var r=Yy.source(t),a=Uy.source(t);function i(e){return function(){for(var i=0,n=e;n>16;){var o=Math.floor(.875*n),c=r(o)();if(c>n)return i+a(o-1,n/c)();i+=o,n-=c}for(var l=-Math.log1p(-t()),s=0;l<=n;++s)l-=Math.log1p(-t());return i+s}}return i.source=e,i}(Ny);const ef=1/4294967296;function tf(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function rf(e,t){switch(arguments.length){case 0:break;case 1:"function"==typeof e?this.interpolator(e):this.range(e);break;default:this.domain(e),"function"==typeof t?this.interpolator(t):this.range(t)}return this}const af=Symbol("implicit");function nf(){var e=new F,t=[],r=[],a=af;function i(i){let n=e.get(i);if(void 0===n){if(a!==af)return a;e.set(i,n=t.push(i)-1)}return r[n%r.length]}return i.domain=function(r){if(!arguments.length)return t.slice();t=[],e=new F;for(const a of r)e.has(a)||e.set(a,t.push(a)-1);return i},i.range=function(e){return arguments.length?(r=Array.from(e),i):r.slice()},i.unknown=function(e){return arguments.length?(a=e,i):a},i.copy=function(){return nf(t,r).unknown(a)},tf.apply(i,arguments),i}function of(){var e,t,r=nf().unknown(void 0),a=r.domain,i=r.range,n=0,o=1,c=!1,l=0,s=0,u=.5;function h(){var r=a().length,h=o<n,d=h?o:n,p=h?n:o;e=(p-d)/Math.max(1,r-l+2*s),c&&(e=Math.floor(e)),d+=(p-d-e*(r-l))*u,t=e*(1-l),c&&(d=Math.round(d),t=Math.round(t));var y=Te(r).map((function(t){return d+e*t}));return i(h?y.reverse():y)}return delete r.unknown,r.domain=function(e){return arguments.length?(a(e),h()):a()},r.range=function(e){return arguments.length?([n,o]=e,n=+n,o=+o,h()):[n,o]},r.rangeRound=function(e){return[n,o]=e,n=+n,o=+o,c=!0,h()},r.bandwidth=function(){return t},r.step=function(){return e},r.round=function(e){return arguments.length?(c=!!e,h()):c},r.padding=function(e){return arguments.length?(l=Math.min(1,s=+e),h()):l},r.paddingInner=function(e){return arguments.length?(l=Math.min(1,e),h()):l},r.paddingOuter=function(e){return arguments.length?(s=+e,h()):s},r.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),h()):u},r.copy=function(){return of(a(),[n,o]).round(c).paddingInner(l).paddingOuter(s).align(u)},tf.apply(h(),arguments)}function cf(e){var t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=function(){return cf(t())},e}function lf(e){return+e}var sf=[0,1];function uf(e){return e}function hf(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:function(e){return function(){return e}}(isNaN(t)?NaN:.5)}function df(e,t,r){var a=e[0],i=e[1],n=t[0],o=t[1];return i<a?(a=hf(i,a),n=r(o,n)):(a=hf(a,i),n=r(n,o)),function(e){return n(a(e))}}function pf(e,t,r){var a=Math.min(e.length,t.length)-1,i=new Array(a),n=new Array(a),o=-1;for(e[a]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<a;)i[o]=hf(e[o],e[o+1]),n[o]=r(t[o],t[o+1]);return function(t){var r=C(e,t,1,a)-1;return n[r](i[r](t))}}function yf(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function ff(){var e,t,r,a,i,n,o=sf,c=sf,l=ni,s=uf;function u(){var e=Math.min(o.length,c.length);return s!==uf&&(s=function(e,t){var r;return e>t&&(r=e,e=t,t=r),function(r){return Math.max(e,Math.min(t,r))}}(o[0],o[e-1])),a=e>2?pf:df,i=n=null,h}function h(t){return null==t||isNaN(t=+t)?r:(i||(i=a(o.map(e),c,l)))(e(s(t)))}return h.invert=function(r){return s(t((n||(n=a(c,o.map(e),ei)))(r)))},h.domain=function(e){return arguments.length?(o=Array.from(e,lf),u()):o.slice()},h.range=function(e){return arguments.length?(c=Array.from(e),u()):c.slice()},h.rangeRound=function(e){return c=Array.from(e),l=oi,u()},h.clamp=function(e){return arguments.length?(s=!!e||uf,u()):s!==uf},h.interpolate=function(e){return arguments.length?(l=e,u()):l},h.unknown=function(e){return arguments.length?(r=e,h):r},function(r,a){return e=r,t=a,u()}}function mf(){return ff()(uf,uf)}function gf(e,t,r,a){var i,n=de(e,t,r);switch((a=jl(null==a?",f":a)).type){case"s":var o=Math.max(Math.abs(e),Math.abs(t));return null!=a.precision||isNaN(i=ns(n,o))||(a.precision=i),Xl(a,o);case"":case"e":case"g":case"p":case"r":null!=a.precision||isNaN(i=os(n,Math.max(Math.abs(e),Math.abs(t))))||(a.precision=i-("e"===a.type));break;case"f":case"%":null!=a.precision||isNaN(i=is(n))||(a.precision=i-2*("%"===a.type))}return Ql(a)}function bf(e){var t=e.domain;return e.ticks=function(e){var r=t();return ue(r[0],r[r.length-1],null==e?10:e)},e.tickFormat=function(e,r){var a=t();return gf(a[0],a[a.length-1],null==e?10:e,r)},e.nice=function(r){null==r&&(r=10);var a,i,n=t(),o=0,c=n.length-1,l=n[o],s=n[c],u=10;for(s<l&&(i=l,l=s,s=i,i=o,o=c,c=i);u-- >0;){if((i=he(l,s,r))===a)return n[o]=l,n[c]=s,t(n);if(i>0)l=Math.floor(l/i)*i,s=Math.ceil(s/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,s=Math.floor(s*i)/i}a=i}return e},e}function vf(e,t){var r,a=0,i=(e=e.slice()).length-1,n=e[a],o=e[i];return o<n&&(r=a,a=i,i=r,r=n,n=o,o=r),e[a]=t.floor(n),e[i]=t.ceil(o),e}function xf(e){return Math.log(e)}function kf(e){return Math.exp(e)}function wf(e){return-Math.log(-e)}function Cf(e){return-Math.exp(-e)}function _f(e){return isFinite(e)?+("1e"+e):e<0?0:e}function Sf(e){return(t,r)=>-e(-t,r)}function Af(e){const t=e(xf,kf),r=t.domain;let a,i,n=10;function o(){return a=function(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}(n),i=function(e){return 10===e?_f:e===Math.E?Math.exp:t=>Math.pow(e,t)}(n),r()[0]<0?(a=Sf(a),i=Sf(i),e(wf,Cf)):e(xf,kf),t}return t.base=function(e){return arguments.length?(n=+e,o()):n},t.domain=function(e){return arguments.length?(r(e),o()):r()},t.ticks=e=>{const t=r();let o=t[0],c=t[t.length-1];const l=c<o;l&&([o,c]=[c,o]);let s,u,h=a(o),d=a(c);const p=null==e?10:+e;let y=[];if(!(n%1)&&d-h<p){if(h=Math.floor(h),d=Math.ceil(d),o>0){for(;h<=d;++h)for(s=1;s<n;++s)if(u=h<0?s/i(-h):s*i(h),!(u<o)){if(u>c)break;y.push(u)}}else for(;h<=d;++h)for(s=n-1;s>=1;--s)if(u=h>0?s/i(-h):s*i(h),!(u<o)){if(u>c)break;y.push(u)}2*y.length<p&&(y=ue(o,c,p))}else y=ue(h,d,Math.min(d-h,p)).map(i);return l?y.reverse():y},t.tickFormat=(e,r)=>{if(null==e&&(e=10),null==r&&(r=10===n?"s":","),"function"!=typeof r&&(n%1||null!=(r=jl(r)).precision||(r.trim=!0),r=Ql(r)),e===1/0)return r;const o=Math.max(1,n*e/t.ticks().length);return e=>{let t=e/i(Math.round(a(e)));return t*n<n-.5&&(t*=n),t<=o?r(e):""}},t.nice=()=>r(vf(r(),{floor:e=>i(Math.floor(a(e))),ceil:e=>i(Math.ceil(a(e)))})),t}function Mf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Tf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Bf(e){var t=1,r=e(Mf(t),Tf(t));return r.constant=function(r){return arguments.length?e(Mf(t=+r),Tf(t)):t},bf(r)}function Lf(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Ef(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function Rf(e){return e<0?-e*e:e*e}function Hf(e){var t=e(uf,uf),r=1;return t.exponent=function(t){return arguments.length?1==(r=+t)?e(uf,uf):.5===r?e(Ef,Rf):e(Lf(r),Lf(1/r)):r},bf(t)}function Df(){var e=Hf(ff());return e.copy=function(){return yf(e,Df()).exponent(e.exponent())},tf.apply(e,arguments),e}function Pf(e){return Math.sign(e)*e*e}const Nf=new Date,Gf=new Date;function If(e,t,r,a){function i(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=r=>(e(r=new Date(r-1)),t(r,1),e(r),r),i.round=e=>{const t=i(e),r=i.ceil(e);return e-t<r-e?t:r},i.offset=(e,r)=>(t(e=new Date(+e),null==r?1:Math.floor(r)),e),i.range=(r,a,n)=>{const o=[];if(r=i.ceil(r),n=null==n?1:Math.floor(n),!(r<a&&n>0))return o;let c;do{o.push(c=new Date(+r)),t(r,n),e(r)}while(c<r&&r<a);return o},i.filter=r=>If((t=>{if(t>=t)for(;e(t),!r(t);)t.setTime(t-1)}),((e,a)=>{if(e>=e)if(a<0)for(;++a<=0;)for(;t(e,-1),!r(e););else for(;--a>=0;)for(;t(e,1),!r(e););})),r&&(i.count=(t,a)=>(Nf.setTime(+t),Gf.setTime(+a),e(Nf),e(Gf),Math.floor(r(Nf,Gf))),i.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?i.filter(a?t=>a(t)%e==0:t=>i.count(0,t)%e==0):i:null)),i}const Wf=If((()=>{}),((e,t)=>{e.setTime(+e+t)}),((e,t)=>t-e));Wf.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?If((t=>{t.setTime(Math.floor(t/e)*e)}),((t,r)=>{t.setTime(+t+r*e)}),((t,r)=>(r-t)/e)):Wf:null);const Ff=Wf.range,Of=1e3,zf=6e4,Kf=36e5,Jf=864e5,Vf=6048e5,jf=31536e6,Yf=If((e=>{e.setTime(e-e.getMilliseconds())}),((e,t)=>{e.setTime(+e+t*Of)}),((e,t)=>(t-e)/Of),(e=>e.getUTCSeconds())),$f=Yf.range,Uf=If((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Of)}),((e,t)=>{e.setTime(+e+t*zf)}),((e,t)=>(t-e)/zf),(e=>e.getMinutes())),qf=Uf.range,Zf=If((e=>{e.setUTCSeconds(0,0)}),((e,t)=>{e.setTime(+e+t*zf)}),((e,t)=>(t-e)/zf),(e=>e.getUTCMinutes())),Qf=Zf.range,Xf=If((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Of-e.getMinutes()*zf)}),((e,t)=>{e.setTime(+e+t*Kf)}),((e,t)=>(t-e)/Kf),(e=>e.getHours())),em=Xf.range,tm=If((e=>{e.setUTCMinutes(0,0,0)}),((e,t)=>{e.setTime(+e+t*Kf)}),((e,t)=>(t-e)/Kf),(e=>e.getUTCHours())),rm=tm.range,am=If((e=>e.setHours(0,0,0,0)),((e,t)=>e.setDate(e.getDate()+t)),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*zf)/Jf),(e=>e.getDate()-1)),im=am.range,nm=If((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/Jf),(e=>e.getUTCDate()-1)),om=nm.range,cm=If((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/Jf),(e=>Math.floor(e/Jf))),lm=cm.range;function sm(e){return If((t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),((e,t)=>{e.setDate(e.getDate()+7*t)}),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*zf)/Vf))}const um=sm(0),hm=sm(1),dm=sm(2),pm=sm(3),ym=sm(4),fm=sm(5),mm=sm(6),gm=um.range,bm=hm.range,vm=dm.range,xm=pm.range,km=ym.range,wm=fm.range,Cm=mm.range;function _m(e){return If((t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)}),((e,t)=>(t-e)/Vf))}const Sm=_m(0),Am=_m(1),Mm=_m(2),Tm=_m(3),Bm=_m(4),Lm=_m(5),Em=_m(6),Rm=Sm.range,Hm=Am.range,Dm=Mm.range,Pm=Tm.range,Nm=Bm.range,Gm=Lm.range,Im=Em.range,Wm=If((e=>{e.setDate(1),e.setHours(0,0,0,0)}),((e,t)=>{e.setMonth(e.getMonth()+t)}),((e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())),(e=>e.getMonth())),Fm=Wm.range,Om=If((e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)}),((e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())),(e=>e.getUTCMonth())),zm=Om.range,Km=If((e=>{e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,t)=>{e.setFullYear(e.getFullYear()+t)}),((e,t)=>t.getFullYear()-e.getFullYear()),(e=>e.getFullYear()));Km.every=e=>isFinite(e=Math.floor(e))&&e>0?If((t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,r)=>{t.setFullYear(t.getFullYear()+r*e)})):null;const Jm=Km.range,Vm=If((e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)}),((e,t)=>t.getUTCFullYear()-e.getUTCFullYear()),(e=>e.getUTCFullYear()));Vm.every=e=>isFinite(e=Math.floor(e))&&e>0?If((t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)})):null;const jm=Vm.range;function Ym(e,t,r,a,i,n){const o=[[Yf,1,Of],[Yf,5,5e3],[Yf,15,15e3],[Yf,30,3e4],[n,1,zf],[n,5,3e5],[n,15,9e5],[n,30,18e5],[i,1,Kf],[i,3,108e5],[i,6,216e5],[i,12,432e5],[a,1,Jf],[a,2,1728e5],[r,1,Vf],[t,1,2592e6],[t,3,7776e6],[e,1,jf]];function c(t,r,a){const i=Math.abs(r-t)/a,n=v((([,,e])=>e)).right(o,i);if(n===o.length)return e.every(de(t/jf,r/jf,a));if(0===n)return Wf.every(Math.max(de(t,r,a),1));const[c,l]=o[i/o[n-1][2]<o[n][2]/i?n-1:n];return c.every(l)}return[function(e,t,r){const a=t<e;a&&([e,t]=[t,e]);const i=r&&"function"==typeof r.range?r:c(e,t,r),n=i?i.range(e,+t+1):[];return a?n.reverse():n},c]}const[$m,Um]=Ym(Vm,Om,Sm,cm,tm,Zf),[qm,Zm]=Ym(Km,Wm,um,am,Xf,Uf);function Qm(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Xm(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function eg(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function tg(e){var t=e.dateTime,r=e.date,a=e.time,i=e.periods,n=e.days,o=e.shortDays,c=e.months,l=e.shortMonths,s=pg(i),u=yg(i),h=pg(n),d=yg(n),p=pg(o),y=yg(o),f=pg(c),m=yg(c),g=pg(l),b=yg(l),v={a:function(e){return o[e.getDay()]},A:function(e){return n[e.getDay()]},b:function(e){return l[e.getMonth()]},B:function(e){return c[e.getMonth()]},c:null,d:Pg,e:Pg,f:Fg,g:Zg,G:Xg,H:Ng,I:Gg,j:Ig,L:Wg,m:Og,M:zg,p:function(e){return i[+(e.getHours()>=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:wb,s:Cb,S:Kg,u:Jg,U:Vg,V:Yg,w:$g,W:Ug,x:null,X:null,y:qg,Y:Qg,Z:eb,"%":kb},x={a:function(e){return o[e.getUTCDay()]},A:function(e){return n[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return c[e.getUTCMonth()]},c:null,d:tb,e:tb,f:ob,g:gb,G:vb,H:rb,I:ab,j:ib,L:nb,m:cb,M:lb,p:function(e){return i[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:wb,s:Cb,S:sb,u:ub,U:hb,V:pb,w:yb,W:fb,x:null,X:null,y:mb,Y:bb,Z:xb,"%":kb},k={a:function(e,t,r){var a=p.exec(t.slice(r));return a?(e.w=y.get(a[0].toLowerCase()),r+a[0].length):-1},A:function(e,t,r){var a=h.exec(t.slice(r));return a?(e.w=d.get(a[0].toLowerCase()),r+a[0].length):-1},b:function(e,t,r){var a=g.exec(t.slice(r));return a?(e.m=b.get(a[0].toLowerCase()),r+a[0].length):-1},B:function(e,t,r){var a=f.exec(t.slice(r));return a?(e.m=m.get(a[0].toLowerCase()),r+a[0].length):-1},c:function(e,r,a){return _(e,t,r,a)},d:Sg,e:Sg,f:Eg,g:kg,G:xg,H:Mg,I:Mg,j:Ag,L:Lg,m:_g,M:Tg,p:function(e,t,r){var a=s.exec(t.slice(r));return a?(e.p=u.get(a[0].toLowerCase()),r+a[0].length):-1},q:Cg,Q:Hg,s:Dg,S:Bg,u:mg,U:gg,V:bg,w:fg,W:vg,x:function(e,t,a){return _(e,r,t,a)},X:function(e,t,r){return _(e,a,t,r)},y:kg,Y:xg,Z:wg,"%":Rg};function w(e,t){return function(r){var a,i,n,o=[],c=-1,l=0,s=e.length;for(r instanceof Date||(r=new Date(+r));++c<s;)37===e.charCodeAt(c)&&(o.push(e.slice(l,c)),null!=(i=cg[a=e.charAt(++c)])?a=e.charAt(++c):i="e"===a?" ":"0",(n=t[a])&&(a=n(r,i)),o.push(a),l=c+1);return o.push(e.slice(l,c)),o.join("")}}function C(e,t){return function(r){var a,i,n=eg(1900,void 0,1);if(_(n,e,r+="",0)!=r.length)return null;if("Q"in n)return new Date(n.Q);if("s"in n)return new Date(1e3*n.s+("L"in n?n.L:0));if(t&&!("Z"in n)&&(n.Z=0),"p"in n&&(n.H=n.H%12+12*n.p),void 0===n.m&&(n.m="q"in n?n.q:0),"V"in n){if(n.V<1||n.V>53)return null;"w"in n||(n.w=1),"Z"in n?(i=(a=Xm(eg(n.y,0,1))).getUTCDay(),a=i>4||0===i?Am.ceil(a):Am(a),a=nm.offset(a,7*(n.V-1)),n.y=a.getUTCFullYear(),n.m=a.getUTCMonth(),n.d=a.getUTCDate()+(n.w+6)%7):(i=(a=Qm(eg(n.y,0,1))).getDay(),a=i>4||0===i?hm.ceil(a):hm(a),a=am.offset(a,7*(n.V-1)),n.y=a.getFullYear(),n.m=a.getMonth(),n.d=a.getDate()+(n.w+6)%7)}else("W"in n||"U"in n)&&("w"in n||(n.w="u"in n?n.u%7:"W"in n?1:0),i="Z"in n?Xm(eg(n.y,0,1)).getUTCDay():Qm(eg(n.y,0,1)).getDay(),n.m=0,n.d="W"in n?(n.w+6)%7+7*n.W-(i+5)%7:n.w+7*n.U-(i+6)%7);return"Z"in n?(n.H+=n.Z/100|0,n.M+=n.Z%100,Xm(n)):Qm(n)}}function _(e,t,r,a){for(var i,n,o=0,c=t.length,l=r.length;o<c;){if(a>=l)return-1;if(37===(i=t.charCodeAt(o++))){if(i=t.charAt(o++),!(n=k[i in cg?t.charAt(o++):i])||(a=n(e,r,a))<0)return-1}else if(i!=r.charCodeAt(a++))return-1}return a}return v.x=w(r,v),v.X=w(a,v),v.c=w(t,v),x.x=w(r,x),x.X=w(a,x),x.c=w(t,x),{format:function(e){var t=w(e+="",v);return t.toString=function(){return e},t},parse:function(e){var t=C(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=w(e+="",x);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+="",!0);return t.toString=function(){return e},t}}}var rg,ag,ig,ng,og,cg={"-":"",_:" ",0:"0"},lg=/^\s*\d+/,sg=/^%/,ug=/[\\^$*+?|[\]().{}]/g;function hg(e,t,r){var a=e<0?"-":"",i=(a?-e:e)+"",n=i.length;return a+(n<r?new Array(r-n+1).join(t)+i:i)}function dg(e){return e.replace(ug,"\\$&")}function pg(e){return new RegExp("^(?:"+e.map(dg).join("|")+")","i")}function yg(e){return new Map(e.map(((e,t)=>[e.toLowerCase(),t])))}function fg(e,t,r){var a=lg.exec(t.slice(r,r+1));return a?(e.w=+a[0],r+a[0].length):-1}function mg(e,t,r){var a=lg.exec(t.slice(r,r+1));return a?(e.u=+a[0],r+a[0].length):-1}function gg(e,t,r){var a=lg.exec(t.slice(r,r+2));return a?(e.U=+a[0],r+a[0].length):-1}function bg(e,t,r){var a=lg.exec(t.slice(r,r+2));return a?(e.V=+a[0],r+a[0].length):-1}function vg(e,t,r){var a=lg.exec(t.slice(r,r+2));return a?(e.W=+a[0],r+a[0].length):-1}function xg(e,t,r){var a=lg.exec(t.slice(r,r+4));return a?(e.y=+a[0],r+a[0].length):-1}function kg(e,t,r){var a=lg.exec(t.slice(r,r+2));return a?(e.y=+a[0]+(+a[0]>68?1900:2e3),r+a[0].length):-1}function wg(e,t,r){var a=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return a?(e.Z=a[1]?0:-(a[2]+(a[3]||"00")),r+a[0].length):-1}function Cg(e,t,r){var a=lg.exec(t.slice(r,r+1));return a?(e.q=3*a[0]-3,r+a[0].length):-1}function _g(e,t,r){var a=lg.exec(t.slice(r,r+2));return a?(e.m=a[0]-1,r+a[0].length):-1}function Sg(e,t,r){var a=lg.exec(t.slice(r,r+2));return a?(e.d=+a[0],r+a[0].length):-1}function Ag(e,t,r){var a=lg.exec(t.slice(r,r+3));return a?(e.m=0,e.d=+a[0],r+a[0].length):-1}function Mg(e,t,r){var a=lg.exec(t.slice(r,r+2));return a?(e.H=+a[0],r+a[0].length):-1}function Tg(e,t,r){var a=lg.exec(t.slice(r,r+2));return a?(e.M=+a[0],r+a[0].length):-1}function Bg(e,t,r){var a=lg.exec(t.slice(r,r+2));return a?(e.S=+a[0],r+a[0].length):-1}function Lg(e,t,r){var a=lg.exec(t.slice(r,r+3));return a?(e.L=+a[0],r+a[0].length):-1}function Eg(e,t,r){var a=lg.exec(t.slice(r,r+6));return a?(e.L=Math.floor(a[0]/1e3),r+a[0].length):-1}function Rg(e,t,r){var a=sg.exec(t.slice(r,r+1));return a?r+a[0].length:-1}function Hg(e,t,r){var a=lg.exec(t.slice(r));return a?(e.Q=+a[0],r+a[0].length):-1}function Dg(e,t,r){var a=lg.exec(t.slice(r));return a?(e.s=+a[0],r+a[0].length):-1}function Pg(e,t){return hg(e.getDate(),t,2)}function Ng(e,t){return hg(e.getHours(),t,2)}function Gg(e,t){return hg(e.getHours()%12||12,t,2)}function Ig(e,t){return hg(1+am.count(Km(e),e),t,3)}function Wg(e,t){return hg(e.getMilliseconds(),t,3)}function Fg(e,t){return Wg(e,t)+"000"}function Og(e,t){return hg(e.getMonth()+1,t,2)}function zg(e,t){return hg(e.getMinutes(),t,2)}function Kg(e,t){return hg(e.getSeconds(),t,2)}function Jg(e){var t=e.getDay();return 0===t?7:t}function Vg(e,t){return hg(um.count(Km(e)-1,e),t,2)}function jg(e){var t=e.getDay();return t>=4||0===t?ym(e):ym.ceil(e)}function Yg(e,t){return e=jg(e),hg(ym.count(Km(e),e)+(4===Km(e).getDay()),t,2)}function $g(e){return e.getDay()}function Ug(e,t){return hg(hm.count(Km(e)-1,e),t,2)}function qg(e,t){return hg(e.getFullYear()%100,t,2)}function Zg(e,t){return hg((e=jg(e)).getFullYear()%100,t,2)}function Qg(e,t){return hg(e.getFullYear()%1e4,t,4)}function Xg(e,t){var r=e.getDay();return hg((e=r>=4||0===r?ym(e):ym.ceil(e)).getFullYear()%1e4,t,4)}function eb(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+hg(t/60|0,"0",2)+hg(t%60,"0",2)}function tb(e,t){return hg(e.getUTCDate(),t,2)}function rb(e,t){return hg(e.getUTCHours(),t,2)}function ab(e,t){return hg(e.getUTCHours()%12||12,t,2)}function ib(e,t){return hg(1+nm.count(Vm(e),e),t,3)}function nb(e,t){return hg(e.getUTCMilliseconds(),t,3)}function ob(e,t){return nb(e,t)+"000"}function cb(e,t){return hg(e.getUTCMonth()+1,t,2)}function lb(e,t){return hg(e.getUTCMinutes(),t,2)}function sb(e,t){return hg(e.getUTCSeconds(),t,2)}function ub(e){var t=e.getUTCDay();return 0===t?7:t}function hb(e,t){return hg(Sm.count(Vm(e)-1,e),t,2)}function db(e){var t=e.getUTCDay();return t>=4||0===t?Bm(e):Bm.ceil(e)}function pb(e,t){return e=db(e),hg(Bm.count(Vm(e),e)+(4===Vm(e).getUTCDay()),t,2)}function yb(e){return e.getUTCDay()}function fb(e,t){return hg(Am.count(Vm(e)-1,e),t,2)}function mb(e,t){return hg(e.getUTCFullYear()%100,t,2)}function gb(e,t){return hg((e=db(e)).getUTCFullYear()%100,t,2)}function bb(e,t){return hg(e.getUTCFullYear()%1e4,t,4)}function vb(e,t){var r=e.getUTCDay();return hg((e=r>=4||0===r?Bm(e):Bm.ceil(e)).getUTCFullYear()%1e4,t,4)}function xb(){return"+0000"}function kb(){return"%"}function wb(e){return+e}function Cb(e){return Math.floor(+e/1e3)}function _b(e){return rg=tg(e),ag=rg.format,ig=rg.parse,ng=rg.utcFormat,og=rg.utcParse,rg}_b({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Sb="%Y-%m-%dT%H:%M:%S.%LZ",Ab=Date.prototype.toISOString?function(e){return e.toISOString()}:ng(Sb),Mb=+new Date("2000-01-01T00:00:00.000Z")?function(e){var t=new Date(e);return isNaN(t)?null:t}:og(Sb);function Tb(e){return new Date(e)}function Bb(e){return e instanceof Date?+e:+new Date(+e)}function Lb(e,t,r,a,i,n,o,c,l,s){var u=mf(),h=u.invert,d=u.domain,p=s(".%L"),y=s(":%S"),f=s("%I:%M"),m=s("%I %p"),g=s("%a %d"),b=s("%b %d"),v=s("%B"),x=s("%Y");function k(e){return(l(e)<e?p:c(e)<e?y:o(e)<e?f:n(e)<e?m:a(e)<e?i(e)<e?g:b:r(e)<e?v:x)(e)}return u.invert=function(e){return new Date(h(e))},u.domain=function(e){return arguments.length?d(Array.from(e,Bb)):d().map(Tb)},u.ticks=function(t){var r=d();return e(r[0],r[r.length-1],null==t?10:t)},u.tickFormat=function(e,t){return null==t?k:s(t)},u.nice=function(e){var r=d();return e&&"function"==typeof e.range||(e=t(r[0],r[r.length-1],null==e?10:e)),e?d(vf(r,e)):u},u.copy=function(){return yf(u,Lb(e,t,r,a,i,n,o,c,l,s))},u}function Eb(){var e,t,r,a,i,n=0,o=1,c=uf,l=!1;function s(t){return null==t||isNaN(t=+t)?i:c(0===r?.5:(t=(a(t)-e)*r,l?Math.max(0,Math.min(1,t)):t))}function u(e){return function(t){var r,a;return arguments.length?([r,a]=t,c=e(r,a),s):[c(0),c(1)]}}return s.domain=function(i){return arguments.length?([n,o]=i,e=a(n=+n),t=a(o=+o),r=e===t?0:1/(t-e),s):[n,o]},s.clamp=function(e){return arguments.length?(l=!!e,s):l},s.interpolator=function(e){return arguments.length?(c=e,s):c},s.range=u(ni),s.rangeRound=u(oi),s.unknown=function(e){return arguments.length?(i=e,s):i},function(i){return a=i,e=i(n),t=i(o),r=e===t?0:1/(t-e),s}}function Rb(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function Hb(){var e=Hf(Eb());return e.copy=function(){return Rb(e,Hb()).exponent(e.exponent())},rf.apply(e,arguments)}function Db(){var e,t,r,a,i,n,o,c=0,l=.5,s=1,u=1,h=uf,d=!1;function p(e){return isNaN(e=+e)?o:(e=.5+((e=+n(e))-t)*(u*e<u*t?a:i),h(d?Math.max(0,Math.min(1,e)):e))}function y(e){return function(t){var r,a,i;return arguments.length?([r,a,i]=t,h=Si(e,[r,a,i]),p):[h(0),h(.5),h(1)]}}return p.domain=function(o){return arguments.length?([c,l,s]=o,e=n(c=+c),t=n(l=+l),r=n(s=+s),a=e===t?0:.5/(t-e),i=t===r?0:.5/(r-t),u=t<e?-1:1,p):[c,l,s]},p.clamp=function(e){return arguments.length?(d=!!e,p):d},p.interpolator=function(e){return arguments.length?(h=e,p):h},p.range=y(ni),p.rangeRound=y(oi),p.unknown=function(e){return arguments.length?(o=e,p):o},function(o){return n=o,e=o(c),t=o(l),r=o(s),a=e===t?0:.5/(t-e),i=t===r?0:.5/(r-t),u=t<e?-1:1,p}}function Pb(){var e=Hf(Db());return e.copy=function(){return Rb(e,Pb()).exponent(e.exponent())},rf.apply(e,arguments)}function Nb(e){for(var t=e.length/6|0,r=new Array(t),a=0;a<t;)r[a]="#"+e.slice(6*a,6*++a);return r}var Gb=Nb("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),Ib=Nb("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),Wb=Nb("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),Fb=Nb("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"),Ob=Nb("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),zb=Nb("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),Kb=Nb("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),Jb=Nb("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),Vb=Nb("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),jb=Nb("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),Yb=Nb("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),$b=e=>$a(e[e.length-1]),Ub=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Nb),qb=$b(Ub),Zb=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Nb),Qb=$b(Zb),Xb=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Nb),ev=$b(Xb),tv=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Nb),rv=$b(tv),av=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Nb),iv=$b(av),nv=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Nb),ov=$b(nv),cv=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Nb),lv=$b(cv),sv=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Nb),uv=$b(sv),hv=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Nb),dv=$b(hv),pv=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Nb),yv=$b(pv),fv=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Nb),mv=$b(fv),gv=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Nb),bv=$b(gv),vv=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Nb),xv=$b(vv),kv=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Nb),wv=$b(kv),Cv=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Nb),_v=$b(Cv),Sv=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Nb),Av=$b(Sv),Mv=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Nb),Tv=$b(Mv),Bv=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Nb),Lv=$b(Bv),Ev=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Nb),Rv=$b(Ev),Hv=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Nb),Dv=$b(Hv),Pv=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Nb),Nv=$b(Pv),Gv=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Nb),Iv=$b(Gv),Wv=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Nb),Fv=$b(Wv),Ov=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Nb),zv=$b(Ov),Kv=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Nb),Jv=$b(Kv),Vv=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Nb),jv=$b(Vv),Yv=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Nb),$v=$b(Yv),Uv=_i(Ga(300,.5,0),Ga(-240,.5,1)),qv=_i(Ga(-100,.75,.35),Ga(80,1.5,.8)),Zv=_i(Ga(260,.75,.35),Ga(80,1.5,.8)),Qv=Ga(),Xv=Ur(),ex=Math.PI/3,tx=2*Math.PI/3;function rx(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var ax=rx(Nb("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),ix=rx(Nb("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),nx=rx(Nb("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),ox=rx(Nb("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function cx(e){return function(){return e}}const lx=Math.abs,sx=Math.atan2,ux=Math.cos,hx=Math.max,dx=Math.min,px=Math.sin,yx=Math.sqrt,fx=1e-12,mx=Math.PI,gx=mx/2,bx=2*mx;function vx(e){return e>=1?gx:e<=-1?-gx:Math.asin(e)}function xx(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(null==r)t=null;else{const e=Math.floor(r);if(!(e>=0))throw new RangeError(`invalid digits: ${r}`);t=e}return e},()=>new Fo(t)}function kx(e){return e.innerRadius}function wx(e){return e.outerRadius}function Cx(e){return e.startAngle}function _x(e){return e.endAngle}function Sx(e){return e&&e.padAngle}function Ax(e,t,r,a,i,n,o){var c=e-r,l=t-a,s=(o?n:-n)/yx(c*c+l*l),u=s*l,h=-s*c,d=e+u,p=t+h,y=r+u,f=a+h,m=(d+y)/2,g=(p+f)/2,b=y-d,v=f-p,x=b*b+v*v,k=i-n,w=d*f-y*p,C=(v<0?-1:1)*yx(hx(0,k*k*x-w*w)),_=(w*v-b*C)/x,S=(-w*b-v*C)/x,A=(w*v+b*C)/x,M=(-w*b+v*C)/x,T=_-m,B=S-g,L=A-m,E=M-g;return T*T+B*B>L*L+E*E&&(_=A,S=M),{cx:_,cy:S,x01:-u,y01:-h,x11:_*(i/k-1),y11:S*(i/k-1)}}var Mx=Array.prototype.slice;function Tx(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function Bx(e){this._context=e}function Lx(e){return new Bx(e)}function Ex(e){return e[0]}function Rx(e){return e[1]}function Hx(e,t){var r=cx(!0),a=null,i=Lx,n=null,o=xx(c);function c(c){var l,s,u,h=(c=Tx(c)).length,d=!1;for(null==a&&(n=i(u=o())),l=0;l<=h;++l)!(l<h&&r(s=c[l],l,c))===d&&((d=!d)?n.lineStart():n.lineEnd()),d&&n.point(+e(s,l,c),+t(s,l,c));if(u)return n=null,u+""||null}return e="function"==typeof e?e:void 0===e?Ex:cx(e),t="function"==typeof t?t:void 0===t?Rx:cx(t),c.x=function(t){return arguments.length?(e="function"==typeof t?t:cx(+t),c):e},c.y=function(e){return arguments.length?(t="function"==typeof e?e:cx(+e),c):t},c.defined=function(e){return arguments.length?(r="function"==typeof e?e:cx(!!e),c):r},c.curve=function(e){return arguments.length?(i=e,null!=a&&(n=i(a)),c):i},c.context=function(e){return arguments.length?(null==e?a=n=null:n=i(a=e),c):a},c}function Dx(e,t,r){var a=null,i=cx(!0),n=null,o=Lx,c=null,l=xx(s);function s(s){var u,h,d,p,y,f=(s=Tx(s)).length,m=!1,g=new Array(f),b=new Array(f);for(null==n&&(c=o(y=l())),u=0;u<=f;++u){if(!(u<f&&i(p=s[u],u,s))===m)if(m=!m)h=u,c.areaStart(),c.lineStart();else{for(c.lineEnd(),c.lineStart(),d=u-1;d>=h;--d)c.point(g[d],b[d]);c.lineEnd(),c.areaEnd()}m&&(g[u]=+e(p,u,s),b[u]=+t(p,u,s),c.point(a?+a(p,u,s):g[u],r?+r(p,u,s):b[u]))}if(y)return c=null,y+""||null}function u(){return Hx().defined(i).curve(o).context(n)}return e="function"==typeof e?e:void 0===e?Ex:cx(+e),t="function"==typeof t?t:cx(void 0===t?0:+t),r="function"==typeof r?r:void 0===r?Rx:cx(+r),s.x=function(t){return arguments.length?(e="function"==typeof t?t:cx(+t),a=null,s):e},s.x0=function(t){return arguments.length?(e="function"==typeof t?t:cx(+t),s):e},s.x1=function(e){return arguments.length?(a=null==e?null:"function"==typeof e?e:cx(+e),s):a},s.y=function(e){return arguments.length?(t="function"==typeof e?e:cx(+e),r=null,s):t},s.y0=function(e){return arguments.length?(t="function"==typeof e?e:cx(+e),s):t},s.y1=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:cx(+e),s):r},s.lineX0=s.lineY0=function(){return u().x(e).y(t)},s.lineY1=function(){return u().x(e).y(r)},s.lineX1=function(){return u().x(a).y(t)},s.defined=function(e){return arguments.length?(i="function"==typeof e?e:cx(!!e),s):i},s.curve=function(e){return arguments.length?(o=e,null!=n&&(c=o(n)),s):o},s.context=function(e){return arguments.length?(null==e?n=c=null:c=o(n=e),s):n},s}function Px(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}function Nx(e){return e}Bx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};var Gx=Wx(Lx);function Ix(e){this._curve=e}function Wx(e){function t(t){return new Ix(e(t))}return t._curve=e,t}function Fx(e){var t=e.curve;return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e.curve=function(e){return arguments.length?t(Wx(e)):t()._curve},e}function Ox(){return Fx(Hx().curve(Gx))}function zx(){var e=Dx().curve(Gx),t=e.curve,r=e.lineX0,a=e.lineX1,i=e.lineY0,n=e.lineY1;return e.angle=e.x,delete e.x,e.startAngle=e.x0,delete e.x0,e.endAngle=e.x1,delete e.x1,e.radius=e.y,delete e.y,e.innerRadius=e.y0,delete e.y0,e.outerRadius=e.y1,delete e.y1,e.lineStartAngle=function(){return Fx(r())},delete e.lineX0,e.lineEndAngle=function(){return Fx(a())},delete e.lineX1,e.lineInnerRadius=function(){return Fx(i())},delete e.lineY0,e.lineOuterRadius=function(){return Fx(n())},delete e.lineY1,e.curve=function(e){return arguments.length?t(Wx(e)):t()._curve},e}function Kx(e,t){return[(t=+t)*Math.cos(e-=Math.PI/2),t*Math.sin(e)]}Ix.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(e,t){this._curve.point(t*Math.sin(e),t*-Math.cos(e))}};class Jx{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t)}this._x0=e,this._y0=t}}class Vx{constructor(e){this._context=e}lineStart(){this._point=0}lineEnd(){}point(e,t){if(e=+e,t=+t,0===this._point)this._point=1;else{const r=Kx(this._x0,this._y0),a=Kx(this._x0,this._y0=(this._y0+t)/2),i=Kx(e,this._y0),n=Kx(e,t);this._context.moveTo(...r),this._context.bezierCurveTo(...a,...i,...n)}this._x0=e,this._y0=t}}function jx(e){return new Jx(e,!0)}function Yx(e){return new Jx(e,!1)}function $x(e){return new Vx(e)}function Ux(e){return e.source}function qx(e){return e.target}function Zx(e){let t=Ux,r=qx,a=Ex,i=Rx,n=null,o=null,c=xx(l);function l(){let l;const s=Mx.call(arguments),u=t.apply(this,s),h=r.apply(this,s);if(null==n&&(o=e(l=c())),o.lineStart(),s[0]=u,o.point(+a.apply(this,s),+i.apply(this,s)),s[0]=h,o.point(+a.apply(this,s),+i.apply(this,s)),o.lineEnd(),l)return o=null,l+""||null}return l.source=function(e){return arguments.length?(t=e,l):t},l.target=function(e){return arguments.length?(r=e,l):r},l.x=function(e){return arguments.length?(a="function"==typeof e?e:cx(+e),l):a},l.y=function(e){return arguments.length?(i="function"==typeof e?e:cx(+e),l):i},l.context=function(t){return arguments.length?(null==t?n=o=null:o=e(n=t),l):n},l}function Qx(){const e=Zx($x);return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e}const Xx=yx(3);var ek={draw(e,t){const r=.59436*yx(t+dx(t/28,.75)),a=r/2,i=a*Xx;e.moveTo(0,r),e.lineTo(0,-r),e.moveTo(-i,-a),e.lineTo(i,a),e.moveTo(-i,a),e.lineTo(i,-a)}},tk={draw(e,t){const r=yx(t/mx);e.moveTo(r,0),e.arc(0,0,r,0,bx)}},rk={draw(e,t){const r=yx(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}};const ak=yx(1/3),ik=2*ak;var nk={draw(e,t){const r=yx(t/ik),a=r*ak;e.moveTo(0,-r),e.lineTo(a,0),e.lineTo(0,r),e.lineTo(-a,0),e.closePath()}},ok={draw(e,t){const r=.62625*yx(t);e.moveTo(0,-r),e.lineTo(r,0),e.lineTo(0,r),e.lineTo(-r,0),e.closePath()}},ck={draw(e,t){const r=.87559*yx(t-dx(t/7,2));e.moveTo(-r,0),e.lineTo(r,0),e.moveTo(0,r),e.lineTo(0,-r)}},lk={draw(e,t){const r=yx(t),a=-r/2;e.rect(a,a,r,r)}},sk={draw(e,t){const r=.4431*yx(t);e.moveTo(r,r),e.lineTo(r,-r),e.lineTo(-r,-r),e.lineTo(-r,r),e.closePath()}};const uk=px(mx/10)/px(7*mx/10),hk=px(bx/10)*uk,dk=-ux(bx/10)*uk;var pk={draw(e,t){const r=yx(.8908130915292852*t),a=hk*r,i=dk*r;e.moveTo(0,-r),e.lineTo(a,i);for(let n=1;n<5;++n){const t=bx*n/5,o=ux(t),c=px(t);e.lineTo(c*r,-o*r),e.lineTo(o*a-c*i,c*a+o*i)}e.closePath()}};const yk=yx(3);var fk={draw(e,t){const r=-yx(t/(3*yk));e.moveTo(0,2*r),e.lineTo(-yk*r,-r),e.lineTo(yk*r,-r),e.closePath()}};const mk=yx(3);var gk={draw(e,t){const r=.6824*yx(t),a=r/2,i=r*mk/2;e.moveTo(0,-r),e.lineTo(i,a),e.lineTo(-i,a),e.closePath()}};const bk=-.5,vk=yx(3)/2,xk=1/yx(12),kk=3*(xk/2+1);var wk={draw(e,t){const r=yx(t/kk),a=r/2,i=r*xk,n=a,o=r*xk+r,c=-n,l=o;e.moveTo(a,i),e.lineTo(n,o),e.lineTo(c,l),e.lineTo(bk*a-vk*i,vk*a+bk*i),e.lineTo(bk*n-vk*o,vk*n+bk*o),e.lineTo(bk*c-vk*l,vk*c+bk*l),e.lineTo(bk*a+vk*i,bk*i-vk*a),e.lineTo(bk*n+vk*o,bk*o-vk*n),e.lineTo(bk*c+vk*l,bk*l-vk*c),e.closePath()}},Ck={draw(e,t){const r=.6189*yx(t-dx(t/6,1.7));e.moveTo(-r,-r),e.lineTo(r,r),e.moveTo(-r,r),e.lineTo(r,-r)}};const _k=[tk,rk,nk,lk,pk,fk,wk],Sk=[tk,ck,Ck,gk,ek,sk,ok];function Ak(e,t){let r=null,a=xx(i);function i(){let i;if(r||(r=i=a()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),i)return r=null,i+""||null}return e="function"==typeof e?e:cx(e||tk),t="function"==typeof t?t:cx(void 0===t?64:+t),i.type=function(t){return arguments.length?(e="function"==typeof t?t:cx(t),i):e},i.size=function(e){return arguments.length?(t="function"==typeof e?e:cx(+e),i):t},i.context=function(e){return arguments.length?(r=null==e?null:e,i):r},i}function Mk(){}function Tk(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function Bk(e){this._context=e}function Lk(e){this._context=e}function Ek(e){return new Lk(e)}function Rk(e){this._context=e}function Hk(e,t){this._basis=new Bk(e),this._beta=t}Bk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Tk(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Tk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},Lk.prototype={areaStart:Mk,areaEnd:Mk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Tk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},Rk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,a=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,a):this._context.moveTo(r,a);break;case 3:this._point=4;default:Tk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},Hk.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var a,i=e[0],n=t[0],o=e[r]-i,c=t[r]-n,l=-1;++l<=r;)a=l/r,this._basis.point(this._beta*e[l]+(1-this._beta)*(i+a*o),this._beta*t[l]+(1-this._beta)*(n+a*c));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var Dk=function e(t){function r(e){return 1===t?new Bk(e):new Hk(e,t)}return r.beta=function(t){return e(+t)},r}(.85);function Pk(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function Nk(e,t){this._context=e,this._k=(1-t)/6}Nk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Pk(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Pk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Gk=function e(t){function r(e){return new Nk(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Ik(e,t){this._context=e,this._k=(1-t)/6}Ik.prototype={areaStart:Mk,areaEnd:Mk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Pk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Wk=function e(t){function r(e){return new Ik(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Fk(e,t){this._context=e,this._k=(1-t)/6}Fk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Pk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ok=function e(t){function r(e){return new Fk(e,t)}return r.tension=function(t){return e(+t)},r}(0);function zk(e,t,r){var a=e._x1,i=e._y1,n=e._x2,o=e._y2;if(e._l01_a>fx){var c=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,l=3*e._l01_a*(e._l01_a+e._l12_a);a=(a*c-e._x0*e._l12_2a+e._x2*e._l01_2a)/l,i=(i*c-e._y0*e._l12_2a+e._y2*e._l01_2a)/l}if(e._l23_a>fx){var s=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,u=3*e._l23_a*(e._l23_a+e._l12_a);n=(n*s+e._x1*e._l23_2a-t*e._l12_2a)/u,o=(o*s+e._y1*e._l23_2a-r*e._l12_2a)/u}e._context.bezierCurveTo(a,i,n,o,e._x2,e._y2)}function Kk(e,t){this._context=e,this._alpha=t}Kk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:zk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Jk=function e(t){function r(e){return t?new Kk(e,t):new Nk(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Vk(e,t){this._context=e,this._alpha=t}Vk.prototype={areaStart:Mk,areaEnd:Mk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:zk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var jk=function e(t){function r(e){return t?new Vk(e,t):new Ik(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Yk(e,t){this._context=e,this._alpha=t}Yk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:zk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var $k=function e(t){function r(e){return t?new Yk(e,t):new Fk(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Uk(e){this._context=e}function qk(e){return e<0?-1:1}function Zk(e,t,r){var a=e._x1-e._x0,i=t-e._x1,n=(e._y1-e._y0)/(a||i<0&&-0),o=(r-e._y1)/(i||a<0&&-0),c=(n*i+o*a)/(a+i);return(qk(n)+qk(o))*Math.min(Math.abs(n),Math.abs(o),.5*Math.abs(c))||0}function Qk(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Xk(e,t,r){var a=e._x0,i=e._y0,n=e._x1,o=e._y1,c=(n-a)/3;e._context.bezierCurveTo(a+c,i+c*t,n-c,o-c*r,n,o)}function ew(e){this._context=e}function tw(e){this._context=new rw(e)}function rw(e){this._context=e}function aw(e){this._context=e}function iw(e){var t,r,a=e.length-1,i=new Array(a),n=new Array(a),o=new Array(a);for(i[0]=0,n[0]=2,o[0]=e[0]+2*e[1],t=1;t<a-1;++t)i[t]=1,n[t]=4,o[t]=4*e[t]+2*e[t+1];for(i[a-1]=2,n[a-1]=7,o[a-1]=8*e[a-1]+e[a],t=1;t<a;++t)r=i[t]/n[t-1],n[t]-=r,o[t]-=r*o[t-1];for(i[a-1]=o[a-1]/n[a-1],t=a-2;t>=0;--t)i[t]=(o[t]-i[t+1])/n[t];for(n[a-1]=(e[a]+i[a-1])/2,t=0;t<a-1;++t)n[t]=2*e[t+1]-i[t+1];return[i,n]}function nw(e,t){this._context=e,this._t=t}function ow(e){return new nw(e,.5)}function cw(e){return new nw(e,0)}function lw(e){return new nw(e,1)}function sw(e,t){if((i=e.length)>1)for(var r,a,i,n=1,o=e[t[0]],c=o.length;n<i;++n)for(a=o,o=e[t[n]],r=0;r<c;++r)o[r][1]+=o[r][0]=isNaN(a[r][1])?a[r][0]:a[r][1]}function uw(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}function hw(e,t){return e[t]}function dw(e){const t=[];return t.key=e,t}function pw(e){var t=e.map(yw);return uw(e).sort((function(e,r){return t[e]-t[r]}))}function yw(e){for(var t,r=-1,a=0,i=e.length,n=-1/0;++r<i;)(t=+e[r][1])>n&&(n=t,a=r);return a}function fw(e){var t=e.map(mw);return uw(e).sort((function(e,r){return t[e]-t[r]}))}function mw(e){for(var t,r=0,a=-1,i=e.length;++a<i;)(t=+e[a][1])&&(r+=t);return r}Uk.prototype={areaStart:Mk,areaEnd:Mk,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}},ew.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Xk(this,this._t0,Qk(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(t=+t,(e=+e)!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Xk(this,Qk(this,r=Zk(this,e,t)),r);break;default:Xk(this,this._t0,r=Zk(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}},(tw.prototype=Object.create(ew.prototype)).point=function(e,t){ew.prototype.point.call(this,t,e)},rw.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,a,i,n){this._context.bezierCurveTo(t,e,a,r,n,i)}},aw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),2===r)this._context.lineTo(e[1],t[1]);else for(var a=iw(e),i=iw(t),n=0,o=1;o<r;++n,++o)this._context.bezierCurveTo(a[0][n],i[0][n],a[1][n],i[1][n],e[o],t[o]);(this._line||0!==this._line&&1===r)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(e,t){this._x.push(+e),this._y.push(+t)}},nw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}}this._x=e,this._y=t}};var gw=e=>()=>e;function bw(e,{sourceEvent:t,target:r,transform:a,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:a,enumerable:!0,configurable:!0},_:{value:i}})}function vw(e,t,r){this.k=e,this.x=t,this.y=r}vw.prototype={constructor:vw,scale:function(e){return 1===e?this:new vw(this.k*e,this.x,this.y)},translate:function(e,t){return 0===e&0===t?this:new vw(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var xw=new vw(1,0,0);function kw(e){for(;!e.__zoom;)if(!(e=e.parentNode))return xw;return e.__zoom}function ww(e){e.stopImmediatePropagation()}function Cw(e){e.preventDefault(),e.stopImmediatePropagation()}function _w(e){return!(e.ctrlKey&&"wheel"!==e.type||e.button)}function Sw(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e).hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]:[[0,0],[e.clientWidth,e.clientHeight]]}function Aw(){return this.__zoom||xw}function Mw(e){return-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Tw(){return navigator.maxTouchPoints||"ontouchstart"in this}function Bw(e,t,r){var a=e.invertX(t[0][0])-r[0][0],i=e.invertX(t[1][0])-r[1][0],n=e.invertY(t[0][1])-r[0][1],o=e.invertY(t[1][1])-r[1][1];return e.translate(i>a?(a+i)/2:Math.min(0,a)||Math.max(0,i),o>n?(n+o)/2:Math.min(0,n)||Math.max(0,o))}function Lw(){var e,t,r,a=_w,i=Sw,n=Bw,o=Mw,c=Tw,l=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],u=250,h=fi,d=je("start","zoom","end"),p=0,y=10;function f(e){e.property("__zoom",Aw).on("wheel.zoom",w,{passive:!1}).on("mousedown.zoom",C).on("dblclick.zoom",_).filter(c).on("touchstart.zoom",S).on("touchmove.zoom",A).on("touchend.zoom touchcancel.zoom",M).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(e,t){return(t=Math.max(l[0],Math.min(l[1],t)))===e.k?e:new vw(t,e.x,e.y)}function g(e,t,r){var a=t[0]-r[0]*e.k,i=t[1]-r[1]*e.k;return a===e.x&&i===e.y?e:new vw(e.k,a,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function v(e,t,r,a){e.on("start.zoom",(function(){x(this,arguments).event(a).start()})).on("interrupt.zoom end.zoom",(function(){x(this,arguments).event(a).end()})).tween("zoom",(function(){var e=this,n=arguments,o=x(e,n).event(a),c=i.apply(e,n),l=null==r?b(c):"function"==typeof r?r.apply(e,n):r,s=Math.max(c[1][0]-c[0][0],c[1][1]-c[0][1]),u=e.__zoom,d="function"==typeof t?t.apply(e,n):t,p=h(u.invert(l).concat(s/u.k),d.invert(l).concat(s/d.k));return function(e){if(1===e)e=d;else{var t=p(e),r=s/t[2];e=new vw(r,l[0]-t[0]*r,l[1]-t[1]*r)}o.zoom(null,e)}}))}function x(e,t,r){return!r&&e.__zooming||new k(e,t)}function k(e,t){this.that=e,this.args=t,this.active=0,this.sourceEvent=null,this.extent=i.apply(e,t),this.taps=0}function w(e,...t){if(a.apply(this,arguments)){var r=x(this,t).event(e),i=this.__zoom,c=Math.max(l[0],Math.min(l[1],i.k*Math.pow(2,o.apply(this,arguments)))),u=yr(e);if(r.wheel)r.mouse[0][0]===u[0]&&r.mouse[0][1]===u[1]||(r.mouse[1]=i.invert(r.mouse[0]=u)),clearTimeout(r.wheel);else{if(i.k===c)return;r.mouse=[u,i.invert(u)],Zi(this),r.start()}Cw(e),r.wheel=setTimeout((function(){r.wheel=null,r.end()}),150),r.zoom("mouse",n(g(m(i,c),r.mouse[0],r.mouse[1]),r.extent,s))}}function C(e,...t){if(!r&&a.apply(this,arguments)){var i=e.currentTarget,o=x(this,t,!0).event(e),c=lr(e.view).on("mousemove.zoom",(function(e){if(Cw(e),!o.moved){var t=e.clientX-u,r=e.clientY-h;o.moved=t*t+r*r>p}o.event(e).zoom("mouse",n(g(o.that.__zoom,o.mouse[0]=yr(e,i),o.mouse[1]),o.extent,s))}),!0).on("mouseup.zoom",(function(e){c.on("mousemove.zoom mouseup.zoom",null),xr(e.view,o.moved),Cw(e),o.event(e).end()}),!0),l=yr(e,i),u=e.clientX,h=e.clientY;vr(e.view),ww(e),o.mouse=[l,this.__zoom.invert(l)],Zi(this),o.start()}}function _(e,...t){if(a.apply(this,arguments)){var r=this.__zoom,o=yr(e.changedTouches?e.changedTouches[0]:e,this),c=r.invert(o),l=r.k*(e.shiftKey?.5:2),h=n(g(m(r,l),o,c),i.apply(this,t),s);Cw(e),u>0?lr(this).transition().duration(u).call(v,h,o,e):lr(this).call(f.transform,h,o,e)}}function S(r,...i){if(a.apply(this,arguments)){var n,o,c,l,s=r.touches,u=s.length,h=x(this,i,r.changedTouches.length===u).event(r);for(ww(r),o=0;o<u;++o)l=[l=yr(c=s[o],this),this.__zoom.invert(l),c.identifier],h.touch0?h.touch1||h.touch0[2]===l[2]||(h.touch1=l,h.taps=0):(h.touch0=l,n=!0,h.taps=1+!!e);e&&(e=clearTimeout(e)),n&&(h.taps<2&&(t=l[0],e=setTimeout((function(){e=null}),500)),Zi(this),h.start())}}function A(e,...t){if(this.__zooming){var r,a,i,o,c=x(this,t).event(e),l=e.changedTouches,u=l.length;for(Cw(e),r=0;r<u;++r)i=yr(a=l[r],this),c.touch0&&c.touch0[2]===a.identifier?c.touch0[0]=i:c.touch1&&c.touch1[2]===a.identifier&&(c.touch1[0]=i);if(a=c.that.__zoom,c.touch1){var h=c.touch0[0],d=c.touch0[1],p=c.touch1[0],y=c.touch1[1],f=(f=p[0]-h[0])*f+(f=p[1]-h[1])*f,b=(b=y[0]-d[0])*b+(b=y[1]-d[1])*b;a=m(a,Math.sqrt(f/b)),i=[(h[0]+p[0])/2,(h[1]+p[1])/2],o=[(d[0]+y[0])/2,(d[1]+y[1])/2]}else{if(!c.touch0)return;i=c.touch0[0],o=c.touch0[1]}c.zoom("touch",n(g(a,i,o),c.extent,s))}}function M(e,...a){if(this.__zooming){var i,n,o=x(this,a).event(e),c=e.changedTouches,l=c.length;for(ww(e),r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),i=0;i<l;++i)n=c[i],o.touch0&&o.touch0[2]===n.identifier?delete o.touch0:o.touch1&&o.touch1[2]===n.identifier&&delete o.touch1;if(o.touch1&&!o.touch0&&(o.touch0=o.touch1,delete o.touch1),o.touch0)o.touch0[1]=this.__zoom.invert(o.touch0[0]);else if(o.end(),2===o.taps&&(n=yr(n,this),Math.hypot(t[0]-n[0],t[1]-n[1])<y)){var s=lr(this).on("dblclick.zoom");s&&s.apply(this,arguments)}}}return f.transform=function(e,t,r,a){var i=e.selection?e.selection():e;i.property("__zoom",Aw),e!==i?v(e,t,r,a):i.interrupt().each((function(){x(this,arguments).event(a).start().zoom(null,"function"==typeof t?t.apply(this,arguments):t).end()}))},f.scaleBy=function(e,t,r,a){f.scaleTo(e,(function(){return this.__zoom.k*("function"==typeof t?t.apply(this,arguments):t)}),r,a)},f.scaleTo=function(e,t,r,a){f.transform(e,(function(){var e=i.apply(this,arguments),a=this.__zoom,o=null==r?b(e):"function"==typeof r?r.apply(this,arguments):r,c=a.invert(o),l="function"==typeof t?t.apply(this,arguments):t;return n(g(m(a,l),o,c),e,s)}),r,a)},f.translateBy=function(e,t,r,a){f.transform(e,(function(){return n(this.__zoom.translate("function"==typeof t?t.apply(this,arguments):t,"function"==typeof r?r.apply(this,arguments):r),i.apply(this,arguments),s)}),null,a)},f.translateTo=function(e,t,r,a,o){f.transform(e,(function(){var e=i.apply(this,arguments),o=this.__zoom,c=null==a?b(e):"function"==typeof a?a.apply(this,arguments):a;return n(xw.translate(c[0],c[1]).scale(o.k).translate("function"==typeof t?-t.apply(this,arguments):-t,"function"==typeof r?-r.apply(this,arguments):-r),e,s)}),a,o)},k.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(e,t){return this.mouse&&"mouse"!==e&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&"touch"!==e&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&"touch"!==e&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(e){var t=lr(this.that).datum();d.call(e,this.that,new bw(e,{sourceEvent:this.sourceEvent,target:f,type:e,transform:this.that.__zoom,dispatch:d}),t)}},f.wheelDelta=function(e){return arguments.length?(o="function"==typeof e?e:gw(+e),f):o},f.filter=function(e){return arguments.length?(a="function"==typeof e?e:gw(!!e),f):a},f.touchable=function(e){return arguments.length?(c="function"==typeof e?e:gw(!!e),f):c},f.extent=function(e){return arguments.length?(i="function"==typeof e?e:gw([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),f):i},f.scaleExtent=function(e){return arguments.length?(l[0]=+e[0],l[1]=+e[1],f):[l[0],l[1]]},f.translateExtent=function(e){return arguments.length?(s[0][0]=+e[0][0],s[1][0]=+e[1][0],s[0][1]=+e[0][1],s[1][1]=+e[1][1],f):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},f.constrain=function(e){return arguments.length?(n=e,f):n},f.duration=function(e){return arguments.length?(u=+e,f):u},f.interpolate=function(e){return arguments.length?(h=e,f):h},f.on=function(){var e=d.on.apply(d,arguments);return e===d?f:e},f.clickDistance=function(e){return arguments.length?(p=(e=+e)*e,f):Math.sqrt(p)},f.tapDistance=function(e){return arguments.length?(y=+e,f):y},f}kw.prototype=vw.prototype;var Ew=Object.freeze({__proto__:null,Adder:W,Delaunay:zc,FormatSpecifier:Yl,InternMap:F,InternSet:O,Node:zp,Path:Fo,Voronoi:Nc,ZoomTransform:vw,active:function(e,t){var r,a,i=e.__transition;if(i)for(a in t=null==t?null:t+"",i)if((r=i[a]).state>1&&r.name===t)return new bn([[e]],Zn,t,+a);return null},arc:function(){var e=kx,t=wx,r=cx(0),a=null,i=Cx,n=_x,o=Sx,c=null,l=xx(s);function s(){var s,u,h=+e.apply(this,arguments),d=+t.apply(this,arguments),p=i.apply(this,arguments)-gx,y=n.apply(this,arguments)-gx,f=lx(y-p),m=y>p;if(c||(c=s=l()),d<h&&(u=d,d=h,h=u),d>fx)if(f>bx-fx)c.moveTo(d*ux(p),d*px(p)),c.arc(0,0,d,p,y,!m),h>fx&&(c.moveTo(h*ux(y),h*px(y)),c.arc(0,0,h,y,p,m));else{var g,b,v=p,x=y,k=p,w=y,C=f,_=f,S=o.apply(this,arguments)/2,A=S>fx&&(a?+a.apply(this,arguments):yx(h*h+d*d)),M=dx(lx(d-h)/2,+r.apply(this,arguments)),T=M,B=M;if(A>fx){var L=vx(A/h*px(S)),E=vx(A/d*px(S));(C-=2*L)>fx?(k+=L*=m?1:-1,w-=L):(C=0,k=w=(p+y)/2),(_-=2*E)>fx?(v+=E*=m?1:-1,x-=E):(_=0,v=x=(p+y)/2)}var R=d*ux(v),H=d*px(v),D=h*ux(w),P=h*px(w);if(M>fx){var N,G=d*ux(x),I=d*px(x),W=h*ux(k),F=h*px(k);if(f<mx)if(N=function(e,t,r,a,i,n,o,c){var l=r-e,s=a-t,u=o-i,h=c-n,d=h*l-u*s;if(!(d*d<fx))return[e+(d=(u*(t-n)-h*(e-i))/d)*l,t+d*s]}(R,H,W,F,G,I,D,P)){var O=R-N[0],z=H-N[1],K=G-N[0],J=I-N[1],V=1/px(function(e){return e>1?0:e<-1?mx:Math.acos(e)}((O*K+z*J)/(yx(O*O+z*z)*yx(K*K+J*J)))/2),j=yx(N[0]*N[0]+N[1]*N[1]);T=dx(M,(h-j)/(V-1)),B=dx(M,(d-j)/(V+1))}else T=B=0}_>fx?B>fx?(g=Ax(W,F,R,H,d,B,m),b=Ax(G,I,D,P,d,B,m),c.moveTo(g.cx+g.x01,g.cy+g.y01),B<M?c.arc(g.cx,g.cy,B,sx(g.y01,g.x01),sx(b.y01,b.x01),!m):(c.arc(g.cx,g.cy,B,sx(g.y01,g.x01),sx(g.y11,g.x11),!m),c.arc(0,0,d,sx(g.cy+g.y11,g.cx+g.x11),sx(b.cy+b.y11,b.cx+b.x11),!m),c.arc(b.cx,b.cy,B,sx(b.y11,b.x11),sx(b.y01,b.x01),!m))):(c.moveTo(R,H),c.arc(0,0,d,v,x,!m)):c.moveTo(R,H),h>fx&&C>fx?T>fx?(g=Ax(D,P,G,I,h,-T,m),b=Ax(R,H,W,F,h,-T,m),c.lineTo(g.cx+g.x01,g.cy+g.y01),T<M?c.arc(g.cx,g.cy,T,sx(g.y01,g.x01),sx(b.y01,b.x01),!m):(c.arc(g.cx,g.cy,T,sx(g.y01,g.x01),sx(g.y11,g.x11),!m),c.arc(0,0,h,sx(g.cy+g.y11,g.cx+g.x11),sx(b.cy+b.y11,b.cx+b.x11),m),c.arc(b.cx,b.cy,T,sx(b.y11,b.x11),sx(b.y01,b.x01),!m))):c.arc(0,0,h,w,k,m):c.lineTo(D,P)}else c.moveTo(0,0);if(c.closePath(),s)return c=null,s+""||null}return s.centroid=function(){var r=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,a=(+i.apply(this,arguments)+ +n.apply(this,arguments))/2-mx/2;return[ux(a)*r,px(a)*r]},s.innerRadius=function(t){return arguments.length?(e="function"==typeof t?t:cx(+t),s):e},s.outerRadius=function(e){return arguments.length?(t="function"==typeof e?e:cx(+e),s):t},s.cornerRadius=function(e){return arguments.length?(r="function"==typeof e?e:cx(+e),s):r},s.padRadius=function(e){return arguments.length?(a=null==e?null:"function"==typeof e?e:cx(+e),s):a},s.startAngle=function(e){return arguments.length?(i="function"==typeof e?e:cx(+e),s):i},s.endAngle=function(e){return arguments.length?(n="function"==typeof e?e:cx(+e),s):n},s.padAngle=function(e){return arguments.length?(o="function"==typeof e?e:cx(+e),s):o},s.context=function(e){return arguments.length?(c=null==e?null:e,s):c},s},area:Dx,areaRadial:zx,ascending:g,autoType:function(e){for(var t in e){var r,a,i=e[t].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(r=+i)){if(!(a=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;hl&&a[4]&&!a[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=r;else i=null;e[t]=i}return e},axisBottom:function(e){return Je(3,e)},axisLeft:function(e){return Je(4,e)},axisRight:function(e){return Je(2,e)},axisTop:function(e){return Je(1,e)},bin:fe,bisect:C,bisectCenter:S,bisectLeft:_,bisectRight:C,bisector:v,blob:function(e,t){return fetch(e,t).then(dl)},blur:function(e,t){if(!((t=+t)>=0))throw new RangeError("invalid r");let r=e.length;if(!((r=Math.floor(r))>=0))throw new RangeError("invalid length");if(!r||!t)return e;const a=E(t),i=e.slice();return a(e,i,0,r,1),a(i,e,0,r,1),a(e,i,0,r,1),e},blur2:A,blurImage:M,brush:function(){return _o(po)},brushSelection:function(e){var t=e.__brush;return t?t.dim.output(t.selection):null},brushX:function(){return _o(uo)},brushY:function(){return _o(ho)},buffer:function(e,t){return fetch(e,t).then(pl)},chord:function(){return Do(!1,!1)},chordDirected:function(){return Do(!0,!1)},chordTranspose:function(){return Do(!1,!0)},cluster:Pp,color:Vr,contourDensity:function(){var e=hc,t=dc,r=pc,a=960,i=500,n=20,o=2,c=3*n,l=a+2*c>>o,s=i+2*c>>o,u=ec(20);function h(a){var i=new Float32Array(l*s),u=Math.pow(2,-o),h=-1;for(const n of a){var d=(e(n,++h,a)+c)*u,p=(t(n,h,a)+c)*u,y=+r(n,h,a);if(y&&d>=0&&d<l&&p>=0&&p<s){var f=Math.floor(d),m=Math.floor(p),g=d-f-.5,b=p-m-.5;i[f+m*l]+=(1-g)*(1-b)*y,i[f+1+m*l]+=g*(1-b)*y,i[f+1+(m+1)*l]+=g*b*y,i[f+(m+1)*l]+=(1-g)*b*y}}return A({data:i,width:l,height:s},n*u),i}function d(e){var t=h(e),r=u(t),a=Math.pow(2,2*o);return Array.isArray(r)||(r=ue(Number.MIN_VALUE,me(t)/a,r)),oc().size([l,s]).thresholds(r.map((e=>e*a)))(t).map(((e,t)=>(e.value=+r[t],p(e))))}function p(e){return e.coordinates.forEach(y),e}function y(e){e.forEach(f)}function f(e){e.forEach(m)}function m(e){e[0]=e[0]*Math.pow(2,o)-c,e[1]=e[1]*Math.pow(2,o)-c}function g(){return l=a+2*(c=3*n)>>o,s=i+2*c>>o,d}return d.contours=function(e){var t=h(e),r=oc().size([l,s]),a=Math.pow(2,2*o),i=e=>{e=+e;var i=p(r.contour(t,e*a));return i.value=e,i};return Object.defineProperty(i,"max",{get:()=>me(t)/a}),i},d.x=function(t){return arguments.length?(e="function"==typeof t?t:ec(+t),d):e},d.y=function(e){return arguments.length?(t="function"==typeof e?e:ec(+e),d):t},d.weight=function(e){return arguments.length?(r="function"==typeof e?e:ec(+e),d):r},d.size=function(e){if(!arguments.length)return[a,i];var t=+e[0],r=+e[1];if(!(t>=0&&r>=0))throw new Error("invalid size");return a=t,i=r,g()},d.cellSize=function(e){if(!arguments.length)return 1<<o;if(!((e=+e)>=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(e)/Math.LN2),g()},d.thresholds=function(e){return arguments.length?(u="function"==typeof e?e:Array.isArray(e)?ec(Qo.call(e)):ec(e),d):u},d.bandwidth=function(e){if(!arguments.length)return Math.sqrt(n*(n+1));if(!((e=+e)>=0))throw new Error("invalid bandwidth");return n=(Math.sqrt(4*e*e+1)-1)/2,g()},d},contours:oc,count:R,create:sr,creator:tt,cross:function(...e){const t="function"==typeof e[e.length-1]&&function(e){return t=>e(...t)}(e.pop()),r=(e=e.map(P)).map(H),a=e.length-1,i=new Array(a+1).fill(0),n=[];if(a<0||r.some(D))return n;for(;;){n.push(i.map(((t,r)=>e[r][t])));let o=a;for(;++i[o]===r[o];){if(0===o)return t?n.map(t):n;i[o--]=0}}},csv:gl,csvFormat:Qc,csvFormatBody:Xc,csvFormatRow:tl,csvFormatRows:el,csvFormatValue:rl,csvParse:qc,csvParseRows:Zc,cubehelix:Ga,cumsum:function(e,t){var r=0,a=0;return Float64Array.from(e,void 0===t?e=>r+=+e||0:i=>r+=+t(i,a++,e)||0)},curveBasis:function(e){return new Bk(e)},curveBasisClosed:Ek,curveBasisOpen:function(e){return new Rk(e)},curveBumpX:jx,curveBumpY:Yx,curveBundle:Dk,curveCardinal:Gk,curveCardinalClosed:Wk,curveCardinalOpen:Ok,curveCatmullRom:Jk,curveCatmullRomClosed:jk,curveCatmullRomOpen:$k,curveLinear:Lx,curveLinearClosed:function(e){return new Uk(e)},curveMonotoneX:function(e){return new ew(e)},curveMonotoneY:function(e){return new tw(e)},curveNatural:function(e){return new aw(e)},curveStep:ow,curveStepAfter:lw,curveStepBefore:cw,descending:b,deviation:G,difference:function(e,...t){e=new O(e);for(const r of t)for(const t of r)e.delete(t);return e},disjoint:function(e,t){const r=t[Symbol.iterator](),a=new O;for(const i of e){if(a.has(i))return!1;let e,t;for(;({value:e,done:t}=r.next())&&!t;){if(Object.is(i,e))return!1;a.add(e)}}return!0},dispatch:je,drag:function(){var e,t,r,a,i=Cr,n=_r,o=Sr,c=Ar,l={},s=je("start","drag","end"),u=0,h=0;function d(e){e.on("mousedown.drag",p).filter(c).on("touchstart.drag",m).on("touchmove.drag",g,fr).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(o,c){if(!a&&i.call(this,o,c)){var l=v(this,n.call(this,o,c),o,c,"mouse");l&&(lr(o.view).on("mousemove.drag",y,mr).on("mouseup.drag",f,mr),vr(o.view),gr(o),r=!1,e=o.clientX,t=o.clientY,l("start",o))}}function y(a){if(br(a),!r){var i=a.clientX-e,n=a.clientY-t;r=i*i+n*n>h}l.mouse("drag",a)}function f(e){lr(e.view).on("mousemove.drag mouseup.drag",null),xr(e.view,r),br(e),l.mouse("end",e)}function m(e,t){if(i.call(this,e,t)){var r,a,o=e.changedTouches,c=n.call(this,e,t),l=o.length;for(r=0;r<l;++r)(a=v(this,c,e,t,o[r].identifier,o[r]))&&(gr(e),a("start",e,o[r]))}}function g(e){var t,r,a=e.changedTouches,i=a.length;for(t=0;t<i;++t)(r=l[a[t].identifier])&&(br(e),r("drag",e,a[t]))}function b(e){var t,r,i=e.changedTouches,n=i.length;for(a&&clearTimeout(a),a=setTimeout((function(){a=null}),500),t=0;t<n;++t)(r=l[i[t].identifier])&&(gr(e),r("end",e,i[t]))}function v(e,t,r,a,i,n){var c,h,p,y=s.copy(),f=yr(n||r,t);if(null!=(p=o.call(e,new wr("beforestart",{sourceEvent:r,target:d,identifier:i,active:u,x:f[0],y:f[1],dx:0,dy:0,dispatch:y}),a)))return c=p.x-f[0]||0,h=p.y-f[1]||0,function r(n,o,s){var m,g=f;switch(n){case"start":l[i]=r,m=u++;break;case"end":delete l[i],--u;case"drag":f=yr(s||o,t),m=u}y.call(n,e,new wr(n,{sourceEvent:o,subject:p,target:d,identifier:i,active:m,x:f[0]+c,y:f[1]+h,dx:f[0]-g[0],dy:f[1]-g[1],dispatch:y}),a)}}return d.filter=function(e){return arguments.length?(i="function"==typeof e?e:kr(!!e),d):i},d.container=function(e){return arguments.length?(n="function"==typeof e?e:kr(e),d):n},d.subject=function(e){return arguments.length?(o="function"==typeof e?e:kr(e),d):o},d.touchable=function(e){return arguments.length?(c="function"==typeof e?e:kr(!!e),d):c},d.on=function(){var e=s.on.apply(s,arguments);return e===s?d:e},d.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,d):Math.sqrt(h)},d},dragDisable:vr,dragEnable:xr,dsv:function(e,t,r,a){3===arguments.length&&"function"==typeof r&&(a=r,r=void 0);var i=$c(e);return fl(t,r).then((function(e){return i.parse(e,a)}))},dsvFormat:$c,easeBack:Jn,easeBackIn:zn,easeBackInOut:Jn,easeBackOut:Kn,easeBounce:Fn,easeBounceIn:function(e){return 1-Fn(1-e)},easeBounceInOut:function(e){return((e*=2)<=1?1-Fn(1-e):Fn(e-1)+1)/2},easeBounceOut:Fn,easeCircle:Rn,easeCircleIn:function(e){return 1-Math.sqrt(1-e*e)},easeCircleInOut:Rn,easeCircleOut:function(e){return Math.sqrt(1- --e*e)},easeCubic:Cn,easeCubicIn:function(e){return e*e*e},easeCubicInOut:Cn,easeCubicOut:function(e){return--e*e*e+1},easeElastic:Yn,easeElasticIn:jn,easeElasticInOut:$n,easeElasticOut:Yn,easeExp:En,easeExpIn:function(e){return Ln(1-+e)},easeExpInOut:En,easeExpOut:function(e){return 1-Ln(e)},easeLinear:e=>+e,easePoly:An,easePolyIn:_n,easePolyInOut:An,easePolyOut:Sn,easeQuad:wn,easeQuadIn:function(e){return e*e},easeQuadInOut:wn,easeQuadOut:function(e){return e*(2-e)},easeSin:Bn,easeSinIn:function(e){return 1==+e?1:1-Math.cos(e*Tn)},easeSinInOut:Bn,easeSinOut:function(e){return Math.sin(e*Tn)},every:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");let r=-1;for(const a of e)if(!t(a,++r,e))return!1;return!0},extent:I,fcumsum:function(e,t){const r=new W;let a=-1;return Float64Array.from(e,void 0===t?e=>r.add(+e||0):i=>r.add(+t(i,++a,e)||0))},filter:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");const r=[];let a=-1;for(const i of e)t(i,++a,e)&&r.push(i);return r},flatGroup:function(e,...t){return U($(e,...t),t)},flatRollup:function(e,t,...r){return U(Z(e,t,...r),r)},forceCenter:function(e,t){var r,a=1;function i(){var i,n,o=r.length,c=0,l=0;for(i=0;i<o;++i)c+=(n=r[i]).x,l+=n.y;for(c=(c/o-e)*a,l=(l/o-t)*a,i=0;i<o;++i)(n=r[i]).x-=c,n.y-=l}return null==e&&(e=0),null==t&&(t=0),i.initialize=function(e){r=e},i.x=function(t){return arguments.length?(e=+t,i):e},i.y=function(e){return arguments.length?(t=+e,i):t},i.strength=function(e){return arguments.length?(a=+e,i):a},i},forceCollide:function(e){var t,r,a,i=1,n=1;function o(){for(var e,o,l,s,u,h,d,p=t.length,y=0;y<n;++y)for(o=Tl(t,Dl,Pl).visitAfter(c),e=0;e<p;++e)l=t[e],h=r[l.index],d=h*h,s=l.x+l.vx,u=l.y+l.vy,o.visit(f);function f(e,t,r,n,o){var c=e.data,p=e.r,y=h+p;if(!c)return t>s+y||n<s-y||r>u+y||o<u-y;if(c.index>l.index){var f=s-c.x-c.vx,m=u-c.y-c.vy,g=f*f+m*m;g<y*y&&(0===f&&(g+=(f=Hl(a))*f),0===m&&(g+=(m=Hl(a))*m),g=(y-(g=Math.sqrt(g)))/g*i,l.vx+=(f*=g)*(y=(p*=p)/(d+p)),l.vy+=(m*=g)*y,c.vx-=f*(y=1-y),c.vy-=m*y)}}}function c(e){if(e.data)return e.r=r[e.data.index];for(var t=e.r=0;t<4;++t)e[t]&&e[t].r>e.r&&(e.r=e[t].r)}function l(){if(t){var a,i,n=t.length;for(r=new Array(n),a=0;a<n;++a)i=t[a],r[i.index]=+e(i,a,t)}}return"function"!=typeof e&&(e=Rl(null==e?1:+e)),o.initialize=function(e,r){t=e,a=r,l()},o.iterations=function(e){return arguments.length?(n=+e,o):n},o.strength=function(e){return arguments.length?(i=+e,o):i},o.radius=function(t){return arguments.length?(e="function"==typeof t?t:Rl(+t),l(),o):e},o},forceLink:function(e){var t,r,a,i,n,o,c=Nl,l=function(e){return 1/Math.min(i[e.source.index],i[e.target.index])},s=Rl(30),u=1;function h(a){for(var i=0,c=e.length;i<u;++i)for(var l,s,h,d,p,y,f,m=0;m<c;++m)s=(l=e[m]).source,d=(h=l.target).x+h.vx-s.x-s.vx||Hl(o),p=h.y+h.vy-s.y-s.vy||Hl(o),d*=y=((y=Math.sqrt(d*d+p*p))-r[m])/y*a*t[m],p*=y,h.vx-=d*(f=n[m]),h.vy-=p*f,s.vx+=d*(f=1-f),s.vy+=p*f}function d(){if(a){var o,l,s=a.length,u=e.length,h=new Map(a.map(((e,t)=>[c(e,t,a),e])));for(o=0,i=new Array(s);o<u;++o)(l=e[o]).index=o,"object"!=typeof l.source&&(l.source=Gl(h,l.source)),"object"!=typeof l.target&&(l.target=Gl(h,l.target)),i[l.source.index]=(i[l.source.index]||0)+1,i[l.target.index]=(i[l.target.index]||0)+1;for(o=0,n=new Array(u);o<u;++o)l=e[o],n[o]=i[l.source.index]/(i[l.source.index]+i[l.target.index]);t=new Array(u),p(),r=new Array(u),y()}}function p(){if(a)for(var r=0,i=e.length;r<i;++r)t[r]=+l(e[r],r,e)}function y(){if(a)for(var t=0,i=e.length;t<i;++t)r[t]=+s(e[t],t,e)}return null==e&&(e=[]),h.initialize=function(e,t){a=e,o=t,d()},h.links=function(t){return arguments.length?(e=t,d(),h):e},h.id=function(e){return arguments.length?(c=e,h):c},h.iterations=function(e){return arguments.length?(u=+e,h):u},h.strength=function(e){return arguments.length?(l="function"==typeof e?e:Rl(+e),p(),h):l},h.distance=function(e){return arguments.length?(s="function"==typeof e?e:Rl(+e),y(),h):s},h},forceManyBody:function(){var e,t,r,a,i,n=Rl(-30),o=1,c=1/0,l=.81;function s(r){var i,n=e.length,o=Tl(e,Wl,Fl).visitAfter(h);for(a=r,i=0;i<n;++i)t=e[i],o.visit(d)}function u(){if(e){var t,r,a=e.length;for(i=new Array(a),t=0;t<a;++t)r=e[t],i[r.index]=+n(r,t,e)}}function h(e){var t,r,a,n,o,c=0,l=0;if(e.length){for(a=n=o=0;o<4;++o)(t=e[o])&&(r=Math.abs(t.value))&&(c+=t.value,l+=r,a+=r*t.x,n+=r*t.y);e.x=a/l,e.y=n/l}else{(t=e).x=t.data.x,t.y=t.data.y;do{c+=i[t.data.index]}while(t=t.next)}e.value=c}function d(e,n,s,u){if(!e.value)return!0;var h=e.x-t.x,d=e.y-t.y,p=u-n,y=h*h+d*d;if(p*p/l<y)return y<c&&(0===h&&(y+=(h=Hl(r))*h),0===d&&(y+=(d=Hl(r))*d),y<o&&(y=Math.sqrt(o*y)),t.vx+=h*e.value*a/y,t.vy+=d*e.value*a/y),!0;if(!(e.length||y>=c)){(e.data!==t||e.next)&&(0===h&&(y+=(h=Hl(r))*h),0===d&&(y+=(d=Hl(r))*d),y<o&&(y=Math.sqrt(o*y)));do{e.data!==t&&(p=i[e.data.index]*a/y,t.vx+=h*p,t.vy+=d*p)}while(e=e.next)}}return s.initialize=function(t,a){e=t,r=a,u()},s.strength=function(e){return arguments.length?(n="function"==typeof e?e:Rl(+e),u(),s):n},s.distanceMin=function(e){return arguments.length?(o=e*e,s):Math.sqrt(o)},s.distanceMax=function(e){return arguments.length?(c=e*e,s):Math.sqrt(c)},s.theta=function(e){return arguments.length?(l=e*e,s):Math.sqrt(l)},s},forceRadial:function(e,t,r){var a,i,n,o=Rl(.1);function c(e){for(var o=0,c=a.length;o<c;++o){var l=a[o],s=l.x-t||1e-6,u=l.y-r||1e-6,h=Math.sqrt(s*s+u*u),d=(n[o]-h)*i[o]*e/h;l.vx+=s*d,l.vy+=u*d}}function l(){if(a){var t,r=a.length;for(i=new Array(r),n=new Array(r),t=0;t<r;++t)n[t]=+e(a[t],t,a),i[t]=isNaN(n[t])?0:+o(a[t],t,a)}}return"function"!=typeof e&&(e=Rl(+e)),null==t&&(t=0),null==r&&(r=0),c.initialize=function(e){a=e,l()},c.strength=function(e){return arguments.length?(o="function"==typeof e?e:Rl(+e),l(),c):o},c.radius=function(t){return arguments.length?(e="function"==typeof t?t:Rl(+t),l(),c):e},c.x=function(e){return arguments.length?(t=+e,c):t},c.y=function(e){return arguments.length?(r=+e,c):r},c},forceSimulation:function(e){var t,r=1,a=.001,i=1-Math.pow(a,1/300),n=0,o=.6,c=new Map,l=Wi(h),s=je("tick","end"),u=function(){let e=1;return()=>(e=(1664525*e+1013904223)%Il)/Il}();function h(){d(),s.call("tick",t),r<a&&(l.stop(),s.call("end",t))}function d(a){var l,s,u=e.length;void 0===a&&(a=1);for(var h=0;h<a;++h)for(r+=(n-r)*i,c.forEach((function(e){e(r)})),l=0;l<u;++l)null==(s=e[l]).fx?s.x+=s.vx*=o:(s.x=s.fx,s.vx=0),null==s.fy?s.y+=s.vy*=o:(s.y=s.fy,s.vy=0);return t}function p(){for(var t,r=0,a=e.length;r<a;++r){if((t=e[r]).index=r,null!=t.fx&&(t.x=t.fx),null!=t.fy&&(t.y=t.fy),isNaN(t.x)||isNaN(t.y)){var i=10*Math.sqrt(.5+r),n=r*Ol;t.x=i*Math.cos(n),t.y=i*Math.sin(n)}(isNaN(t.vx)||isNaN(t.vy))&&(t.vx=t.vy=0)}}function y(t){return t.initialize&&t.initialize(e,u),t}return null==e&&(e=[]),p(),t={tick:d,restart:function(){return l.restart(h),t},stop:function(){return l.stop(),t},nodes:function(r){return arguments.length?(e=r,p(),c.forEach(y),t):e},alpha:function(e){return arguments.length?(r=+e,t):r},alphaMin:function(e){return arguments.length?(a=+e,t):a},alphaDecay:function(e){return arguments.length?(i=+e,t):+i},alphaTarget:function(e){return arguments.length?(n=+e,t):n},velocityDecay:function(e){return arguments.length?(o=1-e,t):1-o},randomSource:function(e){return arguments.length?(u=e,c.forEach(y),t):u},force:function(e,r){return arguments.length>1?(null==r?c.delete(e):c.set(e,y(r)),t):c.get(e)},find:function(t,r,a){var i,n,o,c,l,s=0,u=e.length;for(null==a?a=1/0:a*=a,s=0;s<u;++s)(o=(i=t-(c=e[s]).x)*i+(n=r-c.y)*n)<a&&(l=c,a=o);return l},on:function(e,r){return arguments.length>1?(s.on(e,r),t):s.on(e)}}},forceX:function(e){var t,r,a,i=Rl(.1);function n(e){for(var i,n=0,o=t.length;n<o;++n)(i=t[n]).vx+=(a[n]-i.x)*r[n]*e}function o(){if(t){var n,o=t.length;for(r=new Array(o),a=new Array(o),n=0;n<o;++n)r[n]=isNaN(a[n]=+e(t[n],n,t))?0:+i(t[n],n,t)}}return"function"!=typeof e&&(e=Rl(null==e?0:+e)),n.initialize=function(e){t=e,o()},n.strength=function(e){return arguments.length?(i="function"==typeof e?e:Rl(+e),o(),n):i},n.x=function(t){return arguments.length?(e="function"==typeof t?t:Rl(+t),o(),n):e},n},forceY:function(e){var t,r,a,i=Rl(.1);function n(e){for(var i,n=0,o=t.length;n<o;++n)(i=t[n]).vy+=(a[n]-i.y)*r[n]*e}function o(){if(t){var n,o=t.length;for(r=new Array(o),a=new Array(o),n=0;n<o;++n)r[n]=isNaN(a[n]=+e(t[n],n,t))?0:+i(t[n],n,t)}}return"function"!=typeof e&&(e=Rl(null==e?0:+e)),n.initialize=function(e){t=e,o()},n.strength=function(e){return arguments.length?(i="function"==typeof e?e:Rl(+e),o(),n):i},n.y=function(t){return arguments.length?(e="function"==typeof t?t:Rl(+t),o(),n):e},n},get format(){return Ql},formatDefaultLocale:as,formatLocale:rs,get formatPrefix(){return Xl},formatSpecifier:jl,fsum:function(e,t){const r=new W;if(void 0===t)for(let a of e)(a=+a)&&r.add(a);else{let a=-1;for(let i of e)(i=+t(i,++a,e))&&r.add(i)}return+r},geoAlbers:up,geoAlbersUsa:function(){var e,t,r,a,i,n,o=up(),c=sp().rotate([154,0]).center([-2,58.5]).parallels([55,65]),l=sp().rotate([157,0]).center([-3,19.9]).parallels([8,18]),s={point:function(e,t){n=[e,t]}};function u(e){var t=e[0],o=e[1];return n=null,r.point(t,o),n||(a.point(t,o),n)||(i.point(t,o),n)}function h(){return e=t=null,u}return u.invert=function(e){var t=o.scale(),r=o.translate(),a=(e[0]-r[0])/t,i=(e[1]-r[1])/t;return(i>=.12&&i<.234&&a>=-.425&&a<-.214?c:i>=.166&&i<.234&&a>=-.214&&a<-.115?l:o).invert(e)},u.stream=function(r){return e&&t===r?e:e=function(e){var t=e.length;return{point:function(r,a){for(var i=-1;++i<t;)e[i].point(r,a)},sphere:function(){for(var r=-1;++r<t;)e[r].sphere()},lineStart:function(){for(var r=-1;++r<t;)e[r].lineStart()},lineEnd:function(){for(var r=-1;++r<t;)e[r].lineEnd()},polygonStart:function(){for(var r=-1;++r<t;)e[r].polygonStart()},polygonEnd:function(){for(var r=-1;++r<t;)e[r].polygonEnd()}}}([o.stream(t=r),c.stream(r),l.stream(r)])},u.precision=function(e){return arguments.length?(o.precision(e),c.precision(e),l.precision(e),h()):o.precision()},u.scale=function(e){return arguments.length?(o.scale(e),c.scale(.35*e),l.scale(e),u.translate(o.translate())):o.scale()},u.translate=function(e){if(!arguments.length)return o.translate();var t=o.scale(),n=+e[0],u=+e[1];return r=o.translate(e).clipExtent([[n-.455*t,u-.238*t],[n+.455*t,u+.238*t]]).stream(s),a=c.translate([n-.307*t,u+.201*t]).clipExtent([[n-.425*t+cs,u+.12*t+cs],[n-.214*t-cs,u+.234*t-cs]]).stream(s),i=l.translate([n-.205*t,u+.212*t]).clipExtent([[n-.214*t+cs,u+.166*t+cs],[n-.115*t-cs,u+.234*t-cs]]).stream(s),h()},u.fitExtent=function(e,t){return Zd(u,e,t)},u.fitSize=function(e,t){return Qd(u,e,t)},u.fitWidth=function(e,t){return Xd(u,e,t)},u.fitHeight=function(e,t){return ep(u,e,t)},u.scale(1070)},geoArea:function(e){return tu=new W,Gs(e,ru),2*tu},geoAzimuthalEqualArea:function(){return np(pp).scale(124.75).clipAngle(179.999)},geoAzimuthalEqualAreaRaw:pp,geoAzimuthalEquidistant:function(){return np(yp).scale(79.4188).clipAngle(179.999)},geoAzimuthalEquidistantRaw:yp,geoBounds:function(e){var t,r,a,i,n,o,c;if(js=Vs=-(Ks=Js=1/0),Qs=[],Gs(e,Lu),r=Qs.length){for(Qs.sort(Wu),t=1,n=[a=Qs[0]];t<r;++t)Fu(a,(i=Qs[t])[0])||Fu(a,i[1])?(Iu(a[0],i[1])>Iu(a[0],a[1])&&(a[1]=i[1]),Iu(i[0],a[1])>Iu(a[0],a[1])&&(a[0]=i[0])):n.push(a=i);for(o=-1/0,t=0,a=n[r=n.length-1];t<=r;a=i,++t)i=n[t],(c=Iu(a[1],i[0]))>o&&(o=c,Ks=i[0],Vs=a[1])}return Qs=Xs=null,Ks===1/0||Js===1/0?[[NaN,NaN],[NaN,NaN]]:[[Ks,Js],[Vs,js]]},geoCentroid:function(e){yu=fu=mu=gu=bu=vu=xu=ku=0,wu=new W,Cu=new W,_u=new W,Gs(e,Ou);var t=+wu,r=+Cu,a=+_u,i=ks(t,r,a);return i<ls&&(t=vu,r=xu,a=ku,fu<cs&&(t=mu,r=gu,a=bu),(i=ks(t,r,a))<ls)?[NaN,NaN]:[gs(r,t)*ps,Bs(a/i)*ps]},geoCircle:function(){var e,t,r=Qu([0,0]),a=Qu(90),i=Qu(2),n={point:function(r,a){e.push(r=t(r,a)),r[0]*=ps,r[1]*=ps}};function o(){var o=r.apply(this,arguments),c=a.apply(this,arguments)*ys,l=i.apply(this,arguments)*ys;return e=[],t=th(-o[0]*ys,-o[1]*ys,0).invert,oh(n,c,l,1),o={type:"Polygon",coordinates:[e]},e=t=null,o}return o.center=function(e){return arguments.length?(r="function"==typeof e?e:Qu([+e[0],+e[1]]),o):r},o.radius=function(e){return arguments.length?(a="function"==typeof e?e:Qu(+e),o):a},o.precision=function(e){return arguments.length?(i="function"==typeof e?e:Qu(+e),o):i},o},geoClipAntimeridian:bh,geoClipCircle:vh,geoClipExtent:function(){var e,t,r,a=0,i=0,n=960,o=500;return r={stream:function(r){return e&&t===r?e:e=Ah(a,i,n,o)(t=r)},extent:function(c){return arguments.length?(a=+c[0][0],i=+c[0][1],n=+c[1][0],o=+c[1][1],e=t=null,r):[[a,i],[n,o]]}}},geoClipRectangle:Ah,geoConicConformal:function(){return cp(bp).scale(109.5).parallels([30,30])},geoConicConformalRaw:bp,geoConicEqualArea:sp,geoConicEqualAreaRaw:lp,geoConicEquidistant:function(){return cp(xp).scale(131.154).center([0,13.9389])},geoConicEquidistantRaw:xp,geoContains:function(e,t){return(e&&Ph.hasOwnProperty(e.type)?Ph[e.type]:Gh)(e,t)},geoDistance:Dh,geoEqualEarth:function(){return np(Ap).scale(177.158)},geoEqualEarthRaw:Ap,geoEquirectangular:function(){return np(vp).scale(152.63)},geoEquirectangularRaw:vp,geoGnomonic:function(){return np(Mp).scale(144.049).clipAngle(60)},geoGnomonicRaw:Mp,geoGraticule:Vh,geoGraticule10:function(){return Vh()()},geoIdentity:function(){var e,t,r,a,i,n,o,c=1,l=0,s=0,u=1,h=1,d=0,p=null,y=1,f=1,m=$d({point:function(e,t){var r=v([e,t]);this.stream.point(r[0],r[1])}}),g=qh;function b(){return y=c*u,f=c*h,n=o=null,v}function v(r){var a=r[0]*y,i=r[1]*f;if(d){var n=i*e-a*t;a=a*e+i*t,i=n}return[a+l,i+s]}return v.invert=function(r){var a=r[0]-l,i=r[1]-s;if(d){var n=i*e+a*t;a=a*e-i*t,i=n}return[a/y,i/f]},v.stream=function(e){return n&&o===e?n:n=m(g(o=e))},v.postclip=function(e){return arguments.length?(g=e,p=r=a=i=null,b()):g},v.clipExtent=function(e){return arguments.length?(g=null==e?(p=r=a=i=null,qh):Ah(p=+e[0][0],r=+e[0][1],a=+e[1][0],i=+e[1][1]),b()):null==p?null:[[p,r],[a,i]]},v.scale=function(e){return arguments.length?(c=+e,b()):c},v.translate=function(e){return arguments.length?(l=+e[0],s=+e[1],b()):[l,s]},v.angle=function(r){return arguments.length?(t=_s(d=r%360*ys),e=bs(d),b()):d*ps},v.reflectX=function(e){return arguments.length?(u=e?-1:1,b()):u<0},v.reflectY=function(e){return arguments.length?(h=e?-1:1,b()):h<0},v.fitExtent=function(e,t){return Zd(v,e,t)},v.fitSize=function(e,t){return Qd(v,e,t)},v.fitWidth=function(e,t){return Xd(v,e,t)},v.fitHeight=function(e,t){return ep(v,e,t)},v},geoInterpolate:function(e,t){var r=e[0]*ys,a=e[1]*ys,i=t[0]*ys,n=t[1]*ys,o=bs(a),c=_s(a),l=bs(n),s=_s(n),u=o*bs(r),h=o*_s(r),d=l*bs(i),p=l*_s(i),y=2*Bs(As(Ls(n-a)+o*l*Ls(i-r))),f=_s(y),m=y?function(e){var t=_s(e*=y)/f,r=_s(y-e)/f,a=r*u+t*d,i=r*h+t*p,n=r*c+t*s;return[gs(i,a)*ps,gs(n,As(a*a+i*i))*ps]}:function(){return[r*ps,a*ps]};return m.distance=y,m},geoLength:Eh,geoMercator:function(){return mp(fp).scale(961/ds)},geoMercatorRaw:fp,geoNaturalEarth1:function(){return np(Tp).scale(175.295)},geoNaturalEarth1Raw:Tp,geoOrthographic:function(){return np(Bp).scale(249.5).clipAngle(90.000001)},geoOrthographicRaw:Bp,geoPath:function(e,t){let r,a,i=3,n=4.5;function o(e){return e&&("function"==typeof n&&a.pointRadius(+n.apply(this,arguments)),Gs(e,r(a))),a.result()}return o.area=function(e){return Gs(e,r(Xh)),Xh.result()},o.measure=function(e){return Gs(e,r(Wd)),Wd.result()},o.bounds=function(e){return Gs(e,r(dd)),dd.result()},o.centroid=function(e){return Gs(e,r(wd)),wd.result()},o.projection=function(t){return arguments.length?(r=null==t?(e=null,qh):(e=t).stream,o):e},o.context=function(e){return arguments.length?(a=null==e?(t=null,new jd(i)):new Rd(t=e),"function"!=typeof n&&a.pointRadius(n),o):t},o.pointRadius=function(e){return arguments.length?(n="function"==typeof e?e:(a.pointRadius(+e),+e),o):n},o.digits=function(e){if(!arguments.length)return i;if(null==e)i=null;else{const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);i=t}return null===t&&(a=new jd(i)),o},o.projection(e).digits(i).context(t)},geoProjection:np,geoProjectionMutator:op,geoRotation:nh,geoStereographic:function(){return np(Lp).scale(250).clipAngle(142)},geoStereographicRaw:Lp,geoStream:Gs,geoTransform:function(e){return{stream:$d(e)}},geoTransverseMercator:function(){var e=mp(Ep),t=e.center,r=e.rotate;return e.center=function(e){return arguments.length?t([-e[1],e[0]]):[(e=t())[1],-e[0]]},e.rotate=function(e){return arguments.length?r([e[0],e[1],e.length>2?e[2]+90:90]):[(e=r())[0],e[1],e[2]-90]},r([0,0,90]).scale(159.155)},geoTransverseMercatorRaw:Ep,gray:ba,greatest:we,greatestIndex:function(e,t=g){if(1===t.length)return ge(e,t);let r,a=-1,i=-1;for(const n of e)++i,(a<0?0===t(n,n):t(n,r)>0)&&(r=n,a=i);return a},group:Y,groupSort:function(e,t,r){return(2!==t.length?te(q(e,t,r),(([e,t],[r,a])=>g(t,a)||g(e,r))):te(Y(e,r),(([e,r],[a,i])=>t(r,i)||g(e,a)))).map((([e])=>e))},groups:$,hcl:Aa,hierarchy:Gp,histogram:fe,hsl:ia,html:wl,image:function(e,t){return new Promise((function(r,a){var i=new Image;for(var n in t)i[n]=t[n];i.onerror=a,i.onload=function(){r(i)},i.src=e}))},index:function(e,...t){return X(e,j,Q,t)},indexes:function(e,...t){return X(e,Array.from,Q,t)},interpolate:ni,interpolateArray:function(e,t){return(Za(t)?qa:Qa)(e,t)},interpolateBasis:Fa,interpolateBasisClosed:Oa,interpolateBlues:Iv,interpolateBrBG:qb,interpolateBuGn:yv,interpolateBuPu:mv,interpolateCividis:function(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-2710.57*e)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-67.37*e)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-2475.67*e)))))))+")"},interpolateCool:Zv,interpolateCubehelix:Ci,interpolateCubehelixDefault:Uv,interpolateCubehelixLong:_i,interpolateDate:Xa,interpolateDiscrete:function(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}},interpolateGnBu:bv,interpolateGreens:Fv,interpolateGreys:zv,interpolateHcl:xi,interpolateHclLong:ki,interpolateHsl:gi,interpolateHslLong:bi,interpolateHue:function(e,t){var r=Ja(+e,+t);return function(e){var t=r(e);return t-360*Math.floor(t/360)}},interpolateInferno:nx,interpolateLab:function(e,t){var r=Va((e=va(e)).l,(t=va(t)).l),a=Va(e.a,t.a),i=Va(e.b,t.b),n=Va(e.opacity,t.opacity);return function(t){return e.l=r(t),e.a=a(t),e.b=i(t),e.opacity=n(t),e+""}},interpolateMagma:ix,interpolateNumber:ei,interpolateNumberArray:qa,interpolateObject:ti,interpolateOrRd:xv,interpolateOranges:$v,interpolatePRGn:Qb,interpolatePiYG:ev,interpolatePlasma:ox,interpolatePuBu:_v,interpolatePuBuGn:wv,interpolatePuOr:rv,interpolatePuRd:Av,interpolatePurples:Jv,interpolateRainbow:function(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return Qv.h=360*e-100,Qv.s=1.5-1.5*t,Qv.l=.8-.9*t,Qv+""},interpolateRdBu:iv,interpolateRdGy:ov,interpolateRdPu:Tv,interpolateRdYlBu:lv,interpolateRdYlGn:uv,interpolateReds:jv,interpolateRgb:ja,interpolateRgbBasis:$a,interpolateRgbBasisClosed:Ua,interpolateRound:oi,interpolateSinebow:function(e){var t;return e=(.5-e)*Math.PI,Xv.r=255*(t=Math.sin(e))*t,Xv.g=255*(t=Math.sin(e+ex))*t,Xv.b=255*(t=Math.sin(e+tx))*t,Xv+""},interpolateSpectral:dv,interpolateString:ii,interpolateTransformCss:di,interpolateTransformSvg:pi,interpolateTurbo:function(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-14825.05*e)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+707.56*e)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-6838.66*e)))))))+")"},interpolateViridis:ax,interpolateWarm:qv,interpolateYlGn:Rv,interpolateYlGnBu:Lv,interpolateYlOrBr:Dv,interpolateYlOrRd:Nv,interpolateZoom:fi,interrupt:Zi,intersection:function(e,...t){e=new O(e),t=t.map(De);e:for(const r of e)for(const a of t)if(!a.has(r)){e.delete(r);continue e}return e},interval:function(e,t,r){var a=new Ii,i=t;return null==t?(a.restart(e,t,r),a):(a._restart=a.restart,a.restart=function(e,t,r){t=+t,r=null==r?Ni():+r,a._restart((function n(o){o+=i,a._restart(n,i+=t,r),e(o)}),t,r)},a.restart(e,t,r),a)},isoFormat:Ab,isoParse:Mb,json:function(e,t){return fetch(e,t).then(vl)},lab:va,lch:function(e,t,r,a){return 1===arguments.length?Sa(e):new Ma(r,t,e,null==a?1:a)},least:function(e,t=g){let r,a=!1;if(1===t.length){let i;for(const n of e){const e=t(n);(a?g(e,i)<0:0===g(e,e))&&(r=n,i=e,a=!0)}}else for(const i of e)(a?t(i,r)<0:0===t(i,i))&&(r=i,a=!0);return r},leastIndex:Be,line:Hx,lineRadial:Ox,link:Zx,linkHorizontal:function(){return Zx(jx)},linkRadial:Qx,linkVertical:function(){return Zx(Yx)},local:hr,map:function(e,t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof t)throw new TypeError("mapper is not a function");return Array.from(e,((r,a)=>t(r,a,e)))},matcher:ct,max:me,maxIndex:ge,mean:function(e,t){let r=0,a=0;if(void 0===t)for(let i of e)null!=i&&(i=+i)>=i&&(++r,a+=i);else{let i=-1;for(let n of e)null!=(n=t(n,++i,e))&&(n=+n)>=n&&(++r,a+=n)}if(r)return a/r},median:function(e,t){return Ce(e,.5,t)},medianIndex:function(e,t){return Se(e,.5,t)},merge:Ae,min:be,minIndex:ve,mode:function(e,t){const r=new F;if(void 0===t)for(let n of e)null!=n&&n>=n&&r.set(n,(r.get(n)||0)+1);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&i>=i&&r.set(i,(r.get(i)||0)+1)}let a,i=0;for(const[n,o]of r)o>i&&(i=o,a=n);return a},namespace:Qe,namespaces:Ze,nice:pe,now:Ni,pack:function(){var e=null,t=1,r=1,a=Vp;function i(i){const n=$p();return i.x=t/2,i.y=r/2,e?i.eachBefore(sy(e)).eachAfter(uy(a,.5,n)).eachBefore(hy(1)):i.eachBefore(sy(ly)).eachAfter(uy(Vp,1,n)).eachAfter(uy(a,i.r/Math.min(t,r),n)).eachBefore(hy(Math.min(t,r)/(2*i.r))),i}return i.radius=function(t){return arguments.length?(e=Kp(t),i):e},i.size=function(e){return arguments.length?(t=+e[0],r=+e[1],i):[t,r]},i.padding=function(e){return arguments.length?(a="function"==typeof e?e:jp(+e),i):a},i},packEnclose:function(e){return Up(e,$p())},packSiblings:function(e){return cy(e,$p()),e},pairs:function(e,t=Me){const r=[];let a,i=!1;for(const n of e)i&&r.push(t(a,n)),a=n,i=!0;return r},partition:function(){var e=1,t=1,r=0,a=!1;function i(i){var n=i.height+1;return i.x0=i.y0=r,i.x1=e,i.y1=t/n,i.eachBefore(function(e,t){return function(a){a.children&&py(a,a.x0,e*(a.depth+1)/t,a.x1,e*(a.depth+2)/t);var i=a.x0,n=a.y0,o=a.x1-r,c=a.y1-r;o<i&&(i=o=(i+o)/2),c<n&&(n=c=(n+c)/2),a.x0=i,a.y0=n,a.x1=o,a.y1=c}}(t,n)),a&&i.eachBefore(dy),i}return i.round=function(e){return arguments.length?(a=!!e,i):a},i.size=function(r){return arguments.length?(e=+r[0],t=+r[1],i):[e,t]},i.padding=function(e){return arguments.length?(r=+e,i):r},i},path:Oo,pathRound:function(e=3){return new Fo(+e)},permute:ee,pie:function(){var e=Nx,t=Px,r=null,a=cx(0),i=cx(bx),n=cx(0);function o(o){var c,l,s,u,h,d=(o=Tx(o)).length,p=0,y=new Array(d),f=new Array(d),m=+a.apply(this,arguments),g=Math.min(bx,Math.max(-bx,i.apply(this,arguments)-m)),b=Math.min(Math.abs(g)/d,n.apply(this,arguments)),v=b*(g<0?-1:1);for(c=0;c<d;++c)(h=f[y[c]=c]=+e(o[c],c,o))>0&&(p+=h);for(null!=t?y.sort((function(e,r){return t(f[e],f[r])})):null!=r&&y.sort((function(e,t){return r(o[e],o[t])})),c=0,s=p?(g-d*v)/p:0;c<d;++c,m=u)l=y[c],u=m+((h=f[l])>0?h*s:0)+v,f[l]={data:o[l],index:c,value:h,startAngle:m,endAngle:u,padAngle:b};return f}return o.value=function(t){return arguments.length?(e="function"==typeof t?t:cx(+t),o):e},o.sortValues=function(e){return arguments.length?(t=e,r=null,o):t},o.sort=function(e){return arguments.length?(r=e,t=null,o):r},o.startAngle=function(e){return arguments.length?(a="function"==typeof e?e:cx(+e),o):a},o.endAngle=function(e){return arguments.length?(i="function"==typeof e?e:cx(+e),o):i},o.padAngle=function(e){return arguments.length?(n="function"==typeof e?e:cx(+e),o):n},o},piecewise:Si,pointRadial:Kx,pointer:yr,pointers:function(e,t){return e.target&&(e=pr(e),void 0===t&&(t=e.currentTarget),e=e.touches||[e]),Array.from(e,(e=>yr(e,t)))},polygonArea:function(e){for(var t,r=-1,a=e.length,i=e[a-1],n=0;++r<a;)t=i,i=e[r],n+=t[1]*i[0]-t[0]*i[1];return n/2},polygonCentroid:function(e){for(var t,r,a=-1,i=e.length,n=0,o=0,c=e[i-1],l=0;++a<i;)t=c,c=e[a],l+=r=t[0]*c[1]-c[0]*t[1],n+=(t[0]+c[0])*r,o+=(t[1]+c[1])*r;return[n/(l*=3),o/l]},polygonContains:function(e,t){for(var r,a,i=e.length,n=e[i-1],o=t[0],c=t[1],l=n[0],s=n[1],u=!1,h=0;h<i;++h)r=(n=e[h])[0],(a=n[1])>c!=s>c&&o<(l-r)*(c-a)/(s-a)+r&&(u=!u),l=r,s=a;return u},polygonHull:function(e){if((r=e.length)<3)return null;var t,r,a=new Array(r),i=new Array(r);for(t=0;t<r;++t)a[t]=[+e[t][0],+e[t][1],t];for(a.sort(Dy),t=0;t<r;++t)i[t]=[a[t][0],-a[t][1]];var n=Py(a),o=Py(i),c=o[0]===n[0],l=o[o.length-1]===n[n.length-1],s=[];for(t=n.length-1;t>=0;--t)s.push(e[a[n[t]][2]]);for(t=+c;t<o.length-l;++t)s.push(e[a[o[t]][2]]);return s},polygonLength:function(e){for(var t,r,a=-1,i=e.length,n=e[i-1],o=n[0],c=n[1],l=0;++a<i;)t=o,r=c,t-=o=(n=e[a])[0],r-=c=n[1],l+=Math.hypot(t,r);return l},precisionFixed:is,precisionPrefix:ns,precisionRound:os,quadtree:Tl,quantile:Ce,quantileIndex:Se,quantileSorted:_e,quantize:function(e,t){for(var r=new Array(t),a=0;a<t;++a)r[a]=e(a/(t-1));return r},quickselect:xe,radialArea:zx,radialLine:Ox,randomBates:zy,randomBernoulli:Vy,randomBeta:$y,randomBinomial:Uy,randomCauchy:Zy,randomExponential:Ky,randomGamma:Yy,randomGeometric:jy,randomInt:Iy,randomIrwinHall:Oy,randomLcg:function(e=Math.random()){let t=0|(0<=e&&e<1?e/ef:Math.abs(e));return()=>(t=1664525*t+1013904223|0,ef*(t>>>0))},randomLogNormal:Fy,randomLogistic:Qy,randomNormal:Wy,randomPareto:Jy,randomPoisson:Xy,randomUniform:Gy,randomWeibull:qy,range:Te,rank:function(e,t=g){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");let r=Array.from(e);const a=new Float64Array(r.length);2!==t.length&&(r=r.map(t),t=g);const i=(e,a)=>t(r[e],r[a]);let n,o;return e=Uint32Array.from(r,((e,t)=>t)),e.sort(t===g?(e,t)=>ae(r[e],r[t]):re(i)),e.forEach(((e,t)=>{const r=i(e,void 0===n?e:n);r>=0?((void 0===n||r>0)&&(n=e,o=t),a[e]=o):a[e]=NaN})),a},reduce:function(e,t,r){if("function"!=typeof t)throw new TypeError("reducer is not a function");const a=e[Symbol.iterator]();let i,n,o=-1;if(arguments.length<3){if(({done:i,value:r}=a.next()),i)return;++o}for(;({done:i,value:n}=a.next()),!i;)r=t(r,n,++o,e);return r},reverse:function(e){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(e).reverse()},rgb:Ur,ribbon:function(){return Zo()},ribbonArrow:function(){return Zo(qo)},rollup:q,rollups:Z,scaleBand:of,scaleDiverging:function e(){var t=bf(Db()(uf));return t.copy=function(){return Rb(t,e())},rf.apply(t,arguments)},scaleDivergingLog:function e(){var t=Af(Db()).domain([.1,1,10]);return t.copy=function(){return Rb(t,e()).base(t.base())},rf.apply(t,arguments)},scaleDivergingPow:Pb,scaleDivergingSqrt:function(){return Pb.apply(null,arguments).exponent(.5)},scaleDivergingSymlog:function e(){var t=Bf(Db());return t.copy=function(){return Rb(t,e()).constant(t.constant())},rf.apply(t,arguments)},scaleIdentity:function e(t){var r;function a(e){return null==e||isNaN(e=+e)?r:e}return a.invert=a,a.domain=a.range=function(e){return arguments.length?(t=Array.from(e,lf),a):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.copy=function(){return e(t).unknown(r)},t=arguments.length?Array.from(t,lf):[0,1],bf(a)},scaleImplicit:af,scaleLinear:function e(){var t=mf();return t.copy=function(){return yf(t,e())},tf.apply(t,arguments),bf(t)},scaleLog:function e(){const t=Af(ff()).domain([1,10]);return t.copy=()=>yf(t,e()).base(t.base()),tf.apply(t,arguments),t},scaleOrdinal:nf,scalePoint:function(){return cf(of.apply(null,arguments).paddingInner(1))},scalePow:Df,scaleQuantile:function e(){var t,r=[],a=[],i=[];function n(){var e=0,t=Math.max(1,a.length);for(i=new Array(t-1);++e<t;)i[e-1]=_e(r,e/t);return o}function o(e){return null==e||isNaN(e=+e)?t:a[C(i,e)]}return o.invertExtent=function(e){var t=a.indexOf(e);return t<0?[NaN,NaN]:[t>0?i[t-1]:r[0],t<i.length?i[t]:r[r.length-1]]},o.domain=function(e){if(!arguments.length)return r.slice();r=[];for(let t of e)null==t||isNaN(t=+t)||r.push(t);return r.sort(g),n()},o.range=function(e){return arguments.length?(a=Array.from(e),n()):a.slice()},o.unknown=function(e){return arguments.length?(t=e,o):t},o.quantiles=function(){return i.slice()},o.copy=function(){return e().domain(r).range(a).unknown(t)},tf.apply(o,arguments)},scaleQuantize:function e(){var t,r=0,a=1,i=1,n=[.5],o=[0,1];function c(e){return null!=e&&e<=e?o[C(n,e,0,i)]:t}function l(){var e=-1;for(n=new Array(i);++e<i;)n[e]=((e+1)*a-(e-i)*r)/(i+1);return c}return c.domain=function(e){return arguments.length?([r,a]=e,r=+r,a=+a,l()):[r,a]},c.range=function(e){return arguments.length?(i=(o=Array.from(e)).length-1,l()):o.slice()},c.invertExtent=function(e){var t=o.indexOf(e);return t<0?[NaN,NaN]:t<1?[r,n[0]]:t>=i?[n[i-1],a]:[n[t-1],n[t]]},c.unknown=function(e){return arguments.length?(t=e,c):c},c.thresholds=function(){return n.slice()},c.copy=function(){return e().domain([r,a]).range(o).unknown(t)},tf.apply(bf(c),arguments)},scaleRadial:function e(){var t,r=mf(),a=[0,1],i=!1;function n(e){var a=function(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}(r(e));return isNaN(a)?t:i?Math.round(a):a}return n.invert=function(e){return r.invert(Pf(e))},n.domain=function(e){return arguments.length?(r.domain(e),n):r.domain()},n.range=function(e){return arguments.length?(r.range((a=Array.from(e,lf)).map(Pf)),n):a.slice()},n.rangeRound=function(e){return n.range(e).round(!0)},n.round=function(e){return arguments.length?(i=!!e,n):i},n.clamp=function(e){return arguments.length?(r.clamp(e),n):r.clamp()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return e(r.domain(),a).round(i).clamp(r.clamp()).unknown(t)},tf.apply(n,arguments),bf(n)},scaleSequential:function e(){var t=bf(Eb()(uf));return t.copy=function(){return Rb(t,e())},rf.apply(t,arguments)},scaleSequentialLog:function e(){var t=Af(Eb()).domain([1,10]);return t.copy=function(){return Rb(t,e()).base(t.base())},rf.apply(t,arguments)},scaleSequentialPow:Hb,scaleSequentialQuantile:function e(){var t=[],r=uf;function a(e){if(null!=e&&!isNaN(e=+e))return r((C(t,e,1)-1)/(t.length-1))}return a.domain=function(e){if(!arguments.length)return t.slice();t=[];for(let r of e)null==r||isNaN(r=+r)||t.push(r);return t.sort(g),a},a.interpolator=function(e){return arguments.length?(r=e,a):r},a.range=function(){return t.map(((e,a)=>r(a/(t.length-1))))},a.quantiles=function(e){return Array.from({length:e+1},((r,a)=>Ce(t,a/e)))},a.copy=function(){return e(r).domain(t)},rf.apply(a,arguments)},scaleSequentialSqrt:function(){return Hb.apply(null,arguments).exponent(.5)},scaleSequentialSymlog:function e(){var t=Bf(Eb());return t.copy=function(){return Rb(t,e()).constant(t.constant())},rf.apply(t,arguments)},scaleSqrt:function(){return Df.apply(null,arguments).exponent(.5)},scaleSymlog:function e(){var t=Bf(ff());return t.copy=function(){return yf(t,e()).constant(t.constant())},tf.apply(t,arguments)},scaleThreshold:function e(){var t,r=[.5],a=[0,1],i=1;function n(e){return null!=e&&e<=e?a[C(r,e,0,i)]:t}return n.domain=function(e){return arguments.length?(r=Array.from(e),i=Math.min(r.length,a.length-1),n):r.slice()},n.range=function(e){return arguments.length?(a=Array.from(e),i=Math.min(r.length,a.length-1),n):a.slice()},n.invertExtent=function(e){var t=a.indexOf(e);return[r[t-1],r[t]]},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return e().domain(r).range(a).unknown(t)},tf.apply(n,arguments)},scaleTime:function(){return tf.apply(Lb(qm,Zm,Km,Wm,um,am,Xf,Uf,Yf,ag).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},scaleUtc:function(){return tf.apply(Lb($m,Um,Vm,Om,Sm,nm,tm,Zf,Yf,ng).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},scan:function(e,t){const r=Be(e,t);return r<0?void 0:r},schemeAccent:Ib,schemeBlues:Gv,schemeBrBG:Ub,schemeBuGn:pv,schemeBuPu:fv,schemeCategory10:Gb,schemeDark2:Wb,schemeGnBu:gv,schemeGreens:Wv,schemeGreys:Ov,schemeObservable10:Fb,schemeOrRd:vv,schemeOranges:Yv,schemePRGn:Zb,schemePaired:Ob,schemePastel1:zb,schemePastel2:Kb,schemePiYG:Xb,schemePuBu:Cv,schemePuBuGn:kv,schemePuOr:tv,schemePuRd:Sv,schemePurples:Kv,schemeRdBu:av,schemeRdGy:nv,schemeRdPu:Mv,schemeRdYlBu:cv,schemeRdYlGn:sv,schemeReds:Vv,schemeSet1:Jb,schemeSet2:Vb,schemeSet3:jb,schemeSpectral:hv,schemeTableau10:Yb,schemeYlGn:Ev,schemeYlGnBu:Bv,schemeYlOrBr:Hv,schemeYlOrRd:Pv,select:lr,selectAll:function(e){return"string"==typeof e?new or([document.querySelectorAll(e)],[document.documentElement]):new or([it(e)],nr)},selection:cr,selector:at,selectorAll:ot,shuffle:Le,shuffler:Ee,some:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");let r=-1;for(const a of e)if(t(a,++r,e))return!0;return!1},sort:te,stack:function(){var e=cx([]),t=uw,r=sw,a=hw;function i(i){var n,o,c=Array.from(e.apply(this,arguments),dw),l=c.length,s=-1;for(const e of i)for(n=0,++s;n<l;++n)(c[n][s]=[0,+a(e,c[n].key,s,i)]).data=e;for(n=0,o=Tx(t(c));n<l;++n)c[o[n]].index=n;return r(c,o),c}return i.keys=function(t){return arguments.length?(e="function"==typeof t?t:cx(Array.from(t)),i):e},i.value=function(e){return arguments.length?(a="function"==typeof e?e:cx(+e),i):a},i.order=function(e){return arguments.length?(t=null==e?uw:"function"==typeof e?e:cx(Array.from(e)),i):t},i.offset=function(e){return arguments.length?(r=null==e?sw:e,i):r},i},stackOffsetDiverging:function(e,t){if((c=e.length)>0)for(var r,a,i,n,o,c,l=0,s=e[t[0]].length;l<s;++l)for(n=o=0,r=0;r<c;++r)(i=(a=e[t[r]][l])[1]-a[0])>0?(a[0]=n,a[1]=n+=i):i<0?(a[1]=o,a[0]=o+=i):(a[0]=0,a[1]=i)},stackOffsetExpand:function(e,t){if((a=e.length)>0){for(var r,a,i,n=0,o=e[0].length;n<o;++n){for(i=r=0;r<a;++r)i+=e[r][n][1]||0;if(i)for(r=0;r<a;++r)e[r][n][1]/=i}sw(e,t)}},stackOffsetNone:sw,stackOffsetSilhouette:function(e,t){if((r=e.length)>0){for(var r,a=0,i=e[t[0]],n=i.length;a<n;++a){for(var o=0,c=0;o<r;++o)c+=e[o][a][1]||0;i[a][1]+=i[a][0]=-c/2}sw(e,t)}},stackOffsetWiggle:function(e,t){if((i=e.length)>0&&(a=(r=e[t[0]]).length)>0){for(var r,a,i,n=0,o=1;o<a;++o){for(var c=0,l=0,s=0;c<i;++c){for(var u=e[t[c]],h=u[o][1]||0,d=(h-(u[o-1][1]||0))/2,p=0;p<c;++p){var y=e[t[p]];d+=(y[o][1]||0)-(y[o-1][1]||0)}l+=h,s+=d*h}r[o-1][1]+=r[o-1][0]=n,l&&(n-=s/l)}r[o-1][1]+=r[o-1][0]=n,sw(e,t)}},stackOrderAppearance:pw,stackOrderAscending:fw,stackOrderDescending:function(e){return fw(e).reverse()},stackOrderInsideOut:function(e){var t,r,a=e.length,i=e.map(mw),n=pw(e),o=0,c=0,l=[],s=[];for(t=0;t<a;++t)r=n[t],o<c?(o+=i[r],l.push(r)):(c+=i[r],s.push(r));return s.reverse().concat(l)},stackOrderNone:uw,stackOrderReverse:function(e){return uw(e).reverse()},stratify:function(){var e,t=gy,r=by;function a(a){var i,n,o,c,l,s,u,h,d=Array.from(a),p=t,y=r,f=new Map;if(null!=e){const t=d.map(((t,r)=>function(e){let t=(e=`${e}`).length;return xy(e,t-1)&&!xy(e,t-2)&&(e=e.slice(0,-1)),"/"===e[0]?e:`/${e}`}(e(t,r,a)))),r=t.map(vy),i=new Set(t).add("");for(const e of r)i.has(e)||(i.add(e),t.push(e),r.push(vy(e)),d.push(my));p=(e,r)=>t[r],y=(e,t)=>r[t]}for(o=0,i=d.length;o<i;++o)n=d[o],s=d[o]=new zp(n),null!=(u=p(n,o,a))&&(u+="")&&(h=s.id=u,f.set(h,f.has(h)?fy:s)),null!=(u=y(n,o,a))&&(u+="")&&(s.parent=u);for(o=0;o<i;++o)if(u=(s=d[o]).parent){if(!(l=f.get(u)))throw new Error("missing: "+u);if(l===fy)throw new Error("ambiguous: "+u);l.children?l.children.push(s):l.children=[s],s.parent=l}else{if(c)throw new Error("multiple roots");c=s}if(!c)throw new Error("no root");if(null!=e){for(;c.data===my&&1===c.children.length;)c=c.children[0],--i;for(let e=d.length-1;e>=0&&(s=d[e]).data===my;--e)s.data=null}if(c.parent=yy,c.eachBefore((function(e){e.depth=e.parent.depth+1,--i})).eachBefore(Op),c.parent=null,i>0)throw new Error("cycle");return c}return a.id=function(e){return arguments.length?(t=Kp(e),a):t},a.parentId=function(e){return arguments.length?(r=Kp(e),a):r},a.path=function(t){return arguments.length?(e=Kp(t),a):e},a},style:Lt,subset:function(e,t){return Pe(t,e)},sum:function(e,t){let r=0;if(void 0===t)for(let a of e)(a=+a)&&(r+=a);else{let a=-1;for(let i of e)(i=+t(i,++a,e))&&(r+=i)}return r},superset:Pe,svg:Cl,symbol:Ak,symbolAsterisk:ek,symbolCircle:tk,symbolCross:rk,symbolDiamond:nk,symbolDiamond2:ok,symbolPlus:ck,symbolSquare:lk,symbolSquare2:sk,symbolStar:pk,symbolTimes:Ck,symbolTriangle:fk,symbolTriangle2:gk,symbolWye:wk,symbolX:Ck,symbols:_k,symbolsFill:_k,symbolsStroke:Sk,text:fl,thresholdFreedmanDiaconis:function(e,t,r){const a=R(e),i=Ce(e,.75)-Ce(e,.25);return a&&i?Math.ceil((r-t)/(2*i*Math.pow(a,-1/3))):1},thresholdScott:function(e,t,r){const a=R(e),i=G(e);return a&&i?Math.ceil((r-t)*Math.cbrt(a)/(3.49*i)):1},thresholdSturges:ye,tickFormat:gf,tickIncrement:he,tickStep:de,ticks:ue,timeDay:am,timeDays:im,get timeFormat(){return ag},timeFormatDefaultLocale:_b,timeFormatLocale:tg,timeFriday:fm,timeFridays:wm,timeHour:Xf,timeHours:em,timeInterval:If,timeMillisecond:Wf,timeMilliseconds:Ff,timeMinute:Uf,timeMinutes:qf,timeMonday:hm,timeMondays:bm,timeMonth:Wm,timeMonths:Fm,get timeParse(){return ig},timeSaturday:mm,timeSaturdays:Cm,timeSecond:Yf,timeSeconds:$f,timeSunday:um,timeSundays:gm,timeThursday:ym,timeThursdays:km,timeTickInterval:Zm,timeTicks:qm,timeTuesday:dm,timeTuesdays:vm,timeWednesday:pm,timeWednesdays:xm,timeWeek:um,timeWeeks:gm,timeYear:Km,timeYears:Jm,timeout:Ji,timer:Wi,timerFlush:Fi,transition:vn,transpose:Re,tree:My,treemap:function(){var e=Ey,t=!1,r=1,a=1,i=[0],n=Vp,o=Vp,c=Vp,l=Vp,s=Vp;function u(e){return e.x0=e.y0=0,e.x1=r,e.y1=a,e.eachBefore(h),i=[0],t&&e.eachBefore(dy),e}function h(t){var r=i[t.depth],a=t.x0+r,u=t.y0+r,h=t.x1-r,d=t.y1-r;h<a&&(a=h=(a+h)/2),d<u&&(u=d=(u+d)/2),t.x0=a,t.y0=u,t.x1=h,t.y1=d,t.children&&(r=i[t.depth+1]=n(t)/2,a+=s(t)-r,u+=o(t)-r,(h-=c(t)-r)<a&&(a=h=(a+h)/2),(d-=l(t)-r)<u&&(u=d=(u+d)/2),e(t,a,u,h,d))}return u.round=function(e){return arguments.length?(t=!!e,u):t},u.size=function(e){return arguments.length?(r=+e[0],a=+e[1],u):[r,a]},u.tile=function(t){return arguments.length?(e=Jp(t),u):e},u.padding=function(e){return arguments.length?u.paddingInner(e).paddingOuter(e):u.paddingInner()},u.paddingInner=function(e){return arguments.length?(n="function"==typeof e?e:jp(+e),u):n},u.paddingOuter=function(e){return arguments.length?u.paddingTop(e).paddingRight(e).paddingBottom(e).paddingLeft(e):u.paddingTop()},u.paddingTop=function(e){return arguments.length?(o="function"==typeof e?e:jp(+e),u):o},u.paddingRight=function(e){return arguments.length?(c="function"==typeof e?e:jp(+e),u):c},u.paddingBottom=function(e){return arguments.length?(l="function"==typeof e?e:jp(+e),u):l},u.paddingLeft=function(e){return arguments.length?(s="function"==typeof e?e:jp(+e),u):s},u},treemapBinary:function(e,t,r,a,i){var n,o,c=e.children,l=c.length,s=new Array(l+1);for(s[0]=o=n=0;n<l;++n)s[n+1]=o+=c[n].value;!function e(t,r,a,i,n,o,l){if(t>=r-1){var u=c[t];return u.x0=i,u.y0=n,u.x1=o,void(u.y1=l)}for(var h=s[t],d=a/2+h,p=t+1,y=r-1;p<y;){var f=p+y>>>1;s[f]<d?p=f+1:y=f}d-s[p-1]<s[p]-d&&t+1<p&&--p;var m=s[p]-h,g=a-m;if(o-i>l-n){var b=a?(i*g+o*m)/a:o;e(t,p,m,i,n,b,l),e(p,r,g,b,n,o,l)}else{var v=a?(n*g+l*m)/a:l;e(t,p,m,i,n,o,v),e(p,r,g,i,v,o,l)}}(0,l,e.value,t,r,a,i)},treemapDice:py,treemapResquarify:Ry,treemapSlice:Ty,treemapSliceDice:function(e,t,r,a,i){(1&e.depth?Ty:py)(e,t,r,a,i)},treemapSquarify:Ey,tsv:bl,tsvFormat:ol,tsvFormatBody:cl,tsvFormatRow:sl,tsvFormatRows:ll,tsvFormatValue:ul,tsvParse:il,tsvParseRows:nl,union:function(...e){const t=new O;for(const r of e)for(const e of r)t.add(e);return t},unixDay:cm,unixDays:lm,utcDay:nm,utcDays:om,get utcFormat(){return ng},utcFriday:Lm,utcFridays:Gm,utcHour:tm,utcHours:rm,utcMillisecond:Wf,utcMilliseconds:Ff,utcMinute:Zf,utcMinutes:Qf,utcMonday:Am,utcMondays:Hm,utcMonth:Om,utcMonths:zm,get utcParse(){return og},utcSaturday:Em,utcSaturdays:Im,utcSecond:Yf,utcSeconds:$f,utcSunday:Sm,utcSundays:Rm,utcThursday:Bm,utcThursdays:Nm,utcTickInterval:Um,utcTicks:$m,utcTuesday:Mm,utcTuesdays:Dm,utcWednesday:Tm,utcWednesdays:Pm,utcWeek:Sm,utcWeeks:Rm,utcYear:Vm,utcYears:jm,variance:N,window:At,xml:kl,zip:function(){return Re(arguments)},zoom:Lw,zoomIdentity:xw,zoomTransform:kw});class Rw extends HTMLDivElement{main_svg=null;tree_data={};static observeAttributes=["backgroundPattern","backgroundSize","customBackground"];backgroundPattern=null;backgroundSize=void 0;customBackground=void 0;backgroundPosition="center";constructor(){super()}connectedCallback(){this.className="ts-root-wrapper-element tree-spider",this.backgroundPattern=this.getAttribute("backgroundPattern")||"default",this.backgroundSize=this.getAttribute("backgroundSize"),this.backgroundSize="undefined"==this.backgroundSize?void 0:this.backgroundSize,this.customBackground=this.getAttribute("customBackground"),this.customBackground="undefined"==this.customBackground?void 0:this.customBackground,this.backgroundPosition=this.getAttribute("backgroundPosition"),this.backgroundPosition="undefined"==this.backgroundPosition?void 0:this.backgroundPosition,this.setCanvasBg()}setCanvasBg(){const e={default:()=>this.defaultDotsPatternBg(),flux:()=>this.fluxPatternBg(),quad:()=>this.quadPatternBg(),blurry:()=>this.blurryBg(),chaos:()=>this.chaosPatternBg(),flurry:()=>this.flurryPatternBg(),spiral:()=>this.spiralPatternBg(),whirling:()=>this.whirlingPatternBg(),replicate:()=>this.replicatePatternBg(),scribble:()=>this.scribblePatternBg(),squiggly:()=>this.squigglyPatternBg(),gyrrate:()=>this.gyrratePatternBg(),leaves:()=>this.leavesPatternBg(),spot:()=>this.spotPatternBg()};if("none"==this.backgroundPattern)return;const t=this.customBackground||e[this.backgroundPattern]();let r;r="object"==typeof t?(new XMLSerializer).serializeToString(t.node()):t;const a=encodeURIComponent(r).replace(/\(/g,"%28").replace(/\)/g,"%29");null!=this.backgroundSize&&(this.style.backgroundSize=this.backgroundSize||"40%"),null!=this.backgroundPosition&&(this.style.backgroundPosition=this.backgroundPosition||"center");const i="data:image/svg+xml;charset=utf-8,"+a;this.style.setProperty("--ts-root-el-bg-image","url("+i+")")}defaultDotsPatternBg(){const e=sr("svg").attr("width","20").attr("height","20");return e.append("rect").attr("width","20").attr("height","20").attr("fill","transparent"),e.append("circle").attr("cx","10").attr("cy","10").attr("r","1").attr("fill","rgb(150,150,150)"),this.style.backgroundSize=this.backgroundSize||"2%",e}fluxPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",a}quadPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",i}blurryBg(){return this.style.backgroundSize="20%",this.style.backgroundPosition=this.backgroundPosition||"center",n}chaosPatternBg(){return this.style.backgroundSize=this.backgroundSize||"50%",this.style.backgroundPosition=this.backgroundPosition||"center",o}spiralPatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",c}flurryPatternBg(){return this.style.backgroundSize=this.backgroundSize||"30%",this.style.backgroundPosition=this.backgroundPosition||"center",l}whirlingPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",s}replicatePatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",u}scribblePatternBg(){return this.style.backgroundSize=this.backgroundSize||"30%",this.style.backgroundPosition=this.backgroundPosition||"center",h}squigglyPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",d}gyrratePatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",p}leavesPatternBg(){return this.style.backgroundSize=this.backgroundSize||"40%",this.style.backgroundPosition=this.backgroundPosition||"center",y}reflectionPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",f}spotPatternBg(){return this.style.backgroundSize=this.backgroundSize||"40%",this.style.backgroundPosition=this.backgroundPosition||"center",m}}window.customElements.define("ts-root-container",Rw,{extends:"div"});class Hw extends HTMLDivElement{constructor(){super()}connectedCallback(){}}window.customElements.define("ts-element",Hw,{extends:"div"});var Dw=class extends Error{},Pw=class{constructor(e){this.faker=e,function(e){let t=Object.getPrototypeOf(e);do{for(let r of Object.getOwnPropertyNames(t))"function"==typeof e[r]&&"constructor"!==r&&(e[r]=e[r].bind(e));t=Object.getPrototypeOf(t)}while(t!==Object.prototype)}(this)}},Nw=class extends Pw{constructor(e){super(e),this.faker=e}},Gw=(e=>(e.Narrowbody="narrowbody",e.Regional="regional",e.Widebody="widebody",e))(Gw||{}),Iw=["0","1","2","3","4","5","6","7","8","9"],Ww=["0","O","1","I","L"],Fw={regional:20,narrowbody:35,widebody:60},Ow={regional:["A","B","C","D"],narrowbody:["A","B","C","D","E","F"],widebody:["A","B","C","D","E","F","G","H","J","K"]},zw=class extends Nw{airport(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airport)}airline(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airline)}airplane(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airplane)}recordLocator(e={}){let{allowNumerics:t=!1,allowVisuallySimilarCharacters:r=!1}=e,a=[];return t||a.push(...Iw),r||a.push(...Ww),this.faker.string.alphanumeric({length:6,casing:"upper",exclude:a})}seat(e={}){let{aircraftType:t="narrowbody"}=e,r=Fw[t],a=Ow[t];return`${this.faker.number.int({min:1,max:r})}${this.faker.helpers.arrayElement(a)}`}aircraftType(){return this.faker.helpers.enumValue(Gw)}flightNumber(e={}){let{length:t={min:1,max:4},addLeadingZeros:r=!1}=e,a=this.faker.string.numeric({length:t,allowLeadingZeros:!1});return r?a.padStart(4,"0"):a}},Kw=(e=>(e.SRGB="sRGB",e.DisplayP3="display-p3",e.REC2020="rec2020",e.A98RGB="a98-rgb",e.ProphotoRGB="prophoto-rgb",e))(Kw||{}),Jw=(e=>(e.RGB="rgb",e.RGBA="rgba",e.HSL="hsl",e.HSLA="hsla",e.HWB="hwb",e.CMYK="cmyk",e.LAB="lab",e.LCH="lch",e.COLOR="color",e))(Jw||{});function Vw(e){return e.map((e=>{if(e%1!=0){let t=new ArrayBuffer(4);return new DataView(t).setFloat32(0,e),Vw([...new Uint8Array(t)]).replaceAll(" ","")}return(e>>>0).toString(2).padStart(8,"0")})).join(" ")}function jw(e,t,r="rgb",a="sRGB"){switch(t){case"css":return function(e,t="rgb",r="sRGB"){let a=e=>Math.round(100*e);switch(t){case"rgba":return`rgba(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]})`;case"color":return`color(${r} ${e[0]} ${e[1]} ${e[2]})`;case"cmyk":return`cmyk(${a(e[0])}%, ${a(e[1])}%, ${a(e[2])}%, ${a(e[3])}%)`;case"hsl":return`hsl(${e[0]}deg ${a(e[1])}% ${a(e[2])}%)`;case"hsla":return`hsl(${e[0]}deg ${a(e[1])}% ${a(e[2])}% / ${a(e[3])})`;case"hwb":return`hwb(${e[0]} ${a(e[1])}% ${a(e[2])}%)`;case"lab":return`lab(${a(e[0])}% ${e[1]} ${e[2]})`;case"lch":return`lch(${a(e[0])}% ${e[1]} ${e[2]})`;case"rgb":return`rgb(${e[0]}, ${e[1]}, ${e[2]})`}}(e,r,a);case"binary":return Vw(e);case"decimal":return e}}var Yw=class extends Nw{human(){return this.faker.helpers.arrayElement(this.faker.definitions.color.human)}space(){return this.faker.helpers.arrayElement(this.faker.definitions.color.space)}cssSupportedFunction(){return this.faker.helpers.enumValue(Jw)}cssSupportedSpace(){return this.faker.helpers.enumValue(Kw)}rgb(e={}){let t,{format:r="hex",includeAlpha:a=!1,prefix:i="#",casing:n="lower"}=e,o="rgb";return"hex"===r?(t=this.faker.string.hexadecimal({length:a?8:6,prefix:""}),t=function(e,t){let{prefix:r,casing:a}=t;switch(a){case"upper":e=e.toUpperCase();break;case"lower":e=e.toLowerCase()}return r&&(e=r+e),e}(t,{prefix:i,casing:n}),t):(t=Array.from({length:3},(()=>this.faker.number.int(255))),a&&(t.push(this.faker.number.float({multipleOf:.01})),o="rgba"),jw(t,r,o))}cmyk(e={}){let{format:t="decimal"}=e;return jw(Array.from({length:4},(()=>this.faker.number.float({multipleOf:.01}))),t,"cmyk")}hsl(e={}){let{format:t="decimal",includeAlpha:r=!1}=e,a=[this.faker.number.int(360)];for(let i=0;i<(e?.includeAlpha?3:2);i++)a.push(this.faker.number.float({multipleOf:.01}));return jw(a,t,r?"hsla":"hsl")}hwb(e={}){let{format:t="decimal"}=e,r=[this.faker.number.int(360)];for(let a=0;a<2;a++)r.push(this.faker.number.float({multipleOf:.01}));return jw(r,t,"hwb")}lab(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let a=0;a<2;a++)r.push(this.faker.number.float({min:-100,max:100,multipleOf:1e-4}));return jw(r,t,"lab")}lch(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let a=0;a<2;a++)r.push(this.faker.number.float({max:230,multipleOf:.1}));return jw(r,t,"lch")}colorByCSSColorSpace(e={}){let{format:t="decimal",space:r="sRGB"}=e;return jw(Array.from({length:3},(()=>this.faker.number.float({multipleOf:1e-4}))),t,"color",r)}},$w=(e=>(e.Legacy="legacy",e.Segwit="segwit",e.Bech32="bech32",e.Taproot="taproot",e))($w||{}),Uw=(e=>(e.Mainnet="mainnet",e.Testnet="testnet",e))(Uw||{}),qw={legacy:{prefix:{mainnet:"1",testnet:"m"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},segwit:{prefix:{mainnet:"3",testnet:"2"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},bech32:{prefix:{mainnet:"bc1",testnet:"tb1"},length:{min:42,max:42},casing:"lower",exclude:"1bBiIoO"},taproot:{prefix:{mainnet:"bc1p",testnet:"tb1p"},length:{min:62,max:62},casing:"lower",exclude:"1bBiIoO"}},Zw=(e=>(e.Female="female",e.Male="male",e))(Zw||{});function Qw(e,t,r){let{generic:a,female:i,male:n}=r;switch(t){case"female":return i??a;case"male":return n??a;default:return a??e.helpers.arrayElement([i,n])??[]}}var Xw=class extends Nw{firstName(e){return this.faker.helpers.arrayElement(Qw(this.faker,e,this.faker.definitions.person.first_name))}lastName(e){if(null!=this.faker.rawDefinitions.person?.last_name_pattern){let t=this.faker.helpers.weightedArrayElement(Qw(this.faker,e,this.faker.rawDefinitions.person.last_name_pattern));return this.faker.helpers.fake(t)}return this.faker.helpers.arrayElement(Qw(this.faker,e,this.faker.definitions.person.last_name))}middleName(e){return this.faker.helpers.arrayElement(Qw(this.faker,e,this.faker.definitions.person.middle_name))}fullName(e={}){let{sex:t=this.faker.helpers.arrayElement(["female","male"]),firstName:r=this.firstName(t),lastName:a=this.lastName(t)}=e,i=this.faker.helpers.weightedArrayElement(this.faker.definitions.person.name);return this.faker.helpers.mustache(i,{"person.prefix":()=>this.prefix(t),"person.firstName":()=>r,"person.middleName":()=>this.middleName(t),"person.lastName":()=>a,"person.suffix":()=>this.suffix()})}gender(){return this.faker.helpers.arrayElement(this.faker.definitions.person.gender)}sex(){return this.faker.helpers.arrayElement(this.faker.definitions.person.sex)}sexType(){return this.faker.helpers.enumValue(Zw)}bio(){let{bio_pattern:e}=this.faker.definitions.person;return this.faker.helpers.fake(e)}prefix(e){return this.faker.helpers.arrayElement(Qw(this.faker,e,this.faker.definitions.person.prefix))}suffix(){return this.faker.helpers.arrayElement(this.faker.definitions.person.suffix)}jobTitle(){return this.faker.helpers.fake(this.faker.definitions.person.job_title_pattern)}jobDescriptor(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_descriptor)}jobArea(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_area)}jobType(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_type)}zodiacSign(){return this.faker.helpers.arrayElement(this.faker.definitions.person.western_zodiac_sign)}},eC=class{N=624;M=397;MATRIX_A=2567483615;UPPER_MASK=2147483648;LOWER_MASK=2147483647;mt=Array.from({length:this.N});mti=this.N+1;unsigned32(e){return e<0?(e^this.UPPER_MASK)+this.UPPER_MASK:e}subtraction32(e,t){return e<t?this.unsigned32(4294967296-(t-e)&4294967295):e-t}addition32(e,t){return this.unsigned32(e+t&4294967295)}multiplication32(e,t){let r=0;for(let a=0;a<32;++a)e>>>a&1&&(r=this.addition32(r,this.unsigned32(t<<a)));return r}initGenrand(e){for(this.mt[0]=this.unsigned32(4294967295&e),this.mti=1;this.mti<this.N;this.mti++)this.mt[this.mti]=this.addition32(this.multiplication32(1812433253,this.unsigned32(this.mt[this.mti-1]^this.mt[this.mti-1]>>>30)),this.mti),this.mt[this.mti]=this.unsigned32(4294967295&this.mt[this.mti])}initByArray(e,t){this.initGenrand(19650218);let r=1,a=0,i=this.N>t?this.N:t;for(;i;i--)this.mt[r]=this.addition32(this.addition32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1664525)),e[a]),a),this.mt[r]=this.unsigned32(4294967295&this.mt[r]),r++,a++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1),a>=t&&(a=0);for(i=this.N-1;i;i--)this.mt[r]=this.subtraction32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1566083941)),r),this.mt[r]=this.unsigned32(4294967295&this.mt[r]),r++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1);this.mt[0]=2147483648}mag01=[0,this.MATRIX_A];genrandInt32(){let e;if(this.mti>=this.N){let t;for(this.mti===this.N+1&&this.initGenrand(5489),t=0;t<this.N-this.M;t++)e=this.unsigned32(this.mt[t]&this.UPPER_MASK|this.mt[t+1]&this.LOWER_MASK),this.mt[t]=this.unsigned32(this.mt[t+this.M]^e>>>1^this.mag01[1&e]);for(;t<this.N-1;t++)e=this.unsigned32(this.mt[t]&this.UPPER_MASK|this.mt[t+1]&this.LOWER_MASK),this.mt[t]=this.unsigned32(this.mt[t+(this.M-this.N)]^e>>>1^this.mag01[1&e]);e=this.unsigned32(this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK),this.mt[this.N-1]=this.unsigned32(this.mt[this.M-1]^e>>>1^this.mag01[1&e]),this.mti=0}return e=this.mt[this.mti++],e=this.unsigned32(e^e>>>11),e=this.unsigned32(e^e<<7&2636928640),e=this.unsigned32(e^e<<15&4022730752),e=this.unsigned32(e^e>>>18),e}genrandInt31(){return this.genrandInt32()>>>1}genrandReal1(){return this.genrandInt32()*(1/4294967295)}genrandReal2(){return this.genrandInt32()*(1/4294967296)}genrandReal3(){return(this.genrandInt32()+.5)*(1/4294967296)}genrandRes53(){return(67108864*(this.genrandInt32()>>>5)+(this.genrandInt32()>>>6))*(1/9007199254740992)}};function tC(){let e=new eC;return e.initGenrand(Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)),{next:()=>e.genrandRes53(),seed(t){"number"==typeof t?e.initGenrand(t):Array.isArray(t)&&e.initByArray(t,t.length)}}}var rC=class extends Pw{boolean(e={}){"number"==typeof e&&(e={probability:e});let{probability:t=.5}=e;return!(t<=0)&&(t>=1||this.faker.number.float()<t)}},aC=()=>{throw new Dw("You cannot edit the locale data on the faker instance")};function iC(e,...t){if(null===e)throw new Dw(`The locale data for '${t.join(".")}' aren't applicable to this locale.\n If you think this is a bug, please report it at: https://github.com/faker-js/faker`);if(void 0===e)throw new Dw(`The locale data for '${t.join(".")}' are missing in this locale.\n Please contribute the missing data to the project or use a locale/Faker instance that has these data.\n For more information see https://fakerjs.dev/guide/localization.html`)}function nC(e,t="refDate"){let r=new Date(e);if(Number.isNaN(r.valueOf()))throw new Dw(`Invalid ${t} date: ${e.toString()}`);return r}var oC=class extends Pw{anytime(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=nC(t).getTime();return this.between({from:r-31536e6,to:r+31536e6})}past(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new Dw("Years must be greater than 0.");let a=nC(r).getTime();return this.between({from:a-365*t*24*3600*1e3,to:a-1e3})}future(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new Dw("Years must be greater than 0.");let a=nC(r).getTime();return this.between({from:a+1e3,to:a+365*t*24*3600*1e3})}between(e){if(null==e||null==e.from||null==e.to)throw new Dw("Must pass an options object with `from` and `to` values.");let{from:t,to:r}=e,a=nC(t,"from").getTime(),i=nC(r,"to").getTime();if(a>i)throw new Dw("`from` date must be before `to` date.");return new Date(this.faker.number.int({min:a,max:i}))}betweens(e){if(null==e||null==e.from||null==e.to)throw new Dw("Must pass an options object with `from` and `to` values.");let{from:t,to:r,count:a=3}=e;return this.faker.helpers.multiple((()=>this.between({from:t,to:r})),{count:a}).sort(((e,t)=>e.getTime()-t.getTime()))}recent(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new Dw("Days must be greater than 0.");let a=nC(r).getTime();return this.between({from:a-24*t*3600*1e3,to:a-1e3})}soon(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new Dw("Days must be greater than 0.");let a=nC(r).getTime();return this.between({from:a+1e3,to:a+24*t*3600*1e3})}birthdate(e={}){let{mode:t="age",min:r=18,max:a=80,refDate:i=this.faker.defaultRefDate(),mode:n,min:o,max:c}=e;if([o,c,n].filter((e=>null!=e)).length%3!=0)throw new Dw("The 'min', 'max', and 'mode' options must be set together.");let l=nC(i),s=l.getUTCFullYear();switch(t){case"age":{let e=new Date(l).setUTCFullYear(s-a-1)+864e5,t=new Date(l).setUTCFullYear(s-r);if(e>t)throw new Dw(`Max age ${a} should be greater than or equal to min age ${r}.`);return this.between({from:e,to:t})}case"year":{let e=new Date(Date.UTC(0,0,2)).setUTCFullYear(r),t=new Date(Date.UTC(0,11,30)).setUTCFullYear(a);if(e>t)throw new Dw(`Max year ${a} should be greater than or equal to min year ${r}.`);return this.between({from:e,to:t})}}}},cC=class extends oC{constructor(e){super(e),this.faker=e}month(e={}){let t,{abbreviated:r=!1,context:a=!1}=e,i=this.faker.definitions.date.month;t=r?a&&null!=i.abbr_context?"abbr_context":"abbr":a&&null!=i.wide_context?"wide_context":"wide";let n=i[t];return iC(n,"date.month",t),this.faker.helpers.arrayElement(n)}weekday(e={}){let t,{abbreviated:r=!1,context:a=!1}=e,i=this.faker.definitions.date.weekday;t=r?a&&null!=i.abbr_context?"abbr_context":"abbr":a&&null!=i.wide_context?"wide_context":"wide";let n=i[t];return iC(n,"date.weekday",t),this.faker.helpers.arrayElement(n)}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.date.time_zone)}},lC=/\.|\(/;function sC(e,t,r){let[a,i]=function(e){let t=e.indexOf(")",1);if(-1===t)throw new Dw(`Missing closing parenthesis in '${e}'`);for(;-1!==t;){let r=e.substring(1,t);try{return[t,JSON.parse(`[${r}]`)]}catch{if(!r.includes("'")&&!r.includes('"'))try{return[t,JSON.parse(`["${r}"]`)]}catch{}}t=e.indexOf(")",t+1)}return t=e.lastIndexOf(")"),[t,[e.substring(1,t)]]}(e),n=e[a+1];switch(n){case".":case"(":case void 0:break;default:throw new Dw(`Expected dot ('.'), open parenthesis ('('), or nothing after function call but got '${n}'`)}return[a+("."===n?2:1),t.map((t=>"function"==typeof t?t(...i):(console.warn(`[@faker-js/faker]: Invoking expressions which are not functions is deprecated since v9.0 and will be removed in v10.0.\nPlease remove the parentheses or replace the expression with an actual function.\n${r}\n${" ".repeat(r.length-e.length)}^`),t)))]}function uC(e,t){let r=lC.exec(e),a="."===(r?.[0]??""),i=r?.index??e.length,n=e.substring(0,i);if(0===n.length)throw new Dw(`Expression parts cannot be empty in '${e}'`);let o=e[i+1];if(a&&(null==o||"."===o||"("===o))throw new Dw(`Found dot without property name in '${e}'`);return[i+(a?1:0),t.map((e=>function(e,t){switch(typeof e){case"function":try{e=e()}catch{return}return e?.[t];case"object":return e?.[t];default:return}}(e,n)))]}function hC(e,t,r,a){let i=1;if(t)switch(t){case"?":i=e.datatype.boolean()?0:1;break;case"*":{let t=1;for(;e.datatype.boolean();)t*=2;i=e.number.int({min:0,max:t});break}case"+":{let t=1;for(;e.datatype.boolean();)t*=2;i=e.number.int({min:1,max:t});break}default:throw new Dw("Unknown quantifier symbol provided.")}else null!=r&&null!=a?i=e.number.int({min:Number.parseInt(r),max:Number.parseInt(a)}):null!=r&&null==a&&(i=Number.parseInt(r));return i}function dC(e,t="",r="#"){let a="";for(let i=0;i<t.length;i++)t.charAt(i)===r?a+=e.number.int(9):"!"===t.charAt(i)?a+=e.number.int({min:2,max:9}):a+=t.charAt(i);return a}var pC=class extends Pw{slugify(e=""){return e.normalize("NFKD").replaceAll(/[\u0300-\u036F]/g,"").replaceAll(" ","-").replaceAll(/[^\w.-]+/g,"")}replaceSymbols(e=""){let t=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],r="";for(let a=0;a<e.length;a++)"#"===e.charAt(a)?r+=this.faker.number.int(9):"?"===e.charAt(a)?r+=this.arrayElement(t):"*"===e.charAt(a)?r+=this.faker.datatype.boolean()?this.arrayElement(t):this.faker.number.int(9):r+=e.charAt(a);return r}replaceCreditCardSymbols(e="6453-####-####-####-###L",t="#"){e=function(e,t=""){let r,a,i,n,o=/(.)\{(\d+),(\d+)\}/,c=/(.)\{(\d+)\}/,l=/\[(\d+)-(\d+)\]/,s=o.exec(t);for(;null!=s;)r=Number.parseInt(s[2]),a=Number.parseInt(s[3]),r>a&&(i=a,a=r,r=i),n=e.number.int({min:r,max:a}),t=t.slice(0,s.index)+s[1].repeat(n)+t.slice(s.index+s[0].length),s=o.exec(t);for(s=c.exec(t);null!=s;)n=Number.parseInt(s[2]),t=t.slice(0,s.index)+s[1].repeat(n)+t.slice(s.index+s[0].length),s=c.exec(t);for(s=l.exec(t);null!=s;)r=Number.parseInt(s[1]),a=Number.parseInt(s[2]),r>a&&(i=a,a=r,r=i),t=t.slice(0,s.index)+e.number.int({min:r,max:a}).toString()+t.slice(s.index+s[0].length),s=l.exec(t);return t}(this.faker,e);let r=function(e){let t=function(e){let t=0,r=!1;for(let a=(e=e.replaceAll(/[\s-]/g,"")).length-1;a>=0;a--){let i=Number.parseInt(e[a]);r&&(i*=2,i>9&&(i=i%10+1)),t+=i,r=!r}return t%10}(e.replace(/L?$/,"0"));return 0===t?0:10-t}(e=dC(this.faker,e,t));return e.replace("L",String(r))}fromRegExp(e){let t=!1;e instanceof RegExp&&(t=e.flags.includes("i"),e=e.toString(),e=/\/(.+?)\//.exec(e)?.[1]??"");let r,a,i,n=/([.A-Za-z0-9])(?:\{(\d+)(?:,(\d+)|)\}|(\?|\*|\+))(?![^[]*]|[^{]*})/,o=n.exec(e);for(;null!=o;){let t=o[2],r=o[3],a=o[4];i=hC(this.faker,a,t,r),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=n.exec(e)}let c=/(\d-\d|\w-\w|\d|\w|[-!@#$&()`.+,/"])/,l=/\[(\^|)(-|)(.+?)\](?:\{(\d+)(?:,(\d+)|)\}|(\?|\*|\+)|)/;for(o=l.exec(e);null!=o;){let n="^"===o[1],s="-"===o[2],u=o[4],h=o[5],d=o[6],p=[],y=o[3],f=c.exec(y);for(s&&p.push(45);null!=f;){if(f[0].includes("-")){let e=f[0].split("-").map((e=>e.codePointAt(0)??Number.NaN));if(r=e[0],a=e[1],r>a)throw new Dw("Character range provided is out of order.");for(let i=r;i<=a;i++)if(t&&Number.isNaN(Number(String.fromCodePoint(i)))){let e=String.fromCodePoint(i);p.push(e.toUpperCase().codePointAt(0)??Number.NaN,e.toLowerCase().codePointAt(0)??Number.NaN)}else p.push(i)}else t&&Number.isNaN(Number(f[0]))?p.push(f[0].toUpperCase().codePointAt(0)??Number.NaN,f[0].toLowerCase().codePointAt(0)??Number.NaN):p.push(f[0].codePointAt(0)??Number.NaN);y=y.substring(f[0].length),f=c.exec(y)}if(i=hC(this.faker,d,u,h),n){let e=-1;for(let t=48;t<=57;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t);for(let t=65;t<=90;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t);for(let t=97;t<=122;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t)}let m=this.multiple((()=>String.fromCodePoint(this.arrayElement(p))),{count:i}).join("");e=e.slice(0,o.index)+m+e.slice(o.index+o[0].length),o=l.exec(e)}let s=/(.)\{(\d+),(\d+)\}/;for(o=s.exec(e);null!=o;){if(r=Number.parseInt(o[2]),a=Number.parseInt(o[3]),r>a)throw new Dw("Numbers out of order in {} quantifier.");i=this.faker.number.int({min:r,max:a}),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=s.exec(e)}let u=/(.)\{(\d+)\}/;for(o=u.exec(e);null!=o;)i=Number.parseInt(o[2]),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=u.exec(e);return e}shuffle(e,t={}){let{inplace:r=!1}=t;r||(e=[...e]);for(let a=e.length-1;a>0;--a){let t=this.faker.number.int(a);[e[a],e[t]]=[e[t],e[a]]}return e}uniqueArray(e,t){if(Array.isArray(e)){let r=[...new Set(e)];return this.shuffle(r).splice(0,t)}let r=new Set;try{if("function"==typeof e){let a=1e3*t,i=0;for(;r.size<t&&i<a;)r.add(e()),i++}}catch{}return[...r]}mustache(e,t){if(null==e)return"";for(let r in t){let a=new RegExp(`{{${r}}}`,"g"),i=t[r];"string"==typeof i&&(i=i.replaceAll("$","$$$$")),e=e.replace(a,i)}return e}maybe(e,t={}){if(this.faker.datatype.boolean(t))return e()}objectKey(e){let t=Object.keys(e);return this.arrayElement(t)}objectValue(e){return e[this.faker.helpers.objectKey(e)]}objectEntry(e){let t=this.faker.helpers.objectKey(e);return[t,e[t]]}arrayElement(e){if(0===e.length)throw new Dw("Cannot get value from empty dataset.");return e[e.length>1?this.faker.number.int({max:e.length-1}):0]}weightedArrayElement(e){if(0===e.length)throw new Dw("weightedArrayElement expects an array with at least one element");if(!e.every((e=>e.weight>0)))throw new Dw("weightedArrayElement expects an array of { weight, value } objects where weight is a positive number");let t=e.reduce(((e,{weight:t})=>e+t),0),r=this.faker.number.float({min:0,max:t}),a=0;for(let{weight:i,value:n}of e)if(a+=i,r<a)return n;return e.at(-1).value}arrayElements(e,t){if(0===e.length)return[];let r=this.rangeToNumber(t??{min:1,max:e.length});if(r>=e.length)return this.shuffle(e);if(r<=0)return[];let a,i,n=[...e],o=e.length,c=o-r;for(;o-- >c;)i=this.faker.number.int(o),a=n[i],n[i]=n[o],n[o]=a;return n.slice(c)}enumValue(e){let t=Object.keys(e).filter((e=>Number.isNaN(Number(e))));return e[this.arrayElement(t)]}rangeToNumber(e){return"number"==typeof e?e:this.faker.number.int(e)}multiple(e,t={}){let r=this.rangeToNumber(t.count??3);return r<=0?[]:Array.from({length:r},e)}},yC=class extends pC{constructor(e){super(e),this.faker=e}fake(e){let t=(e="string"==typeof e?e:this.arrayElement(e)).search(/{{[a-z]/),r=e.indexOf("}}",t);if(-1===t||-1===r)return e;let a=function(e,t,r=[t,t.rawDefinitions]){if(0===e.length)throw new Dw("Eval expression cannot be empty.");if(0===r.length)throw new Dw("Eval entrypoints cannot be empty.");let a=r,i=e;do{let r;i.startsWith("(")?[r,a]=sC(i,a,e):[r,a]=uC(i,a),i=i.substring(r),a=a.filter((e=>null!=e)).map((e=>Array.isArray(e)?t.helpers.arrayElement(e):e))}while(i.length>0&&a.length>0);if(0===a.length)throw new Dw(`Cannot resolve expression '${e}'`);let n=a[0];return"function"==typeof n?n():n}(e.substring(t+2,r+2).replace("}}","").replace("{{",""),this.faker),i=String(a),n=e.substring(0,t)+i+e.substring(r+2);return this.fake(n)}},fC=class extends Pw{int(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=Number.MAX_SAFE_INTEGER,multipleOf:a=1}=e;if(!Number.isInteger(a))throw new Dw("multipleOf should be an integer.");if(a<=0)throw new Dw("multipleOf should be greater than 0.");let i=Math.ceil(t/a),n=Math.floor(r/a);if(i===n)return i*a;if(n<i)throw new Dw(r>=t?`No suitable integer value between ${t} and ${r} found.`:`Max ${r} should be greater than min ${t}.`);let o=this.faker._randomizer.next(),c=n-i+1;return Math.floor(o*c+i)*a}float(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=1,fractionDigits:a,multipleOf:i,multipleOf:n=(null==a?void 0:10**-a)}=e;if(r===t)return t;if(r<t)throw new Dw(`Max ${r} should be greater than min ${t}.`);if(null!=a){if(null!=i)throw new Dw("multipleOf and fractionDigits cannot be set at the same time.");if(!Number.isInteger(a))throw new Dw("fractionDigits should be an integer.");if(a<0)throw new Dw("fractionDigits should be greater than or equal to 0.")}if(null!=n){if(n<=0)throw new Dw("multipleOf should be greater than 0.");let e=Math.log10(n),a=n<1&&Number.isInteger(e)?10**-e:1/n;return this.int({min:t*a,max:r*a})/a}return this.faker._randomizer.next()*(r-t)+t}binary(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=1}=e;return this.int({max:r,min:t}).toString(2)}octal(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=7}=e;return this.int({max:r,min:t}).toString(8)}hex(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=15}=e;return this.int({max:r,min:t}).toString(16)}bigInt(e={}){("bigint"==typeof e||"number"==typeof e||"string"==typeof e||"boolean"==typeof e)&&(e={max:e});let t=BigInt(e.min??0),r=BigInt(e.max??t+BigInt(999999999999999));if(r===t)return t;if(r<t)throw new Dw(`Max ${r} should be larger then min ${t}.`);let a=r-t;return t+BigInt(this.faker.string.numeric({length:a.toString(10).length,allowLeadingZeros:!0}))%(a+BigInt(1))}},mC=[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ"],gC=[..."abcdefghijklmnopqrstuvwxyz"],bC=[..."0123456789"],vC=class extends Pw{fromCharacters(e,t=1){if((t=this.faker.helpers.rangeToNumber(t))<=0)return"";if("string"==typeof e&&(e=[...e]),0===e.length)throw new Dw("Unable to generate string: No characters to select from.");return this.faker.helpers.multiple((()=>this.faker.helpers.arrayElement(e)),{count:t}).join("")}alpha(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let r,{casing:a="mixed"}=e,{exclude:i=[]}=e;switch("string"==typeof i&&(i=[...i]),a){case"upper":r=[...mC];break;case"lower":r=[...gC];break;case"mixed":r=[...gC,...mC]}return r=r.filter((e=>!i.includes(e))),this.fromCharacters(r,t)}alphanumeric(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let{casing:r="mixed"}=e,{exclude:a=[]}=e;"string"==typeof a&&(a=[...a]);let i=[...bC];switch(r){case"upper":i.push(...mC);break;case"lower":i.push(...gC);break;case"mixed":i.push(...gC,...mC)}return i=i.filter((e=>!a.includes(e))),this.fromCharacters(i,t)}binary(e={}){let{prefix:t="0b"}=e,r=t;return r+=this.fromCharacters(["0","1"],e.length??1),r}octal(e={}){let{prefix:t="0o"}=e,r=t;return r+=this.fromCharacters(["0","1","2","3","4","5","6","7"],e.length??1),r}hexadecimal(e={}){let{casing:t="mixed",prefix:r="0x"}=e,a=this.faker.helpers.rangeToNumber(e.length??1);if(a<=0)return r;let i=this.fromCharacters(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","A","B","C","D","E","F"],a);return"upper"===t?i=i.toUpperCase():"lower"===t&&(i=i.toLowerCase()),`${r}${i}`}numeric(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let{allowLeadingZeros:r=!0}=e,{exclude:a=[]}=e;"string"==typeof a&&(a=[...a]);let i=bC.filter((e=>!a.includes(e)));if(0===i.length||1===i.length&&!r&&"0"===i[0])throw new Dw("Unable to generate numeric string, because all possible digits are excluded.");let n="";return!r&&!a.includes("0")&&(n+=this.faker.helpers.arrayElement(i.filter((e=>"0"!==e)))),n+=this.fromCharacters(i,t-n.length),n}sample(e=10){e=this.faker.helpers.rangeToNumber(e);let t={min:33,max:125},r="";for(;r.length<e;)r+=String.fromCodePoint(this.faker.number.int(t));return r}uuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replaceAll("x",(()=>this.faker.number.hex({min:0,max:15}))).replaceAll("y",(()=>this.faker.number.hex({min:8,max:11})))}nanoid(e=21){if((e=this.faker.helpers.rangeToNumber(e))<=0)return"";let t=[{value:()=>this.alphanumeric(1),weight:62},{value:()=>this.faker.helpers.arrayElement(["_","-"]),weight:2}],r="";for(;r.length<e;)r+=this.faker.helpers.weightedArrayElement(t)();return r}symbol(e=1){return this.fromCharacters(["!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","?","@","[","\\","]","^","_","`","{","|","}","~"],e)}},xC=class{_defaultRefDate=()=>new Date;get defaultRefDate(){return this._defaultRefDate}setDefaultRefDate(e=()=>new Date){this._defaultRefDate="function"==typeof e?e:()=>new Date(e)}_randomizer;datatype=new rC(this);date=new oC(this);helpers=new pC(this);number=new fC(this);string=new vC(this);constructor(e={}){let{randomizer:t=tC()}=e;this._randomizer=t}seed(e=Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)){return this._randomizer.seed(e),e}};function kC(e){let t=`[@faker-js/faker]: ${e.deprecated} is deprecated`;e.since&&(t+=` since v${e.since}`),e.until&&(t+=` and will be removed in v${e.until}`),e.proposed&&(t+=`. Please use ${e.proposed} instead`),console.warn(`${t}.`)}new xC;var wC=class extends Nw{dog(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.dog)}cat(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cat)}snake(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.snake)}bear(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bear)}lion(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.lion)}cetacean(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cetacean)}horse(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.horse)}bird(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bird)}cow(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cow)}fish(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.fish)}crocodilia(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.crocodilia)}insect(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.insect)}rabbit(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rabbit)}rodent(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rodent)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.type)}},CC={0:[[1999999,2],[2279999,3],[2289999,4],[3689999,3],[3699999,4],[6389999,3],[6397999,4],[6399999,7],[6449999,3],[6459999,7],[6479999,3],[6489999,7],[6549999,3],[6559999,4],[6999999,3],[8499999,4],[8999999,5],[9499999,6],[9999999,7]],1:[[99999,3],[299999,2],[349999,3],[399999,4],[499999,3],[699999,2],[999999,4],[3979999,3],[5499999,4],[6499999,5],[6799999,4],[6859999,5],[7139999,4],[7169999,3],[7319999,4],[7399999,7],[7749999,5],[7753999,7],[7763999,5],[7764999,7],[7769999,5],[7782999,7],[7899999,5],[7999999,4],[8004999,5],[8049999,5],[8379999,5],[8384999,7],[8671999,5],[8675999,4],[8697999,5],[9159999,6],[9165059,7],[9168699,6],[9169079,7],[9195999,6],[9196549,7],[9729999,6],[9877999,4],[9911499,6],[9911999,7],[9989899,6],[9999999,7]]},_C=class extends Nw{department(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.department)}productName(){return`${this.productAdjective()} ${this.productMaterial()} ${this.product()}`}price(e={}){let{dec:t=2,max:r=1e3,min:a=1,symbol:i=""}=e;if(a<0||r<0)return`${i}0`;if(a===r)return`${i}${a.toFixed(t)}`;let n=this.faker.number.float({min:a,max:r,fractionDigits:t});if(0===t)return`${i}${n.toFixed(t)}`;let o=.1**t,c=n-n*10**t%10*o+this.faker.helpers.weightedArrayElement([{weight:5,value:9},{weight:3,value:5},{weight:1,value:0},{weight:1,value:this.faker.number.int({min:0,max:9})}])*o;return a<=c&&c<=r?`${i}${c.toFixed(t)}`:`${i}${n.toFixed(t)}`}productAdjective(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.adjective)}productMaterial(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.material)}product(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.product)}productDescription(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_description)}isbn(e={}){"number"==typeof e&&(e={variant:e});let{variant:t=13,separator:r="-"}=e,[a,i]=this.faker.helpers.objectEntry(CC),n=this.faker.string.numeric(8),o=Number.parseInt(n.slice(0,-1)),c=i.find((([e])=>o<=e))?.[1];if(!c)throw new Dw(`Unable to find a registrant length for the group ${a}`);let l=["978",a,n.slice(0,c),n.slice(c)];10===t&&l.shift();let s=l.join(""),u=0;for(let h=0;h<t-1;h++)u+=(10===t?h+1:h%2?3:1)*Number.parseInt(s[h]);return u=10===t?u%11:(10-u%10)%10,l.push(10===u?"X":u.toString()),l.join(r)}},SC=class extends Nw{name(){return this.faker.helpers.fake(this.faker.definitions.company.name_pattern)}catchPhrase(){return[this.catchPhraseAdjective(),this.catchPhraseDescriptor(),this.catchPhraseNoun()].join(" ")}buzzPhrase(){return[this.buzzVerb(),this.buzzAdjective(),this.buzzNoun()].join(" ")}catchPhraseAdjective(){return this.faker.helpers.arrayElement(this.faker.definitions.company.adjective)}catchPhraseDescriptor(){return this.faker.helpers.arrayElement(this.faker.definitions.company.descriptor)}catchPhraseNoun(){return this.faker.helpers.arrayElement(this.faker.definitions.company.noun)}buzzAdjective(){return this.faker.helpers.arrayElement(this.faker.definitions.company.buzz_adjective)}buzzVerb(){return this.faker.helpers.arrayElement(this.faker.definitions.company.buzz_verb)}buzzNoun(){return this.faker.helpers.arrayElement(this.faker.definitions.company.buzz_noun)}},AC=class extends Nw{column(){return this.faker.helpers.arrayElement(this.faker.definitions.database.column)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.database.type)}collation(){return this.faker.helpers.arrayElement(this.faker.definitions.database.collation)}engine(){return this.faker.helpers.arrayElement(this.faker.definitions.database.engine)}mongodbObjectId(){return this.faker.string.hexadecimal({length:24,casing:"lower",prefix:""})}},MC={alpha:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],formats:[{country:"AL",total:28,bban:[{type:"n",count:8},{type:"c",count:16}],format:"ALkk bbbs sssx cccc cccc cccc cccc"},{country:"AD",total:24,bban:[{type:"n",count:8},{type:"c",count:12}],format:"ADkk bbbb ssss cccc cccc cccc"},{country:"AT",total:20,bban:[{type:"n",count:5},{type:"n",count:11}],format:"ATkk bbbb bccc cccc cccc"},{country:"AZ",total:28,bban:[{type:"a",count:4},{type:"n",count:20}],format:"AZkk bbbb cccc cccc cccc cccc cccc"},{country:"BH",total:22,bban:[{type:"a",count:4},{type:"c",count:14}],format:"BHkk bbbb cccc cccc cccc cc"},{country:"BE",total:16,bban:[{type:"n",count:3},{type:"n",count:9}],format:"BEkk bbbc cccc ccxx"},{country:"BA",total:20,bban:[{type:"n",count:6},{type:"n",count:10}],format:"BAkk bbbs sscc cccc ccxx"},{country:"BR",total:29,bban:[{type:"n",count:13},{type:"n",count:10},{type:"a",count:1},{type:"c",count:1}],format:"BRkk bbbb bbbb ssss sccc cccc ccct n"},{country:"BG",total:22,bban:[{type:"a",count:4},{type:"n",count:6},{type:"c",count:8}],format:"BGkk bbbb ssss ddcc cccc cc"},{country:"CR",total:22,bban:[{type:"n",count:1},{type:"n",count:3},{type:"n",count:14}],format:"CRkk xbbb cccc cccc cccc cc"},{country:"HR",total:21,bban:[{type:"n",count:7},{type:"n",count:10}],format:"HRkk bbbb bbbc cccc cccc c"},{country:"CY",total:28,bban:[{type:"n",count:8},{type:"c",count:16}],format:"CYkk bbbs ssss cccc cccc cccc cccc"},{country:"CZ",total:24,bban:[{type:"n",count:10},{type:"n",count:10}],format:"CZkk bbbb ssss sscc cccc cccc"},{country:"DK",total:18,bban:[{type:"n",count:4},{type:"n",count:10}],format:"DKkk bbbb cccc cccc cc"},{country:"DO",total:28,bban:[{type:"a",count:4},{type:"n",count:20}],format:"DOkk bbbb cccc cccc cccc cccc cccc"},{country:"TL",total:23,bban:[{type:"n",count:3},{type:"n",count:16}],format:"TLkk bbbc cccc cccc cccc cxx"},{country:"EE",total:20,bban:[{type:"n",count:4},{type:"n",count:12}],format:"EEkk bbss cccc cccc cccx"},{country:"FO",total:18,bban:[{type:"n",count:4},{type:"n",count:10}],format:"FOkk bbbb cccc cccc cx"},{country:"FI",total:18,bban:[{type:"n",count:6},{type:"n",count:8}],format:"FIkk bbbb bbcc cccc cx"},{country:"FR",total:27,bban:[{type:"n",count:10},{type:"c",count:11},{type:"n",count:2}],format:"FRkk bbbb bggg ggcc cccc cccc cxx"},{country:"GE",total:22,bban:[{type:"a",count:2},{type:"n",count:16}],format:"GEkk bbcc cccc cccc cccc cc"},{country:"DE",total:22,bban:[{type:"n",count:8},{type:"n",count:10}],format:"DEkk bbbb bbbb cccc cccc cc"},{country:"GI",total:23,bban:[{type:"a",count:4},{type:"c",count:15}],format:"GIkk bbbb cccc cccc cccc ccc"},{country:"GR",total:27,bban:[{type:"n",count:7},{type:"c",count:16}],format:"GRkk bbbs sssc cccc cccc cccc ccc"},{country:"GL",total:18,bban:[{type:"n",count:4},{type:"n",count:10}],format:"GLkk bbbb cccc cccc cc"},{country:"GT",total:28,bban:[{type:"c",count:4},{type:"c",count:4},{type:"c",count:16}],format:"GTkk bbbb mmtt cccc cccc cccc cccc"},{country:"HU",total:28,bban:[{type:"n",count:8},{type:"n",count:16}],format:"HUkk bbbs sssk cccc cccc cccc cccx"},{country:"IS",total:26,bban:[{type:"n",count:6},{type:"n",count:16}],format:"ISkk bbbb sscc cccc iiii iiii ii"},{country:"IE",total:22,bban:[{type:"c",count:4},{type:"n",count:6},{type:"n",count:8}],format:"IEkk aaaa bbbb bbcc cccc cc"},{country:"IL",total:23,bban:[{type:"n",count:6},{type:"n",count:13}],format:"ILkk bbbn nncc cccc cccc ccc"},{country:"IT",total:27,bban:[{type:"a",count:1},{type:"n",count:10},{type:"c",count:12}],format:"ITkk xaaa aabb bbbc cccc cccc ccc"},{country:"JO",total:30,bban:[{type:"a",count:4},{type:"n",count:4},{type:"n",count:18}],format:"JOkk bbbb nnnn cccc cccc cccc cccc cc"},{country:"KZ",total:20,bban:[{type:"n",count:3},{type:"c",count:13}],format:"KZkk bbbc cccc cccc cccc"},{country:"XK",total:20,bban:[{type:"n",count:4},{type:"n",count:12}],format:"XKkk bbbb cccc cccc cccc"},{country:"KW",total:30,bban:[{type:"a",count:4},{type:"c",count:22}],format:"KWkk bbbb cccc cccc cccc cccc cccc cc"},{country:"LV",total:21,bban:[{type:"a",count:4},{type:"c",count:13}],format:"LVkk bbbb cccc cccc cccc c"},{country:"LB",total:28,bban:[{type:"n",count:4},{type:"c",count:20}],format:"LBkk bbbb cccc cccc cccc cccc cccc"},{country:"LI",total:21,bban:[{type:"n",count:5},{type:"c",count:12}],format:"LIkk bbbb bccc cccc cccc c"},{country:"LT",total:20,bban:[{type:"n",count:5},{type:"n",count:11}],format:"LTkk bbbb bccc cccc cccc"},{country:"LU",total:20,bban:[{type:"n",count:3},{type:"c",count:13}],format:"LUkk bbbc cccc cccc cccc"},{country:"MK",total:19,bban:[{type:"n",count:3},{type:"c",count:10},{type:"n",count:2}],format:"MKkk bbbc cccc cccc cxx"},{country:"MT",total:31,bban:[{type:"a",count:4},{type:"n",count:5},{type:"c",count:18}],format:"MTkk bbbb ssss sccc cccc cccc cccc ccc"},{country:"MR",total:27,bban:[{type:"n",count:10},{type:"n",count:13}],format:"MRkk bbbb bsss sscc cccc cccc cxx"},{country:"MU",total:30,bban:[{type:"a",count:4},{type:"n",count:4},{type:"n",count:15},{type:"a",count:3}],format:"MUkk bbbb bbss cccc cccc cccc 000d dd"},{country:"MC",total:27,bban:[{type:"n",count:10},{type:"c",count:11},{type:"n",count:2}],format:"MCkk bbbb bsss sscc cccc cccc cxx"},{country:"MD",total:24,bban:[{type:"c",count:2},{type:"c",count:18}],format:"MDkk bbcc cccc cccc cccc cccc"},{country:"ME",total:22,bban:[{type:"n",count:3},{type:"n",count:15}],format:"MEkk bbbc cccc cccc cccc xx"},{country:"NL",total:18,bban:[{type:"a",count:4},{type:"n",count:10}],format:"NLkk bbbb cccc cccc cc"},{country:"NO",total:15,bban:[{type:"n",count:4},{type:"n",count:7}],format:"NOkk bbbb cccc ccx"},{country:"PK",total:24,bban:[{type:"a",count:4},{type:"n",count:16}],format:"PKkk bbbb cccc cccc cccc cccc"},{country:"PS",total:29,bban:[{type:"c",count:4},{type:"n",count:9},{type:"n",count:12}],format:"PSkk bbbb xxxx xxxx xccc cccc cccc c"},{country:"PL",total:28,bban:[{type:"n",count:8},{type:"n",count:16}],format:"PLkk bbbs sssx cccc cccc cccc cccc"},{country:"PT",total:25,bban:[{type:"n",count:8},{type:"n",count:13}],format:"PTkk bbbb ssss cccc cccc cccx x"},{country:"QA",total:29,bban:[{type:"a",count:4},{type:"c",count:21}],format:"QAkk bbbb cccc cccc cccc cccc cccc c"},{country:"RO",total:24,bban:[{type:"a",count:4},{type:"c",count:16}],format:"ROkk bbbb cccc cccc cccc cccc"},{country:"SM",total:27,bban:[{type:"a",count:1},{type:"n",count:10},{type:"c",count:12}],format:"SMkk xaaa aabb bbbc cccc cccc ccc"},{country:"SA",total:24,bban:[{type:"n",count:2},{type:"c",count:18}],format:"SAkk bbcc cccc cccc cccc cccc"},{country:"RS",total:22,bban:[{type:"n",count:3},{type:"n",count:15}],format:"RSkk bbbc cccc cccc cccc xx"},{country:"SK",total:24,bban:[{type:"n",count:10},{type:"n",count:10}],format:"SKkk bbbb ssss sscc cccc cccc"},{country:"SI",total:19,bban:[{type:"n",count:5},{type:"n",count:10}],format:"SIkk bbss sccc cccc cxx"},{country:"ES",total:24,bban:[{type:"n",count:10},{type:"n",count:10}],format:"ESkk bbbb gggg xxcc cccc cccc"},{country:"SE",total:24,bban:[{type:"n",count:3},{type:"n",count:17}],format:"SEkk bbbc cccc cccc cccc cccc"},{country:"CH",total:21,bban:[{type:"n",count:5},{type:"c",count:12}],format:"CHkk bbbb bccc cccc cccc c"},{country:"TN",total:24,bban:[{type:"n",count:5},{type:"n",count:15}],format:"TNkk bbss sccc cccc cccc cccc"},{country:"TR",total:26,bban:[{type:"n",count:5},{type:"n",count:1},{type:"n",count:16}],format:"TRkk bbbb bxcc cccc cccc cccc cc"},{country:"AE",total:23,bban:[{type:"n",count:3},{type:"n",count:16}],format:"AEkk bbbc cccc cccc cccc ccc"},{country:"GB",total:22,bban:[{type:"a",count:4},{type:"n",count:6},{type:"n",count:8}],format:"GBkk bbbb ssss sscc cccc cc"},{country:"VG",total:24,bban:[{type:"a",count:4},{type:"n",count:16}],format:"VGkk bbbb cccc cccc cccc cccc"}],iso3166:["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"],mod97:e=>{let t=0;for(let r of e)t=(10*t+ +r)%97;return t},pattern10:["01","02","03","04","05","06","07","08","09"],pattern100:["001","002","003","004","005","006","007","008","009"],toDigitString:e=>e.replaceAll(/[A-Z]/gi,(e=>String((e.toUpperCase().codePointAt(0)??Number.NaN)-55)))},TC=MC,BC=class extends Nw{accountNumber(e={}){"number"==typeof e&&(e={length:e});let{length:t=8}=e;return this.faker.string.numeric({length:t,allowLeadingZeros:!0})}accountName(){return[this.faker.helpers.arrayElement(this.faker.definitions.finance.account_type),"Account"].join(" ")}routingNumber(){let e=this.faker.string.numeric({length:8,allowLeadingZeros:!0}),t=0;for(let r=0;r<e.length;r+=3)t+=3*Number(e[r]),t+=7*Number(e[r+1]),t+=Number(e[r+2])||0;return`${e}${10*Math.ceil(t/10)-t}`}maskedNumber(e={}){"number"==typeof e&&(e={length:e});let{ellipsis:t=!0,length:r=4,parens:a=!0}=e,i=this.faker.string.numeric({length:r});return t&&(i=`...${i}`),a&&(i=`(${i})`),i}amount(e={}){let{autoFormat:t=!1,dec:r=2,max:a=1e3,min:i=0,symbol:n=""}=e,o=this.faker.number.float({max:a,min:i,fractionDigits:r});return n+(t?o.toLocaleString(void 0,{minimumFractionDigits:r}):o.toFixed(r))}transactionType(){return this.faker.helpers.arrayElement(this.faker.definitions.finance.transaction_type)}currency(){return this.faker.helpers.arrayElement(this.faker.definitions.finance.currency)}currencyCode(){return this.currency().code}currencyName(){return this.currency().name}currencySymbol(){let e;do{e=this.currency().symbol}while(0===e.length);return e}bitcoinAddress(e={}){let{type:t=this.faker.helpers.enumValue($w),network:r="mainnet"}=e,a=qw[t],i=a.prefix[r],n=this.faker.number.int(a.length);return i+this.faker.string.alphanumeric({length:n-i.length,casing:a.casing,exclude:a.exclude})}litecoinAddress(){let e=this.faker.number.int({min:26,max:33});return this.faker.string.fromCharacters("LM3")+this.faker.string.fromCharacters("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ",e-1)}creditCardNumber(e={}){"string"==typeof e&&(e={issuer:e});let t,{issuer:r=""}=e,a=this.faker.definitions.finance.credit_card,i=r.toLowerCase();if(i in a)t=this.faker.helpers.arrayElement(a[i]);else if(r.includes("#"))t=r;else{let e=this.faker.helpers.objectValue(a);t=this.faker.helpers.arrayElement(e)}return t=t.replaceAll("/",""),this.faker.helpers.replaceCreditCardSymbols(t)}creditCardCVV(){return this.faker.string.numeric({length:3,allowLeadingZeros:!0})}creditCardIssuer(){return this.faker.helpers.objectKey(this.faker.definitions.finance.credit_card)}pin(e={}){"number"==typeof e&&(e={length:e});let{length:t=4}=e;if(t<1)throw new Dw("minimum length is 1");return this.faker.string.numeric({length:t,allowLeadingZeros:!0})}ethereumAddress(){return this.faker.string.hexadecimal({length:40,casing:"lower"})}iban(e={}){let{countryCode:t,formatted:r=!1}=e,a=t?TC.formats.find((e=>e.country===t)):this.faker.helpers.arrayElement(TC.formats);if(!a)throw new Dw(`Country code ${t} not supported.`);let i="",n=0;for(let l of a.bban){let e=l.count;for(n+=l.count;e>0;)"a"===l.type?i+=this.faker.helpers.arrayElement(TC.alpha):"c"===l.type?this.faker.datatype.boolean(.8)?i+=this.faker.number.int(9):i+=this.faker.helpers.arrayElement(TC.alpha):e>=3&&this.faker.datatype.boolean(.3)?this.faker.datatype.boolean()?(i+=this.faker.helpers.arrayElement(TC.pattern100),e-=2):(i+=this.faker.helpers.arrayElement(TC.pattern10),e--):i+=this.faker.number.int(9),e--;i=i.substring(0,n)}let o=98-TC.mod97(TC.toDigitString(`${i}${a.country}00`));o<10&&(o=`0${o}`);let c=`${a.country}${o}${i}`;return r?function(e){let t="";for(let r=0;r<e.length;r+=4)t+=`${e.substring(r,r+4)} `;return t.trimEnd()}(c):c}bic(e={}){let{includeBranchCode:t=this.faker.datatype.boolean()}=e;return`${this.faker.string.alpha({length:4,casing:"upper"})}${this.faker.helpers.arrayElement(TC.iso3166)}${this.faker.string.alphanumeric({length:2,casing:"upper"})}${t?this.faker.datatype.boolean()?this.faker.string.alphanumeric({length:3,casing:"upper"}):"XXX":""}`}transactionDescription(){let e=this.amount(),t=this.faker.company.name(),r=this.transactionType(),a=this.accountNumber();return`${r} transaction at ${t} using card ending with ***${this.maskedNumber()} for ${this.currencyCode()} ${e} in account ***${a}`}},LC=class extends Nw{adjective(){return this.faker.helpers.fake(this.faker.definitions.food.adjective)}description(){return this.faker.helpers.fake(this.faker.definitions.food.description_pattern)}dish(){let e=e=>e.split(" ").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ");return this.faker.datatype.boolean()?e(this.faker.helpers.fake(this.faker.definitions.food.dish_pattern)):e(this.faker.helpers.arrayElement(this.faker.definitions.food.dish))}ethnicCategory(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ethnic_category)}fruit(){return this.faker.helpers.arrayElement(this.faker.definitions.food.fruit)}ingredient(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ingredient)}meat(){return this.faker.helpers.arrayElement(this.faker.definitions.food.meat)}spice(){return this.faker.helpers.arrayElement(this.faker.definitions.food.spice)}vegetable(){return this.faker.helpers.arrayElement(this.faker.definitions.food.vegetable)}},EC=class extends Nw{branch(){return`${this.faker.hacker.noun().replace(" ","-")}-${this.faker.hacker.verb().replace(" ","-")}`}commitEntry(e={}){let{merge:t=this.faker.datatype.boolean({probability:.2}),eol:r="CRLF",refDate:a}=e,i=[`commit ${this.faker.git.commitSha()}`];t&&i.push(`Merge: ${this.commitSha({length:7})} ${this.commitSha({length:7})}`);let n=this.faker.person.firstName(),o=this.faker.person.lastName(),c=this.faker.person.fullName({firstName:n,lastName:o}),l=this.faker.internet.userName({firstName:n,lastName:o}),s=this.faker.helpers.arrayElement([c,l]),u=this.faker.internet.email({firstName:n,lastName:o});s=s.replaceAll(/^[.,:;"\\']|[<>\n]|[.,:;"\\']$/g,""),i.push(`Author: ${s} <${u}>`,`Date: ${this.commitDate({refDate:a})}`,"",`${"\xa0".repeat(4)}${this.commitMessage()}`,"");let h="CRLF"===r?"\r\n":"\n";return i.join(h)}commitMessage(){return`${this.faker.hacker.verb()} ${this.faker.hacker.adjective()} ${this.faker.hacker.noun()}`}commitDate(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=this.faker.date.recent({days:1,refDate:t}),a=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][r.getUTCDay()],i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][r.getUTCMonth()],n=r.getUTCDate(),o=r.getUTCHours().toString().padStart(2,"0"),c=r.getUTCMinutes().toString().padStart(2,"0"),l=r.getUTCSeconds().toString().padStart(2,"0"),s=r.getUTCFullYear(),u=this.faker.number.int({min:-11,max:12});return`${a} ${i} ${n} ${o}:${c}:${l} ${s} ${u>=0?"+":"-"}${Math.abs(u).toString().padStart(2,"0")}00`}commitSha(e={}){let{length:t=40}=e;return this.faker.string.hexadecimal({length:t,casing:"lower",prefix:""})}},RC=class extends Nw{abbreviation(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.abbreviation)}adjective(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.adjective)}noun(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.noun)}verb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.verb)}ingverb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.ingverb)}phrase(){let e={abbreviation:this.abbreviation,adjective:this.adjective,ingverb:this.ingverb,noun:this.noun,verb:this.verb},t=this.faker.helpers.arrayElement(this.faker.definitions.hacker.phrase);return this.faker.helpers.mustache(t,e)}},HC=typeof Buffer>"u"?e=>{let t=(new TextEncoder).encode(e),r=Array.from(t,(e=>String.fromCodePoint(e))).join("");return btoa(r)}:e=>Buffer.from(e).toString("base64"),DC=class extends Nw{avatar(){return this.avatarGitHub()}avatarGitHub(){return`https://avatars.githubusercontent.com/u/${this.faker.number.int(1e8)}`}avatarLegacy(){return kC({deprecated:"faker.image.avatarLegacy()",proposed:"faker.image.avatar()",since:"9.0.2",until:"10.0.0"}),`https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/${this.faker.number.int(1249)}.jpg`}url(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999})}=e;return this.faker.helpers.arrayElement([this.urlLoremFlickr,({width:e,height:t})=>this.urlPicsumPhotos({width:e,height:t,grayscale:!1,blur:0})])({width:t,height:r})}urlLoremFlickr(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),category:a}=e;return`https://loremflickr.com/${t}/${r}${null==a?"":`/${a}`}?lock=${this.faker.number.int()}`}urlPicsumPhotos(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),grayscale:a=this.faker.datatype.boolean(),blur:i=this.faker.number.int({max:10})}=e,n=`https://picsum.photos/seed/${this.faker.string.alphanumeric({length:{min:5,max:10}})}/${t}/${r}`,o="number"==typeof i&&i>=1&&i<=10;return(a||o)&&(n+="?",a&&(n+="grayscale"),a&&o&&(n+="&"),o&&(n+=`blur=${i}`)),n}urlPlaceholder(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),backgroundColor:a=this.faker.color.rgb({format:"hex",prefix:""}),textColor:i=this.faker.color.rgb({format:"hex",prefix:""}),format:n=this.faker.helpers.arrayElement(["gif","jpeg","jpg","png","webp"]),text:o=this.faker.lorem.words()}=e,c="https://via.placeholder.com";return c+=`/${t}`,c+=`x${r}`,c+=`/${a}`,c+=`/${i}`,c+=`.${n}`,c+=`?text=${encodeURIComponent(o)}`,c}dataUri(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),color:a=this.faker.color.rgb(),type:i=this.faker.helpers.arrayElements(["svg-uri","svg-base64"])}=e,n=`<svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full" width="${t}" height="${r}"><rect width="100%" height="100%" fill="${a}"/><text x="${t/2}" y="${r/2}" font-size="20" alignment-baseline="middle" text-anchor="middle" fill="white">${t}x${r}</text></svg>`;return"svg-uri"===i?`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(n)}`:`data:image/svg+xml;base64,${HC(n)}`}},PC=Object.fromEntries([["\u0410","A"],["\u0430","a"],["\u0411","B"],["\u0431","b"],["\u0412","V"],["\u0432","v"],["\u0413","G"],["\u0433","g"],["\u0414","D"],["\u0434","d"],["\u044a\u0435","ye"],["\u042a\u0435","Ye"],["\u044a\u0415","yE"],["\u042a\u0415","YE"],["\u0415","E"],["\u0435","e"],["\u0401","Yo"],["\u0451","yo"],["\u0416","Zh"],["\u0436","zh"],["\u0417","Z"],["\u0437","z"],["\u0418","I"],["\u0438","i"],["\u044b\u0439","iy"],["\u042b\u0439","Iy"],["\u042b\u0419","IY"],["\u044b\u0419","iY"],["\u0419","Y"],["\u0439","y"],["\u041a","K"],["\u043a","k"],["\u041b","L"],["\u043b","l"],["\u041c","M"],["\u043c","m"],["\u041d","N"],["\u043d","n"],["\u041e","O"],["\u043e","o"],["\u041f","P"],["\u043f","p"],["\u0420","R"],["\u0440","r"],["\u0421","S"],["\u0441","s"],["\u0422","T"],["\u0442","t"],["\u0423","U"],["\u0443","u"],["\u0424","F"],["\u0444","f"],["\u0425","Kh"],["\u0445","kh"],["\u0426","Ts"],["\u0446","ts"],["\u0427","Ch"],["\u0447","ch"],["\u0428","Sh"],["\u0448","sh"],["\u0429","Sch"],["\u0449","sch"],["\u042a",""],["\u044a",""],["\u042b","Y"],["\u044b","y"],["\u042c",""],["\u044c",""],["\u042d","E"],["\u044d","e"],["\u042e","Yu"],["\u044e","yu"],["\u042f","Ya"],["\u044f","ya"]]),NC=Object.fromEntries([["\u03b1","a"],["\u03b2","v"],["\u03b3","g"],["\u03b4","d"],["\u03b5","e"],["\u03b6","z"],["\u03b7","i"],["\u03b8","th"],["\u03b9","i"],["\u03ba","k"],["\u03bb","l"],["\u03bc","m"],["\u03bd","n"],["\u03be","ks"],["\u03bf","o"],["\u03c0","p"],["\u03c1","r"],["\u03c3","s"],["\u03c4","t"],["\u03c5","y"],["\u03c6","f"],["\u03c7","x"],["\u03c8","ps"],["\u03c9","o"],["\u03ac","a"],["\u03ad","e"],["\u03af","i"],["\u03cc","o"],["\u03cd","y"],["\u03ae","i"],["\u03ce","o"],["\u03c2","s"],["\u03ca","i"],["\u03b0","y"],["\u03cb","y"],["\u0390","i"],["\u0391","A"],["\u0392","B"],["\u0393","G"],["\u0394","D"],["\u0395","E"],["\u0396","Z"],["\u0397","I"],["\u0398","TH"],["\u0399","I"],["\u039a","K"],["\u039b","L"],["\u039c","M"],["\u039d","N"],["\u039e","KS"],["\u039f","O"],["\u03a0","P"],["\u03a1","R"],["\u03a3","S"],["\u03a4","T"],["\u03a5","Y"],["\u03a6","F"],["\u03a7","X"],["\u03a8","PS"],["\u03a9","O"],["\u0386","A"],["\u0388","E"],["\u038a","I"],["\u038c","O"],["\u038e","Y"],["\u0389","I"],["\u038f","O"],["\u03aa","I"],["\u03ab","Y"]]),GC=Object.fromEntries([["\u0621","e"],["\u0622","a"],["\u0623","a"],["\u0624","w"],["\u0625","i"],["\u0626","y"],["\u0627","a"],["\u0628","b"],["\u0629","t"],["\u062a","t"],["\u062b","th"],["\u062c","j"],["\u062d","h"],["\u062e","kh"],["\u062f","d"],["\u0630","dh"],["\u0631","r"],["\u0632","z"],["\u0633","s"],["\u0634","sh"],["\u0635","s"],["\u0636","d"],["\u0637","t"],["\u0638","z"],["\u0639","e"],["\u063a","gh"],["\u0640","_"],["\u0641","f"],["\u0642","q"],["\u0643","k"],["\u0644","l"],["\u0645","m"],["\u0646","n"],["\u0647","h"],["\u0648","w"],["\u0649","a"],["\u064a","y"],["\u064e\u200e","a"],["\u064f","u"],["\u0650\u200e","i"]]),IC=Object.fromEntries([["\u0561","a"],["\u0531","A"],["\u0562","b"],["\u0532","B"],["\u0563","g"],["\u0533","G"],["\u0564","d"],["\u0534","D"],["\u0565","ye"],["\u0535","Ye"],["\u0566","z"],["\u0536","Z"],["\u0567","e"],["\u0537","E"],["\u0568","y"],["\u0538","Y"],["\u0569","t"],["\u0539","T"],["\u056a","zh"],["\u053a","Zh"],["\u056b","i"],["\u053b","I"],["\u056c","l"],["\u053c","L"],["\u056d","kh"],["\u053d","Kh"],["\u056e","ts"],["\u053e","Ts"],["\u056f","k"],["\u053f","K"],["\u0570","h"],["\u0540","H"],["\u0571","dz"],["\u0541","Dz"],["\u0572","gh"],["\u0542","Gh"],["\u0573","tch"],["\u0543","Tch"],["\u0574","m"],["\u0544","M"],["\u0575","y"],["\u0545","Y"],["\u0576","n"],["\u0546","N"],["\u0577","sh"],["\u0547","Sh"],["\u0578","vo"],["\u0548","Vo"],["\u0579","ch"],["\u0549","Ch"],["\u057a","p"],["\u054a","P"],["\u057b","j"],["\u054b","J"],["\u057c","r"],["\u054c","R"],["\u057d","s"],["\u054d","S"],["\u057e","v"],["\u054e","V"],["\u057f","t"],["\u054f","T"],["\u0580","r"],["\u0550","R"],["\u0581","c"],["\u0551","C"],["\u0578\u0582","u"],["\u0548\u0552","U"],["\u0548\u0582","U"],["\u0583","p"],["\u0553","P"],["\u0584","q"],["\u0554","Q"],["\u0585","o"],["\u0555","O"],["\u0586","f"],["\u0556","F"],["\u0587","yev"]]),WC={...PC,...NC,...GC,...Object.fromEntries([["\u0686","ch"],["\u06a9","k"],["\u06af","g"],["\u067e","p"],["\u0698","zh"],["\u06cc","y"]]),...IC,...Object.fromEntries([["\u05d0","a"],["\u05d1","b"],["\u05d2","g"],["\u05d3","d"],["\u05d4","h"],["\u05d5","v"],["\u05d6","z"],["\u05d7","ch"],["\u05d8","t"],["\u05d9","y"],["\u05db","k"],["\u05da","kh"],["\u05dc","l"],["\u05dd","m"],["\u05de","m"],["\u05df","n"],["\u05e0","n"],["\u05e1","s"],["\u05e2","a"],["\u05e4","f"],["\u05e3","ph"],["\u05e6","ts"],["\u05e5","ts"],["\u05e7","k"],["\u05e8","r"],["\u05e9","sh"],["\u05ea","t"],["\u05d5","v"]])};var FC=class extends Nw{email(e={}){let{firstName:t,lastName:r,provider:a=this.faker.helpers.arrayElement(this.faker.definitions.internet.free_email),allowSpecialCharacters:i=!1}=e,n=this.userName({firstName:t,lastName:r});if(n=n.replaceAll(/[^A-Za-z0-9._+-]+/g,""),n=n.substring(0,50),i){let e=[..."._-"],t=[...".!#$%&'*+-/=?^_`{|}~"];n=n.replace(this.faker.helpers.arrayElement(e),this.faker.helpers.arrayElement(t))}return n=n.replaceAll(/\.{2,}/g,"."),n=n.replace(/^\./,""),n=n.replace(/\.$/,""),`${n}@${a}`}exampleEmail(e={}){let{firstName:t,lastName:r,allowSpecialCharacters:a=!1}=e,i=this.faker.helpers.arrayElement(this.faker.definitions.internet.example_email);return this.email({firstName:t,lastName:r,provider:i,allowSpecialCharacters:a})}userName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName(),lastName:a}=e,i=this.faker.helpers.arrayElement([".","_"]),n=this.faker.number.int(99),o=[()=>`${t}${i}${r}${n}`,()=>`${t}${i}${r}`];a||o.push((()=>`${t}${n}`));let c=this.faker.helpers.arrayElement(o)();return c=c.normalize("NFKD").replaceAll(/[\u0300-\u036F]/g,""),c=[...c].map((e=>{if(WC[e])return WC[e];let t=e.codePointAt(0)??Number.NaN;return t<128?e:t.toString(36)})).join(""),c=c.toString().replaceAll("'",""),c=c.replaceAll(" ",""),c}displayName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName()}=e,a=this.faker.helpers.arrayElement([".","_"]),i=this.faker.number.int(99),n=[()=>`${t}${i}`,()=>`${t}${a}${r}`,()=>`${t}${a}${r}${i}`],o=this.faker.helpers.arrayElement(n)();return o=o.toString().replaceAll("'",""),o=o.replaceAll(" ",""),o}protocol(){return this.faker.helpers.arrayElement(["http","https"])}httpMethod(){return this.faker.helpers.arrayElement(["GET","POST","PUT","DELETE","PATCH"])}httpStatusCode(e={}){let{types:t=Object.keys(this.faker.definitions.internet.http_status_code)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.http_status_code[r])}url(e={}){let{appendSlash:t=this.faker.datatype.boolean(),protocol:r="https"}=e;return`${r}://${this.domainName()}${t?"/":""}`}domainName(){return`${this.domainWord()}.${this.domainSuffix()}`}domainSuffix(){return this.faker.helpers.arrayElement(this.faker.definitions.internet.domain_suffix)}domainWord(){return this.faker.helpers.slugify(`${this.faker.word.adjective()}-${this.faker.word.noun()}`).toLowerCase()}ip(){return this.faker.datatype.boolean()?this.ipv4():this.ipv6()}ipv4(){return Array.from({length:4},(()=>this.faker.number.int(255))).join(".")}ipv6(){return Array.from({length:8},(()=>this.faker.string.hexadecimal({length:4,casing:"lower",prefix:""}))).join(":")}port(){return this.faker.number.int(65535)}userAgent(){return function(e){let t=()=>e.helpers.arrayElement(["AB","AF","AN","AR","AS","AZ","BE","BG","BN","BO","BR","BS","CA","CE","CO","CS","CU","CY","DA","DE","EL","EN","EO","ES","ET","EU","FA","FI","FJ","FO","FR","FY","GA","GD","GL","GV","HE","HI","HR","HT","HU","HY","ID","IS","IT","JA","JV","KA","KG","KO","KU","KW","KY","LA","LB","LI","LN","LT","LV","MG","MK","MN","MO","MS","MT","MY","NB","NE","NL","NN","NO","OC","PL","PT","RM","RO","RU","SC","SE","SK","SL","SO","SQ","SR","SV","SW","TK","TR","TY","UK","UR","UZ","VI","VO","YI","ZH"]),r=t=>e.helpers.arrayElement({lin:["i686","x86_64"],mac:["Intel","PPC","U; Intel","U; PPC"],win:["","WOW64","Win64; x64"]}[t]),a=()=>[e.number.int({min:1,max:4}),e.number.int(9),e.number.int({min:1e4,max:99999}),e.number.int(9)].join("."),i=()=>[e.number.int({min:5,max:6}),e.number.int(3)].join("."),n=()=>e.number.int({min:7,max:11}),o=()=>[e.number.int({min:3,max:7}),e.number.int(1)].join("."),c=t=>[10,e.number.int({min:5,max:10}),e.number.int(9)].join(t||"."),l=()=>[e.number.int({min:13,max:39}),0,e.number.int({min:800,max:899}),0].join("."),s=()=>`2.9.${e.number.int({min:160,max:190})}`,u=()=>`${e.number.int({min:10,max:12})}.00`,h=()=>[e.number.int({min:531,max:538}),e.number.int(2),e.number.int(2)].join("."),d={firefox(t){let a=`${e.number.int({min:5,max:15})}${(()=>{let t="";for(let r=0;r<2;r++)t+=`.${e.string.numeric({allowLeadingZeros:!0})}`;return t})()}`,n=`Gecko/20100101 Firefox/${a}`,o=r(t);return`Mozilla/5.0 ${"win"===t?`(Windows NT ${i()}${o?`; ${o}`:""}`:"mac"===t?`(Macintosh; ${o} Mac OS X ${c()}`:`(X11; Linux ${o}`}; rv:${a.slice(0,-2)}) ${n}`},iexplorer(){let t=n();return t>=11?`Mozilla/5.0 (Windows NT 6.${e.number.int({min:1,max:3})}; Trident/7.0; ${e.datatype.boolean()?"Touch; ":""}rv:11.0) like Gecko`:`Mozilla/5.0 (compatible; MSIE ${t}.0; Windows NT ${i()}; Trident/${o()}${e.datatype.boolean()?`; .NET CLR ${a()}`:""})`},opera(a){let n=` Presto/${s()} Version/${u()})`,o="win"===a?`(Windows NT ${i()}; U; ${t()}${n}`:"lin"===a?`(X11; Linux ${r(a)}; U; ${t()}${n}`:`(Macintosh; Intel Mac OS X ${c()} U; ${t()} Presto/${s()} Version/${u()})`;return`Opera/${e.number.int({min:9,max:14})}.${e.number.int(99)} ${o}`},safari(a){let n=h(),o=`${e.number.int({min:4,max:7})}.${e.number.int(1)}.${e.number.int(10)}`;return`Mozilla/5.0 ${"mac"===a?`(Macintosh; ${r("mac")} Mac OS X ${c("_")} rv:${e.number.int({min:2,max:6})}.0; ${t()}) `:`(Windows; U; Windows NT ${i()})`}AppleWebKit/${n} (KHTML, like Gecko) Version/${o} Safari/${n}`},chrome(e){let t=h();return`Mozilla/5.0 ${"mac"===e?`(Macintosh; ${r("mac")} Mac OS X ${c("_")}) `:"win"===e?`(Windows; U; Windows NT ${i()})`:`(X11; Linux ${r(e)}`} AppleWebKit/${t} (KHTML, like Gecko) Chrome/${l()} Safari/${t}`}},[p,y]=(()=>{let t={chrome:["win","mac","lin"],firefox:["win","mac","lin"],opera:["win","mac","lin"],safari:["win","mac"],iexplorer:["win"]},r=e.helpers.objectKey(t);return[r,e.helpers.arrayElement(t[r])]})();return d[p](y)}(this.faker)}color(e={}){let{redBase:t=0,greenBase:r=0,blueBase:a=0}=e,i=e=>Math.floor((this.faker.number.int(256)+e)/2).toString(16).padStart(2,"0");return`#${i(t)}${i(r)}${i(a)}`}mac(e={}){"string"==typeof e&&(e={separator:e});let t,{separator:r=":"}=e,a="";for([":","-",""].includes(r)||(r=":"),t=0;t<12;t++)a+=this.faker.number.hex(15),t%2==1&&11!==t&&(a+=r);return a}password(e={}){let t=/[aeiouAEIOU]$/,r=/[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/,a=(e,i,n,o)=>{if(o.length>=e)return o;i&&(n=r.test(o)?t:r);let c=this.faker.number.int(94)+33,l=String.fromCodePoint(c);return i&&(l=l.toLowerCase()),n.test(l)?a(e,i,n,o+l):a(e,i,n,o)},{length:i=15,memorable:n=!1,pattern:o=/\w/,prefix:c=""}=e;return a(i,n,o,c)}emoji(e={}){let{types:t=Object.keys(this.faker.definitions.internet.emoji)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.emoji[r])}},OC=class extends Nw{zipCode(e={}){"string"==typeof e&&(e={format:e});let{state:t}=e;if(null!=t){let e=this.faker.definitions.location.postcode_by_state[t];if(null==e)throw new Dw(`No zip code definition found for state "${t}"`);return this.faker.helpers.fake(e)}let{format:r=this.faker.definitions.location.postcode}=e;return"string"==typeof r&&(r=[r]),r=this.faker.helpers.arrayElement(r),this.faker.helpers.replaceSymbols(r)}city(){return this.faker.helpers.fake(this.faker.definitions.location.city_pattern)}buildingNumber(){return this.faker.helpers.arrayElement(this.faker.definitions.location.building_number).replaceAll(/#+/g,(e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1})))}street(){return this.faker.helpers.fake(this.faker.definitions.location.street_pattern)}streetAddress(e={}){"boolean"==typeof e&&(e={useFullAddress:e});let{useFullAddress:t}=e,r=this.faker.definitions.location.street_address[t?"full":"normal"];return this.faker.helpers.fake(r)}secondaryAddress(){return this.faker.helpers.fake(this.faker.definitions.location.secondary_address).replaceAll(/#+/g,(e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1})))}county(){return this.faker.helpers.arrayElement(this.faker.definitions.location.county)}country(){return this.faker.helpers.arrayElement(this.faker.definitions.location.country)}countryCode(e={}){"string"==typeof e&&(e={variant:e});let{variant:t="alpha-2"}=e,r=(()=>{switch(t){case"numeric":return"numeric";case"alpha-3":return"alpha3";case"alpha-2":return"alpha2"}})();return this.faker.helpers.arrayElement(this.faker.definitions.location.country_code)[r]}state(e={}){let{abbreviated:t=!1}=e,r=t?this.faker.definitions.location.state_abbr:this.faker.definitions.location.state;return this.faker.helpers.arrayElement(r)}latitude(e={}){let{max:t=90,min:r=-90,precision:a=4}=e;return this.faker.number.float({min:r,max:t,fractionDigits:a})}longitude(e={}){let{max:t=180,min:r=-180,precision:a=4}=e;return this.faker.number.float({max:t,min:r,fractionDigits:a})}direction(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal_abbr,...this.faker.definitions.location.direction.ordinal_abbr]):this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal,...this.faker.definitions.location.direction.ordinal])}cardinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal)}ordinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal)}nearbyGPSCoordinate(e={}){let{origin:t,radius:r=10,isMetric:a=!1}=e;if(null==t)return[this.latitude(),this.longitude()];let i=this.faker.number.float({max:2*Math.PI,fractionDigits:5}),n=a?r:1.60934*r,o=.995*this.faker.number.float({max:n,fractionDigits:3})/(4e4/360),c=[t[0]+Math.sin(i)*o,t[1]+Math.cos(i)*o];return c[0]=c[0]%180,(c[0]<-90||c[0]>90)&&(c[0]=180*Math.sign(c[0])-c[0],c[1]+=180),c[1]=(c[1]%360+540)%360-180,[c[0],c[1]]}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.location.time_zone)}},zC={fail:()=>{throw new Dw("No words found that match the given length.")},closest:(e,t)=>{let r=function(e,t,r=e=>e){let a={};for(let i of e){let e=t(i);void 0===a[e]&&(a[e]=[]),a[e].push(r(i))}return a}(e,(e=>e.length)),a=Object.keys(r).map(Number),i=Math.min(...a),n=Math.max(...a),o=Math.min(t.min-i,n-t.max);return e.filter((e=>e.length===t.min-o||e.length===t.max+o))},shortest:e=>{let t=Math.min(...e.map((e=>e.length)));return e.filter((e=>e.length===t))},longest:e=>{let t=Math.max(...e.map((e=>e.length)));return e.filter((e=>e.length===t))},"any-length":e=>[...e]};function KC(e){let{wordList:t,length:r,strategy:a="any-length"}=e;if(r){let e="number"==typeof r?e=>e.length===r:e=>e.length>=r.min&&e.length<=r.max,i=t.filter(e);return i.length>0?i:"number"==typeof r?zC[a](t,{min:r,max:r}):zC[a](t,r)}return"shortest"===a||"longest"===a?zC[a](t):[...t]}var JC=class extends Nw{word(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(KC({...t,wordList:this.faker.definitions.lorem.word}))}words(e=3){return this.faker.helpers.multiple((()=>this.word()),{count:e}).join(" ")}sentence(e={min:3,max:10}){let t=this.words(e);return`${t.charAt(0).toUpperCase()+t.substring(1)}.`}slug(e=3){let t=this.words(e);return this.faker.helpers.slugify(t)}sentences(e={min:2,max:6},t=" "){return this.faker.helpers.multiple((()=>this.sentence()),{count:e}).join(t)}paragraph(e=3){return this.sentences(e)}paragraphs(e=3,t="\n"){return this.faker.helpers.multiple((()=>this.paragraph()),{count:e}).join(t)}text(){return this[this.faker.helpers.arrayElement(["sentence","sentences","paragraph","paragraphs","lines"])]()}lines(e={min:1,max:5}){return this.sentences(e,"\n")}},VC=class extends Nw{album(){return this.faker.helpers.arrayElement(this.faker.definitions.music.album)}artist(){return this.faker.helpers.arrayElement(this.faker.definitions.music.artist)}genre(){return this.faker.helpers.arrayElement(this.faker.definitions.music.genre)}songName(){return this.faker.helpers.arrayElement(this.faker.definitions.music.song_name)}},jC=class extends Nw{number(e={}){let{style:t="human"}=e,r=this.faker.definitions.phone_number.format[t];if(!r)throw new Error(`No definitions for ${t} in this locale`);let a=this.faker.helpers.arrayElement(r);return dC(this.faker,a)}imei(){return this.faker.helpers.replaceCreditCardSymbols("##-######-######-L","#")}},YC=class extends Nw{chemicalElement(){return this.faker.helpers.arrayElement(this.faker.definitions.science.chemical_element)}unit(){return this.faker.helpers.arrayElement(this.faker.definitions.science.unit)}},$C=["video","audio","image","text","application"],UC=["application/pdf","audio/mpeg","audio/wav","image/png","image/jpeg","image/gif","video/mp4","video/mpeg","text/html"],qC=["en","wl","ww"],ZC={index:"o",slot:"s",mac:"x",pci:"p"},QC=["SUN","MON","TUE","WED","THU","FRI","SAT"],XC=class extends Nw{fileName(e={}){let{extensionCount:t=1}=e,r=this.faker.word.words().toLowerCase().replaceAll(/\W/g,"_"),a=this.faker.helpers.multiple((()=>this.fileExt()),{count:t}).join(".");return 0===a.length?r:`${r}.${a}`}commonFileName(e){return`${this.fileName({extensionCount:0})}.${e||this.commonFileExt()}`}mimeType(){let e=Object.keys(this.faker.definitions.system.mime_type);return this.faker.helpers.arrayElement(e)}commonFileType(){return this.faker.helpers.arrayElement($C)}commonFileExt(){return this.fileExt(this.faker.helpers.arrayElement(UC))}fileType(){let e=this.faker.definitions.system.mime_type,t=new Set(Object.keys(e).map((e=>e.split("/")[0])));return this.faker.helpers.arrayElement([...t])}fileExt(e){let t=this.faker.definitions.system.mime_type;if("string"==typeof e)return this.faker.helpers.arrayElement(t[e].extensions);let r=new Set(Object.values(t).flatMap((({extensions:e})=>e)));return this.faker.helpers.arrayElement([...r])}directoryPath(){let e=this.faker.definitions.system.directory_path;return this.faker.helpers.arrayElement(e)}filePath(){return`${this.directoryPath()}/${this.fileName()}`}semver(){return[this.faker.number.int(9),this.faker.number.int(9),this.faker.number.int(9)].join(".")}networkInterface(e={}){let t,{interfaceType:r=this.faker.helpers.arrayElement(qC),interfaceSchema:a=this.faker.helpers.objectKey(ZC)}=e,i="",n=()=>this.faker.string.numeric({allowLeadingZeros:!0});switch(a){case"index":t=n();break;case"slot":t=`${n()}${this.faker.helpers.maybe((()=>`f${n()}`))??""}${this.faker.helpers.maybe((()=>`d${n()}`))??""}`;break;case"mac":t=this.faker.internet.mac("");break;case"pci":i=this.faker.helpers.maybe((()=>`P${n()}`))??"",t=`${n()}s${n()}${this.faker.helpers.maybe((()=>`f${n()}`))??""}${this.faker.helpers.maybe((()=>`d${n()}`))??""}`}return`${i}${r}${ZC[a]}${t}`}cron(e={}){let{includeYear:t=!1,includeNonStandard:r=!1}=e,a=[this.faker.number.int(59),"*"],i=[this.faker.number.int(23),"*"],n=[this.faker.number.int({min:1,max:31}),"*","?"],o=[this.faker.number.int({min:1,max:12}),"*"],c=[this.faker.number.int(6),this.faker.helpers.arrayElement(QC),"*","?"],l=[this.faker.number.int({min:1970,max:2099}),"*"],s=this.faker.helpers.arrayElement(a),u=this.faker.helpers.arrayElement(i),h=this.faker.helpers.arrayElement(n),d=this.faker.helpers.arrayElement(o),p=this.faker.helpers.arrayElement(c),y=this.faker.helpers.arrayElement(l),f=`${s} ${u} ${h} ${d} ${p}`;return t&&(f+=` ${y}`),!r||this.faker.datatype.boolean()?f:this.faker.helpers.arrayElement(["@annually","@daily","@hourly","@monthly","@reboot","@weekly","@yearly"])}},e_=class extends Nw{vehicle(){return`${this.manufacturer()} ${this.model()}`}manufacturer(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.manufacturer)}model(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.model)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.type)}fuel(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.fuel)}vin(){let e=["o","i","q","O","I","Q"];return`${this.faker.string.alphanumeric({length:10,casing:"upper",exclude:e})}${this.faker.string.alpha({length:1,casing:"upper",exclude:e})}${this.faker.string.alphanumeric({length:1,casing:"upper",exclude:e})}${this.faker.string.numeric({length:5,allowLeadingZeros:!0})}`}color(){return this.faker.color.human()}vrm(){return`${this.faker.string.alpha({length:2,casing:"upper"})}${this.faker.string.numeric({length:2,allowLeadingZeros:!0})}${this.faker.string.alpha({length:3,casing:"upper"})}`}bicycle(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.bicycle_type)}},t_=class extends Nw{adjective(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(KC({...t,wordList:this.faker.definitions.word.adjective}))}adverb(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(KC({...t,wordList:this.faker.definitions.word.adverb}))}conjunction(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(KC({...t,wordList:this.faker.definitions.word.conjunction}))}interjection(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(KC({...t,wordList:this.faker.definitions.word.interjection}))}noun(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(KC({...t,wordList:this.faker.definitions.word.noun}))}preposition(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(KC({...t,wordList:this.faker.definitions.word.preposition}))}verb(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(KC({...t,wordList:this.faker.definitions.word.verb}))}sample(e={}){let t=this.faker.helpers.shuffle([this.adjective,this.adverb,this.conjunction,this.interjection,this.noun,this.preposition,this.verb]);for(let r of t)try{return r(e)}catch{continue}throw new Dw("No matching word data available for the current locale")}words(e={}){"number"==typeof e&&(e={count:e});let{count:t={min:1,max:3}}=e;return this.faker.helpers.multiple((()=>this.sample()),{count:t}).join(" ")}},r_=["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New_York","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],a_={color:{space:["Academy Color Encoding System (ACES)","Adobe RGB","Adobe Wide Gamut RGB","British Standard Colour (BS)","CIE 1931 XYZ","CIELAB","CIELUV","CIEUVW","CMY","CMYK","DCI-P3","Display-P3","Federal Standard 595C","HKS","HSL","HSLA","HSLuv","HSV","HWB","LCh","LMS","Munsell Color System","Natural Color System (NSC)","Pantone Matching System (PMS)","ProPhoto RGB Color Space","RAL","RG","RGBA","RGK","Rec. 2020","Rec. 2100","Rec. 601","Rec. 709","Uniform Color Spaces (UCSs)","YDbDr","YIQ","YPbPr","sRGB","sYCC","scRGB","xvYCC"]},database:{collation:["ascii_bin","ascii_general_ci","cp1250_bin","cp1250_general_ci","utf8_bin","utf8_general_ci","utf8_unicode_ci"],engine:["ARCHIVE","BLACKHOLE","CSV","InnoDB","MEMORY","MyISAM"],type:["bigint","binary","bit","blob","boolean","date","datetime","decimal","double","enum","float","geometry","int","mediumint","point","real","serial","set","smallint","text","time","timestamp","tinyint","varchar"]},date:{time_zone:r_},hacker:{abbreviation:["ADP","AGP","AI","API","ASCII","CLI","COM","CSS","DNS","DRAM","EXE","FTP","GB","HDD","HEX","HTTP","IB","IP","JBOD","JSON","OCR","PCI","PNG","RAM","RSS","SAS","SCSI","SDD","SMS","SMTP","SQL","SSD","SSL","TCP","THX","TLS","UDP","USB","UTF8","VGA","XML","XSS"]},internet:{emoji:{smiley:["\ud83d\ude00","\ud83d\ude03","\ud83d\ude04","\ud83d\ude01","\ud83d\ude06","\ud83d\ude05","\ud83e\udd23","\ud83d\ude02","\ud83d\ude42","\ud83d\ude43","\ud83d\ude09","\ud83d\ude0a","\ud83d\ude07","\ud83e\udd70","\ud83d\ude0d","\ud83e\udd29","\ud83d\ude18","\ud83d\ude17","\u263a\ufe0f","\ud83d\ude1a","\ud83d\ude19","\ud83e\udd72","\ud83d\ude0b","\ud83d\ude1b","\ud83d\ude1c","\ud83e\udd2a","\ud83d\ude1d","\ud83e\udd11","\ud83e\udd17","\ud83e\udd2d","\ud83e\udd2b","\ud83e\udd14","\ud83e\udd10","\ud83e\udd28","\ud83d\ude10","\ud83d\ude11","\ud83d\ude36","\ud83d\ude36\u200d\ud83c\udf2b\ufe0f","\ud83d\ude0f","\ud83d\ude12","\ud83d\ude44","\ud83d\ude2c","\ud83d\ude2e\u200d\ud83d\udca8","\ud83e\udd25","\ud83d\ude0c","\ud83d\ude14","\ud83d\ude2a","\ud83e\udd24","\ud83d\ude34","\ud83d\ude37","\ud83e\udd12","\ud83e\udd15","\ud83e\udd22","\ud83e\udd2e","\ud83e\udd27","\ud83e\udd75","\ud83e\udd76","\ud83e\udd74","\ud83d\ude35","\ud83d\ude35\u200d\ud83d\udcab","\ud83e\udd2f","\ud83e\udd20","\ud83e\udd73","\ud83e\udd78","\ud83d\ude0e","\ud83e\udd13","\ud83e\uddd0","\ud83d\ude15","\ud83d\ude1f","\ud83d\ude41","\u2639\ufe0f","\ud83d\ude2e","\ud83d\ude2f","\ud83d\ude32","\ud83d\ude33","\ud83e\udd7a","\ud83d\ude26","\ud83d\ude27","\ud83d\ude28","\ud83d\ude30","\ud83d\ude25","\ud83d\ude22","\ud83d\ude2d","\ud83d\ude31","\ud83d\ude16","\ud83d\ude23","\ud83d\ude1e","\ud83d\ude13","\ud83d\ude29","\ud83d\ude2b","\ud83e\udd71","\ud83d\ude24","\ud83d\ude21","\ud83d\ude20","\ud83e\udd2c","\ud83d\ude08","\ud83d\udc7f","\ud83d\udc80","\u2620\ufe0f","\ud83d\udca9","\ud83e\udd21","\ud83d\udc79","\ud83d\udc7a","\ud83d\udc7b","\ud83d\udc7d","\ud83d\udc7e","\ud83e\udd16","\ud83d\ude3a","\ud83d\ude38","\ud83d\ude39","\ud83d\ude3b","\ud83d\ude3c","\ud83d\ude3d","\ud83d\ude40","\ud83d\ude3f","\ud83d\ude3e","\ud83d\ude48","\ud83d\ude49","\ud83d\ude4a","\ud83d\udc8b","\ud83d\udc8c","\ud83d\udc98","\ud83d\udc9d","\ud83d\udc96","\ud83d\udc97","\ud83d\udc93","\ud83d\udc9e","\ud83d\udc95","\ud83d\udc9f","\u2763\ufe0f","\ud83d\udc94","\u2764\ufe0f\u200d\ud83d\udd25","\u2764\ufe0f\u200d\ud83e\ude79","\u2764\ufe0f","\ud83e\udde1","\ud83d\udc9b","\ud83d\udc9a","\ud83d\udc99","\ud83d\udc9c","\ud83e\udd0e","\ud83d\udda4","\ud83e\udd0d","\ud83d\udcaf","\ud83d\udca2","\ud83d\udca5","\ud83d\udcab","\ud83d\udca6","\ud83d\udca8","\ud83d\udd73\ufe0f","\ud83d\udca3","\ud83d\udcac","\ud83d\udc41\ufe0f\u200d\ud83d\udde8\ufe0f","\ud83d\udde8\ufe0f","\ud83d\uddef\ufe0f","\ud83d\udcad","\ud83d\udca4"],body:["\ud83d\udc4b","\ud83d\udc4b\ud83c\udffb","\ud83d\udc4b\ud83c\udffc","\ud83d\udc4b\ud83c\udffd","\ud83d\udc4b\ud83c\udffe","\ud83d\udc4b\ud83c\udfff","\ud83e\udd1a","\ud83e\udd1a\ud83c\udffb","\ud83e\udd1a\ud83c\udffc","\ud83e\udd1a\ud83c\udffd","\ud83e\udd1a\ud83c\udffe","\ud83e\udd1a\ud83c\udfff","\ud83d\udd90\ufe0f","\ud83d\udd90\ud83c\udffb","\ud83d\udd90\ud83c\udffc","\ud83d\udd90\ud83c\udffd","\ud83d\udd90\ud83c\udffe","\ud83d\udd90\ud83c\udfff","\u270b","\u270b\ud83c\udffb","\u270b\ud83c\udffc","\u270b\ud83c\udffd","\u270b\ud83c\udffe","\u270b\ud83c\udfff","\ud83d\udd96","\ud83d\udd96\ud83c\udffb","\ud83d\udd96\ud83c\udffc","\ud83d\udd96\ud83c\udffd","\ud83d\udd96\ud83c\udffe","\ud83d\udd96\ud83c\udfff","\ud83d\udc4c","\ud83d\udc4c\ud83c\udffb","\ud83d\udc4c\ud83c\udffc","\ud83d\udc4c\ud83c\udffd","\ud83d\udc4c\ud83c\udffe","\ud83d\udc4c\ud83c\udfff","\ud83e\udd0c","\ud83e\udd0c\ud83c\udffb","\ud83e\udd0c\ud83c\udffc","\ud83e\udd0c\ud83c\udffd","\ud83e\udd0c\ud83c\udffe","\ud83e\udd0c\ud83c\udfff","\ud83e\udd0f","\ud83e\udd0f\ud83c\udffb","\ud83e\udd0f\ud83c\udffc","\ud83e\udd0f\ud83c\udffd","\ud83e\udd0f\ud83c\udffe","\ud83e\udd0f\ud83c\udfff","\u270c\ufe0f","\u270c\ud83c\udffb","\u270c\ud83c\udffc","\u270c\ud83c\udffd","\u270c\ud83c\udffe","\u270c\ud83c\udfff","\ud83e\udd1e","\ud83e\udd1e\ud83c\udffb","\ud83e\udd1e\ud83c\udffc","\ud83e\udd1e\ud83c\udffd","\ud83e\udd1e\ud83c\udffe","\ud83e\udd1e\ud83c\udfff","\ud83e\udd1f","\ud83e\udd1f\ud83c\udffb","\ud83e\udd1f\ud83c\udffc","\ud83e\udd1f\ud83c\udffd","\ud83e\udd1f\ud83c\udffe","\ud83e\udd1f\ud83c\udfff","\ud83e\udd18","\ud83e\udd18\ud83c\udffb","\ud83e\udd18\ud83c\udffc","\ud83e\udd18\ud83c\udffd","\ud83e\udd18\ud83c\udffe","\ud83e\udd18\ud83c\udfff","\ud83e\udd19","\ud83e\udd19\ud83c\udffb","\ud83e\udd19\ud83c\udffc","\ud83e\udd19\ud83c\udffd","\ud83e\udd19\ud83c\udffe","\ud83e\udd19\ud83c\udfff","\ud83d\udc48","\ud83d\udc48\ud83c\udffb","\ud83d\udc48\ud83c\udffc","\ud83d\udc48\ud83c\udffd","\ud83d\udc48\ud83c\udffe","\ud83d\udc48\ud83c\udfff","\ud83d\udc49","\ud83d\udc49\ud83c\udffb","\ud83d\udc49\ud83c\udffc","\ud83d\udc49\ud83c\udffd","\ud83d\udc49\ud83c\udffe","\ud83d\udc49\ud83c\udfff","\ud83d\udc46","\ud83d\udc46\ud83c\udffb","\ud83d\udc46\ud83c\udffc","\ud83d\udc46\ud83c\udffd","\ud83d\udc46\ud83c\udffe","\ud83d\udc46\ud83c\udfff","\ud83d\udd95","\ud83d\udd95\ud83c\udffb","\ud83d\udd95\ud83c\udffc","\ud83d\udd95\ud83c\udffd","\ud83d\udd95\ud83c\udffe","\ud83d\udd95\ud83c\udfff","\ud83d\udc47","\ud83d\udc47\ud83c\udffb","\ud83d\udc47\ud83c\udffc","\ud83d\udc47\ud83c\udffd","\ud83d\udc47\ud83c\udffe","\ud83d\udc47\ud83c\udfff","\u261d\ufe0f","\u261d\ud83c\udffb","\u261d\ud83c\udffc","\u261d\ud83c\udffd","\u261d\ud83c\udffe","\u261d\ud83c\udfff","\ud83d\udc4d","\ud83d\udc4d\ud83c\udffb","\ud83d\udc4d\ud83c\udffc","\ud83d\udc4d\ud83c\udffd","\ud83d\udc4d\ud83c\udffe","\ud83d\udc4d\ud83c\udfff","\ud83d\udc4e","\ud83d\udc4e\ud83c\udffb","\ud83d\udc4e\ud83c\udffc","\ud83d\udc4e\ud83c\udffd","\ud83d\udc4e\ud83c\udffe","\ud83d\udc4e\ud83c\udfff","\u270a","\u270a\ud83c\udffb","\u270a\ud83c\udffc","\u270a\ud83c\udffd","\u270a\ud83c\udffe","\u270a\ud83c\udfff","\ud83d\udc4a","\ud83d\udc4a\ud83c\udffb","\ud83d\udc4a\ud83c\udffc","\ud83d\udc4a\ud83c\udffd","\ud83d\udc4a\ud83c\udffe","\ud83d\udc4a\ud83c\udfff","\ud83e\udd1b","\ud83e\udd1b\ud83c\udffb","\ud83e\udd1b\ud83c\udffc","\ud83e\udd1b\ud83c\udffd","\ud83e\udd1b\ud83c\udffe","\ud83e\udd1b\ud83c\udfff","\ud83e\udd1c","\ud83e\udd1c\ud83c\udffb","\ud83e\udd1c\ud83c\udffc","\ud83e\udd1c\ud83c\udffd","\ud83e\udd1c\ud83c\udffe","\ud83e\udd1c\ud83c\udfff","\ud83d\udc4f","\ud83d\udc4f\ud83c\udffb","\ud83d\udc4f\ud83c\udffc","\ud83d\udc4f\ud83c\udffd","\ud83d\udc4f\ud83c\udffe","\ud83d\udc4f\ud83c\udfff","\ud83d\ude4c","\ud83d\ude4c\ud83c\udffb","\ud83d\ude4c\ud83c\udffc","\ud83d\ude4c\ud83c\udffd","\ud83d\ude4c\ud83c\udffe","\ud83d\ude4c\ud83c\udfff","\ud83d\udc50","\ud83d\udc50\ud83c\udffb","\ud83d\udc50\ud83c\udffc","\ud83d\udc50\ud83c\udffd","\ud83d\udc50\ud83c\udffe","\ud83d\udc50\ud83c\udfff","\ud83e\udd32","\ud83e\udd32\ud83c\udffb","\ud83e\udd32\ud83c\udffc","\ud83e\udd32\ud83c\udffd","\ud83e\udd32\ud83c\udffe","\ud83e\udd32\ud83c\udfff","\ud83e\udd1d","\ud83d\ude4f","\ud83d\ude4f\ud83c\udffb","\ud83d\ude4f\ud83c\udffc","\ud83d\ude4f\ud83c\udffd","\ud83d\ude4f\ud83c\udffe","\ud83d\ude4f\ud83c\udfff","\u270d\ufe0f","\u270d\ud83c\udffb","\u270d\ud83c\udffc","\u270d\ud83c\udffd","\u270d\ud83c\udffe","\u270d\ud83c\udfff","\ud83d\udc85","\ud83d\udc85\ud83c\udffb","\ud83d\udc85\ud83c\udffc","\ud83d\udc85\ud83c\udffd","\ud83d\udc85\ud83c\udffe","\ud83d\udc85\ud83c\udfff","\ud83e\udd33","\ud83e\udd33\ud83c\udffb","\ud83e\udd33\ud83c\udffc","\ud83e\udd33\ud83c\udffd","\ud83e\udd33\ud83c\udffe","\ud83e\udd33\ud83c\udfff","\ud83d\udcaa","\ud83d\udcaa\ud83c\udffb","\ud83d\udcaa\ud83c\udffc","\ud83d\udcaa\ud83c\udffd","\ud83d\udcaa\ud83c\udffe","\ud83d\udcaa\ud83c\udfff","\ud83e\uddbe","\ud83e\uddbf","\ud83e\uddb5","\ud83e\uddb5\ud83c\udffb","\ud83e\uddb5\ud83c\udffc","\ud83e\uddb5\ud83c\udffd","\ud83e\uddb5\ud83c\udffe","\ud83e\uddb5\ud83c\udfff","\ud83e\uddb6","\ud83e\uddb6\ud83c\udffb","\ud83e\uddb6\ud83c\udffc","\ud83e\uddb6\ud83c\udffd","\ud83e\uddb6\ud83c\udffe","\ud83e\uddb6\ud83c\udfff","\ud83d\udc42","\ud83d\udc42\ud83c\udffb","\ud83d\udc42\ud83c\udffc","\ud83d\udc42\ud83c\udffd","\ud83d\udc42\ud83c\udffe","\ud83d\udc42\ud83c\udfff","\ud83e\uddbb","\ud83e\uddbb\ud83c\udffb","\ud83e\uddbb\ud83c\udffc","\ud83e\uddbb\ud83c\udffd","\ud83e\uddbb\ud83c\udffe","\ud83e\uddbb\ud83c\udfff","\ud83d\udc43","\ud83d\udc43\ud83c\udffb","\ud83d\udc43\ud83c\udffc","\ud83d\udc43\ud83c\udffd","\ud83d\udc43\ud83c\udffe","\ud83d\udc43\ud83c\udfff","\ud83e\udde0","\ud83e\udec0","\ud83e\udec1","\ud83e\uddb7","\ud83e\uddb4","\ud83d\udc40","\ud83d\udc41\ufe0f","\ud83d\udc45","\ud83d\udc44"],person:["\ud83d\udc76","\ud83d\udc76\ud83c\udffb","\ud83d\udc76\ud83c\udffc","\ud83d\udc76\ud83c\udffd","\ud83d\udc76\ud83c\udffe","\ud83d\udc76\ud83c\udfff","\ud83e\uddd2","\ud83e\uddd2\ud83c\udffb","\ud83e\uddd2\ud83c\udffc","\ud83e\uddd2\ud83c\udffd","\ud83e\uddd2\ud83c\udffe","\ud83e\uddd2\ud83c\udfff","\ud83d\udc66","\ud83d\udc66\ud83c\udffb","\ud83d\udc66\ud83c\udffc","\ud83d\udc66\ud83c\udffd","\ud83d\udc66\ud83c\udffe","\ud83d\udc66\ud83c\udfff","\ud83d\udc67","\ud83d\udc67\ud83c\udffb","\ud83d\udc67\ud83c\udffc","\ud83d\udc67\ud83c\udffd","\ud83d\udc67\ud83c\udffe","\ud83d\udc67\ud83c\udfff","\ud83e\uddd1","\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udfff","\ud83d\udc71","\ud83d\udc71\ud83c\udffb","\ud83d\udc71\ud83c\udffc","\ud83d\udc71\ud83c\udffd","\ud83d\udc71\ud83c\udffe","\ud83d\udc71\ud83c\udfff","\ud83d\udc68","\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udfff","\ud83e\uddd4","\ud83e\uddd4\ud83c\udffb","\ud83e\uddd4\ud83c\udffc","\ud83e\uddd4\ud83c\udffd","\ud83e\uddd4\ud83c\udffe","\ud83e\uddd4\ud83c\udfff","\ud83e\uddd4\u200d\u2642\ufe0f","\ud83e\uddd4\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddd4\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddd4\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddd4\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddd4\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddd4\u200d\u2640\ufe0f","\ud83e\uddd4\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddd4\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddd4\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddd4\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddd4\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udc68\u200d\ud83e\uddb0","\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddb0","\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddb0","\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddb0","\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddb0","\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddb0","\ud83d\udc68\u200d\ud83e\uddb1","\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddb1","\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddb1","\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddb1","\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddb1","\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddb1","\ud83d\udc68\u200d\ud83e\uddb3","\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddb3","\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddb3","\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddb3","\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddb3","\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddb3","\ud83d\udc68\u200d\ud83e\uddb2","\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddb2","\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddb2","\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddb2","\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddb2","\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddb2","\ud83d\udc69","\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udfff","\ud83d\udc69\u200d\ud83e\uddb0","\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddb0","\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddb0","\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddb0","\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb0","\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddb0","\ud83e\uddd1\u200d\ud83e\uddb0","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddb0","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddb0","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddb0","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddb0","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddb0","\ud83d\udc69\u200d\ud83e\uddb1","\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddb1","\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddb1","\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddb1","\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb1","\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddb1","\ud83e\uddd1\u200d\ud83e\uddb1","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddb1","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddb1","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddb1","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddb1","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddb1","\ud83d\udc69\u200d\ud83e\uddb3","\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddb3","\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddb3","\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddb3","\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3","\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddb3","\ud83e\uddd1\u200d\ud83e\uddb3","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddb3","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddb3","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddb3","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddb3","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddb3","\ud83d\udc69\u200d\ud83e\uddb2","\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddb2","\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddb2","\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddb2","\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb2","\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddb2","\ud83e\uddd1\u200d\ud83e\uddb2","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddb2","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddb2","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddb2","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddb2","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddb2","\ud83d\udc71\u200d\u2640\ufe0f","\ud83d\udc71\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udc71\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udc71\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udc71\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udc71\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udc71\u200d\u2642\ufe0f","\ud83d\udc71\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udc71\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udc71\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udc71\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udc71\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddd3","\ud83e\uddd3\ud83c\udffb","\ud83e\uddd3\ud83c\udffc","\ud83e\uddd3\ud83c\udffd","\ud83e\uddd3\ud83c\udffe","\ud83e\uddd3\ud83c\udfff","\ud83d\udc74","\ud83d\udc74\ud83c\udffb","\ud83d\udc74\ud83c\udffc","\ud83d\udc74\ud83c\udffd","\ud83d\udc74\ud83c\udffe","\ud83d\udc74\ud83c\udfff","\ud83d\udc75","\ud83d\udc75\ud83c\udffb","\ud83d\udc75\ud83c\udffc","\ud83d\udc75\ud83c\udffd","\ud83d\udc75\ud83c\udffe","\ud83d\udc75\ud83c\udfff","\ud83d\ude4d","\ud83d\ude4d\ud83c\udffb","\ud83d\ude4d\ud83c\udffc","\ud83d\ude4d\ud83c\udffd","\ud83d\ude4d\ud83c\udffe","\ud83d\ude4d\ud83c\udfff","\ud83d\ude4d\u200d\u2642\ufe0f","\ud83d\ude4d\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\ude4d\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\ude4d\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\ude4d\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\ude4d\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\ude4d\u200d\u2640\ufe0f","\ud83d\ude4d\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\ude4d\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\ude4d\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\ude4d\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\ude4d\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\ude4e","\ud83d\ude4e\ud83c\udffb","\ud83d\ude4e\ud83c\udffc","\ud83d\ude4e\ud83c\udffd","\ud83d\ude4e\ud83c\udffe","\ud83d\ude4e\ud83c\udfff","\ud83d\ude4e\u200d\u2642\ufe0f","\ud83d\ude4e\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\ude4e\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\ude4e\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\ude4e\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\ude4e\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\ude4e\u200d\u2640\ufe0f","\ud83d\ude4e\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\ude4e\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\ude4e\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\ude4e\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\ude4e\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\ude45","\ud83d\ude45\ud83c\udffb","\ud83d\ude45\ud83c\udffc","\ud83d\ude45\ud83c\udffd","\ud83d\ude45\ud83c\udffe","\ud83d\ude45\ud83c\udfff","\ud83d\ude45\u200d\u2642\ufe0f","\ud83d\ude45\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\ude45\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\ude45\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\ude45\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\ude45\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\ude45\u200d\u2640\ufe0f","\ud83d\ude45\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\ude45\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\ude45\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\ude45\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\ude45\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\ude46","\ud83d\ude46\ud83c\udffb","\ud83d\ude46\ud83c\udffc","\ud83d\ude46\ud83c\udffd","\ud83d\ude46\ud83c\udffe","\ud83d\ude46\ud83c\udfff","\ud83d\ude46\u200d\u2642\ufe0f","\ud83d\ude46\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\ude46\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\ude46\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\ude46\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\ude46\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\ude46\u200d\u2640\ufe0f","\ud83d\ude46\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\ude46\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\ude46\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\ude46\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\ude46\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udc81","\ud83d\udc81\ud83c\udffb","\ud83d\udc81\ud83c\udffc","\ud83d\udc81\ud83c\udffd","\ud83d\udc81\ud83c\udffe","\ud83d\udc81\ud83c\udfff","\ud83d\udc81\u200d\u2642\ufe0f","\ud83d\udc81\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udc81\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udc81\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udc81\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udc81\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udc81\u200d\u2640\ufe0f","\ud83d\udc81\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udc81\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udc81\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udc81\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udc81\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\ude4b","\ud83d\ude4b\ud83c\udffb","\ud83d\ude4b\ud83c\udffc","\ud83d\ude4b\ud83c\udffd","\ud83d\ude4b\ud83c\udffe","\ud83d\ude4b\ud83c\udfff","\ud83d\ude4b\u200d\u2642\ufe0f","\ud83d\ude4b\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\ude4b\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\ude4b\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\ude4b\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\ude4b\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\ude4b\u200d\u2640\ufe0f","\ud83d\ude4b\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\ude4b\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\ude4b\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\ude4b\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\ude4b\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddcf","\ud83e\uddcf\ud83c\udffb","\ud83e\uddcf\ud83c\udffc","\ud83e\uddcf\ud83c\udffd","\ud83e\uddcf\ud83c\udffe","\ud83e\uddcf\ud83c\udfff","\ud83e\uddcf\u200d\u2642\ufe0f","\ud83e\uddcf\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddcf\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddcf\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddcf\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddcf\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddcf\u200d\u2640\ufe0f","\ud83e\uddcf\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddcf\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddcf\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddcf\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddcf\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\ude47","\ud83d\ude47\ud83c\udffb","\ud83d\ude47\ud83c\udffc","\ud83d\ude47\ud83c\udffd","\ud83d\ude47\ud83c\udffe","\ud83d\ude47\ud83c\udfff","\ud83d\ude47\u200d\u2642\ufe0f","\ud83d\ude47\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\ude47\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\ude47\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\ude47\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\ude47\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\ude47\u200d\u2640\ufe0f","\ud83d\ude47\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\ude47\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\ude47\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\ude47\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\ude47\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udd26","\ud83e\udd26\ud83c\udffb","\ud83e\udd26\ud83c\udffc","\ud83e\udd26\ud83c\udffd","\ud83e\udd26\ud83c\udffe","\ud83e\udd26\ud83c\udfff","\ud83e\udd26\u200d\u2642\ufe0f","\ud83e\udd26\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\udd26\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\udd26\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\udd26\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\udd26\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\udd26\u200d\u2640\ufe0f","\ud83e\udd26\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\udd26\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\udd26\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\udd26\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\udd26\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udd37","\ud83e\udd37\ud83c\udffb","\ud83e\udd37\ud83c\udffc","\ud83e\udd37\ud83c\udffd","\ud83e\udd37\ud83c\udffe","\ud83e\udd37\ud83c\udfff","\ud83e\udd37\u200d\u2642\ufe0f","\ud83e\udd37\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\udd37\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\udd37\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\udd37\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\udd37\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\udd37\u200d\u2640\ufe0f","\ud83e\udd37\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\udd37\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\udd37\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\udd37\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\udd37\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddd1\u200d\u2695\ufe0f","\ud83e\uddd1\ud83c\udffb\u200d\u2695\ufe0f","\ud83e\uddd1\ud83c\udffc\u200d\u2695\ufe0f","\ud83e\uddd1\ud83c\udffd\u200d\u2695\ufe0f","\ud83e\uddd1\ud83c\udffe\u200d\u2695\ufe0f","\ud83e\uddd1\ud83c\udfff\u200d\u2695\ufe0f","\ud83d\udc68\u200d\u2695\ufe0f","\ud83d\udc68\ud83c\udffb\u200d\u2695\ufe0f","\ud83d\udc68\ud83c\udffc\u200d\u2695\ufe0f","\ud83d\udc68\ud83c\udffd\u200d\u2695\ufe0f","\ud83d\udc68\ud83c\udffe\u200d\u2695\ufe0f","\ud83d\udc68\ud83c\udfff\u200d\u2695\ufe0f","\ud83d\udc69\u200d\u2695\ufe0f","\ud83d\udc69\ud83c\udffb\u200d\u2695\ufe0f","\ud83d\udc69\ud83c\udffc\u200d\u2695\ufe0f","\ud83d\udc69\ud83c\udffd\u200d\u2695\ufe0f","\ud83d\udc69\ud83c\udffe\u200d\u2695\ufe0f","\ud83d\udc69\ud83c\udfff\u200d\u2695\ufe0f","\ud83e\uddd1\u200d\ud83c\udf93","\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udf93","\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udf93","\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udf93","\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf93","\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udf93","\ud83d\udc68\u200d\ud83c\udf93","\ud83d\udc68\ud83c\udffb\u200d\ud83c\udf93","\ud83d\udc68\ud83c\udffc\u200d\ud83c\udf93","\ud83d\udc68\ud83c\udffd\u200d\ud83c\udf93","\ud83d\udc68\ud83c\udffe\u200d\ud83c\udf93","\ud83d\udc68\ud83c\udfff\u200d\ud83c\udf93","\ud83d\udc69\u200d\ud83c\udf93","\ud83d\udc69\ud83c\udffb\u200d\ud83c\udf93","\ud83d\udc69\ud83c\udffc\u200d\ud83c\udf93","\ud83d\udc69\ud83c\udffd\u200d\ud83c\udf93","\ud83d\udc69\ud83c\udffe\u200d\ud83c\udf93","\ud83d\udc69\ud83c\udfff\u200d\ud83c\udf93","\ud83e\uddd1\u200d\ud83c\udfeb","\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udfeb","\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udfeb","\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udfeb","\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udfeb","\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udfeb","\ud83d\udc68\u200d\ud83c\udfeb","\ud83d\udc68\ud83c\udffb\u200d\ud83c\udfeb","\ud83d\udc68\ud83c\udffc\u200d\ud83c\udfeb","\ud83d\udc68\ud83c\udffd\u200d\ud83c\udfeb","\ud83d\udc68\ud83c\udffe\u200d\ud83c\udfeb","\ud83d\udc68\ud83c\udfff\u200d\ud83c\udfeb","\ud83d\udc69\u200d\ud83c\udfeb","\ud83d\udc69\ud83c\udffb\u200d\ud83c\udfeb","\ud83d\udc69\ud83c\udffc\u200d\ud83c\udfeb","\ud83d\udc69\ud83c\udffd\u200d\ud83c\udfeb","\ud83d\udc69\ud83c\udffe\u200d\ud83c\udfeb","\ud83d\udc69\ud83c\udfff\u200d\ud83c\udfeb","\ud83e\uddd1\u200d\u2696\ufe0f","\ud83e\uddd1\ud83c\udffb\u200d\u2696\ufe0f","\ud83e\uddd1\ud83c\udffc\u200d\u2696\ufe0f","\ud83e\uddd1\ud83c\udffd\u200d\u2696\ufe0f","\ud83e\uddd1\ud83c\udffe\u200d\u2696\ufe0f","\ud83e\uddd1\ud83c\udfff\u200d\u2696\ufe0f","\ud83d\udc68\u200d\u2696\ufe0f","\ud83d\udc68\ud83c\udffb\u200d\u2696\ufe0f","\ud83d\udc68\ud83c\udffc\u200d\u2696\ufe0f","\ud83d\udc68\ud83c\udffd\u200d\u2696\ufe0f","\ud83d\udc68\ud83c\udffe\u200d\u2696\ufe0f","\ud83d\udc68\ud83c\udfff\u200d\u2696\ufe0f","\ud83d\udc69\u200d\u2696\ufe0f","\ud83d\udc69\ud83c\udffb\u200d\u2696\ufe0f","\ud83d\udc69\ud83c\udffc\u200d\u2696\ufe0f","\ud83d\udc69\ud83c\udffd\u200d\u2696\ufe0f","\ud83d\udc69\ud83c\udffe\u200d\u2696\ufe0f","\ud83d\udc69\ud83c\udfff\u200d\u2696\ufe0f","\ud83e\uddd1\u200d\ud83c\udf3e","\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udf3e","\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udf3e","\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udf3e","\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf3e","\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udf3e","\ud83d\udc68\u200d\ud83c\udf3e","\ud83d\udc68\ud83c\udffb\u200d\ud83c\udf3e","\ud83d\udc68\ud83c\udffc\u200d\ud83c\udf3e","\ud83d\udc68\ud83c\udffd\u200d\ud83c\udf3e","\ud83d\udc68\ud83c\udffe\u200d\ud83c\udf3e","\ud83d\udc68\ud83c\udfff\u200d\ud83c\udf3e","\ud83d\udc69\u200d\ud83c\udf3e","\ud83d\udc69\ud83c\udffb\u200d\ud83c\udf3e","\ud83d\udc69\ud83c\udffc\u200d\ud83c\udf3e","\ud83d\udc69\ud83c\udffd\u200d\ud83c\udf3e","\ud83d\udc69\ud83c\udffe\u200d\ud83c\udf3e","\ud83d\udc69\ud83c\udfff\u200d\ud83c\udf3e","\ud83e\uddd1\u200d\ud83c\udf73","\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udf73","\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udf73","\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udf73","\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf73","\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udf73","\ud83d\udc68\u200d\ud83c\udf73","\ud83d\udc68\ud83c\udffb\u200d\ud83c\udf73","\ud83d\udc68\ud83c\udffc\u200d\ud83c\udf73","\ud83d\udc68\ud83c\udffd\u200d\ud83c\udf73","\ud83d\udc68\ud83c\udffe\u200d\ud83c\udf73","\ud83d\udc68\ud83c\udfff\u200d\ud83c\udf73","\ud83d\udc69\u200d\ud83c\udf73","\ud83d\udc69\ud83c\udffb\u200d\ud83c\udf73","\ud83d\udc69\ud83c\udffc\u200d\ud83c\udf73","\ud83d\udc69\ud83c\udffd\u200d\ud83c\udf73","\ud83d\udc69\ud83c\udffe\u200d\ud83c\udf73","\ud83d\udc69\ud83c\udfff\u200d\ud83c\udf73","\ud83e\uddd1\u200d\ud83d\udd27","\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udd27","\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udd27","\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udd27","\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udd27","\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udd27","\ud83d\udc68\u200d\ud83d\udd27","\ud83d\udc68\ud83c\udffb\u200d\ud83d\udd27","\ud83d\udc68\ud83c\udffc\u200d\ud83d\udd27","\ud83d\udc68\ud83c\udffd\u200d\ud83d\udd27","\ud83d\udc68\ud83c\udffe\u200d\ud83d\udd27","\ud83d\udc68\ud83c\udfff\u200d\ud83d\udd27","\ud83d\udc69\u200d\ud83d\udd27","\ud83d\udc69\ud83c\udffb\u200d\ud83d\udd27","\ud83d\udc69\ud83c\udffc\u200d\ud83d\udd27","\ud83d\udc69\ud83c\udffd\u200d\ud83d\udd27","\ud83d\udc69\ud83c\udffe\u200d\ud83d\udd27","\ud83d\udc69\ud83c\udfff\u200d\ud83d\udd27","\ud83e\uddd1\u200d\ud83c\udfed","\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udfed","\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udfed","\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udfed","\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udfed","\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udfed","\ud83d\udc68\u200d\ud83c\udfed","\ud83d\udc68\ud83c\udffb\u200d\ud83c\udfed","\ud83d\udc68\ud83c\udffc\u200d\ud83c\udfed","\ud83d\udc68\ud83c\udffd\u200d\ud83c\udfed","\ud83d\udc68\ud83c\udffe\u200d\ud83c\udfed","\ud83d\udc68\ud83c\udfff\u200d\ud83c\udfed","\ud83d\udc69\u200d\ud83c\udfed","\ud83d\udc69\ud83c\udffb\u200d\ud83c\udfed","\ud83d\udc69\ud83c\udffc\u200d\ud83c\udfed","\ud83d\udc69\ud83c\udffd\u200d\ud83c\udfed","\ud83d\udc69\ud83c\udffe\u200d\ud83c\udfed","\ud83d\udc69\ud83c\udfff\u200d\ud83c\udfed","\ud83e\uddd1\u200d\ud83d\udcbc","\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udcbc","\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udcbc","\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udcbc","\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udcbc","\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udcbc","\ud83d\udc68\u200d\ud83d\udcbc","\ud83d\udc68\ud83c\udffb\u200d\ud83d\udcbc","\ud83d\udc68\ud83c\udffc\u200d\ud83d\udcbc","\ud83d\udc68\ud83c\udffd\u200d\ud83d\udcbc","\ud83d\udc68\ud83c\udffe\u200d\ud83d\udcbc","\ud83d\udc68\ud83c\udfff\u200d\ud83d\udcbc","\ud83d\udc69\u200d\ud83d\udcbc","\ud83d\udc69\ud83c\udffb\u200d\ud83d\udcbc","\ud83d\udc69\ud83c\udffc\u200d\ud83d\udcbc","\ud83d\udc69\ud83c\udffd\u200d\ud83d\udcbc","\ud83d\udc69\ud83c\udffe\u200d\ud83d\udcbc","\ud83d\udc69\ud83c\udfff\u200d\ud83d\udcbc","\ud83e\uddd1\u200d\ud83d\udd2c","\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udd2c","\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udd2c","\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udd2c","\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udd2c","\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udd2c","\ud83d\udc68\u200d\ud83d\udd2c","\ud83d\udc68\ud83c\udffb\u200d\ud83d\udd2c","\ud83d\udc68\ud83c\udffc\u200d\ud83d\udd2c","\ud83d\udc68\ud83c\udffd\u200d\ud83d\udd2c","\ud83d\udc68\ud83c\udffe\u200d\ud83d\udd2c","\ud83d\udc68\ud83c\udfff\u200d\ud83d\udd2c","\ud83d\udc69\u200d\ud83d\udd2c","\ud83d\udc69\ud83c\udffb\u200d\ud83d\udd2c","\ud83d\udc69\ud83c\udffc\u200d\ud83d\udd2c","\ud83d\udc69\ud83c\udffd\u200d\ud83d\udd2c","\ud83d\udc69\ud83c\udffe\u200d\ud83d\udd2c","\ud83d\udc69\ud83c\udfff\u200d\ud83d\udd2c","\ud83e\uddd1\u200d\ud83d\udcbb","\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udcbb","\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udcbb","\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udcbb","\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udcbb","\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udcbb","\ud83d\udc68\u200d\ud83d\udcbb","\ud83d\udc68\ud83c\udffb\u200d\ud83d\udcbb","\ud83d\udc68\ud83c\udffc\u200d\ud83d\udcbb","\ud83d\udc68\ud83c\udffd\u200d\ud83d\udcbb","\ud83d\udc68\ud83c\udffe\u200d\ud83d\udcbb","\ud83d\udc68\ud83c\udfff\u200d\ud83d\udcbb","\ud83d\udc69\u200d\ud83d\udcbb","\ud83d\udc69\ud83c\udffb\u200d\ud83d\udcbb","\ud83d\udc69\ud83c\udffc\u200d\ud83d\udcbb","\ud83d\udc69\ud83c\udffd\u200d\ud83d\udcbb","\ud83d\udc69\ud83c\udffe\u200d\ud83d\udcbb","\ud83d\udc69\ud83c\udfff\u200d\ud83d\udcbb","\ud83e\uddd1\u200d\ud83c\udfa4","\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udfa4","\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udfa4","\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udfa4","\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udfa4","\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udfa4","\ud83d\udc68\u200d\ud83c\udfa4","\ud83d\udc68\ud83c\udffb\u200d\ud83c\udfa4","\ud83d\udc68\ud83c\udffc\u200d\ud83c\udfa4","\ud83d\udc68\ud83c\udffd\u200d\ud83c\udfa4","\ud83d\udc68\ud83c\udffe\u200d\ud83c\udfa4","\ud83d\udc68\ud83c\udfff\u200d\ud83c\udfa4","\ud83d\udc69\u200d\ud83c\udfa4","\ud83d\udc69\ud83c\udffb\u200d\ud83c\udfa4","\ud83d\udc69\ud83c\udffc\u200d\ud83c\udfa4","\ud83d\udc69\ud83c\udffd\u200d\ud83c\udfa4","\ud83d\udc69\ud83c\udffe\u200d\ud83c\udfa4","\ud83d\udc69\ud83c\udfff\u200d\ud83c\udfa4","\ud83e\uddd1\u200d\ud83c\udfa8","\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udfa8","\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udfa8","\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udfa8","\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udfa8","\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udfa8","\ud83d\udc68\u200d\ud83c\udfa8","\ud83d\udc68\ud83c\udffb\u200d\ud83c\udfa8","\ud83d\udc68\ud83c\udffc\u200d\ud83c\udfa8","\ud83d\udc68\ud83c\udffd\u200d\ud83c\udfa8","\ud83d\udc68\ud83c\udffe\u200d\ud83c\udfa8","\ud83d\udc68\ud83c\udfff\u200d\ud83c\udfa8","\ud83d\udc69\u200d\ud83c\udfa8","\ud83d\udc69\ud83c\udffb\u200d\ud83c\udfa8","\ud83d\udc69\ud83c\udffc\u200d\ud83c\udfa8","\ud83d\udc69\ud83c\udffd\u200d\ud83c\udfa8","\ud83d\udc69\ud83c\udffe\u200d\ud83c\udfa8","\ud83d\udc69\ud83c\udfff\u200d\ud83c\udfa8","\ud83e\uddd1\u200d\u2708\ufe0f","\ud83e\uddd1\ud83c\udffb\u200d\u2708\ufe0f","\ud83e\uddd1\ud83c\udffc\u200d\u2708\ufe0f","\ud83e\uddd1\ud83c\udffd\u200d\u2708\ufe0f","\ud83e\uddd1\ud83c\udffe\u200d\u2708\ufe0f","\ud83e\uddd1\ud83c\udfff\u200d\u2708\ufe0f","\ud83d\udc68\u200d\u2708\ufe0f","\ud83d\udc68\ud83c\udffb\u200d\u2708\ufe0f","\ud83d\udc68\ud83c\udffc\u200d\u2708\ufe0f","\ud83d\udc68\ud83c\udffd\u200d\u2708\ufe0f","\ud83d\udc68\ud83c\udffe\u200d\u2708\ufe0f","\ud83d\udc68\ud83c\udfff\u200d\u2708\ufe0f","\ud83d\udc69\u200d\u2708\ufe0f","\ud83d\udc69\ud83c\udffb\u200d\u2708\ufe0f","\ud83d\udc69\ud83c\udffc\u200d\u2708\ufe0f","\ud83d\udc69\ud83c\udffd\u200d\u2708\ufe0f","\ud83d\udc69\ud83c\udffe\u200d\u2708\ufe0f","\ud83d\udc69\ud83c\udfff\u200d\u2708\ufe0f","\ud83e\uddd1\u200d\ud83d\ude80","\ud83e\uddd1\ud83c\udffb\u200d\ud83d\ude80","\ud83e\uddd1\ud83c\udffc\u200d\ud83d\ude80","\ud83e\uddd1\ud83c\udffd\u200d\ud83d\ude80","\ud83e\uddd1\ud83c\udffe\u200d\ud83d\ude80","\ud83e\uddd1\ud83c\udfff\u200d\ud83d\ude80","\ud83d\udc68\u200d\ud83d\ude80","\ud83d\udc68\ud83c\udffb\u200d\ud83d\ude80","\ud83d\udc68\ud83c\udffc\u200d\ud83d\ude80","\ud83d\udc68\ud83c\udffd\u200d\ud83d\ude80","\ud83d\udc68\ud83c\udffe\u200d\ud83d\ude80","\ud83d\udc68\ud83c\udfff\u200d\ud83d\ude80","\ud83d\udc69\u200d\ud83d\ude80","\ud83d\udc69\ud83c\udffb\u200d\ud83d\ude80","\ud83d\udc69\ud83c\udffc\u200d\ud83d\ude80","\ud83d\udc69\ud83c\udffd\u200d\ud83d\ude80","\ud83d\udc69\ud83c\udffe\u200d\ud83d\ude80","\ud83d\udc69\ud83c\udfff\u200d\ud83d\ude80","\ud83e\uddd1\u200d\ud83d\ude92","\ud83e\uddd1\ud83c\udffb\u200d\ud83d\ude92","\ud83e\uddd1\ud83c\udffc\u200d\ud83d\ude92","\ud83e\uddd1\ud83c\udffd\u200d\ud83d\ude92","\ud83e\uddd1\ud83c\udffe\u200d\ud83d\ude92","\ud83e\uddd1\ud83c\udfff\u200d\ud83d\ude92","\ud83d\udc68\u200d\ud83d\ude92","\ud83d\udc68\ud83c\udffb\u200d\ud83d\ude92","\ud83d\udc68\ud83c\udffc\u200d\ud83d\ude92","\ud83d\udc68\ud83c\udffd\u200d\ud83d\ude92","\ud83d\udc68\ud83c\udffe\u200d\ud83d\ude92","\ud83d\udc68\ud83c\udfff\u200d\ud83d\ude92","\ud83d\udc69\u200d\ud83d\ude92","\ud83d\udc69\ud83c\udffb\u200d\ud83d\ude92","\ud83d\udc69\ud83c\udffc\u200d\ud83d\ude92","\ud83d\udc69\ud83c\udffd\u200d\ud83d\ude92","\ud83d\udc69\ud83c\udffe\u200d\ud83d\ude92","\ud83d\udc69\ud83c\udfff\u200d\ud83d\ude92","\ud83d\udc6e","\ud83d\udc6e\ud83c\udffb","\ud83d\udc6e\ud83c\udffc","\ud83d\udc6e\ud83c\udffd","\ud83d\udc6e\ud83c\udffe","\ud83d\udc6e\ud83c\udfff","\ud83d\udc6e\u200d\u2642\ufe0f","\ud83d\udc6e\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udc6e\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udc6e\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udc6e\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udc6e\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udc6e\u200d\u2640\ufe0f","\ud83d\udc6e\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udc6e\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udc6e\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udc6e\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udc6e\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udd75\ufe0f","\ud83d\udd75\ud83c\udffb","\ud83d\udd75\ud83c\udffc","\ud83d\udd75\ud83c\udffd","\ud83d\udd75\ud83c\udffe","\ud83d\udd75\ud83c\udfff","\ud83d\udd75\ufe0f\u200d\u2642\ufe0f","\ud83d\udd75\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udd75\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udd75\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udd75\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udd75\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udd75\ufe0f\u200d\u2640\ufe0f","\ud83d\udd75\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udd75\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udd75\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udd75\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udd75\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udc82","\ud83d\udc82\ud83c\udffb","\ud83d\udc82\ud83c\udffc","\ud83d\udc82\ud83c\udffd","\ud83d\udc82\ud83c\udffe","\ud83d\udc82\ud83c\udfff","\ud83d\udc82\u200d\u2642\ufe0f","\ud83d\udc82\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udc82\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udc82\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udc82\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udc82\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udc82\u200d\u2640\ufe0f","\ud83d\udc82\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udc82\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udc82\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udc82\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udc82\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udd77","\ud83e\udd77\ud83c\udffb","\ud83e\udd77\ud83c\udffc","\ud83e\udd77\ud83c\udffd","\ud83e\udd77\ud83c\udffe","\ud83e\udd77\ud83c\udfff","\ud83d\udc77","\ud83d\udc77\ud83c\udffb","\ud83d\udc77\ud83c\udffc","\ud83d\udc77\ud83c\udffd","\ud83d\udc77\ud83c\udffe","\ud83d\udc77\ud83c\udfff","\ud83d\udc77\u200d\u2642\ufe0f","\ud83d\udc77\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udc77\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udc77\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udc77\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udc77\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udc77\u200d\u2640\ufe0f","\ud83d\udc77\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udc77\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udc77\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udc77\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udc77\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udd34","\ud83e\udd34\ud83c\udffb","\ud83e\udd34\ud83c\udffc","\ud83e\udd34\ud83c\udffd","\ud83e\udd34\ud83c\udffe","\ud83e\udd34\ud83c\udfff","\ud83d\udc78","\ud83d\udc78\ud83c\udffb","\ud83d\udc78\ud83c\udffc","\ud83d\udc78\ud83c\udffd","\ud83d\udc78\ud83c\udffe","\ud83d\udc78\ud83c\udfff","\ud83d\udc73","\ud83d\udc73\ud83c\udffb","\ud83d\udc73\ud83c\udffc","\ud83d\udc73\ud83c\udffd","\ud83d\udc73\ud83c\udffe","\ud83d\udc73\ud83c\udfff","\ud83d\udc73\u200d\u2642\ufe0f","\ud83d\udc73\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udc73\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udc73\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udc73\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udc73\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udc73\u200d\u2640\ufe0f","\ud83d\udc73\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udc73\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udc73\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udc73\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udc73\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udc72","\ud83d\udc72\ud83c\udffb","\ud83d\udc72\ud83c\udffc","\ud83d\udc72\ud83c\udffd","\ud83d\udc72\ud83c\udffe","\ud83d\udc72\ud83c\udfff","\ud83e\uddd5","\ud83e\uddd5\ud83c\udffb","\ud83e\uddd5\ud83c\udffc","\ud83e\uddd5\ud83c\udffd","\ud83e\uddd5\ud83c\udffe","\ud83e\uddd5\ud83c\udfff","\ud83e\udd35","\ud83e\udd35\ud83c\udffb","\ud83e\udd35\ud83c\udffc","\ud83e\udd35\ud83c\udffd","\ud83e\udd35\ud83c\udffe","\ud83e\udd35\ud83c\udfff","\ud83e\udd35\u200d\u2642\ufe0f","\ud83e\udd35\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\udd35\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\udd35\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\udd35\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\udd35\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\udd35\u200d\u2640\ufe0f","\ud83e\udd35\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\udd35\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\udd35\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\udd35\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\udd35\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udc70","\ud83d\udc70\ud83c\udffb","\ud83d\udc70\ud83c\udffc","\ud83d\udc70\ud83c\udffd","\ud83d\udc70\ud83c\udffe","\ud83d\udc70\ud83c\udfff","\ud83d\udc70\u200d\u2642\ufe0f","\ud83d\udc70\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udc70\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udc70\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udc70\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udc70\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udc70\u200d\u2640\ufe0f","\ud83d\udc70\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udc70\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udc70\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udc70\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udc70\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udd30","\ud83e\udd30\ud83c\udffb","\ud83e\udd30\ud83c\udffc","\ud83e\udd30\ud83c\udffd","\ud83e\udd30\ud83c\udffe","\ud83e\udd30\ud83c\udfff","\ud83e\udd31","\ud83e\udd31\ud83c\udffb","\ud83e\udd31\ud83c\udffc","\ud83e\udd31\ud83c\udffd","\ud83e\udd31\ud83c\udffe","\ud83e\udd31\ud83c\udfff","\ud83d\udc69\u200d\ud83c\udf7c","\ud83d\udc69\ud83c\udffb\u200d\ud83c\udf7c","\ud83d\udc69\ud83c\udffc\u200d\ud83c\udf7c","\ud83d\udc69\ud83c\udffd\u200d\ud83c\udf7c","\ud83d\udc69\ud83c\udffe\u200d\ud83c\udf7c","\ud83d\udc69\ud83c\udfff\u200d\ud83c\udf7c","\ud83d\udc68\u200d\ud83c\udf7c","\ud83d\udc68\ud83c\udffb\u200d\ud83c\udf7c","\ud83d\udc68\ud83c\udffc\u200d\ud83c\udf7c","\ud83d\udc68\ud83c\udffd\u200d\ud83c\udf7c","\ud83d\udc68\ud83c\udffe\u200d\ud83c\udf7c","\ud83d\udc68\ud83c\udfff\u200d\ud83c\udf7c","\ud83e\uddd1\u200d\ud83c\udf7c","\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udf7c","\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udf7c","\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udf7c","\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf7c","\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udf7c","\ud83d\udc7c","\ud83d\udc7c\ud83c\udffb","\ud83d\udc7c\ud83c\udffc","\ud83d\udc7c\ud83c\udffd","\ud83d\udc7c\ud83c\udffe","\ud83d\udc7c\ud83c\udfff","\ud83c\udf85","\ud83c\udf85\ud83c\udffb","\ud83c\udf85\ud83c\udffc","\ud83c\udf85\ud83c\udffd","\ud83c\udf85\ud83c\udffe","\ud83c\udf85\ud83c\udfff","\ud83e\udd36","\ud83e\udd36\ud83c\udffb","\ud83e\udd36\ud83c\udffc","\ud83e\udd36\ud83c\udffd","\ud83e\udd36\ud83c\udffe","\ud83e\udd36\ud83c\udfff","\ud83e\uddd1\u200d\ud83c\udf84","\ud83e\uddd1\ud83c\udffb\u200d\ud83c\udf84","\ud83e\uddd1\ud83c\udffc\u200d\ud83c\udf84","\ud83e\uddd1\ud83c\udffd\u200d\ud83c\udf84","\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf84","\ud83e\uddd1\ud83c\udfff\u200d\ud83c\udf84","\ud83e\uddb8","\ud83e\uddb8\ud83c\udffb","\ud83e\uddb8\ud83c\udffc","\ud83e\uddb8\ud83c\udffd","\ud83e\uddb8\ud83c\udffe","\ud83e\uddb8\ud83c\udfff","\ud83e\uddb8\u200d\u2642\ufe0f","\ud83e\uddb8\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddb8\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddb8\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddb8\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddb8\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddb8\u200d\u2640\ufe0f","\ud83e\uddb8\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddb8\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddb8\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddb8\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddb8\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddb9","\ud83e\uddb9\ud83c\udffb","\ud83e\uddb9\ud83c\udffc","\ud83e\uddb9\ud83c\udffd","\ud83e\uddb9\ud83c\udffe","\ud83e\uddb9\ud83c\udfff","\ud83e\uddb9\u200d\u2642\ufe0f","\ud83e\uddb9\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddb9\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddb9\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddb9\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddb9\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddb9\u200d\u2640\ufe0f","\ud83e\uddb9\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddb9\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddb9\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddb9\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddb9\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddd9","\ud83e\uddd9\ud83c\udffb","\ud83e\uddd9\ud83c\udffc","\ud83e\uddd9\ud83c\udffd","\ud83e\uddd9\ud83c\udffe","\ud83e\uddd9\ud83c\udfff","\ud83e\uddd9\u200d\u2642\ufe0f","\ud83e\uddd9\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddd9\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddd9\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddd9\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddd9\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddd9\u200d\u2640\ufe0f","\ud83e\uddd9\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddd9\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddd9\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddd9\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddd9\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddda","\ud83e\uddda\ud83c\udffb","\ud83e\uddda\ud83c\udffc","\ud83e\uddda\ud83c\udffd","\ud83e\uddda\ud83c\udffe","\ud83e\uddda\ud83c\udfff","\ud83e\uddda\u200d\u2642\ufe0f","\ud83e\uddda\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddda\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddda\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddda\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddda\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddda\u200d\u2640\ufe0f","\ud83e\uddda\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddda\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddda\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddda\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddda\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udddb","\ud83e\udddb\ud83c\udffb","\ud83e\udddb\ud83c\udffc","\ud83e\udddb\ud83c\udffd","\ud83e\udddb\ud83c\udffe","\ud83e\udddb\ud83c\udfff","\ud83e\udddb\u200d\u2642\ufe0f","\ud83e\udddb\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\udddb\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\udddb\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\udddb\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\udddb\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\udddb\u200d\u2640\ufe0f","\ud83e\udddb\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\udddb\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\udddb\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\udddb\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\udddb\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udddc","\ud83e\udddc\ud83c\udffb","\ud83e\udddc\ud83c\udffc","\ud83e\udddc\ud83c\udffd","\ud83e\udddc\ud83c\udffe","\ud83e\udddc\ud83c\udfff","\ud83e\udddc\u200d\u2642\ufe0f","\ud83e\udddc\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\udddc\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\udddc\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\udddc\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\udddc\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\udddc\u200d\u2640\ufe0f","\ud83e\udddc\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\udddc\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\udddc\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\udddc\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\udddc\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udddd","\ud83e\udddd\ud83c\udffb","\ud83e\udddd\ud83c\udffc","\ud83e\udddd\ud83c\udffd","\ud83e\udddd\ud83c\udffe","\ud83e\udddd\ud83c\udfff","\ud83e\udddd\u200d\u2642\ufe0f","\ud83e\udddd\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\udddd\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\udddd\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\udddd\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\udddd\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\udddd\u200d\u2640\ufe0f","\ud83e\udddd\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\udddd\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\udddd\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\udddd\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\udddd\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddde","\ud83e\uddde\u200d\u2642\ufe0f","\ud83e\uddde\u200d\u2640\ufe0f","\ud83e\udddf","\ud83e\udddf\u200d\u2642\ufe0f","\ud83e\udddf\u200d\u2640\ufe0f","\ud83d\udc86","\ud83d\udc86\ud83c\udffb","\ud83d\udc86\ud83c\udffc","\ud83d\udc86\ud83c\udffd","\ud83d\udc86\ud83c\udffe","\ud83d\udc86\ud83c\udfff","\ud83d\udc86\u200d\u2642\ufe0f","\ud83d\udc86\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udc86\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udc86\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udc86\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udc86\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udc86\u200d\u2640\ufe0f","\ud83d\udc86\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udc86\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udc86\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udc86\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udc86\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udc87","\ud83d\udc87\ud83c\udffb","\ud83d\udc87\ud83c\udffc","\ud83d\udc87\ud83c\udffd","\ud83d\udc87\ud83c\udffe","\ud83d\udc87\ud83c\udfff","\ud83d\udc87\u200d\u2642\ufe0f","\ud83d\udc87\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udc87\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udc87\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udc87\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udc87\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udc87\u200d\u2640\ufe0f","\ud83d\udc87\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udc87\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udc87\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udc87\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udc87\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udeb6","\ud83d\udeb6\ud83c\udffb","\ud83d\udeb6\ud83c\udffc","\ud83d\udeb6\ud83c\udffd","\ud83d\udeb6\ud83c\udffe","\ud83d\udeb6\ud83c\udfff","\ud83d\udeb6\u200d\u2642\ufe0f","\ud83d\udeb6\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udeb6\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udeb6\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udeb6\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udeb6\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udeb6\u200d\u2640\ufe0f","\ud83d\udeb6\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udeb6\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udeb6\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udeb6\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udeb6\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddcd","\ud83e\uddcd\ud83c\udffb","\ud83e\uddcd\ud83c\udffc","\ud83e\uddcd\ud83c\udffd","\ud83e\uddcd\ud83c\udffe","\ud83e\uddcd\ud83c\udfff","\ud83e\uddcd\u200d\u2642\ufe0f","\ud83e\uddcd\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddcd\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddcd\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddcd\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddcd\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddcd\u200d\u2640\ufe0f","\ud83e\uddcd\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddcd\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddcd\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddcd\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddcd\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddce","\ud83e\uddce\ud83c\udffb","\ud83e\uddce\ud83c\udffc","\ud83e\uddce\ud83c\udffd","\ud83e\uddce\ud83c\udffe","\ud83e\uddce\ud83c\udfff","\ud83e\uddce\u200d\u2642\ufe0f","\ud83e\uddce\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddce\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddce\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddce\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddce\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddce\u200d\u2640\ufe0f","\ud83e\uddce\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddce\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddce\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddce\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddce\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddd1\u200d\ud83e\uddaf","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddaf","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddaf","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddaf","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddaf","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddaf","\ud83d\udc68\u200d\ud83e\uddaf","\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddaf","\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddaf","\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddaf","\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddaf","\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddaf","\ud83d\udc69\u200d\ud83e\uddaf","\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddaf","\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddaf","\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddaf","\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddaf","\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddaf","\ud83e\uddd1\u200d\ud83e\uddbc","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddbc","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddbc","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddbc","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddbc","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddbc","\ud83d\udc68\u200d\ud83e\uddbc","\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddbc","\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddbc","\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddbc","\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddbc","\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddbc","\ud83d\udc69\u200d\ud83e\uddbc","\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddbc","\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddbc","\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddbc","\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddbc","\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddbc","\ud83e\uddd1\u200d\ud83e\uddbd","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\uddbd","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\uddbd","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\uddbd","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\uddbd","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\uddbd","\ud83d\udc68\u200d\ud83e\uddbd","\ud83d\udc68\ud83c\udffb\u200d\ud83e\uddbd","\ud83d\udc68\ud83c\udffc\u200d\ud83e\uddbd","\ud83d\udc68\ud83c\udffd\u200d\ud83e\uddbd","\ud83d\udc68\ud83c\udffe\u200d\ud83e\uddbd","\ud83d\udc68\ud83c\udfff\u200d\ud83e\uddbd","\ud83d\udc69\u200d\ud83e\uddbd","\ud83d\udc69\ud83c\udffb\u200d\ud83e\uddbd","\ud83d\udc69\ud83c\udffc\u200d\ud83e\uddbd","\ud83d\udc69\ud83c\udffd\u200d\ud83e\uddbd","\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddbd","\ud83d\udc69\ud83c\udfff\u200d\ud83e\uddbd","\ud83c\udfc3","\ud83c\udfc3\ud83c\udffb","\ud83c\udfc3\ud83c\udffc","\ud83c\udfc3\ud83c\udffd","\ud83c\udfc3\ud83c\udffe","\ud83c\udfc3\ud83c\udfff","\ud83c\udfc3\u200d\u2642\ufe0f","\ud83c\udfc3\ud83c\udffb\u200d\u2642\ufe0f","\ud83c\udfc3\ud83c\udffc\u200d\u2642\ufe0f","\ud83c\udfc3\ud83c\udffd\u200d\u2642\ufe0f","\ud83c\udfc3\ud83c\udffe\u200d\u2642\ufe0f","\ud83c\udfc3\ud83c\udfff\u200d\u2642\ufe0f","\ud83c\udfc3\u200d\u2640\ufe0f","\ud83c\udfc3\ud83c\udffb\u200d\u2640\ufe0f","\ud83c\udfc3\ud83c\udffc\u200d\u2640\ufe0f","\ud83c\udfc3\ud83c\udffd\u200d\u2640\ufe0f","\ud83c\udfc3\ud83c\udffe\u200d\u2640\ufe0f","\ud83c\udfc3\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udc83","\ud83d\udc83\ud83c\udffb","\ud83d\udc83\ud83c\udffc","\ud83d\udc83\ud83c\udffd","\ud83d\udc83\ud83c\udffe","\ud83d\udc83\ud83c\udfff","\ud83d\udd7a","\ud83d\udd7a\ud83c\udffb","\ud83d\udd7a\ud83c\udffc","\ud83d\udd7a\ud83c\udffd","\ud83d\udd7a\ud83c\udffe","\ud83d\udd7a\ud83c\udfff","\ud83d\udd74\ufe0f","\ud83d\udd74\ud83c\udffb","\ud83d\udd74\ud83c\udffc","\ud83d\udd74\ud83c\udffd","\ud83d\udd74\ud83c\udffe","\ud83d\udd74\ud83c\udfff","\ud83d\udc6f","\ud83d\udc6f\u200d\u2642\ufe0f","\ud83d\udc6f\u200d\u2640\ufe0f","\ud83e\uddd6","\ud83e\uddd6\ud83c\udffb","\ud83e\uddd6\ud83c\udffc","\ud83e\uddd6\ud83c\udffd","\ud83e\uddd6\ud83c\udffe","\ud83e\uddd6\ud83c\udfff","\ud83e\uddd6\u200d\u2642\ufe0f","\ud83e\uddd6\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddd6\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddd6\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddd6\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddd6\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddd6\u200d\u2640\ufe0f","\ud83e\uddd6\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddd6\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddd6\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddd6\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddd6\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddd7","\ud83e\uddd7\ud83c\udffb","\ud83e\uddd7\ud83c\udffc","\ud83e\uddd7\ud83c\udffd","\ud83e\uddd7\ud83c\udffe","\ud83e\uddd7\ud83c\udfff","\ud83e\uddd7\u200d\u2642\ufe0f","\ud83e\uddd7\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddd7\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddd7\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddd7\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddd7\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddd7\u200d\u2640\ufe0f","\ud83e\uddd7\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddd7\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddd7\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddd7\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddd7\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udd3a","\ud83c\udfc7","\ud83c\udfc7\ud83c\udffb","\ud83c\udfc7\ud83c\udffc","\ud83c\udfc7\ud83c\udffd","\ud83c\udfc7\ud83c\udffe","\ud83c\udfc7\ud83c\udfff","\u26f7\ufe0f","\ud83c\udfc2","\ud83c\udfc2\ud83c\udffb","\ud83c\udfc2\ud83c\udffc","\ud83c\udfc2\ud83c\udffd","\ud83c\udfc2\ud83c\udffe","\ud83c\udfc2\ud83c\udfff","\ud83c\udfcc\ufe0f","\ud83c\udfcc\ud83c\udffb","\ud83c\udfcc\ud83c\udffc","\ud83c\udfcc\ud83c\udffd","\ud83c\udfcc\ud83c\udffe","\ud83c\udfcc\ud83c\udfff","\ud83c\udfcc\ufe0f\u200d\u2642\ufe0f","\ud83c\udfcc\ud83c\udffb\u200d\u2642\ufe0f","\ud83c\udfcc\ud83c\udffc\u200d\u2642\ufe0f","\ud83c\udfcc\ud83c\udffd\u200d\u2642\ufe0f","\ud83c\udfcc\ud83c\udffe\u200d\u2642\ufe0f","\ud83c\udfcc\ud83c\udfff\u200d\u2642\ufe0f","\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f","\ud83c\udfcc\ud83c\udffb\u200d\u2640\ufe0f","\ud83c\udfcc\ud83c\udffc\u200d\u2640\ufe0f","\ud83c\udfcc\ud83c\udffd\u200d\u2640\ufe0f","\ud83c\udfcc\ud83c\udffe\u200d\u2640\ufe0f","\ud83c\udfcc\ud83c\udfff\u200d\u2640\ufe0f","\ud83c\udfc4","\ud83c\udfc4\ud83c\udffb","\ud83c\udfc4\ud83c\udffc","\ud83c\udfc4\ud83c\udffd","\ud83c\udfc4\ud83c\udffe","\ud83c\udfc4\ud83c\udfff","\ud83c\udfc4\u200d\u2642\ufe0f","\ud83c\udfc4\ud83c\udffb\u200d\u2642\ufe0f","\ud83c\udfc4\ud83c\udffc\u200d\u2642\ufe0f","\ud83c\udfc4\ud83c\udffd\u200d\u2642\ufe0f","\ud83c\udfc4\ud83c\udffe\u200d\u2642\ufe0f","\ud83c\udfc4\ud83c\udfff\u200d\u2642\ufe0f","\ud83c\udfc4\u200d\u2640\ufe0f","\ud83c\udfc4\ud83c\udffb\u200d\u2640\ufe0f","\ud83c\udfc4\ud83c\udffc\u200d\u2640\ufe0f","\ud83c\udfc4\ud83c\udffd\u200d\u2640\ufe0f","\ud83c\udfc4\ud83c\udffe\u200d\u2640\ufe0f","\ud83c\udfc4\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udea3","\ud83d\udea3\ud83c\udffb","\ud83d\udea3\ud83c\udffc","\ud83d\udea3\ud83c\udffd","\ud83d\udea3\ud83c\udffe","\ud83d\udea3\ud83c\udfff","\ud83d\udea3\u200d\u2642\ufe0f","\ud83d\udea3\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udea3\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udea3\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udea3\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udea3\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udea3\u200d\u2640\ufe0f","\ud83d\udea3\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udea3\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udea3\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udea3\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udea3\ud83c\udfff\u200d\u2640\ufe0f","\ud83c\udfca","\ud83c\udfca\ud83c\udffb","\ud83c\udfca\ud83c\udffc","\ud83c\udfca\ud83c\udffd","\ud83c\udfca\ud83c\udffe","\ud83c\udfca\ud83c\udfff","\ud83c\udfca\u200d\u2642\ufe0f","\ud83c\udfca\ud83c\udffb\u200d\u2642\ufe0f","\ud83c\udfca\ud83c\udffc\u200d\u2642\ufe0f","\ud83c\udfca\ud83c\udffd\u200d\u2642\ufe0f","\ud83c\udfca\ud83c\udffe\u200d\u2642\ufe0f","\ud83c\udfca\ud83c\udfff\u200d\u2642\ufe0f","\ud83c\udfca\u200d\u2640\ufe0f","\ud83c\udfca\ud83c\udffb\u200d\u2640\ufe0f","\ud83c\udfca\ud83c\udffc\u200d\u2640\ufe0f","\ud83c\udfca\ud83c\udffd\u200d\u2640\ufe0f","\ud83c\udfca\ud83c\udffe\u200d\u2640\ufe0f","\ud83c\udfca\ud83c\udfff\u200d\u2640\ufe0f","\u26f9\ufe0f","\u26f9\ud83c\udffb","\u26f9\ud83c\udffc","\u26f9\ud83c\udffd","\u26f9\ud83c\udffe","\u26f9\ud83c\udfff","\u26f9\ufe0f\u200d\u2642\ufe0f","\u26f9\ud83c\udffb\u200d\u2642\ufe0f","\u26f9\ud83c\udffc\u200d\u2642\ufe0f","\u26f9\ud83c\udffd\u200d\u2642\ufe0f","\u26f9\ud83c\udffe\u200d\u2642\ufe0f","\u26f9\ud83c\udfff\u200d\u2642\ufe0f","\u26f9\ufe0f\u200d\u2640\ufe0f","\u26f9\ud83c\udffb\u200d\u2640\ufe0f","\u26f9\ud83c\udffc\u200d\u2640\ufe0f","\u26f9\ud83c\udffd\u200d\u2640\ufe0f","\u26f9\ud83c\udffe\u200d\u2640\ufe0f","\u26f9\ud83c\udfff\u200d\u2640\ufe0f","\ud83c\udfcb\ufe0f","\ud83c\udfcb\ud83c\udffb","\ud83c\udfcb\ud83c\udffc","\ud83c\udfcb\ud83c\udffd","\ud83c\udfcb\ud83c\udffe","\ud83c\udfcb\ud83c\udfff","\ud83c\udfcb\ufe0f\u200d\u2642\ufe0f","\ud83c\udfcb\ud83c\udffb\u200d\u2642\ufe0f","\ud83c\udfcb\ud83c\udffc\u200d\u2642\ufe0f","\ud83c\udfcb\ud83c\udffd\u200d\u2642\ufe0f","\ud83c\udfcb\ud83c\udffe\u200d\u2642\ufe0f","\ud83c\udfcb\ud83c\udfff\u200d\u2642\ufe0f","\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f","\ud83c\udfcb\ud83c\udffb\u200d\u2640\ufe0f","\ud83c\udfcb\ud83c\udffc\u200d\u2640\ufe0f","\ud83c\udfcb\ud83c\udffd\u200d\u2640\ufe0f","\ud83c\udfcb\ud83c\udffe\u200d\u2640\ufe0f","\ud83c\udfcb\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udeb4","\ud83d\udeb4\ud83c\udffb","\ud83d\udeb4\ud83c\udffc","\ud83d\udeb4\ud83c\udffd","\ud83d\udeb4\ud83c\udffe","\ud83d\udeb4\ud83c\udfff","\ud83d\udeb4\u200d\u2642\ufe0f","\ud83d\udeb4\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udeb4\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udeb4\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udeb4\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udeb4\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udeb4\u200d\u2640\ufe0f","\ud83d\udeb4\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udeb4\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udeb4\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udeb4\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udeb4\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udeb5","\ud83d\udeb5\ud83c\udffb","\ud83d\udeb5\ud83c\udffc","\ud83d\udeb5\ud83c\udffd","\ud83d\udeb5\ud83c\udffe","\ud83d\udeb5\ud83c\udfff","\ud83d\udeb5\u200d\u2642\ufe0f","\ud83d\udeb5\ud83c\udffb\u200d\u2642\ufe0f","\ud83d\udeb5\ud83c\udffc\u200d\u2642\ufe0f","\ud83d\udeb5\ud83c\udffd\u200d\u2642\ufe0f","\ud83d\udeb5\ud83c\udffe\u200d\u2642\ufe0f","\ud83d\udeb5\ud83c\udfff\u200d\u2642\ufe0f","\ud83d\udeb5\u200d\u2640\ufe0f","\ud83d\udeb5\ud83c\udffb\u200d\u2640\ufe0f","\ud83d\udeb5\ud83c\udffc\u200d\u2640\ufe0f","\ud83d\udeb5\ud83c\udffd\u200d\u2640\ufe0f","\ud83d\udeb5\ud83c\udffe\u200d\u2640\ufe0f","\ud83d\udeb5\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udd38","\ud83e\udd38\ud83c\udffb","\ud83e\udd38\ud83c\udffc","\ud83e\udd38\ud83c\udffd","\ud83e\udd38\ud83c\udffe","\ud83e\udd38\ud83c\udfff","\ud83e\udd38\u200d\u2642\ufe0f","\ud83e\udd38\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\udd38\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\udd38\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\udd38\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\udd38\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\udd38\u200d\u2640\ufe0f","\ud83e\udd38\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\udd38\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\udd38\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\udd38\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\udd38\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udd3c","\ud83e\udd3c\u200d\u2642\ufe0f","\ud83e\udd3c\u200d\u2640\ufe0f","\ud83e\udd3d","\ud83e\udd3d\ud83c\udffb","\ud83e\udd3d\ud83c\udffc","\ud83e\udd3d\ud83c\udffd","\ud83e\udd3d\ud83c\udffe","\ud83e\udd3d\ud83c\udfff","\ud83e\udd3d\u200d\u2642\ufe0f","\ud83e\udd3d\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\udd3d\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\udd3d\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\udd3d\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\udd3d\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\udd3d\u200d\u2640\ufe0f","\ud83e\udd3d\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\udd3d\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\udd3d\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\udd3d\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\udd3d\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udd3e","\ud83e\udd3e\ud83c\udffb","\ud83e\udd3e\ud83c\udffc","\ud83e\udd3e\ud83c\udffd","\ud83e\udd3e\ud83c\udffe","\ud83e\udd3e\ud83c\udfff","\ud83e\udd3e\u200d\u2642\ufe0f","\ud83e\udd3e\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\udd3e\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\udd3e\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\udd3e\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\udd3e\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\udd3e\u200d\u2640\ufe0f","\ud83e\udd3e\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\udd3e\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\udd3e\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\udd3e\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\udd3e\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\udd39","\ud83e\udd39\ud83c\udffb","\ud83e\udd39\ud83c\udffc","\ud83e\udd39\ud83c\udffd","\ud83e\udd39\ud83c\udffe","\ud83e\udd39\ud83c\udfff","\ud83e\udd39\u200d\u2642\ufe0f","\ud83e\udd39\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\udd39\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\udd39\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\udd39\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\udd39\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\udd39\u200d\u2640\ufe0f","\ud83e\udd39\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\udd39\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\udd39\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\udd39\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\udd39\ud83c\udfff\u200d\u2640\ufe0f","\ud83e\uddd8","\ud83e\uddd8\ud83c\udffb","\ud83e\uddd8\ud83c\udffc","\ud83e\uddd8\ud83c\udffd","\ud83e\uddd8\ud83c\udffe","\ud83e\uddd8\ud83c\udfff","\ud83e\uddd8\u200d\u2642\ufe0f","\ud83e\uddd8\ud83c\udffb\u200d\u2642\ufe0f","\ud83e\uddd8\ud83c\udffc\u200d\u2642\ufe0f","\ud83e\uddd8\ud83c\udffd\u200d\u2642\ufe0f","\ud83e\uddd8\ud83c\udffe\u200d\u2642\ufe0f","\ud83e\uddd8\ud83c\udfff\u200d\u2642\ufe0f","\ud83e\uddd8\u200d\u2640\ufe0f","\ud83e\uddd8\ud83c\udffb\u200d\u2640\ufe0f","\ud83e\uddd8\ud83c\udffc\u200d\u2640\ufe0f","\ud83e\uddd8\ud83c\udffd\u200d\u2640\ufe0f","\ud83e\uddd8\ud83c\udffe\u200d\u2640\ufe0f","\ud83e\uddd8\ud83c\udfff\u200d\u2640\ufe0f","\ud83d\udec0","\ud83d\udec0\ud83c\udffb","\ud83d\udec0\ud83c\udffc","\ud83d\udec0\ud83c\udffd","\ud83d\udec0\ud83c\udffe","\ud83d\udec0\ud83c\udfff","\ud83d\udecc","\ud83d\udecc\ud83c\udffb","\ud83d\udecc\ud83c\udffc","\ud83d\udecc\ud83c\udffd","\ud83d\udecc\ud83c\udffe","\ud83d\udecc\ud83c\udfff","\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udfff","\ud83d\udc6d","\ud83d\udc6d\ud83c\udffb","\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc6d\ud83c\udffc","\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc6d\ud83c\udffd","\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc6d\ud83c\udffe","\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc6d\ud83c\udfff","\ud83d\udc6b","\ud83d\udc6b\ud83c\udffb","\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc6b\ud83c\udffc","\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc6b\ud83c\udffd","\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc6b\ud83c\udffe","\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc6b\ud83c\udfff","\ud83d\udc6c","\ud83d\udc6c\ud83c\udffb","\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc6c\ud83c\udffc","\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc6c\ud83c\udffd","\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc6c\ud83c\udffe","\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc6c\ud83c\udfff","\ud83d\udc8f","\ud83d\udc8f\ud83c\udffb","\ud83d\udc8f\ud83c\udffc","\ud83d\udc8f\ud83c\udffd","\ud83d\udc8f\ud83c\udffe","\ud83d\udc8f\ud83c\udfff","\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c\udffe","\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68","\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc91","\ud83d\udc91\ud83c\udffb","\ud83d\udc91\ud83c\udffc","\ud83d\udc91\ud83c\udffd","\ud83d\udc91\ud83c\udffe","\ud83d\udc91\ud83c\udfff","\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffe","\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udfff","\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffb","\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffc","\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffd","\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c\udffe","\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc68","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68","\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffb","\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffc","\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffd","\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udffe","\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c\udfff","\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffb","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffc","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffd","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udffe","\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c\udfff","\ud83d\udc6a","\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66","\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67","\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66","\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66","\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67","\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66","\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67","\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66","\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66","\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67","\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66","\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67","\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66","\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66","\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67","\ud83d\udc68\u200d\ud83d\udc66","\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66","\ud83d\udc68\u200d\ud83d\udc67","\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66","\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67","\ud83d\udc69\u200d\ud83d\udc66","\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66","\ud83d\udc69\u200d\ud83d\udc67","\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66","\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67","\ud83d\udde3\ufe0f","\ud83d\udc64","\ud83d\udc65","\ud83e\udec2","\ud83d\udc63"],nature:["\ud83d\udc35","\ud83d\udc12","\ud83e\udd8d","\ud83e\udda7","\ud83d\udc36","\ud83d\udc15","\ud83e\uddae","\ud83d\udc15\u200d\ud83e\uddba","\ud83d\udc29","\ud83d\udc3a","\ud83e\udd8a","\ud83e\udd9d","\ud83d\udc31","\ud83d\udc08","\ud83d\udc08\u200d\u2b1b","\ud83e\udd81","\ud83d\udc2f","\ud83d\udc05","\ud83d\udc06","\ud83d\udc34","\ud83d\udc0e","\ud83e\udd84","\ud83e\udd93","\ud83e\udd8c","\ud83e\uddac","\ud83d\udc2e","\ud83d\udc02","\ud83d\udc03","\ud83d\udc04","\ud83d\udc37","\ud83d\udc16","\ud83d\udc17","\ud83d\udc3d","\ud83d\udc0f","\ud83d\udc11","\ud83d\udc10","\ud83d\udc2a","\ud83d\udc2b","\ud83e\udd99","\ud83e\udd92","\ud83d\udc18","\ud83e\udda3","\ud83e\udd8f","\ud83e\udd9b","\ud83d\udc2d","\ud83d\udc01","\ud83d\udc00","\ud83d\udc39","\ud83d\udc30","\ud83d\udc07","\ud83d\udc3f\ufe0f","\ud83e\uddab","\ud83e\udd94","\ud83e\udd87","\ud83d\udc3b","\ud83d\udc3b\u200d\u2744\ufe0f","\ud83d\udc28","\ud83d\udc3c","\ud83e\udda5","\ud83e\udda6","\ud83e\udda8","\ud83e\udd98","\ud83e\udda1","\ud83d\udc3e","\ud83e\udd83","\ud83d\udc14","\ud83d\udc13","\ud83d\udc23","\ud83d\udc24","\ud83d\udc25","\ud83d\udc26","\ud83d\udc27","\ud83d\udd4a\ufe0f","\ud83e\udd85","\ud83e\udd86","\ud83e\udda2","\ud83e\udd89","\ud83e\udda4","\ud83e\udeb6","\ud83e\udda9","\ud83e\udd9a","\ud83e\udd9c","\ud83d\udc38","\ud83d\udc0a","\ud83d\udc22","\ud83e\udd8e","\ud83d\udc0d","\ud83d\udc32","\ud83d\udc09","\ud83e\udd95","\ud83e\udd96","\ud83d\udc33","\ud83d\udc0b","\ud83d\udc2c","\ud83e\uddad","\ud83d\udc1f","\ud83d\udc20","\ud83d\udc21","\ud83e\udd88","\ud83d\udc19","\ud83d\udc1a","\ud83d\udc0c","\ud83e\udd8b","\ud83d\udc1b","\ud83d\udc1c","\ud83d\udc1d","\ud83e\udeb2","\ud83d\udc1e","\ud83e\udd97","\ud83e\udeb3","\ud83d\udd77\ufe0f","\ud83d\udd78\ufe0f","\ud83e\udd82","\ud83e\udd9f","\ud83e\udeb0","\ud83e\udeb1","\ud83e\udda0","\ud83d\udc90","\ud83c\udf38","\ud83d\udcae","\ud83c\udff5\ufe0f","\ud83c\udf39","\ud83e\udd40","\ud83c\udf3a","\ud83c\udf3b","\ud83c\udf3c","\ud83c\udf37","\ud83c\udf31","\ud83e\udeb4","\ud83c\udf32","\ud83c\udf33","\ud83c\udf34","\ud83c\udf35","\ud83c\udf3e","\ud83c\udf3f","\u2618\ufe0f","\ud83c\udf40","\ud83c\udf41","\ud83c\udf42","\ud83c\udf43"],food:["\ud83c\udf47","\ud83c\udf48","\ud83c\udf49","\ud83c\udf4a","\ud83c\udf4b","\ud83c\udf4c","\ud83c\udf4d","\ud83e\udd6d","\ud83c\udf4e","\ud83c\udf4f","\ud83c\udf50","\ud83c\udf51","\ud83c\udf52","\ud83c\udf53","\ud83e\uded0","\ud83e\udd5d","\ud83c\udf45","\ud83e\uded2","\ud83e\udd65","\ud83e\udd51","\ud83c\udf46","\ud83e\udd54","\ud83e\udd55","\ud83c\udf3d","\ud83c\udf36\ufe0f","\ud83e\uded1","\ud83e\udd52","\ud83e\udd6c","\ud83e\udd66","\ud83e\uddc4","\ud83e\uddc5","\ud83c\udf44","\ud83e\udd5c","\ud83c\udf30","\ud83c\udf5e","\ud83e\udd50","\ud83e\udd56","\ud83e\uded3","\ud83e\udd68","\ud83e\udd6f","\ud83e\udd5e","\ud83e\uddc7","\ud83e\uddc0","\ud83c\udf56","\ud83c\udf57","\ud83e\udd69","\ud83e\udd53","\ud83c\udf54","\ud83c\udf5f","\ud83c\udf55","\ud83c\udf2d","\ud83e\udd6a","\ud83c\udf2e","\ud83c\udf2f","\ud83e\uded4","\ud83e\udd59","\ud83e\uddc6","\ud83e\udd5a","\ud83c\udf73","\ud83e\udd58","\ud83c\udf72","\ud83e\uded5","\ud83e\udd63","\ud83e\udd57","\ud83c\udf7f","\ud83e\uddc8","\ud83e\uddc2","\ud83e\udd6b","\ud83c\udf71","\ud83c\udf58","\ud83c\udf59","\ud83c\udf5a","\ud83c\udf5b","\ud83c\udf5c","\ud83c\udf5d","\ud83c\udf60","\ud83c\udf62","\ud83c\udf63","\ud83c\udf64","\ud83c\udf65","\ud83e\udd6e","\ud83c\udf61","\ud83e\udd5f","\ud83e\udd60","\ud83e\udd61","\ud83e\udd80","\ud83e\udd9e","\ud83e\udd90","\ud83e\udd91","\ud83e\uddaa","\ud83c\udf66","\ud83c\udf67","\ud83c\udf68","\ud83c\udf69","\ud83c\udf6a","\ud83c\udf82","\ud83c\udf70","\ud83e\uddc1","\ud83e\udd67","\ud83c\udf6b","\ud83c\udf6c","\ud83c\udf6d","\ud83c\udf6e","\ud83c\udf6f","\ud83c\udf7c","\ud83e\udd5b","\u2615","\ud83e\uded6","\ud83c\udf75","\ud83c\udf76","\ud83c\udf7e","\ud83c\udf77","\ud83c\udf78","\ud83c\udf79","\ud83c\udf7a","\ud83c\udf7b","\ud83e\udd42","\ud83e\udd43","\ud83e\udd64","\ud83e\uddcb","\ud83e\uddc3","\ud83e\uddc9","\ud83e\uddca","\ud83e\udd62","\ud83c\udf7d\ufe0f","\ud83c\udf74","\ud83e\udd44","\ud83d\udd2a","\ud83c\udffa"],travel:["\ud83c\udf0d","\ud83c\udf0e","\ud83c\udf0f","\ud83c\udf10","\ud83d\uddfa\ufe0f","\ud83d\uddfe","\ud83e\udded","\ud83c\udfd4\ufe0f","\u26f0\ufe0f","\ud83c\udf0b","\ud83d\uddfb","\ud83c\udfd5\ufe0f","\ud83c\udfd6\ufe0f","\ud83c\udfdc\ufe0f","\ud83c\udfdd\ufe0f","\ud83c\udfde\ufe0f","\ud83c\udfdf\ufe0f","\ud83c\udfdb\ufe0f","\ud83c\udfd7\ufe0f","\ud83e\uddf1","\ud83e\udea8","\ud83e\udeb5","\ud83d\uded6","\ud83c\udfd8\ufe0f","\ud83c\udfda\ufe0f","\ud83c\udfe0","\ud83c\udfe1","\ud83c\udfe2","\ud83c\udfe3","\ud83c\udfe4","\ud83c\udfe5","\ud83c\udfe6","\ud83c\udfe8","\ud83c\udfe9","\ud83c\udfea","\ud83c\udfeb","\ud83c\udfec","\ud83c\udfed","\ud83c\udfef","\ud83c\udff0","\ud83d\udc92","\ud83d\uddfc","\ud83d\uddfd","\u26ea","\ud83d\udd4c","\ud83d\uded5","\ud83d\udd4d","\u26e9\ufe0f","\ud83d\udd4b","\u26f2","\u26fa","\ud83c\udf01","\ud83c\udf03","\ud83c\udfd9\ufe0f","\ud83c\udf04","\ud83c\udf05","\ud83c\udf06","\ud83c\udf07","\ud83c\udf09","\u2668\ufe0f","\ud83c\udfa0","\ud83c\udfa1","\ud83c\udfa2","\ud83d\udc88","\ud83c\udfaa","\ud83d\ude82","\ud83d\ude83","\ud83d\ude84","\ud83d\ude85","\ud83d\ude86","\ud83d\ude87","\ud83d\ude88","\ud83d\ude89","\ud83d\ude8a","\ud83d\ude9d","\ud83d\ude9e","\ud83d\ude8b","\ud83d\ude8c","\ud83d\ude8d","\ud83d\ude8e","\ud83d\ude90","\ud83d\ude91","\ud83d\ude92","\ud83d\ude93","\ud83d\ude94","\ud83d\ude95","\ud83d\ude96","\ud83d\ude97","\ud83d\ude98","\ud83d\ude99","\ud83d\udefb","\ud83d\ude9a","\ud83d\ude9b","\ud83d\ude9c","\ud83c\udfce\ufe0f","\ud83c\udfcd\ufe0f","\ud83d\udef5","\ud83e\uddbd","\ud83e\uddbc","\ud83d\udefa","\ud83d\udeb2","\ud83d\udef4","\ud83d\udef9","\ud83d\udefc","\ud83d\ude8f","\ud83d\udee3\ufe0f","\ud83d\udee4\ufe0f","\ud83d\udee2\ufe0f","\u26fd","\ud83d\udea8","\ud83d\udea5","\ud83d\udea6","\ud83d\uded1","\ud83d\udea7","\u2693","\u26f5","\ud83d\udef6","\ud83d\udea4","\ud83d\udef3\ufe0f","\u26f4\ufe0f","\ud83d\udee5\ufe0f","\ud83d\udea2","\u2708\ufe0f","\ud83d\udee9\ufe0f","\ud83d\udeeb","\ud83d\udeec","\ud83e\ude82","\ud83d\udcba","\ud83d\ude81","\ud83d\ude9f","\ud83d\udea0","\ud83d\udea1","\ud83d\udef0\ufe0f","\ud83d\ude80","\ud83d\udef8","\ud83d\udece\ufe0f","\ud83e\uddf3","\u231b","\u23f3","\u231a","\u23f0","\u23f1\ufe0f","\u23f2\ufe0f","\ud83d\udd70\ufe0f","\ud83d\udd5b","\ud83d\udd67","\ud83d\udd50","\ud83d\udd5c","\ud83d\udd51","\ud83d\udd5d","\ud83d\udd52","\ud83d\udd5e","\ud83d\udd53","\ud83d\udd5f","\ud83d\udd54","\ud83d\udd60","\ud83d\udd55","\ud83d\udd61","\ud83d\udd56","\ud83d\udd62","\ud83d\udd57","\ud83d\udd63","\ud83d\udd58","\ud83d\udd64","\ud83d\udd59","\ud83d\udd65","\ud83d\udd5a","\ud83d\udd66","\ud83c\udf11","\ud83c\udf12","\ud83c\udf13","\ud83c\udf14","\ud83c\udf15","\ud83c\udf16","\ud83c\udf17","\ud83c\udf18","\ud83c\udf19","\ud83c\udf1a","\ud83c\udf1b","\ud83c\udf1c","\ud83c\udf21\ufe0f","\u2600\ufe0f","\ud83c\udf1d","\ud83c\udf1e","\ud83e\ude90","\u2b50","\ud83c\udf1f","\ud83c\udf20","\ud83c\udf0c","\u2601\ufe0f","\u26c5","\u26c8\ufe0f","\ud83c\udf24\ufe0f","\ud83c\udf25\ufe0f","\ud83c\udf26\ufe0f","\ud83c\udf27\ufe0f","\ud83c\udf28\ufe0f","\ud83c\udf29\ufe0f","\ud83c\udf2a\ufe0f","\ud83c\udf2b\ufe0f","\ud83c\udf2c\ufe0f","\ud83c\udf00","\ud83c\udf08","\ud83c\udf02","\u2602\ufe0f","\u2614","\u26f1\ufe0f","\u26a1","\u2744\ufe0f","\u2603\ufe0f","\u26c4","\u2604\ufe0f","\ud83d\udd25","\ud83d\udca7","\ud83c\udf0a"],activity:["\ud83c\udf83","\ud83c\udf84","\ud83c\udf86","\ud83c\udf87","\ud83e\udde8","\u2728","\ud83c\udf88","\ud83c\udf89","\ud83c\udf8a","\ud83c\udf8b","\ud83c\udf8d","\ud83c\udf8e","\ud83c\udf8f","\ud83c\udf90","\ud83c\udf91","\ud83e\udde7","\ud83c\udf80","\ud83c\udf81","\ud83c\udf97\ufe0f","\ud83c\udf9f\ufe0f","\ud83c\udfab","\ud83c\udf96\ufe0f","\ud83c\udfc6","\ud83c\udfc5","\ud83e\udd47","\ud83e\udd48","\ud83e\udd49","\u26bd","\u26be","\ud83e\udd4e","\ud83c\udfc0","\ud83c\udfd0","\ud83c\udfc8","\ud83c\udfc9","\ud83c\udfbe","\ud83e\udd4f","\ud83c\udfb3","\ud83c\udfcf","\ud83c\udfd1","\ud83c\udfd2","\ud83e\udd4d","\ud83c\udfd3","\ud83c\udff8","\ud83e\udd4a","\ud83e\udd4b","\ud83e\udd45","\u26f3","\u26f8\ufe0f","\ud83c\udfa3","\ud83e\udd3f","\ud83c\udfbd","\ud83c\udfbf","\ud83d\udef7","\ud83e\udd4c","\ud83c\udfaf","\ud83e\ude80","\ud83e\ude81","\ud83c\udfb1","\ud83d\udd2e","\ud83e\ude84","\ud83e\uddff","\ud83c\udfae","\ud83d\udd79\ufe0f","\ud83c\udfb0","\ud83c\udfb2","\ud83e\udde9","\ud83e\uddf8","\ud83e\ude85","\ud83e\ude86","\u2660\ufe0f","\u2665\ufe0f","\u2666\ufe0f","\u2663\ufe0f","\u265f\ufe0f","\ud83c\udccf","\ud83c\udc04","\ud83c\udfb4","\ud83c\udfad","\ud83d\uddbc\ufe0f","\ud83c\udfa8","\ud83e\uddf5","\ud83e\udea1","\ud83e\uddf6","\ud83e\udea2"],object:["\ud83d\udc53","\ud83d\udd76\ufe0f","\ud83e\udd7d","\ud83e\udd7c","\ud83e\uddba","\ud83d\udc54","\ud83d\udc55","\ud83d\udc56","\ud83e\udde3","\ud83e\udde4","\ud83e\udde5","\ud83e\udde6","\ud83d\udc57","\ud83d\udc58","\ud83e\udd7b","\ud83e\ude71","\ud83e\ude72","\ud83e\ude73","\ud83d\udc59","\ud83d\udc5a","\ud83d\udc5b","\ud83d\udc5c","\ud83d\udc5d","\ud83d\udecd\ufe0f","\ud83c\udf92","\ud83e\ude74","\ud83d\udc5e","\ud83d\udc5f","\ud83e\udd7e","\ud83e\udd7f","\ud83d\udc60","\ud83d\udc61","\ud83e\ude70","\ud83d\udc62","\ud83d\udc51","\ud83d\udc52","\ud83c\udfa9","\ud83c\udf93","\ud83e\udde2","\ud83e\ude96","\u26d1\ufe0f","\ud83d\udcff","\ud83d\udc84","\ud83d\udc8d","\ud83d\udc8e","\ud83d\udd07","\ud83d\udd08","\ud83d\udd09","\ud83d\udd0a","\ud83d\udce2","\ud83d\udce3","\ud83d\udcef","\ud83d\udd14","\ud83d\udd15","\ud83c\udfbc","\ud83c\udfb5","\ud83c\udfb6","\ud83c\udf99\ufe0f","\ud83c\udf9a\ufe0f","\ud83c\udf9b\ufe0f","\ud83c\udfa4","\ud83c\udfa7","\ud83d\udcfb","\ud83c\udfb7","\ud83e\ude97","\ud83c\udfb8","\ud83c\udfb9","\ud83c\udfba","\ud83c\udfbb","\ud83e\ude95","\ud83e\udd41","\ud83e\ude98","\ud83d\udcf1","\ud83d\udcf2","\u260e\ufe0f","\ud83d\udcde","\ud83d\udcdf","\ud83d\udce0","\ud83d\udd0b","\ud83d\udd0c","\ud83d\udcbb","\ud83d\udda5\ufe0f","\ud83d\udda8\ufe0f","\u2328\ufe0f","\ud83d\uddb1\ufe0f","\ud83d\uddb2\ufe0f","\ud83d\udcbd","\ud83d\udcbe","\ud83d\udcbf","\ud83d\udcc0","\ud83e\uddee","\ud83c\udfa5","\ud83c\udf9e\ufe0f","\ud83d\udcfd\ufe0f","\ud83c\udfac","\ud83d\udcfa","\ud83d\udcf7","\ud83d\udcf8","\ud83d\udcf9","\ud83d\udcfc","\ud83d\udd0d","\ud83d\udd0e","\ud83d\udd6f\ufe0f","\ud83d\udca1","\ud83d\udd26","\ud83c\udfee","\ud83e\ude94","\ud83d\udcd4","\ud83d\udcd5","\ud83d\udcd6","\ud83d\udcd7","\ud83d\udcd8","\ud83d\udcd9","\ud83d\udcda","\ud83d\udcd3","\ud83d\udcd2","\ud83d\udcc3","\ud83d\udcdc","\ud83d\udcc4","\ud83d\udcf0","\ud83d\uddde\ufe0f","\ud83d\udcd1","\ud83d\udd16","\ud83c\udff7\ufe0f","\ud83d\udcb0","\ud83e\ude99","\ud83d\udcb4","\ud83d\udcb5","\ud83d\udcb6","\ud83d\udcb7","\ud83d\udcb8","\ud83d\udcb3","\ud83e\uddfe","\ud83d\udcb9","\u2709\ufe0f","\ud83d\udce7","\ud83d\udce8","\ud83d\udce9","\ud83d\udce4","\ud83d\udce5","\ud83d\udce6","\ud83d\udceb","\ud83d\udcea","\ud83d\udcec","\ud83d\udced","\ud83d\udcee","\ud83d\uddf3\ufe0f","\u270f\ufe0f","\u2712\ufe0f","\ud83d\udd8b\ufe0f","\ud83d\udd8a\ufe0f","\ud83d\udd8c\ufe0f","\ud83d\udd8d\ufe0f","\ud83d\udcdd","\ud83d\udcbc","\ud83d\udcc1","\ud83d\udcc2","\ud83d\uddc2\ufe0f","\ud83d\udcc5","\ud83d\udcc6","\ud83d\uddd2\ufe0f","\ud83d\uddd3\ufe0f","\ud83d\udcc7","\ud83d\udcc8","\ud83d\udcc9","\ud83d\udcca","\ud83d\udccb","\ud83d\udccc","\ud83d\udccd","\ud83d\udcce","\ud83d\udd87\ufe0f","\ud83d\udccf","\ud83d\udcd0","\u2702\ufe0f","\ud83d\uddc3\ufe0f","\ud83d\uddc4\ufe0f","\ud83d\uddd1\ufe0f","\ud83d\udd12","\ud83d\udd13","\ud83d\udd0f","\ud83d\udd10","\ud83d\udd11","\ud83d\udddd\ufe0f","\ud83d\udd28","\ud83e\ude93","\u26cf\ufe0f","\u2692\ufe0f","\ud83d\udee0\ufe0f","\ud83d\udde1\ufe0f","\u2694\ufe0f","\ud83d\udd2b","\ud83e\ude83","\ud83c\udff9","\ud83d\udee1\ufe0f","\ud83e\ude9a","\ud83d\udd27","\ud83e\ude9b","\ud83d\udd29","\u2699\ufe0f","\ud83d\udddc\ufe0f","\u2696\ufe0f","\ud83e\uddaf","\ud83d\udd17","\u26d3\ufe0f","\ud83e\ude9d","\ud83e\uddf0","\ud83e\uddf2","\ud83e\ude9c","\u2697\ufe0f","\ud83e\uddea","\ud83e\uddeb","\ud83e\uddec","\ud83d\udd2c","\ud83d\udd2d","\ud83d\udce1","\ud83d\udc89","\ud83e\ude78","\ud83d\udc8a","\ud83e\ude79","\ud83e\ude7a","\ud83d\udeaa","\ud83d\uded7","\ud83e\ude9e","\ud83e\ude9f","\ud83d\udecf\ufe0f","\ud83d\udecb\ufe0f","\ud83e\ude91","\ud83d\udebd","\ud83e\udea0","\ud83d\udebf","\ud83d\udec1","\ud83e\udea4","\ud83e\ude92","\ud83e\uddf4","\ud83e\uddf7","\ud83e\uddf9","\ud83e\uddfa","\ud83e\uddfb","\ud83e\udea3","\ud83e\uddfc","\ud83e\udea5","\ud83e\uddfd","\ud83e\uddef","\ud83d\uded2","\ud83d\udeac","\u26b0\ufe0f","\ud83e\udea6","\u26b1\ufe0f","\ud83d\uddff","\ud83e\udea7"],symbol:["\ud83c\udfe7","\ud83d\udeae","\ud83d\udeb0","\u267f","\ud83d\udeb9","\ud83d\udeba","\ud83d\udebb","\ud83d\udebc","\ud83d\udebe","\ud83d\udec2","\ud83d\udec3","\ud83d\udec4","\ud83d\udec5","\u26a0\ufe0f","\ud83d\udeb8","\u26d4","\ud83d\udeab","\ud83d\udeb3","\ud83d\udead","\ud83d\udeaf","\ud83d\udeb1","\ud83d\udeb7","\ud83d\udcf5","\ud83d\udd1e","\u2622\ufe0f","\u2623\ufe0f","\u2b06\ufe0f","\u2197\ufe0f","\u27a1\ufe0f","\u2198\ufe0f","\u2b07\ufe0f","\u2199\ufe0f","\u2b05\ufe0f","\u2196\ufe0f","\u2195\ufe0f","\u2194\ufe0f","\u21a9\ufe0f","\u21aa\ufe0f","\u2934\ufe0f","\u2935\ufe0f","\ud83d\udd03","\ud83d\udd04","\ud83d\udd19","\ud83d\udd1a","\ud83d\udd1b","\ud83d\udd1c","\ud83d\udd1d","\ud83d\uded0","\u269b\ufe0f","\ud83d\udd49\ufe0f","\u2721\ufe0f","\u2638\ufe0f","\u262f\ufe0f","\u271d\ufe0f","\u2626\ufe0f","\u262a\ufe0f","\u262e\ufe0f","\ud83d\udd4e","\ud83d\udd2f","\u2648","\u2649","\u264a","\u264b","\u264c","\u264d","\u264e","\u264f","\u2650","\u2651","\u2652","\u2653","\u26ce","\ud83d\udd00","\ud83d\udd01","\ud83d\udd02","\u25b6\ufe0f","\u23e9","\u23ed\ufe0f","\u23ef\ufe0f","\u25c0\ufe0f","\u23ea","\u23ee\ufe0f","\ud83d\udd3c","\u23eb","\ud83d\udd3d","\u23ec","\u23f8\ufe0f","\u23f9\ufe0f","\u23fa\ufe0f","\u23cf\ufe0f","\ud83c\udfa6","\ud83d\udd05","\ud83d\udd06","\ud83d\udcf6","\ud83d\udcf3","\ud83d\udcf4","\u2640\ufe0f","\u2642\ufe0f","\u26a7\ufe0f","\u2716\ufe0f","\u2795","\u2796","\u2797","\u267e\ufe0f","\u203c\ufe0f","\u2049\ufe0f","\u2753","\u2754","\u2755","\u2757","\u3030\ufe0f","\ud83d\udcb1","\ud83d\udcb2","\u2695\ufe0f","\u267b\ufe0f","\u269c\ufe0f","\ud83d\udd31","\ud83d\udcdb","\ud83d\udd30","\u2b55","\u2705","\u2611\ufe0f","\u2714\ufe0f","\u274c","\u274e","\u27b0","\u27bf","\u303d\ufe0f","\u2733\ufe0f","\u2734\ufe0f","\u2747\ufe0f","\xa9\ufe0f","\xae\ufe0f","\u2122\ufe0f","#\ufe0f\u20e3","*\ufe0f\u20e3","0\ufe0f\u20e3","1\ufe0f\u20e3","2\ufe0f\u20e3","3\ufe0f\u20e3","4\ufe0f\u20e3","5\ufe0f\u20e3","6\ufe0f\u20e3","7\ufe0f\u20e3","8\ufe0f\u20e3","9\ufe0f\u20e3","\ud83d\udd1f","\ud83d\udd20","\ud83d\udd21","\ud83d\udd22","\ud83d\udd23","\ud83d\udd24","\ud83c\udd70\ufe0f","\ud83c\udd8e","\ud83c\udd71\ufe0f","\ud83c\udd91","\ud83c\udd92","\ud83c\udd93","\u2139\ufe0f","\ud83c\udd94","\u24c2\ufe0f","\ud83c\udd95","\ud83c\udd96","\ud83c\udd7e\ufe0f","\ud83c\udd97","\ud83c\udd7f\ufe0f","\ud83c\udd98","\ud83c\udd99","\ud83c\udd9a","\ud83c\ude01","\ud83c\ude02\ufe0f","\ud83c\ude37\ufe0f","\ud83c\ude36","\ud83c\ude2f","\ud83c\ude50","\ud83c\ude39","\ud83c\ude1a","\ud83c\ude32","\ud83c\ude51","\ud83c\ude38","\ud83c\ude34","\ud83c\ude33","\u3297\ufe0f","\u3299\ufe0f","\ud83c\ude3a","\ud83c\ude35","\ud83d\udd34","\ud83d\udfe0","\ud83d\udfe1","\ud83d\udfe2","\ud83d\udd35","\ud83d\udfe3","\ud83d\udfe4","\u26ab","\u26aa","\ud83d\udfe5","\ud83d\udfe7","\ud83d\udfe8","\ud83d\udfe9","\ud83d\udfe6","\ud83d\udfea","\ud83d\udfeb","\u2b1b","\u2b1c","\u25fc\ufe0f","\u25fb\ufe0f","\u25fe","\u25fd","\u25aa\ufe0f","\u25ab\ufe0f","\ud83d\udd36","\ud83d\udd37","\ud83d\udd38","\ud83d\udd39","\ud83d\udd3a","\ud83d\udd3b","\ud83d\udca0","\ud83d\udd18","\ud83d\udd33","\ud83d\udd32"],flag:["\ud83c\udfc1","\ud83d\udea9","\ud83c\udf8c","\ud83c\udff4","\ud83c\udff3\ufe0f","\ud83c\udff3\ufe0f\u200d\ud83c\udf08","\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff4\u200d\u2620\ufe0f","\ud83c\udde6\ud83c\udde8","\ud83c\udde6\ud83c\udde9","\ud83c\udde6\ud83c\uddea","\ud83c\udde6\ud83c\uddeb","\ud83c\udde6\ud83c\uddec","\ud83c\udde6\ud83c\uddee","\ud83c\udde6\ud83c\uddf1","\ud83c\udde6\ud83c\uddf2","\ud83c\udde6\ud83c\uddf4","\ud83c\udde6\ud83c\uddf6","\ud83c\udde6\ud83c\uddf7","\ud83c\udde6\ud83c\uddf8","\ud83c\udde6\ud83c\uddf9","\ud83c\udde6\ud83c\uddfa","\ud83c\udde6\ud83c\uddfc","\ud83c\udde6\ud83c\uddfd","\ud83c\udde6\ud83c\uddff","\ud83c\udde7\ud83c\udde6","\ud83c\udde7\ud83c\udde7","\ud83c\udde7\ud83c\udde9","\ud83c\udde7\ud83c\uddea","\ud83c\udde7\ud83c\uddeb","\ud83c\udde7\ud83c\uddec","\ud83c\udde7\ud83c\udded","\ud83c\udde7\ud83c\uddee","\ud83c\udde7\ud83c\uddef","\ud83c\udde7\ud83c\uddf1","\ud83c\udde7\ud83c\uddf2","\ud83c\udde7\ud83c\uddf3","\ud83c\udde7\ud83c\uddf4","\ud83c\udde7\ud83c\uddf6","\ud83c\udde7\ud83c\uddf7","\ud83c\udde7\ud83c\uddf8","\ud83c\udde7\ud83c\uddf9","\ud83c\udde7\ud83c\uddfb","\ud83c\udde7\ud83c\uddfc","\ud83c\udde7\ud83c\uddfe","\ud83c\udde7\ud83c\uddff","\ud83c\udde8\ud83c\udde6","\ud83c\udde8\ud83c\udde8","\ud83c\udde8\ud83c\udde9","\ud83c\udde8\ud83c\uddeb","\ud83c\udde8\ud83c\uddec","\ud83c\udde8\ud83c\udded","\ud83c\udde8\ud83c\uddee","\ud83c\udde8\ud83c\uddf0","\ud83c\udde8\ud83c\uddf1","\ud83c\udde8\ud83c\uddf2","\ud83c\udde8\ud83c\uddf3","\ud83c\udde8\ud83c\uddf4","\ud83c\udde8\ud83c\uddf5","\ud83c\udde8\ud83c\uddf7","\ud83c\udde8\ud83c\uddfa","\ud83c\udde8\ud83c\uddfb","\ud83c\udde8\ud83c\uddfc","\ud83c\udde8\ud83c\uddfd","\ud83c\udde8\ud83c\uddfe","\ud83c\udde8\ud83c\uddff","\ud83c\udde9\ud83c\uddea","\ud83c\udde9\ud83c\uddec","\ud83c\udde9\ud83c\uddef","\ud83c\udde9\ud83c\uddf0","\ud83c\udde9\ud83c\uddf2","\ud83c\udde9\ud83c\uddf4","\ud83c\udde9\ud83c\uddff","\ud83c\uddea\ud83c\udde6","\ud83c\uddea\ud83c\udde8","\ud83c\uddea\ud83c\uddea","\ud83c\uddea\ud83c\uddec","\ud83c\uddea\ud83c\udded","\ud83c\uddea\ud83c\uddf7","\ud83c\uddea\ud83c\uddf8","\ud83c\uddea\ud83c\uddf9","\ud83c\uddea\ud83c\uddfa","\ud83c\uddeb\ud83c\uddee","\ud83c\uddeb\ud83c\uddef","\ud83c\uddeb\ud83c\uddf0","\ud83c\uddeb\ud83c\uddf2","\ud83c\uddeb\ud83c\uddf4","\ud83c\uddeb\ud83c\uddf7","\ud83c\uddec\ud83c\udde6","\ud83c\uddec\ud83c\udde7","\ud83c\uddec\ud83c\udde9","\ud83c\uddec\ud83c\uddea","\ud83c\uddec\ud83c\uddeb","\ud83c\uddec\ud83c\uddec","\ud83c\uddec\ud83c\udded","\ud83c\uddec\ud83c\uddee","\ud83c\uddec\ud83c\uddf1","\ud83c\uddec\ud83c\uddf2","\ud83c\uddec\ud83c\uddf3","\ud83c\uddec\ud83c\uddf5","\ud83c\uddec\ud83c\uddf6","\ud83c\uddec\ud83c\uddf7","\ud83c\uddec\ud83c\uddf8","\ud83c\uddec\ud83c\uddf9","\ud83c\uddec\ud83c\uddfa","\ud83c\uddec\ud83c\uddfc","\ud83c\uddec\ud83c\uddfe","\ud83c\udded\ud83c\uddf0","\ud83c\udded\ud83c\uddf2","\ud83c\udded\ud83c\uddf3","\ud83c\udded\ud83c\uddf7","\ud83c\udded\ud83c\uddf9","\ud83c\udded\ud83c\uddfa","\ud83c\uddee\ud83c\udde8","\ud83c\uddee\ud83c\udde9","\ud83c\uddee\ud83c\uddea","\ud83c\uddee\ud83c\uddf1","\ud83c\uddee\ud83c\uddf2","\ud83c\uddee\ud83c\uddf3","\ud83c\uddee\ud83c\uddf4","\ud83c\uddee\ud83c\uddf6","\ud83c\uddee\ud83c\uddf7","\ud83c\uddee\ud83c\uddf8","\ud83c\uddee\ud83c\uddf9","\ud83c\uddef\ud83c\uddea","\ud83c\uddef\ud83c\uddf2","\ud83c\uddef\ud83c\uddf4","\ud83c\uddef\ud83c\uddf5","\ud83c\uddf0\ud83c\uddea","\ud83c\uddf0\ud83c\uddec","\ud83c\uddf0\ud83c\udded","\ud83c\uddf0\ud83c\uddee","\ud83c\uddf0\ud83c\uddf2","\ud83c\uddf0\ud83c\uddf3","\ud83c\uddf0\ud83c\uddf5","\ud83c\uddf0\ud83c\uddf7","\ud83c\uddf0\ud83c\uddfc","\ud83c\uddf0\ud83c\uddfe","\ud83c\uddf0\ud83c\uddff","\ud83c\uddf1\ud83c\udde6","\ud83c\uddf1\ud83c\udde7","\ud83c\uddf1\ud83c\udde8","\ud83c\uddf1\ud83c\uddee","\ud83c\uddf1\ud83c\uddf0","\ud83c\uddf1\ud83c\uddf7","\ud83c\uddf1\ud83c\uddf8","\ud83c\uddf1\ud83c\uddf9","\ud83c\uddf1\ud83c\uddfa","\ud83c\uddf1\ud83c\uddfb","\ud83c\uddf1\ud83c\uddfe","\ud83c\uddf2\ud83c\udde6","\ud83c\uddf2\ud83c\udde8","\ud83c\uddf2\ud83c\udde9","\ud83c\uddf2\ud83c\uddea","\ud83c\uddf2\ud83c\uddeb","\ud83c\uddf2\ud83c\uddec","\ud83c\uddf2\ud83c\udded","\ud83c\uddf2\ud83c\uddf0","\ud83c\uddf2\ud83c\uddf1","\ud83c\uddf2\ud83c\uddf2","\ud83c\uddf2\ud83c\uddf3","\ud83c\uddf2\ud83c\uddf4","\ud83c\uddf2\ud83c\uddf5","\ud83c\uddf2\ud83c\uddf6","\ud83c\uddf2\ud83c\uddf7","\ud83c\uddf2\ud83c\uddf8","\ud83c\uddf2\ud83c\uddf9","\ud83c\uddf2\ud83c\uddfa","\ud83c\uddf2\ud83c\uddfb","\ud83c\uddf2\ud83c\uddfc","\ud83c\uddf2\ud83c\uddfd","\ud83c\uddf2\ud83c\uddfe","\ud83c\uddf2\ud83c\uddff","\ud83c\uddf3\ud83c\udde6","\ud83c\uddf3\ud83c\udde8","\ud83c\uddf3\ud83c\uddea","\ud83c\uddf3\ud83c\uddeb","\ud83c\uddf3\ud83c\uddec","\ud83c\uddf3\ud83c\uddee","\ud83c\uddf3\ud83c\uddf1","\ud83c\uddf3\ud83c\uddf4","\ud83c\uddf3\ud83c\uddf5","\ud83c\uddf3\ud83c\uddf7","\ud83c\uddf3\ud83c\uddfa","\ud83c\uddf3\ud83c\uddff","\ud83c\uddf4\ud83c\uddf2","\ud83c\uddf5\ud83c\udde6","\ud83c\uddf5\ud83c\uddea","\ud83c\uddf5\ud83c\uddeb","\ud83c\uddf5\ud83c\uddec","\ud83c\uddf5\ud83c\udded","\ud83c\uddf5\ud83c\uddf0","\ud83c\uddf5\ud83c\uddf1","\ud83c\uddf5\ud83c\uddf2","\ud83c\uddf5\ud83c\uddf3","\ud83c\uddf5\ud83c\uddf7","\ud83c\uddf5\ud83c\uddf8","\ud83c\uddf5\ud83c\uddf9","\ud83c\uddf5\ud83c\uddfc","\ud83c\uddf5\ud83c\uddfe","\ud83c\uddf6\ud83c\udde6","\ud83c\uddf7\ud83c\uddea","\ud83c\uddf7\ud83c\uddf4","\ud83c\uddf7\ud83c\uddf8","\ud83c\uddf7\ud83c\uddfa","\ud83c\uddf7\ud83c\uddfc","\ud83c\uddf8\ud83c\udde6","\ud83c\uddf8\ud83c\udde7","\ud83c\uddf8\ud83c\udde8","\ud83c\uddf8\ud83c\udde9","\ud83c\uddf8\ud83c\uddea","\ud83c\uddf8\ud83c\uddec","\ud83c\uddf8\ud83c\udded","\ud83c\uddf8\ud83c\uddee","\ud83c\uddf8\ud83c\uddef","\ud83c\uddf8\ud83c\uddf0","\ud83c\uddf8\ud83c\uddf1","\ud83c\uddf8\ud83c\uddf2","\ud83c\uddf8\ud83c\uddf3","\ud83c\uddf8\ud83c\uddf4","\ud83c\uddf8\ud83c\uddf7","\ud83c\uddf8\ud83c\uddf8","\ud83c\uddf8\ud83c\uddf9","\ud83c\uddf8\ud83c\uddfb","\ud83c\uddf8\ud83c\uddfd","\ud83c\uddf8\ud83c\uddfe","\ud83c\uddf8\ud83c\uddff","\ud83c\uddf9\ud83c\udde6","\ud83c\uddf9\ud83c\udde8","\ud83c\uddf9\ud83c\udde9","\ud83c\uddf9\ud83c\uddeb","\ud83c\uddf9\ud83c\uddec","\ud83c\uddf9\ud83c\udded","\ud83c\uddf9\ud83c\uddef","\ud83c\uddf9\ud83c\uddf0","\ud83c\uddf9\ud83c\uddf1","\ud83c\uddf9\ud83c\uddf2","\ud83c\uddf9\ud83c\uddf3","\ud83c\uddf9\ud83c\uddf4","\ud83c\uddf9\ud83c\uddf7","\ud83c\uddf9\ud83c\uddf9","\ud83c\uddf9\ud83c\uddfb","\ud83c\uddf9\ud83c\uddfc","\ud83c\uddf9\ud83c\uddff","\ud83c\uddfa\ud83c\udde6","\ud83c\uddfa\ud83c\uddec","\ud83c\uddfa\ud83c\uddf2","\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\ud83c\uddf8","\ud83c\uddfa\ud83c\uddfe","\ud83c\uddfa\ud83c\uddff","\ud83c\uddfb\ud83c\udde6","\ud83c\uddfb\ud83c\udde8","\ud83c\uddfb\ud83c\uddea","\ud83c\uddfb\ud83c\uddec","\ud83c\uddfb\ud83c\uddee","\ud83c\uddfb\ud83c\uddf3","\ud83c\uddfb\ud83c\uddfa","\ud83c\uddfc\ud83c\uddeb","\ud83c\uddfc\ud83c\uddf8","\ud83c\uddfd\ud83c\uddf0","\ud83c\uddfe\ud83c\uddea","\ud83c\uddfe\ud83c\uddf9","\ud83c\uddff\ud83c\udde6","\ud83c\uddff\ud83c\uddf2","\ud83c\uddff\ud83c\uddfc"]},http_status_code:{informational:[100,101,102,103],success:[200,201,202,203,204,205,206,207,208,226],redirection:[300,301,302,303,304,305,306,307,308],clientError:[400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,421,422,423,424,425,426,428,429,431,451],serverError:[500,501,502,503,504,505,506,507,508,510,511]}},location:{country_code:[{alpha2:"AD",alpha3:"AND",numeric:"020"},{alpha2:"AE",alpha3:"ARE",numeric:"784"},{alpha2:"AF",alpha3:"AFG",numeric:"004"},{alpha2:"AG",alpha3:"ATG",numeric:"028"},{alpha2:"AI",alpha3:"AIA",numeric:"660"},{alpha2:"AL",alpha3:"ALB",numeric:"008"},{alpha2:"AM",alpha3:"ARM",numeric:"051"},{alpha2:"AO",alpha3:"AGO",numeric:"024"},{alpha2:"AQ",alpha3:"ATA",numeric:"010"},{alpha2:"AR",alpha3:"ARG",numeric:"032"},{alpha2:"AS",alpha3:"ASM",numeric:"016"},{alpha2:"AT",alpha3:"AUT",numeric:"040"},{alpha2:"AU",alpha3:"AUS",numeric:"036"},{alpha2:"AW",alpha3:"ABW",numeric:"533"},{alpha2:"AX",alpha3:"ALA",numeric:"248"},{alpha2:"AZ",alpha3:"AZE",numeric:"031"},{alpha2:"BA",alpha3:"BIH",numeric:"070"},{alpha2:"BB",alpha3:"BRB",numeric:"052"},{alpha2:"BD",alpha3:"BGD",numeric:"050"},{alpha2:"BE",alpha3:"BEL",numeric:"056"},{alpha2:"BF",alpha3:"BFA",numeric:"854"},{alpha2:"BG",alpha3:"BGR",numeric:"100"},{alpha2:"BH",alpha3:"BHR",numeric:"048"},{alpha2:"BI",alpha3:"BDI",numeric:"108"},{alpha2:"BJ",alpha3:"BEN",numeric:"204"},{alpha2:"BL",alpha3:"BLM",numeric:"652"},{alpha2:"BM",alpha3:"BMU",numeric:"060"},{alpha2:"BN",alpha3:"BRN",numeric:"096"},{alpha2:"BO",alpha3:"BOL",numeric:"068"},{alpha2:"BQ",alpha3:"BES",numeric:"535"},{alpha2:"BR",alpha3:"BRA",numeric:"076"},{alpha2:"BS",alpha3:"BHS",numeric:"044"},{alpha2:"BT",alpha3:"BTN",numeric:"064"},{alpha2:"BV",alpha3:"BVT",numeric:"074"},{alpha2:"BW",alpha3:"BWA",numeric:"072"},{alpha2:"BY",alpha3:"BLR",numeric:"112"},{alpha2:"BZ",alpha3:"BLZ",numeric:"084"},{alpha2:"CA",alpha3:"CAN",numeric:"124"},{alpha2:"CC",alpha3:"CCK",numeric:"166"},{alpha2:"CD",alpha3:"COD",numeric:"180"},{alpha2:"CF",alpha3:"CAF",numeric:"140"},{alpha2:"CG",alpha3:"COG",numeric:"178"},{alpha2:"CH",alpha3:"CHE",numeric:"756"},{alpha2:"CI",alpha3:"CIV",numeric:"384"},{alpha2:"CK",alpha3:"COK",numeric:"184"},{alpha2:"CL",alpha3:"CHL",numeric:"152"},{alpha2:"CM",alpha3:"CMR",numeric:"120"},{alpha2:"CN",alpha3:"CHN",numeric:"156"},{alpha2:"CO",alpha3:"COL",numeric:"170"},{alpha2:"CR",alpha3:"CRI",numeric:"188"},{alpha2:"CU",alpha3:"CUB",numeric:"192"},{alpha2:"CV",alpha3:"CPV",numeric:"132"},{alpha2:"CW",alpha3:"CUW",numeric:"531"},{alpha2:"CX",alpha3:"CXR",numeric:"162"},{alpha2:"CY",alpha3:"CYP",numeric:"196"},{alpha2:"CZ",alpha3:"CZE",numeric:"203"},{alpha2:"DE",alpha3:"DEU",numeric:"276"},{alpha2:"DJ",alpha3:"DJI",numeric:"262"},{alpha2:"DK",alpha3:"DNK",numeric:"208"},{alpha2:"DM",alpha3:"DMA",numeric:"212"},{alpha2:"DO",alpha3:"DOM",numeric:"214"},{alpha2:"DZ",alpha3:"DZA",numeric:"012"},{alpha2:"EC",alpha3:"ECU",numeric:"218"},{alpha2:"EE",alpha3:"EST",numeric:"233"},{alpha2:"EG",alpha3:"EGY",numeric:"818"},{alpha2:"EH",alpha3:"ESH",numeric:"732"},{alpha2:"ER",alpha3:"ERI",numeric:"232"},{alpha2:"ES",alpha3:"ESP",numeric:"724"},{alpha2:"ET",alpha3:"ETH",numeric:"231"},{alpha2:"FI",alpha3:"FIN",numeric:"246"},{alpha2:"FJ",alpha3:"FJI",numeric:"242"},{alpha2:"FK",alpha3:"FLK",numeric:"238"},{alpha2:"FM",alpha3:"FSM",numeric:"583"},{alpha2:"FO",alpha3:"FRO",numeric:"234"},{alpha2:"FR",alpha3:"FRA",numeric:"250"},{alpha2:"GA",alpha3:"GAB",numeric:"266"},{alpha2:"GB",alpha3:"GBR",numeric:"826"},{alpha2:"GD",alpha3:"GRD",numeric:"308"},{alpha2:"GE",alpha3:"GEO",numeric:"268"},{alpha2:"GF",alpha3:"GUF",numeric:"254"},{alpha2:"GG",alpha3:"GGY",numeric:"831"},{alpha2:"GH",alpha3:"GHA",numeric:"288"},{alpha2:"GI",alpha3:"GIB",numeric:"292"},{alpha2:"GL",alpha3:"GRL",numeric:"304"},{alpha2:"GM",alpha3:"GMB",numeric:"270"},{alpha2:"GN",alpha3:"GIN",numeric:"324"},{alpha2:"GP",alpha3:"GLP",numeric:"312"},{alpha2:"GQ",alpha3:"GNQ",numeric:"226"},{alpha2:"GR",alpha3:"GRC",numeric:"300"},{alpha2:"GS",alpha3:"SGS",numeric:"239"},{alpha2:"GT",alpha3:"GTM",numeric:"320"},{alpha2:"GU",alpha3:"GUM",numeric:"316"},{alpha2:"GW",alpha3:"GNB",numeric:"624"},{alpha2:"GY",alpha3:"GUY",numeric:"328"},{alpha2:"HK",alpha3:"HKG",numeric:"344"},{alpha2:"HM",alpha3:"HMD",numeric:"334"},{alpha2:"HN",alpha3:"HND",numeric:"340"},{alpha2:"HR",alpha3:"HRV",numeric:"191"},{alpha2:"HT",alpha3:"HTI",numeric:"332"},{alpha2:"HU",alpha3:"HUN",numeric:"348"},{alpha2:"ID",alpha3:"IDN",numeric:"360"},{alpha2:"IE",alpha3:"IRL",numeric:"372"},{alpha2:"IL",alpha3:"ISR",numeric:"376"},{alpha2:"IM",alpha3:"IMN",numeric:"833"},{alpha2:"IN",alpha3:"IND",numeric:"356"},{alpha2:"IO",alpha3:"IOT",numeric:"086"},{alpha2:"IQ",alpha3:"IRQ",numeric:"368"},{alpha2:"IR",alpha3:"IRN",numeric:"364"},{alpha2:"IS",alpha3:"ISL",numeric:"352"},{alpha2:"IT",alpha3:"ITA",numeric:"380"},{alpha2:"JE",alpha3:"JEY",numeric:"832"},{alpha2:"JM",alpha3:"JAM",numeric:"388"},{alpha2:"JO",alpha3:"JOR",numeric:"400"},{alpha2:"JP",alpha3:"JPN",numeric:"392"},{alpha2:"KE",alpha3:"KEN",numeric:"404"},{alpha2:"KG",alpha3:"KGZ",numeric:"417"},{alpha2:"KH",alpha3:"KHM",numeric:"116"},{alpha2:"KI",alpha3:"KIR",numeric:"296"},{alpha2:"KM",alpha3:"COM",numeric:"174"},{alpha2:"KN",alpha3:"KNA",numeric:"659"},{alpha2:"KP",alpha3:"PRK",numeric:"408"},{alpha2:"KR",alpha3:"KOR",numeric:"410"},{alpha2:"KW",alpha3:"KWT",numeric:"414"},{alpha2:"KY",alpha3:"CYM",numeric:"136"},{alpha2:"KZ",alpha3:"KAZ",numeric:"398"},{alpha2:"LA",alpha3:"LAO",numeric:"418"},{alpha2:"LB",alpha3:"LBN",numeric:"422"},{alpha2:"LC",alpha3:"LCA",numeric:"662"},{alpha2:"LI",alpha3:"LIE",numeric:"438"},{alpha2:"LK",alpha3:"LKA",numeric:"144"},{alpha2:"LR",alpha3:"LBR",numeric:"430"},{alpha2:"LS",alpha3:"LSO",numeric:"426"},{alpha2:"LT",alpha3:"LTU",numeric:"440"},{alpha2:"LU",alpha3:"LUX",numeric:"442"},{alpha2:"LV",alpha3:"LVA",numeric:"428"},{alpha2:"LY",alpha3:"LBY",numeric:"434"},{alpha2:"MA",alpha3:"MAR",numeric:"504"},{alpha2:"MC",alpha3:"MCO",numeric:"492"},{alpha2:"MD",alpha3:"MDA",numeric:"498"},{alpha2:"ME",alpha3:"MNE",numeric:"499"},{alpha2:"MF",alpha3:"MAF",numeric:"663"},{alpha2:"MG",alpha3:"MDG",numeric:"450"},{alpha2:"MH",alpha3:"MHL",numeric:"584"},{alpha2:"MK",alpha3:"MKD",numeric:"807"},{alpha2:"ML",alpha3:"MLI",numeric:"466"},{alpha2:"MM",alpha3:"MMR",numeric:"104"},{alpha2:"MN",alpha3:"MNG",numeric:"496"},{alpha2:"MO",alpha3:"MAC",numeric:"446"},{alpha2:"MP",alpha3:"MNP",numeric:"580"},{alpha2:"MQ",alpha3:"MTQ",numeric:"474"},{alpha2:"MR",alpha3:"MRT",numeric:"478"},{alpha2:"MS",alpha3:"MSR",numeric:"500"},{alpha2:"MT",alpha3:"MLT",numeric:"470"},{alpha2:"MU",alpha3:"MUS",numeric:"480"},{alpha2:"MV",alpha3:"MDV",numeric:"462"},{alpha2:"MW",alpha3:"MWI",numeric:"454"},{alpha2:"MX",alpha3:"MEX",numeric:"484"},{alpha2:"MY",alpha3:"MYS",numeric:"458"},{alpha2:"MZ",alpha3:"MOZ",numeric:"508"},{alpha2:"NA",alpha3:"NAM",numeric:"516"},{alpha2:"NC",alpha3:"NCL",numeric:"540"},{alpha2:"NE",alpha3:"NER",numeric:"562"},{alpha2:"NF",alpha3:"NFK",numeric:"574"},{alpha2:"NG",alpha3:"NGA",numeric:"566"},{alpha2:"NI",alpha3:"NIC",numeric:"558"},{alpha2:"NL",alpha3:"NLD",numeric:"528"},{alpha2:"NO",alpha3:"NOR",numeric:"578"},{alpha2:"NP",alpha3:"NPL",numeric:"524"},{alpha2:"NR",alpha3:"NRU",numeric:"520"},{alpha2:"NU",alpha3:"NIU",numeric:"570"},{alpha2:"NZ",alpha3:"NZL",numeric:"554"},{alpha2:"OM",alpha3:"OMN",numeric:"512"},{alpha2:"PA",alpha3:"PAN",numeric:"591"},{alpha2:"PE",alpha3:"PER",numeric:"604"},{alpha2:"PF",alpha3:"PYF",numeric:"258"},{alpha2:"PG",alpha3:"PNG",numeric:"598"},{alpha2:"PH",alpha3:"PHL",numeric:"608"},{alpha2:"PK",alpha3:"PAK",numeric:"586"},{alpha2:"PL",alpha3:"POL",numeric:"616"},{alpha2:"PM",alpha3:"SPM",numeric:"666"},{alpha2:"PN",alpha3:"PCN",numeric:"612"},{alpha2:"PR",alpha3:"PRI",numeric:"630"},{alpha2:"PS",alpha3:"PSE",numeric:"275"},{alpha2:"PT",alpha3:"PRT",numeric:"620"},{alpha2:"PW",alpha3:"PLW",numeric:"585"},{alpha2:"PY",alpha3:"PRY",numeric:"600"},{alpha2:"QA",alpha3:"QAT",numeric:"634"},{alpha2:"RE",alpha3:"REU",numeric:"638"},{alpha2:"RO",alpha3:"ROU",numeric:"642"},{alpha2:"RS",alpha3:"SRB",numeric:"688"},{alpha2:"RU",alpha3:"RUS",numeric:"643"},{alpha2:"RW",alpha3:"RWA",numeric:"646"},{alpha2:"SA",alpha3:"SAU",numeric:"682"},{alpha2:"SB",alpha3:"SLB",numeric:"090"},{alpha2:"SC",alpha3:"SYC",numeric:"690"},{alpha2:"SD",alpha3:"SDN",numeric:"729"},{alpha2:"SE",alpha3:"SWE",numeric:"752"},{alpha2:"SG",alpha3:"SGP",numeric:"702"},{alpha2:"SH",alpha3:"SHN",numeric:"654"},{alpha2:"SI",alpha3:"SVN",numeric:"705"},{alpha2:"SJ",alpha3:"SJM",numeric:"744"},{alpha2:"SK",alpha3:"SVK",numeric:"703"},{alpha2:"SL",alpha3:"SLE",numeric:"694"},{alpha2:"SM",alpha3:"SMR",numeric:"674"},{alpha2:"SN",alpha3:"SEN",numeric:"686"},{alpha2:"SO",alpha3:"SOM",numeric:"706"},{alpha2:"SR",alpha3:"SUR",numeric:"740"},{alpha2:"SS",alpha3:"SSD",numeric:"728"},{alpha2:"ST",alpha3:"STP",numeric:"678"},{alpha2:"SV",alpha3:"SLV",numeric:"222"},{alpha2:"SX",alpha3:"SXM",numeric:"534"},{alpha2:"SY",alpha3:"SYR",numeric:"760"},{alpha2:"SZ",alpha3:"SWZ",numeric:"748"},{alpha2:"TC",alpha3:"TCA",numeric:"796"},{alpha2:"TD",alpha3:"TCD",numeric:"148"},{alpha2:"TF",alpha3:"ATF",numeric:"260"},{alpha2:"TG",alpha3:"TGO",numeric:"768"},{alpha2:"TH",alpha3:"THA",numeric:"764"},{alpha2:"TJ",alpha3:"TJK",numeric:"762"},{alpha2:"TK",alpha3:"TKL",numeric:"772"},{alpha2:"TL",alpha3:"TLS",numeric:"626"},{alpha2:"TM",alpha3:"TKM",numeric:"795"},{alpha2:"TN",alpha3:"TUN",numeric:"788"},{alpha2:"TO",alpha3:"TON",numeric:"776"},{alpha2:"TR",alpha3:"TUR",numeric:"792"},{alpha2:"TT",alpha3:"TTO",numeric:"780"},{alpha2:"TV",alpha3:"TUV",numeric:"798"},{alpha2:"TW",alpha3:"TWN",numeric:"158"},{alpha2:"TZ",alpha3:"TZA",numeric:"834"},{alpha2:"UA",alpha3:"UKR",numeric:"804"},{alpha2:"UG",alpha3:"UGA",numeric:"800"},{alpha2:"UM",alpha3:"UMI",numeric:"581"},{alpha2:"US",alpha3:"USA",numeric:"840"},{alpha2:"UY",alpha3:"URY",numeric:"858"},{alpha2:"UZ",alpha3:"UZB",numeric:"860"},{alpha2:"VA",alpha3:"VAT",numeric:"336"},{alpha2:"VC",alpha3:"VCT",numeric:"670"},{alpha2:"VE",alpha3:"VEN",numeric:"862"},{alpha2:"VG",alpha3:"VGB",numeric:"092"},{alpha2:"VI",alpha3:"VIR",numeric:"850"},{alpha2:"VN",alpha3:"VNM",numeric:"704"},{alpha2:"VU",alpha3:"VUT",numeric:"548"},{alpha2:"WF",alpha3:"WLF",numeric:"876"},{alpha2:"WS",alpha3:"WSM",numeric:"882"},{alpha2:"YE",alpha3:"YEM",numeric:"887"},{alpha2:"YT",alpha3:"MYT",numeric:"175"},{alpha2:"ZA",alpha3:"ZAF",numeric:"710"},{alpha2:"ZM",alpha3:"ZMB",numeric:"894"},{alpha2:"ZW",alpha3:"ZWE",numeric:"716"}],time_zone:r_},metadata:{title:"Base",code:"base"},system:{directory_path:["/Applications","/bin","/boot","/boot/defaults","/dev","/etc","/etc/defaults","/etc/mail","/etc/namedb","/etc/periodic","/etc/ppp","/home","/home/user","/home/user/dir","/lib","/Library","/lost+found","/media","/mnt","/net","/Network","/opt","/opt/bin","/opt/include","/opt/lib","/opt/sbin","/opt/share","/private","/private/tmp","/private/var","/proc","/rescue","/root","/sbin","/selinux","/srv","/sys","/System","/tmp","/Users","/usr","/usr/X11R6","/usr/bin","/usr/include","/usr/lib","/usr/libdata","/usr/libexec","/usr/local/bin","/usr/local/src","/usr/obj","/usr/ports","/usr/sbin","/usr/share","/usr/src","/var","/var/log","/var/mail","/var/spool","/var/tmp","/var/yp"],mime_type:{"application/epub+zip":{extensions:["epub"]},"application/gzip":{extensions:["gz"]},"application/java-archive":{extensions:["jar","war","ear"]},"application/json":{extensions:["json","map"]},"application/ld+json":{extensions:["jsonld"]},"application/msword":{extensions:["doc","dot"]},"application/octet-stream":{extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/ogg":{extensions:["ogx"]},"application/pdf":{extensions:["pdf"]},"application/rtf":{extensions:["rtf"]},"application/vnd.amazon.ebook":{extensions:["azw"]},"application/vnd.apple.installer+xml":{extensions:["mpkg"]},"application/vnd.mozilla.xul+xml":{extensions:["xul"]},"application/vnd.ms-excel":{extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-fontobject":{extensions:["eot"]},"application/vnd.ms-powerpoint":{extensions:["ppt","pps","pot"]},"application/vnd.oasis.opendocument.presentation":{extensions:["odp"]},"application/vnd.oasis.opendocument.spreadsheet":{extensions:["ods"]},"application/vnd.oasis.opendocument.text":{extensions:["odt"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{extensions:["docx"]},"application/vnd.rar":{extensions:["rar"]},"application/vnd.visio":{extensions:["vsd","vst","vss","vsw"]},"application/x-7z-compressed":{extensions:["7z"]},"application/x-abiword":{extensions:["abw"]},"application/x-bzip":{extensions:["bz"]},"application/x-bzip2":{extensions:["bz2","boz"]},"application/x-csh":{extensions:["csh"]},"application/x-freearc":{extensions:["arc"]},"application/x-httpd-php":{extensions:["php"]},"application/x-sh":{extensions:["sh"]},"application/x-tar":{extensions:["tar"]},"application/xhtml+xml":{extensions:["xhtml","xht"]},"application/xml":{extensions:["xml","xsl","xsd","rng"]},"application/zip":{extensions:["zip"]},"audio/3gpp":{extensions:["3gpp"]},"audio/3gpp2":{extensions:["3g2"]},"audio/aac":{extensions:["aac"]},"audio/midi":{extensions:["mid","midi","kar","rmi"]},"audio/mpeg":{extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/ogg":{extensions:["oga","ogg","spx","opus"]},"audio/opus":{extensions:["opus"]},"audio/wav":{extensions:["wav"]},"audio/webm":{extensions:["weba"]},"font/otf":{extensions:["otf"]},"font/ttf":{extensions:["ttf"]},"font/woff":{extensions:["woff"]},"font/woff2":{extensions:["woff2"]},"image/avif":{extensions:["avif"]},"image/bmp":{extensions:["bmp"]},"image/gif":{extensions:["gif"]},"image/jpeg":{extensions:["jpeg","jpg","jpe"]},"image/png":{extensions:["png"]},"image/svg+xml":{extensions:["svg","svgz"]},"image/tiff":{extensions:["tif","tiff"]},"image/vnd.microsoft.icon":{extensions:["ico"]},"image/webp":{extensions:["webp"]},"text/calendar":{extensions:["ics","ifb"]},"text/css":{extensions:["css"]},"text/csv":{extensions:["csv"]},"text/html":{extensions:["html","htm","shtml"]},"text/javascript":{extensions:["js","mjs"]},"text/plain":{extensions:["txt","text","conf","def","list","log","in","ini"]},"video/3gpp":{extensions:["3gp","3gpp"]},"video/3gpp2":{extensions:["3g2"]},"video/mp2t":{extensions:["ts"]},"video/mp4":{extensions:["mp4","mp4v","mpg4"]},"video/mpeg":{extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/ogg":{extensions:["ogv"]},"video/webm":{extensions:["webm"]},"video/x-msvideo":{extensions:["avi"]}}}},i_=new class extends xC{rawDefinitions;definitions;airline=new zw(this);animal=new wC(this);color=new Yw(this);commerce=new _C(this);company=new SC(this);database=new AC(this);date=new cC(this);finance=new BC(this);food=new LC(this);git=new EC(this);hacker=new RC(this);helpers=new yC(this);image=new DC(this);internet=new FC(this);location=new OC(this);lorem=new JC(this);music=new VC(this);person=new Xw(this);phone=new jC(this);science=new YC(this);system=new XC(this);vehicle=new e_(this);word=new t_(this);get address(){return kC({deprecated:"faker.address",proposed:"faker.location",since:"8.0",until:"10.0"}),this.location}get name(){return kC({deprecated:"faker.name",proposed:"faker.person",since:"8.0",until:"10.0"}),this.person}constructor(e){super({randomizer:e.randomizer});let{locale:t}=e;if(Array.isArray(t)){if(0===t.length)throw new Dw("The locale option must contain at least one locale definition.");t=function(e){let t={};for(let r of e)for(let e in r){let a=r[e];void 0===t[e]?t[e]={...a}:t[e]={...a,...t[e]}}return t}(t)}this.rawDefinitions=t,this.definitions=function(e){let t={};return new Proxy(e,{has:()=>!0,get:(e,r)=>"symbol"==typeof r||"nodeType"===r?e[r]:r in t?t[r]:t[r]=function(e,t={}){return new Proxy(t,{has:(e,t)=>null!=e[t],get(t,r){let a=t[r];return"symbol"==typeof r||"nodeType"===r||iC(a,e,r.toString()),a},set:aC,deleteProperty:aC})}(r,e[r]),set:aC,deleteProperty:aC})}(this.rawDefinitions)}getMetadata(){return this.rawDefinitions.metadata??{}}}({locale:[{airline:{airline:[{name:"Aegean Airlines",iataCode:"A3"},{name:"Aeroflot",iataCode:"SU"},{name:"Aerolineas Argentinas",iataCode:"AR"},{name:"Aeromexico",iataCode:"AM"},{name:"Air Algerie",iataCode:"AH"},{name:"Air Arabia",iataCode:"G9"},{name:"Air Canada",iataCode:"AC"},{name:"Air China",iataCode:"CA"},{name:"Air Europa",iataCode:"UX"},{name:"Air France-KLM",iataCode:"AF"},{name:"Air India",iataCode:"AI"},{name:"Air Mauritius",iataCode:"MK"},{name:"Air New Zealand",iataCode:"NZ"},{name:"Air Niugini",iataCode:"PX"},{name:"Air Tahiti",iataCode:"VT"},{name:"Air Tahiti Nui",iataCode:"TN"},{name:"Air Transat",iataCode:"TS"},{name:"AirAsia X",iataCode:"D7"},{name:"AirAsia",iataCode:"AK"},{name:"Aircalin",iataCode:"SB"},{name:"Alaska Airlines",iataCode:"AS"},{name:"Alitalia",iataCode:"AZ"},{name:"All Nippon Airways",iataCode:"NH"},{name:"Allegiant Air",iataCode:"G4"},{name:"American Airlines",iataCode:"AA"},{name:"Asiana Airlines",iataCode:"OZ"},{name:"Avianca",iataCode:"AV"},{name:"Azul Linhas Aereas Brasileiras",iataCode:"AD"},{name:"Azur Air",iataCode:"ZF"},{name:"Beijing Capital Airlines",iataCode:"JD"},{name:"Boliviana de Aviacion",iataCode:"OB"},{name:"British Airways",iataCode:"BA"},{name:"Cathay Pacific",iataCode:"CX"},{name:"Cebu Pacific Air",iataCode:"5J"},{name:"China Airlines",iataCode:"CI"},{name:"China Eastern Airlines",iataCode:"MU"},{name:"China Southern Airlines",iataCode:"CZ"},{name:"Condor",iataCode:"DE"},{name:"Copa Airlines",iataCode:"CM"},{name:"Delta Air Lines",iataCode:"DL"},{name:"Easyfly",iataCode:"VE"},{name:"EasyJet",iataCode:"U2"},{name:"EcoJet",iataCode:"8J"},{name:"Egyptair",iataCode:"MS"},{name:"El Al",iataCode:"LY"},{name:"Emirates Airlines",iataCode:"EK"},{name:"Ethiopian Airlines",iataCode:"ET"},{name:"Etihad Airways",iataCode:"EY"},{name:"EVA Air",iataCode:"BR"},{name:"Fiji Airways",iataCode:"FJ"},{name:"Finnair",iataCode:"AY"},{name:"Flybondi",iataCode:"FO"},{name:"Flydubai",iataCode:"FZ"},{name:"FlySafair",iataCode:"FA"},{name:"Frontier Airlines",iataCode:"F9"},{name:"Garuda Indonesia",iataCode:"GA"},{name:"Go First",iataCode:"G8"},{name:"Gol Linhas Aereas Inteligentes",iataCode:"G3"},{name:"Hainan Airlines",iataCode:"HU"},{name:"Hawaiian Airlines",iataCode:"HA"},{name:"IndiGo Airlines",iataCode:"6E"},{name:"Japan Airlines",iataCode:"JL"},{name:"Jeju Air",iataCode:"7C"},{name:"Jet2",iataCode:"LS"},{name:"JetBlue Airways",iataCode:"B6"},{name:"JetSMART",iataCode:"JA"},{name:"Juneyao Airlines",iataCode:"HO"},{name:"Kenya Airways",iataCode:"KQ"},{name:"Korean Air",iataCode:"KE"},{name:"Kulula.com",iataCode:"MN"},{name:"LATAM Airlines",iataCode:"LA"},{name:"Lion Air",iataCode:"JT"},{name:"LOT Polish Airlines",iataCode:"LO"},{name:"Lufthansa",iataCode:"LH"},{name:"Libyan Airlines",iataCode:"LN"},{name:"Linea Aerea Amaszonas",iataCode:"Z8"},{name:"Malaysia Airlines",iataCode:"MH"},{name:"Nordwind Airlines",iataCode:"N4"},{name:"Norwegian Air Shuttle",iataCode:"DY"},{name:"Oman Air",iataCode:"WY"},{name:"Pakistan International Airlines",iataCode:"PK"},{name:"Pegasus Airlines",iataCode:"PC"},{name:"Philippine Airlines",iataCode:"PR"},{name:"Qantas Group",iataCode:"QF"},{name:"Qatar Airways",iataCode:"QR"},{name:"Republic Airways",iataCode:"YX"},{name:"Royal Air Maroc",iataCode:"AT"},{name:"Ryanair",iataCode:"FR"},{name:"S7 Airlines",iataCode:"S7"},{name:"SAS",iataCode:"SK"},{name:"Satena",iataCode:"9R"},{name:"Saudia",iataCode:"SV"},{name:"Shandong Airlines",iataCode:"SC"},{name:"Sichuan Airlines",iataCode:"3U"},{name:"Singapore Airlines",iataCode:"SQ"},{name:"Sky Airline",iataCode:"H2"},{name:"SkyWest Airlines",iataCode:"OO"},{name:"South African Airways",iataCode:"SA"},{name:"Southwest Airlines",iataCode:"WN"},{name:"SpiceJet",iataCode:"SG"},{name:"Spirit Airlines",iataCode:"NK"},{name:"Spring Airlines",iataCode:"9S"},{name:"SriLankan Airlines",iataCode:"UL"},{name:"Star Peru",iataCode:"2I"},{name:"Sun Country Airlines",iataCode:"SY"},{name:"SunExpress",iataCode:"XQ"},{name:"TAP Air Portugal",iataCode:"TP"},{name:"Thai AirAsia",iataCode:"FD"},{name:"Thai Airways",iataCode:"TG"},{name:"TUI Airways",iataCode:"BY"},{name:"Tunisair",iataCode:"TU"},{name:"Turkish Airlines",iataCode:"TK"},{name:"Ukraine International",iataCode:"PS"},{name:"United Airlines",iataCode:"UA"},{name:"Ural Airlines",iataCode:"U6"},{name:"VietJet Air",iataCode:"VJ"},{name:"Vietnam Airlines",iataCode:"VN"},{name:"Virgin Atlantic Airways",iataCode:"VS"},{name:"Virgin Australia",iataCode:"VA"},{name:"VivaAerobus",iataCode:"VB"},{name:"VOEPASS Linhas Aereas",iataCode:"2Z"},{name:"Volaris",iataCode:"Y4"},{name:"WestJet",iataCode:"WS"},{name:"Wingo",iataCode:"P5"},{name:"Wizz Air",iataCode:"W6"}],airplane:[{name:"Aerospatiale/BAC Concorde",iataTypeCode:"SSC"},{name:"Airbus A300",iataTypeCode:"AB3"},{name:"Airbus A310",iataTypeCode:"310"},{name:"Airbus A310-200",iataTypeCode:"312"},{name:"Airbus A310-300",iataTypeCode:"313"},{name:"Airbus A318",iataTypeCode:"318"},{name:"Airbus A319",iataTypeCode:"319"},{name:"Airbus A319neo",iataTypeCode:"31N"},{name:"Airbus A320",iataTypeCode:"320"},{name:"Airbus A320neo",iataTypeCode:"32N"},{name:"Airbus A321",iataTypeCode:"321"},{name:"Airbus A321neo",iataTypeCode:"32Q"},{name:"Airbus A330",iataTypeCode:"330"},{name:"Airbus A330-200",iataTypeCode:"332"},{name:"Airbus A330-300",iataTypeCode:"333"},{name:"Airbus A330-800neo",iataTypeCode:"338"},{name:"Airbus A330-900neo",iataTypeCode:"339"},{name:"Airbus A340",iataTypeCode:"340"},{name:"Airbus A340-200",iataTypeCode:"342"},{name:"Airbus A340-300",iataTypeCode:"343"},{name:"Airbus A340-500",iataTypeCode:"345"},{name:"Airbus A340-600",iataTypeCode:"346"},{name:"Airbus A350",iataTypeCode:"350"},{name:"Airbus A350-900",iataTypeCode:"359"},{name:"Airbus A350-1000",iataTypeCode:"351"},{name:"Airbus A380",iataTypeCode:"380"},{name:"Airbus A380-800",iataTypeCode:"388"},{name:"Antonov An-12",iataTypeCode:"ANF"},{name:"Antonov An-24",iataTypeCode:"AN4"},{name:"Antonov An-26",iataTypeCode:"A26"},{name:"Antonov An-28",iataTypeCode:"A28"},{name:"Antonov An-30",iataTypeCode:"A30"},{name:"Antonov An-32",iataTypeCode:"A32"},{name:"Antonov An-72",iataTypeCode:"AN7"},{name:"Antonov An-124 Ruslan",iataTypeCode:"A4F"},{name:"Antonov An-140",iataTypeCode:"A40"},{name:"Antonov An-148",iataTypeCode:"A81"},{name:"Antonov An-158",iataTypeCode:"A58"},{name:"Antonov An-225 Mriya",iataTypeCode:"A5F"},{name:"Boeing 707",iataTypeCode:"703"},{name:"Boeing 717",iataTypeCode:"717"},{name:"Boeing 720B",iataTypeCode:"B72"},{name:"Boeing 727",iataTypeCode:"727"},{name:"Boeing 727-100",iataTypeCode:"721"},{name:"Boeing 727-200",iataTypeCode:"722"},{name:"Boeing 737 MAX 7",iataTypeCode:"7M7"},{name:"Boeing 737 MAX 8",iataTypeCode:"7M8"},{name:"Boeing 737 MAX 9",iataTypeCode:"7M9"},{name:"Boeing 737 MAX 10",iataTypeCode:"7MJ"},{name:"Boeing 737",iataTypeCode:"737"},{name:"Boeing 737-100",iataTypeCode:"731"},{name:"Boeing 737-200",iataTypeCode:"732"},{name:"Boeing 737-300",iataTypeCode:"733"},{name:"Boeing 737-400",iataTypeCode:"734"},{name:"Boeing 737-500",iataTypeCode:"735"},{name:"Boeing 737-600",iataTypeCode:"736"},{name:"Boeing 737-700",iataTypeCode:"73G"},{name:"Boeing 737-800",iataTypeCode:"738"},{name:"Boeing 737-900",iataTypeCode:"739"},{name:"Boeing 747",iataTypeCode:"747"},{name:"Boeing 747-100",iataTypeCode:"741"},{name:"Boeing 747-200",iataTypeCode:"742"},{name:"Boeing 747-300",iataTypeCode:"743"},{name:"Boeing 747-400",iataTypeCode:"744"},{name:"Boeing 747-400D",iataTypeCode:"74J"},{name:"Boeing 747-8",iataTypeCode:"748"},{name:"Boeing 747SP",iataTypeCode:"74L"},{name:"Boeing 747SR",iataTypeCode:"74R"},{name:"Boeing 757",iataTypeCode:"757"},{name:"Boeing 757-200",iataTypeCode:"752"},{name:"Boeing 757-300",iataTypeCode:"753"},{name:"Boeing 767",iataTypeCode:"767"},{name:"Boeing 767-200",iataTypeCode:"762"},{name:"Boeing 767-300",iataTypeCode:"763"},{name:"Boeing 767-400",iataTypeCode:"764"},{name:"Boeing 777",iataTypeCode:"777"},{name:"Boeing 777-200",iataTypeCode:"772"},{name:"Boeing 777-200LR",iataTypeCode:"77L"},{name:"Boeing 777-300",iataTypeCode:"773"},{name:"Boeing 777-300ER",iataTypeCode:"77W"},{name:"Boeing 787",iataTypeCode:"787"},{name:"Boeing 787-8",iataTypeCode:"788"},{name:"Boeing 787-9",iataTypeCode:"789"},{name:"Boeing 787-10",iataTypeCode:"781"},{name:"Canadair Challenger",iataTypeCode:"CCJ"},{name:"Canadair CL-44",iataTypeCode:"CL4"},{name:"Canadair Regional Jet 100",iataTypeCode:"CR1"},{name:"Canadair Regional Jet 200",iataTypeCode:"CR2"},{name:"Canadair Regional Jet 700",iataTypeCode:"CR7"},{name:"Canadair Regional Jet 705",iataTypeCode:"CRA"},{name:"Canadair Regional Jet 900",iataTypeCode:"CR9"},{name:"Canadair Regional Jet 1000",iataTypeCode:"CRK"},{name:"De Havilland Canada DHC-2 Beaver",iataTypeCode:"DHP"},{name:"De Havilland Canada DHC-2 Turbo-Beaver",iataTypeCode:"DHR"},{name:"De Havilland Canada DHC-3 Otter",iataTypeCode:"DHL"},{name:"De Havilland Canada DHC-4 Caribou",iataTypeCode:"DHC"},{name:"De Havilland Canada DHC-6 Twin Otter",iataTypeCode:"DHT"},{name:"De Havilland Canada DHC-7 Dash 7",iataTypeCode:"DH7"},{name:"De Havilland Canada DHC-8-100 Dash 8 / 8Q",iataTypeCode:"DH1"},{name:"De Havilland Canada DHC-8-200 Dash 8 / 8Q",iataTypeCode:"DH2"},{name:"De Havilland Canada DHC-8-300 Dash 8 / 8Q",iataTypeCode:"DH3"},{name:"De Havilland Canada DHC-8-400 Dash 8Q",iataTypeCode:"DH4"},{name:"De Havilland DH.104 Dove",iataTypeCode:"DHD"},{name:"De Havilland DH.114 Heron",iataTypeCode:"DHH"},{name:"Douglas DC-3",iataTypeCode:"D3F"},{name:"Douglas DC-6",iataTypeCode:"D6F"},{name:"Douglas DC-8-50",iataTypeCode:"D8T"},{name:"Douglas DC-8-62",iataTypeCode:"D8L"},{name:"Douglas DC-8-72",iataTypeCode:"D8Q"},{name:"Douglas DC-9-10",iataTypeCode:"D91"},{name:"Douglas DC-9-20",iataTypeCode:"D92"},{name:"Douglas DC-9-30",iataTypeCode:"D93"},{name:"Douglas DC-9-40",iataTypeCode:"D94"},{name:"Douglas DC-9-50",iataTypeCode:"D95"},{name:"Douglas DC-10",iataTypeCode:"D10"},{name:"Douglas DC-10-10",iataTypeCode:"D1X"},{name:"Douglas DC-10-30",iataTypeCode:"D1Y"},{name:"Embraer 170",iataTypeCode:"E70"},{name:"Embraer 175",iataTypeCode:"E75"},{name:"Embraer 190",iataTypeCode:"E90"},{name:"Embraer 195",iataTypeCode:"E95"},{name:"Embraer E190-E2",iataTypeCode:"290"},{name:"Embraer E195-E2",iataTypeCode:"295"},{name:"Embraer EMB.110 Bandeirante",iataTypeCode:"EMB"},{name:"Embraer EMB.120 Brasilia",iataTypeCode:"EM2"},{name:"Embraer Legacy 600",iataTypeCode:"ER3"},{name:"Embraer Phenom 100",iataTypeCode:"EP1"},{name:"Embraer Phenom 300",iataTypeCode:"EP3"},{name:"Embraer RJ135",iataTypeCode:"ER3"},{name:"Embraer RJ140",iataTypeCode:"ERD"},{name:"Embraer RJ145 Amazon",iataTypeCode:"ER4"},{name:"Ilyushin IL18",iataTypeCode:"IL8"},{name:"Ilyushin IL62",iataTypeCode:"IL6"},{name:"Ilyushin IL76",iataTypeCode:"IL7"},{name:"Ilyushin IL86",iataTypeCode:"ILW"},{name:"Ilyushin IL96-300",iataTypeCode:"I93"},{name:"Ilyushin IL114",iataTypeCode:"I14"},{name:"Lockheed L-182 / 282 / 382 (L-100) Hercules",iataTypeCode:"LOH"},{name:"Lockheed L-188 Electra",iataTypeCode:"LOE"},{name:"Lockheed L-1011 Tristar",iataTypeCode:"L10"},{name:"Lockheed L-1049 Super Constellation",iataTypeCode:"L49"},{name:"McDonnell Douglas MD11",iataTypeCode:"M11"},{name:"McDonnell Douglas MD80",iataTypeCode:"M80"},{name:"McDonnell Douglas MD81",iataTypeCode:"M81"},{name:"McDonnell Douglas MD82",iataTypeCode:"M82"},{name:"McDonnell Douglas MD83",iataTypeCode:"M83"},{name:"McDonnell Douglas MD87",iataTypeCode:"M87"},{name:"McDonnell Douglas MD88",iataTypeCode:"M88"},{name:"McDonnell Douglas MD90",iataTypeCode:"M90"},{name:"Sukhoi Superjet 100-95",iataTypeCode:"SU9"},{name:"Tupolev Tu-134",iataTypeCode:"TU3"},{name:"Tupolev Tu-154",iataTypeCode:"TU5"},{name:"Tupolev Tu-204",iataTypeCode:"T20"},{name:"Yakovlev Yak-40",iataTypeCode:"YK4"},{name:"Yakovlev Yak-42",iataTypeCode:"YK2"}],airport:[{name:"Adelaide International Airport",iataCode:"ADL"},{name:"Adolfo Suarez Madrid-Barajas Airport",iataCode:"MAD"},{name:"Aeroparque Jorge Newbery Airport",iataCode:"AEP"},{name:"Afonso Pena International Airport",iataCode:"CWB"},{name:"Alfonso Bonilla Aragon International Airport",iataCode:"CLO"},{name:"Amsterdam Airport Schiphol",iataCode:"AMS"},{name:"Arturo Merino Benitez International Airport",iataCode:"SCL"},{name:"Auckland International Airport",iataCode:"AKL"},{name:"Beijing Capital International Airport",iataCode:"PEK"},{name:"Belem Val de Cans International Airport",iataCode:"BEL"},{name:"Belo Horizonte Tancredo Neves International Airport",iataCode:"CNF"},{name:"Berlin-Tegel Airport",iataCode:"TXL"},{name:"Bole International Airport",iataCode:"ADD"},{name:"Brasilia-Presidente Juscelino Kubitschek International Airport",iataCode:"BSB"},{name:"Brisbane International Airport",iataCode:"BNE"},{name:"Brussels Airport",iataCode:"BRU"},{name:"Cairns Airport",iataCode:"CNS"},{name:"Cairo International Airport",iataCode:"CAI"},{name:"Canberra Airport",iataCode:"CBR"},{name:"Capetown International Airport",iataCode:"CPT"},{name:"Charles de Gaulle International Airport",iataCode:"CDG"},{name:"Charlotte Douglas International Airport",iataCode:"CLT"},{name:"Chengdu Shuangliu International Airport",iataCode:"CTU"},{name:"Chhatrapati Shivaji International Airport",iataCode:"BOM"},{name:"Chicago O'Hare International Airport",iataCode:"ORD"},{name:"Chongqing Jiangbei International Airport",iataCode:"CKG"},{name:"Christchurch International Airport",iataCode:"CHC"},{name:"Copenhagen Kastrup Airport",iataCode:"CPH"},{name:"Dallas Fort Worth International Airport",iataCode:"DFW"},{name:"Daniel K. Inouye International Airport",iataCode:"HNL"},{name:"Denver International Airport",iataCode:"DEN"},{name:"Don Mueang International Airport",iataCode:"DMK"},{name:"Dubai International Airport",iataCode:"DXB"},{name:"Dublin Airport",iataCode:"DUB"},{name:"Dusseldorf Airport",iataCode:"DUS"},{name:"El Dorado International Airport",iataCode:"BOG"},{name:"Eleftherios Venizelos International Airport",iataCode:"ATH"},{name:"Faa'a International Airport",iataCode:"PPT"},{name:"Fort Lauderdale Hollywood International Airport",iataCode:"FLL"},{name:"Fortaleza Pinto Martins International Airport",iataCode:"FOR"},{name:"Frankfurt am Main Airport",iataCode:"FRA"},{name:"George Bush Intercontinental Houston Airport",iataCode:"IAH"},{name:"Gold Coast Airport",iataCode:"OOL"},{name:"Guarulhos - Governador Andre Franco Montoro International Airport",iataCode:"GRU"},{name:"Hartsfield-Jackson Atlanta International Airport",iataCode:"ATL"},{name:"Helsinki Vantaa Airport",iataCode:"HEL"},{name:"Hobart International Airport",iataCode:"HBA"},{name:"Hong Kong International Airport",iataCode:"HKG"},{name:"Houari Boumediene Airport",iataCode:"ALG"},{name:"Hurgada International Airport",iataCode:"HRG"},{name:"Incheon International Airport",iataCode:"ICN"},{name:"Indira Gandhi International Airport",iataCode:"DEL"},{name:"Istanbul Airport",iataCode:"IST"},{name:"Jacksons International Airport",iataCode:"POM"},{name:"Jeju International Airport",iataCode:"CJU"},{name:"John F Kennedy International Airport",iataCode:"JFK"},{name:"Jorge Chavez International Airport",iataCode:"LIM"},{name:"Jose Maria Cordova International Airport",iataCode:"MDE"},{name:"Josep Tarradellas Barcelona-El Prat Airport",iataCode:"BCN"},{name:"Kahului Airport",iataCode:"OGG"},{name:"King Abdulaziz International Airport",iataCode:"JED"},{name:"Kuala Lumpur International Airport",iataCode:"KUL"},{name:"Kunming Changshui International Airport",iataCode:"KMG"},{name:"La Tontouta International Airport",iataCode:"NOU"},{name:"Leonardo da Vinci-Fiumicino Airport",iataCode:"FCO"},{name:"London Heathrow Airport",iataCode:"LHR"},{name:"Los Angeles International Airport",iataCode:"LAX"},{name:"McCarran International Airport",iataCode:"LAS"},{name:"Melbourne International Airport",iataCode:"MEL"},{name:"Mexico City International Airport",iataCode:"MEX"},{name:"Miami International Airport",iataCode:"MIA"},{name:"Ministro Pistarini International Airport",iataCode:"EZE"},{name:"Minneapolis-St Paul International/Wold-Chamberlain Airport",iataCode:"MSP"},{name:"Mohammed V International Airport",iataCode:"CMN"},{name:"Moscow Domodedovo Airport",iataCode:"DME"},{name:"Munich Airport",iataCode:"MUC"},{name:"Murtala Muhammed International Airport",iataCode:"LOS"},{name:"Nadi International Airport",iataCode:"NAN"},{name:"Nairobi Jomo Kenyatta International Airport",iataCode:"NBO"},{name:"Narita International Airport",iataCode:"NRT"},{name:"Newark Liberty International Airport",iataCode:"EWR"},{name:"Ninoy Aquino International Airport",iataCode:"MNL"},{name:"Noumea Magenta Airport",iataCode:"GEA"},{name:"O. R. Tambo International Airport",iataCode:"JNB"},{name:"Orlando International Airport",iataCode:"MCO"},{name:"Oslo Lufthavn",iataCode:"OSL"},{name:"Perth Airport",iataCode:"PER"},{name:"Phoenix Sky Harbor International Airport",iataCode:"PHX"},{name:"Recife Guararapes-Gilberto Freyre International Airport",iataCode:"REC"},{name:"Rio de Janeiro Galeao International Airport",iataCode:"GIG"},{name:"Salgado Filho International Airport",iataCode:"POA"},{name:"Salvador Deputado Luis Eduardo Magalhaes International Airport",iataCode:"SSA"},{name:"San Francisco International Airport",iataCode:"SFO"},{name:"Santos Dumont Airport",iataCode:"SDU"},{name:"Sao Paulo-Congonhas Airport",iataCode:"CGH"},{name:"Seattle Tacoma International Airport",iataCode:"SEA"},{name:"Shanghai Hongqiao International Airport",iataCode:"SHA"},{name:"Shanghai Pudong International Airport",iataCode:"PVG"},{name:"Shenzhen Bao'an International Airport",iataCode:"SZX"},{name:"Sheremetyevo International Airport",iataCode:"SVO"},{name:"Singapore Changi Airport",iataCode:"SIN"},{name:"Soekarno-Hatta International Airport",iataCode:"CGK"},{name:'Stockholm-Arlanda Airport"',iataCode:"ARN"},{name:"Suvarnabhumi Airport",iataCode:"BKK"},{name:"Sydney Kingsford Smith International Airport",iataCode:"SYD"},{name:"Taiwan Taoyuan International Airport",iataCode:"TPE"},{name:"Tan Son Nhat International Airport",iataCode:"SGN"},{name:"Tokyo Haneda International Airport",iataCode:"HND"},{name:"Toronto Pearson International Airport",iataCode:"YYZ"},{name:"Tunis Carthage International Airport",iataCode:"TUN"},{name:"Vancouver International Airport",iataCode:"YVR"},{name:"Vienna International Airport",iataCode:"VIE"},{name:"Viracopos International Airport",iataCode:"VCP"},{name:"Vnukovo International Airport",iataCode:"VKO"},{name:"Wellington International Airport",iataCode:"WLG"},{name:"Xi'an Xianyang International Airport",iataCode:"XIY"},{name:"Zhukovsky International Airport",iataCode:"ZIA"},{name:"Zurich Airport",iataCode:"ZRH"}]},animal:{bear:["American black bear","Asian black bear","Brown bear","Giant panda","Polar bear","Sloth bear","Spectacled bear","Sun bear"],bird:["Abert's Towhee","Acadian Flycatcher","Acorn Woodpecker","Alder Flycatcher","Aleutian Tern","Allen's Hummingbird","Altamira Oriole","American Avocet","American Bittern","American Black Duck","American Coot","American Crow","American Dipper","American Golden-Plover","American Goldfinch","American Kestrel","American Oystercatcher","American Pipit","American Redstart","American Robin","American Tree Sparrow","American White Pelican","American Wigeon","American Woodcock","Ancient Murrelet","Anhinga","Anna's Hummingbird","Antillean Nighthawk","Antillean Palm Swift","Aplomado Falcon","Arctic Loon","Arctic Tern","Arctic Warbler","Ash-throated Flycatcher","Ashy Storm-Petrel","Asian Brown Flycatcher","Atlantic Puffin","Audubon's Oriole","Audubon's Shearwater","Aztec Thrush","Azure Gallinule","Bachman's Sparrow","Bachman's Warbler","Bahama Mockingbird","Bahama Swallow","Bahama Woodstar","Baikal Teal","Baird's Sandpiper","Baird's Sparrow","Bald Eagle","Baltimore Oriole","Bananaquit","Band-rumped Storm-Petrel","Band-tailed Gull","Band-tailed Pigeon","Bank Swallow","Bar-tailed Godwit","Barn Owl","Barn Swallow","Barnacle Goose","Barred Owl","Barrow's Goldeneye","Bay-breasted Warbler","Bean Goose","Bell's Vireo","Belted Kingfisher","Bendire's Thrasher","Berylline Hummingbird","Bewick's Wren","Bicknell's Thrush","Black Catbird","Black Guillemot","Black Noddy","Black Oystercatcher","Black Phoebe","Black Rail","Black Rosy-Finch","Black Scoter","Black Skimmer","Black Storm-Petrel","Black Swift","Black Tern","Black Turnstone","Black Vulture","Black-and-white Warbler","Black-backed Wagtail","Black-backed Woodpecker","Black-bellied Plover","Black-bellied Whistling-Duck","Black-billed Cuckoo","Black-billed Magpie","Black-browed Albatross","Black-capped Chickadee","Black-capped Gnatcatcher","Black-capped Petrel","Black-capped Vireo","Black-chinned Hummingbird","Black-chinned Sparrow","Black-crowned Night-Heron","Black-faced Grassquit","Black-footed Albatross","Black-headed Grosbeak","Black-headed Gull","Black-legged Kittiwake","Black-necked Stilt","Black-tailed Gnatcatcher","Black-tailed Godwit","Black-tailed Gull","Black-throated Blue Warbler","Black-throated Gray Warbler","Black-throated Green Warbler","Black-throated Sparrow","Black-vented Oriole","Black-vented Shearwater","Black-whiskered Vireo","Black-winged Stilt","Blackburnian Warbler","Blackpoll Warbler","Blue Bunting","Blue Grosbeak","Blue Grouse","Blue Jay","Blue Mockingbird","Blue-footed Booby","Blue-gray Gnatcatcher","Blue-headed Vireo","Blue-throated Hummingbird","Blue-winged Teal","Blue-winged Warbler","Bluethroat","Boat-tailed Grackle","Bobolink","Bohemian Waxwing","Bonaparte's Gull","Boreal Chickadee","Boreal Owl","Botteri's Sparrow","Brambling","Brandt's Cormorant","Brant","Brewer's Blackbird","Brewer's Sparrow","Bridled Tern","Bridled Titmouse","Bristle-thighed Curlew","Broad-billed Hummingbird","Broad-billed Sandpiper","Broad-tailed Hummingbird","Broad-winged Hawk","Bronzed Cowbird","Brown Booby","Brown Creeper","Brown Jay","Brown Noddy","Brown Pelican","Brown Shrike","Brown Thrasher","Brown-capped Rosy-Finch","Brown-chested Martin","Brown-crested Flycatcher","Brown-headed Cowbird","Brown-headed Nuthatch","Budgerigar","Buff-bellied Hummingbird","Buff-breasted Flycatcher","Buff-breasted Sandpiper","Buff-collared Nightjar","Bufflehead","Buller's Shearwater","Bullock's Oriole","Bumblebee Hummingbird","Burrowing Owl","Bushtit","Cactus Wren","California Condor","California Gnatcatcher","California Gull","California Quail","California Thrasher","California Towhee","Calliope Hummingbird","Canada Goose","Canada Warbler","Canvasback","Canyon Towhee","Canyon Wren","Cape May Warbler","Caribbean Elaenia","Carolina Chickadee","Carolina Parakeet","Carolina Wren","Caspian Tern","Cassin's Auklet","Cassin's Finch","Cassin's Kingbird","Cassin's Sparrow","Cassin's Vireo","Cattle Egret","Cave Swallow","Cedar Waxwing","Cerulean Warbler","Chestnut-backed Chickadee","Chestnut-collared Longspur","Chestnut-sided Warbler","Chihuahuan Raven","Chimney Swift","Chinese Egret","Chipping Sparrow","Chuck-will's-widow","Chukar","Cinnamon Hummingbird","Cinnamon Teal","Citrine Wagtail","Clapper Rail","Clark's Grebe","Clark's Nutcracker","Clay-colored Robin","Clay-colored Sparrow","Cliff Swallow","Colima Warbler","Collared Forest-Falcon","Collared Plover","Common Black-Hawk","Common Chaffinch","Common Crane","Common Cuckoo","Common Eider","Common Goldeneye","Common Grackle","Common Greenshank","Common Ground-Dove","Common House-Martin","Common Loon","Common Merganser","Common Moorhen","Common Murre","Common Nighthawk","Common Pauraque","Common Pochard","Common Poorwill","Common Raven","Common Redpoll","Common Ringed Plover","Common Rosefinch","Common Sandpiper","Common Snipe","Common Swift","Common Tern","Common Yellowthroat","Connecticut Warbler","Cook's Petrel","Cooper's Hawk","Cordilleran Flycatcher","Corn Crake","Cory's Shearwater","Costa's Hummingbird","Couch's Kingbird","Crane Hawk","Craveri's Murrelet","Crescent-chested Warbler","Crested Auklet","Crested Caracara","Crested Myna","Crimson-collared Grosbeak","Crissal Thrasher","Cuban Martin","Curlew Sandpiper","Curve-billed Thrasher","Dark-eyed Junco","Dickcissel","Double-crested Cormorant","Double-striped Thick-knee","Dovekie","Downy Woodpecker","Dunlin","Dusky Flycatcher","Dusky Thrush","Dusky Warbler","Dusky-capped Flycatcher","Eared Grebe","Eared Trogon","Eastern Bluebird","Eastern Kingbird","Eastern Meadowlark","Eastern Phoebe","Eastern Screech-Owl","Eastern Towhee","Eastern Wood-Pewee","Elegant Tern","Elegant Trogon","Elf Owl","Emperor Goose","Eskimo Curlew","Eurasian Blackbird","Eurasian Bullfinch","Eurasian Collared-Dove","Eurasian Coot","Eurasian Curlew","Eurasian Dotterel","Eurasian Hobby","Eurasian Jackdaw","Eurasian Kestrel","Eurasian Oystercatcher","Eurasian Siskin","Eurasian Tree Sparrow","Eurasian Wigeon","Eurasian Woodcock","Eurasian Wryneck","European Golden-Plover","European Starling","European Storm-Petrel","European Turtle-Dove","Evening Grosbeak","Eyebrowed Thrush","Falcated Duck","Fan-tailed Warbler","Far Eastern Curlew","Ferruginous Hawk","Ferruginous Pygmy-Owl","Field Sparrow","Fieldfare","Fish Crow","Five-striped Sparrow","Flame-colored Tanager","Flammulated Owl","Flesh-footed Shearwater","Florida Scrub-Jay","Fork-tailed Flycatcher","Fork-tailed Storm-Petrel","Fork-tailed Swift","Forster's Tern","Fox Sparrow","Franklin's Gull","Fulvous Whistling-Duck","Gadwall","Gambel's Quail","Garganey","Gila Woodpecker","Gilded Flicker","Glaucous Gull","Glaucous-winged Gull","Glossy Ibis","Golden Eagle","Golden-cheeked Warbler","Golden-crowned Kinglet","Golden-crowned Sparrow","Golden-crowned Warbler","Golden-fronted Woodpecker","Golden-winged Warbler","Grace's Warbler","Grasshopper Sparrow","Gray Bunting","Gray Catbird","Gray Flycatcher","Gray Hawk","Gray Jay","Gray Kingbird","Gray Partridge","Gray Silky-flycatcher","Gray Vireo","Gray Wagtail","Gray-breasted Martin","Gray-cheeked Thrush","Gray-crowned Rosy-Finch","Gray-crowned Yellowthroat","Gray-headed Chickadee","Gray-spotted Flycatcher","Gray-tailed Tattler","Great Auk","Great Black-backed Gull","Great Blue Heron","Great Cormorant","Great Crested Flycatcher","Great Egret","Great Frigatebird","Great Gray Owl","Great Horned Owl","Great Kiskadee","Great Knot","Great Skua","Great Spotted Woodpecker","Great-tailed Grackle","Greater Flamingo","Greater Pewee","Greater Prairie-chicken","Greater Roadrunner","Greater Scaup","Greater Shearwater","Greater White-fronted Goose","Greater Yellowlegs","Green Heron","Green Jay","Green Kingfisher","Green Sandpiper","Green Violet-ear","Green-breasted Mango","Green-tailed Towhee","Green-winged Teal","Greenish Elaenia","Groove-billed Ani","Gull-billed Tern","Gyrfalcon","Hairy Woodpecker","Hammond's Flycatcher","Harlequin Duck","Harris's Hawk","Harris's Sparrow","Hawfinch","Heermann's Gull","Henslow's Sparrow","Hepatic Tanager","Herald Petrel","Hermit Thrush","Hermit Warbler","Herring Gull","Himalayan Snowcock","Hoary Redpoll","Hooded Merganser","Hooded Oriole","Hooded Warbler","Hook-billed Kite","Hoopoe","Horned Grebe","Horned Lark","Horned Puffin","House Finch","House Sparrow","House Wren","Hudsonian Godwit","Hutton's Vireo","Iceland Gull","Inca Dove","Indigo Bunting","Island Scrub-Jay","Ivory Gull","Ivory-billed Woodpecker","Jabiru","Jack Snipe","Jungle Nightjar","Juniper Titmouse","Kentucky Warbler","Key West Quail-Dove","Killdeer","King Eider","King Rail","Kirtland's Warbler","Kittlitz's Murrelet","La Sagra's Flycatcher","Labrador Duck","Ladder-backed Woodpecker","Lanceolated Warbler","Lapland Longspur","Large-billed Tern","Lark Bunting","Lark Sparrow","Laughing Gull","Lawrence's Goldfinch","Laysan Albatross","Lazuli Bunting","Le Conte's Sparrow","Le Conte's Thrasher","Leach's Storm-Petrel","Least Auklet","Least Bittern","Least Flycatcher","Least Grebe","Least Sandpiper","Least Storm-Petrel","Least Tern","Lesser Black-backed Gull","Lesser Frigatebird","Lesser Goldfinch","Lesser Nighthawk","Lesser Prairie-chicken","Lesser Scaup","Lesser White-fronted Goose","Lesser Yellowlegs","Lewis's Woodpecker","Limpkin","Lincoln's Sparrow","Little Blue Heron","Little Bunting","Little Curlew","Little Egret","Little Gull","Little Ringed Plover","Little Shearwater","Little Stint","Loggerhead Kingbird","Loggerhead Shrike","Long-billed Curlew","Long-billed Dowitcher","Long-billed Murrelet","Long-billed Thrasher","Long-eared Owl","Long-tailed Jaeger","Long-toed Stint","Louisiana Waterthrush","Lucifer Hummingbird","Lucy's Warbler","MacGillivray's Warbler","Magnificent Frigatebird","Magnificent Hummingbird","Magnolia Warbler","Mallard","Mangrove Cuckoo","Manx Shearwater","Marbled Godwit","Marbled Murrelet","Marsh Sandpiper","Marsh Wren","Masked Booby","Masked Duck","Masked Tityra","McCown's Longspur","McKay's Bunting","Merlin","Mew Gull","Mexican Chickadee","Mexican Jay","Middendorff's Grasshopper-Warbler","Mississippi Kite","Mongolian Plover","Monk Parakeet","Montezuma Quail","Mottled Duck","Mottled Owl","Mottled Petrel","Mountain Bluebird","Mountain Chickadee","Mountain Plover","Mountain Quail","Mourning Dove","Mourning Warbler","Mugimaki Flycatcher","Murphy's Petrel","Muscovy Duck","Mute Swan","Narcissus Flycatcher","Nashville Warbler","Nelson's Sharp-tailed Sparrow","Neotropic Cormorant","Northern Beardless-Tyrannulet","Northern Bobwhite","Northern Cardinal","Northern Flicker","Northern Fulmar","Northern Gannet","Northern Goshawk","Northern Harrier","Northern Hawk Owl","Northern Jacana","Northern Lapwing","Northern Mockingbird","Northern Parula","Northern Pintail","Northern Pygmy-Owl","Northern Rough-winged Swallow","Northern Saw-whet Owl","Northern Shoveler","Northern Shrike","Northern Waterthrush","Northern Wheatear","Northwestern Crow","Nuttall's Woodpecker","Nutting's Flycatcher","Oak Titmouse","Oldsquaw","Olive Sparrow","Olive Warbler","Olive-backed Pipit","Olive-sided Flycatcher","Orange-crowned Warbler","Orchard Oriole","Oriental Cuckoo","Oriental Greenfinch","Oriental Pratincole","Oriental Scops-Owl","Oriental Turtle-Dove","Osprey","Ovenbird","Pacific Golden-Plover","Pacific Loon","Pacific-slope Flycatcher","Paint-billed Crake","Painted Bunting","Painted Redstart","Pallas's Bunting","Palm Warbler","Parakeet Auklet","Parasitic Jaeger","Passenger Pigeon","Pechora Pipit","Pectoral Sandpiper","Pelagic Cormorant","Peregrine Falcon","Phainopepla","Philadelphia Vireo","Pied-billed Grebe","Pigeon Guillemot","Pileated Woodpecker","Pin-tailed Snipe","Pine Bunting","Pine Grosbeak","Pine Siskin","Pine Warbler","Pink-footed Goose","Pink-footed Shearwater","Pinyon Jay","Piping Plover","Plain Chachalaca","Plain-capped Starthroat","Plumbeous Vireo","Pomarine Jaeger","Prairie Falcon","Prairie Warbler","Prothonotary Warbler","Purple Finch","Purple Gallinule","Purple Martin","Purple Sandpiper","Pygmy Nuthatch","Pyrrhuloxia","Razorbill","Red Crossbill","Red Knot","Red Phalarope","Red-bellied Woodpecker","Red-billed Pigeon","Red-billed Tropicbird","Red-breasted Flycatcher","Red-breasted Merganser","Red-breasted Nuthatch","Red-breasted Sapsucker","Red-cockaded Woodpecker","Red-crowned Parrot","Red-eyed Vireo","Red-faced Cormorant","Red-faced Warbler","Red-flanked Bluetail","Red-footed Booby","Red-headed Woodpecker","Red-legged Kittiwake","Red-naped Sapsucker","Red-necked Grebe","Red-necked Phalarope","Red-necked Stint","Red-shouldered Hawk","Red-tailed Hawk","Red-tailed Tropicbird","Red-throated Loon","Red-throated Pipit","Red-whiskered Bulbul","Red-winged Blackbird","Reddish Egret","Redhead","Redwing","Reed Bunting","Rhinoceros Auklet","Ring-billed Gull","Ring-necked Duck","Ring-necked Pheasant","Ringed Kingfisher","Roadside Hawk","Rock Dove","Rock Ptarmigan","Rock Sandpiper","Rock Wren","Rose-breasted Grosbeak","Rose-throated Becard","Roseate Spoonbill","Roseate Tern","Ross's Goose","Ross's Gull","Rough-legged Hawk","Royal Tern","Ruby-crowned Kinglet","Ruby-throated Hummingbird","Ruddy Duck","Ruddy Ground-Dove","Ruddy Quail-Dove","Ruddy Turnstone","Ruff","Ruffed Grouse","Rufous Hummingbird","Rufous-backed Robin","Rufous-capped Warbler","Rufous-crowned Sparrow","Rufous-winged Sparrow","Rustic Bunting","Rusty Blackbird","Sabine's Gull","Sage Grouse","Sage Sparrow","Sage Thrasher","Saltmarsh Sharp-tailed Sparrow","Sanderling","Sandhill Crane","Sandwich Tern","Savannah Sparrow","Say's Phoebe","Scaled Quail","Scaly-naped Pigeon","Scarlet Ibis","Scarlet Tanager","Scissor-tailed Flycatcher","Scott's Oriole","Seaside Sparrow","Sedge Wren","Semipalmated Plover","Semipalmated Sandpiper","Sharp-shinned Hawk","Sharp-tailed Grouse","Sharp-tailed Sandpiper","Shiny Cowbird","Short-billed Dowitcher","Short-eared Owl","Short-tailed Albatross","Short-tailed Hawk","Short-tailed Shearwater","Shy Albatross","Siberian Accentor","Siberian Blue Robin","Siberian Flycatcher","Siberian Rubythroat","Sky Lark","Slate-throated Redstart","Slaty-backed Gull","Slender-billed Curlew","Smew","Smith's Longspur","Smooth-billed Ani","Snail Kite","Snow Bunting","Snow Goose","Snowy Egret","Snowy Owl","Snowy Plover","Solitary Sandpiper","Song Sparrow","Sooty Shearwater","Sooty Tern","Sora","South Polar Skua","Southern Martin","Spectacled Eider","Spoonbill Sandpiper","Spot-billed Duck","Spot-breasted Oriole","Spotted Dove","Spotted Owl","Spotted Rail","Spotted Redshank","Spotted Sandpiper","Spotted Towhee","Sprague's Pipit","Spruce Grouse","Stejneger's Petrel","Steller's Eider","Steller's Jay","Steller's Sea-Eagle","Stilt Sandpiper","Stonechat","Streak-backed Oriole","Streaked Shearwater","Strickland's Woodpecker","Stripe-headed Tanager","Sulphur-bellied Flycatcher","Summer Tanager","Surf Scoter","Surfbird","Swainson's Hawk","Swainson's Thrush","Swainson's Warbler","Swallow-tailed Kite","Swamp Sparrow","Tamaulipas Crow","Tawny-shouldered Blackbird","Temminck's Stint","Tennessee Warbler","Terek Sandpiper","Thayer's Gull","Thick-billed Kingbird","Thick-billed Murre","Thick-billed Parrot","Thick-billed Vireo","Three-toed Woodpecker","Townsend's Solitaire","Townsend's Warbler","Tree Pipit","Tree Swallow","Tricolored Blackbird","Tricolored Heron","Tropical Kingbird","Tropical Parula","Trumpeter Swan","Tufted Duck","Tufted Flycatcher","Tufted Puffin","Tufted Titmouse","Tundra Swan","Turkey Vulture","Upland Sandpiper","Varied Bunting","Varied Thrush","Variegated Flycatcher","Vaux's Swift","Veery","Verdin","Vermilion Flycatcher","Vesper Sparrow","Violet-crowned Hummingbird","Violet-green Swallow","Virginia Rail","Virginia's Warbler","Wandering Albatross","Wandering Tattler","Warbling Vireo","Wedge-rumped Storm-Petrel","Wedge-tailed Shearwater","Western Bluebird","Western Grebe","Western Gull","Western Kingbird","Western Meadowlark","Western Reef-Heron","Western Sandpiper","Western Screech-Owl","Western Scrub-Jay","Western Tanager","Western Wood-Pewee","Whimbrel","Whip-poor-will","Whiskered Auklet","Whiskered Screech-Owl","Whiskered Tern","White Ibis","White Wagtail","White-breasted Nuthatch","White-cheeked Pintail","White-chinned Petrel","White-collared Seedeater","White-collared Swift","White-crowned Pigeon","White-crowned Sparrow","White-eared Hummingbird","White-eyed Vireo","White-faced Ibis","White-faced Storm-Petrel","White-headed Woodpecker","White-rumped Sandpiper","White-tailed Eagle","White-tailed Hawk","White-tailed Kite","White-tailed Ptarmigan","White-tailed Tropicbird","White-throated Needletail","White-throated Robin","White-throated Sparrow","White-throated Swift","White-tipped Dove","White-winged Crossbill","White-winged Dove","White-winged Parakeet","White-winged Scoter","White-winged Tern","Whooper Swan","Whooping Crane","Wild Turkey","Willet","Williamson's Sapsucker","Willow Flycatcher","Willow Ptarmigan","Wilson's Phalarope","Wilson's Plover","Wilson's Storm-Petrel","Wilson's Warbler","Winter Wren","Wood Duck","Wood Sandpiper","Wood Stork","Wood Thrush","Wood Warbler","Worm-eating Warbler","Worthen's Sparrow","Wrentit","Xantus's Hummingbird","Xantus's Murrelet","Yellow Bittern","Yellow Grosbeak","Yellow Rail","Yellow Wagtail","Yellow Warbler","Yellow-bellied Flycatcher","Yellow-bellied Sapsucker","Yellow-billed Cuckoo","Yellow-billed Loon","Yellow-billed Magpie","Yellow-breasted Bunting","Yellow-breasted Chat","Yellow-crowned Night-Heron","Yellow-eyed Junco","Yellow-faced Grassquit","Yellow-footed Gull","Yellow-green Vireo","Yellow-headed Blackbird","Yellow-legged Gull","Yellow-nosed Albatross","Yellow-rumped Warbler","Yellow-throated Vireo","Yellow-throated Warbler","Yucatan Vireo","Zenaida Dove","Zone-tailed Hawk"],cat:["Abyssinian","American Bobtail","American Curl","American Shorthair","American Wirehair","Balinese","Bengal","Birman","Bombay","British Shorthair","Burmese","Chartreux","Chausie","Cornish Rex","Devon Rex","Donskoy","Egyptian Mau","Exotic Shorthair","Havana","Highlander","Himalayan","Japanese Bobtail","Korat","Kurilian Bobtail","LaPerm","Maine Coon","Manx","Minskin","Munchkin","Nebelung","Norwegian Forest Cat","Ocicat","Ojos Azules","Oriental","Persian","Peterbald","Pixiebob","Ragdoll","Russian Blue","Savannah","Scottish Fold","Selkirk Rex","Serengeti","Siamese","Siberian","Singapura","Snowshoe","Sokoke","Somali","Sphynx","Thai","Tonkinese","Toyger","Turkish Angora","Turkish Van"],cetacean:["Amazon River Dolphin","Arnoux's Beaked Whale","Atlantic Humpbacked Dolphin","Atlantic Spotted Dolphin","Atlantic White-Sided Dolphin","Australian Snubfin Dolphin","Australian humpback Dolphin","Blue Whale","Bottlenose Dolphin","Bryde\u2019s whale","Burrunan Dolphin","Chilean Dolphin","Chinese River Dolphin","Chinese White Dolphin","Clymene Dolphin","Commerson\u2019s Dolphin","Costero","Dusky Dolphin","False Killer Whale","Fin Whale","Fraser\u2019s Dolphin","Ganges River Dolphin","Guiana Dolphin","Heaviside\u2019s Dolphin","Hector\u2019s Dolphin","Hourglass Dolphin","Humpback whale","Indo-Pacific Bottlenose Dolphin","Indo-Pacific Hump-backed Dolphin","Irrawaddy Dolphin","Killer Whale (Orca)","La Plata Dolphin","Long-Beaked Common Dolphin","Long-finned Pilot Whale","Longman's Beaked Whale","Melon-headed Whale","Northern Rightwhale Dolphin","Omura\u2019s whale","Pacific White-Sided Dolphin","Pantropical Spotted Dolphin","Peale\u2019s Dolphin","Pygmy Killer Whale","Risso\u2019s Dolphin","Rough-Toothed Dolphin","Sei Whale","Short-Beaked Common Dolphin","Short-finned Pilot Whale","Southern Bottlenose Whale","Southern Rightwhale Dolphin","Sperm Whale","Spinner Dolphin","Striped Dolphin","Tucuxi","White-Beaked Dolphin"],cow:["Aberdeen Angus","Abergele","Abigar","Abondance","Abyssinian Shorthorned Zebu","Aceh","Achham","Adamawa","Adaptaur","Afar","Africangus","Afrikaner","Agerolese","Alambadi","Alatau","Albanian","Albera","Alderney","Alentejana","Aleutian wild cattle","Aliad Dinka","Alistana-Sanabresa","Allmogekor","Alur","American","American Angus","American Beef Friesian","American Brown Swiss","American Milking Devon","American White Park","Amerifax","Amrit Mahal","Amsterdam Island cattle","Anatolian Black","Andalusian Black","Andalusian Blond","Andalusian Grey","Angeln","Angoni","Ankina","Ankole","Ankole-Watusi","Aracena","Arado","Argentine Criollo","Argentine Friesian","Armorican","Arouquesa","Arsi","Asturian Mountain","Asturian Valley","Aubrac","Aulie-Ata","Aure et Saint-Girons","Australian Braford","Australian Brangus","Australian Charbray","Australian Friesian Sahiwal","Australian Lowline","Australian Milking Zebu","Australian Shorthorn","Austrian Simmental","Austrian Yellow","Avile\xf1a-Negra Ib\xe9rica","Av\xe9tonou","Aweil Dinka","Ayrshire","Azaouak","Azebuado","Azerbaijan Zebu","Azores","Bachaur cattle","Baherie cattle","Bakosi cattle","Balancer","Baoule","Bargur cattle","Barros\xe3","Barzona","Bazadaise","Bedit","Beef Freisian","Beefalo","Beefmaker","Beefmaster","Begayt","Belgian Blue","Belgian Red","Belgian Red Pied","Belgian White-and-Red","Belmont Red","Belted Galloway","Bernese","Berrenda cattle","Betizu","Bianca Modenese","Blaarkop","Black Angus","Black Baldy","Black Hereford","Blanca Cacere\xf1a","Blanco Orejinegro BON","Blonde d'Aquitaine","Blue Albion","Blue Grey","Bohuskulla","Bonsmara","Boran","Bo\u0161karin","Braford","Brahman","Brahmousin","Brangus","Braunvieh","Brava","Breed","British Friesian","British White","Brown Carpathian","Brown Caucasian","Brown Swiss","Bue Lingo","Burlina","Bushuyev","Butana cattle","Bu\u0161a cattle","Cachena","Caldelana","Camargue","Campbell Island cattle","Canadian Speckle Park","Canadienne","Canaria","Canchim","Caracu","Carinthian Blondvieh","Carora","Cedit","Charbray","Charolais","Chateaubriand","Chiangus","Chianina","Chillingham cattle","Chinese Black Pied","Cholistani","Coloursided White Back","Commercial","Corriente","Corsican cattle","Coste\xf1o con Cuernos","Crioulo Lageano","C\xe1rdena Andaluza","Dajal","Dangi cattle","Danish Black-Pied","Danish Jersey","Danish Red","Dedit","Deep Red cattle","Deoni","Devon","Dexter cattle","Dhanni","Doayo cattle","Doela","Drakensberger","Droughtmaster","Dulong'","Dutch Belted","Dutch Friesian","Dwarf Lulu","D\xf8lafe","East Anatolian Red","Eastern Finncattle","Eastern Red Polled","Eedit","Enderby Island cattle","English Longhorn","Ennstaler Bergscheck","Estonian Holstein","Estonian Native","Estonian Red cattle","Fedit","Finncattle","Finnish Ayrshire","Finnish Holstein-Friesian","Fj\xe4ll","Fleckvieh","Florida Cracker cattle","Fogera","French Simmental","Fribourgeoise","Friesian Red and White","Fulani Sudanese","F\u0113ng Cattle","Galician Blond","Galloway cattle","Gangatiri","Gaolao","Garvonesa","Gascon cattle","Gedit","Gelbvieh","Georgian Mountain cattle","German Angus","German Black Pied Dairy","German Black Pied cattle","German Red Pied","Gir","Glan cattle","Gloucester","Gobra","Greek Shorthorn","Greek Steppe","Greyman cattle","Gudali","Guernsey cattle","Guzer\xe1","Hallikar4","Hanwoo","Hariana cattle","Hart\xf3n del Valle","Harzer Rotvieh","Hays Converter","Heck cattle","Hedit","Hereford","Herens","Highland cattle","Hinterwald","Holando-Argentino","Holstein Friesian cattle","Horro","Hungarian Grey","Hu\xe1ng Cattle","Hybridmaster","Iberian cattle","Icelandic","Iedit","Illawarra cattle","Improved Red and White","Indo-Brazilian","Irish Moiled","Israeli Holstein","Israeli Red","Istoben cattle","Istrian cattle","Jamaica Black","Jamaica Hope","Jamaica Red","Japanese Brown","Jarmelista","Javari cattle","Jedit","Jersey cattle","Jutland cattle","Kabin Buri cattle","Kalmyk cattle","Kamphaeng Saen cattle","Kangayam","Kankrej","Karan Swiss","Kasaragod Dwarf cattle","Kathiawadi","Kazakh Whiteheaded","Kedit","Kenana cattle","Kenkatha cattle","Kerry cattle","Kherigarh","Khillari cattle","Kholomogory","Korat Wagyu","Kostroma cattle","Krishna Valley cattle","Kurgan cattle","Kuri","La Reina cattle","Lakenvelder cattle","Lampurger","Latvian Blue","Latvian Brown","Latvian Danish Red","Lebedyn","Ledit","Levantina","Limia cattle","Limousin","Limpurger","Lincoln Red","Lineback","Lithuanian Black-and-White","Lithuanian Light Grey","Lithuanian Red","Lithuanian White-Backed","Lohani cattle","Lourdais","Lucerna cattle","Luing","Madagascar Zebu","Madura","Maine-Anjou","Malnad Gidda","Malvi","Mandalong Special","Mantequera Leonesa","Maramure\u015f Brown","Marchigiana","Maremmana","Marinhoa","Maronesa","Masai","Mashona","Medit","Menorquina","Mertolenga","Meuse-Rhine-Issel","Mewati","Milking Shorthorn","Minhota","Mirandesa","Mirkadim","Moc\u0103ni\u0163\u0103","Mollie","Monchina","Mongolian","Montb\xe9liarde","Morucha","Murboden","Murnau-Werdenfels","Murray Grey","Muturu","N'Dama","Nagori","Nedit","Negra Andaluza","Nelore","Nguni","Nimari","Normande","North Bengal Grey","Northern Finncattle","Northern Shorthorn","Norwegian Red","Oedit]","Ongole","Original Simmental","Pajuna","Palmera","Pantaneiro","Parda Alpina","Parthenaise","Pasiega","Pedit","Pembroke","Philippine Native","Pie Rouge des Plaines","Piedmontese cattle","Pineywoods","Pinzgauer","Pirenaica","Podolac","Podolica","Polish Black-and-White","Polish Red","Poll Shorthorn","Polled Hereford","Polled Shorthorn","Ponwar","Preta","Pulikulam","Punganur","Pustertaler Sprinzen","Qedit","Qinchaun","Queensland Miniature Boran","RX3","Ramo Grande","Randall","Raramuri Criollo","Rathi","Raya","Red Angus","Red Brangus","Red Chittagong","Red Fulani","Red Gorbatov","Red Holstein","Red Kandhari","Red Mingrelian","Red Poll","Red Polled \xd8stland","Red Sindhi","Redit","Retinta","Riggit Galloway","Ringam\xe5la","Rohjan","Romagnola","Romanian B\u0103l\u0163ata","Romanian Steppe Gray","Romosinuano","Russian Black Pied","R\xe4tisches Grauvieh","Sahiwal","Salers","Salorn","Sanga","Sanhe","Santa Cruz","Santa Gertrudis","Sayaguesa","Schwyz","Sedit","Selembu","Senepol","Serbian Pied","Serbian Steppe","Sheko","Shetland","Shorthorn","Siboney de Cuba","Simbrah","Simford","Simmental","Siri","South Devon","Spanish Fighting Bull","Speckle Park","Square Meater","Sussex","Swedish Friesian","Swedish Polled","Swedish Red Pied","Swedish Red Polled","Swedish Red-and-White","Tabapu\xe3","Tarentaise","Tasmanian Grey","Tauros","Tedit","Telemark","Texas Longhorn","Texon","Thai Black","Thai Fighting Bull","Thai Friesian","Thai Milking Zebu","Tharparkar","Tswana","Tudanca","Tuli","Tulim","Turkish Grey Steppe","Tux-Zillertal","Tyrol Grey","Uedit","Ukrainian Grey","Umblachery","Valdostana Castana","Valdostana Pezzata Nera","Valdostana Pezzata Rossa","Vaynol","Vechur8","Vedit","Vestland Fjord","Vestland Red Polled","Vianesa","Volinian Beef","Vorderwald","Vosgienne","V\xe4neko","Waguli","Wagyu","Wangus","Wedit","Welsh Black","Western Finncattle","White C\xe1ceres","White Fulani","White Lamphun","White Park","Whitebred Shorthorn","Xedit","Xingjiang Brown","Yakutian","Yanbian","Yanhuang","Yedit","Yurino","Zebu","Zedit","\xc9vol\xe8ne cattle","\u017bubro\u0144"],crocodilia:["African Slender-snouted Crocodile","Alligator mississippiensis","American Crocodile","Australian Freshwater Crocodile","Black Caiman","Broad-snouted Caiman","Chinese Alligator","Cuban Crocodile","Cuvier\u2019s Dwarf Caiman","Dwarf Crocodile","Gharial","Morelet\u2019s Crocodile","Mugger Crocodile","New Guinea Freshwater Crocodile","Nile Crocodile","Orinoco Crocodile","Philippine Crocodile","Saltwater Crocodile","Schneider\u2019s Smooth-fronted Caiman","Siamese Crocodile","Spectacled Caiman","Tomistoma","West African Crocodile","Yacare Caiman"],dog:["Affenpinscher","Afghan Hound","Aidi","Airedale Terrier","Akbash","Akita","Alano Espa\xf1ol","Alapaha Blue Blood Bulldog","Alaskan Husky","Alaskan Klee Kai","Alaskan Malamute","Alopekis","Alpine Dachsbracke","American Bulldog","American Bully","American Cocker Spaniel","American English Coonhound","American Foxhound","American Hairless Terrier","American Pit Bull Terrier","American Staffordshire Terrier","American Water Spaniel","Andalusian Hound","Anglo-Fran\xe7ais de Petite V\xe9nerie","Appenzeller Sennenhund","Ariegeois","Armant","Armenian Gampr dog","Artois Hound","Australian Cattle Dog","Australian Kelpie","Australian Shepherd","Australian Stumpy Tail Cattle Dog","Australian Terrier","Austrian Black and Tan Hound","Austrian Pinscher","Azawakh","Bakharwal dog","Banjara Hound","Barbado da Terceira","Barbet","Basenji","Basque Shepherd Dog","Basset Art\xe9sien Normand","Basset Bleu de Gascogne","Basset Fauve de Bretagne","Basset Hound","Bavarian Mountain Hound","Beagle","Beagle-Harrier","Bearded Collie","Beauceron","Bedlington Terrier","Belgian Shepherd","Bergamasco Shepherd","Berger Picard","Bernese Mountain Dog","Bhotia","Bichon Fris\xe9","Billy","Black Mouth Cur","Black Norwegian Elkhound","Black Russian Terrier","Black and Tan Coonhound","Bloodhound","Blue Lacy","Blue Picardy Spaniel","Bluetick Coonhound","Boerboel","Bohemian Shepherd","Bolognese","Border Collie","Border Terrier","Borzoi","Bosnian Coarse-haired Hound","Boston Terrier","Bouvier des Ardennes","Bouvier des Flandres","Boxer","Boykin Spaniel","Bracco Italiano","Braque Francais","Braque Saint-Germain","Braque d'Auvergne","Braque de l'Ari\xe8ge","Braque du Bourbonnais","Briard","Briquet Griffon Vend\xe9en","Brittany","Broholmer","Bruno Jura Hound","Brussels Griffon","Bucovina Shepherd Dog","Bull Arab","Bull Terrier","Bulldog","Bullmastiff","Bully Kutta","Burgos Pointer","Cairn Terrier","Campeiro Bulldog","Can de Chira","Canaan Dog","Canadian Eskimo Dog","Cane Corso","Cane Paratore","Cane di Oropa","Cantabrian Water Dog","Cardigan Welsh Corgi","Carea Castellano Manchego","Carolina Dog","Carpathian Shepherd Dog","Catahoula Leopard Dog","Catalan Sheepdog","Caucasian Shepherd Dog","Cavalier King Charles Spaniel","Central Asian Shepherd Dog","Cesky Fousek","Cesky Terrier","Chesapeake Bay Retriever","Chien Fran\xe7ais Blanc et Noir","Chien Fran\xe7ais Blanc et Orange","Chien Fran\xe7ais Tricolore","Chihuahua","Chilean Terrier","Chinese Chongqing Dog","Chinese Crested Dog","Chinook","Chippiparai","Chongqing dog","Chortai","Chow Chow","Cimarr\xf3n Uruguayo","Cirneco dell'Etna","Clumber Spaniel","Colombian fino hound","Coton de Tulear","Cretan Hound","Croatian Sheepdog","Curly-Coated Retriever","Cursinu","Czechoslovakian Wolfdog","C\xe3o Fila de S\xe3o Miguel","C\xe3o da Serra de Aires","C\xe3o de Castro Laboreiro","C\xe3o de Gado Transmontano","Dachshund","Dalmatian","Dandie Dinmont Terrier","Danish-Swedish Farmdog","Denmark Feist","Dingo","Doberman Pinscher","Dogo Argentino","Dogo Guatemalteco","Dogo Sardesco","Dogue Brasileiro","Dogue de Bordeaux","Drentse Patrijshond","Drever","Dunker","Dutch Shepherd","Dutch Smoushond","East European Shepherd","East Siberian Laika","English Cocker Spaniel","English Foxhound","English Mastiff","English Setter","English Shepherd","English Springer Spaniel","English Toy Terrier","Entlebucher Mountain Dog","Estonian Hound","Estrela Mountain Dog","Eurasier","Field Spaniel","Fila Brasileiro","Finnish Hound","Finnish Lapphund","Finnish Spitz","Flat-Coated Retriever","French Bulldog","French Spaniel","Galgo Espa\xf1ol","Galician Shepherd Dog","Garafian Shepherd","Gascon Saintongeois","Georgian Shepherd","German Hound","German Longhaired Pointer","German Pinscher","German Roughhaired Pointer","German Shepherd Dog","German Shorthaired Pointer","German Spaniel","German Spitz","German Wirehaired Pointer","Giant Schnauzer","Glen of Imaal Terrier","Golden Retriever","Gordon Setter","Go\u0144czy Polski","Grand Anglo-Fran\xe7ais Blanc et Noir","Grand Anglo-Fran\xe7ais Blanc et Orange","Grand Anglo-Fran\xe7ais Tricolore","Grand Basset Griffon Vend\xe9en","Grand Bleu de Gascogne","Grand Griffon Vend\xe9en","Great Dane","Greater Swiss Mountain Dog","Greek Harehound","Greek Shepherd","Greenland Dog","Greyhound","Griffon Bleu de Gascogne","Griffon Fauve de Bretagne","Griffon Nivernais","Gull Dong","Gull Terrier","Hamiltonst\xf6vare","Hanover Hound","Harrier","Havanese","Hierran Wolfdog","Hokkaido","Hovawart","Huntaway","Hygen Hound","H\xe4llefors Elkhound","Ibizan Hound","Icelandic Sheepdog","Indian Spitz","Indian pariah dog","Irish Red and White Setter","Irish Setter","Irish Terrier","Irish Water Spaniel","Irish Wolfhound","Istrian Coarse-haired Hound","Istrian Shorthaired Hound","Italian Greyhound","Jack Russell Terrier","Jagdterrier","Japanese Chin","Japanese Spitz","Japanese Terrier","Jindo","Jonangi","Kai Ken","Kaikadi","Kangal Shepherd Dog","Kanni","Karakachan dog","Karelian Bear Dog","Kars","Karst Shepherd","Keeshond","Kerry Beagle","Kerry Blue Terrier","King Charles Spaniel","King Shepherd","Kintamani","Kishu","Kokoni","Kombai","Komondor","Kooikerhondje","Koolie","Koyun dog","Kromfohrl\xe4nder","Kuchi","Kuvasz","Labrador Retriever","Lagotto Romagnolo","Lakeland Terrier","Lancashire Heeler","Landseer","Lapponian Herder","Large M\xfcnsterl\xe4nder","Leonberger","Levriero Sardo","Lhasa Apso","Lithuanian Hound","Lupo Italiano","L\xf6wchen","Mackenzie River Husky","Magyar ag\xe1r","Mahratta Greyhound","Maltese","Manchester Terrier","Maremmano-Abruzzese Sheepdog","McNab dog","Miniature American Shepherd","Miniature Bull Terrier","Miniature Fox Terrier","Miniature Pinscher","Miniature Schnauzer","Molossus of Epirus","Montenegrin Mountain Hound","Mountain Cur","Mountain Feist","Mucuchies","Mudhol Hound","Mudi","Neapolitan Mastiff","New Guinea Singing Dog","New Zealand Heading Dog","Newfoundland","Norfolk Terrier","Norrbottenspets","Northern Inuit Dog","Norwegian Buhund","Norwegian Elkhound","Norwegian Lundehund","Norwich Terrier","Nova Scotia Duck Tolling Retriever","Old Croatian Sighthound","Old Danish Pointer","Old English Sheepdog","Old English Terrier","Olde English Bulldogge","Otterhound","Pachon Navarro","Paisley Terrier","Pampas Deerhound","Papillon","Parson Russell Terrier","Pastore della Lessinia e del Lagorai","Patagonian Sheepdog","Patterdale Terrier","Pekingese","Pembroke Welsh Corgi","Perro Majorero","Perro de Pastor Mallorquin","Perro de Presa Canario","Perro de Presa Mallorquin","Peruvian Inca Orchid","Petit Basset Griffon Vend\xe9en","Petit Bleu de Gascogne","Phal\xe8ne","Pharaoh Hound","Phu Quoc Ridgeback","Picardy Spaniel","Plott Hound","Plummer Terrier","Podenco Canario","Podenco Valenciano","Pointer","Poitevin","Polish Greyhound","Polish Hound","Polish Lowland Sheepdog","Polish Tatra Sheepdog","Pomeranian","Pont-Audemer Spaniel","Poodle","Porcelaine","Portuguese Podengo","Portuguese Pointer","Portuguese Water Dog","Posavac Hound","Pra\u017esk\xfd Krysa\u0159\xedk","Pshdar Dog","Pudelpointer","Pug","Puli","Pumi","Pungsan Dog","Pyrenean Mastiff","Pyrenean Mountain Dog","Pyrenean Sheepdog","Rafeiro do Alentejo","Rajapalayam","Rampur Greyhound","Rat Terrier","Ratonero Bodeguero Andaluz","Ratonero Mallorquin","Ratonero Murciano de Huerta","Ratonero Valenciano","Redbone Coonhound","Rhodesian Ridgeback","Romanian Mioritic Shepherd Dog","Romanian Raven Shepherd Dog","Rottweiler","Rough Collie","Russian Spaniel","Russian Toy","Russo-European Laika","Saarloos Wolfdog","Sabueso Espa\xf1ol","Saint Bernard","Saint Hubert Jura Hound","Saint-Usuge Spaniel","Saluki","Samoyed","Sapsali","Sarabi dog","Sardinian Shepherd Dog","Schapendoes","Schillerst\xf6vare","Schipperke","Schweizer Laufhund","Schweizerischer Niederlaufhund","Scottish Deerhound","Scottish Terrier","Sealyham Terrier","Segugio Italiano","Segugio Maremmano","Segugio dell'Appennino","Seppala Siberian Sleddog","Serbian Hound","Serbian Tricolour Hound","Serrano Bulldog","Shar Pei","Shetland Sheepdog","Shiba Inu","Shih Tzu","Shikoku","Shiloh Shepherd","Siberian Husky","Silken Windhound","Silky Terrier","Sinhala Hound","Skye Terrier","Sloughi","Slovakian Wirehaired Pointer","Slovensk\xfd Cuvac","Slovensk\xfd Kopov","Smalandst\xf6vare","Small Greek domestic dog","Small M\xfcnsterl\xe4nder","Smooth Collie","Smooth Fox Terrier","Soft-Coated Wheaten Terrier","South Russian Ovcharka","Spanish Mastiff","Spanish Water Dog","Spinone Italiano","Sporting Lucas Terrier","Stabyhoun","Staffordshire Bull Terrier","Standard Schnauzer","Stephens Stock","Styrian Coarse-haired Hound","Sussex Spaniel","Swedish Elkhound","Swedish Lapphund","Swedish Vallhund","Swedish White Elkhound","Taigan","Taiwan Dog","Tamaskan Dog","Teddy Roosevelt Terrier","Telomian","Tenterfield Terrier","Terrier Brasileiro","Thai Bangkaew Dog","Thai Ridgeback","Tibetan Mastiff","Tibetan Spaniel","Tibetan Terrier","Tornjak","Tosa","Toy Fox Terrier","Toy Manchester Terrier","Transylvanian Hound","Treeing Cur","Treeing Feist","Treeing Tennessee Brindle","Treeing Walker Coonhound","Trigg Hound","Tyrolean Hound","Vikhan","Villano de Las Encartaciones","Villanuco de Las Encartaciones","Vizsla","Volpino Italiano","Weimaraner","Welsh Sheepdog","Welsh Springer Spaniel","Welsh Terrier","West Highland White Terrier","West Siberian Laika","Westphalian Dachsbracke","Wetterhoun","Whippet","White Shepherd","White Swiss Shepherd Dog","Wire Fox Terrier","Wirehaired Pointing Griffon","Wirehaired Vizsla","Xiasi Dog","Xoloitzcuintli","Yakutian Laika","Yorkshire Terrier","\u0160arplaninac"],fish:["Alaska pollock","Albacore","Amur catfish","Araucanian herring","Argentine hake","Asari","Asian swamp eel","Atlantic cod","Atlantic herring","Atlantic horse mackerel","Atlantic mackerel","Atlantic menhaden","Atlantic salmon","Bigeye scad","Bigeye tuna","Bighead carp","Black carp","Blood cockle","Blue swimming crab","Blue whiting","Bombay-duck","Bonga shad","California pilchard","Cape horse mackerel","Capelin","Catla","Channel catfish","Chilean jack mackerel","Chinese perch","Chinese softshell turtle","Chub mackerel","Chum salmon","Common carp","Crucian carp","Daggertooth pike conger","European anchovy","European pilchard","European sprat","Filipino Venus","Gazami crab","Goldstripe sardinella","Grass carp","Gulf menhaden","Haddock","Hilsa shad","Indian mackerel","Indian oil sardine","Iridescent shark","Japanese anchovy","Japanese cockle","Japanese common catfish","Japanese flying squid","Japanese jack mackerel","Japanese littleneck","Japanese pilchard","Jumbo flying squid","Kawakawa","Korean bullhead","Largehead hairtail","Longtail tuna","Madeiran sardinella","Mandarin fish","Milkfish","Mrigal carp","Narrow-barred Spanish mackerel","Nile perch","Nile tilapia","North Pacific hake","Northern snakehead","Pacific anchoveta","Pacific cod","Pacific herring","Pacific sand lance","Pacific sandlance","Pacific saury","Pacific thread herring","Peruvian anchoveta","Pink salmon","Pollock","Pond loach","Rainbow trout","Rohu","Round sardinella","Short mackerel","Silver carp","Silver cyprinid","Skipjack tuna","Southern African anchovy","Southern rough shrimp","Whiteleg shrimp","Wuchang bream","Yellow croaker","Yellowfin tuna","Yellowhead catfish","Yellowstripe scad"],horse:["Abaco Barb","Abtenauer","Abyssinian","Aegidienberger","Akhal-Teke","Albanian Horse","Altai Horse","Alt\xe8r Real","American Albino","American Cream Draft","American Indian Horse","American Paint Horse","American Quarter Horse","American Saddlebred","American Warmblood","Andalusian Horse","Andravida Horse","Anglo-Arabian","Anglo-Arabo-Sardo","Anglo-Kabarda","Appaloosa","AraAppaloosa","Arabian Horse","Ardennes Horse","Arenberg-Nordkirchen","Argentine Criollo","Asian wild Horse","Assateague Horse","Asturc\xf3n","Augeron","Australian Brumby","Australian Draught Horse","Australian Stock Horse","Austrian Warmblood","Auvergne Horse","Auxois","Azerbaijan Horse","Azteca Horse","Baise Horse","Bale","Balearic Horse","Balikun Horse","Baluchi Horse","Banker Horse","Barb Horse","Bardigiano","Bashkir Curly","Basque Mountain Horse","Bavarian Warmblood","Belgian Half-blood","Belgian Horse","Belgian Warmblood ","Bhutia Horse","Black Forest Horse","Blazer Horse","Boerperd","Borana","Boulonnais Horse","Brabant","Brandenburger","Brazilian Sport Horse","Breton Horse","Brumby","Budyonny Horse","Burguete Horse","Burmese Horse","Byelorussian Harness Horse","Calabrese Horse","Camargue Horse","Camarillo White Horse","Campeiro","Campolina","Canadian Horse","Canadian Pacer","Carolina Marsh Tacky","Carthusian Horse","Caspian Horse","Castilian Horse","Castillonnais","Catria Horse","Cavallo Romano della Maremma Laziale","Cerbat Mustang","Chickasaw Horse","Chilean Corralero","Choctaw Horse","Cleveland Bay","Clydesdale Horse","Cob","Coldblood Trotter","Colonial Spanish Horse","Colorado Ranger","Comtois Horse","Corsican Horse","Costa Rican Saddle Horse","Cretan Horse","Criollo Horse","Croatian Coldblood","Cuban Criollo","Cumberland Island Horse","Curly Horse","Czech Warmblood","Daliboz","Danish Warmblood","Danube Delta Horse","Dole Gudbrandsdal","Don","Dongola Horse","Draft Trotter","Dutch Harness Horse","Dutch Heavy Draft","Dutch Warmblood","Dzungarian Horse","East Bulgarian","East Friesian Horse","Estonian Draft","Estonian Horse","Falabella","Faroese","Finnhorse","Fjord Horse","Fleuve","Florida Cracker Horse","Foutank\xe9","Frederiksborg Horse","Freiberger","French Trotter","Friesian Cross","Friesian Horse","Friesian Sporthorse","Furioso-North Star","Galice\xf1o","Galician Pony","Gelderland Horse","Georgian Grande Horse","German Warmblood","Giara Horse","Gidran","Groningen Horse","Gypsy Horse","Hackney Horse","Haflinger","Hanoverian Horse","Heck Horse","Heihe Horse","Henson Horse","Hequ Horse","Hirzai","Hispano-Bret\xf3n","Holsteiner Horse","Horro","Hungarian Warmblood","Icelandic Horse","Iomud","Irish Draught","Irish Sport Horse sometimes called Irish Hunter","Italian Heavy Draft","Italian Trotter","Jaca Navarra","Jeju Horse","Jutland Horse","Kabarda Horse","Kafa","Kaimanawa Horses","Kalmyk Horse","Karabair","Karabakh Horse","Karachai Horse","Karossier","Kathiawari","Kazakh Horse","Kentucky Mountain Saddle Horse","Kiger Mustang","Kinsky Horse","Kisber Felver","Kiso Horse","Kladruber","Knabstrupper","Konik","Kundudo","Kustanair","Kyrgyz Horse","Latvian Horse","Lipizzan","Lithuanian Heavy Draught","Lokai","Losino Horse","Lusitano","Lyngshest","M'Bayar","M'Par","Mallorqu\xedn","Malopolski","Mangalarga","Mangalarga Marchador","Maremmano","Marisme\xf1o Horse","Marsh Tacky","Marwari Horse","Mecklenburger","Menorqu\xedn","Messara Horse","Metis Trotter","Mez\u0151hegyesi Sport Horse","Me\u0111imurje Horse","Miniature Horse","Misaki Horse","Missouri Fox Trotter","Monchina","Mongolian Horse","Mongolian Wild Horse","Monterufolino","Morab","Morgan Horse","Mountain Pleasure Horse","Moyle Horse","Murakoz Horse","Murgese","Mustang Horse","M\xe9rens Horse","Namib Desert Horse","Nangchen Horse","National Show Horse","Nez Perce Horse","Nivernais Horse","Nokota Horse","Noma","Nonius Horse","Nooitgedachter","Nordlandshest","Noriker Horse","Norman Cob","North American Single-Footer Horse","North Swedish Horse","Norwegian Coldblood Trotter","Norwegian Fjord","Novokirghiz","Oberlander Horse","Ogaden","Oldenburg Horse","Orlov trotter","Ostfriesen","Paint","Pampa Horse","Paso Fino","Pentro Horse","Percheron","Persano Horse","Peruvian Paso","Pintabian","Pleven Horse","Poitevin Horse","Posavac Horse","Pottok","Pryor Mountain Mustang","Przewalski's Horse","Pura Raza Espa\xf1ola","Purosangue Orientale","Qatgani","Quarab","Quarter Horse","Racking Horse","Retuerta Horse","Rhenish German Coldblood","Rhinelander Horse","Riwoche Horse","Rocky Mountain Horse","Romanian Sporthorse","Rottaler","Russian Don","Russian Heavy Draft","Russian Trotter","Saddlebred","Salerno Horse","Samolaco Horse","San Fratello Horse","Sarcidano Horse","Sardinian Anglo-Arab","Schleswig Coldblood","Schwarzw\xe4lder Kaltblut","Selale","Sella Italiano","Selle Fran\xe7ais","Shagya Arabian","Shan Horse","Shire Horse","Siciliano Indigeno","Silesian Horse","Sokolsky Horse","Sorraia","South German Coldblood","Soviet Heavy Draft","Spanish Anglo-Arab","Spanish Barb","Spanish Jennet Horse","Spanish Mustang","Spanish Tarpan","Spanish-Norman Horse","Spiti Horse","Spotted Saddle Horse","Standardbred Horse","Suffolk Punch","Swedish Ardennes","Swedish Warmblood","Swedish coldblood trotter","Swiss Warmblood","Taish\u016b Horse","Takhi","Tawleed","Tchernomor","Tennessee Walking Horse","Tersk Horse","Thoroughbred","Tiger Horse","Tinker Horse","Tolfetano","Tori Horse","Trait Du Nord","Trakehner","Tsushima","Tuigpaard","Ukrainian Riding Horse","Unmol Horse","Uzunyayla","Ventasso Horse","Virginia Highlander","Vlaamperd","Vladimir Heavy Draft","Vyatka","Waler","Waler Horse","Walkaloosa","Warlander","Warmblood","Welsh Cob","Westphalian Horse","Wielkopolski","W\xfcrttemberger","Xilingol Horse","Yakutian Horse","Yili Horse","Yonaguni Horse","Zaniskari","Zhemaichu","Zweibr\xfccker","\u017demaitukas"],insect:["Acacia-ants","Acorn-plum gall","Aerial yellowjacket","Africanized honey bee","Allegheny mound ant","Almond stone wasp","Ant","Arboreal ant","Argentine ant","Asian paper wasp","Baldfaced hornet","Bee","Bigheaded ant","Black and yellow mud dauber","Black carpenter ant","Black imported fire ant","Blue horntail woodwasp","Blue orchard bee","Braconid wasp","Bumble bee","Carpenter ant","Carpenter wasp","Chalcid wasp","Cicada killer","Citrus blackfly parasitoid","Common paper wasp","Crazy ant","Cuckoo wasp","Cynipid gall wasp","Eastern Carpenter bee","Eastern yellowjacket","Elm sawfly","Encyrtid wasp","Erythrina gall wasp","Eulophid wasp","European hornet","European imported fire ant","False honey ant","Fire ant","Forest bachac","Forest yellowjacket","German yellowjacket","Ghost ant","Giant ichneumon wasp","Giant resin bee","Giant wood wasp","Golden northern bumble bee","Golden paper wasp","Gouty oak gall","Grass Carrying Wasp","Great black wasp","Great golden digger wasp","Hackberry nipple gall parasitoid","Honey bee","Horned oak gall","Horse guard wasp","Hunting wasp","Ichneumonid wasp","Keyhole wasp","Knopper gall","Large garden bumble bee","Large oak-apple gall","Leafcutting bee","Little fire ant","Little yellow ant","Long-horned bees","Long-legged ant","Macao paper wasp","Mallow bee","Marble gall","Mossyrose gall wasp","Mud-daubers","Multiflora rose seed chalcid","Oak apple gall wasp","Oak rough bulletgall wasp","Oak saucer gall","Oak shoot sawfly","Odorous house ant","Orange-tailed bumble bee","Orangetailed potter wasp","Oriental chestnut gall wasp","Paper wasp","Pavement ant","Pigeon tremex","Pip gall wasp","Prairie yellowjacket","Pteromalid wasp","Pyramid ant","Raspberry Horntail","Red ant","Red carpenter ant","Red harvester ant","Red imported fire ant","Red wasp","Red wood ant","Red-tailed wasp","Reddish carpenter ant","Rough harvester ant","Sawfly parasitic wasp","Scale parasitoid","Silky ant","Sirex woodwasp","Siricid woodwasp","Smaller yellow ant","Southeastern blueberry bee","Southern fire ant","Southern yellowjacket","Sphecid wasp","Stony gall","Sweat bee","Texas leafcutting ant","Tiphiid wasp","Torymid wasp","Tramp ant","Valentine ant","Velvet ant","Vespid wasp","Weevil parasitoid","Western harvester ant","Western paper wasp","Western thatching ant","Western yellowjacket","White-horned horntail","Willow shoot sawfly","Woodwasp","Wool sower gall maker","Yellow Crazy Ant","Yellow and black potter wasp","Yellow-horned horntail"],lion:["Asiatic Lion","Barbary Lion","Cape lion","Masai Lion","Northeast Congo Lion","Transvaal lion","West African Lion"],rabbit:["American","American Chinchilla","American Fuzzy Lop","American Sable","Argente Brun","Belgian Hare","Beveren","Blanc de Hotot","Britannia Petite","Californian","Champagne D\u2019Argent","Checkered Giant","Cinnamon","Cr\xe8me D\u2019Argent","Dutch","Dwarf Hotot","English Angora","English Lop","English Spot","Flemish Giant","Florida White","French Angora","French Lop","Giant Angora","Giant Chinchilla","Harlequin","Havana","Himalayan","Holland Lop","Jersey Wooly","Lilac","Lionhead","Mini Lop","Mini Rex","Mini Satin","Netherland Dwarf","New Zealand","Palomino","Polish","Rex","Rhinelander","Satin","Satin Angora","Silver","Silver Fox","Silver Marten","Standard Chinchilla","Tan","Thrianta"],rodent:["Abrocoma","Abrocoma schistacea","Aconaemys","Aconaemys porteri","African brush-tailed porcupine","Andean mountain cavy","Argentine tuco-tuco","Ashy chinchilla rat","Asiatic brush-tailed porcupine","Atherurus","Azara's agouti","Azara's tuco-tuco","Bahia porcupine","Bathyergus","Bathyergus janetta","Bathyergus suillus","Bennett's chinchilla rat","Bicolored-spined porcupine","Black agouti","Black dwarf porcupine","Black-rumped agouti","Black-tailed hairy dwarf porcupine","Bolivian chinchilla rat","Bolivian tuco-tuco","Bonetto's tuco-tuco","Brandt's yellow-toothed cavy","Brazilian guinea pig","Brazilian porcupine","Brazilian tuco-tuco","Bridge's degu","Brown hairy dwarf porcupine","Budin's chinchilla rat, A. budini","Cape porcupine","Catamarca tuco-tuco","Cavia","Central American agouti","Chacoan tuco-tuco","Chilean rock rat","Chinchilla","Coendou","Coiban agouti","Colburn's tuco-tuco","Collared tuco-tuco","Common degu","Common yellow-toothed cavy","Conover's tuco-tuco","Coruro","Crested agouti","Crested porcupine","Cryptomys","Cryptomys bocagei","Cryptomys damarensis","Cryptomys foxi","Cryptomys hottentotus","Cryptomys mechowi","Cryptomys ochraceocinereus","Cryptomys zechi","Ctenomys","Cuniculus","Cuscomys","Cuscomys ashanika","Dactylomys","Dactylomys boliviensis","Dactylomys dactylinus","Dactylomys peruanus","Dasyprocta","Domestic guinea pig","Emily's tuco-tuco","Erethizon","Famatina chinchilla rat","Frosted hairy dwarf porcupine","Fukomys","Fukomys amatus","Fukomys anselli","Fukomys bocagei","Fukomys damarensis","Fukomys darlingi","Fukomys foxi","Fukomys ilariae","Fukomys kafuensis","Fukomys mechowii","Fukomys micklemi","Fukomys occlusus","Fukomys ochraceocinereus","Fukomys whytei","Fukomys zechi","Furtive tuco-tuco","Galea","Georychus","Georychus capensis","Golden viscacha-rat","Goya tuco-tuco","Greater guinea pig","Green acouchi","Haig's tuco-tuco","Heliophobius","Heliophobius argenteocinereus","Heterocephalus","Heterocephalus glaber","Highland tuco-tuco","Hystrix","Indian porcupine","Isla Mocha degu","Kalinowski agouti","Kannabateomys","Kannabateomys amblyonyx","Lagidium","Lagostomus","Lewis' tuco-tuco","Long-tailed chinchilla","Long-tailed porcupine","Los Chalchaleros' viscacha-rat","Lowland paca","Magellanic tuco-tuco","Malayan porcupine","Maule tuco-tuco","Mendoza tuco-tuco","Mexican agouti","Mexican hairy dwarf porcupine","Microcavia","Montane guinea pig","Moon-toothed degu","Mottled tuco-tuco","Mountain degu","Mountain paca","Mountain viscacha-rat","Myoprocta","Natterer's tuco-tuco","North American porcupine","Northern viscacha","Octodon","Octodontomys","Octomys","Olallamys","Olallamys albicauda","Olallamys edax","Orinoco agouti","Paraguaian hairy dwarf porcupine","Pearson's tuco-tuco","Peruvian tuco-tuco","Philippine porcupine","Pipanacoctomys","Plains viscacha","Plains viscacha-rat","Porteous' tuco-tuco","Punta de Vacas chinchilla rat","Red acouchi","Red-rumped agouti","Reddish tuco-tuco","Rio Negro tuco-tuco","Robust tuco-tuco","Roosmalen's dwarf porcupine","Rothschild's porcupine","Ruatan Island agouti","Sage's rock rat","Salinoctomys","Salta tuco-tuco","San Luis tuco-tuco","Santa Catarina's guinea pig","Shiny guinea pig","Shipton's mountain cavy","Short-tailed chinchilla","Silky tuco-tuco","Social tuco-tuco","Southern mountain cavy","Southern tuco-tuco","Southern viscacha","Spalacopus","Spix's yellow-toothed cavy","Steinbach's tuco-tuco","Streaked dwarf porcupine","Strong tuco-tuco","Stump-tailed porcupine","Sumatran porcupine","Sunda porcupine","Talas tuco-tuco","Tawny tuco-tuco","Thick-spined porcupine","Tiny tuco-tuco","Trichys","Tucuman tuco-tuco","Tympanoctomys","Uspallata chinchilla rat","White-toothed tuco-tuco","Wolffsohn's viscacha"],snake:["Abaco Island boa","Aesculapian snake","African beaked snake","African puff adder","African rock python","African twig snake","African wolf snake","Amazon tree boa","Amazonian palm viper","American Vine Snake","American copperhead","Amethystine python","Anaconda","Andaman cat snake","Andaman cobra","Angolan python","Annulated sea snake","Arabian cobra","Arafura file snake","Arizona black rattlesnake","Arizona coral snake","Aruba rattlesnake","Asian Vine Snake, Whip Snake","Asian cobra","Asian keelback","Asian pipe snake","Asp","Asp viper","Assam keelback","Australian copperhead","Australian scrub python","Baird's rat snake","Baja California lyresnake","Ball Python","Ball python","Bamboo pitviper","Bamboo viper","Banded Flying Snake","Banded cat-eyed snake","Banded krait","Banded pitviper","Banded water cobra","Barbour's pit viper","Barred wolf snake","Beaked sea snake","Beauty rat snake","Beddome's cat snake","Beddome's coral snake","Bimini racer","Bird snake","Bismarck ringed python","Black headed python","Black krait","Black mamba","Black rat snake","Black snake","Black tree cobra","Black-banded trinket snake","Black-headed snake","Black-necked cobra","Black-necked spitting cobra","Black-speckled palm-pitviper","Black-striped keelback","Black-tailed horned pit viper","Blanding's tree snake","Blind snake","Blonde hognose snake","Blood python","Blue krait","Blunt-headed tree snake","Bluntnose viper","Boa","Boa constrictor","Bocourt's water snake","Boelen python","Boiga","Bolivian anaconda","Boomslang","Bornean pitviper","Borneo short-tailed python","Brahminy blind snake","Brazilian coral snake","Brazilian mud Viper","Brazilian smooth snake","Bredl's python","Brongersma's pitviper","Brown snake","Brown spotted pitviper[4]","Brown tree snake","Brown water python","Brown white-lipped python","Buff striped keelback","Bull snake","Burmese keelback","Burmese krait","Burmese python","Burrowing cobra","Burrowing viper","Bush viper","Bushmaster","Buttermilk racer","Calabar python","California kingsnake","Canebrake","Cantil","Cantor's pitviper","Cape cobra","Cape coral snake","Cape gopher snake","Carpet viper","Cascabel","Caspian cobra","Cat snake","Cat-eyed night snake","Cat-eyed snake","Central American lyre snake","Central ranges taipan","Centralian carpet python","Ceylon krait","Chappell Island tiger snake","Checkered garter snake","Checkered keelback","Chicken snake","Chihuahuan ridge-nosed rattlesnake","Children's python","Chinese tree viper","Coachwhip snake","Coastal carpet python","Coastal taipan","Cobra","Collett's snake","Colorado desert sidewinder","Common adder","Common cobra","Common garter snake","Common ground snake","Common keelback","Common lancehead","Common tiger snake","Common worm snake","Congo snake","Congo water cobra","Copperhead","Coral snake","Corn snake","Coronado Island rattlesnake","Cottonmouth","Crossed viper","Crowned snake","Cuban boa","Cuban wood snake","Cyclades blunt-nosed viper","Dauan Island water python","De Schauensee's anaconda","Death Adder","Desert death adder","Desert kingsnake","Desert woma python","Diamond python","Dog-toothed cat snake","Down's tiger snake","Dubois's sea snake","Dumeril's boa","Durango rock rattlesnake","Dusky pigmy rattlesnake","Dusty hognose snake","Dwarf beaked snake","Dwarf boa","Dwarf pipe snake","Dwarf sand adder","Eastern brown snake","Eastern coral snake","Eastern diamondback rattlesnake","Eastern green mamba","Eastern hognose snake","Eastern lyre snake","Eastern mud snake","Eastern racer","Eastern tiger snake","Eastern water cobra","Eastern yellowbelly sad racer","Egg-eater","Egyptian asp","Egyptian cobra","Elegant pitviper","Emerald tree boa","Equatorial spitting cobra","European asp","European smooth snake","Eyelash palm-pitviper","Eyelash pit viper","Eyelash viper","False cobra","False horned viper","False water cobra","Fan-Si-Pan horned pitviper","Fea's viper","Fer-de-lance","Fierce snake","Fifty pacer","Fishing snake","Flat-nosed pitviper","Flinders python","Flying snake","Forest cobra","Forest flame snake","Forsten's cat snake","Fox snake, three species of Pantherophis","Gaboon viper","Garter snake","Giant Malagasy hognose snake","Godman's pit viper","Gold tree cobra","Gold-ringed cat snake","Golden tree snake","Grand Canyon rattlesnake","Grass snake","Gray cat snake","Great Basin rattlesnake","Great Lakes bush viper","Great Plains rat snake","Green anaconda","Green cat-eyed snake","Green mamba","Green palm viper","Green rat snake","Green snake","Green tree pit viper","Green tree python","Grey Lora","Grey-banded kingsnake","Ground snake","Guatemalan palm viper","Guatemalan tree viper","Habu","Habu pit viper","Hagen's pitviper","Hairy bush viper","Halmahera python","Hardwicke's sea snake","Harlequin coral snake","High Woods coral snake","Hill keelback","Himalayan keelback","Hogg Island boa","Hognose snake","Hognosed viper","Honduran palm viper","Hook Nosed Sea Snake","Hopi rattlesnake","Horned adder","Horned desert viper","Horned viper","Horseshoe pitviper","Hundred pacer","Hutton's tree viper","Ikaheka snake","Indian cobra","Indian flying snake","Indian krait","Indian python","Indian tree viper","Indigo snake","Indochinese spitting cobra","Indonesian water python","Inland carpet python","Inland taipan","Jamaican Tree Snake","Jamaican boa","Jan's hognose snake","Japanese forest rat snake","Japanese rat snake","Japanese striped snake","Javan spitting cobra","Jerdon's pitviper","Jumping viper","Jungle carpet python","Kanburian pit viper","Kaulback's lance-headed pitviper","Kayaudi dwarf reticulated python","Kaznakov's viper","Keelback","Kham Plateau pitviper","Khasi Hills keelback","King Island tiger snake","King brown","King cobra","King rat snake","King snake","Krait","Krefft's tiger snake","Lance-headed rattlesnake","Lancehead","Large shield snake","Large-eyed pitviper","Large-scaled tree viper","Leaf viper","Leaf-nosed viper","Lesser black krait","Levant viper","Long-nosed adder","Long-nosed tree snake","Long-nosed viper","Long-nosed whip snake","Long-tailed rattlesnake","Longnosed worm snake","Lora","Lyre snake","Machete savane","Macklot's python","Madagascar ground boa","Madagascar tree boa","Malabar rock pitviper","Malayan krait","Malayan long-glanded coral snake","Malayan pit viper","Malcolm's tree viper","Mamba","Mamushi","Manchurian Black Water Snake","Mandalay cobra","Mandarin rat snake","Mangrove pit viper","Mangrove snake","Mangshan pitviper","Many-banded krait","Many-banded tree snake","Many-horned adder","Many-spotted cat snake","Massasauga rattlesnake","McMahon's viper","Mexican black kingsnake","Mexican green rattlesnake","Mexican hognose snake","Mexican palm-pitviper","Mexican parrot snake","Mexican racer","Mexican vine snake","Mexican west coast rattlesnake","Midget faded rattlesnake","Milk snake","Moccasin snake","Modest keelback","Mojave desert sidewinder","Mojave rattlesnake","Mole viper","Mollucan python","Moluccan flying snake","Montpellier snake","Motuo bamboo pitviper","Mountain adder","Mozambique spitting cobra","Mud adder","Mud snake","Mussurana","Namaqua dwarf adder","Namib dwarf sand adder","Narrowhead Garter Snake","New Guinea carpet python","Nichell snake","Nicobar Island keelback","Nicobar bamboo pitviper","Night snake","Nightingale adder","Nilgiri keelback","Nitsche's bush viper","Nitsche's tree viper","North Philippine cobra","North eastern king snake","Northeastern hill krait","Northern black-tailed rattlesnake","Northern tree snake","Northern water snake","Northern white-lipped python","Northwestern carpet python","Nose-horned viper","Nubian spitting cobra","Oaxacan small-headed rattlesnake","Oenpelli python","Olive python","Olive sea snake","Orange-collared keelback","Ornate flying snake","Palestine viper","Pallas' viper","Palm viper","Papuan python","Paradise flying snake","Parrot snake","Patchnose snake","Paupan taipan","Pelagic sea snake","Peninsula tiger snake","Peringuey's adder","Perrotet's shieldtail snake","Persian rat snake","Philippine cobra","Philippine pitviper","Pine snake","Pipe snake","Pit viper","Pointed-scaled pit viper[5]","Pope's tree viper","Portuguese viper","Prairie kingsnake","Puerto Rican boa","Puff adder","Pygmy python","Python","Queen snake","Racer","Raddysnake","Rainbow boa","Rat snake","Rattler","Rattlesnake","Red blood python","Red diamond rattlesnake","Red spitting cobra","Red-backed rat snake","Red-bellied black snake","Red-headed krait","Red-necked keelback","Red-tailed bamboo pitviper","Red-tailed boa","Red-tailed pipe snake","Reticulated python","Rhinoceros viper","Rhombic night adder","Ribbon snake","Rinkhals","Rinkhals cobra","River jack","Rosy boa","Rough green snake","Rough-scaled bush viper","Rough-scaled python","Rough-scaled tree viper","Royal python","Rubber boa","Rufous beaked snake","Rungwe tree viper","San Francisco garter snake","Sand adder","Sand boa","Savu python","Saw-scaled viper","Scarlet kingsnake","Schlegel's viper","Schultze's pitviper","Sea snake","Sedge viper","Selayer reticulated python","Sharp-nosed viper","Shield-nosed cobra","Shield-tailed snake","Siamese palm viper","Side-striped palm-pitviper","Sidewinder","Sikkim keelback","Sinai desert cobra","Sind krait","Small-eyed snake","Smooth green snake","Smooth snake","Snorkel viper","Snouted cobra","Sonoran sidewinder","South American hognose snake","South eastern corn snake","Southern Indonesian spitting cobra","Southern Pacific rattlesnake","Southern Philippine cobra","Southern black racer","Southern white-lipped python","Southwestern black spitting cobra","Southwestern blackhead snake","Southwestern carpet python","Southwestern speckled rattlesnake","Speckle-bellied keelback","Speckled kingsnake","Spectacled cobra","Spiny bush viper","Spitting cobra","Spotted python","Sri Lankan pit viper","Stejneger's bamboo pitviper","Stiletto snake","Stimson's python","Stoke's sea snake","Storm water cobra","Striped snake","Sumatran short-tailed python","Sumatran tree viper","Sunbeam snake","Taipan","Taiwan cobra","Tan racer","Tancitaran dusky rattlesnake","Tanimbar python","Tasmanian tiger snake","Tawny cat snake","Temple pit viper","Temple viper","Tentacled snake","Texas Coral Snake","Texas blind snake","Texas garter snake","Texas lyre snake","Texas night snake","Thai cobra","Three-lined ground snake","Tibetan bamboo pitviper","Tic polonga","Tiger pit viper","Tiger rattlesnake","Tiger snake","Tigre snake","Timber rattlesnake","Timor python","Titanboa","Tree boa","Tree snake","Tree viper","Trinket snake","Tropical rattlesnake","Twig snake","Twin Headed King Snake","Twin-Barred tree snake","Twin-spotted rat snake","Twin-spotted rattlesnake","Undulated pit viper","Uracoan rattlesnake","Ursini's viper","Urutu","Vine snake","Viper","Viper Adder","Vipera ammodytes","Wagler's pit viper","Wart snake","Water adder","Water moccasin","Water snake","West Indian racer","Western blind snake","Western carpet python","Western coral snake","Western diamondback rattlesnake","Western green mamba","Western ground snake","Western hog-nosed viper","Western mud snake","Western tiger snake","Western woma python","Wetar Island python","Whip snake","White-lipped keelback","White-lipped python","White-lipped tree viper","Wirot's pit viper","Wolf snake","Woma python","Worm snake","Wutu","Wynaad keelback","Yarara","Yellow anaconda","Yellow-banded sea snake","Yellow-bellied sea snake","Yellow-lined palm viper","Yellow-lipped sea snake","Yellow-striped rat snake","Yunnan keelback","Zebra snake","Zebra spitting cobra"],type:["bat","bear","bee","bird","butterfly","cat","cow","crocodile","deer","dog","dolphin","eagle","elephant","fish","flamingo","fox","frog","gecko","giraffe","gorilla","hamster","hippopotamus","horse","kangaroo","koala","lion","monkey","ostrich","panda","parrot","peacock","penguin","polar bear","rabbit","rhinoceros","sea lion","shark","snake","squirrel","tiger","turtle","whale","wolf","zebra"]},app:{author:["{{person.name}}","{{company.name}}"],name:["Redhold","Treeflex","Trippledex","Kanlam","Bigtax","Daltfresh","Toughjoyfax","Mat Lam Tam","Otcom","Tres-Zap","Y-Solowarm","Tresom","Voltsillam","Biodex","Greenlam","Viva","Matsoft","Temp","Zoolab","Subin","Rank","Job","Stringtough","Tin","It","Home Ing","Zamit","Sonsing","Konklab","Alpha","Latlux","Voyatouch","Alphazap","Holdlamis","Zaam-Dox","Sub-Ex","Quo Lux","Bamity","Ventosanzap","Lotstring","Hatity","Tempsoft","Overhold","Fixflex","Konklux","Zontrax","Tampflex","Span","Namfix","Transcof","Stim","Fix San","Sonair","Stronghold","Fintone","Y-find","Opela","Lotlux","Ronstring","Zathin","Duobam","Keylex"],version:["0.#.#","0.##","#.##","#.#","#.#.#"]},cell_phone:{formats:["###-###-####","(###) ###-####","1-###-###-####","###.###.####"]},color:{human:["azure","black","blue","cyan","fuchsia","gold","green","grey","indigo","ivory","lavender","lime","magenta","maroon","mint green","olive","orange","orchid","pink","plum","purple","red","salmon","silver","sky blue","tan","teal","turquoise","violet","white","yellow"]},commerce:{department:["Automotive","Baby","Beauty","Books","Clothing","Computers","Electronics","Games","Garden","Grocery","Health","Home","Industrial","Jewelry","Kids","Movies","Music","Outdoors","Shoes","Sports","Tools","Toys"],product_description:["Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals","Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles","Carbonite web goalkeeper gloves are ergonomically designed to give easy fit","Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support","New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016","New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart","The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design","The Football Is Good For Training And Recreational Purposes","The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J","The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive","The beautiful range of Apple Natural\xe9 that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients","The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality"],product_name:{adjective:["Awesome","Bespoke","Electronic","Elegant","Ergonomic","Fantastic","Generic","Gorgeous","Handcrafted","Handmade","Incredible","Intelligent","Licensed","Luxurious","Modern","Oriental","Practical","Recycled","Refined","Rustic","Sleek","Small","Tasty","Unbranded"],material:["Bronze","Concrete","Cotton","Fresh","Frozen","Granite","Metal","Plastic","Rubber","Soft","Steel","Wooden"],product:["Bacon","Ball","Bike","Car","Chair","Cheese","Chicken","Chips","Computer","Fish","Gloves","Hat","Keyboard","Mouse","Pants","Pizza","Salad","Sausages","Shirt","Shoes","Soap","Table","Towels","Tuna"]}},company:{adjective:["Adaptive","Advanced","Ameliorated","Assimilated","Automated","Balanced","Business-focused","Centralized","Cloned","Compatible","Configurable","Cross-group","Cross-platform","Customer-focused","Customizable","De-engineered","Decentralized","Devolved","Digitized","Distributed","Diverse","Down-sized","Enhanced","Enterprise-wide","Ergonomic","Exclusive","Expanded","Extended","Face to face","Focused","Front-line","Fully-configurable","Function-based","Fundamental","Future-proofed","Grass-roots","Horizontal","Implemented","Innovative","Integrated","Intuitive","Inverse","Managed","Mandatory","Monitored","Multi-channelled","Multi-lateral","Multi-layered","Multi-tiered","Networked","Object-based","Open-architected","Open-source","Operative","Optimized","Optional","Organic","Organized","Persevering","Persistent","Phased","Polarised","Pre-emptive","Proactive","Profit-focused","Profound","Programmable","Progressive","Public-key","Quality-focused","Re-contextualized","Re-engineered","Reactive","Realigned","Reduced","Reverse-engineered","Right-sized","Robust","Seamless","Secured","Self-enabling","Sharable","Stand-alone","Streamlined","Switchable","Synchronised","Synergistic","Synergized","Team-oriented","Total","Triple-buffered","Universal","Up-sized","Upgradable","User-centric","User-friendly","Versatile","Virtual","Vision-oriented","Visionary"],buzz_adjective:["24/365","24/7","B2B","B2C","back-end","best-of-breed","bleeding-edge","bricks-and-clicks","clicks-and-mortar","collaborative","compelling","cross-media","cross-platform","customized","cutting-edge","distributed","dot-com","dynamic","e-business","efficient","end-to-end","enterprise","extensible","frictionless","front-end","global","granular","holistic","impactful","innovative","integrated","interactive","intuitive","killer","leading-edge","magnetic","mission-critical","next-generation","one-to-one","open-source","out-of-the-box","plug-and-play","proactive","real-time","revolutionary","rich","robust","scalable","seamless","sexy","sticky","strategic","synergistic","transparent","turn-key","ubiquitous","user-centric","value-added","vertical","viral","virtual","visionary","web-enabled","wireless","world-class"],buzz_noun:["ROI","action-items","applications","architectures","bandwidth","blockchains","channels","communities","content","convergence","deliverables","e-business","e-commerce","e-markets","experiences","eyeballs","functionalities","infrastructures","initiatives","interfaces","lifetime value","markets","methodologies","metrics","mindshare","models","networks","niches","paradigms","partnerships","platforms","portals","relationships","schemas","solutions","supply-chains","synergies","systems","technologies","users","web services"],buzz_verb:["aggregate","architect","benchmark","brand","cultivate","deliver","deploy","disintermediate","drive","e-enable","embrace","empower","enable","engage","engineer","enhance","envisioneer","evolve","expedite","exploit","extend","facilitate","generate","grow","harness","implement","incentivize","incubate","innovate","integrate","iterate","leverage","matrix","maximize","mesh","monetize","morph","optimize","orchestrate","productize","recontextualize","redefine","reintermediate","reinvent","repurpose","revolutionize","scale","seize","strategize","streamline","syndicate","synergize","synthesize","target","transform","transition","unleash","utilize","visualize","whiteboard"],descriptor:["24 hour","24/7","3rd generation","4th generation","5th generation","6th generation","actuating","analyzing","asymmetric","asynchronous","attitude-oriented","background","bandwidth-monitored","bi-directional","bifurcated","bottom-line","clear-thinking","client-driven","client-server","coherent","cohesive","composite","content-based","context-sensitive","contextually-based","dedicated","demand-driven","didactic","directional","discrete","disintermediate","dynamic","eco-centric","empowering","encompassing","even-keeled","executive","explicit","exuding","fault-tolerant","foreground","fresh-thinking","full-range","global","grid-enabled","heuristic","high-level","holistic","homogeneous","human-resource","hybrid","impactful","incremental","intangible","interactive","intermediate","leading edge","local","logistical","maximized","methodical","mission-critical","mobile","modular","motivating","multi-state","multi-tasking","multimedia","national","needs-based","neutral","next generation","non-volatile","object-oriented","optimal","optimizing","radical","real-time","reciprocal","regional","responsive","scalable","secondary","solution-oriented","stable","static","system-worthy","systematic","systemic","tangible","tertiary","transitional","uniform","upward-trending","user-facing","value-added","web-enabled","well-modulated","zero administration","zero defect","zero tolerance"],legal_entity_type:["Group","Inc","LLC","and Sons"],name_pattern:["{{person.last_name.generic}} - {{person.last_name.generic}}","{{person.last_name.generic}} {{company.legal_entity_type}}","{{person.last_name.generic}}, {{person.last_name.generic}} and {{person.last_name.generic}}"],noun:["Graphic Interface","Graphical User Interface","ability","access","adapter","algorithm","alliance","analyzer","application","approach","architecture","archive","array","artificial intelligence","attitude","benchmark","budgetary management","capability","capacity","challenge","circuit","collaboration","complexity","concept","conglomeration","contingency","core","customer loyalty","data-warehouse","database","definition","emulation","encoding","encryption","extranet","firmware","flexibility","focus group","forecast","frame","framework","function","functionalities","groupware","hardware","help-desk","hierarchy","hub","implementation","info-mediaries","infrastructure","initiative","installation","instruction set","interface","internet solution","intranet","knowledge base","knowledge user","leverage","local area network","matrices","matrix","methodology","middleware","migration","model","moderator","monitoring","moratorium","neural-net","open architecture","open system","orchestration","paradigm","parallelism","policy","portal","pricing structure","process improvement","product","productivity","project","projection","protocol","secured line","service-desk","software","solution","standardization","strategy","structure","success","superstructure","support","synergy","system engine","task-force","throughput","time-frame","toolset","utilisation","website","workforce"]},database:{column:["avatar","category","comment","createdAt","email","group","id","name","password","phone","status","title","token","updatedAt"]},date:{month:{wide:["April","August","December","February","January","July","June","March","May","November","October","September"],abbr:["Apr","Aug","Dec","Feb","Jan","Jul","Jun","Mar","May","Nov","Oct","Sep"]},weekday:{wide:["Friday","Monday","Saturday","Sunday","Thursday","Tuesday","Wednesday"],abbr:["Fri","Mon","Sat","Sun","Thu","Tue","Wed"]}},finance:{account_type:["Auto Loan","Checking","Credit Card","Home Loan","Investment","Money Market","Personal Loan","Savings"],credit_card:{american_express:["34##-######-####L","37##-######-####L"],diners_club:["30[0-5]#-######-###L","36##-######-###L","54##-####-####-###L"],discover:["6011-####-####-###L","6011-62##-####-####-###L","64[4-9]#-####-####-###L","64[4-9]#-62##-####-####-###L","65##-####-####-###L","65##-62##-####-####-###L"],jcb:["3528-####-####-###L","3529-####-####-###L","35[3-8]#-####-####-###L"],mastercard:["2[221-720]-####-####-###L","5[1-5]##-####-####-###L"],visa:["4###########L","4###-####-####-###L"]},currency:[{name:"UAE Dirham",code:"AED",symbol:""},{name:"Afghani",code:"AFN",symbol:"\u060b"},{name:"Lek",code:"ALL",symbol:"Lek"},{name:"Armenian Dram",code:"AMD",symbol:""},{name:"Netherlands Antillian Guilder",code:"ANG",symbol:"\u0192"},{name:"Kwanza",code:"AOA",symbol:""},{name:"Argentine Peso",code:"ARS",symbol:"$"},{name:"Australian Dollar",code:"AUD",symbol:"$"},{name:"Aruban Guilder",code:"AWG",symbol:"\u0192"},{name:"Azerbaijanian Manat",code:"AZN",symbol:"\u043c\u0430\u043d"},{name:"Convertible Marks",code:"BAM",symbol:"KM"},{name:"Barbados Dollar",code:"BBD",symbol:"$"},{name:"Taka",code:"BDT",symbol:""},{name:"Bulgarian Lev",code:"BGN",symbol:"\u043b\u0432"},{name:"Bahraini Dinar",code:"BHD",symbol:""},{name:"Burundi Franc",code:"BIF",symbol:""},{name:"Bermudian Dollar (customarily known as Bermuda Dollar)",code:"BMD",symbol:"$"},{name:"Brunei Dollar",code:"BND",symbol:"$"},{name:"Boliviano boliviano",code:"BOB",symbol:"Bs"},{name:"Brazilian Real",code:"BRL",symbol:"R$"},{name:"Bahamian Dollar",code:"BSD",symbol:"$"},{name:"Pula",code:"BWP",symbol:"P"},{name:"Belarusian Ruble",code:"BYN",symbol:"Rbl"},{name:"Belize Dollar",code:"BZD",symbol:"BZ$"},{name:"Canadian Dollar",code:"CAD",symbol:"$"},{name:"Congolese Franc",code:"CDF",symbol:""},{name:"Swiss Franc",code:"CHF",symbol:"CHF"},{name:"Chilean Peso",code:"CLP",symbol:"$"},{name:"Yuan Renminbi",code:"CNY",symbol:"\xa5"},{name:"Colombian Peso",code:"COP",symbol:"$"},{name:"Costa Rican Colon",code:"CRC",symbol:"\u20a1"},{name:"Cuban Peso",code:"CUP",symbol:"\u20b1"},{name:"Cape Verde Escudo",code:"CVE",symbol:""},{name:"Czech Koruna",code:"CZK",symbol:"K\u010d"},{name:"Djibouti Franc",code:"DJF",symbol:""},{name:"Danish Krone",code:"DKK",symbol:"kr"},{name:"Dominican Peso",code:"DOP",symbol:"RD$"},{name:"Algerian Dinar",code:"DZD",symbol:""},{name:"Egyptian Pound",code:"EGP",symbol:"\xa3"},{name:"Nakfa",code:"ERN",symbol:""},{name:"Ethiopian Birr",code:"ETB",symbol:""},{name:"Euro",code:"EUR",symbol:"\u20ac"},{name:"Fiji Dollar",code:"FJD",symbol:"$"},{name:"Falkland Islands Pound",code:"FKP",symbol:"\xa3"},{name:"Pound Sterling",code:"GBP",symbol:"\xa3"},{name:"Lari",code:"GEL",symbol:""},{name:"Cedi",code:"GHS",symbol:""},{name:"Gibraltar Pound",code:"GIP",symbol:"\xa3"},{name:"Dalasi",code:"GMD",symbol:""},{name:"Guinea Franc",code:"GNF",symbol:""},{name:"Quetzal",code:"GTQ",symbol:"Q"},{name:"Guyana Dollar",code:"GYD",symbol:"$"},{name:"Hong Kong Dollar",code:"HKD",symbol:"$"},{name:"Lempira",code:"HNL",symbol:"L"},{name:"Gourde",code:"HTG",symbol:""},{name:"Forint",code:"HUF",symbol:"Ft"},{name:"Rupiah",code:"IDR",symbol:"Rp"},{name:"New Israeli Sheqel",code:"ILS",symbol:"\u20aa"},{name:"Bhutanese Ngultrum",code:"BTN",symbol:"Nu"},{name:"Indian Rupee",code:"INR",symbol:"\u20b9"},{name:"Iraqi Dinar",code:"IQD",symbol:""},{name:"Iranian Rial",code:"IRR",symbol:"\ufdfc"},{name:"Iceland Krona",code:"ISK",symbol:"kr"},{name:"Jamaican Dollar",code:"JMD",symbol:"J$"},{name:"Jordanian Dinar",code:"JOD",symbol:""},{name:"Yen",code:"JPY",symbol:"\xa5"},{name:"Kenyan Shilling",code:"KES",symbol:""},{name:"Som",code:"KGS",symbol:"\u043b\u0432"},{name:"Riel",code:"KHR",symbol:"\u17db"},{name:"Comoro Franc",code:"KMF",symbol:""},{name:"North Korean Won",code:"KPW",symbol:"\u20a9"},{name:"Won",code:"KRW",symbol:"\u20a9"},{name:"Kuwaiti Dinar",code:"KWD",symbol:""},{name:"Cayman Islands Dollar",code:"KYD",symbol:"$"},{name:"Tenge",code:"KZT",symbol:"\u043b\u0432"},{name:"Kip",code:"LAK",symbol:"\u20ad"},{name:"Lebanese Pound",code:"LBP",symbol:"\xa3"},{name:"Sri Lanka Rupee",code:"LKR",symbol:"\u20a8"},{name:"Liberian Dollar",code:"LRD",symbol:"$"},{name:"Libyan Dinar",code:"LYD",symbol:""},{name:"Moroccan Dirham",code:"MAD",symbol:""},{name:"Moldovan Leu",code:"MDL",symbol:""},{name:"Malagasy Ariary",code:"MGA",symbol:""},{name:"Denar",code:"MKD",symbol:"\u0434\u0435\u043d"},{name:"Kyat",code:"MMK",symbol:""},{name:"Tugrik",code:"MNT",symbol:"\u20ae"},{name:"Pataca",code:"MOP",symbol:""},{name:"Ouguiya",code:"MRU",symbol:""},{name:"Mauritius Rupee",code:"MUR",symbol:"\u20a8"},{name:"Rufiyaa",code:"MVR",symbol:""},{name:"Kwacha",code:"MWK",symbol:""},{name:"Mexican Peso",code:"MXN",symbol:"$"},{name:"Malaysian Ringgit",code:"MYR",symbol:"RM"},{name:"Metical",code:"MZN",symbol:"MT"},{name:"Naira",code:"NGN",symbol:"\u20a6"},{name:"Cordoba Oro",code:"NIO",symbol:"C$"},{name:"Norwegian Krone",code:"NOK",symbol:"kr"},{name:"Nepalese Rupee",code:"NPR",symbol:"\u20a8"},{name:"New Zealand Dollar",code:"NZD",symbol:"$"},{name:"Rial Omani",code:"OMR",symbol:"\ufdfc"},{name:"Balboa",code:"PAB",symbol:"B/."},{name:"Nuevo Sol",code:"PEN",symbol:"S/."},{name:"Kina",code:"PGK",symbol:""},{name:"Philippine Peso",code:"PHP",symbol:"Php"},{name:"Pakistan Rupee",code:"PKR",symbol:"\u20a8"},{name:"Zloty",code:"PLN",symbol:"z\u0142"},{name:"Guarani",code:"PYG",symbol:"Gs"},{name:"Qatari Rial",code:"QAR",symbol:"\ufdfc"},{name:"New Leu",code:"RON",symbol:"lei"},{name:"Serbian Dinar",code:"RSD",symbol:"\u0414\u0438\u043d."},{name:"Russian Ruble",code:"RUB",symbol:"\u0440\u0443\u0431"},{name:"Rwanda Franc",code:"RWF",symbol:""},{name:"Saudi Riyal",code:"SAR",symbol:"\ufdfc"},{name:"Solomon Islands Dollar",code:"SBD",symbol:"$"},{name:"Seychelles Rupee",code:"SCR",symbol:"\u20a8"},{name:"Sudanese Pound",code:"SDG",symbol:""},{name:"Swedish Krona",code:"SEK",symbol:"kr"},{name:"Singapore Dollar",code:"SGD",symbol:"$"},{name:"Saint Helena Pound",code:"SHP",symbol:"\xa3"},{name:"Leone",code:"SLE",symbol:""},{name:"Somali Shilling",code:"SOS",symbol:"S"},{name:"Surinam Dollar",code:"SRD",symbol:"$"},{name:"South Sudanese pound",code:"SSP",symbol:""},{name:"Dobra",code:"STN",symbol:"Db"},{name:"Syrian Pound",code:"SYP",symbol:"\xa3"},{name:"Lilangeni",code:"SZL",symbol:""},{name:"Baht",code:"THB",symbol:"\u0e3f"},{name:"Somoni",code:"TJS",symbol:""},{name:"Manat",code:"TMT",symbol:""},{name:"Tunisian Dinar",code:"TND",symbol:""},{name:"Pa'anga",code:"TOP",symbol:""},{name:"Turkish Lira",code:"TRY",symbol:"\u20ba"},{name:"Trinidad and Tobago Dollar",code:"TTD",symbol:"TT$"},{name:"New Taiwan Dollar",code:"TWD",symbol:"NT$"},{name:"Tanzanian Shilling",code:"TZS",symbol:""},{name:"Hryvnia",code:"UAH",symbol:"\u20b4"},{name:"Uganda Shilling",code:"UGX",symbol:""},{name:"US Dollar",code:"USD",symbol:"$"},{name:"Peso Uruguayo",code:"UYU",symbol:"$U"},{name:"Uzbekistan Sum",code:"UZS",symbol:"\u043b\u0432"},{name:"Venezuelan bol\xedvar",code:"VES",symbol:"Bs"},{name:"Dong",code:"VND",symbol:"\u20ab"},{name:"Vatu",code:"VUV",symbol:""},{name:"Tala",code:"WST",symbol:""},{name:"CFA Franc BEAC",code:"XAF",symbol:""},{name:"East Caribbean Dollar",code:"XCD",symbol:"$"},{name:"CFA Franc BCEAO",code:"XOF",symbol:""},{name:"CFP Franc",code:"XPF",symbol:""},{name:"Yemeni Rial",code:"YER",symbol:"\ufdfc"},{name:"Rand",code:"ZAR",symbol:"R"},{name:"Lesotho Loti",code:"LSL",symbol:""},{name:"Namibia Dollar",code:"NAD",symbol:"N$"},{name:"Zambian Kwacha",code:"ZMW",symbol:"K"},{name:"Zimbabwe Dollar",code:"ZWL",symbol:""}],transaction_type:["deposit","invoice","payment","withdrawal"]},food:{adjective:["bitter","creamy","crispy","crunchy","delicious","fluffy","fresh","golden","juicy","moist","rich","salty","savory","smoky","sour","spicy","sweet","tangy","tender","zesty"],description_pattern:["A classic pie filled with delicious {{food.meat}} and {{food.adjective}} {{food.ingredient}}, baked in a {{food.adjective}} pastry crust and topped with a golden-brown lattice.","A delightful tart combining {{food.adjective}} {{food.vegetable}} and sweet {{food.fruit}}, set in a buttery pastry shell and finished with a hint of {{food.spice}}.","A heartwarming {{food.ethnic_category}} soup, featuring fresh {{food.ingredient}} and an aromatic blend of traditional spices.","A robust {{food.adjective}} stew featuring {{food.ethnic_category}} flavors, loaded with {{food.adjective}} meat, {{food.adjective}} vegetables, and a {{food.adjective}}, {{food.adjective}} broth.","A simple {{food.fruit}} pie. No fancy stuff. Just pie.","A slow-roasted {{animal.bird}} with a {{food.adjective}}, {{food.adjective}} exterior. Stuffed with {{food.fruit}} and covered in {{food.fruit}} sauce. Sides with {{food.vegetable}} puree and wild {{food.vegetable}}.","A special {{color.human}} {{food.ingredient}} from {{location.country}}. To support the strong flavor it is sided with a tablespoon of {{food.spice}}.","A succulent {{food.meat}} steak, encased in a {{food.adjective}} {{food.spice}} crust, served with a side of {{food.spice}} mashed {{food.vegetable}}.","An exquisite {{food.meat}} roast, infused with the essence of {{food.fruit}}, slow-roasted to bring out its natural flavors and served with a side of creamy {{food.vegetable}}","Baked {{food.ingredient}}-stuffed {{food.meat}}, seasoned with {{food.spice}} and {{food.adjective}} herbs, accompanied by roasted {{food.vegetable}} medley.","Crispy fried {{food.meat}} bites, seasoned with {{food.spice}} and served with a tangy {{food.fruit}} dipping sauce.","Fresh mixed greens tossed with {{food.spice}}-rubbed {{food.meat}}, {{food.vegetable}}, and a light dressing.","Fresh {{food.ingredient}} with a pinch of {{food.spice}}, topped by a caramelized {{food.fruit}} with whipped cream","Grilled {{food.meat}} kebabs, marinated in {{food.ethnic_category}} spices and served with a fresh {{food.vegetable}} and {{food.fruit}} salad.","Hearty {{food.ingredient}} and {{food.meat}} stew, slow-cooked with {{food.spice}} and {{food.vegetable}} for a comforting, flavorful meal.","Juicy {{food.meat}}, grilled to your liking and drizzled with a bold {{food.spice}} sauce, served alongside roasted {{food.vegetable}}.","Our {{food.adjective}} {{food.meat}}, slow-cooked to perfection, accompanied by steamed {{food.vegetable}} and a rich, savory gravy.","Tender {{food.meat}} skewers, glazed with a sweet and tangy {{food.fruit}} sauce, served over a bed of fragrant jasmine rice.","Tenderly braised {{food.meat}} in a rich {{food.spice}} and {{food.vegetable}} sauce, served with a side of creamy {{food.vegetable}}.","Three {{food.ingredient}} with {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}} and {{food.ingredient}}. With a side of baked {{food.fruit}}, and your choice of {{food.ingredient}} or {{food.ingredient}}.",'{{number.int({"min":1, "max":99})}}-day aged {{food.meat}} steak, with choice of {{number.int({"min":2, "max":4})}} sides.'],dish:["California maki","Peking duck","Philadelphia maki","arepas","barbecue ribs","bruschette with tomato","bunny chow","caesar salad","caprese salad","cauliflower penne","cheeseburger","chicken fajitas","chicken milanese","chicken parm","chicken wings","chilli con carne","ebiten maki","fettuccine alfredo","fish and chips","french fries with sausages","french toast","hummus","katsu curry","kebab","lasagne","linguine with clams","massaman curry","meatballs with sauce","mushroom risotto","pappardelle alla bolognese","pasta and beans","pasta carbonara","pasta with tomato and basil","pho","pierogi","pizza","poke","pork belly buns","pork sausage roll","poutine","ricotta stuffed ravioli","risotto with seafood","salmon nigiri","scotch eggs","seafood paella","som tam","souvlaki","stinky tofu","sushi","tacos","teriyaki chicken donburi","tiramis\xf9","tuna sashimi","vegetable soup"],dish_pattern:["{{food.adjective}} {{food.ethnic_category}} stew","{{food.adjective}} {{food.meat}} with {{food.vegetable}}","{{food.ethnic_category}} {{food.ingredient}} soup","{{food.fruit}} and {{food.fruit}} tart","{{food.fruit}} pie","{{food.fruit}}-glazed {{food.meat}} skewers","{{food.fruit}}-infused {{food.meat}} roast","{{food.ingredient}} and {{food.meat}} pie","{{food.ingredient}}-infused {{food.meat}}","{{food.meat}} steak","{{food.meat}} with {{food.fruit}} sauce","{{food.spice}}-crusted {{food.meat}}","{{food.spice}}-rubbed {{food.meat}} salad","{{food.vegetable}} salad","{{person.first_name.generic}}'s special {{food.ingredient}}"],ethnic_category:["Ainu","Albanian","American","Andhra","Anglo-Indian","Arab","Argentine","Armenian","Assyrian","Awadhi","Azerbaijani","Balochi","Bangladeshi","Bashkir","Belarusian","Bengali","Berber","Brazilian","British","Buddhist","Bulgarian","Cajun","Cantonese","Caribbean","Chechen","Chinese","Chinese Islamic","Circassian","Crimean Tatar","Cypriot","Czech","Danish","Egyptian","English","Eritrean","Estonian","Ethiopian","Filipino","French","Georgian","German","Goan","Goan Catholic","Greek","Gujarati","Hyderabad","Indian","Indian Chinese","Indian Singaporean","Indonesian","Inuit","Irish","Italian","Italian-American","Jamaican","Japanese","Jewish - Israeli","Karnataka","Kazakh","Keralite","Korean","Kurdish","Laotian","Latvian","Lebanese","Lithuanian","Louisiana Creole","Maharashtrian","Malay","Malaysian Chinese","Malaysian Indian","Mangalorean","Mediterranean","Mennonite","Mexican","Mordovian","Mughal","Native American","Nepalese","New Mexican","Odia","Pakistani","Parsi","Pashtun","Pennsylvania Dutch","Peranakan","Persian","Peruvian","Polish","Portuguese","Punjabi","Qu\xe9b\xe9cois","Rajasthani","Romani","Romanian","Russian","Sami","Serbian","Sindhi","Slovak","Slovenian","Somali","South Indian","Soviet","Spanish","Sri Lankan","Taiwanese","Tamil","Tatar","Texan","Thai","Turkish","Udupi","Ukrainian","Vietnamese","Yamal","Zambian","Zanzibari"],fruit:["apple","apricot","aubergine","avocado","banana","berry","blackberry","blood orange","blueberry","bush tomato","butternut pumpkin","cantaloupe","cavalo","cherry","corella pear","cranberry","cumquat","currant","custard apple","custard apples daikon","date","dragonfruit","dried apricot","elderberry","feijoa","fig","fingerlime","goji berry","grape","grapefruit","guava","honeydew melon","incaberry","jarrahdale pumpkin","juniper berry","kiwi fruit","kiwiberry","lemon","lime","longan","loquat","lychee","mandarin","mango","mangosteen","melon","mulberry","nashi pear","nectarine","olive","orange","papaw","papaya","passionfruit","peach","pear","pineapple","plum","pomegranate","prune","rockmelon","snowpea","sprout","starfruit","strawberry","sultana","tangelo","tomato","watermelon"],ingredient:["achacha","adzuki beans","agar","agave syrup","ajowan seed","albacore tuna","alfalfa","allspice","almond oil","almonds","amaranth","amchur","anchovies","aniseed","annatto seed","apple cider vinegar","apple juice","apple juice concentrate","apples","apricots","arborio rice","arrowroot","artichoke","arugula","asafoetida","asian greens","asian noodles","asparagus","aubergine","avocado","avocado oil","avocado spread","bacon","baking powder","baking soda","balsamic vinegar","bamboo shoots","banana","barberry","barley","barramundi","basil basmati rice","bay leaves","bean shoots","bean sprouts","beans","beef","beef stock","beetroot","berries","besan","black eyed beans","blackberries","blood oranges","blue cheese","blue eye trevalla","blue swimmer crab","blueberries","bocconcini","bok choy","bonito flakes","bonza","borlotti beans","bran","brazil nut","bread","brie","broccoli","broccolini","brown flour","brown mushrooms","brown rice","brown rice vinegar","brussels sprouts","buckwheat","buckwheat flour","buckwheat noodles","bulghur","bush tomato","butter","butter beans","buttermilk","butternut lettuce","butternut pumpkin","cabbage","cacao","cake","calamari","camellia tea oil","camembert","camomile","candle nut","cannellini beans","canola oil","cantaloupe","capers","capsicum","caraway seed","cardamom","carob carrot","carrot","cashews","cassia bark","cauliflower","cavalo","cayenne","celery","celery seed","cheddar","cherries","chestnut","chia seeds","chicken","chicken stock","chickory","chickpea","chilli pepper","chinese cabbage","chinese five spice","chives","choy sum","cinnamon","clams","cloves","cocoa powder","coconut","coconut oil","coconut water","coffee","common cultivated mushrooms","corella pear","coriander leaves","coriander seed","corn oil","corn syrup","corn tortilla","cornichons","cornmeal","cos lettuce","cottage cheese","cous cous","crabs","cranberry","cream","cream cheese","cucumber","cumin","cumquat","currants","curry leaves","curry powder","custard apples","dandelion","dark chocolate","dashi","dates","dill","dragonfruit","dried apricots","dried chinese broccoli","duck","edam","edamame","eggplant","eggs","elderberry","endive","english spinach","enoki mushrooms","extra virgin olive oil","farmed prawns","feijoa","fennel","fennel seeds","fenugreek","feta","figs","file powder","fingerlime","fish sauce","fish stock","flat mushrooms","flathead","flaxseed","flaxseed oil","flounder","flour","freekeh","french eschallots","fresh chillies","fromage blanc","fruit","galangal","garam masala","garlic","goat cheese","goat milk","goji berry","grape seed oil","grapefruit","grapes","green beans","green pepper","green tea","green tea noodles","greenwheat freekeh","gruyere","guava","gula melaka","haloumi","ham","haricot beans","harissa","hazelnut","hijiki","hiramasa kingfish","hokkien noodles","honey","honeydew melon","horseradish","hot smoked salmon","hummus","iceberg lettuce","incaberries","jarrahdale pumpkin","jasmine rice","jelly","jerusalem artichoke","jewfish","jicama","juniper berries","kale","kangaroo","kecap manis","kenchur","kidney beans","kidneys","kiwi berries","kiwi fruit","kohlrabi","kokam","kombu","koshihikari rice","kudzu","kumera","lamb","lavender flowers","leeks","lemon","lemongrass","lentils","lettuce","licorice","lime leaves","limes","liver","lobster","longan","loquats","lotus root","lychees","macadamia nut","macadamia oil","mace","mackerel","mahi mahi","mahlab","malt vinegar","mandarins","mango","mangosteens","maple syrup","margarine","marigold","marjoram","mastic","melon","milk","milk chocolate","mint","miso","molasses","monkfish","morwong","mountain bread","mozzarella","muesli","mulberries","mullet","mung beans","mussels","mustard","mustard seed","nashi pear","nasturtium","nectarines","nori","nutmeg","nutritional yeast","nuts","oat flour","oatmeal","oats","octopus","okra","olive oil","olives","omega spread","onion","oranges","oregano","oyster mushrooms","oyster sauce","oysters","pandanus leaves","papaw","papaya","paprik","parmesan cheese","parrotfish","parsley","parsnip","passionfruit","pasta","peaches","peanuts","pear","pear juice","pears","peas","pecan nut","pecorino","pepitas","peppercorns","peppermint","peppers","persimmon","pine nut","pineapple","pinto beans","pistachio nut","plums","polenta","pomegranate","poppy seed","porcini mushrooms","pork","potato flour","potatoes","provolone","prunes","pumpkin","pumpkin seed","purple carrot","purple rice","quark","quince","quinoa","radicchio","radish","raisin","raspberry","red cabbage","red lentils","red pepper","red wine","red wine vinegar","redfish","rhubarb","rice flour","rice noodles","rice paper","rice syrup","ricemilk","ricotta","rockmelon","rose water","rosemary","rye","rye bread","safflower oil","saffron","sage","sake","salmon","sardines","sausages","scallops","sea salt","semolina","sesame oil","sesame seeds","shark","shiitake mushrooms","silverbeet","slivered almonds","smoked trout","snapper","snowpea sprouts","snowpeas","soba","sour dough bread","soy","soy beans","soy flour","soy milk","soy sauce","soymilk","spearmint","spelt","spelt bread","spinach","spring onions","sprouts","squash","squid","star anise","star fruit","starfruit","stevia","strawberries","sugar","sultanas","sun-dried tomatoes","sunflower oil","sunflower seeds","sweet chilli sauce","sweet potato","swiss chard","swordfish","szechuan pepperberry","tabasco","tahini","taleggio cheese","tamari","tamarillo","tangelo","tapioca","tapioca flour","tarragon","tea","tea oil","tempeh","thyme","tinned","tofu","tom yum","tomatoes","trout","tuna","turkey","turmeric","turnips","unbleached flour","vanilla beans","vegetable oil","vegetable spaghetti","vegetable stock","vermicelli noodles","vinegar","wakame","walnut","warehou","wasabi","water","watercress","watermelon","wattleseed","wheat","wheatgrass juice","white bread","white flour","white rice","white wine","white wine vinegar","whiting wild rice","wholegrain bread","wholemeal","wholewheat flour","william pear","yeast","yellow papaw","yellowtail kingfish","yoghurt","yogurt","zucchini"],meat:["beef","chicken","crocodile","duck","emu","goose","kangaroo","lamb","ostrich","pigeon","pork","quail","rabbit","salmon","turkey","venison"],spice:["achiote seed","ajwain seed","ajwan seed","allspice","amchoor","anise","anise star","aniseed","annatto seed","arrowroot","asafoetida","baharat","balti masala","balti stir fry mix","basil","bay leaves","bbq","caraway seed","cardamom","cassia","cayenne pepper","celery","chamomile","chervil","chilli","chilli pepper","chillies","china star","chives","cinnamon","cloves","colombo","coriander","cumin","curly leaf parsley","curry","dhansak","dill","fennel seed","fenugreek","fines herbes","five spice","french lavender","galangal","garam masala","garlic","german chamomile","ginger","green cardamom","herbes de provence","jalfrezi","jerk","kaffir leaves","korma","lavender","lemon grass","lemon pepper","lime leaves","liquorice root","mace","mango","marjoram","methi","mint","mustard","nutmeg","onion seed","orange zest","oregano","paprika","parsley","pepper","peppercorns","pimento","piri piri","poppy seed","pot marjoram","poudre de colombo","ras-el-hanout","rice paper","rogan josh","rose baie","rosemary","saffron","sage","sesame seed","spearmint","sumac","sweet basil","sweet laurel","tagine","tandoori masala","tarragon","thyme","tikka masala","turmeric","vanilla","zahtar"],vegetable:["artichoke","arugula","asian greens","asparagus","bean shoots","bean sprouts","beans","beetroot","bok choy","broccoli","broccolini","brussels sprouts","butternut lettuce","cabbage","capers","carob carrot","carrot","cauliflower","celery","chilli pepper","chinese cabbage","chives","cornichons","cos lettuce","cucumber","dried chinese broccoli","eggplant","endive","english spinach","french eschallots","fresh chillies","garlic","green beans","green pepper","hijiki","iceberg lettuce","jerusalem artichoke","jicama","kale","kohlrabi","leeks","lettuce","okra","onion","parsnip","peas","peppers","potatoes","pumpkin","purple carrot","radicchio","radish","raspberry","red cabbage","red pepper","rhubarb","snowpea sprouts","spinach","squash","sun dried tomatoes","sweet potato","swiss chard","turnips","zucchini"]},hacker:{adjective:["1080p","auxiliary","back-end","bluetooth","cross-platform","digital","haptic","mobile","multi-byte","neural","online","open-source","optical","primary","redundant","solid state","virtual","wireless"],ingverb:["backing up","bypassing","calculating","compressing","connecting","copying","generating","hacking","indexing","navigating","overriding","parsing","programming","quantifying","synthesizing","transmitting"],noun:["alarm","application","array","bandwidth","bus","capacitor","card","circuit","driver","feed","firewall","hard drive","interface","matrix","microchip","monitor","panel","pixel","port","program","protocol","sensor","system","transmitter"],phrase:["I'll {{verb}} the {{adjective}} {{abbreviation}} {{noun}}, that should {{noun}} the {{abbreviation}} {{noun}}!","If we {{verb}} the {{noun}}, we can get to the {{abbreviation}} {{noun}} through the {{adjective}} {{abbreviation}} {{noun}}!","The {{abbreviation}} {{noun}} is down, {{verb}} the {{adjective}} {{noun}} so we can {{verb}} the {{abbreviation}} {{noun}}!","Try to {{verb}} the {{abbreviation}} {{noun}}, maybe it will {{verb}} the {{adjective}} {{noun}}!","Use the {{adjective}} {{abbreviation}} {{noun}}, then you can {{verb}} the {{adjective}} {{noun}}!","We need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!","You can't {{verb}} the {{noun}} without {{ingverb}} the {{adjective}} {{abbreviation}} {{noun}}!","{{ingverb}} the {{noun}} won't do anything, we need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!"],verb:["back up","bypass","calculate","compress","connect","copy","generate","hack","index","input","navigate","override","parse","program","quantify","reboot","synthesize","transmit"]},internet:{domain_suffix:["com","biz","info","name","net","org"],example_email:["example.org","example.com","example.net"],free_email:["gmail.com","yahoo.com","hotmail.com"]},location:{building_number:["#####","####","###"],city_name:["Abilene","Akron","Alafaya","Alameda","Albany","Albuquerque","Alexandria","Alhambra","Aliso Viejo","Allen","Allentown","Aloha","Alpharetta","Altadena","Altamonte Springs","Altoona","Amarillo","Ames","Anaheim","Anchorage","Anderson","Ankeny","Ann Arbor","Annandale","Antelope","Antioch","Apex","Apopka","Apple Valley","Appleton","Arcadia","Arden-Arcade","Arecibo","Arlington","Arlington Heights","Arvada","Ashburn","Asheville","Aspen Hill","Atascocita","Athens-Clarke County","Atlanta","Attleboro","Auburn","Augusta-Richmond County","Aurora","Austin","Avondale","Azusa","Bakersfield","Baldwin Park","Baltimore","Barnstable Town","Bartlett","Baton Rouge","Battle Creek","Bayamon","Bayonne","Baytown","Beaumont","Beavercreek","Beaverton","Bedford","Bel Air South","Bell Gardens","Belleville","Bellevue","Bellflower","Bellingham","Bend","Bentonville","Berkeley","Berwyn","Bethesda","Bethlehem","Billings","Biloxi","Binghamton","Birmingham","Bismarck","Blacksburg","Blaine","Bloomington","Blue Springs","Boca Raton","Boise City","Bolingbrook","Bonita Springs","Bossier City","Boston","Bothell","Boulder","Bountiful","Bowie","Bowling Green","Boynton Beach","Bozeman","Bradenton","Brandon","Brentwood","Bridgeport","Bristol","Brockton","Broken Arrow","Brookhaven","Brookline","Brooklyn Park","Broomfield","Brownsville","Bryan","Buckeye","Buena Park","Buffalo","Buffalo Grove","Burbank","Burien","Burke","Burleson","Burlington","Burnsville","Caguas","Caldwell","Camarillo","Cambridge","Camden","Canton","Cape Coral","Carlsbad","Carmel","Carmichael","Carolina","Carrollton","Carson","Carson City","Cary","Casa Grande","Casas Adobes","Casper","Castle Rock","Castro Valley","Catalina Foothills","Cathedral City","Catonsville","Cedar Hill","Cedar Park","Cedar Rapids","Centennial","Centreville","Ceres","Cerritos","Champaign","Chandler","Chapel Hill","Charleston","Charlotte","Charlottesville","Chattanooga","Cheektowaga","Chesapeake","Chesterfield","Cheyenne","Chicago","Chico","Chicopee","Chino","Chino Hills","Chula Vista","Cicero","Cincinnati","Citrus Heights","Clarksville","Clearwater","Cleveland","Cleveland Heights","Clifton","Clovis","Coachella","Coconut Creek","Coeur d'Alene","College Station","Collierville","Colorado Springs","Colton","Columbia","Columbus","Commerce City","Compton","Concord","Conroe","Conway","Coon Rapids","Coral Gables","Coral Springs","Corona","Corpus Christi","Corvallis","Costa Mesa","Council Bluffs","Country Club","Covina","Cranston","Cupertino","Cutler Bay","Cuyahoga Falls","Cypress","Dale City","Dallas","Daly City","Danbury","Danville","Davenport","Davie","Davis","Dayton","Daytona Beach","DeKalb","DeSoto","Dearborn","Dearborn Heights","Decatur","Deerfield Beach","Delano","Delray Beach","Deltona","Denton","Denver","Des Moines","Des Plaines","Detroit","Diamond Bar","Doral","Dothan","Downers Grove","Downey","Draper","Dublin","Dubuque","Duluth","Dundalk","Dunwoody","Durham","Eagan","East Hartford","East Honolulu","East Lansing","East Los Angeles","East Orange","East Providence","Eastvale","Eau Claire","Eden Prairie","Edina","Edinburg","Edmond","El Cajon","El Centro","El Dorado Hills","El Monte","El Paso","Elgin","Elizabeth","Elk Grove","Elkhart","Ellicott City","Elmhurst","Elyria","Encinitas","Enid","Enterprise","Erie","Escondido","Euclid","Eugene","Euless","Evanston","Evansville","Everett","Fairfield","Fall River","Fargo","Farmington","Farmington Hills","Fayetteville","Federal Way","Findlay","Fishers","Flagstaff","Flint","Florence-Graham","Florin","Florissant","Flower Mound","Folsom","Fond du Lac","Fontana","Fort Collins","Fort Lauderdale","Fort Myers","Fort Pierce","Fort Smith","Fort Wayne","Fort Worth","Fountain Valley","Fountainebleau","Framingham","Franklin","Frederick","Freeport","Fremont","Fresno","Frisco","Fullerton","Gainesville","Gaithersburg","Galveston","Garden Grove","Gardena","Garland","Gary","Gastonia","Georgetown","Germantown","Gilbert","Gilroy","Glen Burnie","Glendale","Glendora","Glenview","Goodyear","Grand Forks","Grand Island","Grand Junction","Grand Prairie","Grand Rapids","Grapevine","Great Falls","Greeley","Green Bay","Greensboro","Greenville","Greenwood","Gresham","Guaynabo","Gulfport","Hacienda Heights","Hackensack","Haltom City","Hamilton","Hammond","Hampton","Hanford","Harlingen","Harrisburg","Harrisonburg","Hartford","Hattiesburg","Haverhill","Hawthorne","Hayward","Hemet","Hempstead","Henderson","Hendersonville","Hesperia","Hialeah","Hicksville","High Point","Highland","Highlands Ranch","Hillsboro","Hilo","Hoboken","Hoffman Estates","Hollywood","Homestead","Honolulu","Hoover","Houston","Huntersville","Huntington","Huntington Beach","Huntington Park","Huntsville","Hutchinson","Idaho Falls","Independence","Indianapolis","Indio","Inglewood","Iowa City","Irondequoit","Irvine","Irving","Jackson","Jacksonville","Janesville","Jefferson City","Jeffersonville","Jersey City","Johns Creek","Johnson City","Joliet","Jonesboro","Joplin","Jupiter","Jurupa Valley","Kalamazoo","Kannapolis","Kansas City","Kearny","Keller","Kendale Lakes","Kendall","Kenner","Kennewick","Kenosha","Kent","Kentwood","Kettering","Killeen","Kingsport","Kirkland","Kissimmee","Knoxville","Kokomo","La Crosse","La Habra","La Mesa","La Mirada","Lacey","Lafayette","Laguna Niguel","Lake Charles","Lake Elsinore","Lake Forest","Lake Havasu City","Lake Ridge","Lakeland","Lakeville","Lakewood","Lancaster","Lansing","Laredo","Largo","Las Cruces","Las Vegas","Lauderhill","Lawrence","Lawton","Layton","League City","Lee's Summit","Leesburg","Lehi","Lehigh Acres","Lenexa","Levittown","Lewisville","Lexington-Fayette","Lincoln","Linden","Little Rock","Littleton","Livermore","Livonia","Lodi","Logan","Lombard","Lompoc","Long Beach","Longmont","Longview","Lorain","Los Angeles","Louisville/Jefferson County","Loveland","Lowell","Lubbock","Lynchburg","Lynn","Lynwood","Macon-Bibb County","Madera","Madison","Malden","Manchester","Manhattan","Mansfield","Manteca","Maple Grove","Margate","Maricopa","Marietta","Marysville","Mayaguez","McAllen","McKinney","McLean","Medford","Melbourne","Memphis","Menifee","Mentor","Merced","Meriden","Meridian","Mesa","Mesquite","Metairie","Methuen Town","Miami","Miami Beach","Miami Gardens","Middletown","Midland","Midwest City","Milford","Millcreek","Milpitas","Milwaukee","Minneapolis","Minnetonka","Minot","Miramar","Mishawaka","Mission","Mission Viejo","Missoula","Missouri City","Mobile","Modesto","Moline","Monroe","Montebello","Monterey Park","Montgomery","Moore","Moreno Valley","Morgan Hill","Mount Pleasant","Mount Prospect","Mount Vernon","Mountain View","Muncie","Murfreesboro","Murray","Murrieta","Nampa","Napa","Naperville","Nashua","Nashville-Davidson","National City","New Bedford","New Braunfels","New Britain","New Brunswick","New Haven","New Orleans","New Rochelle","New York","Newark","Newport Beach","Newport News","Newton","Niagara Falls","Noblesville","Norfolk","Normal","Norman","North Bethesda","North Charleston","North Highlands","North Las Vegas","North Lauderdale","North Little Rock","North Miami","North Miami Beach","North Port","North Richland Hills","Norwalk","Novato","Novi","O'Fallon","Oak Lawn","Oak Park","Oakland","Oakland Park","Ocala","Oceanside","Odessa","Ogden","Oklahoma City","Olathe","Olympia","Omaha","Ontario","Orange","Orem","Orland Park","Orlando","Oro Valley","Oshkosh","Overland Park","Owensboro","Oxnard","Palatine","Palm Bay","Palm Beach Gardens","Palm Coast","Palm Desert","Palm Harbor","Palm Springs","Palmdale","Palo Alto","Paradise","Paramount","Parker","Parma","Pasadena","Pasco","Passaic","Paterson","Pawtucket","Peabody","Pearl City","Pearland","Pembroke Pines","Pensacola","Peoria","Perris","Perth Amboy","Petaluma","Pflugerville","Pharr","Philadelphia","Phoenix","Pico Rivera","Pine Bluff","Pine Hills","Pinellas Park","Pittsburg","Pittsburgh","Pittsfield","Placentia","Plainfield","Plano","Plantation","Pleasanton","Plymouth","Pocatello","Poinciana","Pomona","Pompano Beach","Ponce","Pontiac","Port Arthur","Port Charlotte","Port Orange","Port St. Lucie","Portage","Porterville","Portland","Portsmouth","Potomac","Poway","Providence","Provo","Pueblo","Quincy","Racine","Raleigh","Rancho Cordova","Rancho Cucamonga","Rancho Palos Verdes","Rancho Santa Margarita","Rapid City","Reading","Redding","Redlands","Redmond","Redondo Beach","Redwood City","Reno","Renton","Reston","Revere","Rialto","Richardson","Richland","Richmond","Rio Rancho","Riverside","Riverton","Riverview","Roanoke","Rochester","Rochester Hills","Rock Hill","Rockford","Rocklin","Rockville","Rockwall","Rocky Mount","Rogers","Rohnert Park","Rosemead","Roseville","Roswell","Round Rock","Rowland Heights","Rowlett","Royal Oak","Sacramento","Saginaw","Salem","Salina","Salinas","Salt Lake City","Sammamish","San Angelo","San Antonio","San Bernardino","San Bruno","San Buenaventura (Ventura)","San Clemente","San Diego","San Francisco","San Jacinto","San Jose","San Juan","San Leandro","San Luis Obispo","San Marcos","San Mateo","San Rafael","San Ramon","San Tan Valley","Sandy","Sandy Springs","Sanford","Santa Ana","Santa Barbara","Santa Clara","Santa Clarita","Santa Cruz","Santa Fe","Santa Maria","Santa Monica","Santa Rosa","Santee","Sarasota","Savannah","Sayreville","Schaumburg","Schenectady","Scottsdale","Scranton","Seattle","Severn","Shawnee","Sheboygan","Shoreline","Shreveport","Sierra Vista","Silver Spring","Simi Valley","Sioux City","Sioux Falls","Skokie","Smyrna","Somerville","South Bend","South Gate","South Hill","South Jordan","South San Francisco","South Valley","South Whittier","Southaven","Southfield","Sparks","Spokane","Spokane Valley","Spring","Spring Hill","Spring Valley","Springdale","Springfield","St. Charles","St. Clair Shores","St. Cloud","St. George","St. Joseph","St. Louis","St. Louis Park","St. Paul","St. Peters","St. Petersburg","Stamford","State College","Sterling Heights","Stillwater","Stockton","Stratford","Strongsville","Suffolk","Sugar Land","Summerville","Sunnyvale","Sunrise","Sunrise Manor","Surprise","Syracuse","Tacoma","Tallahassee","Tamarac","Tamiami","Tampa","Taunton","Taylor","Taylorsville","Temecula","Tempe","Temple","Terre Haute","Texas City","The Hammocks","The Villages","The Woodlands","Thornton","Thousand Oaks","Tigard","Tinley Park","Titusville","Toledo","Toms River","Tonawanda","Topeka","Torrance","Town 'n' Country","Towson","Tracy","Trenton","Troy","Trujillo Alto","Tuckahoe","Tucson","Tulare","Tulsa","Turlock","Tuscaloosa","Tustin","Twin Falls","Tyler","Union City","University","Upland","Urbana","Urbandale","Utica","Vacaville","Valdosta","Vallejo","Vancouver","Victoria","Victorville","Vineland","Virginia Beach","Visalia","Vista","Waco","Waipahu","Waldorf","Walnut Creek","Waltham","Warner Robins","Warren","Warwick","Washington","Waterbury","Waterloo","Watsonville","Waukegan","Waukesha","Wauwatosa","Wellington","Wesley Chapel","West Allis","West Babylon","West Covina","West Des Moines","West Hartford","West Haven","West Jordan","West Lafayette","West New York","West Palm Beach","West Sacramento","West Seneca","West Valley City","Westfield","Westland","Westminster","Weston","Weymouth Town","Wheaton","White Plains","Whittier","Wichita","Wichita Falls","Wilmington","Wilson","Winston-Salem","Woodbury","Woodland","Worcester","Wylie","Wyoming","Yakima","Yonkers","Yorba Linda","York","Youngstown","Yuba City","Yucaipa","Yuma"],city_pattern:["{{location.city_prefix}} {{person.first_name.generic}}{{location.city_suffix}}","{{location.city_prefix}} {{person.first_name.generic}}","{{person.first_name.generic}}{{location.city_suffix}}","{{person.last_name.generic}}{{location.city_suffix}}","{{location.city_name}}"],city_prefix:["North","East","West","South","New","Lake","Port","Fort"],city_suffix:["town","ton","land","ville","berg","burgh","boro","borough","bury","view","port","mouth","stad","stead","furt","chester","cester","fort","field","haven","side","shire","worth"],country:["Afghanistan","Aland Islands","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bonaire, Sint Eustatius and Saba","Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory (Chagos Archipelago)","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo","Cook Islands","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Curacao","Cyprus","Czechia","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Faroe Islands","Falkland Islands (Malvinas)","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Holy See (Vatican City State)","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Democratic People's Republic of Korea","Republic of Korea","Kuwait","Kyrgyz Republic","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macao","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saint Barthelemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard & Jan Mayen Islands","Sweden","Switzerland","Syrian Arab Republic","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Virgin Islands, British","Virgin Islands, U.S.","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"],county:["Adams County","Calhoun County","Carroll County","Clark County","Clay County","Crawford County","Douglas County","Fayette County","Franklin County","Grant County","Greene County","Hamilton County","Hancock County","Henry County","Jackson County","Jefferson County","Johnson County","Lake County","Lawrence County","Lee County","Lincoln County","Logan County","Madison County","Marion County","Marshall County","Monroe County","Montgomery County","Morgan County","Perry County","Pike County","Polk County","Scott County","Union County","Warren County","Washington County","Wayne County","Avon","Bedfordshire","Berkshire","Borders","Buckinghamshire","Cambridgeshire","Central","Cheshire","Cleveland","Clwyd","Cornwall","County Antrim","County Armagh","County Down","County Fermanagh","County Londonderry","County Tyrone","Cumbria","Derbyshire","Devon","Dorset","Dumfries and Galloway","Durham","Dyfed","East Sussex","Essex","Fife","Gloucestershire","Grampian","Greater Manchester","Gwent","Gwynedd County","Hampshire","Herefordshire","Hertfordshire","Highlands and Islands","Humberside","Isle of Wight","Kent","Lancashire","Leicestershire","Lincolnshire","Lothian","Merseyside","Mid Glamorgan","Norfolk","North Yorkshire","Northamptonshire","Northumberland","Nottinghamshire","Oxfordshire","Powys","Rutland","Shropshire","Somerset","South Glamorgan","South Yorkshire","Staffordshire","Strathclyde","Suffolk","Surrey","Tayside","Tyne and Wear","Warwickshire","West Glamorgan","West Midlands","West Sussex","West Yorkshire","Wiltshire","Worcestershire"],direction:{cardinal:["North","East","South","West"],cardinal_abbr:["N","E","S","W"],ordinal:["Northeast","Northwest","Southeast","Southwest"],ordinal_abbr:["NE","NW","SE","SW"]},postcode:["#####","#####-####"],secondary_address:["Apt. ###","Suite ###"],state:["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],state_abbr:["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"],street_address:{normal:"{{location.buildingNumber}} {{location.street}}",full:"{{location.buildingNumber}} {{location.street}} {{location.secondaryAddress}}"},street_name:["10th Street","11th Street","12th Street","13th Street","14th Street","15th Street","16th Street","1st Avenue","1st Street","2nd Avenue","2nd Street","3rd Avenue","3rd Street","4th Avenue","4th Street","5th Avenue","5th Street","6th Avenue","6th Street","7th Avenue","7th Street","8th Avenue","8th Street","9th Street","A Street","Abbey Road","Adams Avenue","Adams Street","Airport Road","Albany Road","Albert Road","Albion Street","Alexandra Road","Alfred Street","Alma Street","Ash Close","Ash Grove","Ash Road","Ash Street","Aspen Close","Atlantic Avenue","Avenue Road","Back Lane","Baker Street","Balmoral Road","Barn Close","Barton Road","Bath Road","Bath Street","Bay Street","Beach Road","Bedford Road","Beech Close","Beech Drive","Beech Grove","Beech Road","Beechwood Avenue","Bell Lane","Belmont Road","Birch Avenue","Birch Close","Birch Grove","Birch Road","Blind Lane","Bluebell Close","Boundary Road","Bramble Close","Bramley Close","Bridge Road","Bridge Street","Broad Lane","Broad Street","Broadway","Broadway Avenue","Broadway Street","Brook Lane","Brook Road","Brook Street","Brookside","Buckingham Road","Cambridge Street","Canal Street","Castle Close","Castle Lane","Castle Road","Castle Street","Cavendish Road","Cedar Avenue","Cedar Close","Cedar Grove","Cedar Road","Cedar Street","Cemetery Road","Center Avenue","Center Road","Center Street","Central Avenue","Central Street","Chapel Close","Chapel Hill","Chapel Road","Chapel Street","Charles Street","Cherry Close","Cherry Street","Cherry Tree Close","Chester Road","Chestnut Close","Chestnut Drive","Chestnut Grove","Chestnut Street","Church Avenue","Church Close","Church Hill","Church Lane","Church Path","Church Road","Church Street","Church View","Church Walk","Claremont Road","Clarence Road","Clarence Street","Clarendon Road","Clark Street","Clay Lane","Cleveland Street","Cliff Road","Clifton Road","Clinton Street","College Avenue","College Street","Columbia Avenue","Commerce Street","Commercial Road","Commercial Street","Common Lane","Coronation Avenue","Coronation Road","County Line Road","County Road","Court Street","Cow Lane","Crescent Road","Cromwell Road","Cross Lane","Cross Street","Crown Street","Cumberland Street","Dale Street","Dark Lane","Davis Street","Depot Street","Derby Road","Derwent Close","Devonshire Road","Division Street","Douglas Road","Duke Street","E 10th Street","E 11th Street","E 12th Street","E 14th Street","E 1st Street","E 2nd Street","E 3rd Street","E 4th Avenue","E 4th Street","E 5th Street","E 6th Avenue","E 6th Street","E 7th Street","E 8th Street","E 9th Street","E Bridge Street","E Broad Street","E Broadway","E Broadway Street","E Cedar Street","E Center Street","E Central Avenue","E Church Street","E Elm Street","E Franklin Street","E Front Street","E Grand Avenue","E High Street","E Jackson Street","E Jefferson Street","E Main","E Main Street","E Maple Street","E Market Street","E North Street","E Oak Street","E Park Avenue","E Pine Street","E River Road","E South Street","E State Street","E Union Street","E Walnut Street","E Washington Avenue","E Washington Street","E Water Street","East Avenue","East Road","East Street","Edward Street","Elm Close","Elm Grove","Elm Road","Elm Street","Euclid Avenue","Fairfield Road","Farm Close","Ferry Road","Field Close","Field Lane","First Avenue","First Street","Fore Street","Forest Avenue","Forest Road","Fourth Avenue","Franklin Avenue","Franklin Road","Franklin Street","Front Street","Frontage Road","Garden Close","Garden Street","George Street","Gladstone Road","Glebe Close","Gloucester Road","Gordon Road","Gordon Street","Grand Avenue","Grange Avenue","Grange Close","Grange Road","Grant Street","Green Close","Green Lane","Green Street","Greenville Road","Greenway","Greenwood Road","Grove Lane","Grove Road","Grove Street","Hall Lane","Hall Street","Harrison Avenue","Harrison Street","Hawthorn Avenue","Hawthorn Close","Hazel Close","Hazel Grove","Heath Road","Heather Close","Henry Street","Heron Close","Hickory Street","High Road","High Street","Highfield Avenue","Highfield Close","Highfield Road","Highland Avenue","Hill Road","Hill Street","Hillside","Hillside Avenue","Hillside Close","Hillside Road","Holly Close","Honeysuckle Close","Howard Road","Howard Street","Jackson Avenue","Jackson Street","James Street","Jefferson Avenue","Jefferson Street","Johnson Street","Jubilee Close","Juniper Close","Kent Road","Kestrel Close","King Street","King's Road","Kingfisher Close","Kings Highway","Kingsway","Laburnum Grove","Lafayette Street","Lake Avenue","Lake Drive","Lake Road","Lake Street","Lancaster Road","Lansdowne Road","Larch Close","Laurel Close","Lawrence Street","Lee Street","Liberty Street","Lime Grove","Lincoln Avenue","Lincoln Highway","Lincoln Road","Lincoln Street","Locust Street","Lodge Close","Lodge Lane","London Road","Long Lane","Low Road","Madison Avenue","Madison Street","Main","Main Avenue","Main Road","Main Street","Main Street E","Main Street N","Main Street S","Main Street W","Manchester Road","Manor Close","Manor Drive","Manor Gardens","Manor Road","Manor Way","Maple Avenue","Maple Close","Maple Drive","Maple Road","Maple Street","Market Place","Market Square","Market Street","Marlborough Road","Marsh Lane","Martin Luther King Boulevard","Martin Luther King Drive","Martin Luther King Jr Boulevard","Mary Street","Mayfield Road","Meadow Close","Meadow Drive","Meadow Lane","Meadow View","Meadow Way","Memorial Drive","Middle Street","Mill Close","Mill Lane","Mill Road","Mill Street","Milton Road","Milton Street","Monroe Street","Moor Lane","Moss Lane","Mount Pleasant","Mount Street","Mulberry Street","N 1st Street","N 2nd Street","N 3rd Street","N 4th Street","N 5th Street","N 6th Street","N 7th Street","N 8th Street","N 9th Street","N Bridge Street","N Broad Street","N Broadway","N Broadway Street","N Cedar Street","N Center Street","N Central Avenue","N Chestnut Street","N Church Street","N College Street","N Court Street","N Division Street","N East Street","N Elm Street","N Franklin Street","N Front Street","N Harrison Street","N High Street","N Jackson Street","N Jefferson Street","N Lincoln Street","N Locust Street","N Main","N Main Avenue","N Main Street","N Maple Street","N Market Street","N Monroe Street","N Oak Street","N Park Street","N Pearl Street","N Pine Street","N Poplar Street","N Railroad Street","N State Street","N Union Street","N Walnut Street","N Washington Avenue","N Washington Street","N Water Street","Nelson Road","Nelson Street","New Lane","New Road","New Street","Newton Road","Nightingale Close","Norfolk Road","North Avenue","North Lane","North Road","North Street","Northfield Road","Oak Avenue","Oak Drive","Oak Lane","Oak Road","Oak Street","Oakfield Road","Oaklands","Old Lane","Old Military Road","Old Road","Old State Road","Orchard Drive","Orchard Lane","Orchard Road","Orchard Street","Oxford Road","Oxford Street","Park Avenue","Park Crescent","Park Drive","Park Lane","Park Place","Park Road","Park Street","Park View","Parkside","Pearl Street","Pennsylvania Avenue","Pine Close","Pine Grove","Pine Street","Pinfold Lane","Pleasant Street","Poplar Avenue","Poplar Close","Poplar Road","Poplar Street","Post Road","Pound Lane","Princes Street","Princess Street","Priory Close","Priory Road","Prospect Avenue","Prospect Place","Prospect Road","Prospect Street","Quarry Lane","Quarry Road","Queen's Road","Railroad Avenue","Railroad Street","Railway Street","Rectory Close","Rectory Lane","Richmond Close","Richmond Road","Ridge Road","River Road","River Street","Riverside","Riverside Avenue","Riverside Drive","Roman Road","Roman Way","Rowan Close","Russell Street","S 10th Street","S 14th Street","S 1st Avenue","S 1st Street","S 2nd Street","S 3rd Street","S 4th Street","S 5th Street","S 6th Street","S 7th Street","S 8th Street","S 9th Street","S Bridge Street","S Broad Street","S Broadway","S Broadway Street","S Center Street","S Central Avenue","S Chestnut Street","S Church Street","S College Street","S Division Street","S East Street","S Elm Street","S Franklin Street","S Front Street","S Grand Avenue","S High Street","S Jackson Street","S Jefferson Street","S Lincoln Street","S Main","S Main Avenue","S Main Street","S Maple Street","S Market Street","S Mill Street","S Monroe Street","S Oak Street","S Park Street","S Pine Street","S Railroad Street","S State Street","S Union Street","S Walnut Street","S Washington Avenue","S Washington Street","S Water Street","S West Street","Salisbury Road","Sandringham Road","Sandy Lane","School Close","School Lane","School Road","School Street","Second Avenue","Silver Street","Skyline Drive","Smith Street","Somerset Road","South Avenue","South Drive","South Road","South Street","South View","Spring Gardens","Spring Street","Springfield Close","Springfield Road","Spruce Street","St Andrew's Road","St Andrews Close","St George's Road","St John's Road","St Mary's Close","St Mary's Road","Stanley Road","Stanley Street","State Avenue","State Line Road","State Road","State Street","Station Road","Station Street","Stoney Lane","Sycamore Avenue","Sycamore Close","Sycamore Drive","Sycamore Street","Talbot Road","Tennyson Road","The Avenue","The Beeches","The Causeway","The Chase","The Coppice","The Copse","The Crescent","The Croft","The Dell","The Drive","The Fairway","The Glebe","The Grange","The Green","The Grove","The Hawthorns","The Lane","The Laurels","The Limes","The Maltings","The Meadows","The Mews","The Mount","The Oaks","The Orchard","The Oval","The Paddock","The Paddocks","The Poplars","The Ridgeway","The Ridings","The Rise","The Sidings","The Spinney","The Square","The Willows","The Woodlands","Third Avenue","Third Street","Tower Road","Trinity Road","Tudor Close","Union Avenue","Union Street","University Avenue","University Drive","Valley Road","Veterans Memorial Drive","Veterans Memorial Highway","Vicarage Close","Vicarage Lane","Vicarage Road","Victoria Place","Victoria Road","Victoria Street","Vine Street","W 10th Street","W 11th Street","W 12th Street","W 14th Street","W 1st Street","W 2nd Street","W 3rd Street","W 4th Avenue","W 4th Street","W 5th Street","W 6th Avenue","W 6th Street","W 7th Street","W 8th Street","W 9th Street","W Bridge Street","W Broad Street","W Broadway","W Broadway Avenue","W Broadway Street","W Center Street","W Central Avenue","W Chestnut Street","W Church Street","W Division Street","W Elm Street","W Franklin Street","W Front Street","W Grand Avenue","W High Street","W Jackson Street","W Jefferson Street","W Lake Street","W Main","W Main Street","W Maple Street","W Market Street","W Monroe Street","W North Street","W Oak Street","W Park Street","W Pine Street","W River Road","W South Street","W State Street","W Union Street","W Walnut Street","W Washington Avenue","W Washington Street","Walnut Close","Walnut Street","Warren Close","Warren Road","Washington Avenue","Washington Boulevard","Washington Road","Washington Street","Water Lane","Water Street","Waterloo Road","Waterside","Watery Lane","Waverley Road","Well Lane","Wellington Road","Wellington Street","West Avenue","West End","West Lane","West Road","West Street","West View","Western Avenue","Western Road","Westfield Road","Westgate","William Street","Willow Close","Willow Drive","Willow Grove","Willow Road","Willow Street","Windermere Road","Windmill Close","Windmill Lane","Windsor Avenue","Windsor Close","Windsor Drive","Wood Lane","Wood Street","Woodland Close","Woodland Road","Woodlands","Woodlands Avenue","Woodlands Close","Woodlands Road","Woodside","Woodside Road","Wren Close","Yew Tree Close","York Road","York Street"],street_pattern:["{{person.first_name.generic}} {{location.street_suffix}}","{{person.last_name.generic}} {{location.street_suffix}}","{{location.street_name}}"],street_suffix:["Alley","Avenue","Branch","Bridge","Brook","Brooks","Burg","Burgs","Bypass","Camp","Canyon","Cape","Causeway","Center","Centers","Circle","Circles","Cliff","Cliffs","Club","Common","Corner","Corners","Course","Court","Courts","Cove","Coves","Creek","Crescent","Crest","Crossing","Crossroad","Curve","Dale","Dam","Divide","Drive","Drives","Estate","Estates","Expressway","Extension","Extensions","Fall","Falls","Ferry","Field","Fields","Flat","Flats","Ford","Fords","Forest","Forge","Forges","Fork","Forks","Fort","Freeway","Garden","Gardens","Gateway","Glen","Glens","Green","Greens","Grove","Groves","Harbor","Harbors","Haven","Heights","Highway","Hill","Hills","Hollow","Inlet","Island","Islands","Isle","Junction","Junctions","Key","Keys","Knoll","Knolls","Lake","Lakes","Land","Landing","Lane","Light","Lights","Loaf","Lock","Locks","Lodge","Loop","Mall","Manor","Manors","Meadow","Meadows","Mews","Mill","Mills","Mission","Motorway","Mount","Mountain","Mountains","Neck","Orchard","Oval","Overpass","Park","Parks","Parkway","Parkways","Pass","Passage","Path","Pike","Pine","Pines","Place","Plain","Plains","Plaza","Point","Points","Port","Ports","Prairie","Radial","Ramp","Ranch","Rapid","Rapids","Rest","Ridge","Ridges","River","Road","Roads","Route","Row","Rue","Run","Shoal","Shoals","Shore","Shores","Skyway","Spring","Springs","Spur","Spurs","Square","Squares","Station","Stravenue","Stream","Street","Streets","Summit","Terrace","Throughway","Trace","Track","Trafficway","Trail","Tunnel","Turnpike","Underpass","Union","Unions","Valley","Valleys","Via","Viaduct","View","Views","Village","Villages","Ville","Vista","Walk","Walks","Wall","Way","Ways","Well","Wells"]},lorem:{word:["a","ab","abbas","abduco","abeo","abscido","absconditus","absens","absorbeo","absque","abstergo","absum","abundans","abutor","accedo","accendo","acceptus","accommodo","accusamus","accusantium","accusator","acer","acerbitas","acervus","acidus","acies","acquiro","acsi","ad","adamo","adaugeo","addo","adduco","ademptio","adeo","adeptio","adfectus","adfero","adficio","adflicto","adhaero","adhuc","adicio","adimpleo","adinventitias","adipisci","adipiscor","adiuvo","administratio","admiratio","admitto","admoneo","admoveo","adnuo","adopto","adsidue","adstringo","adsuesco","adsum","adulatio","adulescens","aduro","advenio","adversus","advoco","aedificium","aeger","aegre","aegrotatio","aegrus","aeneus","aequitas","aequus","aer","aestas","aestivus","aestus","aetas","aeternus","ager","aggero","aggredior","agnitio","agnosco","ago","ait","aiunt","alias","alienus","alii","alioqui","aliqua","aliquam","aliquid","alius","allatus","alo","alter","altus","alveus","amaritudo","ambitus","ambulo","amet","amicitia","amiculum","amissio","amita","amitto","amo","amor","amoveo","amplexus","amplitudo","amplus","ancilla","angelus","angulus","angustus","animadverto","animi","animus","annus","anser","ante","antea","antepono","antiquus","aperiam","aperio","aperte","apostolus","apparatus","appello","appono","appositus","approbo","apto","aptus","apud","aqua","ara","aranea","arbitro","arbor","arbustum","arca","arceo","arcesso","architecto","arcus","argentum","argumentum","arguo","arma","armarium","aro","ars","articulus","artificiose","arto","arx","ascisco","ascit","asper","asperiores","aspernatur","aspicio","asporto","assentator","assumenda","astrum","at","atavus","ater","atque","atqui","atrocitas","atrox","attero","attollo","attonbitus","auctor","auctus","audacia","audax","audentia","audeo","audio","auditor","aufero","aureus","aurum","aut","autem","autus","auxilium","avaritia","avarus","aveho","averto","baiulus","balbus","barba","bardus","basium","beatae","beatus","bellicus","bellum","bene","beneficium","benevolentia","benigne","bestia","bibo","bis","blandior","blanditiis","bonus","bos","brevis","cado","caecus","caelestis","caelum","calamitas","calcar","calco","calculus","callide","campana","candidus","canis","canonicus","canto","capillus","capio","capitulus","capto","caput","carbo","carcer","careo","caries","cariosus","caritas","carmen","carpo","carus","casso","caste","casus","catena","caterva","cattus","cauda","causa","caute","caveo","cavus","cedo","celebrer","celer","celo","cena","cenaculum","ceno","censura","centum","cerno","cernuus","certe","certus","cervus","cetera","charisma","chirographum","cibo","cibus","cicuta","cilicium","cimentarius","ciminatio","cinis","circumvenio","cito","civis","civitas","clam","clamo","claro","clarus","claudeo","claustrum","clementia","clibanus","coadunatio","coaegresco","coepi","coerceo","cogito","cognatus","cognomen","cogo","cohaero","cohibeo","cohors","colligo","collum","colo","color","coma","combibo","comburo","comedo","comes","cometes","comis","comitatus","commemoro","comminor","commodi","commodo","communis","comparo","compello","complectus","compono","comprehendo","comptus","conatus","concedo","concido","conculco","condico","conduco","confero","confido","conforto","confugo","congregatio","conicio","coniecto","conitor","coniuratio","conor","conqueror","conscendo","consectetur","consequatur","consequuntur","conservo","considero","conspergo","constans","consuasor","contabesco","contego","contigo","contra","conturbo","conventus","convoco","copia","copiose","cornu","corona","corporis","corpus","correptius","corrigo","corroboro","corrumpo","corrupti","coruscus","cotidie","crapula","cras","crastinus","creator","creber","crebro","credo","creo","creptio","crepusculum","cresco","creta","cribro","crinis","cruciamentum","crudelis","cruentus","crur","crustulum","crux","cubicularis","cubitum","cubo","cui","cuius","culpa","culpo","cultellus","cultura","cum","cumque","cunabula","cunae","cunctatio","cupiditas","cupiditate","cupio","cuppedia","cupressus","cur","cura","curatio","curia","curiositas","curis","curo","curriculum","currus","cursim","curso","cursus","curto","curtus","curvo","custodia","damnatio","damno","dapifer","debeo","debilito","debitis","decens","decerno","decet","decimus","decipio","decor","decretum","decumbo","dedecor","dedico","deduco","defaeco","defendo","defero","defessus","defetiscor","deficio","defleo","defluo","defungo","degenero","degero","degusto","deinde","delectatio","delectus","delego","deleniti","deleo","delibero","delicate","delinquo","deludo","demens","demergo","demitto","demo","demonstro","demoror","demulceo","demum","denego","denique","dens","denuncio","denuo","deorsum","depereo","depono","depopulo","deporto","depraedor","deprecator","deprimo","depromo","depulso","deputo","derelinquo","derideo","deripio","deserunt","desidero","desino","desipio","desolo","desparatus","despecto","dicta","dignissimos","distinctio","dolor","dolore","dolorem","doloremque","dolores","doloribus","dolorum","ducimus","ea","eaque","earum","eius","eligendi","enim","eos","error","esse","est","et","eum","eveniet","ex","excepturi","exercitationem","expedita","explicabo","facere","facilis","fuga","fugiat","fugit","harum","hic","id","illo","illum","impedit","in","incidunt","infit","inflammatio","inventore","ipsa","ipsam","ipsum","iste","itaque","iure","iusto","labore","laboriosam","laborum","laudantium","libero","magnam","magni","maiores","maxime","minima","minus","modi","molestiae","molestias","mollitia","nam","natus","necessitatibus","nemo","neque","nesciunt","nihil","nisi","nobis","non","nostrum","nulla","numquam","occaecati","ocer","odio","odit","officia","officiis","omnis","optio","paens","pariatur","patior","patria","patrocinor","patruus","pauci","paulatim","pauper","pax","peccatus","pecco","pecto","pectus","pecus","peior","pel","perferendis","perspiciatis","placeat","porro","possimus","praesentium","provident","quae","quaerat","quam","quas","quasi","qui","quia","quibusdam","quidem","quis","quisquam","quo","quod","quos","ratione","recusandae","reiciendis","rem","repellat","repellendus","reprehenderit","repudiandae","rerum","saepe","sapiente","sed","sequi","similique","sint","sit","socius","sodalitas","sol","soleo","solio","solitudo","solium","sollers","sollicito","solum","solus","soluta","solutio","solvo","somniculosus","somnus","sonitus","sono","sophismata","sopor","sordeo","sortitus","spargo","speciosus","spectaculum","speculum","sperno","spero","spes","spiculum","spiritus","spoliatio","sponte","stabilis","statim","statua","stella","stillicidium","stipes","stips","sto","strenuus","strues","studio","stultus","suadeo","suasoria","sub","subito","subiungo","sublime","subnecto","subseco","substantia","subvenio","succedo","succurro","sufficio","suffoco","suffragium","suggero","sui","sulum","sum","summa","summisse","summopere","sumo","sumptus","sunt","supellex","super","suppellex","supplanto","suppono","supra","surculus","surgo","sursum","suscipio","suscipit","suspendo","sustineo","suus","synagoga","tabella","tabernus","tabesco","tabgo","tabula","taceo","tactus","taedium","talio","talis","talus","tam","tamdiu","tamen","tametsi","tamisium","tamquam","tandem","tantillus","tantum","tardus","tego","temeritas","temperantia","templum","tempora","tempore","temporibus","temptatio","tempus","tenax","tendo","teneo","tener","tenetur","tenuis","tenus","tepesco","tepidus","ter","terebro","teres","terga","tergeo","tergiversatio","tergo","tergum","termes","terminatio","tero","terra","terreo","territo","terror","tersus","tertius","testimonium","texo","textilis","textor","textus","thalassinus","theatrum","theca","thema","theologus","thermae","thesaurus","thesis","thorax","thymbra","thymum","tibi","timidus","timor","titulus","tolero","tollo","tondeo","tonsor","torqueo","torrens","tot","totam","totidem","toties","totus","tracto","trado","traho","trans","tredecim","tremo","trepide","tres","tribuo","tricesimus","triduana","tripudio","tristis","triumphus","trucido","truculenter","tubineus","tui","tum","tumultus","tunc","turba","turbo","turpis","tutamen","tutis","tyrannus","uberrime","ubi","ulciscor","ullam","ullus","ulterius","ultio","ultra","umbra","umerus","umquam","una","unde","undique","universe","unus","urbanus","urbs","uredo","usitas","usque","ustilo","ustulo","usus","ut","uter","uterque","utilis","utique","utor","utpote","utrimque","utroque","utrum","uxor","vaco","vacuus","vado","vae","valde","valens","valeo","valetudo","validus","vallum","vapulus","varietas","varius","vehemens","vel","velit","velociter","velum","velut","venia","veniam","venio","ventito","ventosus","ventus","venustas","ver","verbera","verbum","vere","verecundia","vereor","vergo","veritas","veritatis","vero","versus","verto","verumtamen","verus","vesco","vesica","vesper","vespillo","vester","vestigium","vestrum","vetus","via","vicinus","vicissitudo","victoria","victus","videlicet","video","viduo","vigilo","vigor","vilicus","vilis","vilitas","villa","vinco","vinculum","vindico","vinitor","vinum","vir","virga","virgo","viridis","viriliter","virtus","vis","viscus","vita","vitae","vitiosus","vitium","vito","vivo","vix","vobis","vociferor","voco","volaticus","volo","volubilis","voluntarius","volup","voluptas","voluptate","voluptatem","voluptates","voluptatibus","voluptatum","volutabrum","volva","vomer","vomica","vomito","vorago","vorax","voro","vos","votum","voveo","vox","vulariter","vulgaris","vulgivagus","vulgo","vulgus","vulnero","vulnus","vulpes","vulticulus","xiphias"]},metadata:{title:"English",code:"en",language:"en",endonym:"English",dir:"ltr",script:"Latn"},music:{album:['"Awaken, My Love!"',"(What's The Story) Morning Glory?","- Tragedy +","13 Reasons Why (Season 3)","21st Century Breakdown","30 De Febrero","432 Hz Deep Healing","5-Star","528 Hz Meditation Music","54+1","8 Mile","808s & Heartbreak","9 To 5 And Odd Jobs","A Beautiful Lie","A Day At The Races","A Day Without Rain","A Fever You Can't Sweat Out","A Gangsta's Pain","A Gift & A Curse","A Hard Day's Night","A Head Full Of Dreams","A Kind Of Magic","A Million Ways To Murder","A Moment Apart","A Song For Every Moon","A Thousand Suns","A Winter Romance","ABBA","AI YoungBoy","AJ Tracey","Act One","After Hours","Agent Provocateur","All About You","All I Know So Far: Setlist","All Or Nothing","All Out","All Over The Place","All Stand Together","All The Lost Souls","All The Things I Never Said","All Things Must Pass","Alleen","Alright, Still","Alta Suciedad","America","American Heartbreak","American Teen","And Justice For None","Animal Songs","Another Friday Night","Anything Goes","Ao Vivo Em S\xe3o Paulo","Ao Vivo No Ibirapuera","Apricot Princess","Aqui E Agora (Ao Vivo)","Arcane League Of Legends","Ardipithecus","Aretha Now","Around The Fur","Arrival","Artist 2.0","As She Pleases","Ascend","Ashlyn","Astro Lounge","At Night, Alone.","At. Long. Last. ASAP","Atlas","Audioslave","Aura","Austin","Awake","Away From The Sun","Ayayay!","Baby On Baby","Back For Everything","Back From The Edge","Back In Black","Back To Black","Back To The Game","Bad","Bah\xeda Ducati","Baila","Barbie The Album","Battleground","Bayou Country","Bcos U Will Never B Free","Be","Be Here Now","Beautiful Mind","Beautiful Thugger Girls","Beautiful Trauma","Beauty And The Beast","Beggars Banquet","Being Funny In A Foreign Language","Berlin Lebt","Berry Is On Top","Best White Noise For Baby Sleep - Loopable With No Fade","Big Baby DRAM","Bigger, Better, Faster, More!","Billy Talent II","Black Star Elephant","Blackout","Blank Face LP","Bleach","Blizzard Of Ozz","Blonde","Blood Sugar Sex Magik","Bloom","Blowin' Your Mind!","Blu Celeste","Blue","Blue Banisters","Blue Hawaii","Blue Neighbourhood","Bluebird Days","Bobby Tarantino","Bobby Tarantino II","Bon Iver","Born Pink","Born To Run","Brand New Eyes","Break The Cycle","Breakfast In America","Breakthrough","Brett Young","Bridge Over Troubled Water","Bright: The Album","Brol","Buds","Buena Vista Social Club","Built On Glass","Bury Me At Makeout Creek","Busyhead","By The Way","CB6","CNCO","California Sunrise","Californication","Call Me Irresponsible","Calm","Camino Palmero","Camp","Caracal","Carbon Fiber Hits","Carnival","Carry On","Cartel De Santa","Certified Lover Boy","Chaaama","Chama Meu Nome","Chapter 1: Snake Oil","Chapter 2: Swamp Savant","Chapter One","Charlie's Angels","Cherry Bomb","Chief","Chocolate Factory","Chosen","Chris Brown","Christina Aguilera","Chromatica","Church","City Of Evil","Clandestino","Clouds","Coco","Collision Course","Colour Vision","Combat Rock","Come Around Sundown","Come Away With Me","Come Home The Kids Miss You","Come What(ever) May","Commando","Common Sense","Communion","Conditions","Confident","Confrontation","Control The Streets, Volume 2","Corinne Bailey Rae","Costello Music","Cottonwood","Covers, Vol. 2","Cozy Tapes Vol. 2: Too Cozy","Crash Talk","Crazy Love","Crazysexycool","Crowded House","Cruisin' With Junior H","Culture","Current Mood","DS2","Dale","Danger Days: The True Lives Of The Fabulous Killjoys","Dangerous Woman","Dangerous: The Double Album","Dark Horse","Day69","Daydream","De Fiesta","De Viaje","DeAnn","Death Race For Love","Delirium","Delta","Demidevil","Depression Cherry","Descendants","Desgenerados Mixtape","Destin","Destiny Fulfilled","Desvelado","Detroit 2","Dex Meets Dexter","Dharma","Die A Legend","Different World","Dig Your Roots","Digital Druglord","Dirt","Disclaimer I / II","Discovery","Disraeli Gears","Disumano","Dizzy Up The Girl","Don't Play That Song","Donda","Donde Quiero Estar","Doo-Wops & Hooligans","Down The Way","Dr. Feelgood","Dream Your Life Away","Dreaming Out Loud","Drip Harder","Drive","Drones","Dropped Outta College","Drowning","Dua Warna Cinta","Dulce Beat","Dusty In Memphis","Dutty Rock","Dying To Live","ENR","East Atlanta Love Letter","Editorial","Edna","El Abayarde","El Amor En Los Tiempos Del Perreo","El Camino","El Comienzo","El Dorado","El Karma","El Mal Querer","El Malo","El Trabajo Es La Suerte","El Viaje De Copperpot","Electric Ladyland","Emotion","En Tus Planes","Endless Summer Vacation","Enter The Wu-Tang (36 Chambers)","Equals (=)","Estrella","Euphoria","Europop","Evermore","Every Kingdom","Everyday Life","Evolve","Expectations","Face Yourself","Facelift","Fallin'","Fancy You","Fantas\xeda","Favourite Worst Nightmare","Fear Of The Dark","Fearless","Feel Something","Feels Like Home","Femme Fatale","Ferxxocalipsis","Fifty Shades Darker","Fifty Shades Freed","Fifty Shades Of Grey","Final (Vol.1)","Finding Beauty In Negative Spaces","Fine Line","First Impressions Of Earth","First Steps","Five Seconds Flat","Folklore","For Emma, Forever Ago","Forajido EP 1","Forever","Forever Young","Formula Of Love: O+T=<3","Free 6lack","Freudian","Frozen II","Full Moon Fever","Funhouse","Funk Wav Bounces Vol.1","Future History","FutureSex/LoveSounds","Fuzzybrain","Gallery","Gangsta's Paradise","Gemini","Gemini Rights","Generationwhy","Get A Grip","Get Up","Gettin' Old","Girl","Gladiator","Glisten","Globalization","Gloria","Glory Days","God's Project","Gold Skies","Golden","Good Evening","Good Thing","Goodbye Yellow Brick Road","Gossip Columns","Got Your Six","Graceland","Graduation","Grand Champ","Grandson, Vol. 1","Green River","Guerra","Ha*Ash Primera Fila - Hecho Realidad","Haiz","Hamilton","Happy Endings","Harry Styles","Hasta La Ra\xedz","Hatful Of Hollow","Head In The Clouds","Heard It In A Past Life","Heart Shaped World","Heartbeat City","Heartbreak On A Full Moon / Cuffing Season - 12 Days Of Christmas","Heaven Or Hell","Heaven knows","Hellbilly Deluxe","Hellboy","Help!","Her Loss","Here Comes The Cowboy","Hey World","High School Musical","High Tide In The Snake's Nest","Historias De Un Capricornio","Hndrxx","Hombres G (Devu\xe9lveme A Mi Chica)","Homerun","Homework","Hot Fuss","Hot Pink","Hot Sauce / Hello Future","Hot Space","Hotel Diablo","Houses Of The Holy","How Big, How Blue, How Beautiful","How I'm Feeling","How To Be Human","How To Save A Life","How To: Friend, Love, Freefall","Hozier","Human","Huncho Jack, Jack Huncho","Hunter Hayes","Hysteria","I Am...Sasha Fierce","I Can't Handle Change","I Met You When I Was 18. (The Playlist)","I Never Liked You","I Never Loved A Man The Way I Love You","I See You","I Think You Think Too Much Of Me","I Used To Know Her","I Used To Think I Could Fly","I'm Comin' Over","Ich & Keine Maske","If You Can Believe Your Eyes & Ears","Il Ballo Della Vita","Ill Communication","Imagination & The Misfit Kid","Imagine","Immortalized","In A Perfect World...","In Colour","In My Own Words","In Rainbows","In Return","In The Lonely Hour","Infest","Innuendo","Inter Shibuya - La Mafia","Interstellar","Is This It","It Was Written","It's Not Me, It's You","It's Only Me","Ivory","JackBoys","Jamie","Jazz","Jibrail & Iblis","Jordi","Jordin Sparks","Jose","Just As I Am","Just Cause Y'all Waited 2","Just Like You","Justified","K-12 / After School","K.I.D.S.","K.O.","K.O.B. Live","KG0516","KOD","Kane Brown","Kid A","Kid Krow","Kids See Ghosts","Kids in Love","Kinks (You Really Got Me)","Know-It-All","Konvicted","Kring","LANY","LM5","La Criatura","La Flaca","La Melodia De La Calle","La Revolucion","Lady Lady","Lady Wood","Langit Mong Bughaw","Las Que No Iban A Salir","Last Day Of Summer","Last Year Was Complicated","Layers","Layover","Lazarus","Led Zeppelin","Left Of The Middle","Leftoverture","Legends Never Die","Let's Skip To The Wedding","Let's Talk About Love","Licensed To Ill","Life In Cartoon Motion","Life Thru A Lens","Lifelines","Like..?","Lil Big Pac","Lil Boat","Lil Boat 2","Lil Boat 3.5","Lil Kiwi","Lil Pump","Limon Y Sal","Listen Without Prejudice","Little Voice","Live On Red Barn Radio I & II","Lo Que And\xe1bamos Buscando","Lofi Fruits Music 2021","London Calling","Los Campeones Del Pueblo","Los Extraterrestres","Los Favoritos 2","Lost","Lost In Love","Loud","Love Sick","Love Story","Love Stuff","Love Yourself: Tear","Lover","Luca Brasi 2: Gangsta Grillz","Lust For Life","Luv Is Rage","M!ssundaztood","Ma Fleur","Made In Lagos","Mafia Bidness","Magazines Or Novels","Mainstream Sellout","Majestic","Make It Big","Make Yourself","Making Mirrors","Mamma Mia! Here We Go Again","Man Of The Woods","Manic","Me And My Gang","Meduza","Meet The Orphans","Meet The Woo","Melim","Mellon Collie And The Infinite Sadness","Melly vs. Melvin","Memories...Do Not Open","Menagerie","Midnights","Minecraft - Volume Alpha","Minutes To Midnight","Mix Pa Llorar En Tu Cuarto","Modo Avi\xf3n","Monkey Business","Mono.","Montana","Montevallo","Moosetape","Morning View","Motivan2","Moving Pictures","Mr. Davis","Mr. Misunderstood","Mulan","Mura Masa","Music From The Edge Of Heaven","Music Of The Sun","My House","My Kinda Party","My Krazy Life","My Liver Will Handle What My Heart Can't","My Moment","My Own Lane","My Turn","My Worlds","Na Praia (Ao Vivo)","Nakamura","Nation Of Two","Navegando","Need You Now","Neon Future III","Neotheater","Never Trust A Happy Song","New English","News Of The World","Nicole","Night & Day","Nimmerland","Nimrod","Nine Track Mind","No Angel","No Me Pidas Perd\xf3n","No More Drama","No Protection","No Strings Attached","No Time To Die","Nobody Is Listening","Non Stop Erotic Cabaret","Non-Fiction","Northsbest","Nostalgia","Nostalgia, Ultra","Notes On A Conditional Form","Now Or Never","O Embaixador (Ao Vivo)","O My Heart","OK Computer","Ocean","Ocean Avenue","Ocean Eyes","Odisea","Oh My My","Oh, What A Life","On The 6","One In A Million","One More Light","One Of These Nights","Open Up And Say...Ahh!","Ordinary Man","Origins","Out Of The Blue","Over It","OzuTochi","PTSD","Pa Las Baby's Y Belikeada","Pa Que Hablen","Pa' Luego Es Tarde","Pa' Otro La 'O","Pablo Honey","Pain Is Love","Pain Is Temporary","Painting Pictures","Palmen Aus Plastik 2","Para Mi Ex","Para Siempre","Partners In Crime","Pawn Shop","Pegasus / Neon Shark VS Pegasus","Pet Sounds","Piece By Piece","Pier Pressure","Pineapple Sunrise","Piseiro 2020 Ao Vivo","Planet Pit","Plans","Play Deep","Playa Saturno","Por Primera Vez","Por Vida","Positions","Post Human: Survival Horror","Poster Girl","Prazer, Eu Sou Ferrugem (Ao Vivo)","Pretty Girls Like Trap Music","Pretty. Odd.","Prince Royce","Prisma","Prometo","Providence","Puberty 2","Punisher","Purgatory","Purple Rain","Que Bendici\xf3n","Queen Of The Clouds","Quiero Volver","R&G (Rhythm & Gangsta): The Masterpiece","Raise!","Ransom 2","Rapunzel","Rare","Re Mida","Ready To Die","Realer","Rebelde","Reclassified","Recovery","Recuerden Mi Estilo","Reggatta De Blanc","Regulate\u2026 G Funk Era","Reik","Reise, Reise","Relapse","Relaxing Piano Lullabies And Natural Sleep Aid For Baby Sleep Music","Religiously. The Album.","Replay","Results May Vary","Revenge","Revolve","Revolver","Ricky Martin","Rien 100 Rien","Ripcord","Rise And Fall, Rage And Grace","Rise Of An Empire","Robin Hood: Prince Of Thieves","Rock N Roll Jesus","Romance","Romances","Ronan","Royal Blood","Rumours","Sad Boyz 4 Life II","San Lucas","Santana World","Saturation III","Sauce Boyz","Savage Mode","Saxobeats","Scarlet","Schwarzes Herz","Seal The Deal & Let's Boogie","Section.80","Segundo Romance","Sehnsucht","Shake The Snow Globe","Shang-Chi And The Legend Of The Ten Rings: The Album","Sheer Heart Attack","Shiesty Season","Shock Value","Shoot For The Stars, Aim For The Moon","Signed Sealed And Delivered","Signos","Silent Alarm","Simplemente Gracias","Sin Bandera","Sing Me A Lullaby, My Sweet Temptation","Sinner","Sirio","Sit Still, Look Pretty","Skin","Slowhand","Smash","Smithereens","Snow Cougar","Social Cues","Some Girls","Song Hits From Holiday Inn","Songs For Dads","Songs For The Deaf","Songs For You, Truths For Me","Songs In The Key Of Life","Souled Out","Sounds Of Silence","Soy Como Quiero Ser","Speak Now","Speak Your Mind","Speakerboxxx/The Love Below","Spider-Man: Into The Spider-Verse","Split Decision","Square Up","SremmLife","Starboy","Stay +","Stay Dangerous","Staying At Tamara's","Steppenwolf","Stick Season","Still Bill","Straight Outta Compton","Strange Trails","Stronger","Suavemente","Sublime","Suck It and See","Sucker","Sue\xf1os","Sugar","Summer Forever","Summer,","Sunset Season","Sunshine On Leith","Surfer Rosa","Sweet Talker","SweetSexySavage","System Of A Down","TA13OO","Talk That Talk","Talking Heads: 77","Tangled Up","Tango In The Night","Taxi Driver","Taylor Swift","Tell Me It's Real","Ten","Ten Summoner's Tales","Terra Sem Cep (Ao Vivo)","Terral","Testing","Tha Carter III","Thank Me Later","That's Christmas To Me","The Academy","The Adventures Of Bobby Ray","The Album","The Andy Williams Christmas Album","The Aviary","The Balcony","The Battle Of Los Angeles","The Beatles (White Album)","The Beginning","The Better Life","The Big Day","The Book","The Breakfast Club","The Cars","The Colour And The Shape","The Death Of Peace Of Mind","The Diary Of Alicia Keys","The Documentary","The Emancipation Of Mimi","The Eminem Show","The End Of Everything","The Final Countdown","The Forever Story","The Foundation","The Goat","The Golden Child","The Good Parts","The Greatest Showman: Reimagined","The Green Trip","The Hardest Love","The Head And The Heart","The Human Condition","The Infamous","The Lady Killer","The Last Don II","The Lion King","The Lockdown Sessions","The London Sessions","The Lord Of The Rings: The Fellowship Of The Ring","The Lost Boy","The Magic Of Christmas / The Christmas Song","The Marshall Mathers LP","The Martin Garrix Collection","The Melodic Blue","The Mockingbird & The Crow","The Pains Of Growing","The Papercut Chronicles","The Perfect Luv Tape","The Pinkprint","The Predator","The Queen Is Dead","The ReVe Festival: Finale","The Rise And Fall Of Ziggy Stardust And The Spiders From Mars","The Rising Tied","The River","The Stone Roses","The Story Of Us","The Stranger","The Sufferer & The Witness","The Sun's Tirade","The Temptations Sing Smokey","The Time Of Our Lives","The Way It Is","The Wonderful World Of Sam Cooke","The Writing's On The Wall","The Young And The Hopeless","Therapy","Therapy Session","There Is More (Live)","There Is Nothing Left To Lose","These Things Happen","Third Eye Blind","This Is Me...Then","This Unruly Mess I've Made","Threat to Survival","Thrill Of The Chase","Time","Timelezz","To Let A Good Thing Die","To Pimp A Butterfly","Toast To Our Differences","Todos Os Cantos, Vol. 1 (Ao Vivo)","Too Hard","Torches X","Total Xanarchy","Toto IV","Toulouse Street","Tourist History","Toxicity","Tragic Kingdom","Tranquility Base Hotel & Casino","Traumazine","Traveler","Tres Hombres","Trip At Knight","Tron: Legacy","True Blue","True Colors","Trustfall","Tu Veneno Mortal","Tudo Em Paz","Ubuntu","Ugly Is Beautiful","Ultra 2021","Una Mattina","Unbroken","Uncovered","Under Pressure","Unsponsored Content","Unstoppable","Unwritten","Urban Flora","Urban Hymns","Use Your Illusion I","Veneer","Versions Of Me","Vibes","Vice Versa","Vices & Virtues","Victory","Vida","Viejo Marihuano","Visual\xedzate","Walk Away","Walk Me Home...","Watch The Throne","Wave","We Broke The Rules","We Love You Tecca","We Love You Tecca 2","Weezer (Green Album)","Welcome To The Madhouse","Westlife","What A Time To Be Alive","What Do You Think About The Car?","What Is Love?","What Makes You Country","What Separates Me From You","What You See Is What You Get / What You See Ain't Always What You Get","When It's Dark Out","When We All Fall Asleep, Where Do We Go?","Where The Light Is","While The World Was Burning","White Pony","Whitney","Who Really Cares","Who You Are","Who's Next","Wide Open","Wilder Mind","Wildfire","Willy And The Poor Boys","Wings / You Never Walk Alone","Wish","Wish You Were Here","Without Warning","Wonder","X&Y","XOXO","Y Que Quede Claro","YBN: The Mixtape","Yo Creo","You Will Regret","Youngblood","Younger Now","Youth"],artist:["$NOT","$uicideboy$","(G)I-DLE","*NSYNC","2 Chainz","21 Savage","6LACK","? & The Mysterians","A Boogie Wit da Hoodie","A Taste of Honey","A Tribe Called Quest","A-Ha","ABBA","AC/DC","AJ Tracey","ATEEZ","Ace of Base","Adele","Ado","Aerosmith","Agust D","Aitana","Al Dexter & his Troopers","Al Green","Al Jolson","Al Martino","Alan Jackson","Alannah Myles","Alec Benjamin","Alejandro Sanz","Alesso","Alfredo Olivas","Ali Gatie","Alice In Chains","Alina Baraz","All Time Low","All-4-One","All-American Rejects","Alok","America","American Quartet","Amii Stewart","Amitabh Bhattacharya","Ana Castela","Anderson .Paak","Andy Grammer","Angus & Julia Stone","Anirudh Ravichander","Anita Ward","Anitta","Anton Karas","Anuel AA","Arcade Fire","Archie Bell & The Drells","Archies","Aretha Franklin","Arizona Zervas","Armin van Buuren","Arthur Conley","Artie Shaw","Asake","Asees Kaur","Association","Atif Aslam","Audioslave","Aventura","Avril Lavigne","Aya Nakamura","B J Thomas","B.o.B","BLACKPINK","BONES","BROCKHAMPTON","BTS","Baby Keem","Bachman-Turner Overdrive","Backstreet Boys","Bad Bunny","Badshah","Bailey Zimmerman","Banda El Recodo","Barbra Streisand","Barry White","Bazzi","Bebe Rexha","Becky G","Becky Hill","Bee Gees","Ben Bernie","Ben Howard","Ben Selvin","Berlin","Bessie Smith","Bethel Music","Bette Midler","Beyonce","Bibi Blocksberg","Bibi und Tina","BigXthaPlug","Bill Doggett","Bill Haley & his Comets","Bill Withers","Billy Davis Jr","Billy Joel","Billy Paul","Billy Preston","Billy Swan","Birdy","Bizarrap","Blake Shelton","Blur","Bob Marley & The Wailers","Bob Seger","Bobby Darin","Bobby Lewis","Bobby McFerrin","Bobby Vinton","Boney M.","Bonez MC","Bonnie Tyler","Booba","Boston","BoyWithUke","Boyce Avenue","Bradley Cooper","Bread","Brent Faiyaz","Brett Young","Bring Me The Horizon","Britney Spears","Brooks & Dunn","Bruce Channel","Bruno & Marrone","Bryan Adams","Bryce Vine","Buddy Holly","Burna Boy","C. Tangana","CKay","CRO","Camilo","Capital Bra","Captain & Tennille","Cardi B","Carin Leon","Carlos Vives","Carly Simon","Carpenters","Cavetown","Celine Dion","Central Cee","Chaka Khan","Champs","Charlie Rich","Chayanne","Cheat Codes","Cher","Chic","Chicago","Chris Brown","Chris Isaak","Chris Young","Christina Aguilera","Christina Perri","Christopher Cross","Chuck Berry","Ciara","Cigarettes After Sex","Cliff Edwards (Ukelele Ike)","Cody Johnson","Colbie Caillat","Colby O'Donis","Cole Swindell","Coleman Hawkins","Contours","Coolio","Count Basie","Cris Mj","Culture Club","Cyndi Lauper","D-Block Europe","DAY6","DJ Khaled","DJ Luian","DJ Nelson","DMX","DNCE","DaVido","Dadju","Daft Punk","Dan + Shay","Daniel Powter","Danny Ocean","Darius Rucker","Dave","David Bowie","David Guetta","Daya","Dean Martin","Deee-Lite","Deep Purple","Deftones","Demi Lovato","Dennis Lloyd","Denzel Curry","Dermot Kennedy","Desiigner","Devo","Dewa 19","Dexys Midnight Runners","Diddy","Dido","Die drei !!!","Diego & Victor Hugo","Diljit Dosanjh","Dimitri Vegas & Like Mike","Dinah Shore","Dionne Warwick","Dire Straits","Disclosure","Dixie Cups","Doja Cat","Dolly Parton","Don Diablo","Don Henley","Don McLean","Don Omar","Donna Summer","Donovan","Dr. Dre","Drake","Dreamville","Dua Lipa","EMF","ENHYPEN","Earth, Wind & Fire","Ed Sheeran","Eddie Cantor","Eddie Cochran","Eddy Howard","Edgar Winter Group","Edwin Hawkins Singers","Edwin Starr","El Alfa","Eladio Carrion","Electric Light Orchestra","Elevation Worship","Ella Henderson","Ellie Goulding","Elton John","Elvis Presley","Empire of the Sun","En Vogue","Enrique Iglesias","Eslabon Armado","Ethel Waters","Etta James","Evanescence","Exile","Extreme","Faith Hill","Fall Out Boy","Fanny Brice","Farruko","Fats Domino","Fats Waller","Feid","Felix Jaehn","Fergie","Fetty Wap","Fiersa Besari","Fifth Harmony","Fine Young Cannibals","Five Finger Death Punch","Fleetwood Mac","Flo-Rida","Florence + The Machine","Flume","Foo Fighters","Foreigner","Foster The People","Four Aces","Frank Ocean","Frank Sinatra","Frankie Avalon","Frankie Valli","Fred Astaire","Freda Payne","Freddie Dredd","Freddy Fender","French Montana","Fuerza Regida","Fujii Kaze","Future","G-Eazy","Garfunkel and Oates","Gary Lewis & The Playboys","Gary Numan","Gene Autry","Gene Chandler","Gene Vincent","George Michael","George Strait","Gera MX","Ghost","Ghostemane","Gigi D'Agostino","Gladys Knight & The Pips","Glass Animals","Glee Cast","Gloria Gaynor","Godsmack","Gorillaz","Gotye","Grand Funk Railroad","Green Day","Grouplove","Grupo Firme","Grupo Marca Registrada","Gryffin","Gucci Mane","Guess Who","Gunna","Gusttavo Lima","Guy Mitchell","Gwen Stefani","Gzuz","H.E.R.","HARDY","Hailee Steinfeld","Halsey","Hans Zimmer","Harris Jayaraj","Harry Chapin","Harry James","Harry Nilsson","Harry Styles","Hayley Williams","Herb Alpert","Herman's Hermits","Hillsong UNITED","Hillsong Worship","Hollywood Undead","Honey Cone","Hoobastank","Hues Corporation","I Prevail","ITZY","IVE","Ice Cube","Ice Spice","Iggy Azalea","Imagine Dragons","Incubus","Internet Money","Isaac Hayes","J Geils Band","J. Cole","JAY-Z","JJ Lin","JP Saxe","JVKE","Jack Harlow","Jack Johnson","Jackie Wilson","Jacquees","James Arthur","James Brown","James TW","James Taylor","Jamie Foxx","Janet Jackson","Janis Joplin","Jason Aldean","Jason Mraz","Jay Chou","Jay Sean","Jay Wheeler","Jaymes Young","Jean Knight","Jeezy","Jennifer Lopez","Jennifer Warnes","Jeremih","Jeremy Zucker","Jerry Lee Lewis","Jerry Murad's Harmonicats","Jess Glynne","Jessie J","Jewel","Jimi Hendrix","Jimin","Jimmie Rodgers","Jimmy Dean","Jo Stafford","Joan Jett & The Blackhearts","Joao Gilberto","Joel Corry","John Fred & The Playboy Band","John Legend","John Mayer","John Williams","Johnnie Ray","Johnnie Taylor","Johnny Cash","Johnny Horton","Johnny Mathis","Johnny Mercer","Johnny Nash","Joji","Jon Bellion","Jonas Blue","Jonas Brothers","Joni James","Jorja Smith","Juan Gabriel","Juan Luis Guerra 4.40","Juanes","Juice Newton","Julia Michaels","Justin Bieber","Justin Quiles","KALEO","KAROL G","KAYTRANADA","KK","KSI","KYLE","Kacey Musgraves","Kane Brown","Kanye West","Karan Aujla","Kate Smith","Katy Perry","Kay Kyser","Ke$ha","Kehlani","Kelly Clarkson","Kenny Chesney","Kenny Loggins","Kenny Rogers","Kenshi Yonezu","Kenya Grace","Kevin Gates","Key Glock","Khalid","Kim Carnes","Kim Petras","Kimbra","Kina","King Gnu","Kings of Leon","Kingsmen","Kitty Kallen","Kodak Black","Kodaline","Kollegah","Kool & The Gang","Kungs","Kygo","Kylie Minogue","LE SSERAFIM","LISA","LMFAO","LUDMILLA","La Adictiva Banda San Jos\xe9 de Mesillas","La Oreja de Van Gogh","Labrinth","Lady Antebellum","Lady GaGa","Lainey Wilson","Lana Del Rey","Latto","Lauryn Hill","Lauv","League of Legends","Lee Brice","Leon Bridges","Leona Lewis","Lesley Gore","Leslie Odom Jr.","Liam Payne","Lifehouse","Lil Baby","Lil Dicky","Lil Durk","Lil Mosey","Lil Nas X","Lil Pump","Lil Skies","Lil Tjay","Lil Uzi Vert","Lil Yachty","Lil' Kim","Lil' Wayne","Lin-Manuel Miranda","Linkin Park","Lionel Richie","Lipps Inc","Lisa Loeb","Little Peggy March","Little Richard","Lofi Fruits Music","Lord Huron","Los Del Rio","Los Dos Carnales","Los Lobos","Los Temerarios","Los Tigres Del Norte","Los Tucanes De Tijuana","Lou Reed","Loud Luxury","Louis Jordan","Louis Tomlinson","Love Unlimited","Lovin' Spoonful","Luan Santana","Luciano","Luis Miguel","Luis R Conriquez","Lulu","Lunay","Lupe Fiasco","M","MAX","MC Hammer","MC Ryan SP","MKTO","Mabel","Machine Gun Kelly","Madison Beer","Madonna","Mahalini","Major Lazer","Mambo Kingz","Maneskin","Marco Antonio Sol\xeds","Margaret Whiting","Maria Becerra","Mario","Mario Lanza","Mark Ronson","Maroon 5","Marshmello","Martin Garrix","Mary Ford","Mary J Blige","Mary J. Blige","Mary Wells","Matoma","Mau y Ricky","Meek Mill","Megadeth","Melanie","Melanie Martinez","Melendi","Men At Work","Metro Boomin","Michael Bubl\xe9","Michael Jackson","Michael McDonald","Michael Sembello","Miguel","Mike Posner","Miley Cyrus","Milky Chance","Minnie Riperton","Miracle Tones","Miranda Lambert","Mohit Chauhan","Mon Laferte","Moneybagg Yo","Monsta X","Mora","Morad","Morat","Mother Mother","Motley Crue","Ms. Lauryn Hill","Mumford & Sons","Muse","Mya","Myke Towers","NCT 127","NCT DREAM","NEFFEX","Nadin Amizah","Nancy Sinatra","Nat King Cole","Nate Smith","Natti Natasha","Nayer","Neil Diamond","Neil Sedaka","Nekfeu","Nelly","New Vaudeville Band","Next","Nickelback","Nicki Minaj","Nicki Nicole","Nicky Jam","Nina Simone","Ninho","Nipsey Hussle","Nirvana","Niska","No Doubt","Norah Jones","Normani","OMI","ONE OK ROCK","Oasis","Official HIGE DANdism","Offset","Old Dominion","Oliver Heldens","Olivia Rodrigo","Omah Lay","One Direction","Otis Redding","OutKast","Owl City","P Diddy","P!nk","PLK","PNL","Pamungkas","Passenger","Pat Boone","Patsy Cline","Patti LaBelle","Patti Page","Paul & Paula","Paul Revere & the Raiders","Paul Robeson","Paul Russell","Paul Whiteman","Paula Abdul","Peaches & Herb","Pearl Jam","Pee Wee Hunt","Pee Wee King","Pentatonix","Percy Faith","Percy Sledge","Peso Pluma","Peter Cetera","Peter Gabriel","Peter, Paul & Mary","Pharrell Williams","Pierce The Veil","Pineapple StormTv","Pink Floyd","Pink Sweat$","Piso 21","Pitbull","Plan B","Player","Polo G","Pop Smoke","Portugal. The Man","Pouya","Prince","Prince Royce","Pusha T","Quality Control","Queen","Quinn XCII","R. Kelly","RAF Camora","RAYE","REM","REO Speedwagon","Radiohead","Rag'n'Bone Man","Rage Against The Machine","Rahat Fateh Ali Khan","Rainbow Kitten Surprise","Rammstein","Rauw Alejandro","Ray Charles","Ray Parker Jr","Ray Stevens","Red Foley","Red Hot Chili Peppers","Red Velvet","Regard","Regina Belle","Reik","Rels B","Rema","Ricardo Arjona","Rich The Kid","Rick Astley","Rick Dees & his Cast of Idiots","Rick Ross","Rick Springfield","Ricky Martin","Ricky Nelson","Rihanna","Rita Ora","Ritchie Valens","Rizky Febian","Rob Thomas","Roberta Flack","Robin Schulz","Robin Thicke","Rod Stewart","Rod Wave","Roddy Ricch","Roger Miller","Romeo Santos","Rosemary Clooney","Roxette","Roy Acuff","Roy Orbison","Rudimental","Ruel","Ruth B.","Ryan Lewis","SCH","SEVENTEEN","SWV","Sabaton","Sabrina Carpenter","Sachet Tandon","Sachin-Jigar","Sade","Sam Cooke","Sam Feldt","Sam Hunt","Sam Smith","Sam The Sham & The Pharaohs","Sammy Davis Jr","Sammy Kaye","Santana","Sasha Alex Sloan","Savage Garden","Saweetie","Scorpions","Sean Kingston","Sean Paul","Sebastian Yatra","Sech","Seeb","Sezen Aksu","Sfera Ebbasta","Shaggy","Shania Twain","Shawn Mendes","Sheena Easton","Shinedown","Shubh","Sia","Sid Sriram","Sidhu Moose Wala","Silk","Silver Convention","Simon & Garfunkel","Sinead O'Connor","Sir Mix-a-Lot","Sister Sledge","Ski Mask The Slump God","Skillet","Skrillex","Sleeping At Last","Smokey Robinson","Snoop Dogg","Snow Patrol","Soda Stereo","Sonu Nigam","Sophie Ellis-Bextor","Spencer Davis Group","Spice Girls","Stan Getz","Starland Vocal Band","Stephen Sanchez","Steve Aoki","Steve Lacy","Steve Winwood","Stevie B","Sting","Stormzy","Strawberry Alarm Clock","Stray Kids","Stromae","Sublime","Sum 41","Summer Walker","Supertramp","Survivor","Swedish House Mafia","System Of A Down","T-Pain","T.I.","TAEYEON","TKKG","TLC","TOMORROW X TOGETHER","TOTO","TWICE","Tag Team","Tainy","Tammi Terrell","Tanishk Bagchi","Tate McRae","Taylor Swift","Tears For Fears","Tems","Tennessee Ernie Ford","Terence Trent D'Arby","Teresa Brewer","Terry Jacks","The Ames Brothers","The Animals","The B52s","The Bangles","The Beatles","The Black Eyed Peas","The Black Keys","The Box Tops","The Chainsmokers","The Chiffons","The Chordettes","The Clash","The Coasters","The Commodores","The Cowsills","The Cranberries","The Crew-Cuts","The Cure","The Detroit Spinners","The Diamonds","The Doobie Brothers","The Doors","The Drifters","The Emotions","The Eurythmics","The Fireballs","The Flamingos","The Foundations","The Four Seasons","The Fray","The Game","The Go Gos","The Goo Goo Dolls","The Head And The Heart","The Hollies","The Ink Spots","The Isley Brothers","The Jackson 5","The Kid LAROI","The Killers","The Kingston Trio","The Kooks","The Lemon Pipers","The Living Tombstone","The Lumineers","The Mamas & The Papas","The Marvelettes","The McCoys","The Mills Brothers","The Miracles","The Monkees","The Moody Blues","The National","The Neighbourhood","The Notorious B.I.G.","The O'Jays","The Offspring","The Osmonds","The Partridge Family","The Penguins","The Pet Shop Boys","The Platters","The Righteous Brothers","The Rolling Stones","The Ronettes","The Score","The Script","The Seekers","The Shangri-Las","The Smashing Pumpkins","The Staple Singers","The Strokes","The Supremes","The Temptations","The Turtles","The Vamps","The Verve","The Village People","The Weavers","The White Stripes","The Young Rascals","The Zombies","Thelma Houston","Thomas Rhett","Three Days Grace","Three Dog Night","Three Man Down","Timbaland","Timmy Trumpet","Toby Keith","Tom Jones","Tom Petty and the Heartbreakers","Tommy Dorsey","Tommy Edwards","Tommy James & the Shondells","Tone Loc","Toni Braxton","Topic","Tory Lanez","Tove Lo","Trevor Daniel","Trey Songz","Trippie Redd","Trueno","Tulsi Kumar","Tulus","Twenty One Pilots","Two Feet","Ty Dolla $ign","Tyga","Tyler Hubbard","U2","UB40","UZI","Ufo361","Upchurch","V","Vampire Weekend","Van McCoy","Van Morrison","Vance Joy","Vanessa Carlton","Vanessa Williams","Vera Lynn","Vernon Dalhart","Vicente Fernandez","Vishal-Shekhar","Volbeat","WILLOW","Wale","Wallows","Weezer","Wham!","Whitney Houston","Why Don't We","Wilbert Harrison","Wilson Phillips","Wiz Khalifa","Woody Guthrie","Wyclef Jean","XXXTENTACION","Xavi","YG","YNW Melly","YOASOBI","Yandel","Years & Years","Yeat","Yo Gotti","Young Dolph","Young Miko","Young Thug","YoungBoy Never Broke Again","Yung Gravy","Yuuri","Yuvan Shankar Raja","ZAYN","ZZ Top","Zac Brown Band","Zach Bryan","Zara Larsson","aespa","benny blanco","blink-182","d4vd","deadmau5","girl in red","gnash","iann dior","will.i.am"],genre:["Acid House","Acid Jazz","Acid Rock","Acoustic","Acoustic Blues","Afro-Pop","Afrobeat","Alt-Rock","Alternative","Ambient","American Trad Rock","Americana","Anime","Arena Rock","Art-Rock","Avant-Garde","Avant-Punk","Baladas y Boleros","Barbershop","Baroque","Bebop","Big Band","Black Metal","Blue Note","Bluegrass","Blues","Boogaloo","Bop","Bossa Nova","Bounce","Brazilian Funk","Breakbeat","Britpop","CCM","Cajun","Cantopop","Celtic","Celtic Folk","Chamber Music","Chant","Chanukah","Chicago Blues","Chicago House","Chicano","Children\u2019s Music","Chill","Choral","Christian","Christmas","Classical","Club","College Rock","Conjunto","Cool Jazz","Country","Crunk","Dance","Dancehall","Death Metal","Deep House","Delta Blues","Detroit Techno","Dirty South","Disco","Disney","Dixieland","Doo-wop","Downtempo","Dream Pop","Drill","Drinking Songs","Drone","Drum'n'bass","Dub","Dubstep","EDM","Early Music","East Coast Rap","Easter","Easy Listening","Eclectic","Electric Blues","Electro","Electronic","Electronica","Emo","Enka","Environmental","Ethio-jazz","Experimental","Experimental Rock","Flamenco","Folk","Folk-Rock","Forro","French Pop","Funk","Fusion","Gangsta Rap","Garage","German Folk","German Pop","Glam Rock","Gospel","Goth","Grime","Grindcore","Groove","Grunge","Hair Metal","Halloween","Happy","Hard Bop","Hard Dance","Hard Rock","Hardcore","Hardcore Punk","Hardcore Rap","Hardstyle","Healing","Heavy Metal","High Classical","Hip Hop","Holiday","Honky Tonk","House","IDM","Impressionist","Indie","Industrial","Instrumental","J-Dance","J-Idol","J-Pop","J-Punk","J-Rock","J-Ska","J-Synth","Jackin House","Jam Bands","Japanese Pop","Jazz","Jungle","K-Pop","Karaoke","Kayokyoku","Kids","Kitsch","Klezmer","Krautrock","Latin","Latin Jazz","Latin Rap","Local","Lounge","Lullabies","MPB","Mainstream Jazz","Malay","Mandopop","March","Mariachi","Mawwal","Medieval","Meditation","Metal","Metalcore","Minimal Techno","Minimalism","Modern","Motown","Mugham","Musicals","Musique Concr\xe8te","Nature","Neo-Soul","Nerdcore","New Acoustic","New Age","New Mex","New Wave","No Wave","Noise","Nordic","Novelty","OPM","Oi!","Old School Rap","Opera","Orchestral","Original Score","Outlaw Country","Pagode","Party","Piano","Polka","Pop","Pop Film","Pop Latino","Post Dubstep","Power Pop","Praise & Worship","Progressive House","Progressive Rock","Proto-punk","Psych Rock","Psychedelic","Punk","Punk Rock","Qawwali","Quiet Storm","R&B","Ragtime","Rainy Day","Rap","Reggae","Reggaeton","Regional Mexicano","Relaxation","Renaissance","Retro","Rock","Rockabilly","Rocksteady","Romance","Romantic","Roots Reggae","Roots Rock","SKA","Sad","Salsa","Samba","Second Line","Sertanejo","Shaabi","Shoegaze","Sleep","Smooth Jazz","Soft Rock","Soul","Soundtrack","Southern Gospel","Southern Rock","Space Rock","Stage And Screen","Steampunk","Summer","Surf","Swamp Pop","Swing","Synth Pop","Tango","Techno","Teen Pop","Tejano","Tex-Mex","Thanksgiving","Traditional","Trance","Trip Hop","Tropical","Underground Rap","Urban","Urban Cowboy","West Coast Rap","Western Swing","World","Worldbeat","Zydeco"],song_name:["(Everything I Do) I Do it For You","(Ghost) Riders in the Sky","(I Can't Get No) Satisfaction","(I've Got a Gal In) Kalamazoo","(I've Had) the Time of My Life","(It's No) Sin","(Just Like) Starting Over","(Let Me Be Your) Teddy Bear","(Put Another Nickel In) Music! Music! Music!","(Sexual) Healing","(Sittin' On) the Dock of the Bay","(They Long to Be) Close to You","(You Keep Me) Hangin' On","(You're My) Soul & Inspiration","(Your Love Keeps Lifting Me) Higher & Higher","12th Street Rag","1999","19th Nervous Breakdown","50 Ways to Leave Your Lover","9 to 5","96 Tears","A Boy Named Sue","A Hard Day's Night","A String of Pearls","A Thousand Miles","A Tree in the Meadow","A Whiter Shade of Pale","A Whole New World (Aladdin's Theme)","A Woman in Love","A-Tisket A-Tasket","ABC","Abracadabra","Ac-cent-tchu-ate the Positive","Addicted to Love","After You've Gone","Afternoon Delight","Again","Against All Odds (Take a Look At Me Now)","Ain't Misbehavin'","Ain't No Mountain High Enough","Ain't No Sunshine","Ain't That a Shame","Airplanes","All Along the Watchtower","All I Have to Do is Dream","All I Wanna Do","All My Lovin' (You're Never Gonna Get It)","All Night Long (All Night)","All Out of Love","All Shook Up","All You Need is Love","Alone","Alone Again (Naturally)","Always On My Mind","American Pie","American Woman","Angie","Another Brick in the Wall (part 2)","Another Day in Paradise","Another Night","Another One Bites the Dust","Apologize","April Showers","Aquarius/Let The Sunshine In","Are You Lonesome Tonight?","Arthur's Theme (Best That You Can Do)","As Time Goes By","At Last","At the Hop","Auf Wiederseh'n Sweetheart","Baby Baby","Baby Come Back","Baby Got Back","Baby Love","Baby One More Time","Bad","Bad Day","Bad Girls","Bad Moon Rising","Bad Romance","Baker Street","Ball of Confusion (That's What the World is Today)","Ballad of the Green Berets","Ballerina","Band On the Run","Band of Gold","Battle of New Orleans","Be Bop a Lula","Be My Baby","Be My Love","Beat It","Beautiful Day","Beauty & the Beast","Because I Love You (The Postman Song)","Because You Loved Me","Because of You","Before The Next Teardrop Falls","Begin the Beguine","Behind Closed Doors","Being With You","Believe","Ben","Bennie & the Jets","Besame Mucho","Best of My Love","Bette Davis Eyes","Big Bad John","Big Girls Don't Cry","Billie Jean","Bitter Sweet Symphony","Black Or White","Black Velvet","Blaze of Glory","Bleeding Love","Blue Suede Shoes","Blue Tango","Blueberry Hill","Blurred Lines","Body & Soul","Bohemian Rhapsody","Boogie Oogie Oogie","Boogie Woogie Bugle Boy","Boom Boom Pow","Born in the USA","Born to Be Wild","Born to Run","Boulevard of Broken Dreams","Brand New Key","Brandy (You're A Fine Girl)","Breaking Up is Hard to Do","Breathe","Bridge Over Troubled Water","Brother","Brother Louie","Brown Eyed Girl","Brown Sugar","Build Me Up Buttercup","Burn","Buttons & Bows","Bye","Bye Bye","Bye Bye Love","Caldonia Boogie (What Makes Your Big Head So Hard)","California Dreamin'","California Girls","Call Me","Call Me Maybe","Can You Feel the Love Tonight","Can't Buy Me Love","Can't Get Enough of Your Love","Can't Help Falling in Love","Candle in the Wind '97","Candy Man","Car Wash","Careless Whisper","Cars","Cat's in the Cradle","Cathy's Clown","Celebration","Centerfold","Chain of Fools","Chances Are","Change the World","Chapel of Love","Chattanooga Choo Choo","Chattanoogie Shoe-Shine Boy","Check On It","Cheek to Cheek","Cherish","Cherry Pink & Apple Blossom White","Cold","Colors of the Wind","Come On Eileen","Come On-a My House","Come Together","Coming Up","Cracklin' Rosie","Crazy","Crazy For You","Crazy Little Thing Called Love","Crazy in Love","Creep","Crimson & Clover","Crocodile Rock","Cry","Cry Like a Baby","Crying","Da Doo Ron Ron (When He Walked Me Home)","Dance to the Music","Dancing Queen","Dancing in the Dark","Dancing in the Street","Dardanella","Daydream Believer","December 1963 (Oh What a Night)","Delicado","Dilemma","Disco Duck","Disco Lady","Disturbia","Dizzy","Do That to Me One More Time","Do Wah Diddy Diddy","Do Ya Think I'm Sexy?","Do You Love Me?","Don't Be Cruel","Don't Fence Me In","Don't Go Breaking My Heart","Don't Leave Me This Way","Don't Let the Stars Get in Your Eyes","Don't Let the Sun Go Down On Me","Don't Speak","Don't Stop 'Til You Get Enough","Don't Worry Be Happy","Don't You (Forget About Me)","Don't You Want Me","Doo Wop (That Thing)","Down","Down Hearted Blues","Down Under","Downtown","Dreamlover","Dreams","Drop it Like It's Hot","Drops of Jupiter (Tell Me)","Duke of Earl","E.T.","Earth Angel","Ebony & Ivory","Eight Days a Week","Empire State Of Mind","End of the Road","Endless Love","Escape (The Pina Colada Song)","Eve of Destruction","Every Breath You Take","Every Little Thing She Does is Magic","Everybody Loves Somebody","Everybody Wants to Rule the World","Everyday People","Eye of the Tiger","Faith","Fallin'","Fame","Family Affair","Fantasy","Fast Car","Feel Good Inc","Feel Like Making Love","Fire & Rain","Firework","Flashdance. What a Feeling","Fly Robin Fly","Foolish Games","Footloose","For What It's Worth (Stop","Fortunate Son","Frankenstein","Freak Me","Freebird","Frenesi","Funkytown","Gangsta's Paradise","Georgia On My Mind","Georgy Girl","Get Back","Get Down Tonight","Get Off of My Cloud","Ghostbusters","Gimme Some Lovin'","Girls Just Wanna Have Fun","Give Me Everything","Gives You Hell","Glamorous","Glory of Love","Go Your Own Way","God Bless America","God Bless the Child","Gold Digger","Gonna Make You Sweat (Everybody Dance Now)","Good Lovin'","Good Times","Good Vibrations","Goodbye Yellow Brick Road","Goodnight","Got to Give it Up","Grease","Great Balls of Fire","Greatest Love of All","Green Onions","Green River","Green Tambourine","Grenade","Groove is in the Heart","Groovin'","Gypsies","Hair","Hang On Sloopy","Hanging by a Moment","Hanky Panky","Happy Days Are Here Again","Happy Together","Harbour Lights","Hard to Say I'm Sorry","Harper Valley PTA","Have You Ever Really Loved a Woman?","He'll Have to Go","He's So Fine","He's a Rebel","Heart of Glass","Heart of Gold","Heartbreak Hotel","Hello","Hello Dolly","Help Me","Help!","Here Without You","Here in My Heart","Hero","Hey Baby","Hey Jude","Hey Paula","Hey There","Hey There Delilah","Hey Ya!","Higher Love","Hips don't lie","Hit the Road","Hold On","Hollaback Girl","Honey","Honky Tonk","Honky Tonk Woman","Horse With No Name","Hot Child In The City","Hot Stuff","Hotel California","Hound Dog","House of the Rising Sun","How Deep is Your Love?","How Do I Live?","How Do You Mend a Broken Heart","How High the Moon","How Much is That Doggy in the Window?","How Will I Know","How You Remind Me","How to Save a Life","Hungry Heart","Hurt So Good","I Believe I Can Fly","I Can Dream","I Can Help","I Can See Clearly Now","I Can't Get Next to You","I Can't Get Started","I Can't Go For That (No Can Do)","I Can't Help Myself (Sugar Pie","I Can't Stop Loving You","I Don't Want to Miss a Thing","I Fall to Pieces","I Feel Fine","I Feel For You","I Feel Love","I Get Around","I Got You (I Feel Good)","I Got You Babe","I Gotta Feeling","I Heard it Through the Grapevine","I Honestly Love You","I Just Called to Say I Love You","I Just Wanna Be Your Everything","I Kissed A Girl","I Love Rock 'n' Roll","I Need You Now","I Only Have Eyes For You","I Shot the Sheriff","I Still Haven't Found What I'm Looking For","I Swear","I Think I Love You","I Walk the Line","I Wanna Dance With Somebody (Who Loves Me)","I Wanna Love You","I Want You Back","I Want to Hold Your Hand","I Want to Know What Love Is","I Went to Your Wedding","I Will Always Love You","I Will Follow Him","I Will Survive","I Write the Songs","I'll Be Missing You","I'll Be There","I'll Make Love to You","I'll Never Smile Again","I'll Take You There","I'll Walk Alone","I'll be seeing you","I'm Looking Over a Four Leaf Clover","I'm So Lonesome I Could Cry","I'm Sorry","I'm Walking Behind You","I'm Your Boogie Man","I'm Yours","I'm a Believer","I've Heard That Song Before","If (They Made Me a King)","If I Didn't Care","If You Don't Know Me By Now","If You Leave Me Now","Imagine","In Da Club","In the End","In the Ghetto","In the Mood","In the Summertime","In the Year 2525 (Exordium & Terminus)","Incense & Peppermints","Indian Reservation (The Lament Of The Cherokee Reservation Indian)","Instant Karma","Iris","Ironic","Irreplaceable","It Had to Be You","It's All in the Game","It's My Party","It's Now Or Never","It's Still Rock 'n' Roll to Me","It's Too Late","Jack & Diane","Jailhouse Rock","Jessie's Girl","Jive Talkin'","Johnny B Goode","Joy to the World","Judy in Disguise (With Glasses)","Jump","Jumpin' Jack Flash","Just Dance","Just My Imagination (Running Away With Me)","Just the Way You Are","Kansas City","Karma Chameleon","Keep On Loving You","Killing Me Softly With His Song","King of the Road","Kiss","Kiss & Say Goodbye","Kiss From a Rose","Kiss Me","Kiss On My List","Kiss You All Over","Knock On Wood","Knock Three Times","Kokomo","Kryptonite","Kung Fu Fighting","La Bamba","Lady","Lady Marmalade (Voulez-Vous Coucher Aver Moi Ce Soir?)","Last Train to Clarksville","Layla","Le Freak","Leader of the Pack","Lean On Me","Leaving","Let Me Call You Sweetheart","Let Me Love You","Let it Be","Let it Snow! Let it Snow! Let it Snow!","Let's Dance","Let's Get it On","Let's Groove","Let's Hear it For the Boy","Let's Stay Together","Light My Fire","Lights","Like a Prayer","Like a Rolling Stone","Like a Virgin","Little Darlin'","Little Things Mean a Lot","Live & Let Die","Livin' La Vida Loca","Livin' On a Prayer","Living For the City","Locked Out Of Heaven","Lola","Lonely Boy","Long Cool Woman in a Black Dress","Long Tall Sally","Look Away","Lookin' Out My Back Door","Lose Yourself","Losing My Religion","Louie Louie","Love Child","Love Hangover","Love In This Club","Love Is Blue (L'Amour Est Bleu)","Love Letters in the Sand","Love Me Do","Love Me Tender","Love Shack","Love Theme From 'A Star is Born' (Evergreen)","Love Train","Love Will Keep Us Together","Love is a Many Splendoured Thing","Love to Love You Baby","Love's Theme","Loving You","Low","Macarena","Mack the Knife","Maggie May","Magic","Magic Carpet Ride","Make Love to Me","Make it With You","Makin' Whoopee","Mama Told Me Not to Come","Man in the Mirror","Manana (Is Soon Enough For Me)","Maneater","Maniac","Maybellene","Me & Bobby McGee","Me & Mrs Jones","Memories Are Made of This","Mercy Mercy Me (The Ecology)","Mickey","Midnight Train to Georgia","Minnie the Moocher","Miss You","Miss You Much","Mister Sandman","Mmmbop","Mona Lisa","Monday Monday","Money For Nothing","Mony Mony","Mood Indigo","Moonlight Cocktail","Moonlight Serenade","More Than Words","More Than a Feeling","Morning Train (Nine to Five)","Mr Big Stuff","Mr Brightside","Mr Tambourine Man","Mrs Brown You've Got a Lovely Daughter","Mrs Robinson","Mule Train","Music","My Blue Heaven","My Boyfriend's Back","My Eyes Adored You","My Girl","My Guy","My Heart Will Go On","My Life","My Love","My Man","My Prayer","My Sharona","My Sweet Lord","Na Na Hey Hey (Kiss Him Goodbye)","Nature Boy","Near You","Need You Now","Need You Tonight","Never Gonna Give You Up","Night & Day","Night Fever","Nights in White Satin","No One","No Scrubs","Nobody Does it Better","Nothin' on You","Nothing Compares 2 U","Nothing's Gonna Stop Us Now","Ode To Billie Joe","Oh","Oh Happy Day","Oh My Papa (O Mein Papa)","Ol' Man River","Ole Buttermilk Sky","On Bended Knee","On My Own","On the Atchison","One","One Bad Apple","One More Try","One O'Clock Jump","One Sweet Day","One of These Nights","One of Us","Only The Lonely (Know The Way I Feel)","Only You (And You Alone)","Open Arms","Over There","Over the Rainbow","Paint it Black","Papa Don't Preach","Papa Was a Rolling Stone","Papa's Got a Brand New Bag","Paper Doll","Paper Planes","Paperback Writer","Party Rock Anthem","Peg o' My Heart","Peggy Sue","Pennies From Heaven","Penny Lane","People","People Got to Be Free","Personality","Philadelphia Freedom","Physical","Piano Man","Pick Up the Pieces","Pistol Packin' Mama","Play That Funky Music","Please Mr Postman","Poker Face","Pon De Replay","Pony Time","Pop Muzik","Prisoner of Love","Private Eyes","Promiscuous","Proud Mary","Purple Haze","Purple Rain","Puttin' on the Ritz","Que sera sera (Whatever will be will be)","Queen of Hearts","Rag Doll","Rag Mop","Rags to Riches","Raindrops Keep Falling On My Head","Rapture","Ray of Light","Reach Out (I'll Be There)","Red Red Wine","Rehab","Respect","Return to Sender","Reunited","Revolution","Rhapsody in Blue","Rhinestone Cowboy","Rich Girl","Riders On the Storm","Right Back Where We Started From","Ring My Bell","Ring of Fire","Rock Around the Clock","Rock With You","Rock Your Baby","Rock the Boat","Rock the Casbah","Roll Over Beethoven","Roll With It","Rolling In The Deep","Rosanna","Roses Are Red","Royals","Ruby Tuesday","Rudolph","Rum & Coca-Cola","Runaround Sue","Runaway","Running Scared","Rush Rush","Sailing","Save the Best For Last","Save the Last Dance For Me","Say It Right","Say My Name","Say Say Say","Say You","School's Out","Seasons in the Sun","Secret Love","Sentimental Journey","Sexyback","Sh-Boom (Life Could Be a Dream)","Shadow Dancing","Shake Down","Shake You Down","She Drives Me Crazy","She Loves You","She's a Lady","Shining Star","Shop Around","Shout","Silly Love Songs","Since U Been Gone","Sing","Singing The Blues","Single Ladies (Put A Ring On It)","Sir Duke","Sixteen Tons","Sledgehammer","Sleep Walk","Sleepy Lagoon","Slow Poke","Smells Like Teen Spirit","Smoke Gets in Your Eyes","Smoke On the Water","Smoke! Smoke! Smoke! (That Cigarette)","Smooth","So Much in Love","Soldier Boy","Some Enchanted Evening","Some of These Days","Somebody That I Used to Know","Somebody to Love","Someday","Somethin' Stupid","Something","Soul Man","Spanish Harlem","Spill the Wine","Spinning Wheel","Spirit in the Sky","St George & the Dragonette","St Louis Blues","Stagger Lee","Stairway to Heaven","Stand By Me","Stardust","Stars & Stripes Forever","Stay (I Missed You)","Stayin' Alive","Stop! in the Name of Love","Stormy Weather (Keeps Rainin' All the Time)","Straight Up","Strange Fruit","Stranger On the Shore","Strangers in the Night","Strawberry Fields Forever","Streets of Philadelphia","Stronger","Stuck On You","Sugar Shack","Sugar Sugar","Summer in the City","Summertime Blues","Sunday","Sunshine Superman","Sunshine of Your Love","Superstar","Superstition","Surfin' USA","Suspicious Minds","Swanee","Sweet Caroline (Good Times Never Seemed So Good)","Sweet Child O' Mine","Sweet Dreams (Are Made of This)","Sweet Georgia Brown","Sweet Home Alabama","Sweet Soul Music","Swinging On a Star","T For Texas (Blue Yodel No 1)","TSOP (The Sound of Philadelphia)","Take Me Home","Take My Breath Away","Take On Me","Take The 'A' Train","Take a Bow","Tammy","Tangerine","Tears in Heaven","Tears of a Clown","Temperature","Tennessee Waltz","Tequila","Tha Crossroads","Thank You (Falettinme be Mice Elf Again)","That Lucky Old Sun (Just Rolls Around Heaven All Day)","That Old Black Magic","That'll Be the Day","That's Amore","That's What Friends Are For","That's the Way (I Like It)","That's the Way Love Goes","The Boy is Mine","The Boys of Summer","The Christmas Song (Chestnuts Roasting On An Open Fire)","The End of the World","The First Time Ever I Saw Your Face","The Girl From Ipanema","The Glow-Worm","The Great Pretender","The Gypsy","The Hustle","The Joker","The Last Dance","The Letter","The Loco-Motion","The Long & Winding Road","The Love You Save","The Morning After","The Power of Love","The Prisoner's Song","The Reason","The Rose","The Sign","The Song From Moulin Rouge (Where Is Your Heart)","The Sounds of Silence","The Streak","The Sweet Escape","The Thing","The Tide is High","The Tracks of My Tears","The Twist","The Wanderer","The Way We Were","The Way You Look Tonight","The Way You Move","Theme From 'A Summer Place'","Theme From 'Greatest American Hero' (Believe It Or Not)","Theme From 'Shaft'","There goes my baby","These Boots Are Made For Walking","Third Man Theme","This Diamond Ring","This Guy's in Love With You","This Land is Your Land","This Love","This Ole House","This Used to Be My Playground","Three Coins in the Fountain","Three Times a Lady","Thrift Shop","Thriller","Ticket to Ride","Tie a Yellow Ribbon 'round the Old Oak Tree","Tiger Rag","Tighten Up","Tik-Toc","Till I Waltz Again With You","Till The End of Time","Time After Time","Time of the Season","To Sir","Tom Dooley","Tonight's the Night (Gonna Be Alright)","Too Close","Too Young","Tossing & Turning","Total Eclipse of the Heart","Touch Me","Toxic","Travellin' Band","Travellin' Man","Truly Madly Deeply","Turn! Turn! Turn! (To Everything There is a Season)","Tutti Frutti","Twist & Shout","Two Hearts","U Can't Touch This","U Got it Bad","Umbrella","Un-Break My Heart","Unbelievable","Unchained Melody","Uncle Albert (Admiral Halsey)","Under the Boardwalk","Under the Bridge","Unforgettable","Up Around the Bend","Up Up & Away","Up Where We Belong","Upside Down","Use Somebody","Vaya Con Dios (may God Be With You)","Venus","Vision of Love","Viva La Vida","Vogue","Volare","Wabash Cannonball","Waiting For a Girl Like You","Wake Me Up Before You Go Go","Wake Up Little Susie","Walk Don't Run","Walk Like a Man","Walk Like an Egyptian","Walk On By","Walk On the Wild Side","Walk This Way","Wannabe","Want Ads","Wanted","War","Waterfalls","Wayward Wind","We Are Family","We Are Young","We Are the Champions","We Are the World","We Belong Together","We Built This City","We Can Work it Out","We Didn't Start the Fire","We Found Love","We Got The Beat","We Will Rock You","We've Only Just Begun","Weak","Wedding Bell Blues","West End Blues","West End Girls","What Goes Around Comes Around","What a Fool Believes","What'd I Say","What's Going On?","What's Love Got to Do With It?","Whatcha Say","Wheel of Fortune","When Doves Cry","When You Wish Upon a Star","When a Man Loves a Woman","Where Did Our Love Go","Where is the Love?","Whip It","Whispering","White Christmas","White Rabbit","Whole Lotta Love","Whole Lotta Shakin' Goin' On","Whoomp! (There it Is)","Why Do Fools Fall in Love?","Why Don't You Believe Me?","Wichita Lineman","Wicked Game","Wild Thing","Wild Wild West","Will It Go Round In Circles","Will You Love Me Tomorrow","Winchester Cathedral","Wind Beneath My Wings","Wipe Out","Wishing Well","With Or Without You","Without Me","Without You","Woman","Won't Get Fooled Again","Wooly Bully","Working My Way Back to You","YMCA","Yakety Yak","Yeah!","Yellow Rose of Texas","Yesterday","You Ain't Seen Nothin' Yet","You Always Hurt the One You Love","You Are the Sunshine of My Life","You Belong With Me","You Belong to Me","You Can't Hurry Love","You Don't Bring Me Flowers","You Don't Have to Be a Star (To Be in My Show)","You Light Up My Life","You Make Me Feel Brand New","You Make Me Feel Like Dancing","You Really Got Me","You Send Me","You Sexy Thing","You Were Meant for Me","You make Me Wanna","You'll Never Know","You're Beautiful","You're So Vain","You're Still the One","You're the One That I Want","You've Got a Friend","You've Lost That Lovin' Feelin'","Your Cheatin' Heart","Your Song"]},person:{bio_part:["activist","artist","author","blogger","business owner","coach","creator","designer","developer","dreamer","educator","engineer","entrepreneur","environmentalist","film lover","filmmaker","foodie","founder","friend","gamer","geek","grad","inventor","leader","model","musician","nerd","parent","patriot","person","philosopher","photographer","public speaker","scientist","singer","streamer","student","teacher","traveler","veteran","writer"],bio_pattern:["{{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}","{{word.noun}} {{person.bio_supporter}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}} {{internet.emoji}}"],bio_supporter:["advocate","devotee","enthusiast","fan","junkie","lover","supporter"],first_name:{generic:["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aimee","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arden","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","Edd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gayle","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"],female:["Mary","Patricia","Linda","Barbara","Elizabeth","Jennifer","Maria","Susan","Margaret","Dorothy","Lisa","Nancy","Karen","Betty","Helen","Sandra","Donna","Carol","Ruth","Sharon","Michelle","Laura","Sarah","Kimberly","Deborah","Jessica","Shirley","Cynthia","Angela","Melissa","Brenda","Amy","Anna","Rebecca","Virginia","Kathleen","Pamela","Martha","Debra","Amanda","Stephanie","Carolyn","Christine","Marie","Janet","Catherine","Frances","Ann","Joyce","Diane","Alice","Julie","Heather","Teresa","Doris","Gloria","Evelyn","Jean","Cheryl","Mildred","Katherine","Joan","Ashley","Judith","Rose","Janice","Kelly","Nicole","Judy","Christina","Kathy","Theresa","Beverly","Denise","Tammy","Irene","Jane","Lori","Rachel","Marilyn","Andrea","Kathryn","Louise","Sara","Anne","Jacqueline","Wanda","Bonnie","Julia","Ruby","Lois","Tina","Phyllis","Norma","Paula","Diana","Annie","Lillian","Emily","Robin","Peggy","Crystal","Gladys","Rita","Dawn","Connie","Florence","Tracy","Edna","Tiffany","Carmen","Rosa","Cindy","Grace","Wendy","Victoria","Edith","Kim","Sherry","Sylvia","Josephine","Thelma","Shannon","Sheila","Ethel","Ellen","Elaine","Marjorie","Carrie","Charlotte","Monica","Esther","Pauline","Emma","Juanita","Anita","Rhonda","Hazel","Amber","Eva","Debbie","April","Leslie","Clara","Lucille","Jamie","Joanne","Eleanor","Valerie","Danielle","Megan","Alicia","Suzanne","Michele","Gail","Bertha","Darlene","Veronica","Jill","Erin","Geraldine","Lauren","Cathy","Joann","Lorraine","Lynn","Sally","Regina","Erica","Beatrice","Dolores","Bernice","Audrey","Yvonne","Annette","June","Samantha","Marion","Dana","Stacy","Ana","Renee","Ida","Vivian","Roberta","Holly","Brittany","Melanie","Loretta","Yolanda","Jeanette","Laurie","Katie","Kristen","Vanessa","Alma","Sue","Elsie","Beth","Jeanne","Vicki","Carla","Tara","Rosemary","Eileen","Terri","Gertrude","Lucy","Tonya","Ella","Stacey","Wilma","Gina","Kristin","Jessie","Natalie","Agnes","Vera","Willie","Charlene","Bessie","Delores","Melinda","Pearl","Arlene","Maureen","Colleen","Allison","Tamara","Joy","Georgia","Constance","Lillie","Claudia","Jackie","Marcia","Tanya","Nellie","Minnie","Marlene","Heidi","Glenda","Lydia","Viola","Courtney","Marian","Stella","Caroline","Dora","Jo","Vickie","Mattie","Terry","Maxine","Irma","Mabel","Marsha","Myrtle","Lena","Christy","Deanna","Patsy","Hilda","Gwendolyn","Jennie","Nora","Margie","Nina","Cassandra","Leah","Penny","Kay","Priscilla","Naomi","Carole","Brandy","Olga","Billie","Dianne","Tracey","Leona","Jenny","Felicia","Sonia","Miriam","Velma","Becky","Bobbie","Violet","Kristina","Toni","Misty","Mae","Shelly","Daisy","Ramona","Sherri","Erika","Katrina","Claire","Lindsey","Lindsay","Geneva","Guadalupe","Belinda","Margarita","Sheryl","Cora","Faye","Ada","Natasha","Sabrina","Isabel","Marguerite","Hattie","Harriet","Molly","Cecilia","Kristi","Brandi","Blanche","Sandy","Rosie","Joanna","Iris","Eunice","Angie","Inez","Lynda","Madeline","Amelia","Alberta","Genevieve","Monique","Jodi","Janie","Maggie","Kayla","Sonya","Jan","Lee","Kristine","Candace","Fannie","Maryann","Opal","Alison","Yvette","Melody","Luz","Susie","Olivia","Flora","Shelley","Kristy","Mamie","Lula","Lola","Verna","Beulah","Antoinette","Candice","Juana","Jeannette","Pam","Kelli","Hannah","Whitney","Bridget","Karla","Celia","Latoya","Patty","Shelia","Gayle","Della","Vicky","Lynne","Sheri","Marianne","Kara","Jacquelyn","Erma","Blanca","Myra","Leticia","Pat","Krista","Roxanne","Angelica","Johnnie","Robyn","Francis","Adrienne","Rosalie","Alexandra","Brooke","Bethany","Sadie","Bernadette","Traci","Jody","Kendra","Jasmine","Nichole","Rachael","Chelsea","Mable","Ernestine","Muriel","Marcella","Elena","Krystal","Angelina","Nadine","Kari","Estelle","Dianna","Paulette","Lora","Mona","Doreen","Rosemarie","Angel","Desiree","Antonia","Hope","Ginger","Janis","Betsy","Christie","Freda","Mercedes","Meredith","Lynette","Teri","Cristina","Eula","Leigh","Meghan","Sophia","Eloise","Rochelle","Gretchen","Cecelia","Raquel","Henrietta","Alyssa","Jana","Kelley","Gwen","Kerry","Jenna","Tricia","Laverne","Olive","Alexis","Tasha","Silvia","Elvira","Casey","Delia","Sophie","Kate","Patti","Lorena","Kellie","Sonja","Lila","Lana","Darla","May","Mindy","Essie","Mandy","Lorene","Elsa","Josefina","Jeannie","Miranda","Dixie","Lucia","Marta","Faith","Lela","Johanna","Shari","Camille","Tami","Shawna","Elisa","Ebony","Melba","Ora","Nettie","Tabitha","Ollie","Jaime","Winifred","Kristie"],male:["James","John","Robert","Michael","William","David","Richard","Charles","Joseph","Thomas","Christopher","Daniel","Paul","Mark","Donald","George","Kenneth","Steven","Edward","Brian","Ronald","Anthony","Kevin","Jason","Matthew","Gary","Timothy","Jose","Larry","Jeffrey","Frank","Scott","Eric","Stephen","Andrew","Raymond","Gregory","Joshua","Jerry","Dennis","Walter","Patrick","Peter","Harold","Douglas","Henry","Carl","Arthur","Ryan","Roger","Joe","Juan","Jack","Albert","Jonathan","Justin","Terry","Gerald","Keith","Samuel","Willie","Ralph","Lawrence","Nicholas","Roy","Benjamin","Bruce","Brandon","Adam","Harry","Fred","Wayne","Billy","Steve","Louis","Jeremy","Aaron","Randy","Howard","Eugene","Carlos","Russell","Bobby","Victor","Martin","Ernest","Phillip","Todd","Jesse","Craig","Alan","Shawn","Clarence","Sean","Philip","Chris","Johnny","Earl","Jimmy","Antonio","Danny","Bryan","Tony","Luis","Mike","Stanley","Leonard","Nathan","Dale","Manuel","Rodney","Curtis","Norman","Allen","Marvin","Vincent","Glenn","Jeffery","Travis","Jeff","Chad","Jacob","Lee","Melvin","Alfred","Kyle","Francis","Bradley","Jesus","Herbert","Frederick","Ray","Joel","Edwin","Don","Eddie","Ricky","Troy","Randall","Barry","Alexander","Bernard","Mario","Leroy","Francisco","Marcus","Micheal","Theodore","Clifford","Miguel","Oscar","Jay","Jim","Tom","Calvin","Alex","Jon","Ronnie","Bill","Lloyd","Tommy","Leon","Derek","Warren","Darrell","Jerome","Floyd","Leo","Alvin","Tim","Wesley","Gordon","Dean","Greg","Jorge","Dustin","Pedro","Derrick","Dan","Lewis","Zachary","Corey","Herman","Maurice","Vernon","Roberto","Clyde","Glen","Hector","Shane","Ricardo","Sam","Rick","Lester","Brent","Ramon","Charlie","Tyler","Gilbert","Gene","Marc","Reginald","Ruben","Brett","Angel","Nathaniel","Rafael","Leslie","Edgar","Milton","Raul","Ben","Chester","Cecil","Duane","Franklin","Andre","Elmer","Brad","Gabriel","Ron","Mitchell","Roland","Arnold","Harvey","Jared","Adrian","Karl","Cory","Claude","Erik","Darryl","Jamie","Neil","Jessie","Christian","Javier","Fernando","Clinton","Ted","Mathew","Tyrone","Darren","Lonnie","Lance","Cody","Julio","Kelly","Kurt","Allan","Nelson","Guy","Clayton","Hugh","Max","Dwayne","Dwight","Armando","Felix","Jimmie","Everett","Jordan","Ian","Wallace","Ken","Bob","Jaime","Casey","Alfredo","Alberto","Dave","Ivan","Johnnie","Sidney","Byron","Julian","Isaac","Morris","Clifton","Willard","Daryl","Ross","Virgil","Andy","Marshall","Salvador","Perry","Kirk","Sergio","Marion","Tracy","Seth","Kent","Terrance","Rene","Eduardo","Terrence","Enrique","Freddie","Wade","Austin","Stuart","Fredrick","Arturo","Alejandro","Jackie","Joey","Nick","Luther","Wendell","Jeremiah","Evan","Julius","Dana","Donnie","Otis","Shannon","Trevor","Oliver","Luke","Homer","Gerard","Doug","Kenny","Hubert","Angelo","Shaun","Lyle","Matt","Lynn","Alfonso","Orlando","Rex","Carlton","Ernesto","Cameron","Neal","Pablo","Lorenzo","Omar","Wilbur","Blake","Grant","Horace","Roderick","Kerry","Abraham","Willis","Rickey","Jean","Ira","Andres","Cesar","Johnathan","Malcolm","Rudolph","Damon","Kelvin","Rudy","Preston","Alton","Archie","Marco","Wm","Pete","Randolph","Garry","Geoffrey","Jonathon","Felipe","Bennie","Gerardo","Ed","Dominic","Robin","Loren","Delbert","Colin","Guillermo","Earnest","Lucas","Benny","Noel","Spencer","Rodolfo","Myron","Edmund","Garrett","Salvatore","Cedric","Lowell","Gregg","Sherman","Wilson","Devin","Sylvester","Kim","Roosevelt","Israel","Jermaine","Forrest","Wilbert","Leland","Simon","Guadalupe","Clark","Irving","Carroll","Bryant","Owen","Rufus","Woodrow","Sammy","Kristopher","Mack","Levi","Marcos","Gustavo","Jake","Lionel","Marty","Taylor","Ellis","Dallas","Gilberto","Clint","Nicolas","Laurence","Ismael","Orville","Drew","Jody","Ervin","Dewey","Al","Wilfred","Josh","Hugo","Ignacio","Caleb","Tomas","Sheldon","Erick","Frankie","Stewart","Doyle","Darrel","Rogelio","Terence","Santiago","Alonzo","Elias","Bert","Elbert","Ramiro","Conrad","Pat","Noah","Grady","Phil","Cornelius","Lamar","Rolando","Clay","Percy","Dexter","Bradford","Merle","Darin","Amos","Terrell","Moses","Irvin","Saul","Roman","Darnell","Randal","Tommie","Timmy","Darrin","Winston","Brendan","Toby","Van","Abel","Dominick","Boyd","Courtney","Jan","Emilio","Elijah","Cary","Domingo","Santos","Aubrey","Emmett","Marlon","Emanuel","Jerald","Edmond"]},gender:["Agender","Androgyne","Androgynous","Bigender","Cis female","Cis male","Cis man","Cis woman","Cis","Cisgender female","Cisgender male","Cisgender man","Cisgender woman","Cisgender","Demi-boy","Demi-girl","Demi-man","Demi-woman","Demiflux","Demigender","F2M","FTM","Female to male trans man","Female to male transgender man","Female to male transsexual man","Female to male","Gender fluid","Gender neutral","Gender nonconforming","Gender questioning","Gender variant","Genderflux","Genderqueer","Hermaphrodite","Intersex man","Intersex person","Intersex woman","Intersex","M2F","MTF","Male to female trans woman","Male to female transgender woman","Male to female transsexual woman","Male to female","Man","Multigender","Neither","Neutrois","Non-binary","Omnigender","Other","Pangender","Polygender","T* man","T* woman","Trans female","Trans male","Trans man","Trans person","Trans woman","Trans","Transsexual female","Transsexual male","Transsexual man","Transsexual person","Transsexual woman","Transsexual","Transgender female","Transgender person","Transmasculine","Trigender","Two* person","Two-spirit person","Two-spirit","Woman","Xenogender"],job_area:["Solutions","Program","Brand","Security","Research","Marketing","Directives","Implementation","Integration","Functionality","Response","Paradigm","Tactics","Identity","Markets","Group","Division","Applications","Optimization","Operations","Infrastructure","Intranet","Communications","Web","Branding","Quality","Assurance","Mobility","Accounts","Data","Creative","Configuration","Accountability","Interactions","Factors","Usability","Metrics"],job_descriptor:["Lead","Senior","Direct","Corporate","Dynamic","Future","Product","National","Regional","District","Central","Global","Customer","Investor","International","Legacy","Forward","Internal","Human","Chief","Principal"],job_title_pattern:["{{person.jobDescriptor}} {{person.jobArea}} {{person.jobType}}"],job_type:["Supervisor","Associate","Executive","Liaison","Officer","Manager","Engineer","Specialist","Director","Coordinator","Administrator","Architect","Analyst","Designer","Planner","Orchestrator","Technician","Developer","Producer","Consultant","Assistant","Facilitator","Agent","Representative","Strategist"],last_name:{generic:["Abbott","Abernathy","Abshire","Adams","Altenwerth","Anderson","Ankunding","Armstrong","Auer","Aufderhar","Bahringer","Bailey","Balistreri","Barrows","Bartell","Bartoletti","Barton","Bashirian","Batz","Bauch","Baumbach","Bayer","Beahan","Beatty","Bechtelar","Becker","Bednar","Beer","Beier","Berge","Bergnaum","Bergstrom","Bernhard","Bernier","Bins","Blanda","Blick","Block","Bode","Boehm","Bogan","Bogisich","Borer","Bosco","Botsford","Boyer","Boyle","Bradtke","Brakus","Braun","Breitenberg","Brekke","Brown","Bruen","Buckridge","Carroll","Carter","Cartwright","Casper","Cassin","Champlin","Christiansen","Cole","Collier","Collins","Conn","Connelly","Conroy","Considine","Corkery","Cormier","Corwin","Cremin","Crist","Crona","Cronin","Crooks","Cruickshank","Cummerata","Cummings","Dach","D'Amore","Daniel","Dare","Daugherty","Davis","Deckow","Denesik","Dibbert","Dickens","Dicki","Dickinson","Dietrich","Donnelly","Dooley","Douglas","Doyle","DuBuque","Durgan","Ebert","Effertz","Emard","Emmerich","Erdman","Ernser","Fadel","Fahey","Farrell","Fay","Feeney","Feest","Feil","Ferry","Fisher","Flatley","Frami","Franecki","Franey","Friesen","Fritsch","Funk","Gerhold","Gerlach","Gibson","Gislason","Gleason","Gleichner","Glover","Goldner","Goodwin","Gorczany","Gottlieb","Goyette","Grady","Graham","Grant","Green","Greenfelder","Greenholt","Grimes","Gulgowski","Gusikowski","Gutkowski","Gutmann","Haag","Hackett","Hagenes","Hahn","Haley","Halvorson","Hamill","Hammes","Hand","Hane","Hansen","Harber","Harris","Hartmann","Harvey","Hauck","Hayes","Heaney","Heathcote","Hegmann","Heidenreich","Heller","Herman","Hermann","Hermiston","Herzog","Hessel","Hettinger","Hickle","Hilll","Hills","Hilpert","Hintz","Hirthe","Hodkiewicz","Hoeger","Homenick","Hoppe","Howe","Howell","Hudson","Huel","Huels","Hyatt","Jacobi","Jacobs","Jacobson","Jakubowski","Jaskolski","Jast","Jenkins","Jerde","Johns","Johnson","Johnston","Jones","Kassulke","Kautzer","Keebler","Keeling","Kemmer","Kerluke","Kertzmann","Kessler","Kiehn","Kihn","Kilback","King","Kirlin","Klein","Kling","Klocko","Koch","Koelpin","Koepp","Kohler","Konopelski","Koss","Kovacek","Kozey","Krajcik","Kreiger","Kris","Kshlerin","Kub","Kuhic","Kuhlman","Kuhn","Kulas","Kunde","Kunze","Kuphal","Kutch","Kuvalis","Labadie","Lakin","Lang","Langosh","Langworth","Larkin","Larson","Leannon","Lebsack","Ledner","Leffler","Legros","Lehner","Lemke","Lesch","Leuschke","Lind","Lindgren","Littel","Little","Lockman","Lowe","Lubowitz","Lueilwitz","Luettgen","Lynch","Macejkovic","MacGyver","Maggio","Mann","Mante","Marks","Marquardt","Marvin","Mayer","Mayert","McClure","McCullough","McDermott","McGlynn","McKenzie","McLaughlin","Medhurst","Mertz","Metz","Miller","Mills","Mitchell","Moen","Mohr","Monahan","Moore","Morar","Morissette","Mosciski","Mraz","Mueller","Muller","Murazik","Murphy","Murray","Nader","Nicolas","Nienow","Nikolaus","Nitzsche","Nolan","Oberbrunner","O'Connell","O'Conner","O'Hara","O'Keefe","O'Kon","Okuneva","Olson","Ondricka","O'Reilly","Orn","Ortiz","Osinski","Pacocha","Padberg","Pagac","Parisian","Parker","Paucek","Pfannerstill","Pfeffer","Pollich","Pouros","Powlowski","Predovic","Price","Prohaska","Prosacco","Purdy","Quigley","Quitzon","Rath","Ratke","Rau","Raynor","Reichel","Reichert","Reilly","Reinger","Rempel","Renner","Reynolds","Rice","Rippin","Ritchie","Robel","Roberts","Rodriguez","Rogahn","Rohan","Rolfson","Romaguera","Roob","Rosenbaum","Rowe","Ruecker","Runolfsdottir","Runolfsson","Runte","Russel","Rutherford","Ryan","Sanford","Satterfield","Sauer","Sawayn","Schaden","Schaefer","Schamberger","Schiller","Schimmel","Schinner","Schmeler","Schmidt","Schmitt","Schneider","Schoen","Schowalter","Schroeder","Schulist","Schultz","Schumm","Schuppe","Schuster","Senger","Shanahan","Shields","Simonis","Sipes","Skiles","Smith","Smitham","Spencer","Spinka","Sporer","Stamm","Stanton","Stark","Stehr","Steuber","Stiedemann","Stokes","Stoltenberg","Stracke","Streich","Stroman","Strosin","Swaniawski","Swift","Terry","Thiel","Thompson","Tillman","Torp","Torphy","Towne","Toy","Trantow","Tremblay","Treutel","Tromp","Turcotte","Turner","Ullrich","Upton","Vandervort","Veum","Volkman","Von","VonRueden","Waelchi","Walker","Walsh","Walter","Ward","Waters","Watsica","Weber","Wehner","Weimann","Weissnat","Welch","West","White","Wiegand","Wilderman","Wilkinson","Will","Williamson","Willms","Windler","Wintheiser","Wisoky","Wisozk","Witting","Wiza","Wolf","Wolff","Wuckert","Wunsch","Wyman","Yost","Yundt","Zboncak","Zemlak","Ziemann","Zieme","Zulauf"]},last_name_pattern:{generic:[{value:"{{person.last_name.generic}}",weight:95},{value:"{{person.last_name.generic}}-{{person.last_name.generic}}",weight:5}]},middle_name:{generic:["Addison","Alex","Anderson","Angel","Arden","August","Austin","Avery","Bailey","Billie","Blake","Bowie","Brooklyn","Cameron","Charlie","Corey","Dakota","Drew","Elliott","Ellis","Emerson","Finley","Gray","Greer","Harper","Hayden","Jaden","James","Jamie","Jordan","Jules","Kai","Kendall","Kennedy","Kyle","Leslie","Logan","London","Marlowe","Micah","Nico","Noah","North","Parker","Phoenix","Quinn","Reagan","Reese","Reign","Riley","River","Robin","Rory","Rowan","Ryan","Sage","Sasha","Sawyer","Shawn","Shiloh","Skyler","Taylor"],female:["Abigail","Adele","Alex","Alice","Alisha","Amber","Amelia","Amora","Ana\xefs","Angelou","Anika","Anise","Annabel","Anne","Aphrodite","Aretha","Arya","Ashton","Aster","Audrey","Avery","Bailee","Bay","Belle","Beth","Billie","Blair","Blaise","Blake","Blanche","Blue","Bree","Brielle","Brienne","Brooke","Caleen","Candice","Caprice","Carelyn","Caylen","Celine","Cerise","Cia","Claire","Claudia","Clementine","Coral","Coraline","Dahlia","Dakota","Dawn","Della","Demi","Denise","Denver","Devine","Devon","Diana","Dylan","Ebony","Eden","Eleanor","Elein","Elizabeth","Ellen","Elodie","Eloise","Ember","Emma","Erin","Eyre","Faith","Farrah","Fawn","Fayre","Fern","France","Francis","Frida","Genisis","Georgia","Grace","Gwen","Harley","Harper","Hazel","Helen","Hippolyta","Holly","Hope","Imani","Iowa","Ireland","Irene","Iris","Isa","Isla","Ivy","Jade","Jane","Jazz","Jean","Jess","Jett","Jo","Joan","Jolie","Jordan","Josie","Journey","Joy","Jules","Julien","Juliet","Juniper","Justice","Kali","Karma","Kat","Kate","Kennedy","Keva","Kylie","Lake","Lane","Lark","Layla","Lee","Leigh","Leona","Lexi","London","Lou","Louise","Love","Luna","Lux","Lynn","Lyric","Maddie","Mae","Marie","Matilda","Maude","Maybel","Meadow","Medusa","Mercy","Michelle","Mirabel","Monroe","Morgan","Nalia","Naomi","Nova","Olive","Paige","Parker","Pax","Pearl","Penelope","Phoenix","Quinn","Rae","Rain","Raven","Ray","Raye","Rebel","Reese","Reeve","Regan","Riley","River","Robin","Rory","Rose","Royal","Ruth","Rylie","Sage","Sam","Saturn","Scout","Serena","Sky","Skylar","Sofia","Sophia","Storm","Sue","Suzanne","Sydney","Taylen","Taylor","Teagan","Tempest","Tenley","Thea","Trinity","Valerie","Venus","Vera","Violet","Willow","Winter","Xena","Zaylee","Zion","Zoe"],male:["Ace","Aiden","Alexander","Ander","Anthony","Asher","August","Aziel","Bear","Beckham","Benjamin","Buddy","Calvin","Carter","Charles","Christopher","Clyde","Cooper","Daniel","David","Dior","Dylan","Elijah","Ellis","Emerson","Ethan","Ezra","Fletcher","Flynn","Gabriel","Grayson","Gus","Hank","Harrison","Hendrix","Henry","Houston","Hudson","Hugh","Isaac","Jack","Jackson","Jacob","Jakobe","James","Jaxon","Jaxtyn","Jayden","John","Joseph","Josiah","Jude","Julian","Karsyn","Kenji","Kobe","Kylo","Lennon","Leo","Levi","Liam","Lincoln","Logan","Louis","Lucas","Lucky","Luke","Mason","Mateo","Matthew","Maverick","Michael","Monroe","Nixon","Ocean","Oliver","Otis","Otto","Owen","Ozzy","Parker","Rocky","Samuel","Sebastian","Sonny","Teddy","Theo","Theodore","Thomas","Truett","Walter","Warren","Watson","William","Wison","Wyatt","Ziggy","Zyair"]},name:[{value:"{{person.firstName}} {{person.lastName}}",weight:49},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}}",weight:7},{value:"{{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:7},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:1}],prefix:{generic:["Dr.","Miss","Mr.","Mrs.","Ms."],female:["Mrs.","Ms.","Miss","Dr."],male:["Mr.","Dr."]},sex:["female","male"],suffix:["Jr.","Sr.","I","II","III","IV","V","MD","DDS","PhD","DVM"],western_zodiac_sign:["Aquarius","Pisces","Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn"]},phone_number:{format:{human:["!##-!##-####","(!##) !##-####","1-!##-!##-####","!##.!##.####","!##-!##-#### x###","(!##) !##-#### x###","1-!##-!##-#### x###","!##.!##.#### x###","!##-!##-#### x####","(!##) !##-#### x####","1-!##-!##-#### x####","!##.!##.#### x####","!##-!##-#### x#####","(!##) !##-#### x#####","1-!##-!##-#### x#####","!##.!##.#### x#####"],international:["+1!##!######"],national:["(!##) !##-####"]}},science:{chemical_element:[{symbol:"H",name:"Hydrogen",atomicNumber:1},{symbol:"He",name:"Helium",atomicNumber:2},{symbol:"Li",name:"Lithium",atomicNumber:3},{symbol:"Be",name:"Beryllium",atomicNumber:4},{symbol:"B",name:"Boron",atomicNumber:5},{symbol:"C",name:"Carbon",atomicNumber:6},{symbol:"N",name:"Nitrogen",atomicNumber:7},{symbol:"O",name:"Oxygen",atomicNumber:8},{symbol:"F",name:"Fluorine",atomicNumber:9},{symbol:"Ne",name:"Neon",atomicNumber:10},{symbol:"Na",name:"Sodium",atomicNumber:11},{symbol:"Mg",name:"Magnesium",atomicNumber:12},{symbol:"Al",name:"Aluminium",atomicNumber:13},{symbol:"Si",name:"Silicon",atomicNumber:14},{symbol:"P",name:"Phosphorus",atomicNumber:15},{symbol:"S",name:"Sulfur",atomicNumber:16},{symbol:"Cl",name:"Chlorine",atomicNumber:17},{symbol:"Ar",name:"Argon",atomicNumber:18},{symbol:"K",name:"Potassium",atomicNumber:19},{symbol:"Ca",name:"Calcium",atomicNumber:20},{symbol:"Sc",name:"Scandium",atomicNumber:21},{symbol:"Ti",name:"Titanium",atomicNumber:22},{symbol:"V",name:"Vanadium",atomicNumber:23},{symbol:"Cr",name:"Chromium",atomicNumber:24},{symbol:"Mn",name:"Manganese",atomicNumber:25},{symbol:"Fe",name:"Iron",atomicNumber:26},{symbol:"Co",name:"Cobalt",atomicNumber:27},{symbol:"Ni",name:"Nickel",atomicNumber:28},{symbol:"Cu",name:"Copper",atomicNumber:29},{symbol:"Zn",name:"Zinc",atomicNumber:30},{symbol:"Ga",name:"Gallium",atomicNumber:31},{symbol:"Ge",name:"Germanium",atomicNumber:32},{symbol:"As",name:"Arsenic",atomicNumber:33},{symbol:"Se",name:"Selenium",atomicNumber:34},{symbol:"Br",name:"Bromine",atomicNumber:35},{symbol:"Kr",name:"Krypton",atomicNumber:36},{symbol:"Rb",name:"Rubidium",atomicNumber:37},{symbol:"Sr",name:"Strontium",atomicNumber:38},{symbol:"Y",name:"Yttrium",atomicNumber:39},{symbol:"Zr",name:"Zirconium",atomicNumber:40},{symbol:"Nb",name:"Niobium",atomicNumber:41},{symbol:"Mo",name:"Molybdenum",atomicNumber:42},{symbol:"Tc",name:"Technetium",atomicNumber:43},{symbol:"Ru",name:"Ruthenium",atomicNumber:44},{symbol:"Rh",name:"Rhodium",atomicNumber:45},{symbol:"Pd",name:"Palladium",atomicNumber:46},{symbol:"Ag",name:"Silver",atomicNumber:47},{symbol:"Cd",name:"Cadmium",atomicNumber:48},{symbol:"In",name:"Indium",atomicNumber:49},{symbol:"Sn",name:"Tin",atomicNumber:50},{symbol:"Sb",name:"Antimony",atomicNumber:51},{symbol:"Te",name:"Tellurium",atomicNumber:52},{symbol:"I",name:"Iodine",atomicNumber:53},{symbol:"Xe",name:"Xenon",atomicNumber:54},{symbol:"Cs",name:"Caesium",atomicNumber:55},{symbol:"Ba",name:"Barium",atomicNumber:56},{symbol:"La",name:"Lanthanum",atomicNumber:57},{symbol:"Ce",name:"Cerium",atomicNumber:58},{symbol:"Pr",name:"Praseodymium",atomicNumber:59},{symbol:"Nd",name:"Neodymium",atomicNumber:60},{symbol:"Pm",name:"Promethium",atomicNumber:61},{symbol:"Sm",name:"Samarium",atomicNumber:62},{symbol:"Eu",name:"Europium",atomicNumber:63},{symbol:"Gd",name:"Gadolinium",atomicNumber:64},{symbol:"Tb",name:"Terbium",atomicNumber:65},{symbol:"Dy",name:"Dysprosium",atomicNumber:66},{symbol:"Ho",name:"Holmium",atomicNumber:67},{symbol:"Er",name:"Erbium",atomicNumber:68},{symbol:"Tm",name:"Thulium",atomicNumber:69},{symbol:"Yb",name:"Ytterbium",atomicNumber:70},{symbol:"Lu",name:"Lutetium",atomicNumber:71},{symbol:"Hf",name:"Hafnium",atomicNumber:72},{symbol:"Ta",name:"Tantalum",atomicNumber:73},{symbol:"W",name:"Tungsten",atomicNumber:74},{symbol:"Re",name:"Rhenium",atomicNumber:75},{symbol:"Os",name:"Osmium",atomicNumber:76},{symbol:"Ir",name:"Iridium",atomicNumber:77},{symbol:"Pt",name:"Platinum",atomicNumber:78},{symbol:"Au",name:"Gold",atomicNumber:79},{symbol:"Hg",name:"Mercury",atomicNumber:80},{symbol:"Tl",name:"Thallium",atomicNumber:81},{symbol:"Pb",name:"Lead",atomicNumber:82},{symbol:"Bi",name:"Bismuth",atomicNumber:83},{symbol:"Po",name:"Polonium",atomicNumber:84},{symbol:"At",name:"Astatine",atomicNumber:85},{symbol:"Rn",name:"Radon",atomicNumber:86},{symbol:"Fr",name:"Francium",atomicNumber:87},{symbol:"Ra",name:"Radium",atomicNumber:88},{symbol:"Ac",name:"Actinium",atomicNumber:89},{symbol:"Th",name:"Thorium",atomicNumber:90},{symbol:"Pa",name:"Protactinium",atomicNumber:91},{symbol:"U",name:"Uranium",atomicNumber:92},{symbol:"Np",name:"Neptunium",atomicNumber:93},{symbol:"Pu",name:"Plutonium",atomicNumber:94},{symbol:"Am",name:"Americium",atomicNumber:95},{symbol:"Cm",name:"Curium",atomicNumber:96},{symbol:"Bk",name:"Berkelium",atomicNumber:97},{symbol:"Cf",name:"Californium",atomicNumber:98},{symbol:"Es",name:"Einsteinium",atomicNumber:99},{symbol:"Fm",name:"Fermium",atomicNumber:100},{symbol:"Md",name:"Mendelevium",atomicNumber:101},{symbol:"No",name:"Nobelium",atomicNumber:102},{symbol:"Lr",name:"Lawrencium",atomicNumber:103},{symbol:"Rf",name:"Rutherfordium",atomicNumber:104},{symbol:"Db",name:"Dubnium",atomicNumber:105},{symbol:"Sg",name:"Seaborgium",atomicNumber:106},{symbol:"Bh",name:"Bohrium",atomicNumber:107},{symbol:"Hs",name:"Hassium",atomicNumber:108},{symbol:"Mt",name:"Meitnerium",atomicNumber:109},{symbol:"Ds",name:"Darmstadtium",atomicNumber:110},{symbol:"Rg",name:"Roentgenium",atomicNumber:111},{symbol:"Cn",name:"Copernicium",atomicNumber:112},{symbol:"Nh",name:"Nihonium",atomicNumber:113},{symbol:"Fl",name:"Flerovium",atomicNumber:114},{symbol:"Mc",name:"Moscovium",atomicNumber:115},{symbol:"Lv",name:"Livermorium",atomicNumber:116},{symbol:"Ts",name:"Tennessine",atomicNumber:117},{symbol:"Og",name:"Oganesson",atomicNumber:118}],unit:[{name:"meter",symbol:"m"},{name:"second",symbol:"s"},{name:"mole",symbol:"mol"},{name:"ampere",symbol:"A"},{name:"kelvin",symbol:"K"},{name:"candela",symbol:"cd"},{name:"kilogram",symbol:"kg"},{name:"radian",symbol:"rad"},{name:"hertz",symbol:"Hz"},{name:"newton",symbol:"N"},{name:"pascal",symbol:"Pa"},{name:"joule",symbol:"J"},{name:"watt",symbol:"W"},{name:"coulomb",symbol:"C"},{name:"volt",symbol:"V"},{name:"ohm",symbol:"\u03a9"},{name:"tesla",symbol:"T"},{name:"degree Celsius",symbol:"\xb0C"},{name:"lumen",symbol:"lm"},{name:"becquerel",symbol:"Bq"},{name:"gray",symbol:"Gy"},{name:"sievert",symbol:"Sv"},{name:"steradian",symbol:"sr"},{name:"farad",symbol:"F"},{name:"siemens",symbol:"S"},{name:"weber",symbol:"Wb"},{name:"henry",symbol:"H"},{name:"lux",symbol:"lx"},{name:"katal",symbol:"kat"}]},team:{creature:["ants","bats","bears","bees","birds","buffalo","cats","chickens","cattle","dogs","dolphins","ducks","elephants","fishes","foxes","frogs","geese","goats","horses","kangaroos","lions","monkeys","owls","oxen","penguins","people","pigs","rabbits","sheep","tigers","whales","wolves","zebras","banshees","crows","black cats","chimeras","ghosts","conspirators","dragons","dwarves","elves","enchanters","exorcists","sons","foes","giants","gnomes","goblins","gooses","griffins","lycanthropes","nemesis","ogres","oracles","prophets","sorcerors","spiders","spirits","vampires","warlocks","vixens","werewolves","witches","worshipers","zombies","druids"],name:["{{location.state}} {{team.creature}}"]},vehicle:{bicycle_type:["Adventure Road Bicycle","BMX Bicycle","City Bicycle","Cruiser Bicycle","Cyclocross Bicycle","Dual-Sport Bicycle","Fitness Bicycle","Flat-Foot Comfort Bicycle","Folding Bicycle","Hybrid Bicycle","Mountain Bicycle","Recumbent Bicycle","Road Bicycle","Tandem Bicycle","Touring Bicycle","Track/Fixed-Gear Bicycle","Triathlon/Time Trial Bicycle","Tricycle"],fuel:["Diesel","Electric","Gasoline","Hybrid"],manufacturer:["Aston Martin","Audi","BMW","Bentley","Bugatti","Cadillac","Chevrolet","Chrysler","Dodge","Ferrari","Fiat","Ford","Honda","Hyundai","Jaguar","Jeep","Kia","Lamborghini","Land Rover","Maserati","Mazda","Mercedes Benz","Mini","Nissan","Polestar","Porsche","Rolls Royce","Smart","Tesla","Toyota","Volkswagen","Volvo"],model:["1","2","911","A4","A8","ATS","Accord","Alpine","Altima","Aventador","Beetle","CTS","CX-9","Camaro","Camry","Challenger","Charger","Civic","Colorado","Corvette","Countach","Cruze","Durango","El Camino","Element","Escalade","Expedition","Explorer","F-150","Fiesta","Focus","Fortwo","Golf","Grand Caravan","Grand Cherokee","Impala","Jetta","Land Cruiser","LeBaron","Malibu","Mercielago","Model 3","Model S","Model T","Model X","Model Y","Mustang","PT Cruiser","Prius","Ranchero","Roadster","Sentra","Silverado","Spyder","Taurus","V90","Volt","Wrangler","XC90","XTS"],type:["Cargo Van","Convertible","Coupe","Crew Cab Pickup","Extended Cab Pickup","Hatchback","Minivan","Passenger Van","SUV","Sedan","Wagon"]},word:{adjective:["abandoned","able","acceptable","acclaimed","accomplished","accurate","aching","acidic","actual","admired","adolescent","advanced","affectionate","afraid","aged","aggravating","aggressive","agile","agitated","agreeable","ajar","alarmed","alert","alienated","alive","all","altruistic","amazing","ambitious","ample","amused","angelic","anguished","animated","annual","another","antique","any","apprehensive","appropriate","apt","arid","artistic","ashamed","assured","astonishing","athletic","austere","authentic","authorized","avaricious","average","aware","awesome","awful","babyish","back","bad","baggy","bare","basic","beloved","beneficial","best","better","big","biodegradable","bitter","black","black-and-white","blank","blaring","bleak","blind","blond","blue","blushing","bogus","boiling","bony","boring","bossy","both","bouncy","bowed","brave","breakable","bright","brilliant","brisk","broken","brown","bruised","bulky","burdensome","burly","bustling","busy","buttery","buzzing","calculating","candid","carefree","careless","caring","cautious","cavernous","celebrated","charming","cheap","cheerful","chilly","chubby","circular","classic","clean","clear","clear-cut","close","closed","cloudy","clueless","clumsy","cluttered","coarse","colorful","colorless","colossal","comfortable","common","compassionate","competent","complete","complicated","concerned","concrete","confused","considerate","content","cool","cooperative","coordinated","corny","corrupt","courageous","courteous","crafty","crazy","creamy","creative","criminal","critical","crooked","crowded","cruel","crushing","cuddly","cultivated","cumbersome","curly","cute","damaged","damp","dapper","dark","darling","dazzling","dead","deadly","deafening","dearest","decent","decisive","deep","defenseless","defensive","deficient","definite","definitive","delectable","delicious","delirious","dense","dental","dependable","dependent","descriptive","deserted","determined","devoted","different","difficult","digital","diligent","dim","direct","dirty","discrete","disloyal","dismal","distant","distinct","distorted","doting","downright","drab","dramatic","dreary","dual","dull","dutiful","each","early","earnest","easy","ecstatic","edible","educated","elastic","elderly","electric","elegant","elementary","elliptical","eminent","emotional","empty","enchanted","enchanting","energetic","enlightened","enraged","entire","equatorial","essential","esteemed","ethical","everlasting","every","evil","exalted","excellent","excitable","excited","exhausted","exotic","expensive","experienced","expert","extra-large","extroverted","failing","faint","fair","fake","familiar","fantastic","far","far-flung","far-off","faraway","fat","fatal","fatherly","favorable","favorite","fearless","feline","filthy","fine","finished","firm","first","firsthand","fixed","flashy","flawed","flawless","flickering","flimsy","flowery","fluffy","flustered","focused","fond","foolhardy","foolish","forceful","formal","forsaken","fortunate","fragrant","frail","frank","free","french","frequent","friendly","frightened","frilly","frivolous","frizzy","front","frozen","frugal","fruitful","functional","funny","fussy","fuzzy","gaseous","general","gentle","genuine","gifted","gigantic","giving","glaring","glass","gleaming","glittering","gloomy","glorious","glossy","glum","golden","good","good-natured","gorgeous","graceful","gracious","grandiose","granular","grave","gray","great","greedy","grim","grimy","gripping","grizzled","grouchy","grounded","growing","grown","grubby","gruesome","grumpy","guilty","gullible","gummy","hairy","handsome","handy","happy","happy-go-lucky","hard-to-find","harmful","hasty","hateful","haunting","heartfelt","heavenly","heavy","hefty","helpful","helpless","hidden","hoarse","hollow","homely","honorable","honored","hopeful","hospitable","hot","huge","humble","humiliating","hungry","hurtful","husky","icy","ideal","idealistic","idolized","ignorant","ill","ill-fated","illiterate","illustrious","imaginary","imaginative","immaculate","immediate","immense","impartial","impassioned","impeccable","impish","impolite","important","impossible","impractical","impressionable","impressive","improbable","impure","inborn","incomparable","incomplete","inconsequential","indelible","indolent","inexperienced","infamous","infatuated","inferior","infinite","informal","innocent","insecure","insidious","insignificant","insistent","instructive","intelligent","intent","interesting","internal","international","intrepid","ironclad","irresponsible","jagged","jam-packed","jaunty","jealous","jittery","joyful","joyous","jubilant","judicious","juicy","jumbo","junior","juvenile","kaleidoscopic","key","knotty","knowledgeable","known","kooky","kosher","lanky","last","lasting","late","lavish","lawful","lazy","leading","lean","left","legal","light","lighthearted","likable","likely","limited","limp","limping","linear","lined","liquid","little","live","lively","livid","lone","lonely","long","long-term","lost","lovable","lovely","low","lucky","lumbering","lumpy","lustrous","mad","made-up","magnificent","majestic","major","male","mammoth","married","marvelous","massive","mature","meager","mealy","mean","measly","meaty","mediocre","medium","memorable","menacing","merry","messy","metallic","mild","milky","mindless","minor","minty","miserable","miserly","misguided","mixed","moist","monstrous","monthly","monumental","moral","motionless","muddy","muffled","multicolored","mundane","murky","mushy","musty","muted","mysterious","narrow","natural","naughty","nautical","near","neat","necessary","needy","negative","neglected","negligible","neighboring","nervous","new","next","nice","nifty","nimble","nippy","nocturnal","normal","noted","noteworthy","noxious","numb","nutritious","obedient","oblong","obvious","odd","oddball","official","oily","old","old-fashioned","only","optimal","optimistic","orange","orderly","ordinary","ornate","ornery","other","our","outgoing","outlandish","outlying","outrageous","outstanding","oval","overcooked","overdue","palatable","pale","paltry","parallel","parched","partial","passionate","pastel","peaceful","peppery","perfumed","perky","personal","pertinent","pessimistic","petty","phony","physical","pink","pitiful","plain","pleasant","pleased","pleasing","plump","pointed","pointless","polished","polite","political","poor","portly","posh","possible","potable","powerful","powerless","practical","precious","present","prestigious","pretty","pricey","prickly","primary","prime","private","probable","productive","profitable","profuse","proper","proud","prudent","punctual","puny","pure","purple","pushy","putrid","puzzled","qualified","quarrelsome","quarterly","queasy","querulous","questionable","quick","quick-witted","quiet","quintessential","quixotic","radiant","ragged","rapid","rare","raw","realistic","reasonable","recent","reckless","rectangular","red","reflecting","regal","regular","remarkable","remorseful","repentant","respectful","responsible","rewarding","rich","right","rigid","ripe","roasted","robust","rosy","rotating","rotten","rough","round","rowdy","royal","rubbery","ruddy","rundown","runny","rural","rusty","sad","salty","same","sandy","sarcastic","sardonic","scaly","scared","scary","scented","scientific","scornful","scratchy","second","second-hand","secondary","secret","self-assured","self-reliant","selfish","sentimental","separate","serene","serpentine","severe","shabby","shadowy","shady","shallow","shameful","shameless","shimmering","shiny","shocked","shoddy","short","short-term","showy","shrill","shy","sick","silent","silky","silver","similar","simple","simplistic","sinful","sizzling","skeletal","sleepy","slight","slimy","slow","slushy","small","smart","smoggy","smooth","smug","snappy","snarling","sneaky","sniveling","snoopy","sociable","soft","soggy","somber","some","sophisticated","sore","sorrowful","soulful","soupy","sour","spanish","sparkling","sparse","specific","speedy","spherical","spiffy","spirited","spiteful","splendid","spotless","square","squeaky","squiggly","stable","staid","stained","stale","standard","stark","steel","steep","sticky","stiff","stingy","stormy","straight","strange","strict","strident","striking","strong","stunning","stupendous","sturdy","stylish","subdued","submissive","substantial","subtle","suburban","sudden","sugary","sunny","super","superb","superficial","superior","supportive","sure-footed","surprised","svelte","sweet","swift","talkative","tall","tame","tangible","tasty","tattered","taut","tedious","teeming","tempting","tender","tense","tepid","terrible","that","these","thick","thin","thorny","thorough","those","thrifty","tidy","tight","timely","tinted","tiny","tired","torn","total","tough","tragic","trained","triangular","tricky","trim","trivial","troubled","true","trusting","trustworthy","trusty","turbulent","twin","ugly","ultimate","unaware","uncomfortable","uncommon","unconscious","understated","uneven","unfinished","unfit","unfortunate","unhappy","unhealthy","uniform","unimportant","unique","unkempt","unknown","unlawful","unlined","unlucky","unpleasant","unrealistic","unripe","unruly","unselfish","unsightly","unsteady","unsung","untidy","untimely","untried","untrue","unused","unusual","unwelcome","unwieldy","unwilling","unwritten","upbeat","upright","upset","urban","usable","useless","utilized","utter","vague","vain","valuable","variable","vast","velvety","vengeful","vibrant","victorious","violent","vivacious","vivid","voluminous","warlike","warm","warmhearted","warped","wasteful","waterlogged","watery","wavy","wealthy","weary","webbed","wee","weekly","weighty","weird","well-documented","well-groomed","well-lit","well-made","well-off","well-to-do","well-worn","which","whimsical","whirlwind","whispered","white","whole","whopping","wicked","wide","wide-eyed","wiggly","willing","wilted","winding","windy","winged","wise","witty","wobbly","woeful","wonderful","wordy","worldly","worse","worst","worthless","worthwhile","worthy","wrathful","wretched","writhing","wrong","wry","yearly","yellow","yellowish","young","youthful","yummy","zany","zealous","zesty"],adverb:["abnormally","absentmindedly","accidentally","acidly","actually","adventurously","afterwards","almost","always","angrily","annually","anxiously","arrogantly","awkwardly","badly","bashfully","beautifully","bitterly","bleakly","blindly","blissfully","boastfully","boldly","bravely","briefly","brightly","briskly","broadly","busily","calmly","carefully","carelessly","cautiously","certainly","cheerfully","clearly","cleverly","closely","coaxingly","colorfully","commonly","continually","coolly","correctly","courageously","crossly","cruelly","curiously","daily","daintily","dearly","deceivingly","deeply","defiantly","deliberately","delightfully","diligently","dimly","doubtfully","dreamily","easily","elegantly","energetically","enormously","enthusiastically","equally","especially","even","evenly","eventually","exactly","excitedly","extremely","fairly","faithfully","famously","far","fast","fatally","ferociously","fervently","fiercely","fondly","foolishly","fortunately","frankly","frantically","freely","frenetically","frightfully","fully","furiously","generally","generously","gently","gladly","gleefully","gracefully","gratefully","greatly","greedily","happily","hastily","healthily","heavily","helpfully","helplessly","highly","honestly","hopelessly","hourly","hungrily","immediately","innocently","inquisitively","instantly","intensely","intently","interestingly","inwardly","irritably","jaggedly","jealously","joshingly","jovially","joyfully","joyously","jubilantly","judgementally","justly","keenly","kiddingly","kindheartedly","kindly","kissingly","knavishly","knottily","knowingly","knowledgeably","kookily","lazily","less","lightly","likely","limply","lively","loftily","longingly","loosely","loudly","lovingly","loyally","madly","majestically","meaningfully","mechanically","merrily","miserably","mockingly","monthly","more","mortally","mostly","mysteriously","naturally","nearly","neatly","needily","nervously","never","nicely","noisily","not","obediently","obnoxiously","oddly","offensively","officially","often","only","openly","optimistically","overconfidently","owlishly","painfully","partially","patiently","perfectly","physically","playfully","politely","poorly","positively","potentially","powerfully","promptly","properly","punctually","quaintly","quarrelsomely","queasily","questionably","questioningly","quicker","quickly","quietly","quirkily","quizzically","rapidly","rarely","readily","really","reassuringly","recklessly","regularly","reluctantly","repeatedly","reproachfully","restfully","righteously","rightfully","rigidly","roughly","rudely","sadly","safely","scarcely","scarily","searchingly","sedately","seemingly","seldom","selfishly","separately","seriously","shakily","sharply","sheepishly","shrilly","shyly","silently","sleepily","slowly","smoothly","softly","solemnly","solidly","sometimes","soon","speedily","stealthily","sternly","strictly","successfully","suddenly","surprisingly","suspiciously","sweetly","swiftly","sympathetically","tenderly","tensely","terribly","thankfully","thoroughly","thoughtfully","tightly","tomorrow","too","tremendously","triumphantly","truly","truthfully","ultimately","unabashedly","unaccountably","unbearably","unethically","unexpectedly","unfortunately","unimpressively","unnaturally","unnecessarily","upbeat","upliftingly","upright","upside-down","upward","upwardly","urgently","usefully","uselessly","usually","utterly","vacantly","vaguely","vainly","valiantly","vastly","verbally","very","viciously","victoriously","violently","vivaciously","voluntarily","warmly","weakly","wearily","well","wetly","wholly","wildly","willfully","wisely","woefully","wonderfully","worriedly","wrongly","yawningly","yearly","yearningly","yesterday","yieldingly","youthfully"],conjunction:["after","although","and","as","because","before","but","consequently","even","finally","for","furthermore","hence","how","however","if","inasmuch","incidentally","indeed","instead","lest","likewise","meanwhile","nor","now","once","or","provided","since","so","supposing","than","that","though","till","unless","until","what","when","whenever","where","whereas","wherever","whether","which","while","who","whoever","whose","why","yet"],interjection:["yuck","oh","phooey","blah","boo","whoa","yowza","huzzah","boohoo","fooey","geez","pfft","ew","ah","yum","brr","hm","yahoo","aha","woot","drat","gah","meh","psst","aw","ugh","yippee","eek","gee","bah","gadzooks","duh","ha","mmm","ouch","phew","ack","uh-huh","gosh","hmph","pish","zowie","er","ick","oof","um"],noun:["CD","SUV","abacus","academics","accelerator","accompanist","account","accountability","acquaintance","ad","adaptation","address","adrenalin","adult","advancement","advertisement","adviser","affect","affiliate","aftermath","agreement","airbus","aircraft","airline","airmail","airman","airport","alb","alert","allegation","alliance","alligator","allocation","almighty","amendment","amnesty","analogy","angle","annual","antelope","anticodon","apparatus","appliance","approach","apricot","arcade","archaeology","armchair","armoire","asset","assist","atrium","attraction","availability","avalanche","awareness","babushka","backbone","backburn","bakeware","bandwidth","bar","barge","baritone","barracks","baseboard","basket","bathhouse","bathrobe","battle","begonia","behest","bell","bench","bend","beret","best-seller","bid","bidet","bin","birdbath","birdcage","birth","blight","blossom","blowgun","bob","bog","bonfire","bonnet","bookcase","bookend","boulevard","bourgeoisie","bowler","bowling","boyfriend","brace","bracelet","bran","breastplate","brief","brochure","brook","brush","bug","bump","bungalow","cafe","cake","calculus","cannon","cantaloupe","cap","cappelletti","captain","caption","carboxyl","cardboard","carnival","case","casement","cash","casket","cassava","castanet","catalyst","cauliflower","cellar","celsius","cemetery","ceramic","ceramics","certification","chainstay","chairperson","challenge","championship","chap","chapel","character","characterization","charlatan","charm","chasuble","cheese","cheetah","chiffonier","chops","chow","cinder","cinema","circumference","citizen","clamp","clavicle","cleaner","climb","co-producer","coal","coast","cod","coil","coin","coliseum","collaboration","collectivization","colon","colonialism","comestible","commercial","commodity","community","comparison","completion","complication","compromise","concentration","configuration","confusion","conservation","conservative","consistency","contractor","contrail","convection","conversation","cook","coordination","cop-out","cope","cork","cornet","corporation","corral","cosset","costume","couch","council","councilman","countess","courtroom","cow","creator","creature","crest","cricket","crocodile","cross-contamination","cruelty","cuckoo","curl","custody","custom","cutlet","cutover","cycle","daddy","dandelion","dash","daughter","dead","decision","deck","declaration","decongestant","decryption","deduction","deed","deer","defendant","density","department","dependency","deployment","depot","derby","descendant","descent","design","designation","desk","detective","devastation","developing","developmental","devil","diagram","digestive","digit","dime","director","disadvantage","disappointment","disclosure","disconnection","discourse","dish","disk","disposer","distinction","diver","diversity","dividend","divine","doing","doorpost","doubter","draft","draw","dream","dredger","dress","drive","drug","duffel","dulcimer","dusk","duster","dwell","e-mail","earth","ecliptic","ectoderm","edge","editor","effector","eggplant","electronics","elevation","elevator","elver","embarrassment","embossing","emergent","encouragement","entry","epic","equal","essence","eternity","ethyl","euphonium","event","exasperation","excess","executor","exhaust","expansion","expense","experience","exploration","extension","extent","exterior","eyebrow","eyeliner","farm","farmer","fat","fax","feather","fedora","fellow","fen","fencing","ferret","festival","fibre","filter","final","finding","finer","finger","fireplace","fisherman","fishery","fit","flame","flat","fledgling","flight","flint","flood","flu","fog","fold","folklore","follower","following","foodstuffs","footrest","forage","forager","forgery","fork","formamide","formation","formula","fort","fowl","fraudster","freckle","freezing","freight","fuel","fun","fund","fundraising","futon","gallery","galoshes","gastropod","gazebo","gerbil","ghost","giant","gift","giggle","glider","gloom","goat","godfather","godparent","going","goodwill","governance","government","gown","gradient","graffiti","grandpa","grandson","granny","grass","gray","gripper","grouper","guacamole","guard","guidance","guide","gym","gymnast","habit","haircut","halt","hamburger","hammock","handful","handle","handover","harp","haversack","hawk","heartache","heartbeat","heating","hello","help","hepatitis","heroine","hexagon","hierarchy","hippodrome","honesty","hoof","hope","horde","hornet","horst","hose","hospitalization","hovel","hovercraft","hubris","humidity","humor","hundred","hunger","hunt","husband","hutch","hydrant","hydrocarbon","hydrolyse","hydrolyze","hyena","hygienic","hyphenation","ice-cream","icebreaker","igloo","ignorance","illusion","impact","import","importance","impostor","in-joke","incandescence","independence","individual","information","injunction","innovation","insolence","inspection","instance","institute","instruction","instructor","integer","intellect","intent","interchange","interior","intervention","interviewer","invite","iridescence","issue","jacket","jazz","jellyfish","jet","jogging","joy","juggernaut","jump","jungle","junior","jury","kettledrum","kick","kielbasa","kinase","king","kiss","kit","knickers","knight","knitting","knuckle","label","labourer","lace","lady","lamp","language","larva","lashes","laughter","lava","lawmaker","lay","leading","league","legend","legging","legislature","lender","license","lid","lieu","lifestyle","lift","linseed","litter","loaf","lobster","longboat","lotion","lounge","louse","lox","loyalty","luck","lyre","maestro","mainstream","maintainer","majority","makeover","making","mallard","management","manner","mantua","marathon","march","marimba","marketplace","marksman","markup","marten","massage","masterpiece","mathematics","meadow","meal","meander","meatloaf","mechanic","median","membership","mentor","merit","metabolite","metal","middle","midwife","milestone","millet","minion","minister","minor","minority","mixture","mobility","molasses","mom","moment","monasticism","monocle","monster","morbidity","morning","mortise","mountain","mouser","mousse","mozzarella","muscat","mythology","napkin","necklace","nectarine","negotiation","nephew","nerve","netsuke","newsletter","newsprint","newsstand","nightlife","noon","nougat","nucleotidase","nudge","numeracy","numeric","nun","obedience","obesity","object","obligation","ocelot","octave","offset","oil","omelet","onset","opera","operating","optimal","orchid","order","ostrich","other","outlaw","outrun","outset","overcoat","overheard","overload","ownership","pacemaker","packaging","paintwork","palate","pants","pantyhose","papa","parade","parsnip","partridge","passport","pasta","patroller","pear","pearl","pecan","pendant","peninsula","pension","peony","pepper","perfection","permafrost","perp","petal","petticoat","pharmacopoeia","phrase","pick","piglet","pigpen","pigsty","pile","pillbox","pillow","pilot","pine","pinstripe","place","plain","planula","plastic","platter","platypus","pleasure","pliers","plugin","plumber","pneumonia","pocket-watch","poetry","polarisation","polyester","pomelo","pop","poppy","popularity","populist","porter","possession","postbox","precedent","premeditation","premier","premise","premium","pressure","presume","priesthood","printer","privilege","procurement","produce","programme","prohibition","promise","pronoun","providence","provider","provision","publication","publicity","pulse","punctuation","pupil","puppet","puritan","quart","quinoa","quit","railway","range","rationale","ravioli","rawhide","reach","reasoning","reboot","receptor","recommendation","reconsideration","recovery","redesign","relative","release","remark","reorganisation","repeat","replacement","reporter","representation","republican","request","requirement","reservation","resolve","resource","responsibility","restaurant","retention","retrospectivity","reward","ribbon","rim","riser","roadway","role","rosemary","roundabout","rubric","ruin","rule","runway","rust","safe","sailor","saloon","sand","sandbar","sanity","sarong","sauerkraut","saw","scaffold","scale","scarification","scenario","schedule","schnitzel","scholarship","scorn","scorpion","scout","scrap","scratch","seafood","seagull","seal","season","secrecy","secret","section","sediment","self-confidence","sermon","sesame","settler","shadowbox","shark","shipper","shore","shoulder","sideboard","siege","sightseeing","signature","silk","simple","singing","skean","skeleton","skyline","skyscraper","slide","slime","slipper","smog","smoke","sock","soliloquy","solution","solvency","someplace","sonar","sonata","sonnet","soup","soybean","space","spear","spirit","spork","sport","spring","sprinkles","squid","stall","starboard","statue","status","stay","steak","steeple","step","step-mother","sticker","stir-fry","stitcher","stock","stool","story","strait","stranger","strategy","straw","stump","subexpression","submitter","subsidy","substitution","suitcase","summary","summer","sunbeam","sundae","supplier","surface","sushi","suspension","sustenance","swanling","swath","sweatshop","swim","swine","swing","switch","switchboard","swordfish","synergy","t-shirt","tabletop","tackle","tail","tapioca","taro","tarragon","taxicab","teammate","technician","technologist","tectonics","tenant","tenement","tennis","tentacle","teriyaki","term","testimonial","testing","thigh","thongs","thorn","thread","thunderbolt","thyme","tinderbox","toaster","tomatillo","tomb","tomography","tool","tooth","toothbrush","toothpick","topsail","traditionalism","traffic","translation","transom","transparency","trash","travel","tray","trench","tribe","tributary","trick","trolley","tuba","tuber","tune-up","turret","tusk","tuxedo","typeface","typewriter","unblinking","underneath","underpants","understanding","unibody","unique","unit","utilization","valentine","validity","valley","valuable","vanadyl","vein","velocity","venom","version","verve","vestment","veto","viability","vibraphone","vibration","vicinity","video","violin","vision","vista","vol","volleyball","wafer","waist","wallaby","warming","wasabi","waterspout","wear","wedding","whack","whale","wheel","widow","wilderness","willow","window","wombat","word","worth","wriggler","yak","yarmulke","yeast","yin","yogurt","zebra","zen"],preposition:["a","abaft","aboard","about","above","absent","across","afore","after","against","along","alongside","amid","amidst","among","amongst","an","anenst","anti","apropos","apud","around","as","aside","astride","at","athwart","atop","barring","before","behind","below","beneath","beside","besides","between","beyond","but","by","circa","concerning","considering","despite","down","during","except","excepting","excluding","failing","following","for","forenenst","from","given","in","including","inside","into","lest","like","mid","midst","minus","modulo","near","next","notwithstanding","of","off","on","onto","opposite","out","outside","over","pace","past","per","plus","pro","qua","regarding","round","sans","save","since","than","the","through","throughout","till","times","to","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","via","vice","with","within","without","worth"],verb:["abnegate","abscond","abseil","absolve","accentuate","accept","access","accessorise","accompany","account","accredit","achieve","acknowledge","acquire","adjourn","adjudge","admonish","adumbrate","advocate","afford","airbrush","ameliorate","amend","amount","anaesthetise","analyse","anesthetize","anneal","annex","antagonize","ape","apologise","apostrophize","appertain","appreciate","appropriate","approximate","arbitrate","archive","arraign","arrange","ascertain","ascribe","assail","atomize","attend","attest","attribute","augment","avow","axe","baa","banish","bank","baptise","battle","beard","beep","behold","belabor","bemuse","besmirch","bestride","better","bewail","bicycle","bide","bind","biodegrade","blacken","blaspheme","bleach","blend","blink","bliss","bloom","bludgeon","bobble","boggle","bolster","book","boom","bootleg","border","bore","boss","braid","brand","brandish","break","breed","broadcast","broadside","brood","browse","buck","burgeon","bus","butter","buzzing","camouflage","cannibalise","canter","cap","capitalise","capitalize","capsize","card","carouse","carp","carpool","catalog","catalyze","catch","categorise","cease","celebrate","censor","certify","char","charter","chase","chatter","chime","chip","christen","chromakey","chunder","chunter","cinch","circle","circulate","circumnavigate","clamor","clamour","claw","cleave","clinch","clinking","clone","clonk","coagulate","coexist","coincide","collaborate","colligate","colorize","colour","comb","come","commandeer","commemorate","communicate","compete","conceal","conceptualize","conclude","concrete","condense","cone","confide","confirm","confiscate","confound","confute","congregate","conjecture","connect","consign","construe","contradict","contrast","contravene","controvert","convalesce","converse","convince","convoke","coop","cop","corner","covenant","cow","crackle","cram","crank","creak","creaking","cripple","croon","cross","crumble","crystallize","culminate","culture","curry","curse","customise","cycle","dally","dampen","darn","debit","debut","decide","decode","decouple","decriminalize","deduce","deduct","deflate","deflect","deform","defrag","degenerate","degrease","delete","delight","deliquesce","demob","demobilise","democratize","demonstrate","denitrify","deny","depart","depend","deplore","deploy","deprave","depute","dereference","describe","desecrate","deselect","destock","detain","develop","devise","dial","dicker","digitize","dilate","disapprove","disarm","disbar","discontinue","disgorge","dishearten","dishonor","disinherit","dislocate","dispense","display","dispose","disrespect","dissemble","ditch","divert","dock","doodle","downchange","downshift","dowse","draft","drag","drain","dramatize","drowse","drum","dwell","economise","edge","efface","egg","eke","electrify","embalm","embed","embody","emboss","emerge","emphasise","emphasize","emulsify","encode","endow","enfold","engage","engender","enhance","enlist","enrage","enrich","enroll","entice","entomb","entrench","entwine","equate","essay","etch","eulogise","even","evince","exacerbate","exaggerate","exalt","exempt","exonerate","expatiate","explode","expostulate","extract","extricate","eyeglasses","fabricate","facilitate","factorise","factorize","fail","fall","familiarize","fashion","father","fathom","fax","federate","feminize","fence","fess","fictionalize","fiddle","fidget","fill","flash","fleck","flight","floodlight","floss","fluctuate","fluff","fly","focalise","foot","forearm","forecast","foretell","forgather","forgo","fork","form","forswear","founder","fraternise","fray","frizz","fumigate","function","furlough","fuss","gad","gallivant","galvanize","gape","garage","garrote","gasp","gestate","give","glimmer","glisten","gloat","gloss","glow","gnash","gnaw","goose","govern","grade","graduate","graft","grok","guest","guilt","gulp","gum","gurn","gust","gut","guzzle","ham","harangue","harvest","hassle","haul","haze","headline","hearten","heighten","highlight","hoick","hold","hole","hollow","holster","home","homeschool","hoot","horn","horse","hotfoot","house","hover","howl","huddle","huff","hunger","hunt","husk","hype","hypothesise","hypothesize","idle","ignite","imagineer","impact","impanel","implode","incinerate","incline","inculcate","industrialize","ingratiate","inhibit","inject","innovate","inscribe","insert","insist","inspect","institute","institutionalize","intend","intermarry","intermesh","intermix","internalise","internalize","internationalize","intrigue","inure","inveigle","inventory","investigate","irk","iterate","jaywalk","jell","jeopardise","jiggle","jive","joint","jot","jut","keel","knife","knit","know","kowtow","lack","lampoon","large","leap","lecture","legitimize","lend","libel","liberalize","license","ligate","list","lobotomise","lock","log","loose","low","lowball","machine","magnetize","major","make","malfunction","manage","manipulate","maroon","masculinize","mash","mask","masquerade","massage","masticate","materialise","matter","maul","memorise","merge","mesh","metabolise","microblog","microchip","micromanage","militate","mill","minister","minor","misappropriate","miscalculate","misfire","misjudge","miskey","mismatch","mispronounce","misread","misreport","misspend","mob","mobilise","mobilize","moisten","mooch","moor","moralise","mortar","mosh","mothball","motivate","motor","mould","mount","muddy","mummify","mutate","mystify","nab","narrate","narrowcast","nasalise","nauseate","navigate","neaten","neck","neglect","norm","notarize","object","obscure","observe","obsess","obstruct","obtrude","offend","offset","option","orchestrate","orient","orientate","outbid","outdo","outfit","outflank","outfox","outnumber","outrank","outrun","outsource","overburden","overcharge","overcook","overdub","overfeed","overload","overplay","overproduce","overreact","override","overspend","overstay","overtrain","overvalue","overwork","own","oxidise","oxidize","oxygenate","pace","pack","pale","pant","paralyse","parody","part","pause","pave","penalise","persecute","personalise","perspire","pertain","peter","pike","pillory","pinion","pip","pity","pivot","pixellate","plagiarise","plait","plan","please","pluck","ponder","popularize","portray","prance","preclude","preheat","prejudge","preregister","presell","preside","pretend","print","prioritize","probate","probe","proceed","procrastinate","profane","progress","proliferate","proofread","propound","proselytise","provision","pry","publicize","puff","pull","pulp","pulverize","purse","put","putrefy","quadruple","quaff","quantify","quarrel","quash","quaver","question","quiet","quintuple","quip","quit","rag","rally","ramp","randomize","rationalise","rationalize","ravage","ravel","react","readies","readjust","readmit","ready","reapply","rear","reassemble","rebel","reboot","reborn","rebound","rebuff","rebuild","rebuke","recede","reckon","reclassify","recompense","reconstitute","record","recount","redact","redevelop","redound","redraw","redress","reel","refer","reference","refine","reflate","refute","regulate","reiterate","rejigger","rejoin","rekindle","relaunch","relieve","remand","remark","reopen","reorient","replicate","repossess","represent","reprimand","reproach","reprove","repurpose","requite","reschedule","resort","respray","restructure","retool","retract","revere","revitalise","revoke","reword","rewrite","ride","ridge","rim","ring","rise","rival","roger","rosin","rot","rout","row","rue","rule","safeguard","sashay","sate","satirise","satirize","satisfy","saturate","savour","scale","scamper","scar","scare","scarper","scent","schematise","scheme","schlep","scoff","scoop","scope","scotch","scowl","scrabble","scram","scramble","scrape","screw","scruple","scrutinise","scuffle","scuttle","search","secularize","see","segregate","sell","sense","sensitize","sequester","serenade","serialize","serve","service","settle","sew","shaft","sham","shampoo","shanghai","shear","sheathe","shell","shinny","shirk","shoot","shoulder","shout","shovel","showboat","shred","shrill","shudder","shush","sidetrack","sign","silt","sin","singe","sit","sizzle","skateboard","ski","slake","slap","slather","sleet","slink","slip","slope","slump","smarten","smuggle","snack","sneak","sniff","snoop","snow","snowplow","snuggle","soap","solace","solder","solicit","source","spark","spattering","spectacles","spectate","spellcheck","spew","spice","spirit","splash","splay","split","splosh","splurge","spook","square","squirm","stabilise","stable","stack","stage","stake","starch","state","statement","stiffen","stigmatize","sting","stint","stoop","store","storyboard","stratify","structure","stuff","stunt","substantiate","subtract","suckle","suffice","suffocate","summarise","sun","sunbathe","sunder","sup","surge","surprise","swat","swathe","sway","swear","swelter","swerve","swill","swing","symbolise","synthesise","syringe","table","tabulate","tag","tame","tank","tankful","tarry","task","taxicab","team","telescope","tenant","terraform","terrorise","testify","think","throbbing","thump","tighten","toady","toe","tough","tousle","traduce","train","transcend","transplant","trash","treasure","treble","trek","trial","tromp","trouser","trust","tune","tut","twine","twist","typify","unbalance","uncork","uncover","underachieve","undergo","underplay","unearth","unfreeze","unfurl","unlearn","unscramble","unzip","uproot","upsell","usher","vacation","vamoose","vanish","vary","veg","venture","verify","vet","veto","volunteer","vulgarise","waft","wallop","waltz","warp","wash","waver","weary","weatherize","wedge","weep","weight","welcome","westernise","westernize","while","whine","whisper","whistle","whitewash","whup","wilt","wing","wire","wisecrack","wolf","wound","wring","writ","yak","yawn","yearn","yuppify"]}},a_]});class n_{data_length=50;generated_data=[];auto_proceed=!0;locale="en_GB";imgAPIs=["https://picsum.photos/500/500?random=","https://avatar.iran.liara.run/public/"];constructor({length:e,auto_proceed:t,locale:r}){void 0!==e&&(this.data_length=e),void 0!==t&&(this.auto_proceed=t),void 0!==r&&(this.locale=r.replace("-","_")),this.auto_proceed&&this.generate()}generate(){return this.make_data()}make_data(){for(let e=0;e<this.data_length;e++){const t=this.generate_data((e+1).toString());e>0&&(t.parentId=this.get_parent_id(e)),this.generated_data.push(t)}return this.generated_data}get_parent_id(e){let t=Math.floor(Math.random()*this.generated_data.length).toString();return t=0==parseInt(t)?"1":t,t==(e+1).toString()&&(t=this.get_parent_id(e)),t}generate_data(e){const t=Math.floor(2*Math.random()),r=this.imgAPIs[Math.floor(Math.random()*this.imgAPIs.length)]+e;return{id:e,name:i_.person.fullName(),role:i_.person.jobTitle(),location:i_.location.city()+", "+i_.location.country(),image:t?r:""}}}class o_{tree_data=[];handleCollapseChildren=()=>{};center_elem=({})=>null;itemHierarchy=[];tmp_tree_data=[];tree_level_step=2;display_tree_in_step=!0;auto_display_tree_in_step=!0;link_point_position={top:e=>`translate(${parseInt(e.attr("width"))/2}, 0)`,bottom:e=>`translate(${parseInt(e.attr("width"))/2}, ${e.attr("height")})`,right:e=>`translate(${e.attr("width")}, ${e.attr("height")/2})`,left:e=>`translate(0, ${e.attr("height")/2})`};inverse_link_point_position={top:"bottom",bottom:"top",left:"right",right:"left"};chartHeadWidth=120;chartHeadHeight=130;chartHeadLandscapeWidth=240;chartHeadLandscapeHeight=80;chartHeadRoundedWidth=120;chartHeadRoundedHeight=180;color_handler={};chart_head_type="default";show_chart_head_border=!0;animation_rotation_speed=50;animation_rotation_interval=1;head_linker_thumb_circle_radius=8;linker_thumb_icon_color="bright500";linker_thumb_shape="symbolDiamond2";head_image_shape="symbolCircle";head_image_surface_area=60;chart_head_bg="#ffffff";auto_set_chart_head_bg=!1;emitEvent=()=>!1;tree_link_types={curveBumpX:jx,curveBumpY:Yx,curveBasisClosed:Ek,curveLinear:Lx,curveStep:ow,curveStepAfter:lw,curveStepBefore:cw};tree_link_type=void 0;rootWrapperContainer=null;app_unique_id="";app_root_unique_selector="";constructor(){setTimeout((()=>{this.app_root_unique_selector=`[data-ts-unique-id='${this.app_unique_id}']`}),0)}createDynamicEl(){return new Hw}splitStringIntoBatch(e,t){let r=[];for(let a=0;a<e?.length;a+=t)r.push(e.substring(a,Math.min(a+t,e.length)));return r}get_user_initials(e){const t=e?.split(" ");return t?.length>1?t?.[0][0]+t?.at(-1)?.[0]:t?.[0][0]}format_employee_name(e,t=15){const r=e?.split(" "),a=r?.length>2?r?.[0]+" "+r?.at(-1):r?.join(" ");return this.splitStringIntoBatch(a,t)}symbol_type(e){const t=e.replace(/symbol/,"").toLowerCase();return["circle","cross","diamond","square","star","triangle","wye"].includes(t)?"fill":["plus","x","triangle2","asterisk","square2","diamond2"].includes(t)?"stroke":"fill"}get_page_body_bg(){const e=document.body.style.getPropertyValue("background-color");return""==e?"#ffffff":e}get_chart_head_bg(){return this.auto_set_chart_head_bg?this.get_page_body_bg():this.chart_head_bg}get_image_shape_spacing(e){return{symbolCircle:10,symbolCross:10,symbolDiamond:25,symbolDiamond2:10,symbolSquare:0,symbolSquare2:-8,symbolStar:20,symbolTriangle:20,symbolTriangle2:10,symbolWye:20}[e]}makeHead(e,t=!1,r={parent:"bottom",children:"top"}){return"default"==this.chart_head_type?this.defaultHead(e,t,r):"landscape"==this.chart_head_type?this.landscapeHead(e,t,r):"rounded"==this.chart_head_type?this.roundedHead(e,t,r):this.defaultHead(e,t,r)}handleCenterHead(e){e.stopPropagation();const t=e.currentTarget.getBoundingClientRect();this.center_elem(t)}defaultHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=this.get_chart_head_bg(),l=sr("svg").attr("class","main-svg-el"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("width",this.chartHeadWidth).attr("height",this.chartHeadHeight).attr("style","background-color: "+c).on("dblclick",(e=>this.handleCenterHead(e)));sr("defs").append("filter").attr("id","blur1").attr("x",0).attr("y",0).append("feGaussianBlur").attr("in","SourceGraphic").attr("stdDeviation","3");const s=l.append("g"),u=s?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadWidth).attr("height",this.chartHeadHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),h=parseInt(u.attr("width"))/2,d=s?.append("g").attr("y",100),p=Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2);if(e.image){let t=h-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=h-this.head_image_surface_area<=10&&0==t?-10:t,o=h-this.head_image_surface_area<1?Math.abs(h-this.head_image_surface_area)+15:0,d.append("defs").append("clipPath").attr("id","default-head-clip-"+e.id).append("path").attr("d",Ak().type(Ew[this.head_image_shape]).size(p)).attr("transform",`translate(${parseInt(u.attr("width"))/2}, ${this.head_image_surface_area+t})`).attr("fill",n.bright500),d?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",this.head_image_surface_area).attr("height",this.head_image_surface_area).attr("x",parseInt(u.attr("width"))/2-this.head_image_surface_area/2).attr("y",this.head_image_surface_area/2+t).attr("clip-path",`url(#default-head-clip-${e.id})`)}else o=h-this.head_image_surface_area<1?Math.abs(h-this.head_image_surface_area)+15:0,d?.append("path").attr("d",Ak().type(Ew[this.head_image_shape]).size(p)).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(u.attr("width"))/2}, 50)`),d?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(u.attr("width"))/2).attr("y",56).attr("font-size","95%").text(this.get_user_initials(e.name));this.format_employee_name(e.name).forEach(((e,t)=>{s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",t>0?95+o:80+o).attr("font-size","85%").attr("fill",n.darker).attr("style","text-transform: "+(t>0?"none":"capitalize")).text(e),t>0&&(o+=15)}));const y=s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",100+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,20).forEach(((e,t)=>{y?.append("tspan").attr("x",parseInt(u.attr("width"))/2).attr("dy",t>0?".6rem":0).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",115+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,19).forEach(((e,r)=>{t?.append("tspan").attr("x",parseInt(u.attr("width"))/2).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}const f=this.chartHeadHeight+o;return u?.attr("height",f),l?.attr("height",f),this.add_linker(s,i,a,r,n,u,l,e,t),this.emitEvent("chart_head.create",{headNode:l.node()}),l}landscapeHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=sr("svg").attr("class","main-svg-el"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("width",this.chartHeadLandscapeWidth).attr("height",this.chartHeadLandscapeHeight).attr("style","background-color: "+this.chart_head_bg).on("dblclick",(e=>this.handleCenterHead(e))),l=c.append("g"),s=l?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadLandscapeWidth).attr("height",this.chartHeadLandscapeHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),u=parseInt(s.attr("height"))/2,h=this.format_employee_name(e.name,18),d=l.append("g").attr("x",0).attr("y",0),p=l.append("g"),y=this.chartHeadLandscapeHeight+o;if(s.attr("height",y),c.attr("height",y),e.image){let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t;const r=this.head_image_surface_area>u?Math.abs(this.head_image_surface_area-u):0;s.attr("height",y+r),c.attr("height",y+r),c.attr("width",this.chartHeadLandscapeWidth+r),s.attr("width",this.chartHeadLandscapeWidth+r),p.append("defs").append("clipPath").attr("id","landscape-clip-"+e.id).append("path").attr("d",Ak().type(Ew[this.head_image_shape]).size(Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2))).attr("transform",`translate(${parseInt(s.attr("height"))/2}, ${this.head_image_surface_area+(t+20)})`).attr("fill",n.bright500),p?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",this.head_image_surface_area).attr("height",this.head_image_surface_area).attr("x",parseInt(s.attr("height"))/2-this.head_image_surface_area/2).attr("y",this.head_image_surface_area/2+(t+20)).attr("clip-path",`url(#landscape-clip-${e.id})`)}else{const t=this.head_image_surface_area>u?Math.abs(this.head_image_surface_area-u):0;s.attr("height",y+t),c.attr("height",y+t),c.attr("width",this.chartHeadLandscapeWidth+t),s.attr("width",this.chartHeadLandscapeWidth+t),p?.append("path").attr("d",Ak().type(Ew[this.head_image_shape]).size(Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2))).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(s.attr("height"))/2}, 50)`),p?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(s.attr("height"))/2).attr("y",parseInt(s.attr("height"))/2+6).attr("font-size","95%").text(this.get_user_initials(e.name))}const f=parseInt(s.attr("height")),m=d?.append("text").attr("x",f).attr("y",30).attr("font-size","95%").attr("fill",n.darker);h.forEach(((e,t)=>{m?.append("tspan").attr("x",f).attr("y",30).attr("dy",t>0?".7rem":0).attr("font-size","95%").attr("style","z-index: +9").text(e.toString()),t>0&&(o+=10)}));const g=d?.append("text").attr("x",f).attr("y",50+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,30).forEach(((e,t)=>{g?.append("tspan").attr("x",f).attr("dy",t>0?".6rem":0).attr("y",50+o).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=d?.append("text").attr("x",f).attr("y",65+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,30).forEach(((e,r)=>{t?.append("tspan").attr("x",f).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}return this.add_linker(l,i,a,r,n,s,c,e,t),this.emitEvent("chart_head.create",{headNode:c.node()}),c}roundedHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=sr("svg").attr("class","main-svg-el rounded-head"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("style","overflow: visible;").attr("width",this.chartHeadRoundedWidth).attr("height",this.chartHeadRoundedHeight).attr("fill","none").on("dblclick",(e=>this.handleCenterHead(e))),l=c.append("g"),s=l?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadRoundedWidth).attr("height",this.chartHeadRoundedHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),u=parseInt(s.attr("width"))/2,h=l?.append("g"),d=Math.pow(2*(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape)),2),p=Ew[this.head_image_shape];if(e.image){let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t,o=u-this.head_image_surface_area<0?2*Math.abs(u-this.head_image_surface_area):0,h.append("defs").append("clipPath").attr("id","rounded-corners-"+e.id).append("path").attr("d",Ak().type(p).size(d)).attr("transform",`translate(${parseInt(s.attr("width"))/2}, ${2*this.head_image_surface_area-this.head_image_surface_area})`).attr("fill",n.bright500),h?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",2*this.head_image_surface_area).attr("height",2*this.head_image_surface_area).attr("x",parseInt(s.attr("width"))/2-this.head_image_surface_area).attr("y",this.head_image_surface_area-this.head_image_surface_area).attr("clip-path",`url(#rounded-corners-${e.id})`)}else{let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t,o=u-this.head_image_surface_area<0?2*Math.abs(u-this.head_image_surface_area):0,h?.append("path").attr("d",Ak().type(p).size(d)).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(s.attr("width"))/2}, ${2*this.head_image_surface_area-this.head_image_surface_area})`),h?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(s.attr("width"))/2).attr("y",this.head_image_surface_area+Math.sqrt(d)/6).attr("font-size",this.head_image_surface_area/1.5+"px").text(this.get_user_initials(e.name))}this.format_employee_name(e.name,27).forEach(((e,t)=>{l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+18).attr("dy",t>0?50+o:0+o).attr("font-size","105%").attr("fill",n.darker).attr("style","text-transform: "+(t>0?"none":"capitalize")).text(e),t>0&&(o+=15)}));const y=l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+35+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,20).forEach(((e,t)=>{y?.append("tspan").attr("x",parseInt(s.attr("width"))/2).attr("dy",t>0?".6rem":0).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+50+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,19).forEach(((e,r)=>{t?.append("tspan").attr("x",parseInt(s.attr("width"))/2).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}const f=this.chartHeadRoundedHeight+o;return s?.attr("height",f),c?.attr("height",f),this.add_linker(l,i,a,r,n,s,c,e,t),this.emitEvent("chart_head.create",{headNode:c.node()}),c}add_linker(e,t,r,a,i,n,o,c,l){const s=Math.PI*this.head_linker_thumb_circle_radius*this.head_linker_thumb_circle_radius,u=(t,r,a)=>{null!=this.rootWrapperContainer?.querySelector("."+a)&&this.rootWrapperContainer?.querySelector("."+a)?.remove();const o="stroke"==this.symbol_type(this.linker_thumb_shape)?i.bright100:i[this.linker_thumb_icon_color];return e.append("path").attr("d",Ak().type("cross"==t?rk:Ck).size(Math.sqrt(s))).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("fill",o).attr("stroke","minus"==t?o:"none").attr("class",a).attr("style","pointer-events: none").attr("stroke-width","minus"==t?2:0).attr("transform",this.link_point_position[r](n))};if(0!=a&&t&&e?.append("path").attr("d",Ak().type(Ew[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",0).attr("class","ts-linker").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"none").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[a.children](n)),0!=a&&r){const t=this,r="bottom"==a.parent?0:n.attr("height");let h=0;if(e?.append("path").attr("d",Ak().type(Ew[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("class","ts-linker").attr("style","cursor: pointer;").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"transparent").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[this.inverse_link_point_position[a.children]](n)).on("click",(e=>{const i=e.currentTarget.parentElement;u(h%2==0?"cross":"minus",this.inverse_link_point_position[a.children],"ts-lnk-icn-"+c.id+"-1"),h++,t.handleCollapseChildren?.(o,c.id,r);const n=i.getBoundingClientRect();setTimeout((()=>{h%2==0&&this.center_elem(n)}),0),h%2==0?this.emitEvent("chart_head.expanded",{svgNode:o,head_data:c,pointPosition:a},!1):this.emitEvent("chart_head.collapsed",{svgNode:o,head_data:c,pointPosition:a},!1)})),this.el_has_children(c.id,!0)||h++,u(this.el_has_children(c.id,!0)?"minus":"cross",this.inverse_link_point_position[a.children],"ts-lnk-icn-"+c.id+"-1"),l){const l=0==r?n.attr("height"):0;let h=0;e?.append("path").attr("d",Ak().type(Ew[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("class","ts-linker").attr("style","cursor: pointer").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"transparent").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[this.inverse_link_point_position[a.parent]](n)).on("click",(e=>{const r=e.currentTarget.parentElement;u(h%2==0?"cross":"minus",this.inverse_link_point_position[a.parent],"ts-lnk-icn-"+c.id+"-2"),t.handleCollapseChildren?.(o,c.id,l);const i=r.getBoundingClientRect();h++,setTimeout((()=>{h%2==0&&this.center_elem(i)}),0),h%2==0?this.emitEvent("chart_head.expanded",{svgNode:o,head_data:c,pointPosition:a},!1):this.emitEvent("chart_head.collapsed",{svgNode:o,head_data:c,pointPosition:a},!1)})),u("minus",this.inverse_link_point_position[a.parent],"ts-lnk-icn-"+c.id+"-2")}}}get_tree_items_hierarchy(e,t,r){const a=this.tree_data.filter((t=>t.parentId==e)),i=null==t?1:t+1,n=[];a.forEach((e=>{n.push(e),null!=r&&(null!=r.item_id&&r.item_id==e.id||null!=r.level&&r.level==i)&&r.callbackFn(e,i),this.tree_data.filter((t=>t.parentId==e.id)).length>0&&this.get_tree_items_hierarchy(e.id,i,r)}));const o=this.itemHierarchy.findIndex((e=>e.level==i));return-1==o?this.itemHierarchy.push({level:i,items:n}):this.itemHierarchy[o].items=n,this.itemHierarchy}get_second_ancestor_item(e){const t=this.tree_data.find((t=>t.id==e)),r=this.tree_data.find((e=>e.id==t?.parentId)),a=null==this.tree_data.find((e=>e.id==r?.parentId))?.parentId;let i;return i=null==r?.parentId?t:a?r:this.get_second_ancestor_item(r?.id),i}getElemRelPosInTree(e){const t=this.tree_data.find((t=>t.id==e));return this.tree_data.filter((e=>e.parentId==t.parentId)).findIndex((e=>e.id==t.id))+1}set_tmp_tree_data(e){if(this.display_tree_in_step||this.tree_data.length>500&&this.auto_display_tree_in_step){const t=null==e?"1":e;this.tmp_tree_data=this.get_children_down_to_level(t,this.tree_level_step),null==e&&(this.tmp_tree_data=[this.tree_data[0],...this.tmp_tree_data])}else this.tmp_tree_data=this.tree_data}getIsParentRootEl(e){return null!=e&&null==this.tree_data.find((t=>t.id==e))?.parentId}getIsElRootTreeChild(e){return null!=e&&null==this.tree_data.find((t=>t.id==e))?.parentId}getRootTreeEl(){return this.tree_data.find((e=>null==e.parentId))}el_has_children(e,t=!1){return t?this.tmp_tree_data.filter((t=>t.parentId==e)).length>0:this.tree_data.filter((t=>t.parentId==e)).length>0}get_children_down_to_level(e,t,r=1){let a=r,i=[];const n=this.tree_data.filter((t=>t.parentId==e));let o=[];return a<t&&n.length>0&&(o=n.map((e=>this.get_children_down_to_level(e.id,t,a+1))).flat()),i=[...n,...o],i}data_to_d3_format(e,t){let r=this.tree_data?.find((t=>(null==e?t.parentId:t.id)==e));return r={...r,children:[]},this.tree_data.filter((e=>e.parentId==r.id)).forEach((e=>{t&&(e.stat=1),this.el_has_children(e.id)?r.children.push(this.data_to_d3_format(e.id,t)):r.children.push(e)})),r}}class c_{tree_data=[];color_range=["#b31212","#b34712","#b38d12","#9ab312","#2fb312","#12b362","#12b3a8","#1278b3","#1712b3","#5712b3","#8d12b3","#b3128d","#b3124a","#b31212"];interpolated_color=e=>"";pallet={h:10,s:.5,l:.5,darker:.8,brighter:.8,bright100:.5,dark100:.5,gray:50,gray85:85};constructor({tree_data:e,color_range:t,pallet:r}){this.tree_data=e,void 0!==t&&t.length>0&&(this.color_range=t),null!=r&&(this.pallet=r),this.interpolateColor()}getColor(e){const t=this.get_color_percentage(e),r=this.interpolated_color(t),a=Vr(r),i=ia(a);i.h+=this.pallet.h,i.s+=this.pallet.s;const n=ia(a);n.l+=this.pallet.l;const o=ba(this.pallet.gray85);return{color:r,darker:a?.darker(this.pallet.darker).toString(),brighter:a?.brighter(this.pallet.brighter).toString(),bright100:i.brighter(this.pallet.bright100).toString(),dark100:i.darker(this.pallet.dark100).toString(),bright500:n.toString(),gray:ba(this.pallet.gray).toString(),gray85:o.toString()}}get_app_gray(){return ba(50).toString()}get_color_percentage(e){return e/this.tree_data.length}interpolateColor(){this.interpolated_color=$a(this.color_range)}}class l_{chartHelper;tree_map_arr=[];content_wrapper=null;tsInnerContainer=null;current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}map_children_data_to_head(e,t){const r=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t)),a=this.chartHelper.createDynamicEl();return r.forEach((r=>{const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.makeHead(r);i.appendChild(n?.node());const o=null==t?" st-root-el":"";i.className="ts-head-node-wrapper ts-w-id-"+r.id+o,a.appendChild(i),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:n?.node(),parentId:t}),this.chartHelper?.el_has_children(r.id)&&i.append(this.map_children_data_to_head(n,r.id))})),a.className="ts-head-wrapper child-container",void 0===e&&this.content_wrapper?.appendChild(a),a}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.content_wrapper.className="ts-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Ji((()=>{const e=lr(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"top")}),0)}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId)))}drawBranchLink(e,t,r,a){const i=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===i)return;const n=this.chartHelper?.color_handler.getColor(e),o=r.getBoundingClientRect(),c=t.node().getBoundingClientRect(),l=Math.sqrt(Math.PI*this.chartHelper.head_linker_thumb_circle_radius*this.chartHelper.head_linker_thumb_circle_radius)/2,s=c.width/this.current_scale/2,u=(c.height+l)/this.current_scale,h=o.x/this.current_scale-c.x/this.current_scale+r.clientWidth/2,d=o.top/this.current_scale-c.top/this.current_scale,p=Zx(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Yx),y=[{source:[s,u],target:[h,d]}];t?.append("path").data(y).attr("d",p).attr("fill","none").attr("class","linker-line").attr("stroke",n?.gray).attr("stroke-width",1)}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-head-children-hidden");if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)if("true"==i){const e=a?.querySelector(".child-container");e.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),setTimeout((()=>{this.drawBranchLinkFresh()}),0)}else{const e=a?.querySelector(".child-container");e.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")}else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t);a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e){this.tree_map_arr.filter((t=>t.parentId==e)).forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)}))}}class s_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="ts-vs-wrapper",this.head_child_wrapper_1.className="ts-vs-wrapper",this.head_child_wrapper_2.className="ts-vs-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.content_wrapper.className="ts-v-spider-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Ji((()=>{const e=lr(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,null==t,{parent:"bottom",children:c%2==0?"bottom":"top"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"top":"bottom"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden"),o=this.chartHelper.getIsParentRootEl(a);if("true"===n&&!o)return;const c=this.chartHelper?.color_handler.getColor(e),l=r.getBoundingClientRect(),s=t.node().getBoundingClientRect(),u=s.width/this.current_scale/2,h="top"==i?0:s.height/this.current_scale,d=l.x/this.current_scale-s.x/this.current_scale+r.clientWidth/2,p="top"==i?(l.top+l.height)/this.current_scale-s.top/this.current_scale:l.top/this.current_scale-s.top/this.current_scale,y=Zx(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Yx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line linker-"+i).attr("stroke-width",1).attr("stroke",c?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden"),o=a?.querySelector(".child-container");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)"true"==n?(o.style.visibility="visible",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(o.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true"));else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-top-head-children-hidden"),n=a?.getAttribute("data-ts-bottom-head-children-hidden");0==r?this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2==0)):this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2!=0)),(i&&"false"!=i||0!=r)&&(n&&"false"!=n||0==r)?((0==r?a.parentElement.nextElementSibling:a.parentElement.previousElementSibling).style.visibility="",setTimeout((()=>{this.drawBranchLinkFresh(),"true"==(0==r?a?.getAttribute("data-ts-bottom-head-children-hidden"):a?.getAttribute("data-ts-top-head-children-hidden"))&&a.querySelectorAll(".linker-"+(0==r?"top":"bottom")).forEach((e=>e.remove()))}),0),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","false")):((0==r?a.parentElement.nextElementSibling:a.parentElement.previousElementSibling).style.visibility="hidden",a.querySelector("svg").querySelectorAll(".linker-"+(0==r?"bottom":"top")).forEach((e=>e.remove())),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","true"))}}class u_{chartHelper;tree_map_arr=[];content_wrapper=null;tsInnerContainer=null;current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.content_wrapper.className="ts-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Ji((()=>{const e=lr(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"left")}),0)}map_children_data_to_head(e,t){const r=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t)),a=this.chartHelper.createDynamicEl();return r.forEach((r=>{const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.createDynamicEl(),o=this.chartHelper.makeHead(r,!1,{parent:"right",children:"left"});n.append(o?.node()),i.appendChild(n);const c=null==t?" st-root-el":"";i.className="ts-head-node-wrapper st-single-h ts-w-id-"+r.id+c,a.appendChild(i),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:o?.node(),parentId:t}),this.chartHelper?.el_has_children(r.id)&&i.append(this.map_children_data_to_head(o,r.id))})),a.className="ts-head-wrapper st-single-h-child-container",void 0===e&&this.content_wrapper?.appendChild(a),a}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId)))}drawBranchLink(e,t,r,a){const i=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===i)return;const n=this.chartHelper?.color_handler.getColor(e),o=r.getBoundingClientRect(),c=t.node().getBoundingClientRect(),l=c.width/this.current_scale,s=c.height/this.current_scale/2,u=o.x/this.current_scale-c.x/this.current_scale+0,h=(o.top+o.height/2)/this.current_scale-c.top/this.current_scale,d=Zx(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:jx),p=[{source:[l,s],target:[u,h]}];t?.append("path").data(p).attr("d",d).attr("fill","none").attr("class","linker-line").attr("stroke-width",1).attr("stroke",n?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement.parentElement,i=a?.getAttribute("data-ts-head-children-hidden"),n=a?.querySelector("[class*='child-container']");if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".st-single-h-child-container").innerHTML)"true"==i?(n.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(n.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true"));else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".st-single-h-child-container").remove();const r=this.map_children_data_to_head(e,t);a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e){this.tree_map_arr.filter((t=>t.parentId==e)).forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)}))}}class h_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="st-child-wrapper",this.head_child_wrapper_1.className="st-child-wrapper",this.head_child_wrapper_2.className="st-child-wrapper",this.content_wrapper.className="st-hsw-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.tsInnerContainer?.append(this.content_wrapper),this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.drawBranchLinkFresh(),Ji((()=>{const e=lr(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,null==t,{parent:"right",children:c%2==0?"right":"left"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"right":"left"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===n)return;const o=this.chartHelper?.color_handler.getColor(e),c=r.getBoundingClientRect(),l=t.node().getBoundingClientRect(),s=Math.sqrt(Math.PI*this.chartHelper.head_linker_thumb_circle_radius*this.chartHelper.head_linker_thumb_circle_radius)/2,u="right"==i?0-s:(l.width+s)/this.current_scale,h=l.height/this.current_scale/2,d=(c.x+("right"==i?c.width:0))/this.current_scale-l.x/this.current_scale+0,p=(c.top+c.height/2)/this.current_scale-l.top/this.current_scale,y=Zx(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:jx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line linker-"+i).attr("stroke-width",1).attr("stroke",o?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)"true"==n?(a.querySelector(".child-container").style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(a?.setAttribute("data-ts-head-children-hidden","true"),a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.querySelector(".child-container").style.visibility="hidden");else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),setTimeout((()=>{this.drawBranchLinkFresh()}),0)}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-top-head-children-hidden"),n=a?.getAttribute("data-ts-bottom-head-children-hidden");if(0==r?this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2==0)):this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2!=0)),(i&&"false"!=i||0!=r)&&(n&&"false"!=n||0==r))(0==r?a.parentElement.previousElementSibling:a.parentElement.nextElementSibling).style.visibility="visible",setTimeout((()=>{this.drawBranchLinkFresh(),"true"==(0==r?a?.getAttribute("data-ts-bottom-head-children-hidden"):a?.getAttribute("data-ts-top-head-children-hidden"))&&a.querySelectorAll(".linker-"+(0==r?"left":"right")).forEach((e=>e.remove()))}),0),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","false");else{const e=0==r?a.parentElement.previousElementSibling:a.parentElement.nextElementSibling;e.style.visibility="hidden",e.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.querySelectorAll(".linker-"+(0==r?"right":"left")).forEach((e=>e.remove())),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","true")}}}class d_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="st-child-wrapper",this.head_child_wrapper_1.className="st-child-wrapper",this.head_child_wrapper_2.className="st-child-wrapper",this.content_wrapper.className="st-cs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.tsInnerContainer?.append(this.content_wrapper),this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.drawBranchLinkFresh(),Ji((()=>{const e=lr(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"bottom")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,!1,{parent:"right",children:null==t?"bottom":c%2==0?"right":"left"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"right":"left"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===n)return;const o=this.chartHelper?.color_handler.getColor(e),c=this.chartHelper.getIsParentRootEl(a),l=r.getBoundingClientRect(),s=t.node().getBoundingClientRect();let u,h;c?(u=s.width/this.current_scale/2,h=0):(u="right"==i?0:s.width/this.current_scale,h=s.height/this.current_scale/2);const d=(l.x+("right"==i?l.width:0))/this.current_scale-s.x/this.current_scale+0,p=(l.top+l.height/2)/this.current_scale-s.top/this.current_scale,y=Zx(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:jx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line").attr("stroke-width",1).attr("stroke",o?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)if("true"==n){const e=a?.querySelector(".child-container");e.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}else{const e=a?.querySelector(".child-container");e.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")}else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-head-children-hidden");i&&"false"!=i?(a.parentElement.previousElementSibling.style.visibility="",a.parentElement.previousElementSibling.previousElementSibling.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false")):(a.parentElement.previousElementSibling.style.visibility="hidden",a.parentElement.previousElementSibling.previousElementSibling.style.visibility="hidden",a.parentElement.previousElementSibling.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.parentElement.previousElementSibling.previousElementSibling.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")),this.drawBranchLinkFresh()}}class p_{content_wrapper=null;head_child_wrapper=null;tsInnerContainer=null;chartHelper;current_scale=1;nodes_group=void 0;links_group=void 0;rotate_deg=0;animation_interval=void 0;start_animation=!1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper.className="st-child-wrapper",this.content_wrapper.className="st-grs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper),this.tsInnerContainer?.append(this.content_wrapper),this.map_children_data_to_head(),Ji((()=>{const e=lr(`${this.chartHelper.app_root_unique_selector} .root-svg-el > g`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}animate_chat(e=!1,t=!1){if(e)return this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.nodes_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`),this.links_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`);this.start_animation=!this.start_animation,this.start_animation?this.animation_interval=setInterval((()=>{this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.nodes_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`),this.links_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`)}),this.chartHelper?.animation_rotation_speed):(null!=this.animation_interval&&clearInterval(this.animation_interval),this.animation_interval=void 0)}map_children_data_to_head(){const e=Gp(this.chartHelper.data_to_d3_format()).sort(((e,t)=>t.height-e.height||e.data.name.localeCompare(t.data.name))),t=540*Math.sqrt(this.chartHelper.tree_data.length/3);Pp().size([360,t]).separation(((e,t)=>50))(e);const r=sr("svg");r.attr("width",580),r.attr("height",250),r.attr("style","overflow: visible");const a=r.append("g").attr("transform",`translate(${r.attr("width")/2},${r.attr("height")/2})`);a.append("g").attr("class","links"),a.append("g").attr("class","nodes"),e.each((e=>{const t=this.chartHelper?.makeHead(e.data,!1,!1);e.head=t.node(),e.head.removeEventListener("dblclick",this.chartHelper.handleCenterHead),e.head.ondblclick=e=>{e.stopPropagation(),e.preventDefault();const t=e.currentTarget.querySelector("g").getBoundingClientRect();this.chartHelper?.center_elem(t)},e.color_set=this.chartHelper?.color_handler.getColor(e.data.id)})),r.select("g.nodes").selectAll("svg.node").data(e.descendants()).enter().append((e=>("rounded"!=this.chartHelper?.chart_head_type&&this.chartHelper?.show_chart_head_border&&(e.head.querySelector("rect").style.fill="white",e.head.querySelector("rect").style.strokeWidth="1"),e.head))).classed("node",!0).select("g").attr("transform",(e=>`rotate(${e.x}, 0, 0) translate(0, ${-e.y})`)),r.select("g.nodes").selectAll("circle.node").data(e.descendants()).enter().append("circle").classed("node",!0).attr("cx",0).attr("cy",(e=>-e.y)).attr("r",5).attr("fill",(e=>e.color_set.color)).attr("stroke",(e=>e.color_set.gray)).attr("stroke-width",1).attr("transform",(e=>`rotate(${e.x}, 0, 0)`));const i=Ox().angle((e=>e.x*Math.PI/180)).radius((e=>e.y));r.select("g.links").selectAll("path.link").data(e.links()).enter().append("path").classed("link",!0).attr("stroke",(e=>e.target.color_set.gray)).attr("fill","none").attr("stroke-width",1.5).attr("d",(e=>i([e.target,e.source]))),this.nodes_group=r.select("g.nodes"),this.links_group=r.select("g.links"),this.head_child_wrapper?.append(r.node())}}class y_{content_wrapper=null;head_child_wrapper=null;tsInnerContainer=null;chartHelper;current_scale=1;root_svg=void 0;rotate_deg=0;animation_interval=void 0;start_animation=!1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper.className="st-child-wrapper",this.content_wrapper.className="st-grs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper),this.tsInnerContainer?.append(this.content_wrapper),this.map_children_data_to_head(),Ji((()=>{const e=lr(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}animate_chat(e=!1,t=!1){if(e)return this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.root_svg.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`);this.start_animation=!this.start_animation,this.start_animation?this.animation_interval=setInterval((()=>{this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.root_svg.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`)}),this.chartHelper?.animation_rotation_speed):(null!=this.animation_interval&&clearInterval(this.animation_interval),this.animation_interval=void 0)}map_children_data_to_head(){const e=Gp(this.chartHelper.data_to_d3_format()).sort(((e,t)=>t.height-e.height||e.data.name.localeCompare(t.data.name))),t=540*Math.sqrt(this.chartHelper.tree_data.length/3),r=2*t,a=2*t;e.each((e=>{const t=this.chartHelper?.makeHead(e.data,!1,!1);e.head=t.node(),e.color_set=this.chartHelper?.color_handler.getColor(e.data.id)})),My().size([2*Math.PI,t]).separation(((e,t)=>100))(e);const i=sr("svg").attr("viewBox",[-110-t,-110-t,r,a]).attr("width",r).attr("height",a).attr("style","background-color: none; max-width: 100%; height: auto; overflow: visible;");i.append("g").attr("fill","none").attr("stroke",this.chartHelper?.color_handler.get_app_gray()).attr("stroke-opacity",1).attr("stroke-width",1.5).selectAll("path").data(e.links()).join("path").attr("d",Qx().angle((e=>e.x)).radius((e=>e.y)));const n=i.append("g").selectAll("g").data(e.descendants()).join("g").attr("transform",(e=>`rotate(${180*e.x/Math.PI-90}) translate(${e.y},0)`));n.append("circle").attr("fill",(e=>e.color_set.color)).attr("r",3),n.append((e=>("rounded"!=this.chartHelper?.chart_head_type&&this.chartHelper?.show_chart_head_border&&(e.head.querySelector("rect").style.fill="white",e.head.querySelector("rect").style.strokeWidth="1"),e.head))),n.append("title").text((e=>e.data.name+" - "+e.data.role)),this.root_svg=i,this.head_child_wrapper?.append(i.node())}}var f_='<svg viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg" fill="#000000"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill="#000000" fill-rule="evenodd" d="M250,204 L247.503423,204 C247.232903,204 247,204.223858 247,204.5 C247,204.768066 247.22539,205 247.503423,205 L250,205 L250,207.496577 C250,207.767097 250.223858,208 250.5,208 C250.768066,208 251,207.77461 251,207.496577 L251,205 L253.496577,205 C253.767097,205 254,204.776142 254,204.5 C254,204.231934 253.77461,204 253.496577,204 L251,204 L251,201.503423 C251,201.232903 250.776142,201 250.5,201 C250.231934,201 250,201.22539 250,201.503423 L250,204 Z M255.441686,210.141919 C254.121974,211.298772 252.392877,212 250.5,212 C246.357864,212 243,208.642136 243,204.5 C243,200.357864 246.357864,197 250.5,197 C254.642136,197 258,200.357864 258,204.5 C258,206.392877 257.298772,208.121974 256.141919,209.441686 L260.317115,213.616883 C260.508288,213.808056 260.500857,214.12544 260.313149,214.313149 C260.119785,214.506512 259.80289,214.503123 259.616883,214.317115 L255.441686,210.141919 Z M250.5,211 C254.089851,211 257,208.089851 257,204.5 C257,200.910149 254.089851,198 250.5,198 C246.910149,198 244,200.910149 244,204.5 C244,208.089851 246.910149,211 250.5,211 Z" transform="translate(-243 -197)"></path> </g></svg>',m_='<svg viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" fill="#000000"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <title>zoom-out Created with Sketch Beta. ',g_=' ',b_='',v_=' ',x_=' ',k_='';class w_{root_ui_element=void 0;zoomInOut=()=>null;resetZoom=()=>null;animate_chat=()=>null;tree_type=void 0;animatable_trees=["goldenRod","radialSpiderLeg"];constructor({root_ui_element:e,zoomInOut:t,resetZoom:r,animate_chat:a}){this.root_ui_element=e,this.zoomInOut=t,this.resetZoom=r,this.animate_chat=a,setTimeout((()=>{this.make_tools()}),0)}make_tools(){const e=new Hw;e.className="tools-container",this.root_ui_element?.appendChild(e);const t=document.createElement("div");t.className="tool-item",t.innerHTML=f_,t.title="Zoom in",t.onclick=e=>this.zoomInOut();const r=document.createElement("div");r.className="tool-item",r.innerHTML=m_,r.title="Zoom out",r.onclick=e=>this.zoomInOut("out");const a=document.createElement("div");a.className="tool-item",a.innerHTML=g_,a.title="Reset zoom & position",a.onclick=e=>this.resetZoom();const i=document.createElement("div");i.className="tool-item",i.innerHTML=b_,i.title="Start/Stop Clockwise Rotation";const n=document.createElement("div");n.className="tool-item",n.innerHTML=k_,n.title="Start/Stop Anticlockwise Rotation";const o=document.createElement("div");o.className="tool-item",o.innerHTML=v_,o.title="Rotate Clockwise Once";const c=document.createElement("div");c.className="tool-item",c.innerHTML=x_,c.title="Rotate Anticlockwise Once",e.append(t),e.append(r),e.append(a),this.animatable_trees.includes(this.tree_type)&&(e.append(i),e.append(n),e.append(o),e.append(c),i.onclick=e=>this.animate_chat(),n.onclick=e=>this.animate_chat(!1,!0),o.onclick=e=>this.animate_chat(!0),c.onclick=e=>this.animate_chat(!0,!0))}}class C_ extends EventTarget{libraryName="TreeSpider";targetRootContainer=null;rootWrapperContainer=null;tsInnerContainer=null;rootCanvasEl=null;chartHelper={};currentChartUI;zoom_instace;colorHandler={};tree_default_point_position="";instance_unique_id="";options={targetContainer:"",width:"900px",height:"500px",placeEl:"override",tree_data:void 0,color_range:[],tree_type:"default",chart_head_type:"default",show_tools:!0,show_chart_head_border:!1,animation_rotation_speed:10,animation_rotation_interval:1,backgroundPattern:"default",backgroundSize:void 0,customBackground:void 0,backgroundPosition:void 0,head_linker_thumb_circle_radius:8,linker_thumb_icon_color:"bright500",linker_thumb_shape:"symbolCircle",head_image_shape:"symbolCircle",chart_head_bg:"#ffffff",auto_set_chart_head_bg:!1,display_tree_in_step:!1,auto_display_tree_in_step:!0,tree_level_step:2,pallet:{h:10,s:.5,l:.5,darker:3,brighter:.8,bright100:.5,dark100:.5,gray:50,gray85:85},tree_link_type:void 0,random_data_length:200,autoInitialize:!0,zoom_in_distance:1.5,zoom_out_distance:.5,verticalSpace:"120px",font_link:"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap",font_name:"Lato"};constructor(e){if(super(),null==e.targetContainer)throw new Error(this.libraryName+": The target container is required");if(null!=e.tree_data)this.options.tree_data=e.tree_data;else{const t=new n_({length:e.random_data_length||this.options.random_data_length});this.options.tree_data=t.generated_data}this.setOptions(e),this.instance_unique_id="tree_spider_"+this.options.targetContainer.replace(/[\W\D]/,"_"),this.loadFont(),console.info(this.libraryName+" ready!"),this.options.autoInitialize&&this.initialize()}initialize(){if(this.targetRootContainer=document.querySelector(this.options.targetContainer),null===this.targetRootContainer)throw new Error(this.libraryName+": target container not found");this.targetRootContainer.setAttribute("data-tree-spider-initialized",this.instance_unique_id),this.createUI(),setTimeout((()=>{this.emitEvent("library.init",{rootContainer:this.rootWrapperContainer})}),0),console.info(this.libraryName+" initialized!")}initialize_root_container(){this.rootWrapperContainer=new Rw,this.rootWrapperContainer.setAttribute("data-ts-unique-id",this.instance_unique_id),this.setCSSPropertyVar("--vertical-space-var",this.options.verticalSpace),this.setCSSPropertyVar("--font-family",this.options.font_name),this.setCSSPropertyVar("--root-cont-width",this.options.width),this.setCSSPropertyVar("--root-cont-height",this.options.height),this.rootWrapperContainer.setAttribute("backgroundPattern",this.options.backgroundPattern),this.rootWrapperContainer.setAttribute("backgroundSize",this.options.backgroundSize),this.rootWrapperContainer.setAttribute("customBackground",this.options.customBackground),this.rootWrapperContainer.setAttribute("backgroundPosition",this.options.backgroundPosition)}setCSSPropertyVar(e,t){this.rootWrapperContainer?.style.setProperty(e,t)}loadFont(){let e,t,r;null==lr('[href="https://fonts.googleapis.com"]').node()&&(t=sr("link").attr("rel","preconnect").attr("href","https://fonts.googleapis.com")),null==lr('[href="https://fonts.gstatic.com"]').node()&&(r=sr("link").attr("rel","preconnect").attr("href","https://fonts.gstatic.com").attr("crossOrigin","")),this.options.font_link&&(e=sr("link").attr("href",this.options.font_link).attr("rel","stylesheet")),null!=t&&document.head.appendChild(t.node()),null!=r&&document.head.appendChild(r.node()),null!=e&&document.head.appendChild(e.node())}setObjectValue(e,t){const r=e;if(0==Object.keys(r).length)return t;for(const a in r)if(Object.keys(t).includes(a)&&Object.hasOwnProperty.call(r,a))if("object"!=typeof r[a]||Array.isArray(r[a]))r[a]=t[a];else{const e=this.setObjectValue(r[a],t[a]);r[a]={...r[a],...e}}return r}createUI(){this.initialize_root_container(),this.chartHelper=new o_,this.chartHelper.rootWrapperContainer=this.rootWrapperContainer,this.chartHelper.app_unique_id=this.instance_unique_id,this.chartHelper.tree_data=this.options.tree_data,this.chartHelper.center_elem=this.center_elem.bind(this),this.chartHelper.chart_head_type=this.options.chart_head_type,this.chartHelper.animation_rotation_speed=this.options.animation_rotation_speed,this.chartHelper.animation_rotation_interval=this.options.animation_rotation_interval,this.chartHelper.head_linker_thumb_circle_radius=this.options.head_linker_thumb_circle_radius,this.chartHelper.linker_thumb_icon_color=this.options.linker_thumb_icon_color,this.chartHelper.linker_thumb_shape=this.options.linker_thumb_shape,this.chartHelper.head_image_shape=this.options.head_image_shape,this.chartHelper.chart_head_bg=this.options.chart_head_bg,this.chartHelper.auto_set_chart_head_bg=this.options.auto_set_chart_head_bg,this.chartHelper.display_tree_in_step=this.options.display_tree_in_step,this.chartHelper.auto_display_tree_in_step=this.options.auto_display_tree_in_step,this.chartHelper.tree_level_step=this.options.tree_level_step,this.chartHelper.tree_link_type=this.options.tree_link_type,this.chartHelper.emitEvent=this.emitEvent.bind(this),this.colorHandler=new c_({tree_data:this.options.tree_data,color_range:this.options.color_range,pallet:this.options.pallet}),this.chartHelper.color_handler=this.colorHandler,this.placeRootContainer()}zoomInOut(e="in"){const t="in"==e?this.options.zoom_in_distance:this.options.zoom_out_distance;this.zoom_instace?.scaleBy(lr(`[data-ts-unique-id='${this.instance_unique_id}']`),t)}resetZoom(){const e=lr(`[data-ts-unique-id='${this.instance_unique_id}'] .root-svg-el > g`).node().getBoundingClientRect();this.center_elem(e,this.tree_default_point_position)}placeRootContainer(){if(this.tsInnerContainer=this.chartHelper.createDynamicEl(),this.tsInnerContainer.className="ts-inner-container",0==this.options.tree_data?.length){const e=new Hw;e.innerText="No data provided!",this.tsInnerContainer.appendChild(e)}if(this.rootWrapperContainer?.appendChild(this.tsInnerContainer),"start"==this.options.placeEl?this.targetRootContainer?.prepend(this.rootWrapperContainer):"end"==this.options.placeEl?this.targetRootContainer?.append(this.rootWrapperContainer):"object"==typeof this.options.placeEl&&Object.keys(this.options.placeEl).length>0?this.targetRootContainer?.insertBefore(this.rootWrapperContainer,this.targetRootContainer.querySelector(this.options.placeEl.beforeEl)):(this.targetRootContainer.innerHTML="",this.targetRootContainer.appendChild(this.rootWrapperContainer)),this.bindPanning(),"default"==this.options.tree_type)this.currentChartUI=new l_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("vSpiderWalk"==this.options.tree_type)this.currentChartUI=new s_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("hSpider"==this.options.tree_type)this.currentChartUI=new u_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("hSpiderWalk"==this.options.tree_type)this.currentChartUI=new h_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("cellar"==this.options.tree_type)this.currentChartUI=new d_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("goldenRod"==this.options.tree_type)this.currentChartUI=new p_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else{if("radialSpiderLeg"!=this.options.tree_type)throw new Error("Not implemented and you are welcome to implement it :)");this.currentChartUI=new y_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper})}this.options.tree_data.length>0&&this.options.show_tools&&(new w_({root_ui_element:this.rootWrapperContainer,zoomInOut:this.zoomInOut.bind(this),resetZoom:this.resetZoom.bind(this),animate_chat:this.currentChartUI?.animate_chat?.bind(this.currentChartUI)}).tree_type=this.options.tree_type)}bindPanning(){const e=this.rootWrapperContainer?.getBoundingClientRect(),t=lr(`[data-ts-unique-id='${this.instance_unique_id}']`);this.zoom_instace=Lw().filter((e=>(e.preventDefault(),!(e.ctrlKey&&"wheel"!==e.type||e.button)))).extent([[0,0],[e.width,e.height]]).on("zoom",(e=>{this.emitEvent("zooming",{e:e})&&(this.tsInnerContainer.style.transform=`translate(${e.transform.x}px, ${e.transform.y}px) scale(${e.transform.k})`,this.rootWrapperContainer.style.setProperty("--ts-root-container-cursor","grabbing"),this.currentChartUI.current_scale=e.transform.k)})).on("end",(e=>{this.rootWrapperContainer.style.setProperty("--ts-root-container-cursor","grab")})),t.call(this.zoom_instace).on("dblclick.zoom",(e=>null))}center_elem(e,t="center"){const r=lr(`[data-ts-unique-id='${this.instance_unique_id}']`);""==this.tree_default_point_position&&(this.tree_default_point_position=t);const a=r.node()?.getBoundingClientRect(),i=this.tsInnerContainer?.getBoundingClientRect(),n=(e.left-i.left)/this.currentChartUI.current_scale,o=(e.top-i.top)/this.currentChartUI.current_scale,c=a.width/2-e.width/2/this.currentChartUI.current_scale,l=a.height/2-e.height/2/this.currentChartUI.current_scale;let s=0,u=0;"center"==t?(s=n-c,u=o-l):"top"==t?(s=n-c,u=o-10):"bottom"==t?(s=n-c,u=o-(l+(a.height/2-e.height/2))+10):"left"==t?(s=n-10,u=o-l):"right"==t&&(s=n-(c+(a.width/2-e.width/2))+10,u=o-l),r.transition().duration(2500).call(this.zoom_instace?.transform,xw.translate(-s,-u))}emitEvent(e,t,r=!0){const a=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:r});return this.dispatchEvent(a)}updateChartHeadBg(e){"goldenRod"==this.options.tree_type||"radialSpiderLeg"==this.options.tree_type?(this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.querySelector("rect").style.fill=e)),this.addEventListener("chart_head.expanded",(()=>this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.querySelector("rect").style.fill=e))))):(this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.style.backgroundColor=e)),this.addEventListener("chart_head.expanded",(()=>this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.style.backgroundColor=e)))))}on(e,t){this.addEventListener(e,t)}setOptions(e){this.setObjectValue(this.options,e)}zoom(e){this.zoomInOut(e)}startStopRotateCW(){this.currentChartUI?.animate_chat()}startStopRotateACW(){this.currentChartUI?.animate_chat(!1,!0)}rotateOnceCW(){this.currentChartUI?.animate_chat(!0)}rotateOnceACW(){this.currentChartUI?.animate_chat(!0,!0)}}}}]); \ No newline at end of file diff --git a/assets/js/925b3f96.57091986.js b/assets/js/925b3f96.57091986.js new file mode 100644 index 0000000..6c32728 --- /dev/null +++ b/assets/js/925b3f96.57091986.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8609],{5026:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>l,contentTitle:()=>i,default:()=>g,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var s=o(4848),n=o(8453);const r={slug:"first-blog-post",title:"First Blog Post",authors:["slorber","yangshun"],tags:["hola","docusaurus"]},i=void 0,a={permalink:"/blog/first-blog-post",editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2019-05-28-first-blog-post.md",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet...",date:"2019-05-28T00:00:00.000Z",tags:[{inline:!1,label:"Hola",permalink:"/blog/tags/hola",description:"Hola tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.135,hasTruncateMarker:!0,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",page:{permalink:"/blog/authors/all-sebastien-lorber-articles"},socials:{x:"https://x.com/sebastienlorber",linkedin:"https://www.linkedin.com/in/sebastienlorber/",github:"https://github.com/slorber",newsletter:"https://thisweekinreact.com"},imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",page:{permalink:"/blog/authors/yangshun"},socials:{x:"https://x.com/yangshunz",github:"https://github.com/yangshun"},imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:["slorber","yangshun"],tags:["hola","docusaurus"]},unlisted:!1,prevItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},l={authorsImageUrls:[void 0,void 0]},u=[];function c(t){const e={p:"p",...(0,n.R)(),...t.components};return(0,s.jsx)(e.p,{children:"Lorem ipsum dolor sit amet..."})}function g(t={}){const{wrapper:e}={...(0,n.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(c,{...t})}):c(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>i,x:()=>a});var s=o(6540);const n={},r=s.createContext(n);function i(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:i(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/9dcc72b5.3f997ac0.js b/assets/js/9dcc72b5.3f997ac0.js new file mode 100644 index 0000000..a37754b --- /dev/null +++ b/assets/js/9dcc72b5.3f997ac0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[4094],{1715:(e,t,n)=>{n.r(t),n.d(t,{TSpydExample1:()=>p,TSpydExample2:()=>h,TSpydExample3:()=>u,TSpydExample4:()=>m,TSpydExample5:()=>x,TSpydExample6:()=>g,TSpydExample7:()=>y,assets:()=>c,contentTitle:()=>l,default:()=>v,frontMatter:()=>s,metadata:()=>o,toc:()=>j});var r=n(4848),a=n(8453),i=n(6540),d=n(8777);const s={sidebar_position:5},l="Trees",o={id:"trees",title:"Trees",description:"These are the different tree choices that can be chosen from, they will be caterized into radial and non-radial trees:",source:"@site/docs/trees.mdx",sourceDirName:".",slug:"/trees",permalink:"/docs/trees",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/trees.mdx",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Tree Data",permalink:"/docs/tree-data"},next:{title:"Chart Heads",permalink:"/docs/chart-heads"}},c={},p=i.memo((()=>(i.useLayoutEffect((()=>{new d.A({targetContainer:"#spyd-tr-1",random_data_length:50,width:"100%",tree_type:"goldenRod"})}),[]),(0,r.jsx)("div",{id:"spyd-tr-1",style:{marginBottom:25}})))),h=i.memo((()=>(i.useLayoutEffect((()=>{new d.A({targetContainer:"#spyd-tr-2",random_data_length:50,width:"100%",tree_type:"radialSpiderLeg"})}),[]),(0,r.jsx)("div",{id:"spyd-tr-2",style:{marginBottom:25}})))),u=i.memo((()=>(i.useLayoutEffect((()=>{new d.A({targetContainer:"#spyd-tr-3",random_data_length:50,width:"100%",tree_type:"default"})}),[]),(0,r.jsx)("div",{id:"spyd-tr-3",style:{marginBottom:25}})))),m=i.memo((()=>(i.useLayoutEffect((()=>{new d.A({targetContainer:"#spyd-tr-4",random_data_length:50,width:"100%",tree_type:"cellar"})}),[]),(0,r.jsx)("div",{id:"spyd-tr-4",style:{marginBottom:25}})))),x=i.memo((()=>(i.useLayoutEffect((()=>{new d.A({targetContainer:"#spyd-tr-5",random_data_length:50,width:"100%",tree_type:"hSpider"})}),[]),(0,r.jsx)("div",{id:"spyd-tr-5",style:{marginBottom:25}})))),g=i.memo((()=>(i.useLayoutEffect((()=>{new d.A({targetContainer:"#spyd-tr-6",random_data_length:50,width:"100%",tree_type:"hSpiderWalk"})}),[]),(0,r.jsx)("div",{id:"spyd-tr-6",style:{marginBottom:25}})))),y=i.memo((()=>(i.useLayoutEffect((()=>{new d.A({targetContainer:"#spyd-tr-7",random_data_length:50,width:"100%",tree_type:"vSpiderWalk"})}),[]),(0,r.jsx)("div",{id:"spyd-tr-7",style:{marginBottom:25}})))),j=[{value:"Radial trees",id:"radial-trees",level:2},{value:"goldenRod",id:"goldenrod",level:3},{value:"radialSpiderLeg",id:"radialspiderleg",level:3},{value:"Non-radial trees",id:"non-radial-trees",level:2},{value:"default",id:"default",level:3},{value:"cellar",id:"cellar",level:3},{value:"hSpider",id:"hspider",level:3},{value:"hSpiderWalk",id:"hspiderwalk",level:3},{value:"vSpiderWalk",id:"vspiderwalk",level:3}];function f(e){const t={code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"trees",children:"Trees"})}),"\n",(0,r.jsx)(t.p,{children:"These are the different tree choices that can be chosen from, they will be caterized into radial and non-radial trees:"}),"\n",(0,r.jsx)(t.h2,{id:"radial-trees",children:"Radial trees"}),"\n",(0,r.jsx)(t.p,{children:"The following are the radial or circular trees"}),"\n",(0,r.jsx)(t.h3,{id:"goldenrod",children:"goldenRod"}),"\n",(0,r.jsx)(t.p,{children:"The goldenRod tree type is one of the radial tree types, example"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n tree_type: "goldenRod"\n})\n'})}),"\n",(0,r.jsx)(t.p,{children:"if you run this it would look something like this:"}),"\n","\n",(0,r.jsx)(p,{}),"\n",(0,r.jsx)(t.h3,{id:"radialspiderleg",children:"radialSpiderLeg"}),"\n",(0,r.jsx)(t.p,{children:"The radialSpiderLeg tree type is the second radial type tree types, example"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n tree_type: "radialSpiderLeg"\n})\n'})}),"\n",(0,r.jsx)(t.p,{children:"if you run this it would look something like this:"}),"\n","\n",(0,r.jsx)(h,{}),"\n",(0,r.jsx)(t.h2,{id:"non-radial-trees",children:"Non-radial trees"}),"\n",(0,r.jsx)(t.p,{children:"The following are the non-radial trees types."}),"\n",(0,r.jsx)(t.h3,{id:"default",children:"default"}),"\n",(0,r.jsx)(t.p,{children:"This is the default tree type, and it is also useful in but not limited to organizations with hierarchical type structure, example"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n tree_type: "default"\n})\n'})}),"\n","\n",(0,r.jsx)(u,{}),"\n",(0,r.jsx)(t.h3,{id:"cellar",children:"cellar"}),"\n",(0,r.jsx)(t.p,{children:"The cellar tree structure is also useful in but not limited to organizations with hierarchical type structure, example"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n tree_type: "cellar"\n})\n'})}),"\n","\n",(0,r.jsx)(m,{}),"\n",(0,r.jsx)(t.h3,{id:"hspider",children:"hSpider"}),"\n",(0,r.jsx)(t.p,{children:"The hSpider tree is an horizontal tree, example"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n tree_type: "hSpider"\n})\n'})}),"\n","\n",(0,r.jsx)(x,{}),"\n",(0,r.jsx)(t.h3,{id:"hspiderwalk",children:"hSpiderWalk"}),"\n",(0,r.jsx)(t.p,{children:'The hSpiderWalk tree is an horizontal tree just like the hSpider but it is in the shape of the letter "H", example'}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n tree_type: "hSpiderWalk"\n})\n'})}),"\n","\n",(0,r.jsx)(g,{}),"\n",(0,r.jsx)(t.h3,{id:"vspiderwalk",children:"vSpiderWalk"}),"\n",(0,r.jsx)(t.p,{children:"The vSpiderWalk tree is a verticaal tree just like the hSpiderWalk but it is vertical, example"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n tree_type: "vSpiderWalk"\n})\n'})}),"\n","\n",(0,r.jsx)(y,{})]})}function v(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(f,{...e})}):f(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>s});var r=n(6540);const a={},i=r.createContext(a);function d(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:d(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9e4087bc.ed60ad81.js b/assets/js/9e4087bc.ed60ad81.js new file mode 100644 index 0000000..d9d4a4e --- /dev/null +++ b/assets/js/9e4087bc.ed60ad81.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[2711],{9331:(e,r,t)=>{t.r(r),t.d(r,{default:()=>m});t(6540);var a=t(8774),n=t(1312),s=t(1213),i=t(6266),c=t(781),l=t(1107),o=t(4848);function d(e){let{year:r,posts:t}=e;const n=(0,i.i)({day:"numeric",month:"long",timeZone:"UTC"});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(l.A,{as:"h3",id:r,children:r}),(0,o.jsx)("ul",{children:t.map((e=>{return(0,o.jsx)("li",{children:(0,o.jsxs)(a.A,{to:e.metadata.permalink,children:[(r=e.metadata.date,n.format(new Date(r)))," - ",e.metadata.title]})},e.metadata.date);var r}))})]})}function h(e){let{years:r}=e;return(0,o.jsx)("section",{className:"margin-vert--lg",children:(0,o.jsx)("div",{className:"container",children:(0,o.jsx)("div",{className:"row",children:r.map(((e,r)=>(0,o.jsx)("div",{className:"col col--4 margin-vert--lg",children:(0,o.jsx)(d,{...e})},r)))})})})}function m(e){let{archive:r}=e;const t=(0,n.T)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),a=(0,n.T)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),i=function(e){const r=e.reduce(((e,r)=>{const t=r.metadata.date.split("-")[0],a=e.get(t)??[];return e.set(t,[r,...a])}),new Map);return Array.from(r,(e=>{let[r,t]=e;return{year:r,posts:t}}))}(r.blogPosts);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.be,{title:t,description:a}),(0,o.jsxs)(c.A,{children:[(0,o.jsx)("header",{className:"hero hero--primary",children:(0,o.jsxs)("div",{className:"container",children:[(0,o.jsx)(l.A,{as:"h1",className:"hero__title",children:t}),(0,o.jsx)("p",{className:"hero__subtitle",children:a})]})}),(0,o.jsx)("main",{children:i.length>0&&(0,o.jsx)(h,{years:i})})]})]})}},6266:(e,r,t)=>{t.d(r,{i:()=>n});var a=t(4586);function n(e){void 0===e&&(e={});const{i18n:{currentLocale:r}}=(0,a.A)(),t=function(){const{i18n:{currentLocale:e,localeConfigs:r}}=(0,a.A)();return r[e].calendar}();return new Intl.DateTimeFormat(r,{calendar:t,...e})}}}]); \ No newline at end of file diff --git a/assets/js/a6aa9e1f.3ab74c6d.js b/assets/js/a6aa9e1f.3ab74c6d.js new file mode 100644 index 0000000..13869f6 --- /dev/null +++ b/assets/js/a6aa9e1f.3ab74c6d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[7643],{5124:(e,t,a)=>{a.r(t),a.d(t,{default:()=>j});a(6540);var n=a(4164),s=a(4586),r=a(1213),i=a(7559),l=a(8027),o=a(7713),c=a(1463),d=a(3892),g=a(5260),m=a(4096),u=a(4848);function h(e){const t=(0,m.kJ)(e);return(0,u.jsx)(g.A,{children:(0,u.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}function p(e){const{metadata:t}=e,{siteConfig:{title:a}}=(0,s.A)(),{blogDescription:n,blogTitle:i,permalink:l}=t,o="/"===l?a:i;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(r.be,{title:o,description:n}),(0,u.jsx)(c.A,{tag:"blog_posts_list"})]})}function x(e){const{metadata:t,items:a,sidebar:n}=e;return(0,u.jsxs)(l.A,{sidebar:n,children:[(0,u.jsx)(d.A,{items:a}),(0,u.jsx)(o.A,{metadata:t})]})}function j(e){return(0,u.jsxs)(r.e3,{className:(0,n.A)(i.G.wrapper.blogPages,i.G.page.blogListPage),children:[(0,u.jsx)(p,{...e}),(0,u.jsx)(h,{...e}),(0,u.jsx)(x,{...e})]})}},7713:(e,t,a)=>{a.d(t,{A:()=>i});a(6540);var n=a(1312),s=a(9022),r=a(4848);function i(e){const{metadata:t}=e,{previousPage:a,nextPage:i}=t;return(0,r.jsxs)("nav",{className:"pagination-nav","aria-label":(0,n.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[a&&(0,r.jsx)(s.A,{permalink:a,title:(0,r.jsx)(n.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer entries"})}),i&&(0,r.jsx)(s.A,{permalink:i,title:(0,r.jsx)(n.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older entries"}),isNext:!0})]})}},2907:(e,t,a)=>{a.d(t,{A:()=>U});a(6540);var n=a(4164),s=a(4096),r=a(4848);function i(e){let{children:t,className:a}=e;return(0,r.jsx)("article",{className:a,children:t})}var l=a(8774);const o={title:"title_f1Hy"};function c(e){let{className:t}=e;const{metadata:a,isBlogPostPage:i}=(0,s.e7)(),{permalink:c,title:d}=a,g=i?"h1":"h2";return(0,r.jsx)(g,{className:(0,n.A)(o.title,t),children:i?d:(0,r.jsx)(l.A,{to:c,children:d})})}var d=a(1312),g=a(5846),m=a(6266);const u={container:"container_mt6G"};function h(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,g.W)();return t=>{const a=Math.ceil(t);return e(a,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return(0,r.jsx)(r.Fragment,{children:a(t)})}function p(e){let{date:t,formattedDate:a}=e;return(0,r.jsx)("time",{dateTime:t,children:a})}function x(){return(0,r.jsx)(r.Fragment,{children:" \xb7 "})}function j(e){let{className:t}=e;const{metadata:a}=(0,s.e7)(),{date:i,readingTime:l}=a,o=(0,m.i)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,r.jsxs)("div",{className:(0,n.A)(u.container,"margin-vert--md",t),children:[(0,r.jsx)(p,{date:i,formattedDate:(c=i,o.format(new Date(c)))}),void 0!==l&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x,{}),(0,r.jsx)(h,{readingTime:l})]})]});var c}var A=a(6913);const b={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function f(e){let{className:t}=e;const{metadata:{authors:a},assets:i}=(0,s.e7)();if(0===a.length)return null;const l=a.every((e=>{let{name:t}=e;return!t})),o=1===a.length;return(0,r.jsx)("div",{className:(0,n.A)("margin-top--md margin-bottom--sm",l?b.imageOnlyAuthorRow:"row",t),children:a.map(((e,t)=>(0,r.jsx)("div",{className:(0,n.A)(!l&&(o?"col col--12":"col col--6"),l?b.imageOnlyAuthorCol:b.authorCol),children:(0,r.jsx)(A.A,{author:{...e,imageURL:i.authorsImageUrls[t]??e.imageURL}})},t)))})}function v(){return(0,r.jsxs)("header",{children:[(0,r.jsx)(c,{}),(0,r.jsx)(j,{}),(0,r.jsx)(f,{})]})}var N=a(440),_=a(5533);function T(e){let{children:t,className:a}=e;const{isBlogPostPage:i}=(0,s.e7)();return(0,r.jsx)("div",{id:i?N.LU:void 0,className:(0,n.A)("markdown",a),children:(0,r.jsx)(_.A,{children:t})})}var k=a(7559),w=a(4336),y=a(2053);function P(){return(0,r.jsx)("b",{children:(0,r.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read more"})})}function R(e){const{blogPostTitle:t,...a}=e;return(0,r.jsx)(l.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...a,children:(0,r.jsx)(P,{})})}function C(){const{metadata:e,isBlogPostPage:t}=(0,s.e7)(),{tags:a,title:i,editUrl:l,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:d}=e,g=!t&&o,m=a.length>0;if(!(m||g||l))return null;if(t){const e=!!(l||d||c);return(0,r.jsxs)("footer",{className:"docusaurus-mt-lg",children:[m&&(0,r.jsx)("div",{className:(0,n.A)("row","margin-top--sm",k.G.blog.blogFooterEditMetaRow),children:(0,r.jsx)("div",{className:"col",children:(0,r.jsx)(y.A,{tags:a})})}),e&&(0,r.jsx)(w.A,{className:(0,n.A)("margin-top--sm",k.G.blog.blogFooterEditMetaRow),editUrl:l,lastUpdatedAt:d,lastUpdatedBy:c})]})}return(0,r.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[m&&(0,r.jsx)("div",{className:(0,n.A)("col",{"col--9":g}),children:(0,r.jsx)(y.A,{tags:a})}),g&&(0,r.jsx)("div",{className:(0,n.A)("col text--right",{"col--3":m}),children:(0,r.jsx)(R,{blogPostTitle:i,to:e.permalink})})]})}function U(e){let{children:t,className:a}=e;const l=function(){const{isBlogPostPage:e}=(0,s.e7)();return e?void 0:"margin-bottom--xl"}();return(0,r.jsxs)(i,{className:(0,n.A)(l,a),children:[(0,r.jsx)(v,{}),(0,r.jsx)(T,{children:t}),(0,r.jsx)(C,{})]})}},3892:(e,t,a)=>{a.d(t,{A:()=>i});a(6540);var n=a(4096),s=a(2907),r=a(4848);function i(e){let{items:t,component:a=s.A}=e;return(0,r.jsx)(r.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,r.jsx)(n.in,{content:t,children:(0,r.jsx)(a,{children:(0,r.jsx)(t,{})})},t.metadata.permalink)}))})}},9022:(e,t,a)=>{a.d(t,{A:()=>i});a(6540);var n=a(4164),s=a(8774),r=a(4848);function i(e){const{permalink:t,title:a,subLabel:i,isNext:l}=e;return(0,r.jsxs)(s.A,{className:(0,n.A)("pagination-nav__link",l?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[i&&(0,r.jsx)("div",{className:"pagination-nav__sublabel",children:i}),(0,r.jsx)("div",{className:"pagination-nav__label",children:a})]})}},6133:(e,t,a)=>{a.d(t,{A:()=>l});a(6540);var n=a(4164),s=a(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var i=a(4848);function l(e){let{permalink:t,label:a,count:l,description:o}=e;return(0,i.jsxs)(s.A,{href:t,title:o,className:(0,n.A)(r.tag,l?r.tagWithCount:r.tagRegular),children:[a,l&&(0,i.jsx)("span",{children:l})]})}},2053:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var n=a(4164),s=a(1312),r=a(6133);const i={tags:"tags_jXut",tag:"tag_QGVx"};var l=a(4848);function o(e){let{tags:t}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("b",{children:(0,l.jsx)(s.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,l.jsx)("ul",{className:(0,n.A)(i.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,l.jsx)("li",{className:i.tag,children:(0,l.jsx)(r.A,{...e})},e.permalink)))})]})}}}]); \ No newline at end of file diff --git a/assets/js/a7456010.884c12be.js b/assets/js/a7456010.884c12be.js new file mode 100644 index 0000000..7da17b1 --- /dev/null +++ b/assets/js/a7456010.884c12be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[1235],{8552:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/a7bd4aaa.643896d7.js b/assets/js/a7bd4aaa.643896d7.js new file mode 100644 index 0000000..25640da --- /dev/null +++ b/assets/js/a7bd4aaa.643896d7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[7098],{1723:(e,n,s)=>{s.r(n),s.d(n,{default:()=>l});s(6540);var r=s(1213);function o(e,n){return`docs-${e}-${n}`}var t=s(3025),c=s(2831),i=s(1463),u=s(4848);function d(e){const{version:n}=e;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(i.A,{version:n.version,tag:o(n.pluginId,n.version)}),(0,u.jsx)(r.be,{children:n.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function a(e){const{version:n,route:s}=e;return(0,u.jsx)(r.e3,{className:n.className,children:(0,u.jsx)(t.n,{version:n,children:(0,c.v)(s.routes)})})}function l(e){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(d,{...e}),(0,u.jsx)(a,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/a94703ab.a1dfc18a.js b/assets/js/a94703ab.a1dfc18a.js new file mode 100644 index 0000000..cdcfdb2 --- /dev/null +++ b/assets/js/a94703ab.a1dfc18a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[9048],{1377:(e,t,n)=>{n.r(t),n.d(t,{default:()=>pe});var a=n(6540),o=n(4164),i=n(1213),s=n(7559),l=n(6972),r=n(609),c=n(1312),d=n(3104),u=n(5062);const m={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};var b=n(4848);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.gk)();return(0,d.Mq)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(3109),x=n(6347),f=n(4581),j=n(6342),v=n(3465);function _(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const g="collapseSidebarButton_PEFL",A="collapseSidebarButtonIcon_kv0_";function C(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.A)("button button--secondary button--outline",g),onClick:t,children:(0,b.jsx)(_,{className:A})})}var k=n(5041),S=n(9532);const T=Symbol("EmptyContext"),N=a.createContext(T);function I(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(N.Provider,{value:i,children:t})}var y=n(1422),B=n(9169),w=n(8774),L=n(2303);function E(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),"aria-expanded":!t,type:"button",className:"clean-btn menu__caret",onClick:a})}function M(e){let{item:t,onItemClick:n,activePath:i,level:r,index:c,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:f}}}=(0,j.p)(),v=function(e){const t=(0,L.A)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0),[e,t])}(t),_=(0,l.w8)(t,i),g=(0,B.ys)(x,i),{collapsed:A,setCollapsed:C}=(0,y.u)({initialState:()=>!!h&&(!_&&t.collapsed)}),{expandedItem:k,setExpandedItem:I}=function(){const e=(0,a.useContext)(N);if(e===T)throw new S.dV("DocSidebarItemsExpandedStateProvider");return e}(),M=function(e){void 0===e&&(e=!A),I(e?null:c),C(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,S.ZC)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:_,collapsed:A,updateCollapsed:M}),(0,a.useEffect)((()=>{h&&null!=k&&k!==c&&f&&C(!0)}),[h,k,c,C,f]),(0,b.jsxs)("li",{className:(0,o.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":A},p),children:[(0,b.jsxs)("div",{className:(0,o.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":g}),children:[(0,b.jsx)(w.A,{className:(0,o.A)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":_}),onClick:h?e=>{n?.(t),x?M(!1):(e.preventDefault(),M())}:()=>{n?.(t)},"aria-current":g?"page":void 0,role:h&&!x?"button":void 0,"aria-expanded":h&&!x?!A:void 0,href:h?v??"#":v,...d,children:m}),x&&h&&(0,b.jsx)(E,{collapsed:A,categoryLabel:m,onClick:e=>{e.preventDefault(),M()}})]}),(0,b.jsx)(y.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:A,children:(0,b.jsx)(V,{items:u,tabIndex:A?-1:0,onItemClick:n,activePath:i,level:r+1})})]})}var H=n(6654),G=n(3186);const P="menuExternalLink_NmtK";function R(e){let{item:t,onItemClick:n,activePath:a,level:i,index:r,...c}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l.w8)(t,a),x=(0,H.A)(d);return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(w.A,{className:(0,o.A)("menu__link",!x&&P,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...c,children:[u,!x&&(0,b.jsx)(G.A,{})]})},u)}const W="menuHtmlItem_M9Kj";function D(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:r}=t;return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(n),l&&[W,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:i}},a)}function F(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(M,{item:t,...n});case"html":return(0,b.jsx)(D,{item:t,...n});default:return(0,b.jsx)(R,{item:t,...n})}}function U(e){let{items:t,...n}=e;const a=(0,l.Y)(t,n.activePath);return(0,b.jsx)(I,{children:a.map(((e,t)=>(0,b.jsx)(F,{item:e,index:t,...n},t)))})}const V=(0,a.memo)(U),Y="menu_SIkG",K="menuWithAnnouncementBar_GW3s";function z(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,k.M)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.A)("menu thin-scrollbar",Y,l&&K,i),children:(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:n,activePath:t,level:1})})})}const q="sidebar_njMd",O="sidebarWithHideableNavbar_wUlq",J="sidebarHidden_VK0M",Q="sidebarLogo_isFc";function X(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,j.p)();return(0,b.jsxs)("div",{className:(0,o.A)(q,s&&O,i&&J),children:[s&&(0,b.jsx)(v.A,{tabIndex:-1,className:Q}),(0,b.jsx)(z,{path:t,sidebar:n}),l&&(0,b.jsx)(C,{onClick:a})]})}const Z=a.memo(X);var $=n(5600),ee=n(9876);const te=e=>{let{sidebar:t,path:n}=e;const a=(0,ee.M)();return(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ne(e){return(0,b.jsx)($.GX,{component:te,props:e})}const ae=a.memo(ne);function oe(e){const t=(0,f.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(Z,{...e}),a&&(0,b.jsx)(ae,{...e})]})}const ie={expandButton:"expandButton_TmdG",expandButtonIcon:"expandButtonIcon_i1dp"};function se(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ie.expandButton,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(_,{className:ie.expandButtonIcon})})}const le={docSidebarContainer:"docSidebarContainer_YfHR",docSidebarContainerHidden:"docSidebarContainerHidden_DPk8",sidebarViewport:"sidebarViewport_aRkj"};function re(e){let{children:t}=e;const n=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function ce(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.zy)(),[r,c]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{r&&c(!1),!r&&(0,p.O)()&&c(!0),i((e=>!e))}),[i,r]);return(0,b.jsx)("aside",{className:(0,o.A)(s.G.docs.docSidebarContainer,le.docSidebarContainer,n&&le.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(le.docSidebarContainer)&&n&&c(!0)},children:(0,b.jsx)(re,{children:(0,b.jsxs)("div",{className:(0,o.A)(le.sidebarViewport,r&&le.sidebarViewportHidden),children:[(0,b.jsx)(oe,{sidebar:t,path:l,onCollapse:d,isHidden:r}),r&&(0,b.jsx)(se,{toggleSidebar:d})]})})})}const de={docMainContainer:"docMainContainer_TBSr",docMainContainerEnhanced:"docMainContainerEnhanced_lQrH",docItemWrapperEnhanced:"docItemWrapperEnhanced_JWYK"};function ue(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,r.t)();return(0,b.jsx)("main",{className:(0,o.A)(de.docMainContainer,(t||!a)&&de.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.A)("container padding-top--md padding-bottom--lg",de.docItemWrapper,t&&de.docItemWrapperEnhanced),children:n})})}const me={docRoot:"docRoot_UBD9",docsWrapper:"docsWrapper_hBAB"};function be(e){let{children:t}=e;const n=(0,r.t)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:me.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:me.docRoot,children:[n&&(0,b.jsx)(ce,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(ue,{hiddenSidebarContainer:o,children:t})]})]})}var he=n(3363);function pe(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(he.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(i.e3,{className:(0,o.A)(s.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(be,{children:n})})})}},3363:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var a=n(4164),o=n(1312),i=n(1107),s=n(4848);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/assets/js/aba21aa0.ccefbfbf.js b/assets/js/aba21aa0.ccefbfbf.js new file mode 100644 index 0000000..4963a59 --- /dev/null +++ b/assets/js/aba21aa0.ccefbfbf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[5742],{7093:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/acecf23e.2e6b9f23.js b/assets/js/acecf23e.2e6b9f23.js new file mode 100644 index 0000000..6625f95 --- /dev/null +++ b/assets/js/acecf23e.2e6b9f23.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[1903],{1912:e=>{e.exports=JSON.parse('{"blogBasePath":"/blog","blogTitle":"Blog","authorsListPath":"/blog/authors"}')}}]); \ No newline at end of file diff --git a/assets/js/c15d9823.491f5097.js b/assets/js/c15d9823.491f5097.js new file mode 100644 index 0000000..d3a5df5 --- /dev/null +++ b/assets/js/c15d9823.491f5097.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8146],{9328:e=>{e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/c428a0e3.ed832b45.js b/assets/js/c428a0e3.ed832b45.js new file mode 100644 index 0000000..08ff765 --- /dev/null +++ b/assets/js/c428a0e3.ed832b45.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[3911],{6929:(e,t,n)=>{n.r(t),n.d(t,{TSpydExample1:()=>l,TSpydExample2:()=>p,TSpydExample3:()=>u,assets:()=>c,contentTitle:()=>i,default:()=>x,frontMatter:()=>o,metadata:()=>h,toc:()=>m});var a=n(4848),r=n(8453),d=n(6540),s=n(8777);const o={sidebar_position:6},i="Chart Heads",h={id:"chart-heads",title:"Chart Heads",description:"As TreeSpider has different tree types so it also has different options of chart heads that can be chosen from, each trees has a fitting chart head, for example the rounded chart head goes well on the goldenRod tree, the chart heads are as follows",source:"@site/docs/chart-heads.mdx",sourceDirName:".",slug:"/chart-heads",permalink:"/docs/chart-heads",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/chart-heads.mdx",tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Trees",permalink:"/docs/trees"},next:{title:"Options",permalink:"/docs/options"}},c={},l=d.memo((()=>(d.useLayoutEffect((()=>{new s.A({targetContainer:"#spyd-tr-1",random_data_length:50,width:"100%",chart_head_type:"default"})}),[]),(0,a.jsx)("div",{id:"spyd-tr-1",style:{marginBottom:25}})))),p=d.memo((()=>(d.useLayoutEffect((()=>{new s.A({targetContainer:"#spyd-tr-2",random_data_length:50,width:"100%",chart_head_type:"landscape"})}),[]),(0,a.jsx)("div",{id:"spyd-tr-2",style:{marginBottom:25}})))),u=d.memo((()=>(d.useLayoutEffect((()=>{new s.A({targetContainer:"#spyd-tr-3",random_data_length:50,width:"100%",chart_head_type:"rounded"})}),[]),(0,a.jsx)("div",{id:"spyd-tr-3",style:{marginBottom:25}})))),m=[{value:"default",id:"default",level:2},{value:"landscape",id:"landscape",level:2},{value:"rounded",id:"rounded",level:2}];function f(e){const t={code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.header,{children:(0,a.jsx)(t.h1,{id:"chart-heads",children:"Chart Heads"})}),"\n",(0,a.jsxs)(t.p,{children:["As TreeSpider has different tree types so it also has different options of chart heads that can be chosen from, each trees has a fitting chart head, for example the ",(0,a.jsx)(t.code,{children:"rounded"})," chart head goes well on the ",(0,a.jsx)(t.code,{children:"goldenRod"})," tree, the chart heads are as follows"]}),"\n",(0,a.jsx)(t.h2,{id:"default",children:"default"}),"\n",(0,a.jsx)(t.p,{children:"This is the default chart head, example"}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n chart_head_type: "default"\n})\n'})}),"\n",(0,a.jsx)(t.p,{children:"if you run this it would look somthing like this:"}),"\n","\n",(0,a.jsx)(l,{}),"\n",(0,a.jsx)(t.h2,{id:"landscape",children:"landscape"}),"\n",(0,a.jsxs)(t.p,{children:["The ",(0,a.jsx)(t.code,{children:"landscape"})," chart head is an horizontal chart head, example"]}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n chart_head_type: "landscape"\n})\n'})}),"\n",(0,a.jsx)(t.p,{children:"if you run this it would look something like this:"}),"\n","\n",(0,a.jsx)(p,{}),"\n",(0,a.jsx)(t.h2,{id:"rounded",children:"rounded"}),"\n",(0,a.jsx)(t.p,{children:"The rounded chart head is a transparent head with bigger image shape, example"}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n chart_head_type: "rounded"\n})\n'})}),"\n","\n",(0,a.jsx)(u,{})]})}function x(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>o});var a=n(6540);const r={},d=a.createContext(r);function s(e){const t=a.useContext(d);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),a.createElement(d.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c5727223.5708b8ec.js b/assets/js/c5727223.5708b8ec.js new file mode 100644 index 0000000..2672e2c --- /dev/null +++ b/assets/js/c5727223.5708b8ec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8306],{9074:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var r=t(4848),i=t(8453);const s={sidebar_position:1},a="React JS",o={id:"frameworks/react-js",title:"React JS",description:"TreeSpider can run in React JS applications, this documentation uses React JS and it runs TreeSpider, the following are the steps to running TreeSpider in a React JS application.",source:"@site/docs/frameworks/react-js.md",sourceDirName:"frameworks",slug:"/frameworks/react-js",permalink:"/docs/frameworks/react-js",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/frameworks/react-js.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Frameworks",permalink:"/docs/category/frameworks"},next:{title:"Contributing",permalink:"/docs/contributing"}},c={},d=[{value:"Installation",id:"installation",level:2},{value:"Usage",id:"usage",level:2}];function l(e){const n={code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"react-js",children:"React JS"})}),"\n",(0,r.jsx)(n.p,{children:"TreeSpider can run in React JS applications, this documentation uses React JS and it runs TreeSpider, the following are the steps to running TreeSpider in a React JS application."}),"\n",(0,r.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,r.jsx)(n.p,{children:"To install TreeSpider in React JS, run"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"npm i treespider\n"})}),"\n",(0,r.jsx)(n.p,{children:"This will install TreeSpider, next import TreeSpider in your application"}),"\n",(0,r.jsx)(n.h2,{id:"usage",children:"Usage"}),"\n",(0,r.jsx)(n.p,{children:"Import TreeSpider."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:"import TreeSpider from 'treespider';\n"})}),"\n",(0,r.jsx)(n.p,{children:"Next, add the CSS file to the index.js/ts file,"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",children:'import "treespider/dist/css/treeSpider.css"\n'})}),"\n",(0,r.jsx)(n.p,{children:"Next, initialize it"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-tsx",metastring:'title="src/ExampleComponent.tsx"',children:'const ExampleComponent = React.memo((props: any) => {\n const treeSpiderRef = React.useRef(null)\n\n React.useLayoutEffect(() => {\n treeSpiderRef.current = new TreeSpider({\n targetContainer: "#container-1",\n // ...\n })\n }, [])\n \n return (\n
\n )\n})\n\nexport default ExampleComponent;\n'})}),"\n",(0,r.jsxs)(n.p,{children:["Then TreeSpider is going to be displayed in the browser, to access the methods and events you can use the ",(0,r.jsx)(n.code,{children:"treeSpiderRef"}),", and other options also works the same way as it would in a non-react js application."]}),"\n",(0,r.jsx)(n.p,{children:"The React JS library version of TreeSpider is coming soon."})]})}function p(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(6540);const i={},s=r.createContext(i);function a(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c95e31df.2572c189.js b/assets/js/c95e31df.2572c189.js new file mode 100644 index 0000000..6d492da --- /dev/null +++ b/assets/js/c95e31df.2572c189.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[5859],{2781:(e,n,t)=>{t.r(n),t.d(n,{TestTSpyder1:()=>h,assets:()=>d,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>m});var i=t(4848),o=t(8453),r=t(6540),s=t(8777);const a={sidebar_position:9},l="Methods",c={id:"methods",title:"Methods",description:"The following methods can be used to interact with TreeSpider programmatically",source:"@site/docs/methods.mdx",sourceDirName:".",slug:"/methods",permalink:"/docs/methods",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/methods.mdx",tags:[],version:"current",sidebarPosition:9,frontMatter:{sidebar_position:9},sidebar:"tutorialSidebar",previous:{title:"Colors",permalink:"/docs/colors"},next:{title:"Events",permalink:"/docs/events"}},d={},h=r.memo((()=>{const e=r.useRef(),n=r.useRef(),t=r.useCallback((()=>{e.current&&(e.current.initialize(),n.current.remove())}),[e.current,n.current]);return r.useLayoutEffect((()=>{e.current=new s.A({targetContainer:"#test-cont-mt-3",width:"100%",random_data_length:30,autoInitialize:!1})}),[]),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("div",{id:"test-cont-mt-3"}),(0,i.jsx)("button",{ref:e=>n.current=e,onClick:t,children:"Click me to initialize TreeSpider"})]})})),m=[{value:"initialize",id:"initialize",level:2},{value:"resetZoom",id:"resetzoom",level:2},{value:"updateChartHeadBg",id:"updatechartheadbg",level:2},{value:"on",id:"on",level:2},{value:"setOptions",id:"setoptions",level:2},{value:"zoom",id:"zoom",level:2},{value:"startStopRotateCW",id:"startstoprotatecw",level:2},{value:"startStopRotateACW",id:"startstoprotateacw",level:2},{value:"rotateOnceCW",id:"rotateoncecw",level:2},{value:"rotateOnceACW",id:"rotateonceacw",level:2}];function u(e){const n={admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"methods",children:"Methods"})}),"\n",(0,i.jsx)(n.p,{children:"The following methods can be used to interact with TreeSpider programmatically"}),"\n",(0,i.jsx)(n.h2,{id:"initialize",children:"initialize"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Params: ",(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"none"})})]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["If you want to manually initialize TreeSpider, set the ",(0,i.jsx)(n.code,{children:"autoInitialize"})," option to ",(0,i.jsx)(n.code,{children:"false"})," then programmatically call this method to manually initialize TreeSpider, example below:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n autoInitialize: false\n})\n// ...\n\ndocument.querySelector("#random-btn").onclick = () => instance1.initialize()\n'})}),"\n",(0,i.jsx)(n.p,{children:"Click on the button below to initialize TreeSpider"}),"\n","\n",(0,i.jsx)(h,{}),"\n",(0,i.jsx)(n.h2,{id:"resetzoom",children:"resetZoom"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Params: ",(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"none"})})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Call this method to reset the zoom level to the default zoom level, and this will also recenter or re-place the root chart head back to the default position."}),"\n",(0,i.jsx)(n.h2,{id:"updatechartheadbg",children:"updateChartHeadBg"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Params: ",(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"color: string"})})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This method is for programmatically setting the background color of the chart heads, it takes in the color as the argument, the color can be in hex format or a color name or any other CSS formats, example below"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1"\n})\n\n// ...\n\ndocument.querySelector("#random-btn").onclick = () => instance1.updateChartHeadBg(\'black\')\n'})}),"\n",(0,i.jsx)(n.h2,{id:"on",children:"on"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Params: ",(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"eventName: TEventType, callbackFn: (data?: any) => null"})})]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["This method is a short form of the ",(0,i.jsx)(n.code,{children:"addEventListener"})," method and it works exactly like it, it can be used to listen to events, to learn more about using events check the events page, example below:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1"\n})\n\ninstance1.on("library.init", (e) => {\n console.log("library has been initialized", e)\n})\n'})}),"\n",(0,i.jsx)(n.h2,{id:"setoptions",children:"setOptions"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Params: ",(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"options_to_set: Omit"})})]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["This option is for setting options that were not passed directly to the library and it will also override the options that were passed directly to the library, and it is recommended to call this method before initializing TreeSpider, and it is best to use this method when ",(0,i.jsx)(n.code,{children:"autoInitialize"})," is set to ",(0,i.jsx)(n.code,{children:"false"})," and when TreeSpider will be manually initialized, example below:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",children:'const instance1 = new TreeSpider({\n targetContainer: "#container-1",\n autoInitialize: false,\n})\n\ninstance1.setOptions({\n tree_data: [...]\n})\n\ndocument.querySelector("#random-btn").onclick = () => {\n instance1.initialize()\n}\n'})}),"\n",(0,i.jsx)(n.h2,{id:"zoom",children:"zoom"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Params: ",(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"dir: 'in' | 'out'"})})]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["This option is for programmatically zooming in and out, it takes the direction of zoom either ",(0,i.jsx)(n.code,{children:"in"})," or ",(0,i.jsx)(n.code,{children:"out"})," as an argument."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"The rotation feature is only available for radial or circular trees and the following methods will not work for none radial trees."})}),"\n",(0,i.jsx)(n.h2,{id:"startstoprotatecw",children:"startStopRotateCW"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Params: ",(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"none"})})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This method is for starting or stopping the chart rotation in the clockwise direction."}),"\n",(0,i.jsx)(n.h2,{id:"startstoprotateacw",children:"startStopRotateACW"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Params: ",(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"none"})})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This method is for starting or stopping the chart rotation in the anticlockwise direction."}),"\n",(0,i.jsx)(n.h2,{id:"rotateoncecw",children:"rotateOnceCW"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Params: ",(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"none"})})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This method is for rotating the tree only once in the clockwise direction."}),"\n",(0,i.jsx)(n.h2,{id:"rotateonceacw",children:"rotateOnceACW"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Params: ",(0,i.jsx)(n.em,{children:(0,i.jsx)(n.code,{children:"none"})})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This method is for rotating the tree only once in the anticlockwise direction."})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var i=t(6540);const o={},r=i.createContext(o);function s(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c9c9bef8.40fc851e.js b/assets/js/c9c9bef8.40fc851e.js new file mode 100644 index 0000000..0fefd67 --- /dev/null +++ b/assets/js/c9c9bef8.40fc851e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[1794],{4971:e=>{e.exports=JSON.parse('{"author":{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","page":{"permalink":"/blog/authors/all-sebastien-lorber-articles"},"socials":{"x":"https://x.com/sebastienlorber","linkedin":"https://www.linkedin.com/in/sebastienlorber/","github":"https://github.com/slorber","newsletter":"https://thisweekinreact.com"},"imageURL":"https://github.com/slorber.png","key":"slorber","count":3},"listMetadata":{"permalink":"/blog/authors/all-sebastien-lorber-articles","page":1,"postsPerPage":10,"totalPages":1,"totalCount":3,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/ccc49370.9975b70c.js b/assets/js/ccc49370.9975b70c.js new file mode 100644 index 0000000..3eb28ae --- /dev/null +++ b/assets/js/ccc49370.9975b70c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[3249],{2907:(e,t,n)=>{n.d(t,{A:()=>O});n(6540);var a=n(4164),s=n(4096),i=n(4848);function r(e){let{children:t,className:n}=e;return(0,i.jsx)("article",{className:n,children:t})}var l=n(8774);const o={title:"title_f1Hy"};function c(e){let{className:t}=e;const{metadata:n,isBlogPostPage:r}=(0,s.e7)(),{permalink:c,title:d}=n,m=r?"h1":"h2";return(0,i.jsx)(m,{className:(0,a.A)(o.title,t),children:r?d:(0,i.jsx)(l.A,{to:c,children:d})})}var d=n(1312),m=n(5846),u=n(6266);const g={container:"container_mt6G"};function h(e){let{readingTime:t}=e;const n=function(){const{selectMessage:e}=(0,m.W)();return t=>{const n=Math.ceil(t);return e(n,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:n}))}}();return(0,i.jsx)(i.Fragment,{children:n(t)})}function x(e){let{date:t,formattedDate:n}=e;return(0,i.jsx)("time",{dateTime:t,children:n})}function f(){return(0,i.jsx)(i.Fragment,{children:" \xb7 "})}function p(e){let{className:t}=e;const{metadata:n}=(0,s.e7)(),{date:r,readingTime:l}=n,o=(0,u.i)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,i.jsxs)("div",{className:(0,a.A)(g.container,"margin-vert--md",t),children:[(0,i.jsx)(x,{date:r,formattedDate:(c=r,o.format(new Date(c)))}),void 0!==l&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(f,{}),(0,i.jsx)(h,{readingTime:l})]})]});var c}var v=n(6913);const j={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function b(e){let{className:t}=e;const{metadata:{authors:n},assets:r}=(0,s.e7)();if(0===n.length)return null;const l=n.every((e=>{let{name:t}=e;return!t})),o=1===n.length;return(0,i.jsx)("div",{className:(0,a.A)("margin-top--md margin-bottom--sm",l?j.imageOnlyAuthorRow:"row",t),children:n.map(((e,t)=>(0,i.jsx)("div",{className:(0,a.A)(!l&&(o?"col col--12":"col col--6"),l?j.imageOnlyAuthorCol:j.authorCol),children:(0,i.jsx)(v.A,{author:{...e,imageURL:r.authorsImageUrls[t]??e.imageURL}})},t)))})}function A(){return(0,i.jsxs)("header",{children:[(0,i.jsx)(c,{}),(0,i.jsx)(p,{}),(0,i.jsx)(b,{})]})}var N=n(440),_=n(5533);function L(e){let{children:t,className:n}=e;const{isBlogPostPage:r}=(0,s.e7)();return(0,i.jsx)("div",{id:r?N.LU:void 0,className:(0,a.A)("markdown",n),children:(0,i.jsx)(_.A,{children:t})})}var y=n(7559),C=n(4336),T=n(2053);function k(){return(0,i.jsx)("b",{children:(0,i.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read more"})})}function H(e){const{blogPostTitle:t,...n}=e;return(0,i.jsx)(l.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...n,children:(0,i.jsx)(k,{})})}function w(){const{metadata:e,isBlogPostPage:t}=(0,s.e7)(),{tags:n,title:r,editUrl:l,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:d}=e,m=!t&&o,u=n.length>0;if(!(u||m||l))return null;if(t){const e=!!(l||d||c);return(0,i.jsxs)("footer",{className:"docusaurus-mt-lg",children:[u&&(0,i.jsx)("div",{className:(0,a.A)("row","margin-top--sm",y.G.blog.blogFooterEditMetaRow),children:(0,i.jsx)("div",{className:"col",children:(0,i.jsx)(T.A,{tags:n})})}),e&&(0,i.jsx)(C.A,{className:(0,a.A)("margin-top--sm",y.G.blog.blogFooterEditMetaRow),editUrl:l,lastUpdatedAt:d,lastUpdatedBy:c})]})}return(0,i.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[u&&(0,i.jsx)("div",{className:(0,a.A)("col",{"col--9":m}),children:(0,i.jsx)(T.A,{tags:n})}),m&&(0,i.jsx)("div",{className:(0,a.A)("col text--right",{"col--3":u}),children:(0,i.jsx)(H,{blogPostTitle:r,to:e.permalink})})]})}function O(e){let{children:t,className:n}=e;const l=function(){const{isBlogPostPage:e}=(0,s.e7)();return e?void 0:"margin-bottom--xl"}();return(0,i.jsxs)(r,{className:(0,a.A)(l,n),children:[(0,i.jsx)(A,{}),(0,i.jsx)(L,{children:t}),(0,i.jsx)(w,{})]})}},3858:(e,t,n)=>{n.r(t),n.d(t,{default:()=>j});n(6540);var a=n(4164),s=n(1213),i=n(7559),r=n(4096),l=n(8027),o=n(2907),c=n(1312),d=n(9022),m=n(4848);function u(e){const{nextItem:t,prevItem:n}=e;return(0,m.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,c.T)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"}),children:[n&&(0,m.jsx)(d.A,{...n,subLabel:(0,m.jsx)(c.A,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post",children:"Newer post"})}),t&&(0,m.jsx)(d.A,{...t,subLabel:(0,m.jsx)(c.A,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post",children:"Older post"}),isNext:!0})]})}function g(){const{assets:e,metadata:t}=(0,r.e7)(),{title:n,description:a,date:i,tags:l,authors:o,frontMatter:c}=t,{keywords:d}=c,u=e.image??c.image;return(0,m.jsxs)(s.be,{title:n,description:a,keywords:d,image:u,children:[(0,m.jsx)("meta",{property:"og:type",content:"article"}),(0,m.jsx)("meta",{property:"article:published_time",content:i}),o.some((e=>e.url))&&(0,m.jsx)("meta",{property:"article:author",content:o.map((e=>e.url)).filter(Boolean).join(",")}),l.length>0&&(0,m.jsx)("meta",{property:"article:tag",content:l.map((e=>e.label)).join(",")})]})}var h=n(5260);function x(){const e=(0,r.J_)();return(0,m.jsx)(h.A,{children:(0,m.jsx)("script",{type:"application/ld+json",children:JSON.stringify(e)})})}var f=n(7763),p=n(1689);function v(e){let{sidebar:t,children:n}=e;const{metadata:a,toc:s}=(0,r.e7)(),{nextItem:i,prevItem:c,frontMatter:d}=a,{hide_table_of_contents:g,toc_min_heading_level:h,toc_max_heading_level:x}=d;return(0,m.jsxs)(l.A,{sidebar:t,toc:!g&&s.length>0?(0,m.jsx)(f.A,{toc:s,minHeadingLevel:h,maxHeadingLevel:x}):void 0,children:[(0,m.jsx)(p.A,{metadata:a}),(0,m.jsx)(o.A,{children:n}),(i||c)&&(0,m.jsx)(u,{nextItem:i,prevItem:c})]})}function j(e){const t=e.content;return(0,m.jsx)(r.in,{content:e.content,isBlogPostPage:!0,children:(0,m.jsxs)(s.e3,{className:(0,a.A)(i.G.wrapper.blogPages,i.G.page.blogPostPage),children:[(0,m.jsx)(g,{}),(0,m.jsx)(x,{}),(0,m.jsx)(v,{sidebar:e.sidebar,children:(0,m.jsx)(t,{})})]})})}},2234:(e,t,n)=>{n.d(t,{A:()=>c});n(6540);var a=n(4164),s=n(4084),i=n(7559),r=n(7293),l=n(4848);function o(e){let{className:t}=e;return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(s.Rc,{}),className:(0,a.A)(t,i.G.common.unlistedBanner),children:(0,l.jsx)(s.Uh,{})})}function c(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.AE,{}),(0,l.jsx)(o,{...e})]})}},1689:(e,t,n)=>{n.d(t,{A:()=>d});n(6540);var a=n(4164),s=n(4084),i=n(7559),r=n(7293),l=n(4848);function o(e){let{className:t}=e;return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(s.Yh,{}),className:(0,a.A)(t,i.G.common.draftBanner),children:(0,l.jsx)(s.TT,{})})}var c=n(2234);function d(e){let{metadata:t}=e;const{unlisted:n,frontMatter:a}=t;return(0,l.jsxs)(l.Fragment,{children:[(n||a.unlisted)&&(0,l.jsx)(c.A,{}),a.draft&&(0,l.jsx)(o,{})]})}},9022:(e,t,n)=>{n.d(t,{A:()=>r});n(6540);var a=n(4164),s=n(8774),i=n(4848);function r(e){const{permalink:t,title:n,subLabel:r,isNext:l}=e;return(0,i.jsxs)(s.A,{className:(0,a.A)("pagination-nav__link",l?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[r&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:r}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}},7763:(e,t,n)=>{n.d(t,{A:()=>c});n(6540);var a=n(4164),s=n(5195);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var r=n(4848);const l="table-of-contents__link toc-highlight",o="table-of-contents__link--active";function c(e){let{className:t,...n}=e;return(0,r.jsx)("div",{className:(0,a.A)(i.tableOfContents,"thin-scrollbar",t),children:(0,r.jsx)(s.A,{...n,linkClassName:l,linkActiveClassName:o})})}},5195:(e,t,n)=>{n.d(t,{A:()=>x});var a=n(6540),s=n(6342);function i(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...s}=e;n>=0?t[n].children.push(s):a.push(s)})),a}function r(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=r({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function l(e){const t=e.getBoundingClientRect();return t.top===t.bottom?l(e.parentNode):t}function o(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>l(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function d(e){const t=(0,a.useRef)(void 0),n=c();(0,a.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:s,minHeadingLevel:i,maxHeadingLevel:r}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let s=t;s<=n;s+=1)a.push(`h${s}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:i,maxHeadingLevel:r}),c=o(l,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(s),e.classList.add(s),t.current=e):e.classList.remove(s)}(e,e===d)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}var m=n(8774),u=n(4848);function g(e){let{toc:t,className:n,linkClassName:a,isChild:s}=e;return t.length?(0,u.jsx)("ul",{className:s?void 0:n,children:t.map((e=>(0,u.jsxs)("li",{children:[(0,u.jsx)(m.A,{to:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,u.jsx)(g,{isChild:!0,toc:e.children,className:n,linkClassName:a})]},e.id)))}):null}const h=a.memo(g);function x(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:l="table-of-contents__link",linkActiveClassName:o,minHeadingLevel:c,maxHeadingLevel:m,...g}=e;const x=(0,s.p)(),f=c??x.tableOfContents.minHeadingLevel,p=m??x.tableOfContents.maxHeadingLevel,v=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:s}=e;return(0,a.useMemo)((()=>r({toc:i(t),minHeadingLevel:n,maxHeadingLevel:s})),[t,n,s])}({toc:t,minHeadingLevel:f,maxHeadingLevel:p});return d((0,a.useMemo)((()=>{if(l&&o)return{linkClassName:l,linkActiveClassName:o,minHeadingLevel:f,maxHeadingLevel:p}}),[l,o,f,p])),(0,u.jsx)(h,{toc:v,className:n,linkClassName:l,...g})}},6133:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var a=n(4164),s=n(8774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var r=n(4848);function l(e){let{permalink:t,label:n,count:l,description:o}=e;return(0,r.jsxs)(s.A,{href:t,title:o,className:(0,a.A)(i.tag,l?i.tagWithCount:i.tagRegular),children:[n,l&&(0,r.jsx)("span",{children:l})]})}},2053:(e,t,n)=>{n.d(t,{A:()=>o});n(6540);var a=n(4164),s=n(1312),i=n(6133);const r={tags:"tags_jXut",tag:"tag_QGVx"};var l=n(4848);function o(e){let{tags:t}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("b",{children:(0,l.jsx)(s.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,l.jsx)("ul",{className:(0,a.A)(r.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,l.jsx)("li",{className:r.tag,children:(0,l.jsx)(i.A,{...e})},e.permalink)))})]})}},4084:(e,t,n)=>{n.d(t,{AE:()=>o,Rc:()=>r,TT:()=>d,Uh:()=>l,Yh:()=>c});n(6540);var a=n(1312),s=n(5260),i=n(4848);function r(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function l(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function o(){return(0,i.jsx)(s.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function c(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function d(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}}}]); \ No newline at end of file diff --git a/assets/js/d9f32620.b6e4661f.js b/assets/js/d9f32620.b6e4661f.js new file mode 100644 index 0000000..33ebd23 --- /dev/null +++ b/assets/js/d9f32620.b6e4661f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[5557],{7447:(e,s,o)=>{o.r(s),o.d(s,{assets:()=>a,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var t=o(4848),n=o(8453);const r={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},l=void 0,i={permalink:"/blog/welcome",editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2021-08-26-welcome/index.md",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",tags:[{inline:!1,label:"Facebook",permalink:"/blog/tags/facebook",description:"Facebook tag description"},{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.465,hasTruncateMarker:!0,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",page:{permalink:"/blog/authors/all-sebastien-lorber-articles"},socials:{x:"https://x.com/sebastienlorber",linkedin:"https://www.linkedin.com/in/sebastienlorber/",github:"https://github.com/slorber",newsletter:"https://thisweekinreact.com"},imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",page:{permalink:"/blog/authors/yangshun"},socials:{x:"https://x.com/yangshunz",github:"https://github.com/yangshun"},imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},unlisted:!1,nextItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"}},a={authorsImageUrls:[void 0,void 0]},c=[];function u(e){const s={a:"a",code:"code",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://docusaurus.io/docs/blog",children:"Docusaurus blogging features"})," are powered by the ",(0,t.jsx)(s.a,{href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog",children:"blog plugin"}),"."]}),"\n",(0,t.jsx)(s.p,{children:"Here are a few tips you might find useful."}),"\n",(0,t.jsxs)(s.p,{children:["Simply add Markdown files (or folders) to the ",(0,t.jsx)(s.code,{children:"blog"})," directory."]}),"\n",(0,t.jsxs)(s.p,{children:["Regular blog authors can be added to ",(0,t.jsx)(s.code,{children:"authors.yml"}),"."]}),"\n",(0,t.jsx)(s.p,{children:"The blog post date can be extracted from filenames, such as:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"2019-05-30-welcome.md"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"2019-05-30-welcome/index.md"})}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"A blog post folder can be convenient to co-locate blog post images:"}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Docusaurus Plushie",src:o(1782).A+"",width:"1500",height:"500"})}),"\n",(0,t.jsx)(s.p,{children:"The blog supports tags as well!"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"And if you don't want a blog"}),": just delete this directory, and use ",(0,t.jsx)(s.code,{children:"blog: false"})," in your Docusaurus config."]})]})}function d(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},1782:(e,s,o)=>{o.d(s,{A:()=>t});const t=o.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"},8453:(e,s,o)=>{o.d(s,{R:()=>l,x:()=>i});var t=o(6540);const n={},r=t.createContext(n);function l(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e273c56f.1e624905.js b/assets/js/e273c56f.1e624905.js new file mode 100644 index 0000000..12a8c5c --- /dev/null +++ b/assets/js/e273c56f.1e624905.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[9328],{4014:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var o=s(4848),n=s(8453);const r={slug:"first-blog-post",title:"First Blog Post",authors:["slorber","yangshun"],tags:["hola","docusaurus"]},i=void 0,a={permalink:"/blog/first-blog-post",editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2019-05-28-first-blog-post.md",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet...",date:"2019-05-28T00:00:00.000Z",tags:[{inline:!1,label:"Hola",permalink:"/blog/tags/hola",description:"Hola tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.135,hasTruncateMarker:!0,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",page:{permalink:"/blog/authors/all-sebastien-lorber-articles"},socials:{x:"https://x.com/sebastienlorber",linkedin:"https://www.linkedin.com/in/sebastienlorber/",github:"https://github.com/slorber",newsletter:"https://thisweekinreact.com"},imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",page:{permalink:"/blog/authors/yangshun"},socials:{x:"https://x.com/yangshunz",github:"https://github.com/yangshun"},imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:["slorber","yangshun"],tags:["hola","docusaurus"]},unlisted:!1,prevItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},l={authorsImageUrls:[void 0,void 0]},u=[];function c(t){const e={p:"p",...(0,n.R)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.p,{children:"Lorem ipsum dolor sit amet..."}),"\n",(0,o.jsx)(e.p,{children:"...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})]})}function p(t={}){const{wrapper:e}={...(0,n.R)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(c,{...t})}):c(t)}},8453:(t,e,s)=>{s.d(e,{R:()=>i,x:()=>a});var o=s(6540);const n={},r=o.createContext(n);function i(t){const e=o.useContext(r);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:i(t.components),o.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/e5aefb32.fa94d6ea.js b/assets/js/e5aefb32.fa94d6ea.js new file mode 100644 index 0000000..d6f688f --- /dev/null +++ b/assets/js/e5aefb32.fa94d6ea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[3276],{8539:e=>{e.exports=JSON.parse('{"tag":{"label":"Facebook","permalink":"/blog/tags/facebook","description":"Facebook tag description","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/facebook","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/ef8b811a.8a7a9c6d.js b/assets/js/ef8b811a.8a7a9c6d.js new file mode 100644 index 0000000..7dd5f00 --- /dev/null +++ b/assets/js/ef8b811a.8a7a9c6d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8947],{6600:e=>{e.exports=JSON.parse('{"authors":[{"name":"Yangshun Tay","title":"Front End Engineer @ Facebook","url":"https://github.com/yangshun","page":{"permalink":"/blog/authors/yangshun"},"socials":{"x":"https://x.com/yangshunz","github":"https://github.com/yangshun"},"imageURL":"https://github.com/yangshun.png","key":"yangshun","count":3},{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","page":{"permalink":"/blog/authors/all-sebastien-lorber-articles"},"socials":{"x":"https://x.com/sebastienlorber","linkedin":"https://www.linkedin.com/in/sebastienlorber/","github":"https://github.com/slorber","newsletter":"https://thisweekinreact.com"},"imageURL":"https://github.com/slorber.png","key":"slorber","count":3}]}')}}]); \ No newline at end of file diff --git a/assets/js/f4f34a3a.cefd54db.js b/assets/js/f4f34a3a.cefd54db.js new file mode 100644 index 0000000..d519b68 --- /dev/null +++ b/assets/js/f4f34a3a.cefd54db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[3637],{5512:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>n,metadata:()=>i,toc:()=>u});var s=o(4848),r=o(8453);const n={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},a=void 0,i={permalink:"/blog/mdx-blog-post",editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2021-08-01-mdx-blog-post.mdx",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",tags:[{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.235,hasTruncateMarker:!0,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",page:{permalink:"/blog/authors/all-sebastien-lorber-articles"},socials:{x:"https://x.com/sebastienlorber",linkedin:"https://www.linkedin.com/in/sebastienlorber/",github:"https://github.com/slorber",newsletter:"https://thisweekinreact.com"},imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},l={authorsImageUrls:[void 0]},u=[];function c(t){const e={a:"a",admonition:"admonition",p:"p",...(0,r.R)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(e.p,{children:["Blog posts support ",(0,s.jsx)(e.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(e.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsx)(e.admonition,{type:"tip",children:(0,s.jsx)(e.p,{children:"Use the power of React to create interactive blog posts."})})]})}function p(t={}){const{wrapper:e}={...(0,r.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(c,{...t})}):c(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>a,x:()=>i});var s=o(6540);const r={},n=s.createContext(r);function a(t){const e=s.useContext(n);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function i(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:a(t.components),s.createElement(n.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/f81c1134.6d151c96.js b/assets/js/f81c1134.6d151c96.js new file mode 100644 index 0000000..912b3b0 --- /dev/null +++ b/assets/js/f81c1134.6d151c96.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[8130],{7735:e=>{e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"welcome","metadata":{"permalink":"/blog/welcome","editUrl":"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2021-08-26-welcome/index.md","source":"@site/blog/2021-08-26-welcome/index.md","title":"Welcome","description":"Docusaurus blogging features are powered by the blog plugin.","date":"2021-08-26T00:00:00.000Z","tags":[{"inline":false,"label":"Facebook","permalink":"/blog/tags/facebook","description":"Facebook tag description"},{"inline":false,"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description"},{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":0.465,"hasTruncateMarker":true,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","page":{"permalink":"/blog/authors/all-sebastien-lorber-articles"},"socials":{"x":"https://x.com/sebastienlorber","linkedin":"https://www.linkedin.com/in/sebastienlorber/","github":"https://github.com/slorber","newsletter":"https://thisweekinreact.com"},"imageURL":"https://github.com/slorber.png","key":"slorber"},{"name":"Yangshun Tay","title":"Front End Engineer @ Facebook","url":"https://github.com/yangshun","page":{"permalink":"/blog/authors/yangshun"},"socials":{"x":"https://x.com/yangshunz","github":"https://github.com/yangshun"},"imageURL":"https://github.com/yangshun.png","key":"yangshun"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["slorber","yangshun"],"tags":["facebook","hello","docusaurus"]},"unlisted":false,"nextItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"}},"content":"[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).\\n\\nHere are a few tips you might find useful.\\n\\n\x3c!-- truncate --\x3e\\n\\nSimply add Markdown files (or folders) to the `blog` directory.\\n\\nRegular blog authors can be added to `authors.yml`.\\n\\nThe blog post date can be extracted from filenames, such as:\\n\\n- `2019-05-30-welcome.md`\\n- `2019-05-30-welcome/index.md`\\n\\nA blog post folder can be convenient to co-locate blog post images:\\n\\n![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)\\n\\nThe blog supports tags as well!\\n\\n**And if you don\'t want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config."},{"id":"mdx-blog-post","metadata":{"permalink":"/blog/mdx-blog-post","editUrl":"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2021-08-01-mdx-blog-post.mdx","source":"@site/blog/2021-08-01-mdx-blog-post.mdx","title":"MDX Blog Post","description":"Blog posts support Docusaurus Markdown features, such as MDX.","date":"2021-08-01T00:00:00.000Z","tags":[{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":0.235,"hasTruncateMarker":true,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","page":{"permalink":"/blog/authors/all-sebastien-lorber-articles"},"socials":{"x":"https://x.com/sebastienlorber","linkedin":"https://www.linkedin.com/in/sebastienlorber/","github":"https://github.com/slorber","newsletter":"https://thisweekinreact.com"},"imageURL":"https://github.com/slorber.png","key":"slorber"}],"frontMatter":{"slug":"mdx-blog-post","title":"MDX Blog Post","authors":["slorber"],"tags":["docusaurus"]},"unlisted":false,"prevItem":{"title":"Welcome","permalink":"/blog/welcome"},"nextItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).\\n\\n:::tip\\n\\nUse the power of React to create interactive blog posts.\\n\\n:::\\n\\n{/* truncate */}\\n\\nFor example, use JSX to create an interactive button:\\n\\n```js\\n\\n```\\n\\n"},{"id":"long-blog-post","metadata":{"permalink":"/blog/long-blog-post","editUrl":"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2019-05-29-long-blog-post.md","source":"@site/blog/2019-05-29-long-blog-post.md","title":"Long Blog Post","description":"This is the summary of a very long blog post,","date":"2019-05-29T00:00:00.000Z","tags":[{"inline":false,"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description"},{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":2.06,"hasTruncateMarker":true,"authors":[{"name":"Yangshun Tay","title":"Front End Engineer @ Facebook","url":"https://github.com/yangshun","page":{"permalink":"/blog/authors/yangshun"},"socials":{"x":"https://x.com/yangshunz","github":"https://github.com/yangshun"},"imageURL":"https://github.com/yangshun.png","key":"yangshun"}],"frontMatter":{"slug":"long-blog-post","title":"Long Blog Post","authors":"yangshun","tags":["hello","docusaurus"]},"unlisted":false,"prevItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"},"nextItem":{"title":"First Blog Post","permalink":"/blog/first-blog-post"}},"content":"This is the summary of a very long blog post,\\n\\nUse a `\x3c!--` `truncate` `--\x3e` comment to limit blog post size in the list view.\\n\\n\x3c!-- truncate --\x3e\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"},{"id":"first-blog-post","metadata":{"permalink":"/blog/first-blog-post","editUrl":"https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2019-05-28-first-blog-post.md","source":"@site/blog/2019-05-28-first-blog-post.md","title":"First Blog Post","description":"Lorem ipsum dolor sit amet...","date":"2019-05-28T00:00:00.000Z","tags":[{"inline":false,"label":"Hola","permalink":"/blog/tags/hola","description":"Hola tag description"},{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":0.135,"hasTruncateMarker":true,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","page":{"permalink":"/blog/authors/all-sebastien-lorber-articles"},"socials":{"x":"https://x.com/sebastienlorber","linkedin":"https://www.linkedin.com/in/sebastienlorber/","github":"https://github.com/slorber","newsletter":"https://thisweekinreact.com"},"imageURL":"https://github.com/slorber.png","key":"slorber"},{"name":"Yangshun Tay","title":"Front End Engineer @ Facebook","url":"https://github.com/yangshun","page":{"permalink":"/blog/authors/yangshun"},"socials":{"x":"https://x.com/yangshunz","github":"https://github.com/yangshun"},"imageURL":"https://github.com/yangshun.png","key":"yangshun"}],"frontMatter":{"slug":"first-blog-post","title":"First Blog Post","authors":["slorber","yangshun"],"tags":["hola","docusaurus"]},"unlisted":false,"prevItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Lorem ipsum dolor sit amet...\\n\\n\x3c!-- truncate --\x3e\\n\\n...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}]}}')}}]); \ No newline at end of file diff --git a/assets/js/f82cd581.4cb47e1a.js b/assets/js/f82cd581.4cb47e1a.js new file mode 100644 index 0000000..fe534d0 --- /dev/null +++ b/assets/js/f82cd581.4cb47e1a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[4584],{4035:e=>{e.exports=JSON.parse('{"tag":{"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/hello","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/f8409a7e.23831971.js b/assets/js/f8409a7e.23831971.js new file mode 100644 index 0000000..d3827dc --- /dev/null +++ b/assets/js/f8409a7e.23831971.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[6903],{4505:(e,t,n)=>{n.r(t),n.d(t,{TSpydExample1:()=>l,assets:()=>p,contentTitle:()=>d,default:()=>m,frontMatter:()=>s,metadata:()=>c,toc:()=>u});var i=n(4848),o=n(8453),r=n(6540),a=n(8777);const s={sidebar_position:1},d="Introduction",c={id:"intro",title:"Introduction",description:"TreeSpider is an easy-to-use javascript library built for the purpose of displaying organization structure and employee structure and hierarchy within the organization, i.e for displaying employee data to know who reports to who and in which department, it makes it easy to manage employees in any organization of all sizes.",source:"@site/docs/intro.mdx",sourceDirName:".",slug:"/intro",permalink:"/docs/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/intro.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",next:{title:"Installation",permalink:"/docs/installation"}},p={},l=r.memo((()=>(r.useLayoutEffect((()=>{new a.A({targetContainer:"#spyd-ex-1",random_data_length:50,chart_head_type:"rounded",width:"100%"})}),[]),(0,i.jsx)("div",{id:"spyd-ex-1",style:{marginBottom:25}})))),u=[];function h(e){const t={h1:"h1",header:"header",p:"p",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"introduction",children:"Introduction"})}),"\n",(0,i.jsx)(t.p,{children:"TreeSpider is an easy-to-use javascript library built for the purpose of displaying organization structure and employee structure and hierarchy within the organization, i.e for displaying employee data to know who reports to who and in which department, it makes it easy to manage employees in any organization of all sizes."}),"\n",(0,i.jsx)(t.p,{children:"TreeSpider is built completely with D3js and TypeScript"}),"\n","\n",(0,i.jsx)(l,{}),"\n",(0,i.jsx)(t.p,{children:"TreeSpider is highly customizable and can be personalized to fit your organization."})]})}function m(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>s});var i=n(6540);const o={},r=i.createContext(o);function a(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fa4d91bf.e0a04298.js b/assets/js/fa4d91bf.e0a04298.js new file mode 100644 index 0000000..303efda --- /dev/null +++ b/assets/js/fa4d91bf.e0a04298.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktreespider_doc=self.webpackChunktreespider_doc||[]).push([[2802],{2655:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var t=i(4848),r=i(8453);const s={sidebar_position:2},d="Installation",l={id:"installation",title:"Installation",description:"TreeSpider can be installed with npm or can be included via CDN.",source:"@site/docs/installation.mdx",sourceDirName:".",slug:"/installation",permalink:"/docs/installation",draft:!1,unlisted:!1,editUrl:"https://github.com/paulosabayomi/treespider-doc/tree/main/docs/installation.mdx",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/docs/intro"},next:{title:"Basic Usage",permalink:"/docs/basic-usage"}},o={},c=[{value:"NPM",id:"npm",level:2},{value:"CDN",id:"cdn",level:2},{value:"ES6",id:"es6",level:3},{value:"CSS",id:"css",level:3},{value:"Quick Start",id:"quick-start",level:2},{value:"NPM",id:"npm-1",level:2},{value:"ES6 import with bundler",id:"es6-import-with-bundler",level:3},{value:"ES6 import with no bundler",id:"es6-import-with-no-bundler",level:3},{value:"CSS",id:"css-1",level:3},{value:"CDN",id:"cdn-1",level:2},{value:"ES6",id:"es6-1",level:3},{value:"Browser",id:"browser",level:3},{value:"CSS",id:"css-2",level:3}];function a(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"installation",children:"Installation"})}),"\n",(0,t.jsx)(n.p,{children:"TreeSpider can be installed with npm or can be included via CDN."}),"\n",(0,t.jsx)(n.h2,{id:"npm",children:"NPM"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"npm i treespider\n"})}),"\n",(0,t.jsx)(n.h2,{id:"cdn",children:"CDN"}),"\n",(0,t.jsx)(n.p,{children:"You can choose any CDN of your choice but we will be using UNPKG in this doc, it is recommended to include the minified version of both the ES6 and browser bundles."}),"\n",(0,t.jsx)(n.h3,{id:"es6",children:"ES6"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:"https://unpkg.com/treespider@latest/dist/es/treeSpider.bundle.min.js\n"})}),"\n",(0,t.jsx)(n.h3,{id:"css",children:"CSS"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-css",children:"https://unpkg.com/treespider@latest/dist/css/treeSpider.css\n"})}),"\n",(0,t.jsx)(n.h2,{id:"quick-start",children:"Quick Start"}),"\n",(0,t.jsx)(n.p,{children:"After installing TreeSpider you can either import it directly into your project or load it through the script tag, and you can either choose to install it through npm or include it directly through CDN"}),"\n",(0,t.jsx)(n.h2,{id:"npm-1",children:"NPM"}),"\n",(0,t.jsx)(n.p,{children:"If you installed it with NPM import the ES6 and CSS directly like so, it is recommended to import the minified bundle."}),"\n",(0,t.jsx)(n.h3,{id:"es6-import-with-bundler",children:"ES6 import with bundler"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",children:'import TreeSpider from "treespider"\n'})}),"\n",(0,t.jsx)(n.h3,{id:"es6-import-with-no-bundler",children:"ES6 import with no bundler"}),"\n",(0,t.jsx)(n.p,{children:"If you installed TreeSpider into a project that has no bundler, move/copy the treespider folder from node_modules to the root of your project, then include TreeSpider like so"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",children:'import TreeSpider from "/path/to/installation/folder/dist/es/treeSpider.bundle.min.js"\n'})}),"\n",(0,t.jsxs)(n.p,{children:["It is important note the ",(0,t.jsx)(n.code,{children:"es"})," in the path as it contains the ES6 bundles, to load it through the script tag"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-html",children:'\x3c!--...--\x3e\n + + + + + + \ No newline at end of file diff --git a/blog/authors/all-sebastien-lorber-articles/index.html b/blog/authors/all-sebastien-lorber-articles/index.html new file mode 100644 index 0000000..a49d37a --- /dev/null +++ b/blog/authors/all-sebastien-lorber-articles/index.html @@ -0,0 +1,16 @@ + + + + + +Sébastien Lorber - 3 posts | TreeSpider + + + + + +
Sébastien Lorber
Docusaurus maintainer
View all authors

+ + \ No newline at end of file diff --git a/blog/authors/index.html b/blog/authors/index.html new file mode 100644 index 0000000..3a91a57 --- /dev/null +++ b/blog/authors/index.html @@ -0,0 +1,14 @@ + + + + + +Authors | TreeSpider + + + + + +

Authors

+ + \ No newline at end of file diff --git a/blog/authors/yangshun/index.html b/blog/authors/yangshun/index.html new file mode 100644 index 0000000..324f4dc --- /dev/null +++ b/blog/authors/yangshun/index.html @@ -0,0 +1,16 @@ + + + + + +Yangshun Tay - 3 posts | TreeSpider + + + + + +
Yangshun Tay
Front End Engineer @ Facebook
View all authors

+ + \ No newline at end of file diff --git a/blog/first-blog-post/index.html b/blog/first-blog-post/index.html new file mode 100644 index 0000000..761ee98 --- /dev/null +++ b/blog/first-blog-post/index.html @@ -0,0 +1,15 @@ + + + + + +First Blog Post | TreeSpider + + + + + +

First Blog Post

· One min read
Sébastien Lorber
Docusaurus maintainer
Yangshun Tay
Front End Engineer @ Facebook

Lorem ipsum dolor sit amet...

+

...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + \ No newline at end of file diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..329feaa --- /dev/null +++ b/blog/index.html @@ -0,0 +1,17 @@ + + + + + +Blog | TreeSpider + + + + + +
+ + \ No newline at end of file diff --git a/blog/long-blog-post/index.html b/blog/long-blog-post/index.html new file mode 100644 index 0000000..af35fd9 --- /dev/null +++ b/blog/long-blog-post/index.html @@ -0,0 +1,31 @@ + + + + + +Long Blog Post | TreeSpider + + + + + +

Long Blog Post

· 3 min read
Yangshun Tay
Front End Engineer @ Facebook

This is the summary of a very long blog post,

+

Use a <!-- truncate --> comment to limit blog post size in the list view.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + \ No newline at end of file diff --git a/blog/mdx-blog-post/index.html b/blog/mdx-blog-post/index.html new file mode 100644 index 0000000..f4aba79 --- /dev/null +++ b/blog/mdx-blog-post/index.html @@ -0,0 +1,19 @@ + + + + + +MDX Blog Post | TreeSpider + + + + + +

MDX Blog Post

· One min read
Sébastien Lorber
Docusaurus maintainer

Blog posts support Docusaurus Markdown features, such as MDX.

+
tip

Use the power of React to create interactive blog posts.

+ +

For example, use JSX to create an interactive button:

+
<button onClick={() => alert('button clicked!')}>Click me!</button>
+
+ + \ No newline at end of file diff --git a/blog/tags/docusaurus/index.html b/blog/tags/docusaurus/index.html new file mode 100644 index 0000000..5a3d1ca --- /dev/null +++ b/blog/tags/docusaurus/index.html @@ -0,0 +1,17 @@ + + + + + +4 posts tagged with "Docusaurus" | TreeSpider + + + + + +

4 posts tagged with "Docusaurus"

Docusaurus tag description

View All Tags
+ + \ No newline at end of file diff --git a/blog/tags/facebook/index.html b/blog/tags/facebook/index.html new file mode 100644 index 0000000..9c7e4f0 --- /dev/null +++ b/blog/tags/facebook/index.html @@ -0,0 +1,15 @@ + + + + + +One post tagged with "Facebook" | TreeSpider + + + + + +

One post tagged with "Facebook"

Facebook tag description

View All Tags
+ + \ No newline at end of file diff --git a/blog/tags/hello/index.html b/blog/tags/hello/index.html new file mode 100644 index 0000000..78e1f76 --- /dev/null +++ b/blog/tags/hello/index.html @@ -0,0 +1,16 @@ + + + + + +2 posts tagged with "Hello" | TreeSpider + + + + + +

2 posts tagged with "Hello"

Hello tag description

View All Tags
+ + \ No newline at end of file diff --git a/blog/tags/hola/index.html b/blog/tags/hola/index.html new file mode 100644 index 0000000..3084799 --- /dev/null +++ b/blog/tags/hola/index.html @@ -0,0 +1,14 @@ + + + + + +One post tagged with "Hola" | TreeSpider + + + + + +

One post tagged with "Hola"

Hola tag description

View All Tags
+ + \ No newline at end of file diff --git a/blog/tags/index.html b/blog/tags/index.html new file mode 100644 index 0000000..354e061 --- /dev/null +++ b/blog/tags/index.html @@ -0,0 +1,14 @@ + + + + + +Tags | TreeSpider + + + + + + + + \ No newline at end of file diff --git a/blog/welcome/index.html b/blog/welcome/index.html new file mode 100644 index 0000000..afaddf3 --- /dev/null +++ b/blog/welcome/index.html @@ -0,0 +1,26 @@ + + + + + +Welcome | TreeSpider + + + + + +

Welcome

· One min read
Sébastien Lorber
Docusaurus maintainer
Yangshun Tay
Front End Engineer @ Facebook

Docusaurus blogging features are powered by the blog plugin.

+

Here are a few tips you might find useful.

+

Simply add Markdown files (or folders) to the blog directory.

+

Regular blog authors can be added to authors.yml.

+

The blog post date can be extracted from filenames, such as:

+
    +
  • 2019-05-30-welcome.md
  • +
  • 2019-05-30-welcome/index.md
  • +
+

A blog post folder can be convenient to co-locate blog post images:

+

Docusaurus Plushie

+

The blog supports tags as well!

+

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

+ + \ No newline at end of file diff --git a/dist/browser/treeSpider.bundle.js b/dist/browser/treeSpider.bundle.js deleted file mode 100644 index 3f5d99c..0000000 --- a/dist/browser/treeSpider.bundle.js +++ /dev/null @@ -1,23168 +0,0 @@ -var TreeSpider = (function () { - 'use strict'; - - /** - * SVG backgrounds gotten from https://www.fffuel.co - */ - var backgrounds = { - flux: ` - - - - - - - - `, - quad: ``, - blurry: ` - `, - chaos: ``, - spiral: ``, - flurry: ``, - whirling: ``, - replicate: ` - - - - - - `, - scribble: ``, - squiggly: ``, - gyrate: ``, - leaves: ``, - reflection: ``, - spot: ` - - - - ` - }; - - function ascending$3(a, b) { - return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; - } - - function descending$2(a, b) { - return a == null || b == null ? NaN - : b < a ? -1 - : b > a ? 1 - : b >= a ? 0 - : NaN; - } - - function bisector(f) { - let compare1, compare2, delta; - - // If an accessor is specified, promote it to a comparator. In this case we - // can test whether the search value is (self-) comparable. We can’t do this - // for a comparator (except for specific, known comparators) because we can’t - // tell if the comparator is symmetric, and an asymmetric comparator can’t be - // used to test whether a single value is comparable. - if (f.length !== 2) { - compare1 = ascending$3; - compare2 = (d, x) => ascending$3(f(d), x); - delta = (d, x) => f(d) - x; - } else { - compare1 = f === ascending$3 || f === descending$2 ? f : zero$1; - compare2 = f; - delta = f; - } - - function left(a, x, lo = 0, hi = a.length) { - if (lo < hi) { - if (compare1(x, x) !== 0) return hi; - do { - const mid = (lo + hi) >>> 1; - if (compare2(a[mid], x) < 0) lo = mid + 1; - else hi = mid; - } while (lo < hi); - } - return lo; - } - - function right(a, x, lo = 0, hi = a.length) { - if (lo < hi) { - if (compare1(x, x) !== 0) return hi; - do { - const mid = (lo + hi) >>> 1; - if (compare2(a[mid], x) <= 0) lo = mid + 1; - else hi = mid; - } while (lo < hi); - } - return lo; - } - - function center(a, x, lo = 0, hi = a.length) { - const i = left(a, x, lo, hi - 1); - return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i; - } - - return {left, center, right}; - } - - function zero$1() { - return 0; - } - - function number$3(x) { - return x === null ? NaN : +x; - } - - function* numbers(values, valueof) { - if (valueof === undefined) { - for (let value of values) { - if (value != null && (value = +value) >= value) { - yield value; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { - yield value; - } - } - } - } - - const ascendingBisect = bisector(ascending$3); - const bisectRight = ascendingBisect.right; - const bisectLeft = ascendingBisect.left; - const bisectCenter = bisector(number$3).center; - - function blur(values, r) { - if (!((r = +r) >= 0)) throw new RangeError("invalid r"); - let length = values.length; - if (!((length = Math.floor(length)) >= 0)) throw new RangeError("invalid length"); - if (!length || !r) return values; - const blur = blurf(r); - const temp = values.slice(); - blur(values, temp, 0, length, 1); - blur(temp, values, 0, length, 1); - blur(values, temp, 0, length, 1); - return values; - } - - const blur2 = Blur2(blurf); - - const blurImage = Blur2(blurfImage); - - function Blur2(blur) { - return function(data, rx, ry = rx) { - if (!((rx = +rx) >= 0)) throw new RangeError("invalid rx"); - if (!((ry = +ry) >= 0)) throw new RangeError("invalid ry"); - let {data: values, width, height} = data; - if (!((width = Math.floor(width)) >= 0)) throw new RangeError("invalid width"); - if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError("invalid height"); - if (!width || !height || (!rx && !ry)) return data; - const blurx = rx && blur(rx); - const blury = ry && blur(ry); - const temp = values.slice(); - if (blurx && blury) { - blurh(blurx, temp, values, width, height); - blurh(blurx, values, temp, width, height); - blurh(blurx, temp, values, width, height); - blurv(blury, values, temp, width, height); - blurv(blury, temp, values, width, height); - blurv(blury, values, temp, width, height); - } else if (blurx) { - blurh(blurx, values, temp, width, height); - blurh(blurx, temp, values, width, height); - blurh(blurx, values, temp, width, height); - } else if (blury) { - blurv(blury, values, temp, width, height); - blurv(blury, temp, values, width, height); - blurv(blury, values, temp, width, height); - } - return data; - }; - } - - function blurh(blur, T, S, w, h) { - for (let y = 0, n = w * h; y < n;) { - blur(T, S, y, y += w, 1); - } - } - - function blurv(blur, T, S, w, h) { - for (let x = 0, n = w * h; x < w; ++x) { - blur(T, S, x, x + n, w); - } - } - - function blurfImage(radius) { - const blur = blurf(radius); - return (T, S, start, stop, step) => { - start <<= 2, stop <<= 2, step <<= 2; - blur(T, S, start + 0, stop + 0, step); - blur(T, S, start + 1, stop + 1, step); - blur(T, S, start + 2, stop + 2, step); - blur(T, S, start + 3, stop + 3, step); - }; - } - - // Given a target array T, a source array S, sets each value T[i] to the average - // of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop, - // for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between - // S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an - // integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted - // according to r - ⌊radius⌋. - function blurf(radius) { - const radius0 = Math.floor(radius); - if (radius0 === radius) return bluri(radius); - const t = radius - radius0; - const w = 2 * radius + 1; - return (T, S, start, stop, step) => { // stop must be aligned! - if (!((stop -= step) >= start)) return; // inclusive stop - let sum = radius0 * S[start]; - const s0 = step * radius0; - const s1 = s0 + step; - for (let i = start, j = start + s0; i < j; i += step) { - sum += S[Math.min(stop, i)]; - } - for (let i = start, j = stop; i <= j; i += step) { - sum += S[Math.min(stop, i + s0)]; - T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w; - sum -= S[Math.max(start, i - s0)]; - } - }; - } - - // Like blurf, but optimized for integer radius. - function bluri(radius) { - const w = 2 * radius + 1; - return (T, S, start, stop, step) => { // stop must be aligned! - if (!((stop -= step) >= start)) return; // inclusive stop - let sum = radius * S[start]; - const s = step * radius; - for (let i = start, j = start + s; i < j; i += step) { - sum += S[Math.min(stop, i)]; - } - for (let i = start, j = stop; i <= j; i += step) { - sum += S[Math.min(stop, i + s)]; - T[i] = sum / w; - sum -= S[Math.max(start, i - s)]; - } - }; - } - - function count$1(values, valueof) { - let count = 0; - if (valueof === undefined) { - for (let value of values) { - if (value != null && (value = +value) >= value) { - ++count; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { - ++count; - } - } - } - return count; - } - - function length$3(array) { - return array.length | 0; - } - - function empty$2(length) { - return !(length > 0); - } - - function arrayify(values) { - return typeof values !== "object" || "length" in values ? values : Array.from(values); - } - - function reducer(reduce) { - return values => reduce(...values); - } - - function cross$2(...values) { - const reduce = typeof values[values.length - 1] === "function" && reducer(values.pop()); - values = values.map(arrayify); - const lengths = values.map(length$3); - const j = values.length - 1; - const index = new Array(j + 1).fill(0); - const product = []; - if (j < 0 || lengths.some(empty$2)) return product; - while (true) { - product.push(index.map((j, i) => values[i][j])); - let i = j; - while (++index[i] === lengths[i]) { - if (i === 0) return reduce ? product.map(reduce) : product; - index[i--] = 0; - } - } - } - - function cumsum(values, valueof) { - var sum = 0, index = 0; - return Float64Array.from(values, valueof === undefined - ? v => (sum += +v || 0) - : v => (sum += +valueof(v, index++, values) || 0)); - } - - function variance(values, valueof) { - let count = 0; - let delta; - let mean = 0; - let sum = 0; - if (valueof === undefined) { - for (let value of values) { - if (value != null && (value = +value) >= value) { - delta = value - mean; - mean += delta / ++count; - sum += delta * (value - mean); - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { - delta = value - mean; - mean += delta / ++count; - sum += delta * (value - mean); - } - } - } - if (count > 1) return sum / (count - 1); - } - - function deviation(values, valueof) { - const v = variance(values, valueof); - return v ? Math.sqrt(v) : v; - } - - function extent$1(values, valueof) { - let min; - let max; - if (valueof === undefined) { - for (const value of values) { - if (value != null) { - if (min === undefined) { - if (value >= value) min = max = value; - } else { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null) { - if (min === undefined) { - if (value >= value) min = max = value; - } else { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - return [min, max]; - } - - // https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423 - class Adder { - constructor() { - this._partials = new Float64Array(32); - this._n = 0; - } - add(x) { - const p = this._partials; - let i = 0; - for (let j = 0; j < this._n && j < 32; j++) { - const y = p[j], - hi = x + y, - lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x); - if (lo) p[i++] = lo; - x = hi; - } - p[i] = x; - this._n = i + 1; - return this; - } - valueOf() { - const p = this._partials; - let n = this._n, x, y, lo, hi = 0; - if (n > 0) { - hi = p[--n]; - while (n > 0) { - x = hi; - y = p[--n]; - hi = x + y; - lo = y - (hi - x); - if (lo) break; - } - if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) { - y = lo * 2; - x = hi + y; - if (y == x - hi) hi = x; - } - } - return hi; - } - } - - function fsum(values, valueof) { - const adder = new Adder(); - if (valueof === undefined) { - for (let value of values) { - if (value = +value) { - adder.add(value); - } - } - } else { - let index = -1; - for (let value of values) { - if (value = +valueof(value, ++index, values)) { - adder.add(value); - } - } - } - return +adder; - } - - function fcumsum(values, valueof) { - const adder = new Adder(); - let index = -1; - return Float64Array.from(values, valueof === undefined - ? v => adder.add(+v || 0) - : v => adder.add(+valueof(v, ++index, values) || 0) - ); - } - - class InternMap extends Map { - constructor(entries, key = keyof) { - super(); - Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}}); - if (entries != null) for (const [key, value] of entries) this.set(key, value); - } - get(key) { - return super.get(intern_get(this, key)); - } - has(key) { - return super.has(intern_get(this, key)); - } - set(key, value) { - return super.set(intern_set(this, key), value); - } - delete(key) { - return super.delete(intern_delete(this, key)); - } - } - - class InternSet extends Set { - constructor(values, key = keyof) { - super(); - Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}}); - if (values != null) for (const value of values) this.add(value); - } - has(value) { - return super.has(intern_get(this, value)); - } - add(value) { - return super.add(intern_set(this, value)); - } - delete(value) { - return super.delete(intern_delete(this, value)); - } - } - - function intern_get({_intern, _key}, value) { - const key = _key(value); - return _intern.has(key) ? _intern.get(key) : value; - } - - function intern_set({_intern, _key}, value) { - const key = _key(value); - if (_intern.has(key)) return _intern.get(key); - _intern.set(key, value); - return value; - } - - function intern_delete({_intern, _key}, value) { - const key = _key(value); - if (_intern.has(key)) { - value = _intern.get(key); - _intern.delete(key); - } - return value; - } - - function keyof(value) { - return value !== null && typeof value === "object" ? value.valueOf() : value; - } - - function identity$9(x) { - return x; - } - - function group(values, ...keys) { - return nest(values, identity$9, identity$9, keys); - } - - function groups(values, ...keys) { - return nest(values, Array.from, identity$9, keys); - } - - function flatten$1(groups, keys) { - for (let i = 1, n = keys.length; i < n; ++i) { - groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value])); - } - return groups; - } - - function flatGroup(values, ...keys) { - return flatten$1(groups(values, ...keys), keys); - } - - function flatRollup(values, reduce, ...keys) { - return flatten$1(rollups(values, reduce, ...keys), keys); - } - - function rollup(values, reduce, ...keys) { - return nest(values, identity$9, reduce, keys); - } - - function rollups(values, reduce, ...keys) { - return nest(values, Array.from, reduce, keys); - } - - function index$4(values, ...keys) { - return nest(values, identity$9, unique, keys); - } - - function indexes(values, ...keys) { - return nest(values, Array.from, unique, keys); - } - - function unique(values) { - if (values.length !== 1) throw new Error("duplicate key"); - return values[0]; - } - - function nest(values, map, reduce, keys) { - return (function regroup(values, i) { - if (i >= keys.length) return reduce(values); - const groups = new InternMap(); - const keyof = keys[i++]; - let index = -1; - for (const value of values) { - const key = keyof(value, ++index, values); - const group = groups.get(key); - if (group) group.push(value); - else groups.set(key, [value]); - } - for (const [key, values] of groups) { - groups.set(key, regroup(values, i)); - } - return map(groups); - })(values, 0); - } - - function permute(source, keys) { - return Array.from(keys, key => source[key]); - } - - function sort(values, ...F) { - if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); - values = Array.from(values); - let [f] = F; - if ((f && f.length !== 2) || F.length > 1) { - const index = Uint32Array.from(values, (d, i) => i); - if (F.length > 1) { - F = F.map(f => values.map(f)); - index.sort((i, j) => { - for (const f of F) { - const c = ascendingDefined(f[i], f[j]); - if (c) return c; - } - }); - } else { - f = values.map(f); - index.sort((i, j) => ascendingDefined(f[i], f[j])); - } - return permute(values, index); - } - return values.sort(compareDefined(f)); - } - - function compareDefined(compare = ascending$3) { - if (compare === ascending$3) return ascendingDefined; - if (typeof compare !== "function") throw new TypeError("compare is not a function"); - return (a, b) => { - const x = compare(a, b); - if (x || x === 0) return x; - return (compare(b, b) === 0) - (compare(a, a) === 0); - }; - } - - function ascendingDefined(a, b) { - return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0); - } - - function groupSort(values, reduce, key) { - return (reduce.length !== 2 - ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending$3(av, bv) || ascending$3(ak, bk))) - : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending$3(ak, bk)))) - .map(([key]) => key); - } - - var array$5 = Array.prototype; - - var slice$3 = array$5.slice; - - function constant$b(x) { - return () => x; - } - - const e10 = Math.sqrt(50), - e5 = Math.sqrt(10), - e2 = Math.sqrt(2); - - function tickSpec(start, stop, count) { - const step = (stop - start) / Math.max(0, count), - power = Math.floor(Math.log10(step)), - error = step / Math.pow(10, power), - factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1; - let i1, i2, inc; - if (power < 0) { - inc = Math.pow(10, -power) / factor; - i1 = Math.round(start * inc); - i2 = Math.round(stop * inc); - if (i1 / inc < start) ++i1; - if (i2 / inc > stop) --i2; - inc = -inc; - } else { - inc = Math.pow(10, power) * factor; - i1 = Math.round(start / inc); - i2 = Math.round(stop / inc); - if (i1 * inc < start) ++i1; - if (i2 * inc > stop) --i2; - } - if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2); - return [i1, i2, inc]; - } - - function ticks(start, stop, count) { - stop = +stop, start = +start, count = +count; - if (!(count > 0)) return []; - if (start === stop) return [start]; - const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count); - if (!(i2 >= i1)) return []; - const n = i2 - i1 + 1, ticks = new Array(n); - if (reverse) { - if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc; - else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc; - } else { - if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc; - else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc; - } - return ticks; - } - - function tickIncrement(start, stop, count) { - stop = +stop, start = +start, count = +count; - return tickSpec(start, stop, count)[2]; - } - - function tickStep(start, stop, count) { - stop = +stop, start = +start, count = +count; - const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count); - return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc); - } - - function nice$1(start, stop, count) { - let prestep; - while (true) { - const step = tickIncrement(start, stop, count); - if (step === prestep || step === 0 || !isFinite(step)) { - return [start, stop]; - } else if (step > 0) { - start = Math.floor(start / step) * step; - stop = Math.ceil(stop / step) * step; - } else if (step < 0) { - start = Math.ceil(start * step) / step; - stop = Math.floor(stop * step) / step; - } - prestep = step; - } - } - - function thresholdSturges(values) { - return Math.max(1, Math.ceil(Math.log(count$1(values)) / Math.LN2) + 1); - } - - function bin() { - var value = identity$9, - domain = extent$1, - threshold = thresholdSturges; - - function histogram(data) { - if (!Array.isArray(data)) data = Array.from(data); - - var i, - n = data.length, - x, - step, - values = new Array(n); - - for (i = 0; i < n; ++i) { - values[i] = value(data[i], i, data); - } - - var xz = domain(values), - x0 = xz[0], - x1 = xz[1], - tz = threshold(values, x0, x1); - - // Convert number of thresholds into uniform thresholds, and nice the - // default domain accordingly. - if (!Array.isArray(tz)) { - const max = x1, tn = +tz; - if (domain === extent$1) [x0, x1] = nice$1(x0, x1, tn); - tz = ticks(x0, x1, tn); - - // If the domain is aligned with the first tick (which it will by - // default), then we can use quantization rather than bisection to bin - // values, which is substantially faster. - if (tz[0] <= x0) step = tickIncrement(x0, x1, tn); - - // If the last threshold is coincident with the domain’s upper bound, the - // last bin will be zero-width. If the default domain is used, and this - // last threshold is coincident with the maximum input value, we can - // extend the niced upper bound by one tick to ensure uniform bin widths; - // otherwise, we simply remove the last threshold. Note that we don’t - // coerce values or the domain to numbers, and thus must be careful to - // compare order (>=) rather than strict equality (===)! - if (tz[tz.length - 1] >= x1) { - if (max >= x1 && domain === extent$1) { - const step = tickIncrement(x0, x1, tn); - if (isFinite(step)) { - if (step > 0) { - x1 = (Math.floor(x1 / step) + 1) * step; - } else if (step < 0) { - x1 = (Math.ceil(x1 * -step) + 1) / -step; - } - } - } else { - tz.pop(); - } - } - } - - // Remove any thresholds outside the domain. - // Be careful not to mutate an array owned by the user! - var m = tz.length, a = 0, b = m; - while (tz[a] <= x0) ++a; - while (tz[b - 1] > x1) --b; - if (a || b < m) tz = tz.slice(a, b), m = b - a; - - var bins = new Array(m + 1), - bin; - - // Initialize bins. - for (i = 0; i <= m; ++i) { - bin = bins[i] = []; - bin.x0 = i > 0 ? tz[i - 1] : x0; - bin.x1 = i < m ? tz[i] : x1; - } - - // Assign data to bins by value, ignoring any outside the domain. - if (isFinite(step)) { - if (step > 0) { - for (i = 0; i < n; ++i) { - if ((x = values[i]) != null && x0 <= x && x <= x1) { - bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]); - } - } - } else if (step < 0) { - for (i = 0; i < n; ++i) { - if ((x = values[i]) != null && x0 <= x && x <= x1) { - const j = Math.floor((x0 - x) * step); - bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding - } - } - } - } else { - for (i = 0; i < n; ++i) { - if ((x = values[i]) != null && x0 <= x && x <= x1) { - bins[bisectRight(tz, x, 0, m)].push(data[i]); - } - } - } - - return bins; - } - - histogram.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$b(_), histogram) : value; - }; - - histogram.domain = function(_) { - return arguments.length ? (domain = typeof _ === "function" ? _ : constant$b([_[0], _[1]]), histogram) : domain; - }; - - histogram.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : constant$b(Array.isArray(_) ? slice$3.call(_) : _), histogram) : threshold; - }; - - return histogram; - } - - function max$3(values, valueof) { - let max; - if (valueof === undefined) { - for (const value of values) { - if (value != null - && (max < value || (max === undefined && value >= value))) { - max = value; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null - && (max < value || (max === undefined && value >= value))) { - max = value; - } - } - } - return max; - } - - function maxIndex(values, valueof) { - let max; - let maxIndex = -1; - let index = -1; - if (valueof === undefined) { - for (const value of values) { - ++index; - if (value != null - && (max < value || (max === undefined && value >= value))) { - max = value, maxIndex = index; - } - } - } else { - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null - && (max < value || (max === undefined && value >= value))) { - max = value, maxIndex = index; - } - } - } - return maxIndex; - } - - function min$2(values, valueof) { - let min; - if (valueof === undefined) { - for (const value of values) { - if (value != null - && (min > value || (min === undefined && value >= value))) { - min = value; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null - && (min > value || (min === undefined && value >= value))) { - min = value; - } - } - } - return min; - } - - function minIndex(values, valueof) { - let min; - let minIndex = -1; - let index = -1; - if (valueof === undefined) { - for (const value of values) { - ++index; - if (value != null - && (min > value || (min === undefined && value >= value))) { - min = value, minIndex = index; - } - } - } else { - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null - && (min > value || (min === undefined && value >= value))) { - min = value, minIndex = index; - } - } - } - return minIndex; - } - - // Based on https://github.com/mourner/quickselect - // ISC license, Copyright 2018 Vladimir Agafonkin. - function quickselect(array, k, left = 0, right = Infinity, compare) { - k = Math.floor(k); - left = Math.floor(Math.max(0, left)); - right = Math.floor(Math.min(array.length - 1, right)); - - if (!(left <= k && k <= right)) return array; - - compare = compare === undefined ? ascendingDefined : compareDefined(compare); - - while (right > left) { - if (right - left > 600) { - const n = right - left + 1; - const m = k - left + 1; - const z = Math.log(n); - const s = 0.5 * Math.exp(2 * z / 3); - const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1); - const newLeft = Math.max(left, Math.floor(k - m * s / n + sd)); - const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd)); - quickselect(array, k, newLeft, newRight, compare); - } - - const t = array[k]; - let i = left; - let j = right; - - swap$1(array, left, k); - if (compare(array[right], t) > 0) swap$1(array, left, right); - - while (i < j) { - swap$1(array, i, j), ++i, --j; - while (compare(array[i], t) < 0) ++i; - while (compare(array[j], t) > 0) --j; - } - - if (compare(array[left], t) === 0) swap$1(array, left, j); - else ++j, swap$1(array, j, right); - - if (j <= k) left = j + 1; - if (k <= j) right = j - 1; - } - - return array; - } - - function swap$1(array, i, j) { - const t = array[i]; - array[i] = array[j]; - array[j] = t; - } - - function greatest(values, compare = ascending$3) { - let max; - let defined = false; - if (compare.length === 1) { - let maxValue; - for (const element of values) { - const value = compare(element); - if (defined - ? ascending$3(value, maxValue) > 0 - : ascending$3(value, value) === 0) { - max = element; - maxValue = value; - defined = true; - } - } - } else { - for (const value of values) { - if (defined - ? compare(value, max) > 0 - : compare(value, value) === 0) { - max = value; - defined = true; - } - } - } - return max; - } - - function quantile$1(values, p, valueof) { - values = Float64Array.from(numbers(values, valueof)); - if (!(n = values.length) || isNaN(p = +p)) return; - if (p <= 0 || n < 2) return min$2(values); - if (p >= 1) return max$3(values); - var n, - i = (n - 1) * p, - i0 = Math.floor(i), - value0 = max$3(quickselect(values, i0).subarray(0, i0 + 1)), - value1 = min$2(values.subarray(i0 + 1)); - return value0 + (value1 - value0) * (i - i0); - } - - function quantileSorted(values, p, valueof = number$3) { - if (!(n = values.length) || isNaN(p = +p)) return; - if (p <= 0 || n < 2) return +valueof(values[0], 0, values); - if (p >= 1) return +valueof(values[n - 1], n - 1, values); - var n, - i = (n - 1) * p, - i0 = Math.floor(i), - value0 = +valueof(values[i0], i0, values), - value1 = +valueof(values[i0 + 1], i0 + 1, values); - return value0 + (value1 - value0) * (i - i0); - } - - function quantileIndex(values, p, valueof = number$3) { - if (isNaN(p = +p)) return; - numbers = Float64Array.from(values, (_, i) => number$3(valueof(values[i], i, values))); - if (p <= 0) return minIndex(numbers); - if (p >= 1) return maxIndex(numbers); - var numbers, - index = Uint32Array.from(values, (_, i) => i), - j = numbers.length - 1, - i = Math.floor(j * p); - quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j])); - i = greatest(index.subarray(0, i + 1), (i) => numbers[i]); - return i >= 0 ? i : -1; - } - - function thresholdFreedmanDiaconis(values, min, max) { - const c = count$1(values), d = quantile$1(values, 0.75) - quantile$1(values, 0.25); - return c && d ? Math.ceil((max - min) / (2 * d * Math.pow(c, -1 / 3))) : 1; - } - - function thresholdScott(values, min, max) { - const c = count$1(values), d = deviation(values); - return c && d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1; - } - - function mean(values, valueof) { - let count = 0; - let sum = 0; - if (valueof === undefined) { - for (let value of values) { - if (value != null && (value = +value) >= value) { - ++count, sum += value; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { - ++count, sum += value; - } - } - } - if (count) return sum / count; - } - - function median(values, valueof) { - return quantile$1(values, 0.5, valueof); - } - - function medianIndex(values, valueof) { - return quantileIndex(values, 0.5, valueof); - } - - function* flatten(arrays) { - for (const array of arrays) { - yield* array; - } - } - - function merge(arrays) { - return Array.from(flatten(arrays)); - } - - function mode(values, valueof) { - const counts = new InternMap(); - if (valueof === undefined) { - for (let value of values) { - if (value != null && value >= value) { - counts.set(value, (counts.get(value) || 0) + 1); - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && value >= value) { - counts.set(value, (counts.get(value) || 0) + 1); - } - } - } - let modeValue; - let modeCount = 0; - for (const [value, count] of counts) { - if (count > modeCount) { - modeCount = count; - modeValue = value; - } - } - return modeValue; - } - - function pairs(values, pairof = pair) { - const pairs = []; - let previous; - let first = false; - for (const value of values) { - if (first) pairs.push(pairof(previous, value)); - previous = value; - first = true; - } - return pairs; - } - - function pair(a, b) { - return [a, b]; - } - - function range$2(start, stop, step) { - start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; - - var i = -1, - n = Math.max(0, Math.ceil((stop - start) / step)) | 0, - range = new Array(n); - - while (++i < n) { - range[i] = start + i * step; - } - - return range; - } - - function rank(values, valueof = ascending$3) { - if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); - let V = Array.from(values); - const R = new Float64Array(V.length); - if (valueof.length !== 2) V = V.map(valueof), valueof = ascending$3; - const compareIndex = (i, j) => valueof(V[i], V[j]); - let k, r; - values = Uint32Array.from(V, (_, i) => i); - // Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123 - values.sort(valueof === ascending$3 ? (i, j) => ascendingDefined(V[i], V[j]) : compareDefined(compareIndex)); - values.forEach((j, i) => { - const c = compareIndex(j, k === undefined ? j : k); - if (c >= 0) { - if (k === undefined || c > 0) k = j, r = i; - R[j] = r; - } else { - R[j] = NaN; - } - }); - return R; - } - - function least(values, compare = ascending$3) { - let min; - let defined = false; - if (compare.length === 1) { - let minValue; - for (const element of values) { - const value = compare(element); - if (defined - ? ascending$3(value, minValue) < 0 - : ascending$3(value, value) === 0) { - min = element; - minValue = value; - defined = true; - } - } - } else { - for (const value of values) { - if (defined - ? compare(value, min) < 0 - : compare(value, value) === 0) { - min = value; - defined = true; - } - } - } - return min; - } - - function leastIndex(values, compare = ascending$3) { - if (compare.length === 1) return minIndex(values, compare); - let minValue; - let min = -1; - let index = -1; - for (const value of values) { - ++index; - if (min < 0 - ? compare(value, value) === 0 - : compare(value, minValue) < 0) { - minValue = value; - min = index; - } - } - return min; - } - - function greatestIndex(values, compare = ascending$3) { - if (compare.length === 1) return maxIndex(values, compare); - let maxValue; - let max = -1; - let index = -1; - for (const value of values) { - ++index; - if (max < 0 - ? compare(value, value) === 0 - : compare(value, maxValue) > 0) { - maxValue = value; - max = index; - } - } - return max; - } - - function scan(values, compare) { - const index = leastIndex(values, compare); - return index < 0 ? undefined : index; - } - - var shuffle$1 = shuffler(Math.random); - - function shuffler(random) { - return function shuffle(array, i0 = 0, i1 = array.length) { - let m = i1 - (i0 = +i0); - while (m) { - const i = random() * m-- | 0, t = array[m + i0]; - array[m + i0] = array[i + i0]; - array[i + i0] = t; - } - return array; - }; - } - - function sum$2(values, valueof) { - let sum = 0; - if (valueof === undefined) { - for (let value of values) { - if (value = +value) { - sum += value; - } - } - } else { - let index = -1; - for (let value of values) { - if (value = +valueof(value, ++index, values)) { - sum += value; - } - } - } - return sum; - } - - function transpose(matrix) { - if (!(n = matrix.length)) return []; - for (var i = -1, m = min$2(matrix, length$2), transpose = new Array(m); ++i < m;) { - for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) { - row[j] = matrix[j][i]; - } - } - return transpose; - } - - function length$2(d) { - return d.length; - } - - function zip() { - return transpose(arguments); - } - - function every(values, test) { - if (typeof test !== "function") throw new TypeError("test is not a function"); - let index = -1; - for (const value of values) { - if (!test(value, ++index, values)) { - return false; - } - } - return true; - } - - function some(values, test) { - if (typeof test !== "function") throw new TypeError("test is not a function"); - let index = -1; - for (const value of values) { - if (test(value, ++index, values)) { - return true; - } - } - return false; - } - - function filter$1(values, test) { - if (typeof test !== "function") throw new TypeError("test is not a function"); - const array = []; - let index = -1; - for (const value of values) { - if (test(value, ++index, values)) { - array.push(value); - } - } - return array; - } - - function map$1(values, mapper) { - if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); - if (typeof mapper !== "function") throw new TypeError("mapper is not a function"); - return Array.from(values, (value, index) => mapper(value, index, values)); - } - - function reduce(values, reducer, value) { - if (typeof reducer !== "function") throw new TypeError("reducer is not a function"); - const iterator = values[Symbol.iterator](); - let done, next, index = -1; - if (arguments.length < 3) { - ({done, value} = iterator.next()); - if (done) return; - ++index; - } - while (({done, value: next} = iterator.next()), !done) { - value = reducer(value, next, ++index, values); - } - return value; - } - - function reverse$1(values) { - if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); - return Array.from(values).reverse(); - } - - function difference(values, ...others) { - values = new InternSet(values); - for (const other of others) { - for (const value of other) { - values.delete(value); - } - } - return values; - } - - function disjoint(values, other) { - const iterator = other[Symbol.iterator](), set = new InternSet(); - for (const v of values) { - if (set.has(v)) return false; - let value, done; - while (({value, done} = iterator.next())) { - if (done) break; - if (Object.is(v, value)) return false; - set.add(value); - } - } - return true; - } - - function intersection(values, ...others) { - values = new InternSet(values); - others = others.map(set$2); - out: for (const value of values) { - for (const other of others) { - if (!other.has(value)) { - values.delete(value); - continue out; - } - } - } - return values; - } - - function set$2(values) { - return values instanceof InternSet ? values : new InternSet(values); - } - - function superset(values, other) { - const iterator = values[Symbol.iterator](), set = new Set(); - for (const o of other) { - const io = intern(o); - if (set.has(io)) continue; - let value, done; - while (({value, done} = iterator.next())) { - if (done) return false; - const ivalue = intern(value); - set.add(ivalue); - if (Object.is(io, ivalue)) break; - } - } - return true; - } - - function intern(value) { - return value !== null && typeof value === "object" ? value.valueOf() : value; - } - - function subset(values, other) { - return superset(other, values); - } - - function union(...others) { - const set = new InternSet(); - for (const other of others) { - for (const o of other) { - set.add(o); - } - } - return set; - } - - function identity$8(x) { - return x; - } - - var top = 1, - right = 2, - bottom = 3, - left = 4, - epsilon$6 = 1e-6; - - function translateX(x) { - return "translate(" + x + ",0)"; - } - - function translateY(y) { - return "translate(0," + y + ")"; - } - - function number$2(scale) { - return d => +scale(d); - } - - function center$1(scale, offset) { - offset = Math.max(0, scale.bandwidth() - offset * 2) / 2; - if (scale.round()) offset = Math.round(offset); - return d => +scale(d) + offset; - } - - function entering() { - return !this.__axis; - } - - function axis(orient, scale) { - var tickArguments = [], - tickValues = null, - tickFormat = null, - tickSizeInner = 6, - tickSizeOuter = 6, - tickPadding = 3, - offset = typeof window !== "undefined" && window.devicePixelRatio > 1 ? 0 : 0.5, - k = orient === top || orient === left ? -1 : 1, - x = orient === left || orient === right ? "x" : "y", - transform = orient === top || orient === bottom ? translateX : translateY; - - function axis(context) { - var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues, - format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$8) : tickFormat, - spacing = Math.max(tickSizeInner, 0) + tickPadding, - range = scale.range(), - range0 = +range[0] + offset, - range1 = +range[range.length - 1] + offset, - position = (scale.bandwidth ? center$1 : number$2)(scale.copy(), offset), - selection = context.selection ? context.selection() : context, - path = selection.selectAll(".domain").data([null]), - tick = selection.selectAll(".tick").data(values, scale).order(), - tickExit = tick.exit(), - tickEnter = tick.enter().append("g").attr("class", "tick"), - line = tick.select("line"), - text = tick.select("text"); - - path = path.merge(path.enter().insert("path", ".tick") - .attr("class", "domain") - .attr("stroke", "currentColor")); - - tick = tick.merge(tickEnter); - - line = line.merge(tickEnter.append("line") - .attr("stroke", "currentColor") - .attr(x + "2", k * tickSizeInner)); - - text = text.merge(tickEnter.append("text") - .attr("fill", "currentColor") - .attr(x, k * spacing) - .attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em")); - - if (context !== selection) { - path = path.transition(context); - tick = tick.transition(context); - line = line.transition(context); - text = text.transition(context); - - tickExit = tickExit.transition(context) - .attr("opacity", epsilon$6) - .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute("transform"); }); - - tickEnter - .attr("opacity", epsilon$6) - .attr("transform", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); }); - } - - tickExit.remove(); - - path - .attr("d", orient === left || orient === right - ? (tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H" + offset + "V" + range1 + "H" + k * tickSizeOuter : "M" + offset + "," + range0 + "V" + range1) - : (tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V" + offset + "H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + "," + offset + "H" + range1)); - - tick - .attr("opacity", 1) - .attr("transform", function(d) { return transform(position(d) + offset); }); - - line - .attr(x + "2", k * tickSizeInner); - - text - .attr(x, k * spacing) - .text(format); - - selection.filter(entering) - .attr("fill", "none") - .attr("font-size", 10) - .attr("font-family", "sans-serif") - .attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle"); - - selection - .each(function() { this.__axis = position; }); - } - - axis.scale = function(_) { - return arguments.length ? (scale = _, axis) : scale; - }; - - axis.ticks = function() { - return tickArguments = Array.from(arguments), axis; - }; - - axis.tickArguments = function(_) { - return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice(); - }; - - axis.tickValues = function(_) { - return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice(); - }; - - axis.tickFormat = function(_) { - return arguments.length ? (tickFormat = _, axis) : tickFormat; - }; - - axis.tickSize = function(_) { - return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner; - }; - - axis.tickSizeInner = function(_) { - return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner; - }; - - axis.tickSizeOuter = function(_) { - return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter; - }; - - axis.tickPadding = function(_) { - return arguments.length ? (tickPadding = +_, axis) : tickPadding; - }; - - axis.offset = function(_) { - return arguments.length ? (offset = +_, axis) : offset; - }; - - return axis; - } - - function axisTop(scale) { - return axis(top, scale); - } - - function axisRight(scale) { - return axis(right, scale); - } - - function axisBottom(scale) { - return axis(bottom, scale); - } - - function axisLeft(scale) { - return axis(left, scale); - } - - var noop$3 = {value: () => {}}; - - function dispatch() { - for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { - if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t); - _[t] = []; - } - return new Dispatch(_); - } - - function Dispatch(_) { - this._ = _; - } - - function parseTypenames$1(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); - return {type: t, name: name}; - }); - } - - Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function(typename, callback) { - var _ = this._, - T = parseTypenames$1(typename + "", _), - t, - i = -1, - n = T.length; - - // If no callback was specified, return the callback of the given type and name. - if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get$1(_[t], typename.name))) return t; - return; - } - - // If a type was specified, set the callback for the given type and name. - // Otherwise, if a null callback was specified, remove callbacks of the given name. - if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); - while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set$1(_[t], typename.name, callback); - else if (callback == null) for (t in _) _[t] = set$1(_[t], typename.name, null); - } - - return this; - }, - copy: function() { - var copy = {}, _ = this._; - for (var t in _) copy[t] = _[t].slice(); - return new Dispatch(copy); - }, - call: function(type, that) { - if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - }, - apply: function(type, that, args) { - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - } - }; - - function get$1(type, name) { - for (var i = 0, n = type.length, c; i < n; ++i) { - if ((c = type[i]).name === name) { - return c.value; - } - } - } - - function set$1(type, name, callback) { - for (var i = 0, n = type.length; i < n; ++i) { - if (type[i].name === name) { - type[i] = noop$3, type = type.slice(0, i).concat(type.slice(i + 1)); - break; - } - } - if (callback != null) type.push({name: name, value: callback}); - return type; - } - - var xhtml = "http://www.w3.org/1999/xhtml"; - - var namespaces = { - svg: "http://www.w3.org/2000/svg", - xhtml: xhtml, - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace", - xmlns: "http://www.w3.org/2000/xmlns/" - }; - - function namespace(name) { - var prefix = name += "", i = prefix.indexOf(":"); - if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); - return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins - } - - function creatorInherit(name) { - return function() { - var document = this.ownerDocument, - uri = this.namespaceURI; - return uri === xhtml && document.documentElement.namespaceURI === xhtml - ? document.createElement(name) - : document.createElementNS(uri, name); - }; - } - - function creatorFixed(fullname) { - return function() { - return this.ownerDocument.createElementNS(fullname.space, fullname.local); - }; - } - - function creator(name) { - var fullname = namespace(name); - return (fullname.local - ? creatorFixed - : creatorInherit)(fullname); - } - - function none$2() {} - - function selector(selector) { - return selector == null ? none$2 : function() { - return this.querySelector(selector); - }; - } - - function selection_select(select) { - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - } - } - } - - return new Selection$1(subgroups, this._parents); - } - - // Given something array like (or null), returns something that is strictly an - // array. This is used to ensure that array-like objects passed to d3.selectAll - // or selection.selectAll are converted into proper arrays when creating a - // selection; we don’t ever want to create a selection backed by a live - // HTMLCollection or NodeList. However, note that selection.selectAll will use a - // static NodeList as a group, since it safely derived from querySelectorAll. - function array$4(x) { - return x == null ? [] : Array.isArray(x) ? x : Array.from(x); - } - - function empty$1() { - return []; - } - - function selectorAll(selector) { - return selector == null ? empty$1 : function() { - return this.querySelectorAll(selector); - }; - } - - function arrayAll(select) { - return function() { - return array$4(select.apply(this, arguments)); - }; - } - - function selection_selectAll(select) { - if (typeof select === "function") select = arrayAll(select); - else select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - subgroups.push(select.call(node, node.__data__, i, group)); - parents.push(node); - } - } - } - - return new Selection$1(subgroups, parents); - } - - function matcher(selector) { - return function() { - return this.matches(selector); - }; - } - - function childMatcher(selector) { - return function(node) { - return node.matches(selector); - }; - } - - var find$1 = Array.prototype.find; - - function childFind(match) { - return function() { - return find$1.call(this.children, match); - }; - } - - function childFirst() { - return this.firstElementChild; - } - - function selection_selectChild(match) { - return this.select(match == null ? childFirst - : childFind(typeof match === "function" ? match : childMatcher(match))); - } - - var filter = Array.prototype.filter; - - function children() { - return Array.from(this.children); - } - - function childrenFilter(match) { - return function() { - return filter.call(this.children, match); - }; - } - - function selection_selectChildren(match) { - return this.selectAll(match == null ? children - : childrenFilter(typeof match === "function" ? match : childMatcher(match))); - } - - function selection_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Selection$1(subgroups, this._parents); - } - - function sparse(update) { - return new Array(update.length); - } - - function selection_enter() { - return new Selection$1(this._enter || this._groups.map(sparse), this._parents); - } - - function EnterNode(parent, datum) { - this.ownerDocument = parent.ownerDocument; - this.namespaceURI = parent.namespaceURI; - this._next = null; - this._parent = parent; - this.__data__ = datum; - } - - EnterNode.prototype = { - constructor: EnterNode, - appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, - insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, - querySelector: function(selector) { return this._parent.querySelector(selector); }, - querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } - }; - - function constant$a(x) { - return function() { - return x; - }; - } - - function bindIndex(parent, group, enter, update, exit, data) { - var i = 0, - node, - groupLength = group.length, - dataLength = data.length; - - // Put any non-null nodes that fit into update. - // Put any null nodes into enter. - // Put any remaining data into enter. - for (; i < dataLength; ++i) { - if (node = group[i]) { - node.__data__ = data[i]; - update[i] = node; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Put any non-null nodes that don’t fit into exit. - for (; i < groupLength; ++i) { - if (node = group[i]) { - exit[i] = node; - } - } - } - - function bindKey(parent, group, enter, update, exit, data, key) { - var i, - node, - nodeByKeyValue = new Map, - groupLength = group.length, - dataLength = data.length, - keyValues = new Array(groupLength), - keyValue; - - // Compute the key for each node. - // If multiple nodes have the same key, the duplicates are added to exit. - for (i = 0; i < groupLength; ++i) { - if (node = group[i]) { - keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + ""; - if (nodeByKeyValue.has(keyValue)) { - exit[i] = node; - } else { - nodeByKeyValue.set(keyValue, node); - } - } - } - - // Compute the key for each datum. - // If there a node associated with this key, join and add it to update. - // If there is not (or the key is a duplicate), add it to enter. - for (i = 0; i < dataLength; ++i) { - keyValue = key.call(parent, data[i], i, data) + ""; - if (node = nodeByKeyValue.get(keyValue)) { - update[i] = node; - node.__data__ = data[i]; - nodeByKeyValue.delete(keyValue); - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Add any remaining nodes that were not bound to data to exit. - for (i = 0; i < groupLength; ++i) { - if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) { - exit[i] = node; - } - } - } - - function datum(node) { - return node.__data__; - } - - function selection_data(value, key) { - if (!arguments.length) return Array.from(this, datum); - - var bind = key ? bindKey : bindIndex, - parents = this._parents, - groups = this._groups; - - if (typeof value !== "function") value = constant$a(value); - - for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { - var parent = parents[j], - group = groups[j], - groupLength = group.length, - data = arraylike(value.call(parent, parent && parent.__data__, j, parents)), - dataLength = data.length, - enterGroup = enter[j] = new Array(dataLength), - updateGroup = update[j] = new Array(dataLength), - exitGroup = exit[j] = new Array(groupLength); - - bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); - - // Now connect the enter nodes to their following update node, such that - // appendChild can insert the materialized enter node before this node, - // rather than at the end of the parent node. - for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { - if (previous = enterGroup[i0]) { - if (i0 >= i1) i1 = i0 + 1; - while (!(next = updateGroup[i1]) && ++i1 < dataLength); - previous._next = next || null; - } - } - } - - update = new Selection$1(update, parents); - update._enter = enter; - update._exit = exit; - return update; - } - - // Given some data, this returns an array-like view of it: an object that - // exposes a length property and allows numeric indexing. Note that unlike - // selectAll, this isn’t worried about “live” collections because the resulting - // array will only be used briefly while data is being bound. (It is possible to - // cause the data to change while iterating by using a key function, but please - // don’t; we’d rather avoid a gratuitous copy.) - function arraylike(data) { - return typeof data === "object" && "length" in data - ? data // Array, TypedArray, NodeList, array-like - : Array.from(data); // Map, Set, iterable, string, or anything else - } - - function selection_exit() { - return new Selection$1(this._exit || this._groups.map(sparse), this._parents); - } - - function selection_join(onenter, onupdate, onexit) { - var enter = this.enter(), update = this, exit = this.exit(); - if (typeof onenter === "function") { - enter = onenter(enter); - if (enter) enter = enter.selection(); - } else { - enter = enter.append(onenter + ""); - } - if (onupdate != null) { - update = onupdate(update); - if (update) update = update.selection(); - } - if (onexit == null) exit.remove(); else onexit(exit); - return enter && update ? enter.merge(update).order() : update; - } - - function selection_merge(context) { - var selection = context.selection ? context.selection() : context; - - for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Selection$1(merges, this._parents); - } - - function selection_order() { - - for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { - for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { - if (node = group[i]) { - if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); - next = node; - } - } - } - - return this; - } - - function selection_sort(compare) { - if (!compare) compare = ascending$2; - - function compareNode(a, b) { - return a && b ? compare(a.__data__, b.__data__) : !a - !b; - } - - for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group[i]) { - sortgroup[i] = node; - } - } - sortgroup.sort(compareNode); - } - - return new Selection$1(sortgroups, this._parents).order(); - } - - function ascending$2(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; - } - - function selection_call() { - var callback = arguments[0]; - arguments[0] = this; - callback.apply(null, arguments); - return this; - } - - function selection_nodes() { - return Array.from(this); - } - - function selection_node() { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { - var node = group[i]; - if (node) return node; - } - } - - return null; - } - - function selection_size() { - let size = 0; - for (const node of this) ++size; // eslint-disable-line no-unused-vars - return size; - } - - function selection_empty() { - return !this.node(); - } - - function selection_each(callback) { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { - if (node = group[i]) callback.call(node, node.__data__, i, group); - } - } - - return this; - } - - function attrRemove$1(name) { - return function() { - this.removeAttribute(name); - }; - } - - function attrRemoveNS$1(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; - } - - function attrConstant$1(name, value) { - return function() { - this.setAttribute(name, value); - }; - } - - function attrConstantNS$1(fullname, value) { - return function() { - this.setAttributeNS(fullname.space, fullname.local, value); - }; - } - - function attrFunction$1(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttribute(name); - else this.setAttribute(name, v); - }; - } - - function attrFunctionNS$1(fullname, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttributeNS(fullname.space, fullname.local); - else this.setAttributeNS(fullname.space, fullname.local, v); - }; - } - - function selection_attr(name, value) { - var fullname = namespace(name); - - if (arguments.length < 2) { - var node = this.node(); - return fullname.local - ? node.getAttributeNS(fullname.space, fullname.local) - : node.getAttribute(fullname); - } - - return this.each((value == null - ? (fullname.local ? attrRemoveNS$1 : attrRemove$1) : (typeof value === "function" - ? (fullname.local ? attrFunctionNS$1 : attrFunction$1) - : (fullname.local ? attrConstantNS$1 : attrConstant$1)))(fullname, value)); - } - - function defaultView(node) { - return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node - || (node.document && node) // node is a Window - || node.defaultView; // node is a Document - } - - function styleRemove$1(name) { - return function() { - this.style.removeProperty(name); - }; - } - - function styleConstant$1(name, value, priority) { - return function() { - this.style.setProperty(name, value, priority); - }; - } - - function styleFunction$1(name, value, priority) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.style.removeProperty(name); - else this.style.setProperty(name, v, priority); - }; - } - - function selection_style(name, value, priority) { - return arguments.length > 1 - ? this.each((value == null - ? styleRemove$1 : typeof value === "function" - ? styleFunction$1 - : styleConstant$1)(name, value, priority == null ? "" : priority)) - : styleValue(this.node(), name); - } - - function styleValue(node, name) { - return node.style.getPropertyValue(name) - || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); - } - - function propertyRemove(name) { - return function() { - delete this[name]; - }; - } - - function propertyConstant(name, value) { - return function() { - this[name] = value; - }; - } - - function propertyFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) delete this[name]; - else this[name] = v; - }; - } - - function selection_property(name, value) { - return arguments.length > 1 - ? this.each((value == null - ? propertyRemove : typeof value === "function" - ? propertyFunction - : propertyConstant)(name, value)) - : this.node()[name]; - } - - function classArray(string) { - return string.trim().split(/^|\s+/); - } - - function classList(node) { - return node.classList || new ClassList(node); - } - - function ClassList(node) { - this._node = node; - this._names = classArray(node.getAttribute("class") || ""); - } - - ClassList.prototype = { - add: function(name) { - var i = this._names.indexOf(name); - if (i < 0) { - this._names.push(name); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - remove: function(name) { - var i = this._names.indexOf(name); - if (i >= 0) { - this._names.splice(i, 1); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - contains: function(name) { - return this._names.indexOf(name) >= 0; - } - }; - - function classedAdd(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.add(names[i]); - } - - function classedRemove(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.remove(names[i]); - } - - function classedTrue(names) { - return function() { - classedAdd(this, names); - }; - } - - function classedFalse(names) { - return function() { - classedRemove(this, names); - }; - } - - function classedFunction(names, value) { - return function() { - (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); - }; - } - - function selection_classed(name, value) { - var names = classArray(name + ""); - - if (arguments.length < 2) { - var list = classList(this.node()), i = -1, n = names.length; - while (++i < n) if (!list.contains(names[i])) return false; - return true; - } - - return this.each((typeof value === "function" - ? classedFunction : value - ? classedTrue - : classedFalse)(names, value)); - } - - function textRemove() { - this.textContent = ""; - } - - function textConstant$1(value) { - return function() { - this.textContent = value; - }; - } - - function textFunction$1(value) { - return function() { - var v = value.apply(this, arguments); - this.textContent = v == null ? "" : v; - }; - } - - function selection_text(value) { - return arguments.length - ? this.each(value == null - ? textRemove : (typeof value === "function" - ? textFunction$1 - : textConstant$1)(value)) - : this.node().textContent; - } - - function htmlRemove() { - this.innerHTML = ""; - } - - function htmlConstant(value) { - return function() { - this.innerHTML = value; - }; - } - - function htmlFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.innerHTML = v == null ? "" : v; - }; - } - - function selection_html(value) { - return arguments.length - ? this.each(value == null - ? htmlRemove : (typeof value === "function" - ? htmlFunction - : htmlConstant)(value)) - : this.node().innerHTML; - } - - function raise() { - if (this.nextSibling) this.parentNode.appendChild(this); - } - - function selection_raise() { - return this.each(raise); - } - - function lower() { - if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); - } - - function selection_lower() { - return this.each(lower); - } - - function selection_append(name) { - var create = typeof name === "function" ? name : creator(name); - return this.select(function() { - return this.appendChild(create.apply(this, arguments)); - }); - } - - function constantNull() { - return null; - } - - function selection_insert(name, before) { - var create = typeof name === "function" ? name : creator(name), - select = before == null ? constantNull : typeof before === "function" ? before : selector(before); - return this.select(function() { - return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); - }); - } - - function remove() { - var parent = this.parentNode; - if (parent) parent.removeChild(this); - } - - function selection_remove() { - return this.each(remove); - } - - function selection_cloneShallow() { - var clone = this.cloneNode(false), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; - } - - function selection_cloneDeep() { - var clone = this.cloneNode(true), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; - } - - function selection_clone(deep) { - return this.select(deep ? selection_cloneDeep : selection_cloneShallow); - } - - function selection_datum(value) { - return arguments.length - ? this.property("__data__", value) - : this.node().__data__; - } - - function contextListener(listener) { - return function(event) { - listener.call(this, event, this.__data__); - }; - } - - function parseTypenames(typenames) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - return {type: t, name: name}; - }); - } - - function onRemove(typename) { - return function() { - var on = this.__on; - if (!on) return; - for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { - if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.options); - } else { - on[++i] = o; - } - } - if (++i) on.length = i; - else delete this.__on; - }; - } - - function onAdd(typename, value, options) { - return function() { - var on = this.__on, o, listener = contextListener(value); - if (on) for (var j = 0, m = on.length; j < m; ++j) { - if ((o = on[j]).type === typename.type && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.options); - this.addEventListener(o.type, o.listener = listener, o.options = options); - o.value = value; - return; - } - } - this.addEventListener(typename.type, listener, options); - o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options}; - if (!on) this.__on = [o]; - else on.push(o); - }; - } - - function selection_on(typename, value, options) { - var typenames = parseTypenames(typename + ""), i, n = typenames.length, t; - - if (arguments.length < 2) { - var on = this.node().__on; - if (on) for (var j = 0, m = on.length, o; j < m; ++j) { - for (i = 0, o = on[j]; i < n; ++i) { - if ((t = typenames[i]).type === o.type && t.name === o.name) { - return o.value; - } - } - } - return; - } - - on = value ? onAdd : onRemove; - for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options)); - return this; - } - - function dispatchEvent(node, type, params) { - var window = defaultView(node), - event = window.CustomEvent; - - if (typeof event === "function") { - event = new event(type, params); - } else { - event = window.document.createEvent("Event"); - if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; - else event.initEvent(type, false, false); - } - - node.dispatchEvent(event); - } - - function dispatchConstant(type, params) { - return function() { - return dispatchEvent(this, type, params); - }; - } - - function dispatchFunction(type, params) { - return function() { - return dispatchEvent(this, type, params.apply(this, arguments)); - }; - } - - function selection_dispatch(type, params) { - return this.each((typeof params === "function" - ? dispatchFunction - : dispatchConstant)(type, params)); - } - - function* selection_iterator() { - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { - if (node = group[i]) yield node; - } - } - } - - var root$1 = [null]; - - function Selection$1(groups, parents) { - this._groups = groups; - this._parents = parents; - } - - function selection() { - return new Selection$1([[document.documentElement]], root$1); - } - - function selection_selection() { - return this; - } - - Selection$1.prototype = selection.prototype = { - constructor: Selection$1, - select: selection_select, - selectAll: selection_selectAll, - selectChild: selection_selectChild, - selectChildren: selection_selectChildren, - filter: selection_filter, - data: selection_data, - enter: selection_enter, - exit: selection_exit, - join: selection_join, - merge: selection_merge, - selection: selection_selection, - order: selection_order, - sort: selection_sort, - call: selection_call, - nodes: selection_nodes, - node: selection_node, - size: selection_size, - empty: selection_empty, - each: selection_each, - attr: selection_attr, - style: selection_style, - property: selection_property, - classed: selection_classed, - text: selection_text, - html: selection_html, - raise: selection_raise, - lower: selection_lower, - append: selection_append, - insert: selection_insert, - remove: selection_remove, - clone: selection_clone, - datum: selection_datum, - on: selection_on, - dispatch: selection_dispatch, - [Symbol.iterator]: selection_iterator - }; - - function select(selector) { - return typeof selector === "string" - ? new Selection$1([[document.querySelector(selector)]], [document.documentElement]) - : new Selection$1([[selector]], root$1); - } - - function create$1(name) { - return select(creator(name).call(document.documentElement)); - } - - var nextId = 0; - - function local$1() { - return new Local; - } - - function Local() { - this._ = "@" + (++nextId).toString(36); - } - - Local.prototype = local$1.prototype = { - constructor: Local, - get: function(node) { - var id = this._; - while (!(id in node)) if (!(node = node.parentNode)) return; - return node[id]; - }, - set: function(node, value) { - return node[this._] = value; - }, - remove: function(node) { - return this._ in node && delete node[this._]; - }, - toString: function() { - return this._; - } - }; - - function sourceEvent(event) { - let sourceEvent; - while (sourceEvent = event.sourceEvent) event = sourceEvent; - return event; - } - - function pointer(event, node) { - event = sourceEvent(event); - if (node === undefined) node = event.currentTarget; - if (node) { - var svg = node.ownerSVGElement || node; - if (svg.createSVGPoint) { - var point = svg.createSVGPoint(); - point.x = event.clientX, point.y = event.clientY; - point = point.matrixTransform(node.getScreenCTM().inverse()); - return [point.x, point.y]; - } - if (node.getBoundingClientRect) { - var rect = node.getBoundingClientRect(); - return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; - } - } - return [event.pageX, event.pageY]; - } - - function pointers(events, node) { - if (events.target) { // i.e., instanceof Event, not TouchList or iterable - events = sourceEvent(events); - if (node === undefined) node = events.currentTarget; - events = events.touches || [events]; - } - return Array.from(events, event => pointer(event, node)); - } - - function selectAll(selector) { - return typeof selector === "string" - ? new Selection$1([document.querySelectorAll(selector)], [document.documentElement]) - : new Selection$1([array$4(selector)], root$1); - } - - // These are typically used in conjunction with noevent to ensure that we can - // preventDefault on the event. - const nonpassive = {passive: false}; - const nonpassivecapture = {capture: true, passive: false}; - - function nopropagation$2(event) { - event.stopImmediatePropagation(); - } - - function noevent$2(event) { - event.preventDefault(); - event.stopImmediatePropagation(); - } - - function dragDisable(view) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", noevent$2, nonpassivecapture); - if ("onselectstart" in root) { - selection.on("selectstart.drag", noevent$2, nonpassivecapture); - } else { - root.__noselect = root.style.MozUserSelect; - root.style.MozUserSelect = "none"; - } - } - - function yesdrag(view, noclick) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", null); - if (noclick) { - selection.on("click.drag", noevent$2, nonpassivecapture); - setTimeout(function() { selection.on("click.drag", null); }, 0); - } - if ("onselectstart" in root) { - selection.on("selectstart.drag", null); - } else { - root.style.MozUserSelect = root.__noselect; - delete root.__noselect; - } - } - - var constant$9 = x => () => x; - - function DragEvent(type, { - sourceEvent, - subject, - target, - identifier, - active, - x, y, dx, dy, - dispatch - }) { - Object.defineProperties(this, { - type: {value: type, enumerable: true, configurable: true}, - sourceEvent: {value: sourceEvent, enumerable: true, configurable: true}, - subject: {value: subject, enumerable: true, configurable: true}, - target: {value: target, enumerable: true, configurable: true}, - identifier: {value: identifier, enumerable: true, configurable: true}, - active: {value: active, enumerable: true, configurable: true}, - x: {value: x, enumerable: true, configurable: true}, - y: {value: y, enumerable: true, configurable: true}, - dx: {value: dx, enumerable: true, configurable: true}, - dy: {value: dy, enumerable: true, configurable: true}, - _: {value: dispatch} - }); - } - - DragEvent.prototype.on = function() { - var value = this._.on.apply(this._, arguments); - return value === this._ ? this : value; - }; - - // Ignore right-click, since that should open the context menu. - function defaultFilter$2(event) { - return !event.ctrlKey && !event.button; - } - - function defaultContainer() { - return this.parentNode; - } - - function defaultSubject(event, d) { - return d == null ? {x: event.x, y: event.y} : d; - } - - function defaultTouchable$2() { - return navigator.maxTouchPoints || ("ontouchstart" in this); - } - - function drag() { - var filter = defaultFilter$2, - container = defaultContainer, - subject = defaultSubject, - touchable = defaultTouchable$2, - gestures = {}, - listeners = dispatch("start", "drag", "end"), - active = 0, - mousedownx, - mousedowny, - mousemoving, - touchending, - clickDistance2 = 0; - - function drag(selection) { - selection - .on("mousedown.drag", mousedowned) - .filter(touchable) - .on("touchstart.drag", touchstarted) - .on("touchmove.drag", touchmoved, nonpassive) - .on("touchend.drag touchcancel.drag", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - function mousedowned(event, d) { - if (touchending || !filter.call(this, event, d)) return; - var gesture = beforestart(this, container.call(this, event, d), event, d, "mouse"); - if (!gesture) return; - select(event.view) - .on("mousemove.drag", mousemoved, nonpassivecapture) - .on("mouseup.drag", mouseupped, nonpassivecapture); - dragDisable(event.view); - nopropagation$2(event); - mousemoving = false; - mousedownx = event.clientX; - mousedowny = event.clientY; - gesture("start", event); - } - - function mousemoved(event) { - noevent$2(event); - if (!mousemoving) { - var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny; - mousemoving = dx * dx + dy * dy > clickDistance2; - } - gestures.mouse("drag", event); - } - - function mouseupped(event) { - select(event.view).on("mousemove.drag mouseup.drag", null); - yesdrag(event.view, mousemoving); - noevent$2(event); - gestures.mouse("end", event); - } - - function touchstarted(event, d) { - if (!filter.call(this, event, d)) return; - var touches = event.changedTouches, - c = container.call(this, event, d), - n = touches.length, i, gesture; - - for (i = 0; i < n; ++i) { - if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) { - nopropagation$2(event); - gesture("start", event, touches[i]); - } - } - } - - function touchmoved(event) { - var touches = event.changedTouches, - n = touches.length, i, gesture; - - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - noevent$2(event); - gesture("drag", event, touches[i]); - } - } - } - - function touchended(event) { - var touches = event.changedTouches, - n = touches.length, i, gesture; - - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - nopropagation$2(event); - gesture("end", event, touches[i]); - } - } - } - - function beforestart(that, container, event, d, identifier, touch) { - var dispatch = listeners.copy(), - p = pointer(touch || event, container), dx, dy, - s; - - if ((s = subject.call(that, new DragEvent("beforestart", { - sourceEvent: event, - target: drag, - identifier, - active, - x: p[0], - y: p[1], - dx: 0, - dy: 0, - dispatch - }), d)) == null) return; - - dx = s.x - p[0] || 0; - dy = s.y - p[1] || 0; - - return function gesture(type, event, touch) { - var p0 = p, n; - switch (type) { - case "start": gestures[identifier] = gesture, n = active++; break; - case "end": delete gestures[identifier], --active; // falls through - case "drag": p = pointer(touch || event, container), n = active; break; - } - dispatch.call( - type, - that, - new DragEvent(type, { - sourceEvent: event, - subject: s, - target: drag, - identifier, - active: n, - x: p[0] + dx, - y: p[1] + dy, - dx: p[0] - p0[0], - dy: p[1] - p0[1], - dispatch - }), - d - ); - }; - } - - drag.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$9(!!_), drag) : filter; - }; - - drag.container = function(_) { - return arguments.length ? (container = typeof _ === "function" ? _ : constant$9(_), drag) : container; - }; - - drag.subject = function(_) { - return arguments.length ? (subject = typeof _ === "function" ? _ : constant$9(_), drag) : subject; - }; - - drag.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$9(!!_), drag) : touchable; - }; - - drag.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? drag : value; - }; - - drag.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); - }; - - return drag; - } - - function define(constructor, factory, prototype) { - constructor.prototype = factory.prototype = prototype; - prototype.constructor = constructor; - } - - function extend(parent, definition) { - var prototype = Object.create(parent.prototype); - for (var key in definition) prototype[key] = definition[key]; - return prototype; - } - - function Color() {} - - var darker = 0.7; - var brighter = 1 / darker; - - var reI = "\\s*([+-]?\\d+)\\s*", - reN = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", - reP = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", - reHex = /^#([0-9a-f]{3,8})$/, - reRgbInteger = new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`), - reRgbPercent = new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`), - reRgbaInteger = new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`), - reRgbaPercent = new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`), - reHslPercent = new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`), - reHslaPercent = new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`); - - var named = { - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgreen: 0x006400, - darkgrey: 0xa9a9a9, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - grey: 0x808080, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgreen: 0x90ee90, - lightgrey: 0xd3d3d3, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 - }; - - define(Color, color, { - copy(channels) { - return Object.assign(new this.constructor, this, channels); - }, - displayable() { - return this.rgb().displayable(); - }, - hex: color_formatHex, // Deprecated! Use color.formatHex. - formatHex: color_formatHex, - formatHex8: color_formatHex8, - formatHsl: color_formatHsl, - formatRgb: color_formatRgb, - toString: color_formatRgb - }); - - function color_formatHex() { - return this.rgb().formatHex(); - } - - function color_formatHex8() { - return this.rgb().formatHex8(); - } - - function color_formatHsl() { - return hslConvert(this).formatHsl(); - } - - function color_formatRgb() { - return this.rgb().formatRgb(); - } - - function color(format) { - var m, l; - format = (format + "").trim().toLowerCase(); - return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000 - : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00 - : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000 - : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000 - : null) // invalid hex - : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) - : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) - : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) - : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) - : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) - : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) - : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins - : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) - : null; - } - - function rgbn(n) { - return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); - } - - function rgba(r, g, b, a) { - if (a <= 0) r = g = b = NaN; - return new Rgb(r, g, b, a); - } - - function rgbConvert(o) { - if (!(o instanceof Color)) o = color(o); - if (!o) return new Rgb; - o = o.rgb(); - return new Rgb(o.r, o.g, o.b, o.opacity); - } - - function rgb(r, g, b, opacity) { - return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); - } - - function Rgb(r, g, b, opacity) { - this.r = +r; - this.g = +g; - this.b = +b; - this.opacity = +opacity; - } - - define(Rgb, rgb, extend(Color, { - brighter(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - darker(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - rgb() { - return this; - }, - clamp() { - return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity)); - }, - displayable() { - return (-0.5 <= this.r && this.r < 255.5) - && (-0.5 <= this.g && this.g < 255.5) - && (-0.5 <= this.b && this.b < 255.5) - && (0 <= this.opacity && this.opacity <= 1); - }, - hex: rgb_formatHex, // Deprecated! Use color.formatHex. - formatHex: rgb_formatHex, - formatHex8: rgb_formatHex8, - formatRgb: rgb_formatRgb, - toString: rgb_formatRgb - })); - - function rgb_formatHex() { - return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`; - } - - function rgb_formatHex8() { - return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; - } - - function rgb_formatRgb() { - const a = clampa(this.opacity); - return `${a === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? ")" : `, ${a})`}`; - } - - function clampa(opacity) { - return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity)); - } - - function clampi(value) { - return Math.max(0, Math.min(255, Math.round(value) || 0)); - } - - function hex(value) { - value = clampi(value); - return (value < 16 ? "0" : "") + value.toString(16); - } - - function hsla(h, s, l, a) { - if (a <= 0) h = s = l = NaN; - else if (l <= 0 || l >= 1) h = s = NaN; - else if (s <= 0) h = NaN; - return new Hsl(h, s, l, a); - } - - function hslConvert(o) { - if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Color)) o = color(o); - if (!o) return new Hsl; - if (o instanceof Hsl) return o; - o = o.rgb(); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - h = NaN, - s = max - min, - l = (max + min) / 2; - if (s) { - if (r === max) h = (g - b) / s + (g < b) * 6; - else if (g === max) h = (b - r) / s + 2; - else h = (r - g) / s + 4; - s /= l < 0.5 ? max + min : 2 - max - min; - h *= 60; - } else { - s = l > 0 && l < 1 ? 0 : h; - } - return new Hsl(h, s, l, o.opacity); - } - - function hsl$2(h, s, l, opacity) { - return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); - } - - function Hsl(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; - } - - define(Hsl, hsl$2, extend(Color, { - brighter(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - darker(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - rgb() { - var h = this.h % 360 + (this.h < 0) * 360, - s = isNaN(h) || isNaN(this.s) ? 0 : this.s, - l = this.l, - m2 = l + (l < 0.5 ? l : 1 - l) * s, - m1 = 2 * l - m2; - return new Rgb( - hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), - hsl2rgb(h, m1, m2), - hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), - this.opacity - ); - }, - clamp() { - return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity)); - }, - displayable() { - return (0 <= this.s && this.s <= 1 || isNaN(this.s)) - && (0 <= this.l && this.l <= 1) - && (0 <= this.opacity && this.opacity <= 1); - }, - formatHsl() { - const a = clampa(this.opacity); - return `${a === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? ")" : `, ${a})`}`; - } - })); - - function clamph(value) { - value = (value || 0) % 360; - return value < 0 ? value + 360 : value; - } - - function clampt(value) { - return Math.max(0, Math.min(1, value || 0)); - } - - /* From FvD 13.37, CSS Color Module Level 3 */ - function hsl2rgb(h, m1, m2) { - return (h < 60 ? m1 + (m2 - m1) * h / 60 - : h < 180 ? m2 - : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 - : m1) * 255; - } - - const radians$1 = Math.PI / 180; - const degrees$2 = 180 / Math.PI; - - // https://observablehq.com/@mbostock/lab-and-rgb - const K$2 = 18, - Xn = 0.96422, - Yn = 1, - Zn = 0.82521, - t0$1 = 4 / 29, - t1$1 = 6 / 29, - t2 = 3 * t1$1 * t1$1, - t3 = t1$1 * t1$1 * t1$1; - - function labConvert(o) { - if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); - if (o instanceof Hcl) return hcl2lab(o); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = rgb2lrgb(o.r), - g = rgb2lrgb(o.g), - b = rgb2lrgb(o.b), - y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z; - if (r === g && g === b) x = z = y; else { - x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); - z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); - } - return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); - } - - function gray(l, opacity) { - return new Lab(l, 0, 0, opacity == null ? 1 : opacity); - } - - function lab$1(l, a, b, opacity) { - return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); - } - - function Lab(l, a, b, opacity) { - this.l = +l; - this.a = +a; - this.b = +b; - this.opacity = +opacity; - } - - define(Lab, lab$1, extend(Color, { - brighter(k) { - return new Lab(this.l + K$2 * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - darker(k) { - return new Lab(this.l - K$2 * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - rgb() { - var y = (this.l + 16) / 116, - x = isNaN(this.a) ? y : y + this.a / 500, - z = isNaN(this.b) ? y : y - this.b / 200; - x = Xn * lab2xyz(x); - y = Yn * lab2xyz(y); - z = Zn * lab2xyz(z); - return new Rgb( - lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z), - lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), - lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z), - this.opacity - ); - } - })); - - function xyz2lab(t) { - return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0$1; - } - - function lab2xyz(t) { - return t > t1$1 ? t * t * t : t2 * (t - t0$1); - } - - function lrgb2rgb(x) { - return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); - } - - function rgb2lrgb(x) { - return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); - } - - function hclConvert(o) { - if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); - if (!(o instanceof Lab)) o = labConvert(o); - if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity); - var h = Math.atan2(o.b, o.a) * degrees$2; - return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); - } - - function lch(l, c, h, opacity) { - return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity); - } - - function hcl$2(h, c, l, opacity) { - return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); - } - - function Hcl(h, c, l, opacity) { - this.h = +h; - this.c = +c; - this.l = +l; - this.opacity = +opacity; - } - - function hcl2lab(o) { - if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); - var h = o.h * radians$1; - return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); - } - - define(Hcl, hcl$2, extend(Color, { - brighter(k) { - return new Hcl(this.h, this.c, this.l + K$2 * (k == null ? 1 : k), this.opacity); - }, - darker(k) { - return new Hcl(this.h, this.c, this.l - K$2 * (k == null ? 1 : k), this.opacity); - }, - rgb() { - return hcl2lab(this).rgb(); - } - })); - - var A$1 = -0.14861, - B$3 = +1.78277, - C$2 = -0.29227, - D$3 = -0.90649, - E$2 = +1.97294, - ED = E$2 * D$3, - EB = E$2 * B$3, - BC_DA = B$3 * C$2 - D$3 * A$1; - - function cubehelixConvert(o) { - if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), - bl = b - l, - k = (E$2 * (g - l) - C$2 * bl) / D$3, - s = Math.sqrt(k * k + bl * bl) / (E$2 * l * (1 - l)), // NaN if l=0 or l=1 - h = s ? Math.atan2(k, bl) * degrees$2 - 120 : NaN; - return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity); - } - - function cubehelix$3(h, s, l, opacity) { - return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity); - } - - function Cubehelix(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; - } - - define(Cubehelix, cubehelix$3, extend(Color, { - brighter(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - darker(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - rgb() { - var h = isNaN(this.h) ? 0 : (this.h + 120) * radians$1, - l = +this.l, - a = isNaN(this.s) ? 0 : this.s * l * (1 - l), - cosh = Math.cos(h), - sinh = Math.sin(h); - return new Rgb( - 255 * (l + a * (A$1 * cosh + B$3 * sinh)), - 255 * (l + a * (C$2 * cosh + D$3 * sinh)), - 255 * (l + a * (E$2 * cosh)), - this.opacity - ); - } - })); - - function basis$1(t1, v0, v1, v2, v3) { - var t2 = t1 * t1, t3 = t2 * t1; - return ((1 - 3 * t1 + 3 * t2 - t3) * v0 - + (4 - 6 * t2 + 3 * t3) * v1 - + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 - + t3 * v3) / 6; - } - - function basis$2(values) { - var n = values.length - 1; - return function(t) { - var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), - v1 = values[i], - v2 = values[i + 1], - v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, - v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1; - return basis$1((t - i / n) * n, v0, v1, v2, v3); - }; - } - - function basisClosed$1(values) { - var n = values.length; - return function(t) { - var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), - v0 = values[(i + n - 1) % n], - v1 = values[i % n], - v2 = values[(i + 1) % n], - v3 = values[(i + 2) % n]; - return basis$1((t - i / n) * n, v0, v1, v2, v3); - }; - } - - var constant$8 = x => () => x; - - function linear$2(a, d) { - return function(t) { - return a + t * d; - }; - } - - function exponential$1(a, b, y) { - return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { - return Math.pow(a + t * b, y); - }; - } - - function hue$1(a, b) { - var d = b - a; - return d ? linear$2(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant$8(isNaN(a) ? b : a); - } - - function gamma$1(y) { - return (y = +y) === 1 ? nogamma : function(a, b) { - return b - a ? exponential$1(a, b, y) : constant$8(isNaN(a) ? b : a); - }; - } - - function nogamma(a, b) { - var d = b - a; - return d ? linear$2(a, d) : constant$8(isNaN(a) ? b : a); - } - - var interpolateRgb = (function rgbGamma(y) { - var color = gamma$1(y); - - function rgb$1(start, end) { - var r = color((start = rgb(start)).r, (end = rgb(end)).r), - g = color(start.g, end.g), - b = color(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.r = r(t); - start.g = g(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; - } - - rgb$1.gamma = rgbGamma; - - return rgb$1; - })(1); - - function rgbSpline(spline) { - return function(colors) { - var n = colors.length, - r = new Array(n), - g = new Array(n), - b = new Array(n), - i, color; - for (i = 0; i < n; ++i) { - color = rgb(colors[i]); - r[i] = color.r || 0; - g[i] = color.g || 0; - b[i] = color.b || 0; - } - r = spline(r); - g = spline(g); - b = spline(b); - color.opacity = 1; - return function(t) { - color.r = r(t); - color.g = g(t); - color.b = b(t); - return color + ""; - }; - }; - } - - var rgbBasis = rgbSpline(basis$2); - var rgbBasisClosed = rgbSpline(basisClosed$1); - - function numberArray(a, b) { - if (!b) b = []; - var n = a ? Math.min(b.length, a.length) : 0, - c = b.slice(), - i; - return function(t) { - for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t; - return c; - }; - } - - function isNumberArray(x) { - return ArrayBuffer.isView(x) && !(x instanceof DataView); - } - - function array$3(a, b) { - return (isNumberArray(b) ? numberArray : genericArray)(a, b); - } - - function genericArray(a, b) { - var nb = b ? b.length : 0, - na = a ? Math.min(nb, a.length) : 0, - x = new Array(na), - c = new Array(nb), - i; - - for (i = 0; i < na; ++i) x[i] = interpolate$2(a[i], b[i]); - for (; i < nb; ++i) c[i] = b[i]; - - return function(t) { - for (i = 0; i < na; ++i) c[i] = x[i](t); - return c; - }; - } - - function date$1(a, b) { - var d = new Date; - return a = +a, b = +b, function(t) { - return d.setTime(a * (1 - t) + b * t), d; - }; - } - - function interpolateNumber(a, b) { - return a = +a, b = +b, function(t) { - return a * (1 - t) + b * t; - }; - } - - function object$1(a, b) { - var i = {}, - c = {}, - k; - - if (a === null || typeof a !== "object") a = {}; - if (b === null || typeof b !== "object") b = {}; - - for (k in b) { - if (k in a) { - i[k] = interpolate$2(a[k], b[k]); - } else { - c[k] = b[k]; - } - } - - return function(t) { - for (k in i) c[k] = i[k](t); - return c; - }; - } - - var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, - reB = new RegExp(reA.source, "g"); - - function zero(b) { - return function() { - return b; - }; - } - - function one(b) { - return function(t) { - return b(t) + ""; - }; - } - - function interpolateString(a, b) { - var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b - am, // current match in a - bm, // current match in b - bs, // string preceding current number in b, if any - i = -1, // index in s - s = [], // string constants and placeholders - q = []; // number interpolators - - // Coerce inputs to strings. - a = a + "", b = b + ""; - - // Interpolate pairs of numbers in a & b. - while ((am = reA.exec(a)) - && (bm = reB.exec(b))) { - if ((bs = bm.index) > bi) { // a string precedes the next number in b - bs = b.slice(bi, bs); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match - if (s[i]) s[i] += bm; // coalesce with previous string - else s[++i] = bm; - } else { // interpolate non-matching numbers - s[++i] = null; - q.push({i: i, x: interpolateNumber(am, bm)}); - } - bi = reB.lastIndex; - } - - // Add remains of b. - if (bi < b.length) { - bs = b.slice(bi); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - - // Special optimization for only a single match. - // Otherwise, interpolate each of the numbers and rejoin the string. - return s.length < 2 ? (q[0] - ? one(q[0].x) - : zero(b)) - : (b = q.length, function(t) { - for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }); - } - - function interpolate$2(a, b) { - var t = typeof b, c; - return b == null || t === "boolean" ? constant$8(b) - : (t === "number" ? interpolateNumber - : t === "string" ? ((c = color(b)) ? (b = c, interpolateRgb) : interpolateString) - : b instanceof color ? interpolateRgb - : b instanceof Date ? date$1 - : isNumberArray(b) ? numberArray - : Array.isArray(b) ? genericArray - : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object$1 - : interpolateNumber)(a, b); - } - - function discrete(range) { - var n = range.length; - return function(t) { - return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; - } - - function hue(a, b) { - var i = hue$1(+a, +b); - return function(t) { - var x = i(t); - return x - 360 * Math.floor(x / 360); - }; - } - - function interpolateRound(a, b) { - return a = +a, b = +b, function(t) { - return Math.round(a * (1 - t) + b * t); - }; - } - - var degrees$1 = 180 / Math.PI; - - var identity$7 = { - translateX: 0, - translateY: 0, - rotate: 0, - skewX: 0, - scaleX: 1, - scaleY: 1 - }; - - function decompose(a, b, c, d, e, f) { - var scaleX, scaleY, skewX; - if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; - if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; - if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; - if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; - return { - translateX: e, - translateY: f, - rotate: Math.atan2(b, a) * degrees$1, - skewX: Math.atan(skewX) * degrees$1, - scaleX: scaleX, - scaleY: scaleY - }; - } - - var svgNode; - - /* eslint-disable no-undef */ - function parseCss(value) { - const m = new (typeof DOMMatrix === "function" ? DOMMatrix : WebKitCSSMatrix)(value + ""); - return m.isIdentity ? identity$7 : decompose(m.a, m.b, m.c, m.d, m.e, m.f); - } - - function parseSvg(value) { - if (value == null) return identity$7; - if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); - svgNode.setAttribute("transform", value); - if (!(value = svgNode.transform.baseVal.consolidate())) return identity$7; - value = value.matrix; - return decompose(value.a, value.b, value.c, value.d, value.e, value.f); - } - - function interpolateTransform(parse, pxComma, pxParen, degParen) { - - function pop(s) { - return s.length ? s.pop() + " " : ""; - } - - function translate(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push("translate(", null, pxComma, null, pxParen); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb || yb) { - s.push("translate(" + xb + pxComma + yb + pxParen); - } - } - - function rotate(a, b, s, q) { - if (a !== b) { - if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path - q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "rotate(" + b + degParen); - } - } - - function skewX(a, b, s, q) { - if (a !== b) { - q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "skewX(" + b + degParen); - } - } - - function scale(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push(pop(s) + "scale(", null, ",", null, ")"); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb !== 1 || yb !== 1) { - s.push(pop(s) + "scale(" + xb + "," + yb + ")"); - } - } - - return function(a, b) { - var s = [], // string constants and placeholders - q = []; // number interpolators - a = parse(a), b = parse(b); - translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); - rotate(a.rotate, b.rotate, s, q); - skewX(a.skewX, b.skewX, s, q); - scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); - a = b = null; // gc - return function(t) { - var i = -1, n = q.length, o; - while (++i < n) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }; - }; - } - - var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); - var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); - - var epsilon2$1 = 1e-12; - - function cosh(x) { - return ((x = Math.exp(x)) + 1 / x) / 2; - } - - function sinh(x) { - return ((x = Math.exp(x)) - 1 / x) / 2; - } - - function tanh(x) { - return ((x = Math.exp(2 * x)) - 1) / (x + 1); - } - - var interpolateZoom = (function zoomRho(rho, rho2, rho4) { - - // p0 = [ux0, uy0, w0] - // p1 = [ux1, uy1, w1] - function zoom(p0, p1) { - var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], - ux1 = p1[0], uy1 = p1[1], w1 = p1[2], - dx = ux1 - ux0, - dy = uy1 - uy0, - d2 = dx * dx + dy * dy, - i, - S; - - // Special case for u0 ≅ u1. - if (d2 < epsilon2$1) { - S = Math.log(w1 / w0) / rho; - i = function(t) { - return [ - ux0 + t * dx, - uy0 + t * dy, - w0 * Math.exp(rho * t * S) - ]; - }; - } - - // General case. - else { - var d1 = Math.sqrt(d2), - b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), - b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), - r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), - r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); - S = (r1 - r0) / rho; - i = function(t) { - var s = t * S, - coshr0 = cosh(r0), - u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); - return [ - ux0 + u * dx, - uy0 + u * dy, - w0 * coshr0 / cosh(rho * s + r0) - ]; - }; - } - - i.duration = S * 1000 * rho / Math.SQRT2; - - return i; - } - - zoom.rho = function(_) { - var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2; - return zoomRho(_1, _2, _4); - }; - - return zoom; - })(Math.SQRT2, 2, 4); - - function hsl(hue) { - return function(start, end) { - var h = hue((start = hsl$2(start)).h, (end = hsl$2(end)).h), - s = nogamma(start.s, end.s), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.s = s(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - } - } - - var hsl$1 = hsl(hue$1); - var hslLong = hsl(nogamma); - - function lab(start, end) { - var l = nogamma((start = lab$1(start)).l, (end = lab$1(end)).l), - a = nogamma(start.a, end.a), - b = nogamma(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.l = l(t); - start.a = a(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; - } - - function hcl(hue) { - return function(start, end) { - var h = hue((start = hcl$2(start)).h, (end = hcl$2(end)).h), - c = nogamma(start.c, end.c), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.c = c(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - } - } - - var hcl$1 = hcl(hue$1); - var hclLong = hcl(nogamma); - - function cubehelix$1(hue) { - return (function cubehelixGamma(y) { - y = +y; - - function cubehelix(start, end) { - var h = hue((start = cubehelix$3(start)).h, (end = cubehelix$3(end)).h), - s = nogamma(start.s, end.s), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.s = s(t); - start.l = l(Math.pow(t, y)); - start.opacity = opacity(t); - return start + ""; - }; - } - - cubehelix.gamma = cubehelixGamma; - - return cubehelix; - })(1); - } - - var cubehelix$2 = cubehelix$1(hue$1); - var cubehelixLong = cubehelix$1(nogamma); - - function piecewise(interpolate, values) { - if (values === undefined) values = interpolate, interpolate = interpolate$2; - var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n); - while (i < n) I[i] = interpolate(v, v = values[++i]); - return function(t) { - var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n))); - return I[i](t - i); - }; - } - - function quantize$1(interpolator, n) { - var samples = new Array(n); - for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); - return samples; - } - - var frame = 0, // is an animation frame pending? - timeout$1 = 0, // is a timeout pending? - interval$1 = 0, // are any timers active? - pokeDelay = 1000, // how frequently we check for clock skew - taskHead, - taskTail, - clockLast = 0, - clockNow = 0, - clockSkew = 0, - clock = typeof performance === "object" && performance.now ? performance : Date, - setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; - - function now() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); - } - - function clearNow() { - clockNow = 0; - } - - function Timer() { - this._call = - this._time = - this._next = null; - } - - Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function(callback, delay, time) { - if (typeof callback !== "function") throw new TypeError("callback is not a function"); - time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); - if (!this._next && taskTail !== this) { - if (taskTail) taskTail._next = this; - else taskHead = this; - taskTail = this; - } - this._call = callback; - this._time = time; - sleep(); - }, - stop: function() { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } - }; - - function timer(callback, delay, time) { - var t = new Timer; - t.restart(callback, delay, time); - return t; - } - - function timerFlush() { - now(); // Get the current time, if not already set. - ++frame; // Pretend we’ve set an alarm, if we haven’t already. - var t = taskHead, e; - while (t) { - if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e); - t = t._next; - } - --frame; - } - - function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout$1 = 0; - try { - timerFlush(); - } finally { - frame = 0; - nap(); - clockNow = 0; - } - } - - function poke() { - var now = clock.now(), delay = now - clockLast; - if (delay > pokeDelay) clockSkew -= delay, clockLast = now; - } - - function nap() { - var t0, t1 = taskHead, t2, time = Infinity; - while (t1) { - if (t1._call) { - if (time > t1._time) time = t1._time; - t0 = t1, t1 = t1._next; - } else { - t2 = t1._next, t1._next = null; - t1 = t0 ? t0._next = t2 : taskHead = t2; - } - } - taskTail = t0; - sleep(time); - } - - function sleep(time) { - if (frame) return; // Soonest alarm already set, or will be. - if (timeout$1) timeout$1 = clearTimeout(timeout$1); - var delay = time - clockNow; // Strictly less than if we recomputed clockNow. - if (delay > 24) { - if (time < Infinity) timeout$1 = setTimeout(wake, time - clock.now() - clockSkew); - if (interval$1) interval$1 = clearInterval(interval$1); - } else { - if (!interval$1) clockLast = clock.now(), interval$1 = setInterval(poke, pokeDelay); - frame = 1, setFrame(wake); - } - } - - function timeout(callback, delay, time) { - var t = new Timer; - delay = delay == null ? 0 : +delay; - t.restart(elapsed => { - t.stop(); - callback(elapsed + delay); - }, delay, time); - return t; - } - - function interval(callback, delay, time) { - var t = new Timer, total = delay; - if (delay == null) return t.restart(callback, delay, time), t; - t._restart = t.restart; - t.restart = function(callback, delay, time) { - delay = +delay, time = time == null ? now() : +time; - t._restart(function tick(elapsed) { - elapsed += total; - t._restart(tick, total += delay, time); - callback(elapsed); - }, delay, time); - }; - t.restart(callback, delay, time); - return t; - } - - var emptyOn = dispatch("start", "end", "cancel", "interrupt"); - var emptyTween = []; - - var CREATED = 0; - var SCHEDULED = 1; - var STARTING = 2; - var STARTED = 3; - var RUNNING = 4; - var ENDING = 5; - var ENDED = 6; - - function schedule(node, name, id, index, group, timing) { - var schedules = node.__transition; - if (!schedules) node.__transition = {}; - else if (id in schedules) return; - create(node, id, { - name: name, - index: index, // For context during callback. - group: group, // For context during callback. - on: emptyOn, - tween: emptyTween, - time: timing.time, - delay: timing.delay, - duration: timing.duration, - ease: timing.ease, - timer: null, - state: CREATED - }); - } - - function init(node, id) { - var schedule = get(node, id); - if (schedule.state > CREATED) throw new Error("too late; already scheduled"); - return schedule; - } - - function set(node, id) { - var schedule = get(node, id); - if (schedule.state > STARTED) throw new Error("too late; already running"); - return schedule; - } - - function get(node, id) { - var schedule = node.__transition; - if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found"); - return schedule; - } - - function create(node, id, self) { - var schedules = node.__transition, - tween; - - // Initialize the self timer when the transition is created. - // Note the actual delay is not known until the first callback! - schedules[id] = self; - self.timer = timer(schedule, 0, self.time); - - function schedule(elapsed) { - self.state = SCHEDULED; - self.timer.restart(start, self.delay, self.time); - - // If the elapsed delay is less than our first sleep, start immediately. - if (self.delay <= elapsed) start(elapsed - self.delay); - } - - function start(elapsed) { - var i, j, n, o; - - // If the state is not SCHEDULED, then we previously errored on start. - if (self.state !== SCHEDULED) return stop(); - - for (i in schedules) { - o = schedules[i]; - if (o.name !== self.name) continue; - - // While this element already has a starting transition during this frame, - // defer starting an interrupting transition until that transition has a - // chance to tick (and possibly end); see d3/d3-transition#54! - if (o.state === STARTED) return timeout(start); - - // Interrupt the active transition, if any. - if (o.state === RUNNING) { - o.state = ENDED; - o.timer.stop(); - o.on.call("interrupt", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - - // Cancel any pre-empted transitions. - else if (+i < id) { - o.state = ENDED; - o.timer.stop(); - o.on.call("cancel", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - } - - // Defer the first tick to end of the current frame; see d3/d3#1576. - // Note the transition may be canceled after start and before the first tick! - // Note this must be scheduled before the start event; see d3/d3-transition#16! - // Assuming this is successful, subsequent callbacks go straight to tick. - timeout(function() { - if (self.state === STARTED) { - self.state = RUNNING; - self.timer.restart(tick, self.delay, self.time); - tick(elapsed); - } - }); - - // Dispatch the start event. - // Note this must be done before the tween are initialized. - self.state = STARTING; - self.on.call("start", node, node.__data__, self.index, self.group); - if (self.state !== STARTING) return; // interrupted - self.state = STARTED; - - // Initialize the tween, deleting null tween. - tween = new Array(n = self.tween.length); - for (i = 0, j = -1; i < n; ++i) { - if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) { - tween[++j] = o; - } - } - tween.length = j + 1; - } - - function tick(elapsed) { - var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), - i = -1, - n = tween.length; - - while (++i < n) { - tween[i].call(node, t); - } - - // Dispatch the end event. - if (self.state === ENDING) { - self.on.call("end", node, node.__data__, self.index, self.group); - stop(); - } - } - - function stop() { - self.state = ENDED; - self.timer.stop(); - delete schedules[id]; - for (var i in schedules) return; // eslint-disable-line no-unused-vars - delete node.__transition; - } - } - - function interrupt(node, name) { - var schedules = node.__transition, - schedule, - active, - empty = true, - i; - - if (!schedules) return; - - name = name == null ? null : name + ""; - - for (i in schedules) { - if ((schedule = schedules[i]).name !== name) { empty = false; continue; } - active = schedule.state > STARTING && schedule.state < ENDING; - schedule.state = ENDED; - schedule.timer.stop(); - schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group); - delete schedules[i]; - } - - if (empty) delete node.__transition; - } - - function selection_interrupt(name) { - return this.each(function() { - interrupt(this, name); - }); - } - - function tweenRemove(id, name) { - var tween0, tween1; - return function() { - var schedule = set(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = tween0 = tween; - for (var i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1 = tween1.slice(); - tween1.splice(i, 1); - break; - } - } - } - - schedule.tween = tween1; - }; - } - - function tweenFunction(id, name, value) { - var tween0, tween1; - if (typeof value !== "function") throw new Error; - return function() { - var schedule = set(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = (tween0 = tween).slice(); - for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1[i] = t; - break; - } - } - if (i === n) tween1.push(t); - } - - schedule.tween = tween1; - }; - } - - function transition_tween(name, value) { - var id = this._id; - - name += ""; - - if (arguments.length < 2) { - var tween = get(this.node(), id).tween; - for (var i = 0, n = tween.length, t; i < n; ++i) { - if ((t = tween[i]).name === name) { - return t.value; - } - } - return null; - } - - return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value)); - } - - function tweenValue(transition, name, value) { - var id = transition._id; - - transition.each(function() { - var schedule = set(this, id); - (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); - }); - - return function(node) { - return get(node, id).value[name]; - }; - } - - function interpolate$1(a, b) { - var c; - return (typeof b === "number" ? interpolateNumber - : b instanceof color ? interpolateRgb - : (c = color(b)) ? (b = c, interpolateRgb) - : interpolateString)(a, b); - } - - function attrRemove(name) { - return function() { - this.removeAttribute(name); - }; - } - - function attrRemoveNS(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; - } - - function attrConstant(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttribute(name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; - } - - function attrConstantNS(fullname, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttributeNS(fullname.space, fullname.local); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; - } - - function attrFunction(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttribute(name); - string0 = this.getAttribute(name); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; - } - - function attrFunctionNS(fullname, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); - string0 = this.getAttributeNS(fullname.space, fullname.local); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; - } - - function transition_attr(name, value) { - var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate$1; - return this.attrTween(name, typeof value === "function" - ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, "attr." + name, value)) - : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname) - : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value)); - } - - function attrInterpolate(name, i) { - return function(t) { - this.setAttribute(name, i.call(this, t)); - }; - } - - function attrInterpolateNS(fullname, i) { - return function(t) { - this.setAttributeNS(fullname.space, fullname.local, i.call(this, t)); - }; - } - - function attrTweenNS(fullname, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i); - return t0; - } - tween._value = value; - return tween; - } - - function attrTween(name, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i); - return t0; - } - tween._value = value; - return tween; - } - - function transition_attrTween(name, value) { - var key = "attr." + name; - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - var fullname = namespace(name); - return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); - } - - function delayFunction(id, value) { - return function() { - init(this, id).delay = +value.apply(this, arguments); - }; - } - - function delayConstant(id, value) { - return value = +value, function() { - init(this, id).delay = value; - }; - } - - function transition_delay(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? delayFunction - : delayConstant)(id, value)) - : get(this.node(), id).delay; - } - - function durationFunction(id, value) { - return function() { - set(this, id).duration = +value.apply(this, arguments); - }; - } - - function durationConstant(id, value) { - return value = +value, function() { - set(this, id).duration = value; - }; - } - - function transition_duration(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? durationFunction - : durationConstant)(id, value)) - : get(this.node(), id).duration; - } - - function easeConstant(id, value) { - if (typeof value !== "function") throw new Error; - return function() { - set(this, id).ease = value; - }; - } - - function transition_ease(value) { - var id = this._id; - - return arguments.length - ? this.each(easeConstant(id, value)) - : get(this.node(), id).ease; - } - - function easeVarying(id, value) { - return function() { - var v = value.apply(this, arguments); - if (typeof v !== "function") throw new Error; - set(this, id).ease = v; - }; - } - - function transition_easeVarying(value) { - if (typeof value !== "function") throw new Error; - return this.each(easeVarying(this._id, value)); - } - - function transition_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Transition(subgroups, this._parents, this._name, this._id); - } - - function transition_merge(transition) { - if (transition._id !== this._id) throw new Error; - - for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Transition(merges, this._parents, this._name, this._id); - } - - function start(name) { - return (name + "").trim().split(/^|\s+/).every(function(t) { - var i = t.indexOf("."); - if (i >= 0) t = t.slice(0, i); - return !t || t === "start"; - }); - } - - function onFunction(id, name, listener) { - var on0, on1, sit = start(name) ? init : set; - return function() { - var schedule = sit(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener); - - schedule.on = on1; - }; - } - - function transition_on(name, listener) { - var id = this._id; - - return arguments.length < 2 - ? get(this.node(), id).on.on(name) - : this.each(onFunction(id, name, listener)); - } - - function removeFunction(id) { - return function() { - var parent = this.parentNode; - for (var i in this.__transition) if (+i !== id) return; - if (parent) parent.removeChild(this); - }; - } - - function transition_remove() { - return this.on("end.remove", removeFunction(this._id)); - } - - function transition_select(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - schedule(subgroup[i], name, id, i, subgroup, get(node, id)); - } - } - } - - return new Transition(subgroups, this._parents, name, id); - } - - function transition_selectAll(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) { - if (child = children[k]) { - schedule(child, name, id, k, children, inherit); - } - } - subgroups.push(children); - parents.push(node); - } - } - } - - return new Transition(subgroups, parents, name, id); - } - - var Selection = selection.prototype.constructor; - - function transition_selection() { - return new Selection(this._groups, this._parents); - } - - function styleNull(name, interpolate) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - string1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, string10 = string1); - }; - } - - function styleRemove(name) { - return function() { - this.style.removeProperty(name); - }; - } - - function styleConstant(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = styleValue(this, name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; - } - - function styleFunction(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - value1 = value(this), - string1 = value1 + ""; - if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; - } - - function styleMaybeRemove(id, name) { - var on0, on1, listener0, key = "style." + name, event = "end." + key, remove; - return function() { - var schedule = set(this, id), - on = schedule.on, - listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener); - - schedule.on = on1; - }; - } - - function transition_style(name, value, priority) { - var i = (name += "") === "transform" ? interpolateTransformCss : interpolate$1; - return value == null ? this - .styleTween(name, styleNull(name, i)) - .on("end.style." + name, styleRemove(name)) - : typeof value === "function" ? this - .styleTween(name, styleFunction(name, i, tweenValue(this, "style." + name, value))) - .each(styleMaybeRemove(this._id, name)) - : this - .styleTween(name, styleConstant(name, i, value), priority) - .on("end.style." + name, null); - } - - function styleInterpolate(name, i, priority) { - return function(t) { - this.style.setProperty(name, i.call(this, t), priority); - }; - } - - function styleTween(name, value, priority) { - var t, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority); - return t; - } - tween._value = value; - return tween; - } - - function transition_styleTween(name, value, priority) { - var key = "style." + (name += ""); - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); - } - - function textConstant(value) { - return function() { - this.textContent = value; - }; - } - - function textFunction(value) { - return function() { - var value1 = value(this); - this.textContent = value1 == null ? "" : value1; - }; - } - - function transition_text(value) { - return this.tween("text", typeof value === "function" - ? textFunction(tweenValue(this, "text", value)) - : textConstant(value == null ? "" : value + "")); - } - - function textInterpolate(i) { - return function(t) { - this.textContent = i.call(this, t); - }; - } - - function textTween(value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && textInterpolate(i); - return t0; - } - tween._value = value; - return tween; - } - - function transition_textTween(value) { - var key = "text"; - if (arguments.length < 1) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, textTween(value)); - } - - function transition_transition() { - var name = this._name, - id0 = this._id, - id1 = newId(); - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - var inherit = get(node, id0); - schedule(node, name, id1, i, group, { - time: inherit.time + inherit.delay + inherit.duration, - delay: 0, - duration: inherit.duration, - ease: inherit.ease - }); - } - } - } - - return new Transition(groups, this._parents, name, id1); - } - - function transition_end() { - var on0, on1, that = this, id = that._id, size = that.size(); - return new Promise(function(resolve, reject) { - var cancel = {value: reject}, - end = {value: function() { if (--size === 0) resolve(); }}; - - that.each(function() { - var schedule = set(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) { - on1 = (on0 = on).copy(); - on1._.cancel.push(cancel); - on1._.interrupt.push(cancel); - on1._.end.push(end); - } - - schedule.on = on1; - }); - - // The selection was empty, resolve end immediately - if (size === 0) resolve(); - }); - } - - var id = 0; - - function Transition(groups, parents, name, id) { - this._groups = groups; - this._parents = parents; - this._name = name; - this._id = id; - } - - function transition(name) { - return selection().transition(name); - } - - function newId() { - return ++id; - } - - var selection_prototype = selection.prototype; - - Transition.prototype = transition.prototype = { - constructor: Transition, - select: transition_select, - selectAll: transition_selectAll, - selectChild: selection_prototype.selectChild, - selectChildren: selection_prototype.selectChildren, - filter: transition_filter, - merge: transition_merge, - selection: transition_selection, - transition: transition_transition, - call: selection_prototype.call, - nodes: selection_prototype.nodes, - node: selection_prototype.node, - size: selection_prototype.size, - empty: selection_prototype.empty, - each: selection_prototype.each, - on: transition_on, - attr: transition_attr, - attrTween: transition_attrTween, - style: transition_style, - styleTween: transition_styleTween, - text: transition_text, - textTween: transition_textTween, - remove: transition_remove, - tween: transition_tween, - delay: transition_delay, - duration: transition_duration, - ease: transition_ease, - easeVarying: transition_easeVarying, - end: transition_end, - [Symbol.iterator]: selection_prototype[Symbol.iterator] - }; - - const linear$1 = t => +t; - - function quadIn(t) { - return t * t; - } - - function quadOut(t) { - return t * (2 - t); - } - - function quadInOut(t) { - return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2; - } - - function cubicIn(t) { - return t * t * t; - } - - function cubicOut(t) { - return --t * t * t + 1; - } - - function cubicInOut(t) { - return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; - } - - var exponent$1 = 3; - - var polyIn = (function custom(e) { - e = +e; - - function polyIn(t) { - return Math.pow(t, e); - } - - polyIn.exponent = custom; - - return polyIn; - })(exponent$1); - - var polyOut = (function custom(e) { - e = +e; - - function polyOut(t) { - return 1 - Math.pow(1 - t, e); - } - - polyOut.exponent = custom; - - return polyOut; - })(exponent$1); - - var polyInOut = (function custom(e) { - e = +e; - - function polyInOut(t) { - return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2; - } - - polyInOut.exponent = custom; - - return polyInOut; - })(exponent$1); - - var pi$4 = Math.PI, - halfPi$3 = pi$4 / 2; - - function sinIn(t) { - return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi$3); - } - - function sinOut(t) { - return Math.sin(t * halfPi$3); - } - - function sinInOut(t) { - return (1 - Math.cos(pi$4 * t)) / 2; - } - - // tpmt is two power minus ten times t scaled to [0,1] - function tpmt(x) { - return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494; - } - - function expIn(t) { - return tpmt(1 - +t); - } - - function expOut(t) { - return 1 - tpmt(t); - } - - function expInOut(t) { - return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2; - } - - function circleIn(t) { - return 1 - Math.sqrt(1 - t * t); - } - - function circleOut(t) { - return Math.sqrt(1 - --t * t); - } - - function circleInOut(t) { - return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2; - } - - var b1 = 4 / 11, - b2 = 6 / 11, - b3 = 8 / 11, - b4 = 3 / 4, - b5 = 9 / 11, - b6 = 10 / 11, - b7 = 15 / 16, - b8 = 21 / 22, - b9 = 63 / 64, - b0 = 1 / b1 / b1; - - function bounceIn(t) { - return 1 - bounceOut(1 - t); - } - - function bounceOut(t) { - return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9; - } - - function bounceInOut(t) { - return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2; - } - - var overshoot = 1.70158; - - var backIn = (function custom(s) { - s = +s; - - function backIn(t) { - return (t = +t) * t * (s * (t - 1) + t); - } - - backIn.overshoot = custom; - - return backIn; - })(overshoot); - - var backOut = (function custom(s) { - s = +s; - - function backOut(t) { - return --t * t * ((t + 1) * s + t) + 1; - } - - backOut.overshoot = custom; - - return backOut; - })(overshoot); - - var backInOut = (function custom(s) { - s = +s; - - function backInOut(t) { - return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2; - } - - backInOut.overshoot = custom; - - return backInOut; - })(overshoot); - - var tau$5 = 2 * Math.PI, - amplitude = 1, - period = 0.3; - - var elasticIn = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau$5); - - function elasticIn(t) { - return a * tpmt(-(--t)) * Math.sin((s - t) / p); - } - - elasticIn.amplitude = function(a) { return custom(a, p * tau$5); }; - elasticIn.period = function(p) { return custom(a, p); }; - - return elasticIn; - })(amplitude, period); - - var elasticOut = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau$5); - - function elasticOut(t) { - return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p); - } - - elasticOut.amplitude = function(a) { return custom(a, p * tau$5); }; - elasticOut.period = function(p) { return custom(a, p); }; - - return elasticOut; - })(amplitude, period); - - var elasticInOut = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau$5); - - function elasticInOut(t) { - return ((t = t * 2 - 1) < 0 - ? a * tpmt(-t) * Math.sin((s - t) / p) - : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2; - } - - elasticInOut.amplitude = function(a) { return custom(a, p * tau$5); }; - elasticInOut.period = function(p) { return custom(a, p); }; - - return elasticInOut; - })(amplitude, period); - - var defaultTiming = { - time: null, // Set on use. - delay: 0, - duration: 250, - ease: cubicInOut - }; - - function inherit(node, id) { - var timing; - while (!(timing = node.__transition) || !(timing = timing[id])) { - if (!(node = node.parentNode)) { - throw new Error(`transition ${id} not found`); - } - } - return timing; - } - - function selection_transition(name) { - var id, - timing; - - if (name instanceof Transition) { - id = name._id, name = name._name; - } else { - id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; - } - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - schedule(node, name, id, i, group, timing || inherit(node, id)); - } - } - } - - return new Transition(groups, this._parents, name, id); - } - - selection.prototype.interrupt = selection_interrupt; - selection.prototype.transition = selection_transition; - - var root = [null]; - - function active(node, name) { - var schedules = node.__transition, - schedule, - i; - - if (schedules) { - name = name == null ? null : name + ""; - for (i in schedules) { - if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) { - return new Transition([[node]], root, name, +i); - } - } - } - - return null; - } - - var constant$7 = x => () => x; - - function BrushEvent(type, { - sourceEvent, - target, - selection, - mode, - dispatch - }) { - Object.defineProperties(this, { - type: {value: type, enumerable: true, configurable: true}, - sourceEvent: {value: sourceEvent, enumerable: true, configurable: true}, - target: {value: target, enumerable: true, configurable: true}, - selection: {value: selection, enumerable: true, configurable: true}, - mode: {value: mode, enumerable: true, configurable: true}, - _: {value: dispatch} - }); - } - - function nopropagation$1(event) { - event.stopImmediatePropagation(); - } - - function noevent$1(event) { - event.preventDefault(); - event.stopImmediatePropagation(); - } - - var MODE_DRAG = {name: "drag"}, - MODE_SPACE = {name: "space"}, - MODE_HANDLE = {name: "handle"}, - MODE_CENTER = {name: "center"}; - - const {abs: abs$3, max: max$2, min: min$1} = Math; - - function number1(e) { - return [+e[0], +e[1]]; - } - - function number2(e) { - return [number1(e[0]), number1(e[1])]; - } - - var X$2 = { - name: "x", - handles: ["w", "e"].map(type), - input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; }, - output: function(xy) { return xy && [xy[0][0], xy[1][0]]; } - }; - - var Y$2 = { - name: "y", - handles: ["n", "s"].map(type), - input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; }, - output: function(xy) { return xy && [xy[0][1], xy[1][1]]; } - }; - - var XY = { - name: "xy", - handles: ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(type), - input: function(xy) { return xy == null ? null : number2(xy); }, - output: function(xy) { return xy; } - }; - - var cursors = { - overlay: "crosshair", - selection: "move", - n: "ns-resize", - e: "ew-resize", - s: "ns-resize", - w: "ew-resize", - nw: "nwse-resize", - ne: "nesw-resize", - se: "nwse-resize", - sw: "nesw-resize" - }; - - var flipX = { - e: "w", - w: "e", - nw: "ne", - ne: "nw", - se: "sw", - sw: "se" - }; - - var flipY = { - n: "s", - s: "n", - nw: "sw", - ne: "se", - se: "ne", - sw: "nw" - }; - - var signsX = { - overlay: +1, - selection: +1, - n: null, - e: +1, - s: null, - w: -1, - nw: -1, - ne: +1, - se: +1, - sw: -1 - }; - - var signsY = { - overlay: +1, - selection: +1, - n: -1, - e: null, - s: +1, - w: null, - nw: -1, - ne: -1, - se: +1, - sw: +1 - }; - - function type(t) { - return {type: t}; - } - - // Ignore right-click, since that should open the context menu. - function defaultFilter$1(event) { - return !event.ctrlKey && !event.button; - } - - function defaultExtent$1() { - var svg = this.ownerSVGElement || this; - if (svg.hasAttribute("viewBox")) { - svg = svg.viewBox.baseVal; - return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]]; - } - return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]]; - } - - function defaultTouchable$1() { - return navigator.maxTouchPoints || ("ontouchstart" in this); - } - - // Like d3.local, but with the name “__brush” rather than auto-generated. - function local(node) { - while (!node.__brush) if (!(node = node.parentNode)) return; - return node.__brush; - } - - function empty(extent) { - return extent[0][0] === extent[1][0] - || extent[0][1] === extent[1][1]; - } - - function brushSelection(node) { - var state = node.__brush; - return state ? state.dim.output(state.selection) : null; - } - - function brushX() { - return brush$1(X$2); - } - - function brushY() { - return brush$1(Y$2); - } - - function brush() { - return brush$1(XY); - } - - function brush$1(dim) { - var extent = defaultExtent$1, - filter = defaultFilter$1, - touchable = defaultTouchable$1, - keys = true, - listeners = dispatch("start", "brush", "end"), - handleSize = 6, - touchending; - - function brush(group) { - var overlay = group - .property("__brush", initialize) - .selectAll(".overlay") - .data([type("overlay")]); - - overlay.enter().append("rect") - .attr("class", "overlay") - .attr("pointer-events", "all") - .attr("cursor", cursors.overlay) - .merge(overlay) - .each(function() { - var extent = local(this).extent; - select(this) - .attr("x", extent[0][0]) - .attr("y", extent[0][1]) - .attr("width", extent[1][0] - extent[0][0]) - .attr("height", extent[1][1] - extent[0][1]); - }); - - group.selectAll(".selection") - .data([type("selection")]) - .enter().append("rect") - .attr("class", "selection") - .attr("cursor", cursors.selection) - .attr("fill", "#777") - .attr("fill-opacity", 0.3) - .attr("stroke", "#fff") - .attr("shape-rendering", "crispEdges"); - - var handle = group.selectAll(".handle") - .data(dim.handles, function(d) { return d.type; }); - - handle.exit().remove(); - - handle.enter().append("rect") - .attr("class", function(d) { return "handle handle--" + d.type; }) - .attr("cursor", function(d) { return cursors[d.type]; }); - - group - .each(redraw) - .attr("fill", "none") - .attr("pointer-events", "all") - .on("mousedown.brush", started) - .filter(touchable) - .on("touchstart.brush", started) - .on("touchmove.brush", touchmoved) - .on("touchend.brush touchcancel.brush", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - brush.move = function(group, selection, event) { - if (group.tween) { - group - .on("start.brush", function(event) { emitter(this, arguments).beforestart().start(event); }) - .on("interrupt.brush end.brush", function(event) { emitter(this, arguments).end(event); }) - .tween("brush", function() { - var that = this, - state = that.__brush, - emit = emitter(that, arguments), - selection0 = state.selection, - selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent), - i = interpolate$2(selection0, selection1); - - function tween(t) { - state.selection = t === 1 && selection1 === null ? null : i(t); - redraw.call(that); - emit.brush(); - } - - return selection0 !== null && selection1 !== null ? tween : tween(1); - }); - } else { - group - .each(function() { - var that = this, - args = arguments, - state = that.__brush, - selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent), - emit = emitter(that, args).beforestart(); - - interrupt(that); - state.selection = selection1 === null ? null : selection1; - redraw.call(that); - emit.start(event).brush(event).end(event); - }); - } - }; - - brush.clear = function(group, event) { - brush.move(group, null, event); - }; - - function redraw() { - var group = select(this), - selection = local(this).selection; - - if (selection) { - group.selectAll(".selection") - .style("display", null) - .attr("x", selection[0][0]) - .attr("y", selection[0][1]) - .attr("width", selection[1][0] - selection[0][0]) - .attr("height", selection[1][1] - selection[0][1]); - - group.selectAll(".handle") - .style("display", null) - .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; }) - .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; }) - .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; }) - .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; }); - } - - else { - group.selectAll(".selection,.handle") - .style("display", "none") - .attr("x", null) - .attr("y", null) - .attr("width", null) - .attr("height", null); - } - } - - function emitter(that, args, clean) { - var emit = that.__brush.emitter; - return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean); - } - - function Emitter(that, args, clean) { - this.that = that; - this.args = args; - this.state = that.__brush; - this.active = 0; - this.clean = clean; - } - - Emitter.prototype = { - beforestart: function() { - if (++this.active === 1) this.state.emitter = this, this.starting = true; - return this; - }, - start: function(event, mode) { - if (this.starting) this.starting = false, this.emit("start", event, mode); - else this.emit("brush", event); - return this; - }, - brush: function(event, mode) { - this.emit("brush", event, mode); - return this; - }, - end: function(event, mode) { - if (--this.active === 0) delete this.state.emitter, this.emit("end", event, mode); - return this; - }, - emit: function(type, event, mode) { - var d = select(this.that).datum(); - listeners.call( - type, - this.that, - new BrushEvent(type, { - sourceEvent: event, - target: brush, - selection: dim.output(this.state.selection), - mode, - dispatch: listeners - }), - d - ); - } - }; - - function started(event) { - if (touchending && !event.touches) return; - if (!filter.apply(this, arguments)) return; - - var that = this, - type = event.target.__data__.type, - mode = (keys && event.metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE), - signX = dim === Y$2 ? null : signsX[type], - signY = dim === X$2 ? null : signsY[type], - state = local(that), - extent = state.extent, - selection = state.selection, - W = extent[0][0], w0, w1, - N = extent[0][1], n0, n1, - E = extent[1][0], e0, e1, - S = extent[1][1], s0, s1, - dx = 0, - dy = 0, - moving, - shifting = signX && signY && keys && event.shiftKey, - lockX, - lockY, - points = Array.from(event.touches || [event], t => { - const i = t.identifier; - t = pointer(t, that); - t.point0 = t.slice(); - t.identifier = i; - return t; - }); - - interrupt(that); - var emit = emitter(that, arguments, true).beforestart(); - - if (type === "overlay") { - if (selection) moving = true; - const pts = [points[0], points[1] || points[0]]; - state.selection = selection = [[ - w0 = dim === Y$2 ? W : min$1(pts[0][0], pts[1][0]), - n0 = dim === X$2 ? N : min$1(pts[0][1], pts[1][1]) - ], [ - e0 = dim === Y$2 ? E : max$2(pts[0][0], pts[1][0]), - s0 = dim === X$2 ? S : max$2(pts[0][1], pts[1][1]) - ]]; - if (points.length > 1) move(event); - } else { - w0 = selection[0][0]; - n0 = selection[0][1]; - e0 = selection[1][0]; - s0 = selection[1][1]; - } - - w1 = w0; - n1 = n0; - e1 = e0; - s1 = s0; - - var group = select(that) - .attr("pointer-events", "none"); - - var overlay = group.selectAll(".overlay") - .attr("cursor", cursors[type]); - - if (event.touches) { - emit.moved = moved; - emit.ended = ended; - } else { - var view = select(event.view) - .on("mousemove.brush", moved, true) - .on("mouseup.brush", ended, true); - if (keys) view - .on("keydown.brush", keydowned, true) - .on("keyup.brush", keyupped, true); - - dragDisable(event.view); - } - - redraw.call(that); - emit.start(event, mode.name); - - function moved(event) { - for (const p of event.changedTouches || [event]) { - for (const d of points) - if (d.identifier === p.identifier) d.cur = pointer(p, that); - } - if (shifting && !lockX && !lockY && points.length === 1) { - const point = points[0]; - if (abs$3(point.cur[0] - point[0]) > abs$3(point.cur[1] - point[1])) - lockY = true; - else - lockX = true; - } - for (const point of points) - if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1]; - moving = true; - noevent$1(event); - move(event); - } - - function move(event) { - const point = points[0], point0 = point.point0; - var t; - - dx = point[0] - point0[0]; - dy = point[1] - point0[1]; - - switch (mode) { - case MODE_SPACE: - case MODE_DRAG: { - if (signX) dx = max$2(W - w0, min$1(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx; - if (signY) dy = max$2(N - n0, min$1(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy; - break; - } - case MODE_HANDLE: { - if (points[1]) { - if (signX) w1 = max$2(W, min$1(E, points[0][0])), e1 = max$2(W, min$1(E, points[1][0])), signX = 1; - if (signY) n1 = max$2(N, min$1(S, points[0][1])), s1 = max$2(N, min$1(S, points[1][1])), signY = 1; - } else { - if (signX < 0) dx = max$2(W - w0, min$1(E - w0, dx)), w1 = w0 + dx, e1 = e0; - else if (signX > 0) dx = max$2(W - e0, min$1(E - e0, dx)), w1 = w0, e1 = e0 + dx; - if (signY < 0) dy = max$2(N - n0, min$1(S - n0, dy)), n1 = n0 + dy, s1 = s0; - else if (signY > 0) dy = max$2(N - s0, min$1(S - s0, dy)), n1 = n0, s1 = s0 + dy; - } - break; - } - case MODE_CENTER: { - if (signX) w1 = max$2(W, min$1(E, w0 - dx * signX)), e1 = max$2(W, min$1(E, e0 + dx * signX)); - if (signY) n1 = max$2(N, min$1(S, n0 - dy * signY)), s1 = max$2(N, min$1(S, s0 + dy * signY)); - break; - } - } - - if (e1 < w1) { - signX *= -1; - t = w0, w0 = e0, e0 = t; - t = w1, w1 = e1, e1 = t; - if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]); - } - - if (s1 < n1) { - signY *= -1; - t = n0, n0 = s0, s0 = t; - t = n1, n1 = s1, s1 = t; - if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]); - } - - if (state.selection) selection = state.selection; // May be set by brush.move! - if (lockX) w1 = selection[0][0], e1 = selection[1][0]; - if (lockY) n1 = selection[0][1], s1 = selection[1][1]; - - if (selection[0][0] !== w1 - || selection[0][1] !== n1 - || selection[1][0] !== e1 - || selection[1][1] !== s1) { - state.selection = [[w1, n1], [e1, s1]]; - redraw.call(that); - emit.brush(event, mode.name); - } - } - - function ended(event) { - nopropagation$1(event); - if (event.touches) { - if (event.touches.length) return; - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - } else { - yesdrag(event.view, moving); - view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null); - } - group.attr("pointer-events", "all"); - overlay.attr("cursor", cursors.overlay); - if (state.selection) selection = state.selection; // May be set by brush.move (on start)! - if (empty(selection)) state.selection = null, redraw.call(that); - emit.end(event, mode.name); - } - - function keydowned(event) { - switch (event.keyCode) { - case 16: { // SHIFT - shifting = signX && signY; - break; - } - case 18: { // ALT - if (mode === MODE_HANDLE) { - if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; - if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; - mode = MODE_CENTER; - move(event); - } - break; - } - case 32: { // SPACE; takes priority over ALT - if (mode === MODE_HANDLE || mode === MODE_CENTER) { - if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx; - if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy; - mode = MODE_SPACE; - overlay.attr("cursor", cursors.selection); - move(event); - } - break; - } - default: return; - } - noevent$1(event); - } - - function keyupped(event) { - switch (event.keyCode) { - case 16: { // SHIFT - if (shifting) { - lockX = lockY = shifting = false; - move(event); - } - break; - } - case 18: { // ALT - if (mode === MODE_CENTER) { - if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; - if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; - mode = MODE_HANDLE; - move(event); - } - break; - } - case 32: { // SPACE - if (mode === MODE_SPACE) { - if (event.altKey) { - if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; - if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; - mode = MODE_CENTER; - } else { - if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; - if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; - mode = MODE_HANDLE; - } - overlay.attr("cursor", cursors[type]); - move(event); - } - break; - } - default: return; - } - noevent$1(event); - } - } - - function touchmoved(event) { - emitter(this, arguments).moved(event); - } - - function touchended(event) { - emitter(this, arguments).ended(event); - } - - function initialize() { - var state = this.__brush || {selection: null}; - state.extent = number2(extent.apply(this, arguments)); - state.dim = dim; - return state; - } - - brush.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant$7(number2(_)), brush) : extent; - }; - - brush.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$7(!!_), brush) : filter; - }; - - brush.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$7(!!_), brush) : touchable; - }; - - brush.handleSize = function(_) { - return arguments.length ? (handleSize = +_, brush) : handleSize; - }; - - brush.keyModifiers = function(_) { - return arguments.length ? (keys = !!_, brush) : keys; - }; - - brush.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? brush : value; - }; - - return brush; - } - - var abs$2 = Math.abs; - var cos$2 = Math.cos; - var sin$2 = Math.sin; - var pi$3 = Math.PI; - var halfPi$2 = pi$3 / 2; - var tau$4 = pi$3 * 2; - var max$1 = Math.max; - var epsilon$5 = 1e-12; - - function range$1(i, j) { - return Array.from({length: j - i}, (_, k) => i + k); - } - - function compareValue(compare) { - return function(a, b) { - return compare( - a.source.value + a.target.value, - b.source.value + b.target.value - ); - }; - } - - function chord() { - return chord$1(false, false); - } - - function chordTranspose() { - return chord$1(false, true); - } - - function chordDirected() { - return chord$1(true, false); - } - - function chord$1(directed, transpose) { - var padAngle = 0, - sortGroups = null, - sortSubgroups = null, - sortChords = null; - - function chord(matrix) { - var n = matrix.length, - groupSums = new Array(n), - groupIndex = range$1(0, n), - chords = new Array(n * n), - groups = new Array(n), - k = 0, dx; - - matrix = Float64Array.from({length: n * n}, transpose - ? (_, i) => matrix[i % n][i / n | 0] - : (_, i) => matrix[i / n | 0][i % n]); - - // Compute the scaling factor from value to angle in [0, 2pi]. - for (let i = 0; i < n; ++i) { - let x = 0; - for (let j = 0; j < n; ++j) x += matrix[i * n + j] + directed * matrix[j * n + i]; - k += groupSums[i] = x; - } - k = max$1(0, tau$4 - padAngle * n) / k; - dx = k ? padAngle : tau$4 / n; - - // Compute the angles for each group and constituent chord. - { - let x = 0; - if (sortGroups) groupIndex.sort((a, b) => sortGroups(groupSums[a], groupSums[b])); - for (const i of groupIndex) { - const x0 = x; - if (directed) { - const subgroupIndex = range$1(~n + 1, n).filter(j => j < 0 ? matrix[~j * n + i] : matrix[i * n + j]); - if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(a < 0 ? -matrix[~a * n + i] : matrix[i * n + a], b < 0 ? -matrix[~b * n + i] : matrix[i * n + b])); - for (const j of subgroupIndex) { - if (j < 0) { - const chord = chords[~j * n + i] || (chords[~j * n + i] = {source: null, target: null}); - chord.target = {index: i, startAngle: x, endAngle: x += matrix[~j * n + i] * k, value: matrix[~j * n + i]}; - } else { - const chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null}); - chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]}; - } - } - groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]}; - } else { - const subgroupIndex = range$1(0, n).filter(j => matrix[i * n + j] || matrix[j * n + i]); - if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(matrix[i * n + a], matrix[i * n + b])); - for (const j of subgroupIndex) { - let chord; - if (i < j) { - chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null}); - chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]}; - } else { - chord = chords[j * n + i] || (chords[j * n + i] = {source: null, target: null}); - chord.target = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]}; - if (i === j) chord.source = chord.target; - } - if (chord.source && chord.target && chord.source.value < chord.target.value) { - const source = chord.source; - chord.source = chord.target; - chord.target = source; - } - } - groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]}; - } - x += dx; - } - } - - // Remove empty chords. - chords = Object.values(chords); - chords.groups = groups; - return sortChords ? chords.sort(sortChords) : chords; - } - - chord.padAngle = function(_) { - return arguments.length ? (padAngle = max$1(0, _), chord) : padAngle; - }; - - chord.sortGroups = function(_) { - return arguments.length ? (sortGroups = _, chord) : sortGroups; - }; - - chord.sortSubgroups = function(_) { - return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups; - }; - - chord.sortChords = function(_) { - return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._; - }; - - return chord; - } - - const pi$2 = Math.PI, - tau$3 = 2 * pi$2, - epsilon$4 = 1e-6, - tauEpsilon = tau$3 - epsilon$4; - - function append$1(strings) { - this._ += strings[0]; - for (let i = 1, n = strings.length; i < n; ++i) { - this._ += arguments[i] + strings[i]; - } - } - - function appendRound$1(digits) { - let d = Math.floor(digits); - if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`); - if (d > 15) return append$1; - const k = 10 ** d; - return function(strings) { - this._ += strings[0]; - for (let i = 1, n = strings.length; i < n; ++i) { - this._ += Math.round(arguments[i] * k) / k + strings[i]; - } - }; - } - - let Path$1 = class Path { - constructor(digits) { - this._x0 = this._y0 = // start of current subpath - this._x1 = this._y1 = null; // end of current subpath - this._ = ""; - this._append = digits == null ? append$1 : appendRound$1(digits); - } - moveTo(x, y) { - this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`; - } - closePath() { - if (this._x1 !== null) { - this._x1 = this._x0, this._y1 = this._y0; - this._append`Z`; - } - } - lineTo(x, y) { - this._append`L${this._x1 = +x},${this._y1 = +y}`; - } - quadraticCurveTo(x1, y1, x, y) { - this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`; - } - bezierCurveTo(x1, y1, x2, y2, x, y) { - this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`; - } - arcTo(x1, y1, x2, y2, r) { - x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; - - // Is the radius negative? Error. - if (r < 0) throw new Error(`negative radius: ${r}`); - - let x0 = this._x1, - y0 = this._y1, - x21 = x2 - x1, - y21 = y2 - y1, - x01 = x0 - x1, - y01 = y0 - y1, - l01_2 = x01 * x01 + y01 * y01; - - // Is this path empty? Move to (x1,y1). - if (this._x1 === null) { - this._append`M${this._x1 = x1},${this._y1 = y1}`; - } - - // Or, is (x1,y1) coincident with (x0,y0)? Do nothing. - else if (!(l01_2 > epsilon$4)); - - // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? - // Equivalently, is (x1,y1) coincident with (x2,y2)? - // Or, is the radius zero? Line to (x1,y1). - else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$4) || !r) { - this._append`L${this._x1 = x1},${this._y1 = y1}`; - } - - // Otherwise, draw an arc! - else { - let x20 = x2 - x0, - y20 = y2 - y0, - l21_2 = x21 * x21 + y21 * y21, - l20_2 = x20 * x20 + y20 * y20, - l21 = Math.sqrt(l21_2), - l01 = Math.sqrt(l01_2), - l = r * Math.tan((pi$2 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), - t01 = l / l01, - t21 = l / l21; - - // If the start tangent is not coincident with (x0,y0), line to. - if (Math.abs(t01 - 1) > epsilon$4) { - this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`; - } - - this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`; - } - } - arc(x, y, r, a0, a1, ccw) { - x = +x, y = +y, r = +r, ccw = !!ccw; - - // Is the radius negative? Error. - if (r < 0) throw new Error(`negative radius: ${r}`); - - let dx = r * Math.cos(a0), - dy = r * Math.sin(a0), - x0 = x + dx, - y0 = y + dy, - cw = 1 ^ ccw, - da = ccw ? a0 - a1 : a1 - a0; - - // Is this path empty? Move to (x0,y0). - if (this._x1 === null) { - this._append`M${x0},${y0}`; - } - - // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). - else if (Math.abs(this._x1 - x0) > epsilon$4 || Math.abs(this._y1 - y0) > epsilon$4) { - this._append`L${x0},${y0}`; - } - - // Is this arc empty? We’re done. - if (!r) return; - - // Does the angle go the wrong way? Flip the direction. - if (da < 0) da = da % tau$3 + tau$3; - - // Is this a complete circle? Draw two arcs to complete the circle. - if (da > tauEpsilon) { - this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`; - } - - // Is this arc non-empty? Draw an arc! - else if (da > epsilon$4) { - this._append`A${r},${r},0,${+(da >= pi$2)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`; - } - } - rect(x, y, w, h) { - this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`; - } - toString() { - return this._; - } - }; - - function path() { - return new Path$1; - } - - // Allow instanceof d3.path - path.prototype = Path$1.prototype; - - function pathRound(digits = 3) { - return new Path$1(+digits); - } - - var slice$2 = Array.prototype.slice; - - function constant$6(x) { - return function() { - return x; - }; - } - - function defaultSource$1(d) { - return d.source; - } - - function defaultTarget(d) { - return d.target; - } - - function defaultRadius$1(d) { - return d.radius; - } - - function defaultStartAngle(d) { - return d.startAngle; - } - - function defaultEndAngle(d) { - return d.endAngle; - } - - function defaultPadAngle() { - return 0; - } - - function defaultArrowheadRadius() { - return 10; - } - - function ribbon(headRadius) { - var source = defaultSource$1, - target = defaultTarget, - sourceRadius = defaultRadius$1, - targetRadius = defaultRadius$1, - startAngle = defaultStartAngle, - endAngle = defaultEndAngle, - padAngle = defaultPadAngle, - context = null; - - function ribbon() { - var buffer, - s = source.apply(this, arguments), - t = target.apply(this, arguments), - ap = padAngle.apply(this, arguments) / 2, - argv = slice$2.call(arguments), - sr = +sourceRadius.apply(this, (argv[0] = s, argv)), - sa0 = startAngle.apply(this, argv) - halfPi$2, - sa1 = endAngle.apply(this, argv) - halfPi$2, - tr = +targetRadius.apply(this, (argv[0] = t, argv)), - ta0 = startAngle.apply(this, argv) - halfPi$2, - ta1 = endAngle.apply(this, argv) - halfPi$2; - - if (!context) context = buffer = path(); - - if (ap > epsilon$5) { - if (abs$2(sa1 - sa0) > ap * 2 + epsilon$5) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap); - else sa0 = sa1 = (sa0 + sa1) / 2; - if (abs$2(ta1 - ta0) > ap * 2 + epsilon$5) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap); - else ta0 = ta1 = (ta0 + ta1) / 2; - } - - context.moveTo(sr * cos$2(sa0), sr * sin$2(sa0)); - context.arc(0, 0, sr, sa0, sa1); - if (sa0 !== ta0 || sa1 !== ta1) { - if (headRadius) { - var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2; - context.quadraticCurveTo(0, 0, tr2 * cos$2(ta0), tr2 * sin$2(ta0)); - context.lineTo(tr * cos$2(ta2), tr * sin$2(ta2)); - context.lineTo(tr2 * cos$2(ta1), tr2 * sin$2(ta1)); - } else { - context.quadraticCurveTo(0, 0, tr * cos$2(ta0), tr * sin$2(ta0)); - context.arc(0, 0, tr, ta0, ta1); - } - } - context.quadraticCurveTo(0, 0, sr * cos$2(sa0), sr * sin$2(sa0)); - context.closePath(); - - if (buffer) return context = null, buffer + "" || null; - } - - if (headRadius) ribbon.headRadius = function(_) { - return arguments.length ? (headRadius = typeof _ === "function" ? _ : constant$6(+_), ribbon) : headRadius; - }; - - ribbon.radius = function(_) { - return arguments.length ? (sourceRadius = targetRadius = typeof _ === "function" ? _ : constant$6(+_), ribbon) : sourceRadius; - }; - - ribbon.sourceRadius = function(_) { - return arguments.length ? (sourceRadius = typeof _ === "function" ? _ : constant$6(+_), ribbon) : sourceRadius; - }; - - ribbon.targetRadius = function(_) { - return arguments.length ? (targetRadius = typeof _ === "function" ? _ : constant$6(+_), ribbon) : targetRadius; - }; - - ribbon.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$6(+_), ribbon) : startAngle; - }; - - ribbon.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$6(+_), ribbon) : endAngle; - }; - - ribbon.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$6(+_), ribbon) : padAngle; - }; - - ribbon.source = function(_) { - return arguments.length ? (source = _, ribbon) : source; - }; - - ribbon.target = function(_) { - return arguments.length ? (target = _, ribbon) : target; - }; - - ribbon.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), ribbon) : context; - }; - - return ribbon; - } - - function ribbon$1() { - return ribbon(); - } - - function ribbonArrow() { - return ribbon(defaultArrowheadRadius); - } - - var array$2 = Array.prototype; - - var slice$1 = array$2.slice; - - function ascending$1(a, b) { - return a - b; - } - - function area$3(ring) { - var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1]; - while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1]; - return area; - } - - var constant$5 = x => () => x; - - function contains$2(ring, hole) { - var i = -1, n = hole.length, c; - while (++i < n) if (c = ringContains(ring, hole[i])) return c; - return 0; - } - - function ringContains(ring, point) { - var x = point[0], y = point[1], contains = -1; - for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) { - var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1]; - if (segmentContains(pi, pj, point)) return 0; - if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains; - } - return contains; - } - - function segmentContains(a, b, c) { - var i; return collinear$1(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]); - } - - function collinear$1(a, b, c) { - return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]); - } - - function within(p, q, r) { - return p <= q && q <= r || r <= q && q <= p; - } - - function noop$2() {} - - var cases = [ - [], - [[[1.0, 1.5], [0.5, 1.0]]], - [[[1.5, 1.0], [1.0, 1.5]]], - [[[1.5, 1.0], [0.5, 1.0]]], - [[[1.0, 0.5], [1.5, 1.0]]], - [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], - [[[1.0, 0.5], [1.0, 1.5]]], - [[[1.0, 0.5], [0.5, 1.0]]], - [[[0.5, 1.0], [1.0, 0.5]]], - [[[1.0, 1.5], [1.0, 0.5]]], - [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], - [[[1.5, 1.0], [1.0, 0.5]]], - [[[0.5, 1.0], [1.5, 1.0]]], - [[[1.0, 1.5], [1.5, 1.0]]], - [[[0.5, 1.0], [1.0, 1.5]]], - [] - ]; - - function Contours() { - var dx = 1, - dy = 1, - threshold = thresholdSturges, - smooth = smoothLinear; - - function contours(values) { - var tz = threshold(values); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - const e = extent$1(values, finite); - tz = ticks(...nice$1(e[0], e[1], tz), tz); - while (tz[tz.length - 1] >= e[1]) tz.pop(); - while (tz[1] < e[0]) tz.shift(); - } else { - tz = tz.slice().sort(ascending$1); - } - - return tz.map(value => contour(values, value)); - } - - // Accumulate, smooth contour rings, assign holes to exterior rings. - // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js - function contour(values, value) { - const v = value == null ? NaN : +value; - if (isNaN(v)) throw new Error(`invalid value: ${value}`); - - var polygons = [], - holes = []; - - isorings(values, v, function(ring) { - smooth(ring, values, v); - if (area$3(ring) > 0) polygons.push([ring]); - else holes.push(ring); - }); - - holes.forEach(function(hole) { - for (var i = 0, n = polygons.length, polygon; i < n; ++i) { - if (contains$2((polygon = polygons[i])[0], hole) !== -1) { - polygon.push(hole); - return; - } - } - }); - - return { - type: "MultiPolygon", - value: value, - coordinates: polygons - }; - } - - // Marching squares with isolines stitched into rings. - // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js - function isorings(values, value, callback) { - var fragmentByStart = new Array, - fragmentByEnd = new Array, - x, y, t0, t1, t2, t3; - - // Special case for the first row (y = -1, t2 = t3 = 0). - x = y = -1; - t1 = above(values[0], value); - cases[t1 << 1].forEach(stitch); - while (++x < dx - 1) { - t0 = t1, t1 = above(values[x + 1], value); - cases[t0 | t1 << 1].forEach(stitch); - } - cases[t1 << 0].forEach(stitch); - - // General case for the intermediate rows. - while (++y < dy - 1) { - x = -1; - t1 = above(values[y * dx + dx], value); - t2 = above(values[y * dx], value); - cases[t1 << 1 | t2 << 2].forEach(stitch); - while (++x < dx - 1) { - t0 = t1, t1 = above(values[y * dx + dx + x + 1], value); - t3 = t2, t2 = above(values[y * dx + x + 1], value); - cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch); - } - cases[t1 | t2 << 3].forEach(stitch); - } - - // Special case for the last row (y = dy - 1, t0 = t1 = 0). - x = -1; - t2 = values[y * dx] >= value; - cases[t2 << 2].forEach(stitch); - while (++x < dx - 1) { - t3 = t2, t2 = above(values[y * dx + x + 1], value); - cases[t2 << 2 | t3 << 3].forEach(stitch); - } - cases[t2 << 3].forEach(stitch); - - function stitch(line) { - var start = [line[0][0] + x, line[0][1] + y], - end = [line[1][0] + x, line[1][1] + y], - startIndex = index(start), - endIndex = index(end), - f, g; - if (f = fragmentByEnd[startIndex]) { - if (g = fragmentByStart[endIndex]) { - delete fragmentByEnd[f.end]; - delete fragmentByStart[g.start]; - if (f === g) { - f.ring.push(end); - callback(f.ring); - } else { - fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)}; - } - } else { - delete fragmentByEnd[f.end]; - f.ring.push(end); - fragmentByEnd[f.end = endIndex] = f; - } - } else if (f = fragmentByStart[endIndex]) { - if (g = fragmentByEnd[startIndex]) { - delete fragmentByStart[f.start]; - delete fragmentByEnd[g.end]; - if (f === g) { - f.ring.push(end); - callback(f.ring); - } else { - fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)}; - } - } else { - delete fragmentByStart[f.start]; - f.ring.unshift(start); - fragmentByStart[f.start = startIndex] = f; - } - } else { - fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]}; - } - } - } - - function index(point) { - return point[0] * 2 + point[1] * (dx + 1) * 4; - } - - function smoothLinear(ring, values, value) { - ring.forEach(function(point) { - var x = point[0], - y = point[1], - xt = x | 0, - yt = y | 0, - v1 = valid(values[yt * dx + xt]); - if (x > 0 && x < dx && xt === x) { - point[0] = smooth1(x, valid(values[yt * dx + xt - 1]), v1, value); - } - if (y > 0 && y < dy && yt === y) { - point[1] = smooth1(y, valid(values[(yt - 1) * dx + xt]), v1, value); - } - }); - } - - contours.contour = contour; - - contours.size = function(_) { - if (!arguments.length) return [dx, dy]; - var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]); - if (!(_0 >= 0 && _1 >= 0)) throw new Error("invalid size"); - return dx = _0, dy = _1, contours; - }; - - contours.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$5(slice$1.call(_)) : constant$5(_), contours) : threshold; - }; - - contours.smooth = function(_) { - return arguments.length ? (smooth = _ ? smoothLinear : noop$2, contours) : smooth === smoothLinear; - }; - - return contours; - } - - // When computing the extent, ignore infinite values (as well as invalid ones). - function finite(x) { - return isFinite(x) ? x : NaN; - } - - // Is the (possibly invalid) x greater than or equal to the (known valid) value? - // Treat any invalid value as below negative infinity. - function above(x, value) { - return x == null ? false : +x >= value; - } - - // During smoothing, treat any invalid value as negative infinity. - function valid(v) { - return v == null || isNaN(v = +v) ? -Infinity : v; - } - - function smooth1(x, v0, v1, value) { - const a = value - v0; - const b = v1 - v0; - const d = isFinite(a) || isFinite(b) ? a / b : Math.sign(a) / Math.sign(b); - return isNaN(d) ? x : x + d - 0.5; - } - - function defaultX$1(d) { - return d[0]; - } - - function defaultY$1(d) { - return d[1]; - } - - function defaultWeight() { - return 1; - } - - function density() { - var x = defaultX$1, - y = defaultY$1, - weight = defaultWeight, - dx = 960, - dy = 500, - r = 20, // blur radius - k = 2, // log2(grid cell size) - o = r * 3, // grid offset, to pad for blur - n = (dx + o * 2) >> k, // grid width - m = (dy + o * 2) >> k, // grid height - threshold = constant$5(20); - - function grid(data) { - var values = new Float32Array(n * m), - pow2k = Math.pow(2, -k), - i = -1; - - for (const d of data) { - var xi = (x(d, ++i, data) + o) * pow2k, - yi = (y(d, i, data) + o) * pow2k, - wi = +weight(d, i, data); - if (wi && xi >= 0 && xi < n && yi >= 0 && yi < m) { - var x0 = Math.floor(xi), - y0 = Math.floor(yi), - xt = xi - x0 - 0.5, - yt = yi - y0 - 0.5; - values[x0 + y0 * n] += (1 - xt) * (1 - yt) * wi; - values[x0 + 1 + y0 * n] += xt * (1 - yt) * wi; - values[x0 + 1 + (y0 + 1) * n] += xt * yt * wi; - values[x0 + (y0 + 1) * n] += (1 - xt) * yt * wi; - } - } - - blur2({data: values, width: n, height: m}, r * pow2k); - return values; - } - - function density(data) { - var values = grid(data), - tz = threshold(values), - pow4k = Math.pow(2, 2 * k); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - tz = ticks(Number.MIN_VALUE, max$3(values) / pow4k, tz); - } - - return Contours() - .size([n, m]) - .thresholds(tz.map(d => d * pow4k)) - (values) - .map((c, i) => (c.value = +tz[i], transform(c))); - } - - density.contours = function(data) { - var values = grid(data), - contours = Contours().size([n, m]), - pow4k = Math.pow(2, 2 * k), - contour = value => { - value = +value; - var c = transform(contours.contour(values, value * pow4k)); - c.value = value; // preserve exact threshold value - return c; - }; - Object.defineProperty(contour, "max", {get: () => max$3(values) / pow4k}); - return contour; - }; - - function transform(geometry) { - geometry.coordinates.forEach(transformPolygon); - return geometry; - } - - function transformPolygon(coordinates) { - coordinates.forEach(transformRing); - } - - function transformRing(coordinates) { - coordinates.forEach(transformPoint); - } - - // TODO Optimize. - function transformPoint(coordinates) { - coordinates[0] = coordinates[0] * Math.pow(2, k) - o; - coordinates[1] = coordinates[1] * Math.pow(2, k) - o; - } - - function resize() { - o = r * 3; - n = (dx + o * 2) >> k; - m = (dy + o * 2) >> k; - return density; - } - - density.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$5(+_), density) : x; - }; - - density.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$5(+_), density) : y; - }; - - density.weight = function(_) { - return arguments.length ? (weight = typeof _ === "function" ? _ : constant$5(+_), density) : weight; - }; - - density.size = function(_) { - if (!arguments.length) return [dx, dy]; - var _0 = +_[0], _1 = +_[1]; - if (!(_0 >= 0 && _1 >= 0)) throw new Error("invalid size"); - return dx = _0, dy = _1, resize(); - }; - - density.cellSize = function(_) { - if (!arguments.length) return 1 << k; - if (!((_ = +_) >= 1)) throw new Error("invalid cell size"); - return k = Math.floor(Math.log(_) / Math.LN2), resize(); - }; - - density.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$5(slice$1.call(_)) : constant$5(_), density) : threshold; - }; - - density.bandwidth = function(_) { - if (!arguments.length) return Math.sqrt(r * (r + 1)); - if (!((_ = +_) >= 0)) throw new Error("invalid bandwidth"); - return r = (Math.sqrt(4 * _ * _ + 1) - 1) / 2, resize(); - }; - - return density; - } - - const epsilon$3 = 1.1102230246251565e-16; - const splitter = 134217729; - const resulterrbound = (3 + 8 * epsilon$3) * epsilon$3; - - // fast_expansion_sum_zeroelim routine from oritinal code - function sum$1(elen, e, flen, f, h) { - let Q, Qnew, hh, bvirt; - let enow = e[0]; - let fnow = f[0]; - let eindex = 0; - let findex = 0; - if ((fnow > enow) === (fnow > -enow)) { - Q = enow; - enow = e[++eindex]; - } else { - Q = fnow; - fnow = f[++findex]; - } - let hindex = 0; - if (eindex < elen && findex < flen) { - if ((fnow > enow) === (fnow > -enow)) { - Qnew = enow + Q; - hh = Q - (Qnew - enow); - enow = e[++eindex]; - } else { - Qnew = fnow + Q; - hh = Q - (Qnew - fnow); - fnow = f[++findex]; - } - Q = Qnew; - if (hh !== 0) { - h[hindex++] = hh; - } - while (eindex < elen && findex < flen) { - if ((fnow > enow) === (fnow > -enow)) { - Qnew = Q + enow; - bvirt = Qnew - Q; - hh = Q - (Qnew - bvirt) + (enow - bvirt); - enow = e[++eindex]; - } else { - Qnew = Q + fnow; - bvirt = Qnew - Q; - hh = Q - (Qnew - bvirt) + (fnow - bvirt); - fnow = f[++findex]; - } - Q = Qnew; - if (hh !== 0) { - h[hindex++] = hh; - } - } - } - while (eindex < elen) { - Qnew = Q + enow; - bvirt = Qnew - Q; - hh = Q - (Qnew - bvirt) + (enow - bvirt); - enow = e[++eindex]; - Q = Qnew; - if (hh !== 0) { - h[hindex++] = hh; - } - } - while (findex < flen) { - Qnew = Q + fnow; - bvirt = Qnew - Q; - hh = Q - (Qnew - bvirt) + (fnow - bvirt); - fnow = f[++findex]; - Q = Qnew; - if (hh !== 0) { - h[hindex++] = hh; - } - } - if (Q !== 0 || hindex === 0) { - h[hindex++] = Q; - } - return hindex; - } - - function estimate(elen, e) { - let Q = e[0]; - for (let i = 1; i < elen; i++) Q += e[i]; - return Q; - } - - function vec(n) { - return new Float64Array(n); - } - - const ccwerrboundA = (3 + 16 * epsilon$3) * epsilon$3; - const ccwerrboundB = (2 + 12 * epsilon$3) * epsilon$3; - const ccwerrboundC = (9 + 64 * epsilon$3) * epsilon$3 * epsilon$3; - - const B$2 = vec(4); - const C1 = vec(8); - const C2 = vec(12); - const D$2 = vec(16); - const u$1 = vec(4); - - function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) { - let acxtail, acytail, bcxtail, bcytail; - let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; - - const acx = ax - cx; - const bcx = bx - cx; - const acy = ay - cy; - const bcy = by - cy; - - s1 = acx * bcy; - c = splitter * acx; - ahi = c - (c - acx); - alo = acx - ahi; - c = splitter * bcy; - bhi = c - (c - bcy); - blo = bcy - bhi; - s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); - t1 = acy * bcx; - c = splitter * acy; - ahi = c - (c - acy); - alo = acy - ahi; - c = splitter * bcx; - bhi = c - (c - bcx); - blo = bcx - bhi; - t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); - _i = s0 - t0; - bvirt = s0 - _i; - B$2[0] = s0 - (_i + bvirt) + (bvirt - t0); - _j = s1 + _i; - bvirt = _j - s1; - _0 = s1 - (_j - bvirt) + (_i - bvirt); - _i = _0 - t1; - bvirt = _0 - _i; - B$2[1] = _0 - (_i + bvirt) + (bvirt - t1); - u3 = _j + _i; - bvirt = u3 - _j; - B$2[2] = _j - (u3 - bvirt) + (_i - bvirt); - B$2[3] = u3; - - let det = estimate(4, B$2); - let errbound = ccwerrboundB * detsum; - if (det >= errbound || -det >= errbound) { - return det; - } - - bvirt = ax - acx; - acxtail = ax - (acx + bvirt) + (bvirt - cx); - bvirt = bx - bcx; - bcxtail = bx - (bcx + bvirt) + (bvirt - cx); - bvirt = ay - acy; - acytail = ay - (acy + bvirt) + (bvirt - cy); - bvirt = by - bcy; - bcytail = by - (bcy + bvirt) + (bvirt - cy); - - if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) { - return det; - } - - errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det); - det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail); - if (det >= errbound || -det >= errbound) return det; - - s1 = acxtail * bcy; - c = splitter * acxtail; - ahi = c - (c - acxtail); - alo = acxtail - ahi; - c = splitter * bcy; - bhi = c - (c - bcy); - blo = bcy - bhi; - s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); - t1 = acytail * bcx; - c = splitter * acytail; - ahi = c - (c - acytail); - alo = acytail - ahi; - c = splitter * bcx; - bhi = c - (c - bcx); - blo = bcx - bhi; - t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); - _i = s0 - t0; - bvirt = s0 - _i; - u$1[0] = s0 - (_i + bvirt) + (bvirt - t0); - _j = s1 + _i; - bvirt = _j - s1; - _0 = s1 - (_j - bvirt) + (_i - bvirt); - _i = _0 - t1; - bvirt = _0 - _i; - u$1[1] = _0 - (_i + bvirt) + (bvirt - t1); - u3 = _j + _i; - bvirt = u3 - _j; - u$1[2] = _j - (u3 - bvirt) + (_i - bvirt); - u$1[3] = u3; - const C1len = sum$1(4, B$2, 4, u$1, C1); - - s1 = acx * bcytail; - c = splitter * acx; - ahi = c - (c - acx); - alo = acx - ahi; - c = splitter * bcytail; - bhi = c - (c - bcytail); - blo = bcytail - bhi; - s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); - t1 = acy * bcxtail; - c = splitter * acy; - ahi = c - (c - acy); - alo = acy - ahi; - c = splitter * bcxtail; - bhi = c - (c - bcxtail); - blo = bcxtail - bhi; - t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); - _i = s0 - t0; - bvirt = s0 - _i; - u$1[0] = s0 - (_i + bvirt) + (bvirt - t0); - _j = s1 + _i; - bvirt = _j - s1; - _0 = s1 - (_j - bvirt) + (_i - bvirt); - _i = _0 - t1; - bvirt = _0 - _i; - u$1[1] = _0 - (_i + bvirt) + (bvirt - t1); - u3 = _j + _i; - bvirt = u3 - _j; - u$1[2] = _j - (u3 - bvirt) + (_i - bvirt); - u$1[3] = u3; - const C2len = sum$1(C1len, C1, 4, u$1, C2); - - s1 = acxtail * bcytail; - c = splitter * acxtail; - ahi = c - (c - acxtail); - alo = acxtail - ahi; - c = splitter * bcytail; - bhi = c - (c - bcytail); - blo = bcytail - bhi; - s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); - t1 = acytail * bcxtail; - c = splitter * acytail; - ahi = c - (c - acytail); - alo = acytail - ahi; - c = splitter * bcxtail; - bhi = c - (c - bcxtail); - blo = bcxtail - bhi; - t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); - _i = s0 - t0; - bvirt = s0 - _i; - u$1[0] = s0 - (_i + bvirt) + (bvirt - t0); - _j = s1 + _i; - bvirt = _j - s1; - _0 = s1 - (_j - bvirt) + (_i - bvirt); - _i = _0 - t1; - bvirt = _0 - _i; - u$1[1] = _0 - (_i + bvirt) + (bvirt - t1); - u3 = _j + _i; - bvirt = u3 - _j; - u$1[2] = _j - (u3 - bvirt) + (_i - bvirt); - u$1[3] = u3; - const Dlen = sum$1(C2len, C2, 4, u$1, D$2); - - return D$2[Dlen - 1]; - } - - function orient2d(ax, ay, bx, by, cx, cy) { - const detleft = (ay - cy) * (bx - cx); - const detright = (ax - cx) * (by - cy); - const det = detleft - detright; - - const detsum = Math.abs(detleft + detright); - if (Math.abs(det) >= ccwerrboundA * detsum) return det; - - return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum); - } - - const EPSILON = Math.pow(2, -52); - const EDGE_STACK = new Uint32Array(512); - - class Delaunator { - - static from(points, getX = defaultGetX, getY = defaultGetY) { - const n = points.length; - const coords = new Float64Array(n * 2); - - for (let i = 0; i < n; i++) { - const p = points[i]; - coords[2 * i] = getX(p); - coords[2 * i + 1] = getY(p); - } - - return new Delaunator(coords); - } - - constructor(coords) { - const n = coords.length >> 1; - if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.'); - - this.coords = coords; - - // arrays that will store the triangulation graph - const maxTriangles = Math.max(2 * n - 5, 0); - this._triangles = new Uint32Array(maxTriangles * 3); - this._halfedges = new Int32Array(maxTriangles * 3); - - // temporary arrays for tracking the edges of the advancing convex hull - this._hashSize = Math.ceil(Math.sqrt(n)); - this._hullPrev = new Uint32Array(n); // edge to prev edge - this._hullNext = new Uint32Array(n); // edge to next edge - this._hullTri = new Uint32Array(n); // edge to adjacent triangle - this._hullHash = new Int32Array(this._hashSize); // angular edge hash - - // temporary arrays for sorting points - this._ids = new Uint32Array(n); - this._dists = new Float64Array(n); - - this.update(); - } - - update() { - const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} = this; - const n = coords.length >> 1; - - // populate an array of point indices; calculate input data bbox - let minX = Infinity; - let minY = Infinity; - let maxX = -Infinity; - let maxY = -Infinity; - - for (let i = 0; i < n; i++) { - const x = coords[2 * i]; - const y = coords[2 * i + 1]; - if (x < minX) minX = x; - if (y < minY) minY = y; - if (x > maxX) maxX = x; - if (y > maxY) maxY = y; - this._ids[i] = i; - } - const cx = (minX + maxX) / 2; - const cy = (minY + maxY) / 2; - - let i0, i1, i2; - - // pick a seed point close to the center - for (let i = 0, minDist = Infinity; i < n; i++) { - const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]); - if (d < minDist) { - i0 = i; - minDist = d; - } - } - const i0x = coords[2 * i0]; - const i0y = coords[2 * i0 + 1]; - - // find the point closest to the seed - for (let i = 0, minDist = Infinity; i < n; i++) { - if (i === i0) continue; - const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]); - if (d < minDist && d > 0) { - i1 = i; - minDist = d; - } - } - let i1x = coords[2 * i1]; - let i1y = coords[2 * i1 + 1]; - - let minRadius = Infinity; - - // find the third point which forms the smallest circumcircle with the first two - for (let i = 0; i < n; i++) { - if (i === i0 || i === i1) continue; - const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]); - if (r < minRadius) { - i2 = i; - minRadius = r; - } - } - let i2x = coords[2 * i2]; - let i2y = coords[2 * i2 + 1]; - - if (minRadius === Infinity) { - // order collinear points by dx (or dy if all x are identical) - // and return the list as a hull - for (let i = 0; i < n; i++) { - this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]); - } - quicksort(this._ids, this._dists, 0, n - 1); - const hull = new Uint32Array(n); - let j = 0; - for (let i = 0, d0 = -Infinity; i < n; i++) { - const id = this._ids[i]; - const d = this._dists[id]; - if (d > d0) { - hull[j++] = id; - d0 = d; - } - } - this.hull = hull.subarray(0, j); - this.triangles = new Uint32Array(0); - this.halfedges = new Uint32Array(0); - return; - } - - // swap the order of the seed points for counter-clockwise orientation - if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) { - const i = i1; - const x = i1x; - const y = i1y; - i1 = i2; - i1x = i2x; - i1y = i2y; - i2 = i; - i2x = x; - i2y = y; - } - - const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y); - this._cx = center.x; - this._cy = center.y; - - for (let i = 0; i < n; i++) { - this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y); - } - - // sort the points by distance from the seed triangle circumcenter - quicksort(this._ids, this._dists, 0, n - 1); - - // set up the seed triangle as the starting hull - this._hullStart = i0; - let hullSize = 3; - - hullNext[i0] = hullPrev[i2] = i1; - hullNext[i1] = hullPrev[i0] = i2; - hullNext[i2] = hullPrev[i1] = i0; - - hullTri[i0] = 0; - hullTri[i1] = 1; - hullTri[i2] = 2; - - hullHash.fill(-1); - hullHash[this._hashKey(i0x, i0y)] = i0; - hullHash[this._hashKey(i1x, i1y)] = i1; - hullHash[this._hashKey(i2x, i2y)] = i2; - - this.trianglesLen = 0; - this._addTriangle(i0, i1, i2, -1, -1, -1); - - for (let k = 0, xp, yp; k < this._ids.length; k++) { - const i = this._ids[k]; - const x = coords[2 * i]; - const y = coords[2 * i + 1]; - - // skip near-duplicate points - if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue; - xp = x; - yp = y; - - // skip seed triangle points - if (i === i0 || i === i1 || i === i2) continue; - - // find a visible edge on the convex hull using edge hash - let start = 0; - for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) { - start = hullHash[(key + j) % this._hashSize]; - if (start !== -1 && start !== hullNext[start]) break; - } - - start = hullPrev[start]; - let e = start, q; - while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) { - e = q; - if (e === start) { - e = -1; - break; - } - } - if (e === -1) continue; // likely a near-duplicate point; skip it - - // add the first triangle from the point - let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]); - - // recursively flip triangles from the point until they satisfy the Delaunay condition - hullTri[i] = this._legalize(t + 2); - hullTri[e] = t; // keep track of boundary triangles on the hull - hullSize++; - - // walk forward through the hull, adding more triangles and flipping recursively - let n = hullNext[e]; - while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) { - t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]); - hullTri[i] = this._legalize(t + 2); - hullNext[n] = n; // mark as removed - hullSize--; - n = q; - } - - // walk backward from the other side, adding more triangles and flipping - if (e === start) { - while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) { - t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]); - this._legalize(t + 2); - hullTri[q] = t; - hullNext[e] = e; // mark as removed - hullSize--; - e = q; - } - } - - // update the hull indices - this._hullStart = hullPrev[i] = e; - hullNext[e] = hullPrev[n] = i; - hullNext[i] = n; - - // save the two new edges in the hash table - hullHash[this._hashKey(x, y)] = i; - hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e; - } - - this.hull = new Uint32Array(hullSize); - for (let i = 0, e = this._hullStart; i < hullSize; i++) { - this.hull[i] = e; - e = hullNext[e]; - } - - // trim typed triangle mesh arrays - this.triangles = this._triangles.subarray(0, this.trianglesLen); - this.halfedges = this._halfedges.subarray(0, this.trianglesLen); - } - - _hashKey(x, y) { - return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize; - } - - _legalize(a) { - const {_triangles: triangles, _halfedges: halfedges, coords} = this; - - let i = 0; - let ar = 0; - - // recursion eliminated with a fixed-size stack - while (true) { - const b = halfedges[a]; - - /* if the pair of triangles doesn't satisfy the Delaunay condition - * (p1 is inside the circumcircle of [p0, pl, pr]), flip them, - * then do the same check/flip recursively for the new pair of triangles - * - * pl pl - * /||\ / \ - * al/ || \bl al/ \a - * / || \ / \ - * / a||b \ flip /___ar___\ - * p0\ || /p1 => p0\---bl---/p1 - * \ || / \ / - * ar\ || /br b\ /br - * \||/ \ / - * pr pr - */ - const a0 = a - a % 3; - ar = a0 + (a + 2) % 3; - - if (b === -1) { // convex hull edge - if (i === 0) break; - a = EDGE_STACK[--i]; - continue; - } - - const b0 = b - b % 3; - const al = a0 + (a + 1) % 3; - const bl = b0 + (b + 2) % 3; - - const p0 = triangles[ar]; - const pr = triangles[a]; - const pl = triangles[al]; - const p1 = triangles[bl]; - - const illegal = inCircle( - coords[2 * p0], coords[2 * p0 + 1], - coords[2 * pr], coords[2 * pr + 1], - coords[2 * pl], coords[2 * pl + 1], - coords[2 * p1], coords[2 * p1 + 1]); - - if (illegal) { - triangles[a] = p1; - triangles[b] = p0; - - const hbl = halfedges[bl]; - - // edge swapped on the other side of the hull (rare); fix the halfedge reference - if (hbl === -1) { - let e = this._hullStart; - do { - if (this._hullTri[e] === bl) { - this._hullTri[e] = a; - break; - } - e = this._hullPrev[e]; - } while (e !== this._hullStart); - } - this._link(a, hbl); - this._link(b, halfedges[ar]); - this._link(ar, bl); - - const br = b0 + (b + 1) % 3; - - // don't worry about hitting the cap: it can only happen on extremely degenerate input - if (i < EDGE_STACK.length) { - EDGE_STACK[i++] = br; - } - } else { - if (i === 0) break; - a = EDGE_STACK[--i]; - } - } - - return ar; - } - - _link(a, b) { - this._halfedges[a] = b; - if (b !== -1) this._halfedges[b] = a; - } - - // add a new triangle given vertex indices and adjacent half-edge ids - _addTriangle(i0, i1, i2, a, b, c) { - const t = this.trianglesLen; - - this._triangles[t] = i0; - this._triangles[t + 1] = i1; - this._triangles[t + 2] = i2; - - this._link(t, a); - this._link(t + 1, b); - this._link(t + 2, c); - - this.trianglesLen += 3; - - return t; - } - } - - // monotonically increases with real angle, but doesn't need expensive trigonometry - function pseudoAngle(dx, dy) { - const p = dx / (Math.abs(dx) + Math.abs(dy)); - return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1] - } - - function dist(ax, ay, bx, by) { - const dx = ax - bx; - const dy = ay - by; - return dx * dx + dy * dy; - } - - function inCircle(ax, ay, bx, by, cx, cy, px, py) { - const dx = ax - px; - const dy = ay - py; - const ex = bx - px; - const ey = by - py; - const fx = cx - px; - const fy = cy - py; - - const ap = dx * dx + dy * dy; - const bp = ex * ex + ey * ey; - const cp = fx * fx + fy * fy; - - return dx * (ey * cp - bp * fy) - - dy * (ex * cp - bp * fx) + - ap * (ex * fy - ey * fx) < 0; - } - - function circumradius(ax, ay, bx, by, cx, cy) { - const dx = bx - ax; - const dy = by - ay; - const ex = cx - ax; - const ey = cy - ay; - - const bl = dx * dx + dy * dy; - const cl = ex * ex + ey * ey; - const d = 0.5 / (dx * ey - dy * ex); - - const x = (ey * bl - dy * cl) * d; - const y = (dx * cl - ex * bl) * d; - - return x * x + y * y; - } - - function circumcenter(ax, ay, bx, by, cx, cy) { - const dx = bx - ax; - const dy = by - ay; - const ex = cx - ax; - const ey = cy - ay; - - const bl = dx * dx + dy * dy; - const cl = ex * ex + ey * ey; - const d = 0.5 / (dx * ey - dy * ex); - - const x = ax + (ey * bl - dy * cl) * d; - const y = ay + (dx * cl - ex * bl) * d; - - return {x, y}; - } - - function quicksort(ids, dists, left, right) { - if (right - left <= 20) { - for (let i = left + 1; i <= right; i++) { - const temp = ids[i]; - const tempDist = dists[temp]; - let j = i - 1; - while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--]; - ids[j + 1] = temp; - } - } else { - const median = (left + right) >> 1; - let i = left + 1; - let j = right; - swap(ids, median, i); - if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right); - if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right); - if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i); - - const temp = ids[i]; - const tempDist = dists[temp]; - while (true) { - do i++; while (dists[ids[i]] < tempDist); - do j--; while (dists[ids[j]] > tempDist); - if (j < i) break; - swap(ids, i, j); - } - ids[left + 1] = ids[j]; - ids[j] = temp; - - if (right - i + 1 >= j - left) { - quicksort(ids, dists, i, right); - quicksort(ids, dists, left, j - 1); - } else { - quicksort(ids, dists, left, j - 1); - quicksort(ids, dists, i, right); - } - } - } - - function swap(arr, i, j) { - const tmp = arr[i]; - arr[i] = arr[j]; - arr[j] = tmp; - } - - function defaultGetX(p) { - return p[0]; - } - function defaultGetY(p) { - return p[1]; - } - - const epsilon$2 = 1e-6; - - class Path { - constructor() { - this._x0 = this._y0 = // start of current subpath - this._x1 = this._y1 = null; // end of current subpath - this._ = ""; - } - moveTo(x, y) { - this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`; - } - closePath() { - if (this._x1 !== null) { - this._x1 = this._x0, this._y1 = this._y0; - this._ += "Z"; - } - } - lineTo(x, y) { - this._ += `L${this._x1 = +x},${this._y1 = +y}`; - } - arc(x, y, r) { - x = +x, y = +y, r = +r; - const x0 = x + r; - const y0 = y; - if (r < 0) throw new Error("negative radius"); - if (this._x1 === null) this._ += `M${x0},${y0}`; - else if (Math.abs(this._x1 - x0) > epsilon$2 || Math.abs(this._y1 - y0) > epsilon$2) this._ += "L" + x0 + "," + y0; - if (!r) return; - this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`; - } - rect(x, y, w, h) { - this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`; - } - value() { - return this._ || null; - } - } - - class Polygon { - constructor() { - this._ = []; - } - moveTo(x, y) { - this._.push([x, y]); - } - closePath() { - this._.push(this._[0].slice()); - } - lineTo(x, y) { - this._.push([x, y]); - } - value() { - return this._.length ? this._ : null; - } - } - - class Voronoi { - constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) { - if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error("invalid bounds"); - this.delaunay = delaunay; - this._circumcenters = new Float64Array(delaunay.points.length * 2); - this.vectors = new Float64Array(delaunay.points.length * 2); - this.xmax = xmax, this.xmin = xmin; - this.ymax = ymax, this.ymin = ymin; - this._init(); - } - update() { - this.delaunay.update(); - this._init(); - return this; - } - _init() { - const {delaunay: {points, hull, triangles}, vectors} = this; - let bx, by; // lazily computed barycenter of the hull - - // Compute circumcenters. - const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2); - for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) { - const t1 = triangles[i] * 2; - const t2 = triangles[i + 1] * 2; - const t3 = triangles[i + 2] * 2; - const x1 = points[t1]; - const y1 = points[t1 + 1]; - const x2 = points[t2]; - const y2 = points[t2 + 1]; - const x3 = points[t3]; - const y3 = points[t3 + 1]; - - const dx = x2 - x1; - const dy = y2 - y1; - const ex = x3 - x1; - const ey = y3 - y1; - const ab = (dx * ey - dy * ex) * 2; - - if (Math.abs(ab) < 1e-9) { - // For a degenerate triangle, the circumcenter is at the infinity, in a - // direction orthogonal to the halfedge and away from the “center” of - // the diagram , defined as the hull’s barycenter. - if (bx === undefined) { - bx = by = 0; - for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1]; - bx /= hull.length, by /= hull.length; - } - const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex); - x = (x1 + x3) / 2 - a * ey; - y = (y1 + y3) / 2 + a * ex; - } else { - const d = 1 / ab; - const bl = dx * dx + dy * dy; - const cl = ex * ex + ey * ey; - x = x1 + (ey * bl - dy * cl) * d; - y = y1 + (dx * cl - ex * bl) * d; - } - circumcenters[j] = x; - circumcenters[j + 1] = y; - } - - // Compute exterior cell rays. - let h = hull[hull.length - 1]; - let p0, p1 = h * 4; - let x0, x1 = points[2 * h]; - let y0, y1 = points[2 * h + 1]; - vectors.fill(0); - for (let i = 0; i < hull.length; ++i) { - h = hull[i]; - p0 = p1, x0 = x1, y0 = y1; - p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1]; - vectors[p0 + 2] = vectors[p1] = y0 - y1; - vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0; - } - } - render(context) { - const buffer = context == null ? context = new Path : undefined; - const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this; - if (hull.length <= 1) return null; - for (let i = 0, n = halfedges.length; i < n; ++i) { - const j = halfedges[i]; - if (j < i) continue; - const ti = Math.floor(i / 3) * 2; - const tj = Math.floor(j / 3) * 2; - const xi = circumcenters[ti]; - const yi = circumcenters[ti + 1]; - const xj = circumcenters[tj]; - const yj = circumcenters[tj + 1]; - this._renderSegment(xi, yi, xj, yj, context); - } - let h0, h1 = hull[hull.length - 1]; - for (let i = 0; i < hull.length; ++i) { - h0 = h1, h1 = hull[i]; - const t = Math.floor(inedges[h1] / 3) * 2; - const x = circumcenters[t]; - const y = circumcenters[t + 1]; - const v = h0 * 4; - const p = this._project(x, y, vectors[v + 2], vectors[v + 3]); - if (p) this._renderSegment(x, y, p[0], p[1], context); - } - return buffer && buffer.value(); - } - renderBounds(context) { - const buffer = context == null ? context = new Path : undefined; - context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin); - return buffer && buffer.value(); - } - renderCell(i, context) { - const buffer = context == null ? context = new Path : undefined; - const points = this._clip(i); - if (points === null || !points.length) return; - context.moveTo(points[0], points[1]); - let n = points.length; - while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2; - for (let i = 2; i < n; i += 2) { - if (points[i] !== points[i-2] || points[i+1] !== points[i-1]) - context.lineTo(points[i], points[i + 1]); - } - context.closePath(); - return buffer && buffer.value(); - } - *cellPolygons() { - const {delaunay: {points}} = this; - for (let i = 0, n = points.length / 2; i < n; ++i) { - const cell = this.cellPolygon(i); - if (cell) cell.index = i, yield cell; - } - } - cellPolygon(i) { - const polygon = new Polygon; - this.renderCell(i, polygon); - return polygon.value(); - } - _renderSegment(x0, y0, x1, y1, context) { - let S; - const c0 = this._regioncode(x0, y0); - const c1 = this._regioncode(x1, y1); - if (c0 === 0 && c1 === 0) { - context.moveTo(x0, y0); - context.lineTo(x1, y1); - } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) { - context.moveTo(S[0], S[1]); - context.lineTo(S[2], S[3]); - } - } - contains(i, x, y) { - if ((x = +x, x !== x) || (y = +y, y !== y)) return false; - return this.delaunay._step(i, x, y) === i; - } - *neighbors(i) { - const ci = this._clip(i); - if (ci) for (const j of this.delaunay.neighbors(i)) { - const cj = this._clip(j); - // find the common edge - if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) { - for (let aj = 0, lj = cj.length; aj < lj; aj += 2) { - if (ci[ai] === cj[aj] - && ci[ai + 1] === cj[aj + 1] - && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj] - && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) { - yield j; - break loop; - } - } - } - } - } - _cell(i) { - const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this; - const e0 = inedges[i]; - if (e0 === -1) return null; // coincident point - const points = []; - let e = e0; - do { - const t = Math.floor(e / 3); - points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]); - e = e % 3 === 2 ? e - 2 : e + 1; - if (triangles[e] !== i) break; // bad triangulation - e = halfedges[e]; - } while (e !== e0 && e !== -1); - return points; - } - _clip(i) { - // degenerate case (1 valid point: return the box) - if (i === 0 && this.delaunay.hull.length === 1) { - return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin]; - } - const points = this._cell(i); - if (points === null) return null; - const {vectors: V} = this; - const v = i * 4; - return this._simplify(V[v] || V[v + 1] - ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3]) - : this._clipFinite(i, points)); - } - _clipFinite(i, points) { - const n = points.length; - let P = null; - let x0, y0, x1 = points[n - 2], y1 = points[n - 1]; - let c0, c1 = this._regioncode(x1, y1); - let e0, e1 = 0; - for (let j = 0; j < n; j += 2) { - x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1]; - c0 = c1, c1 = this._regioncode(x1, y1); - if (c0 === 0 && c1 === 0) { - e0 = e1, e1 = 0; - if (P) P.push(x1, y1); - else P = [x1, y1]; - } else { - let S, sx0, sy0, sx1, sy1; - if (c0 === 0) { - if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue; - [sx0, sy0, sx1, sy1] = S; - } else { - if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue; - [sx1, sy1, sx0, sy0] = S; - e0 = e1, e1 = this._edgecode(sx0, sy0); - if (e0 && e1) this._edge(i, e0, e1, P, P.length); - if (P) P.push(sx0, sy0); - else P = [sx0, sy0]; - } - e0 = e1, e1 = this._edgecode(sx1, sy1); - if (e0 && e1) this._edge(i, e0, e1, P, P.length); - if (P) P.push(sx1, sy1); - else P = [sx1, sy1]; - } - } - if (P) { - e0 = e1, e1 = this._edgecode(P[0], P[1]); - if (e0 && e1) this._edge(i, e0, e1, P, P.length); - } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) { - return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin]; - } - return P; - } - _clipSegment(x0, y0, x1, y1, c0, c1) { - // for more robustness, always consider the segment in the same order - const flip = c0 < c1; - if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0]; - while (true) { - if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1]; - if (c0 & c1) return null; - let x, y, c = c0 || c1; - if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax; - else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin; - else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax; - else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin; - if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0); - else x1 = x, y1 = y, c1 = this._regioncode(x1, y1); - } - } - _clipInfinite(i, points, vx0, vy0, vxn, vyn) { - let P = Array.from(points), p; - if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]); - if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]); - if (P = this._clipFinite(i, P)) { - for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) { - c0 = c1, c1 = this._edgecode(P[j], P[j + 1]); - if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length; - } - } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) { - P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax]; - } - return P; - } - _edge(i, e0, e1, P, j) { - while (e0 !== e1) { - let x, y; - switch (e0) { - case 0b0101: e0 = 0b0100; continue; // top-left - case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top - case 0b0110: e0 = 0b0010; continue; // top-right - case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right - case 0b1010: e0 = 0b1000; continue; // bottom-right - case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom - case 0b1001: e0 = 0b0001; continue; // bottom-left - case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left - } - // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are - // undefined, the conditional statement will be executed. - if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) { - P.splice(j, 0, x, y), j += 2; - } - } - return j; - } - _project(x0, y0, vx, vy) { - let t = Infinity, c, x, y; - if (vy < 0) { // top - if (y0 <= this.ymin) return null; - if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx; - } else if (vy > 0) { // bottom - if (y0 >= this.ymax) return null; - if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx; - } - if (vx > 0) { // right - if (x0 >= this.xmax) return null; - if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy; - } else if (vx < 0) { // left - if (x0 <= this.xmin) return null; - if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy; - } - return [x, y]; - } - _edgecode(x, y) { - return (x === this.xmin ? 0b0001 - : x === this.xmax ? 0b0010 : 0b0000) - | (y === this.ymin ? 0b0100 - : y === this.ymax ? 0b1000 : 0b0000); - } - _regioncode(x, y) { - return (x < this.xmin ? 0b0001 - : x > this.xmax ? 0b0010 : 0b0000) - | (y < this.ymin ? 0b0100 - : y > this.ymax ? 0b1000 : 0b0000); - } - _simplify(P) { - if (P && P.length > 4) { - for (let i = 0; i < P.length; i+= 2) { - const j = (i + 2) % P.length, k = (i + 4) % P.length; - if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) { - P.splice(j, 2), i -= 2; - } - } - if (!P.length) P = null; - } - return P; - } - } - - const tau$2 = 2 * Math.PI, pow$2 = Math.pow; - - function pointX(p) { - return p[0]; - } - - function pointY(p) { - return p[1]; - } - - // A triangulation is collinear if all its triangles have a non-null area - function collinear(d) { - const {triangles, coords} = d; - for (let i = 0; i < triangles.length; i += 3) { - const a = 2 * triangles[i], - b = 2 * triangles[i + 1], - c = 2 * triangles[i + 2], - cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1]) - - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]); - if (cross > 1e-10) return false; - } - return true; - } - - function jitter(x, y, r) { - return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r]; - } - - class Delaunay { - static from(points, fx = pointX, fy = pointY, that) { - return new Delaunay("length" in points - ? flatArray(points, fx, fy, that) - : Float64Array.from(flatIterable(points, fx, fy, that))); - } - constructor(points) { - this._delaunator = new Delaunator(points); - this.inedges = new Int32Array(points.length / 2); - this._hullIndex = new Int32Array(points.length / 2); - this.points = this._delaunator.coords; - this._init(); - } - update() { - this._delaunator.update(); - this._init(); - return this; - } - _init() { - const d = this._delaunator, points = this.points; - - // check for collinear - if (d.hull && d.hull.length > 2 && collinear(d)) { - this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i) - .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors - const e = this.collinear[0], f = this.collinear[this.collinear.length - 1], - bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ], - r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]); - for (let i = 0, n = points.length / 2; i < n; ++i) { - const p = jitter(points[2 * i], points[2 * i + 1], r); - points[2 * i] = p[0]; - points[2 * i + 1] = p[1]; - } - this._delaunator = new Delaunator(points); - } else { - delete this.collinear; - } - - const halfedges = this.halfedges = this._delaunator.halfedges; - const hull = this.hull = this._delaunator.hull; - const triangles = this.triangles = this._delaunator.triangles; - const inedges = this.inedges.fill(-1); - const hullIndex = this._hullIndex.fill(-1); - - // Compute an index from each point to an (arbitrary) incoming halfedge - // Used to give the first neighbor of each point; for this reason, - // on the hull we give priority to exterior halfedges - for (let e = 0, n = halfedges.length; e < n; ++e) { - const p = triangles[e % 3 === 2 ? e - 2 : e + 1]; - if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e; - } - for (let i = 0, n = hull.length; i < n; ++i) { - hullIndex[hull[i]] = i; - } - - // degenerate case: 1 or 2 (distinct) points - if (hull.length <= 2 && hull.length > 0) { - this.triangles = new Int32Array(3).fill(-1); - this.halfedges = new Int32Array(3).fill(-1); - this.triangles[0] = hull[0]; - inedges[hull[0]] = 1; - if (hull.length === 2) { - inedges[hull[1]] = 0; - this.triangles[1] = hull[1]; - this.triangles[2] = hull[1]; - } - } - } - voronoi(bounds) { - return new Voronoi(this, bounds); - } - *neighbors(i) { - const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this; - - // degenerate case with several collinear points - if (collinear) { - const l = collinear.indexOf(i); - if (l > 0) yield collinear[l - 1]; - if (l < collinear.length - 1) yield collinear[l + 1]; - return; - } - - const e0 = inedges[i]; - if (e0 === -1) return; // coincident point - let e = e0, p0 = -1; - do { - yield p0 = triangles[e]; - e = e % 3 === 2 ? e - 2 : e + 1; - if (triangles[e] !== i) return; // bad triangulation - e = halfedges[e]; - if (e === -1) { - const p = hull[(_hullIndex[i] + 1) % hull.length]; - if (p !== p0) yield p; - return; - } - } while (e !== e0); - } - find(x, y, i = 0) { - if ((x = +x, x !== x) || (y = +y, y !== y)) return -1; - const i0 = i; - let c; - while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c; - return c; - } - _step(i, x, y) { - const {inedges, hull, _hullIndex, halfedges, triangles, points} = this; - if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1); - let c = i; - let dc = pow$2(x - points[i * 2], 2) + pow$2(y - points[i * 2 + 1], 2); - const e0 = inedges[i]; - let e = e0; - do { - let t = triangles[e]; - const dt = pow$2(x - points[t * 2], 2) + pow$2(y - points[t * 2 + 1], 2); - if (dt < dc) dc = dt, c = t; - e = e % 3 === 2 ? e - 2 : e + 1; - if (triangles[e] !== i) break; // bad triangulation - e = halfedges[e]; - if (e === -1) { - e = hull[(_hullIndex[i] + 1) % hull.length]; - if (e !== t) { - if (pow$2(x - points[e * 2], 2) + pow$2(y - points[e * 2 + 1], 2) < dc) return e; - } - break; - } - } while (e !== e0); - return c; - } - render(context) { - const buffer = context == null ? context = new Path : undefined; - const {points, halfedges, triangles} = this; - for (let i = 0, n = halfedges.length; i < n; ++i) { - const j = halfedges[i]; - if (j < i) continue; - const ti = triangles[i] * 2; - const tj = triangles[j] * 2; - context.moveTo(points[ti], points[ti + 1]); - context.lineTo(points[tj], points[tj + 1]); - } - this.renderHull(context); - return buffer && buffer.value(); - } - renderPoints(context, r) { - if (r === undefined && (!context || typeof context.moveTo !== "function")) r = context, context = null; - r = r == undefined ? 2 : +r; - const buffer = context == null ? context = new Path : undefined; - const {points} = this; - for (let i = 0, n = points.length; i < n; i += 2) { - const x = points[i], y = points[i + 1]; - context.moveTo(x + r, y); - context.arc(x, y, r, 0, tau$2); - } - return buffer && buffer.value(); - } - renderHull(context) { - const buffer = context == null ? context = new Path : undefined; - const {hull, points} = this; - const h = hull[0] * 2, n = hull.length; - context.moveTo(points[h], points[h + 1]); - for (let i = 1; i < n; ++i) { - const h = 2 * hull[i]; - context.lineTo(points[h], points[h + 1]); - } - context.closePath(); - return buffer && buffer.value(); - } - hullPolygon() { - const polygon = new Polygon; - this.renderHull(polygon); - return polygon.value(); - } - renderTriangle(i, context) { - const buffer = context == null ? context = new Path : undefined; - const {points, triangles} = this; - const t0 = triangles[i *= 3] * 2; - const t1 = triangles[i + 1] * 2; - const t2 = triangles[i + 2] * 2; - context.moveTo(points[t0], points[t0 + 1]); - context.lineTo(points[t1], points[t1 + 1]); - context.lineTo(points[t2], points[t2 + 1]); - context.closePath(); - return buffer && buffer.value(); - } - *trianglePolygons() { - const {triangles} = this; - for (let i = 0, n = triangles.length / 3; i < n; ++i) { - yield this.trianglePolygon(i); - } - } - trianglePolygon(i) { - const polygon = new Polygon; - this.renderTriangle(i, polygon); - return polygon.value(); - } - } - - function flatArray(points, fx, fy, that) { - const n = points.length; - const array = new Float64Array(n * 2); - for (let i = 0; i < n; ++i) { - const p = points[i]; - array[i * 2] = fx.call(that, p, i, points); - array[i * 2 + 1] = fy.call(that, p, i, points); - } - return array; - } - - function* flatIterable(points, fx, fy, that) { - let i = 0; - for (const p of points) { - yield fx.call(that, p, i, points); - yield fy.call(that, p, i, points); - ++i; - } - } - - var EOL = {}, - EOF = {}, - QUOTE = 34, - NEWLINE = 10, - RETURN = 13; - - function objectConverter(columns) { - return new Function("d", "return {" + columns.map(function(name, i) { - return JSON.stringify(name) + ": d[" + i + "] || \"\""; - }).join(",") + "}"); - } - - function customConverter(columns, f) { - var object = objectConverter(columns); - return function(row, i) { - return f(object(row), i, columns); - }; - } - - // Compute unique columns in order of discovery. - function inferColumns(rows) { - var columnSet = Object.create(null), - columns = []; - - rows.forEach(function(row) { - for (var column in row) { - if (!(column in columnSet)) { - columns.push(columnSet[column] = column); - } - } - }); - - return columns; - } - - function pad$1(value, width) { - var s = value + "", length = s.length; - return length < width ? new Array(width - length + 1).join(0) + s : s; - } - - function formatYear$1(year) { - return year < 0 ? "-" + pad$1(-year, 6) - : year > 9999 ? "+" + pad$1(year, 6) - : pad$1(year, 4); - } - - function formatDate(date) { - var hours = date.getUTCHours(), - minutes = date.getUTCMinutes(), - seconds = date.getUTCSeconds(), - milliseconds = date.getUTCMilliseconds(); - return isNaN(date) ? "Invalid Date" - : formatYear$1(date.getUTCFullYear()) + "-" + pad$1(date.getUTCMonth() + 1, 2) + "-" + pad$1(date.getUTCDate(), 2) - + (milliseconds ? "T" + pad$1(hours, 2) + ":" + pad$1(minutes, 2) + ":" + pad$1(seconds, 2) + "." + pad$1(milliseconds, 3) + "Z" - : seconds ? "T" + pad$1(hours, 2) + ":" + pad$1(minutes, 2) + ":" + pad$1(seconds, 2) + "Z" - : minutes || hours ? "T" + pad$1(hours, 2) + ":" + pad$1(minutes, 2) + "Z" - : ""); - } - - function dsvFormat(delimiter) { - var reFormat = new RegExp("[\"" + delimiter + "\n\r]"), - DELIMITER = delimiter.charCodeAt(0); - - function parse(text, f) { - var convert, columns, rows = parseRows(text, function(row, i) { - if (convert) return convert(row, i - 1); - columns = row, convert = f ? customConverter(row, f) : objectConverter(row); - }); - rows.columns = columns || []; - return rows; - } - - function parseRows(text, f) { - var rows = [], // output rows - N = text.length, - I = 0, // current character index - n = 0, // current line number - t, // current token - eof = N <= 0, // current token followed by EOF? - eol = false; // current token followed by EOL? - - // Strip the trailing newline. - if (text.charCodeAt(N - 1) === NEWLINE) --N; - if (text.charCodeAt(N - 1) === RETURN) --N; - - function token() { - if (eof) return EOF; - if (eol) return eol = false, EOL; - - // Unescape quotes. - var i, j = I, c; - if (text.charCodeAt(j) === QUOTE) { - while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE); - if ((i = I) >= N) eof = true; - else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true; - else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } - return text.slice(j + 1, i - 1).replace(/""/g, "\""); - } - - // Find next delimiter or newline. - while (I < N) { - if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true; - else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } - else if (c !== DELIMITER) continue; - return text.slice(j, i); - } - - // Return last token before EOF. - return eof = true, text.slice(j, N); - } - - while ((t = token()) !== EOF) { - var row = []; - while (t !== EOL && t !== EOF) row.push(t), t = token(); - if (f && (row = f(row, n++)) == null) continue; - rows.push(row); - } - - return rows; - } - - function preformatBody(rows, columns) { - return rows.map(function(row) { - return columns.map(function(column) { - return formatValue(row[column]); - }).join(delimiter); - }); - } - - function format(rows, columns) { - if (columns == null) columns = inferColumns(rows); - return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join("\n"); - } - - function formatBody(rows, columns) { - if (columns == null) columns = inferColumns(rows); - return preformatBody(rows, columns).join("\n"); - } - - function formatRows(rows) { - return rows.map(formatRow).join("\n"); - } - - function formatRow(row) { - return row.map(formatValue).join(delimiter); - } - - function formatValue(value) { - return value == null ? "" - : value instanceof Date ? formatDate(value) - : reFormat.test(value += "") ? "\"" + value.replace(/"/g, "\"\"") + "\"" - : value; - } - - return { - parse: parse, - parseRows: parseRows, - format: format, - formatBody: formatBody, - formatRows: formatRows, - formatRow: formatRow, - formatValue: formatValue - }; - } - - var csv$1 = dsvFormat(","); - - var csvParse = csv$1.parse; - var csvParseRows = csv$1.parseRows; - var csvFormat = csv$1.format; - var csvFormatBody = csv$1.formatBody; - var csvFormatRows = csv$1.formatRows; - var csvFormatRow = csv$1.formatRow; - var csvFormatValue = csv$1.formatValue; - - var tsv$1 = dsvFormat("\t"); - - var tsvParse = tsv$1.parse; - var tsvParseRows = tsv$1.parseRows; - var tsvFormat = tsv$1.format; - var tsvFormatBody = tsv$1.formatBody; - var tsvFormatRows = tsv$1.formatRows; - var tsvFormatRow = tsv$1.formatRow; - var tsvFormatValue = tsv$1.formatValue; - - function autoType(object) { - for (var key in object) { - var value = object[key].trim(), number, m; - if (!value) value = null; - else if (value === "true") value = true; - else if (value === "false") value = false; - else if (value === "NaN") value = NaN; - else if (!isNaN(number = +value)) value = number; - else if (m = value.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)) { - if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, "/").replace(/T/, " "); - value = new Date(value); - } - else continue; - object[key] = value; - } - return object; - } - - // https://github.com/d3/d3-dsv/issues/45 - const fixtz = new Date("2019-01-01T00:00").getHours() || new Date("2019-07-01T00:00").getHours(); - - function responseBlob(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.blob(); - } - - function blob(input, init) { - return fetch(input, init).then(responseBlob); - } - - function responseArrayBuffer(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.arrayBuffer(); - } - - function buffer(input, init) { - return fetch(input, init).then(responseArrayBuffer); - } - - function responseText(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.text(); - } - - function text(input, init) { - return fetch(input, init).then(responseText); - } - - function dsvParse(parse) { - return function(input, init, row) { - if (arguments.length === 2 && typeof init === "function") row = init, init = undefined; - return text(input, init).then(function(response) { - return parse(response, row); - }); - }; - } - - function dsv(delimiter, input, init, row) { - if (arguments.length === 3 && typeof init === "function") row = init, init = undefined; - var format = dsvFormat(delimiter); - return text(input, init).then(function(response) { - return format.parse(response, row); - }); - } - - var csv = dsvParse(csvParse); - var tsv = dsvParse(tsvParse); - - function image(input, init) { - return new Promise(function(resolve, reject) { - var image = new Image; - for (var key in init) image[key] = init[key]; - image.onerror = reject; - image.onload = function() { resolve(image); }; - image.src = input; - }); - } - - function responseJson(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - if (response.status === 204 || response.status === 205) return; - return response.json(); - } - - function json(input, init) { - return fetch(input, init).then(responseJson); - } - - function parser(type) { - return (input, init) => text(input, init) - .then(text => (new DOMParser).parseFromString(text, type)); - } - - var xml = parser("application/xml"); - - var html = parser("text/html"); - - var svg = parser("image/svg+xml"); - - function center(x, y) { - var nodes, strength = 1; - - if (x == null) x = 0; - if (y == null) y = 0; - - function force() { - var i, - n = nodes.length, - node, - sx = 0, - sy = 0; - - for (i = 0; i < n; ++i) { - node = nodes[i], sx += node.x, sy += node.y; - } - - for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) { - node = nodes[i], node.x -= sx, node.y -= sy; - } - } - - force.initialize = function(_) { - nodes = _; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - return force; - } - - function tree_add(d) { - const x = +this._x.call(null, d), - y = +this._y.call(null, d); - return add(this.cover(x, y), x, y, d); - } - - function add(tree, x, y, d) { - if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points - - var parent, - node = tree._root, - leaf = {data: d}, - x0 = tree._x0, - y0 = tree._y0, - x1 = tree._x1, - y1 = tree._y1, - xm, - ym, - xp, - yp, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return tree._root = leaf, tree; - - // Find the existing leaf for the new point, or add it. - while (node.length) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; - } - - // Is the new point is exactly coincident with the existing point? - xp = +tree._x.call(null, node.data); - yp = +tree._y.call(null, node.data); - if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; - - // Otherwise, split the leaf node until the old and new point are separated. - do { - parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm))); - return parent[j] = node, parent[i] = leaf, tree; - } - - function addAll(data) { - var d, i, n = data.length, - x, - y, - xz = new Array(n), - yz = new Array(n), - x0 = Infinity, - y0 = Infinity, - x1 = -Infinity, - y1 = -Infinity; - - // Compute the points and their extent. - for (i = 0; i < n; ++i) { - if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; - xz[i] = x; - yz[i] = y; - if (x < x0) x0 = x; - if (x > x1) x1 = x; - if (y < y0) y0 = y; - if (y > y1) y1 = y; - } - - // If there were no (valid) points, abort. - if (x0 > x1 || y0 > y1) return this; - - // Expand the tree to cover the new points. - this.cover(x0, y0).cover(x1, y1); - - // Add the new points. - for (i = 0; i < n; ++i) { - add(this, xz[i], yz[i], data[i]); - } - - return this; - } - - function tree_cover(x, y) { - if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points - - var x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1; - - // If the quadtree has no extent, initialize them. - // Integer extent are necessary so that if we later double the extent, - // the existing quadrant boundaries don’t change due to floating point error! - if (isNaN(x0)) { - x1 = (x0 = Math.floor(x)) + 1; - y1 = (y0 = Math.floor(y)) + 1; - } - - // Otherwise, double repeatedly to cover. - else { - var z = x1 - x0 || 1, - node = this._root, - parent, - i; - - while (x0 > x || x >= x1 || y0 > y || y >= y1) { - i = (y < y0) << 1 | (x < x0); - parent = new Array(4), parent[i] = node, node = parent, z *= 2; - switch (i) { - case 0: x1 = x0 + z, y1 = y0 + z; break; - case 1: x0 = x1 - z, y1 = y0 + z; break; - case 2: x1 = x0 + z, y0 = y1 - z; break; - case 3: x0 = x1 - z, y0 = y1 - z; break; - } - } - - if (this._root && this._root.length) this._root = node; - } - - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - return this; - } - - function tree_data() { - var data = []; - this.visit(function(node) { - if (!node.length) do data.push(node.data); while (node = node.next) - }); - return data; - } - - function tree_extent(_) { - return arguments.length - ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) - : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]]; - } - - function Quad(node, x0, y0, x1, y1) { - this.node = node; - this.x0 = x0; - this.y0 = y0; - this.x1 = x1; - this.y1 = y1; - } - - function tree_find(x, y, radius) { - var data, - x0 = this._x0, - y0 = this._y0, - x1, - y1, - x2, - y2, - x3 = this._x1, - y3 = this._y1, - quads = [], - node = this._root, - q, - i; - - if (node) quads.push(new Quad(node, x0, y0, x3, y3)); - if (radius == null) radius = Infinity; - else { - x0 = x - radius, y0 = y - radius; - x3 = x + radius, y3 = y + radius; - radius *= radius; - } - - while (q = quads.pop()) { - - // Stop searching if this quadrant can’t contain a closer node. - if (!(node = q.node) - || (x1 = q.x0) > x3 - || (y1 = q.y0) > y3 - || (x2 = q.x1) < x0 - || (y2 = q.y1) < y0) continue; - - // Bisect the current quadrant. - if (node.length) { - var xm = (x1 + x2) / 2, - ym = (y1 + y2) / 2; - - quads.push( - new Quad(node[3], xm, ym, x2, y2), - new Quad(node[2], x1, ym, xm, y2), - new Quad(node[1], xm, y1, x2, ym), - new Quad(node[0], x1, y1, xm, ym) - ); - - // Visit the closest quadrant first. - if (i = (y >= ym) << 1 | (x >= xm)) { - q = quads[quads.length - 1]; - quads[quads.length - 1] = quads[quads.length - 1 - i]; - quads[quads.length - 1 - i] = q; - } - } - - // Visit this point. (Visiting coincident points isn’t necessary!) - else { - var dx = x - +this._x.call(null, node.data), - dy = y - +this._y.call(null, node.data), - d2 = dx * dx + dy * dy; - if (d2 < radius) { - var d = Math.sqrt(radius = d2); - x0 = x - d, y0 = y - d; - x3 = x + d, y3 = y + d; - data = node.data; - } - } - } - - return data; - } - - function tree_remove(d) { - if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points - - var parent, - node = this._root, - retainer, - previous, - next, - x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1, - x, - y, - xm, - ym, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return this; - - // Find the leaf node for the point. - // While descending, also retain the deepest parent with a non-removed sibling. - if (node.length) while (true) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (!(parent = node, node = node[i = bottom << 1 | right])) return this; - if (!node.length) break; - if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i; - } - - // Find the point to remove. - while (node.data !== d) if (!(previous = node, node = node.next)) return this; - if (next = node.next) delete node.next; - - // If there are multiple coincident points, remove just the point. - if (previous) return (next ? previous.next = next : delete previous.next), this; - - // If this is the root point, remove it. - if (!parent) return this._root = next, this; - - // Remove this leaf. - next ? parent[i] = next : delete parent[i]; - - // If the parent now contains exactly one leaf, collapse superfluous parents. - if ((node = parent[0] || parent[1] || parent[2] || parent[3]) - && node === (parent[3] || parent[2] || parent[1] || parent[0]) - && !node.length) { - if (retainer) retainer[j] = node; - else this._root = node; - } - - return this; - } - - function removeAll(data) { - for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); - return this; - } - - function tree_root() { - return this._root; - } - - function tree_size() { - var size = 0; - this.visit(function(node) { - if (!node.length) do ++size; while (node = node.next) - }); - return size; - } - - function tree_visit(callback) { - var quads = [], q, node = this._root, child, x0, y0, x1, y1; - if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { - var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - } - } - return this; - } - - function tree_visitAfter(callback) { - var quads = [], next = [], q; - if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - var node = q.node; - if (node.length) { - var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - } - next.push(q); - } - while (q = next.pop()) { - callback(q.node, q.x0, q.y0, q.x1, q.y1); - } - return this; - } - - function defaultX(d) { - return d[0]; - } - - function tree_x(_) { - return arguments.length ? (this._x = _, this) : this._x; - } - - function defaultY(d) { - return d[1]; - } - - function tree_y(_) { - return arguments.length ? (this._y = _, this) : this._y; - } - - function quadtree(nodes, x, y) { - var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN); - return nodes == null ? tree : tree.addAll(nodes); - } - - function Quadtree(x, y, x0, y0, x1, y1) { - this._x = x; - this._y = y; - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - this._root = undefined; - } - - function leaf_copy(leaf) { - var copy = {data: leaf.data}, next = copy; - while (leaf = leaf.next) next = next.next = {data: leaf.data}; - return copy; - } - - var treeProto = quadtree.prototype = Quadtree.prototype; - - treeProto.copy = function() { - var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), - node = this._root, - nodes, - child; - - if (!node) return copy; - - if (!node.length) return copy._root = leaf_copy(node), copy; - - nodes = [{source: node, target: copy._root = new Array(4)}]; - while (node = nodes.pop()) { - for (var i = 0; i < 4; ++i) { - if (child = node.source[i]) { - if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)}); - else node.target[i] = leaf_copy(child); - } - } - } - - return copy; - }; - - treeProto.add = tree_add; - treeProto.addAll = addAll; - treeProto.cover = tree_cover; - treeProto.data = tree_data; - treeProto.extent = tree_extent; - treeProto.find = tree_find; - treeProto.remove = tree_remove; - treeProto.removeAll = removeAll; - treeProto.root = tree_root; - treeProto.size = tree_size; - treeProto.visit = tree_visit; - treeProto.visitAfter = tree_visitAfter; - treeProto.x = tree_x; - treeProto.y = tree_y; - - function constant$4(x) { - return function() { - return x; - }; - } - - function jiggle(random) { - return (random() - 0.5) * 1e-6; - } - - function x$5(d) { - return d.x + d.vx; - } - - function y$4(d) { - return d.y + d.vy; - } - - function collide(radius) { - var nodes, - radii, - random, - strength = 1, - iterations = 1; - - if (typeof radius !== "function") radius = constant$4(radius == null ? 1 : +radius); - - function force() { - var i, n = nodes.length, - tree, - node, - xi, - yi, - ri, - ri2; - - for (var k = 0; k < iterations; ++k) { - tree = quadtree(nodes, x$5, y$4).visitAfter(prepare); - for (i = 0; i < n; ++i) { - node = nodes[i]; - ri = radii[node.index], ri2 = ri * ri; - xi = node.x + node.vx; - yi = node.y + node.vy; - tree.visit(apply); - } - } - - function apply(quad, x0, y0, x1, y1) { - var data = quad.data, rj = quad.r, r = ri + rj; - if (data) { - if (data.index > node.index) { - var x = xi - data.x - data.vx, - y = yi - data.y - data.vy, - l = x * x + y * y; - if (l < r * r) { - if (x === 0) x = jiggle(random), l += x * x; - if (y === 0) y = jiggle(random), l += y * y; - l = (r - (l = Math.sqrt(l))) / l * strength; - node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj)); - node.vy += (y *= l) * r; - data.vx -= x * (r = 1 - r); - data.vy -= y * r; - } - } - return; - } - return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r; - } - } - - function prepare(quad) { - if (quad.data) return quad.r = radii[quad.data.index]; - for (var i = quad.r = 0; i < 4; ++i) { - if (quad[i] && quad[i].r > quad.r) { - quad.r = quad[i].r; - } - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - radii = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes); - } - - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : radius; - }; - - return force; - } - - function index$3(d) { - return d.index; - } - - function find(nodeById, nodeId) { - var node = nodeById.get(nodeId); - if (!node) throw new Error("node not found: " + nodeId); - return node; - } - - function link$2(links) { - var id = index$3, - strength = defaultStrength, - strengths, - distance = constant$4(30), - distances, - nodes, - count, - bias, - random, - iterations = 1; - - if (links == null) links = []; - - function defaultStrength(link) { - return 1 / Math.min(count[link.source.index], count[link.target.index]); - } - - function force(alpha) { - for (var k = 0, n = links.length; k < iterations; ++k) { - for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) { - link = links[i], source = link.source, target = link.target; - x = target.x + target.vx - source.x - source.vx || jiggle(random); - y = target.y + target.vy - source.y - source.vy || jiggle(random); - l = Math.sqrt(x * x + y * y); - l = (l - distances[i]) / l * alpha * strengths[i]; - x *= l, y *= l; - target.vx -= x * (b = bias[i]); - target.vy -= y * b; - source.vx += x * (b = 1 - b); - source.vy += y * b; - } - } - } - - function initialize() { - if (!nodes) return; - - var i, - n = nodes.length, - m = links.length, - nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])), - link; - - for (i = 0, count = new Array(n); i < m; ++i) { - link = links[i], link.index = i; - if (typeof link.source !== "object") link.source = find(nodeById, link.source); - if (typeof link.target !== "object") link.target = find(nodeById, link.target); - count[link.source.index] = (count[link.source.index] || 0) + 1; - count[link.target.index] = (count[link.target.index] || 0) + 1; - } - - for (i = 0, bias = new Array(m); i < m; ++i) { - link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]); - } - - strengths = new Array(m), initializeStrength(); - distances = new Array(m), initializeDistance(); - } - - function initializeStrength() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - strengths[i] = +strength(links[i], i, links); - } - } - - function initializeDistance() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - distances[i] = +distance(links[i], i, links); - } - } - - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - - force.links = function(_) { - return arguments.length ? (links = _, initialize(), force) : links; - }; - - force.id = function(_) { - return arguments.length ? (id = _, force) : id; - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$4(+_), initializeStrength(), force) : strength; - }; - - force.distance = function(_) { - return arguments.length ? (distance = typeof _ === "function" ? _ : constant$4(+_), initializeDistance(), force) : distance; - }; - - return force; - } - - // https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use - const a$3 = 1664525; - const c$5 = 1013904223; - const m$3 = 4294967296; // 2^32 - - function lcg$2() { - let s = 1; - return () => (s = (a$3 * s + c$5) % m$3) / m$3; - } - - function x$4(d) { - return d.x; - } - - function y$3(d) { - return d.y; - } - - var initialRadius = 10, - initialAngle = Math.PI * (3 - Math.sqrt(5)); - - function simulation(nodes) { - var simulation, - alpha = 1, - alphaMin = 0.001, - alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), - alphaTarget = 0, - velocityDecay = 0.6, - forces = new Map(), - stepper = timer(step), - event = dispatch("tick", "end"), - random = lcg$2(); - - if (nodes == null) nodes = []; - - function step() { - tick(); - event.call("tick", simulation); - if (alpha < alphaMin) { - stepper.stop(); - event.call("end", simulation); - } - } - - function tick(iterations) { - var i, n = nodes.length, node; - - if (iterations === undefined) iterations = 1; - - for (var k = 0; k < iterations; ++k) { - alpha += (alphaTarget - alpha) * alphaDecay; - - forces.forEach(function(force) { - force(alpha); - }); - - for (i = 0; i < n; ++i) { - node = nodes[i]; - if (node.fx == null) node.x += node.vx *= velocityDecay; - else node.x = node.fx, node.vx = 0; - if (node.fy == null) node.y += node.vy *= velocityDecay; - else node.y = node.fy, node.vy = 0; - } - } - - return simulation; - } - - function initializeNodes() { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.index = i; - if (node.fx != null) node.x = node.fx; - if (node.fy != null) node.y = node.fy; - if (isNaN(node.x) || isNaN(node.y)) { - var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle; - node.x = radius * Math.cos(angle); - node.y = radius * Math.sin(angle); - } - if (isNaN(node.vx) || isNaN(node.vy)) { - node.vx = node.vy = 0; - } - } - } - - function initializeForce(force) { - if (force.initialize) force.initialize(nodes, random); - return force; - } - - initializeNodes(); - - return simulation = { - tick: tick, - - restart: function() { - return stepper.restart(step), simulation; - }, - - stop: function() { - return stepper.stop(), simulation; - }, - - nodes: function(_) { - return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes; - }, - - alpha: function(_) { - return arguments.length ? (alpha = +_, simulation) : alpha; - }, - - alphaMin: function(_) { - return arguments.length ? (alphaMin = +_, simulation) : alphaMin; - }, - - alphaDecay: function(_) { - return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; - }, - - alphaTarget: function(_) { - return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; - }, - - velocityDecay: function(_) { - return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; - }, - - randomSource: function(_) { - return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random; - }, - - force: function(name, _) { - return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name); - }, - - find: function(x, y, radius) { - var i = 0, - n = nodes.length, - dx, - dy, - d2, - node, - closest; - - if (radius == null) radius = Infinity; - else radius *= radius; - - for (i = 0; i < n; ++i) { - node = nodes[i]; - dx = x - node.x; - dy = y - node.y; - d2 = dx * dx + dy * dy; - if (d2 < radius) closest = node, radius = d2; - } - - return closest; - }, - - on: function(name, _) { - return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); - } - }; - } - - function manyBody() { - var nodes, - node, - random, - alpha, - strength = constant$4(-30), - strengths, - distanceMin2 = 1, - distanceMax2 = Infinity, - theta2 = 0.81; - - function force(_) { - var i, n = nodes.length, tree = quadtree(nodes, x$4, y$3).visitAfter(accumulate); - for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply); - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - strengths = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes); - } - - function accumulate(quad) { - var strength = 0, q, c, weight = 0, x, y, i; - - // For internal nodes, accumulate forces from child quadrants. - if (quad.length) { - for (x = y = i = 0; i < 4; ++i) { - if ((q = quad[i]) && (c = Math.abs(q.value))) { - strength += q.value, weight += c, x += c * q.x, y += c * q.y; - } - } - quad.x = x / weight; - quad.y = y / weight; - } - - // For leaf nodes, accumulate forces from coincident quadrants. - else { - q = quad; - q.x = q.data.x; - q.y = q.data.y; - do strength += strengths[q.data.index]; - while (q = q.next); - } - - quad.value = strength; - } - - function apply(quad, x1, _, x2) { - if (!quad.value) return true; - - var x = quad.x - node.x, - y = quad.y - node.y, - w = x2 - x1, - l = x * x + y * y; - - // Apply the Barnes-Hut approximation if possible. - // Limit forces for very close nodes; randomize direction if coincident. - if (w * w / theta2 < l) { - if (l < distanceMax2) { - if (x === 0) x = jiggle(random), l += x * x; - if (y === 0) y = jiggle(random), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - node.vx += x * quad.value * alpha / l; - node.vy += y * quad.value * alpha / l; - } - return true; - } - - // Otherwise, process points directly. - else if (quad.length || l >= distanceMax2) return; - - // Limit forces for very close nodes; randomize direction if coincident. - if (quad.data !== node || quad.next) { - if (x === 0) x = jiggle(random), l += x * x; - if (y === 0) y = jiggle(random), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - } - - do if (quad.data !== node) { - w = strengths[quad.data.index] * alpha / l; - node.vx += x * w; - node.vy += y * w; - } while (quad = quad.next); - } - - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : strength; - }; - - force.distanceMin = function(_) { - return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); - }; - - force.distanceMax = function(_) { - return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); - }; - - force.theta = function(_) { - return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); - }; - - return force; - } - - function radial$1(radius, x, y) { - var nodes, - strength = constant$4(0.1), - strengths, - radiuses; - - if (typeof radius !== "function") radius = constant$4(+radius); - if (x == null) x = 0; - if (y == null) y = 0; - - function force(alpha) { - for (var i = 0, n = nodes.length; i < n; ++i) { - var node = nodes[i], - dx = node.x - x || 1e-6, - dy = node.y - y || 1e-6, - r = Math.sqrt(dx * dx + dy * dy), - k = (radiuses[i] - r) * strengths[i] * alpha / r; - node.vx += dx * k; - node.vy += dy * k; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - radiuses = new Array(n); - for (i = 0; i < n; ++i) { - radiuses[i] = +radius(nodes[i], i, nodes); - strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _, initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : radius; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - return force; - } - - function x$3(x) { - var strength = constant$4(0.1), - nodes, - strengths, - xz; - - if (typeof x !== "function") x = constant$4(x == null ? 0 : +x); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - xz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : strength; - }; - - force.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : x; - }; - - return force; - } - - function y$2(y) { - var strength = constant$4(0.1), - nodes, - strengths, - yz; - - if (typeof y !== "function") y = constant$4(y == null ? 0 : +y); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - yz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : strength; - }; - - force.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : y; - }; - - return force; - } - - function formatDecimal(x) { - return Math.abs(x = Math.round(x)) >= 1e21 - ? x.toLocaleString("en").replace(/,/g, "") - : x.toString(10); - } - - // Computes the decimal coefficient and exponent of the specified number x with - // significant digits p, where x is positive and p is in [1, 21] or undefined. - // For example, formatDecimalParts(1.23) returns ["123", 0]. - function formatDecimalParts(x, p) { - if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity - var i, coefficient = x.slice(0, i); - - // The string returned by toExponential either has the form \d\.\d+e[-+]\d+ - // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). - return [ - coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, - +x.slice(i + 1) - ]; - } - - function exponent(x) { - return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN; - } - - function formatGroup(grouping, thousands) { - return function(value, width) { - var i = value.length, - t = [], - j = 0, - g = grouping[0], - length = 0; - - while (i > 0 && g > 0) { - if (length + g + 1 > width) g = Math.max(1, width - length); - t.push(value.substring(i -= g, i + g)); - if ((length += g + 1) > width) break; - g = grouping[j = (j + 1) % grouping.length]; - } - - return t.reverse().join(thousands); - }; - } - - function formatNumerals(numerals) { - return function(value) { - return value.replace(/[0-9]/g, function(i) { - return numerals[+i]; - }); - }; - } - - // [[fill]align][sign][symbol][0][width][,][.precision][~][type] - var re$2 = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; - - function formatSpecifier(specifier) { - if (!(match = re$2.exec(specifier))) throw new Error("invalid format: " + specifier); - var match; - return new FormatSpecifier({ - fill: match[1], - align: match[2], - sign: match[3], - symbol: match[4], - zero: match[5], - width: match[6], - comma: match[7], - precision: match[8] && match[8].slice(1), - trim: match[9], - type: match[10] - }); - } - - formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof - - function FormatSpecifier(specifier) { - this.fill = specifier.fill === undefined ? " " : specifier.fill + ""; - this.align = specifier.align === undefined ? ">" : specifier.align + ""; - this.sign = specifier.sign === undefined ? "-" : specifier.sign + ""; - this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + ""; - this.zero = !!specifier.zero; - this.width = specifier.width === undefined ? undefined : +specifier.width; - this.comma = !!specifier.comma; - this.precision = specifier.precision === undefined ? undefined : +specifier.precision; - this.trim = !!specifier.trim; - this.type = specifier.type === undefined ? "" : specifier.type + ""; - } - - FormatSpecifier.prototype.toString = function() { - return this.fill - + this.align - + this.sign - + this.symbol - + (this.zero ? "0" : "") - + (this.width === undefined ? "" : Math.max(1, this.width | 0)) - + (this.comma ? "," : "") - + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0)) - + (this.trim ? "~" : "") - + this.type; - }; - - // Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. - function formatTrim(s) { - out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { - switch (s[i]) { - case ".": i0 = i1 = i; break; - case "0": if (i0 === 0) i0 = i; i1 = i; break; - default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break; - } - } - return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; - } - - var prefixExponent; - - function formatPrefixAuto(x, p) { - var d = formatDecimalParts(x, p); - if (!d) return x + ""; - var coefficient = d[0], - exponent = d[1], - i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, - n = coefficient.length; - return i === n ? coefficient - : i > n ? coefficient + new Array(i - n + 1).join("0") - : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) - : "0." + new Array(1 - i).join("0") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y! - } - - function formatRounded(x, p) { - var d = formatDecimalParts(x, p); - if (!d) return x + ""; - var coefficient = d[0], - exponent = d[1]; - return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient - : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) - : coefficient + new Array(exponent - coefficient.length + 2).join("0"); - } - - var formatTypes = { - "%": (x, p) => (x * 100).toFixed(p), - "b": (x) => Math.round(x).toString(2), - "c": (x) => x + "", - "d": formatDecimal, - "e": (x, p) => x.toExponential(p), - "f": (x, p) => x.toFixed(p), - "g": (x, p) => x.toPrecision(p), - "o": (x) => Math.round(x).toString(8), - "p": (x, p) => formatRounded(x * 100, p), - "r": formatRounded, - "s": formatPrefixAuto, - "X": (x) => Math.round(x).toString(16).toUpperCase(), - "x": (x) => Math.round(x).toString(16) - }; - - function identity$6(x) { - return x; - } - - var map = Array.prototype.map, - prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"]; - - function formatLocale$1(locale) { - var group = locale.grouping === undefined || locale.thousands === undefined ? identity$6 : formatGroup(map.call(locale.grouping, Number), locale.thousands + ""), - currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "", - currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "", - decimal = locale.decimal === undefined ? "." : locale.decimal + "", - numerals = locale.numerals === undefined ? identity$6 : formatNumerals(map.call(locale.numerals, String)), - percent = locale.percent === undefined ? "%" : locale.percent + "", - minus = locale.minus === undefined ? "−" : locale.minus + "", - nan = locale.nan === undefined ? "NaN" : locale.nan + ""; - - function newFormat(specifier) { - specifier = formatSpecifier(specifier); - - var fill = specifier.fill, - align = specifier.align, - sign = specifier.sign, - symbol = specifier.symbol, - zero = specifier.zero, - width = specifier.width, - comma = specifier.comma, - precision = specifier.precision, - trim = specifier.trim, - type = specifier.type; - - // The "n" type is an alias for ",g". - if (type === "n") comma = true, type = "g"; - - // The "" type, and any invalid type, is an alias for ".12~g". - else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = "g"; - - // If zero fill is specified, padding goes after sign and before digits. - if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "="; - - // Compute the prefix and suffix. - // For SI-prefix, the suffix is lazily computed. - var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", - suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : ""; - - // What format function should we use? - // Is this an integer type? - // Can this type generate exponential notation? - var formatType = formatTypes[type], - maybeSuffix = /[defgprs%]/.test(type); - - // Set the default precision if not specified, - // or clamp the specified precision to the supported range. - // For significant precision, it must be in [1, 21]. - // For fixed precision, it must be in [0, 20]. - precision = precision === undefined ? 6 - : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) - : Math.max(0, Math.min(20, precision)); - - function format(value) { - var valuePrefix = prefix, - valueSuffix = suffix, - i, n, c; - - if (type === "c") { - valueSuffix = formatType(value) + valueSuffix; - value = ""; - } else { - value = +value; - - // Determine the sign. -0 is not less than 0, but 1 / -0 is! - var valueNegative = value < 0 || 1 / value < 0; - - // Perform the initial formatting. - value = isNaN(value) ? nan : formatType(Math.abs(value), precision); - - // Trim insignificant zeros. - if (trim) value = formatTrim(value); - - // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign. - if (valueNegative && +value === 0 && sign !== "+") valueNegative = false; - - // Compute the prefix and suffix. - valuePrefix = (valueNegative ? (sign === "(" ? sign : minus) : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; - valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); - - // Break the formatted value into the integer “value” part that can be - // grouped, and fractional or exponential “suffix” part that is not. - if (maybeSuffix) { - i = -1, n = value.length; - while (++i < n) { - if (c = value.charCodeAt(i), 48 > c || c > 57) { - valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; - value = value.slice(0, i); - break; - } - } - } - } - - // If the fill character is not "0", grouping is applied before padding. - if (comma && !zero) value = group(value, Infinity); - - // Compute the padding. - var length = valuePrefix.length + value.length + valueSuffix.length, - padding = length < width ? new Array(width - length + 1).join(fill) : ""; - - // If the fill character is "0", grouping is applied after padding. - if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; - - // Reconstruct the final output based on the desired alignment. - switch (align) { - case "<": value = valuePrefix + value + valueSuffix + padding; break; - case "=": value = valuePrefix + padding + value + valueSuffix; break; - case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break; - default: value = padding + valuePrefix + value + valueSuffix; break; - } - - return numerals(value); - } - - format.toString = function() { - return specifier + ""; - }; - - return format; - } - - function formatPrefix(specifier, value) { - var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), - e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3, - k = Math.pow(10, -e), - prefix = prefixes[8 + e / 3]; - return function(value) { - return f(k * value) + prefix; - }; - } - - return { - format: newFormat, - formatPrefix: formatPrefix - }; - } - - var locale$1; - var format; - var formatPrefix; - - defaultLocale$1({ - thousands: ",", - grouping: [3], - currency: ["$", ""] - }); - - function defaultLocale$1(definition) { - locale$1 = formatLocale$1(definition); - format = locale$1.format; - formatPrefix = locale$1.formatPrefix; - return locale$1; - } - - function precisionFixed(step) { - return Math.max(0, -exponent(Math.abs(step))); - } - - function precisionPrefix(step, value) { - return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step))); - } - - function precisionRound(step, max) { - step = Math.abs(step), max = Math.abs(max) - step; - return Math.max(0, exponent(max) - exponent(step)) + 1; - } - - var epsilon$1 = 1e-6; - var epsilon2 = 1e-12; - var pi$1 = Math.PI; - var halfPi$1 = pi$1 / 2; - var quarterPi = pi$1 / 4; - var tau$1 = pi$1 * 2; - - var degrees = 180 / pi$1; - var radians = pi$1 / 180; - - var abs$1 = Math.abs; - var atan = Math.atan; - var atan2$1 = Math.atan2; - var cos$1 = Math.cos; - var ceil = Math.ceil; - var exp = Math.exp; - var hypot = Math.hypot; - var log$1 = Math.log; - var pow$1 = Math.pow; - var sin$1 = Math.sin; - var sign$1 = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }; - var sqrt$2 = Math.sqrt; - var tan = Math.tan; - - function acos$1(x) { - return x > 1 ? 0 : x < -1 ? pi$1 : Math.acos(x); - } - - function asin$1(x) { - return x > 1 ? halfPi$1 : x < -1 ? -halfPi$1 : Math.asin(x); - } - - function haversin(x) { - return (x = sin$1(x / 2)) * x; - } - - function noop$1() {} - - function streamGeometry(geometry, stream) { - if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { - streamGeometryType[geometry.type](geometry, stream); - } - } - - var streamObjectType = { - Feature: function(object, stream) { - streamGeometry(object.geometry, stream); - }, - FeatureCollection: function(object, stream) { - var features = object.features, i = -1, n = features.length; - while (++i < n) streamGeometry(features[i].geometry, stream); - } - }; - - var streamGeometryType = { - Sphere: function(object, stream) { - stream.sphere(); - }, - Point: function(object, stream) { - object = object.coordinates; - stream.point(object[0], object[1], object[2]); - }, - MultiPoint: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); - }, - LineString: function(object, stream) { - streamLine(object.coordinates, stream, 0); - }, - MultiLineString: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamLine(coordinates[i], stream, 0); - }, - Polygon: function(object, stream) { - streamPolygon(object.coordinates, stream); - }, - MultiPolygon: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamPolygon(coordinates[i], stream); - }, - GeometryCollection: function(object, stream) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) streamGeometry(geometries[i], stream); - } - }; - - function streamLine(coordinates, stream, closed) { - var i = -1, n = coordinates.length - closed, coordinate; - stream.lineStart(); - while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); - stream.lineEnd(); - } - - function streamPolygon(coordinates, stream) { - var i = -1, n = coordinates.length; - stream.polygonStart(); - while (++i < n) streamLine(coordinates[i], stream, 1); - stream.polygonEnd(); - } - - function geoStream(object, stream) { - if (object && streamObjectType.hasOwnProperty(object.type)) { - streamObjectType[object.type](object, stream); - } else { - streamGeometry(object, stream); - } - } - - var areaRingSum$1 = new Adder(); - - // hello? - - var areaSum$1 = new Adder(), - lambda00$2, - phi00$2, - lambda0$2, - cosPhi0$1, - sinPhi0$1; - - var areaStream$1 = { - point: noop$1, - lineStart: noop$1, - lineEnd: noop$1, - polygonStart: function() { - areaRingSum$1 = new Adder(); - areaStream$1.lineStart = areaRingStart$1; - areaStream$1.lineEnd = areaRingEnd$1; - }, - polygonEnd: function() { - var areaRing = +areaRingSum$1; - areaSum$1.add(areaRing < 0 ? tau$1 + areaRing : areaRing); - this.lineStart = this.lineEnd = this.point = noop$1; - }, - sphere: function() { - areaSum$1.add(tau$1); - } - }; - - function areaRingStart$1() { - areaStream$1.point = areaPointFirst$1; - } - - function areaRingEnd$1() { - areaPoint$1(lambda00$2, phi00$2); - } - - function areaPointFirst$1(lambda, phi) { - areaStream$1.point = areaPoint$1; - lambda00$2 = lambda, phi00$2 = phi; - lambda *= radians, phi *= radians; - lambda0$2 = lambda, cosPhi0$1 = cos$1(phi = phi / 2 + quarterPi), sinPhi0$1 = sin$1(phi); - } - - function areaPoint$1(lambda, phi) { - lambda *= radians, phi *= radians; - phi = phi / 2 + quarterPi; // half the angular distance from south pole - - // Spherical excess E for a spherical triangle with vertices: south pole, - // previous point, current point. Uses a formula derived from Cagnoli’s - // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2). - var dLambda = lambda - lambda0$2, - sdLambda = dLambda >= 0 ? 1 : -1, - adLambda = sdLambda * dLambda, - cosPhi = cos$1(phi), - sinPhi = sin$1(phi), - k = sinPhi0$1 * sinPhi, - u = cosPhi0$1 * cosPhi + k * cos$1(adLambda), - v = k * sdLambda * sin$1(adLambda); - areaRingSum$1.add(atan2$1(v, u)); - - // Advance the previous points. - lambda0$2 = lambda, cosPhi0$1 = cosPhi, sinPhi0$1 = sinPhi; - } - - function area$2(object) { - areaSum$1 = new Adder(); - geoStream(object, areaStream$1); - return areaSum$1 * 2; - } - - function spherical(cartesian) { - return [atan2$1(cartesian[1], cartesian[0]), asin$1(cartesian[2])]; - } - - function cartesian(spherical) { - var lambda = spherical[0], phi = spherical[1], cosPhi = cos$1(phi); - return [cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)]; - } - - function cartesianDot(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; - } - - function cartesianCross(a, b) { - return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; - } - - // TODO return a - function cartesianAddInPlace(a, b) { - a[0] += b[0], a[1] += b[1], a[2] += b[2]; - } - - function cartesianScale(vector, k) { - return [vector[0] * k, vector[1] * k, vector[2] * k]; - } - - // TODO return d - function cartesianNormalizeInPlace(d) { - var l = sqrt$2(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); - d[0] /= l, d[1] /= l, d[2] /= l; - } - - var lambda0$1, phi0, lambda1, phi1, // bounds - lambda2, // previous lambda-coordinate - lambda00$1, phi00$1, // first point - p0, // previous 3D point - deltaSum, - ranges, - range; - - var boundsStream$1 = { - point: boundsPoint$1, - lineStart: boundsLineStart, - lineEnd: boundsLineEnd, - polygonStart: function() { - boundsStream$1.point = boundsRingPoint; - boundsStream$1.lineStart = boundsRingStart; - boundsStream$1.lineEnd = boundsRingEnd; - deltaSum = new Adder(); - areaStream$1.polygonStart(); - }, - polygonEnd: function() { - areaStream$1.polygonEnd(); - boundsStream$1.point = boundsPoint$1; - boundsStream$1.lineStart = boundsLineStart; - boundsStream$1.lineEnd = boundsLineEnd; - if (areaRingSum$1 < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - else if (deltaSum > epsilon$1) phi1 = 90; - else if (deltaSum < -epsilon$1) phi0 = -90; - range[0] = lambda0$1, range[1] = lambda1; - }, - sphere: function() { - lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - } - }; - - function boundsPoint$1(lambda, phi) { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - } - - function linePoint(lambda, phi) { - var p = cartesian([lambda * radians, phi * radians]); - if (p0) { - var normal = cartesianCross(p0, p), - equatorial = [normal[1], -normal[0], 0], - inflection = cartesianCross(equatorial, normal); - cartesianNormalizeInPlace(inflection); - inflection = spherical(inflection); - var delta = lambda - lambda2, - sign = delta > 0 ? 1 : -1, - lambdai = inflection[0] * degrees * sign, - phii, - antimeridian = abs$1(delta) > 180; - if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { - phii = inflection[1] * degrees; - if (phii > phi1) phi1 = phii; - } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { - phii = -inflection[1] * degrees; - if (phii < phi0) phi0 = phii; - } else { - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - } - if (antimeridian) { - if (lambda < lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } else { - if (lambda1 >= lambda0$1) { - if (lambda < lambda0$1) lambda0$1 = lambda; - if (lambda > lambda1) lambda1 = lambda; - } else { - if (lambda > lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } - } - } else { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - } - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - p0 = p, lambda2 = lambda; - } - - function boundsLineStart() { - boundsStream$1.point = linePoint; - } - - function boundsLineEnd() { - range[0] = lambda0$1, range[1] = lambda1; - boundsStream$1.point = boundsPoint$1; - p0 = null; - } - - function boundsRingPoint(lambda, phi) { - if (p0) { - var delta = lambda - lambda2; - deltaSum.add(abs$1(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta); - } else { - lambda00$1 = lambda, phi00$1 = phi; - } - areaStream$1.point(lambda, phi); - linePoint(lambda, phi); - } - - function boundsRingStart() { - areaStream$1.lineStart(); - } - - function boundsRingEnd() { - boundsRingPoint(lambda00$1, phi00$1); - areaStream$1.lineEnd(); - if (abs$1(deltaSum) > epsilon$1) lambda0$1 = -(lambda1 = 180); - range[0] = lambda0$1, range[1] = lambda1; - p0 = null; - } - - // Finds the left-right distance between two longitudes. - // This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want - // the distance between ±180° to be 360°. - function angle(lambda0, lambda1) { - return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1; - } - - function rangeCompare(a, b) { - return a[0] - b[0]; - } - - function rangeContains(range, x) { - return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; - } - - function bounds(feature) { - var i, n, a, b, merged, deltaMax, delta; - - phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity); - ranges = []; - geoStream(feature, boundsStream$1); - - // First, sort ranges by their minimum longitudes. - if (n = ranges.length) { - ranges.sort(rangeCompare); - - // Then, merge any ranges that overlap. - for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) { - b = ranges[i]; - if (rangeContains(a, b[0]) || rangeContains(a, b[1])) { - if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; - if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; - } else { - merged.push(a = b); - } - } - - // Finally, find the largest gap between the merged ranges. - // The final bounding box will be the inverse of this gap. - for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) { - b = merged[i]; - if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1]; - } - } - - ranges = range = null; - - return lambda0$1 === Infinity || phi0 === Infinity - ? [[NaN, NaN], [NaN, NaN]] - : [[lambda0$1, phi0], [lambda1, phi1]]; - } - - var W0, W1, - X0$1, Y0$1, Z0$1, - X1$1, Y1$1, Z1$1, - X2$1, Y2$1, Z2$1, - lambda00, phi00, // first point - x0$4, y0$4, z0; // previous point - - var centroidStream$1 = { - sphere: noop$1, - point: centroidPoint$1, - lineStart: centroidLineStart$1, - lineEnd: centroidLineEnd$1, - polygonStart: function() { - centroidStream$1.lineStart = centroidRingStart$1; - centroidStream$1.lineEnd = centroidRingEnd$1; - }, - polygonEnd: function() { - centroidStream$1.lineStart = centroidLineStart$1; - centroidStream$1.lineEnd = centroidLineEnd$1; - } - }; - - // Arithmetic mean of Cartesian vectors. - function centroidPoint$1(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi); - centroidPointCartesian(cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)); - } - - function centroidPointCartesian(x, y, z) { - ++W0; - X0$1 += (x - X0$1) / W0; - Y0$1 += (y - Y0$1) / W0; - Z0$1 += (z - Z0$1) / W0; - } - - function centroidLineStart$1() { - centroidStream$1.point = centroidLinePointFirst; - } - - function centroidLinePointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi); - x0$4 = cosPhi * cos$1(lambda); - y0$4 = cosPhi * sin$1(lambda); - z0 = sin$1(phi); - centroidStream$1.point = centroidLinePoint; - centroidPointCartesian(x0$4, y0$4, z0); - } - - function centroidLinePoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi), - x = cosPhi * cos$1(lambda), - y = cosPhi * sin$1(lambda), - z = sin$1(phi), - w = atan2$1(sqrt$2((w = y0$4 * z - z0 * y) * w + (w = z0 * x - x0$4 * z) * w + (w = x0$4 * y - y0$4 * x) * w), x0$4 * x + y0$4 * y + z0 * z); - W1 += w; - X1$1 += w * (x0$4 + (x0$4 = x)); - Y1$1 += w * (y0$4 + (y0$4 = y)); - Z1$1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0$4, y0$4, z0); - } - - function centroidLineEnd$1() { - centroidStream$1.point = centroidPoint$1; - } - - // See J. E. Brock, The Inertia Tensor for a Spherical Triangle, - // J. Applied Mechanics 42, 239 (1975). - function centroidRingStart$1() { - centroidStream$1.point = centroidRingPointFirst; - } - - function centroidRingEnd$1() { - centroidRingPoint(lambda00, phi00); - centroidStream$1.point = centroidPoint$1; - } - - function centroidRingPointFirst(lambda, phi) { - lambda00 = lambda, phi00 = phi; - lambda *= radians, phi *= radians; - centroidStream$1.point = centroidRingPoint; - var cosPhi = cos$1(phi); - x0$4 = cosPhi * cos$1(lambda); - y0$4 = cosPhi * sin$1(lambda); - z0 = sin$1(phi); - centroidPointCartesian(x0$4, y0$4, z0); - } - - function centroidRingPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi), - x = cosPhi * cos$1(lambda), - y = cosPhi * sin$1(lambda), - z = sin$1(phi), - cx = y0$4 * z - z0 * y, - cy = z0 * x - x0$4 * z, - cz = x0$4 * y - y0$4 * x, - m = hypot(cx, cy, cz), - w = asin$1(m), // line weight = angle - v = m && -w / m; // area weight multiplier - X2$1.add(v * cx); - Y2$1.add(v * cy); - Z2$1.add(v * cz); - W1 += w; - X1$1 += w * (x0$4 + (x0$4 = x)); - Y1$1 += w * (y0$4 + (y0$4 = y)); - Z1$1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0$4, y0$4, z0); - } - - function centroid$1(object) { - W0 = W1 = - X0$1 = Y0$1 = Z0$1 = - X1$1 = Y1$1 = Z1$1 = 0; - X2$1 = new Adder(); - Y2$1 = new Adder(); - Z2$1 = new Adder(); - geoStream(object, centroidStream$1); - - var x = +X2$1, - y = +Y2$1, - z = +Z2$1, - m = hypot(x, y, z); - - // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid. - if (m < epsilon2) { - x = X1$1, y = Y1$1, z = Z1$1; - // If the feature has zero length, fall back to arithmetic mean of point vectors. - if (W1 < epsilon$1) x = X0$1, y = Y0$1, z = Z0$1; - m = hypot(x, y, z); - // If the feature still has an undefined ccentroid, then return. - if (m < epsilon2) return [NaN, NaN]; - } - - return [atan2$1(y, x) * degrees, asin$1(z / m) * degrees]; - } - - function constant$3(x) { - return function() { - return x; - }; - } - - function compose(a, b) { - - function compose(x, y) { - return x = a(x, y), b(x[0], x[1]); - } - - if (a.invert && b.invert) compose.invert = function(x, y) { - return x = b.invert(x, y), x && a.invert(x[0], x[1]); - }; - - return compose; - } - - function rotationIdentity(lambda, phi) { - if (abs$1(lambda) > pi$1) lambda -= Math.round(lambda / tau$1) * tau$1; - return [lambda, phi]; - } - - rotationIdentity.invert = rotationIdentity; - - function rotateRadians(deltaLambda, deltaPhi, deltaGamma) { - return (deltaLambda %= tau$1) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) - : rotationLambda(deltaLambda)) - : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) - : rotationIdentity); - } - - function forwardRotationLambda(deltaLambda) { - return function(lambda, phi) { - lambda += deltaLambda; - if (abs$1(lambda) > pi$1) lambda -= Math.round(lambda / tau$1) * tau$1; - return [lambda, phi]; - }; - } - - function rotationLambda(deltaLambda) { - var rotation = forwardRotationLambda(deltaLambda); - rotation.invert = forwardRotationLambda(-deltaLambda); - return rotation; - } - - function rotationPhiGamma(deltaPhi, deltaGamma) { - var cosDeltaPhi = cos$1(deltaPhi), - sinDeltaPhi = sin$1(deltaPhi), - cosDeltaGamma = cos$1(deltaGamma), - sinDeltaGamma = sin$1(deltaGamma); - - function rotation(lambda, phi) { - var cosPhi = cos$1(phi), - x = cos$1(lambda) * cosPhi, - y = sin$1(lambda) * cosPhi, - z = sin$1(phi), - k = z * cosDeltaPhi + x * sinDeltaPhi; - return [ - atan2$1(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), - asin$1(k * cosDeltaGamma + y * sinDeltaGamma) - ]; - } - - rotation.invert = function(lambda, phi) { - var cosPhi = cos$1(phi), - x = cos$1(lambda) * cosPhi, - y = sin$1(lambda) * cosPhi, - z = sin$1(phi), - k = z * cosDeltaGamma - y * sinDeltaGamma; - return [ - atan2$1(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), - asin$1(k * cosDeltaPhi - x * sinDeltaPhi) - ]; - }; - - return rotation; - } - - function rotation(rotate) { - rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0); - - function forward(coordinates) { - coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates; - } - - forward.invert = function(coordinates) { - coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates; - }; - - return forward; - } - - // Generates a circle centered at [0°, 0°], with a given radius and precision. - function circleStream(stream, radius, delta, direction, t0, t1) { - if (!delta) return; - var cosRadius = cos$1(radius), - sinRadius = sin$1(radius), - step = direction * delta; - if (t0 == null) { - t0 = radius + direction * tau$1; - t1 = radius - step / 2; - } else { - t0 = circleRadius(cosRadius, t0); - t1 = circleRadius(cosRadius, t1); - if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau$1; - } - for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) { - point = spherical([cosRadius, -sinRadius * cos$1(t), -sinRadius * sin$1(t)]); - stream.point(point[0], point[1]); - } - } - - // Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. - function circleRadius(cosRadius, point) { - point = cartesian(point), point[0] -= cosRadius; - cartesianNormalizeInPlace(point); - var radius = acos$1(-point[1]); - return ((-point[2] < 0 ? -radius : radius) + tau$1 - epsilon$1) % tau$1; - } - - function circle$1() { - var center = constant$3([0, 0]), - radius = constant$3(90), - precision = constant$3(2), - ring, - rotate, - stream = {point: point}; - - function point(x, y) { - ring.push(x = rotate(x, y)); - x[0] *= degrees, x[1] *= degrees; - } - - function circle() { - var c = center.apply(this, arguments), - r = radius.apply(this, arguments) * radians, - p = precision.apply(this, arguments) * radians; - ring = []; - rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert; - circleStream(stream, r, p, 1); - c = {type: "Polygon", coordinates: [ring]}; - ring = rotate = null; - return c; - } - - circle.center = function(_) { - return arguments.length ? (center = typeof _ === "function" ? _ : constant$3([+_[0], +_[1]]), circle) : center; - }; - - circle.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$3(+_), circle) : radius; - }; - - circle.precision = function(_) { - return arguments.length ? (precision = typeof _ === "function" ? _ : constant$3(+_), circle) : precision; - }; - - return circle; - } - - function clipBuffer() { - var lines = [], - line; - return { - point: function(x, y, m) { - line.push([x, y, m]); - }, - lineStart: function() { - lines.push(line = []); - }, - lineEnd: noop$1, - rejoin: function() { - if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); - }, - result: function() { - var result = lines; - lines = []; - line = null; - return result; - } - }; - } - - function pointEqual(a, b) { - return abs$1(a[0] - b[0]) < epsilon$1 && abs$1(a[1] - b[1]) < epsilon$1; - } - - function Intersection(point, points, other, entry) { - this.x = point; - this.z = points; - this.o = other; // another intersection - this.e = entry; // is an entry? - this.v = false; // visited - this.n = this.p = null; // next & previous - } - - // A generalized polygon clipping algorithm: given a polygon that has been cut - // into its visible line segments, and rejoins the segments by interpolating - // along the clip edge. - function clipRejoin(segments, compareIntersection, startInside, interpolate, stream) { - var subject = [], - clip = [], - i, - n; - - segments.forEach(function(segment) { - if ((n = segment.length - 1) <= 0) return; - var n, p0 = segment[0], p1 = segment[n], x; - - if (pointEqual(p0, p1)) { - if (!p0[2] && !p1[2]) { - stream.lineStart(); - for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]); - stream.lineEnd(); - return; - } - // handle degenerate cases by moving the point - p1[0] += 2 * epsilon$1; - } - - subject.push(x = new Intersection(p0, segment, null, true)); - clip.push(x.o = new Intersection(p0, null, x, false)); - subject.push(x = new Intersection(p1, segment, null, false)); - clip.push(x.o = new Intersection(p1, null, x, true)); - }); - - if (!subject.length) return; - - clip.sort(compareIntersection); - link$1(subject); - link$1(clip); - - for (i = 0, n = clip.length; i < n; ++i) { - clip[i].e = startInside = !startInside; - } - - var start = subject[0], - points, - point; - - while (1) { - // Find first unvisited intersection. - var current = start, - isSubject = true; - while (current.v) if ((current = current.n) === start) return; - points = current.z; - stream.lineStart(); - do { - current.v = current.o.v = true; - if (current.e) { - if (isSubject) { - for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.n.x, 1, stream); - } - current = current.n; - } else { - if (isSubject) { - points = current.p.z; - for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.p.x, -1, stream); - } - current = current.p; - } - current = current.o; - points = current.z; - isSubject = !isSubject; - } while (!current.v); - stream.lineEnd(); - } - } - - function link$1(array) { - if (!(n = array.length)) return; - var n, - i = 0, - a = array[0], - b; - while (++i < n) { - a.n = b = array[i]; - b.p = a; - a = b; - } - a.n = b = array[0]; - b.p = a; - } - - function longitude(point) { - return abs$1(point[0]) <= pi$1 ? point[0] : sign$1(point[0]) * ((abs$1(point[0]) + pi$1) % tau$1 - pi$1); - } - - function polygonContains(polygon, point) { - var lambda = longitude(point), - phi = point[1], - sinPhi = sin$1(phi), - normal = [sin$1(lambda), -cos$1(lambda), 0], - angle = 0, - winding = 0; - - var sum = new Adder(); - - if (sinPhi === 1) phi = halfPi$1 + epsilon$1; - else if (sinPhi === -1) phi = -halfPi$1 - epsilon$1; - - for (var i = 0, n = polygon.length; i < n; ++i) { - if (!(m = (ring = polygon[i]).length)) continue; - var ring, - m, - point0 = ring[m - 1], - lambda0 = longitude(point0), - phi0 = point0[1] / 2 + quarterPi, - sinPhi0 = sin$1(phi0), - cosPhi0 = cos$1(phi0); - - for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) { - var point1 = ring[j], - lambda1 = longitude(point1), - phi1 = point1[1] / 2 + quarterPi, - sinPhi1 = sin$1(phi1), - cosPhi1 = cos$1(phi1), - delta = lambda1 - lambda0, - sign = delta >= 0 ? 1 : -1, - absDelta = sign * delta, - antimeridian = absDelta > pi$1, - k = sinPhi0 * sinPhi1; - - sum.add(atan2$1(k * sign * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta))); - angle += antimeridian ? delta + sign * tau$1 : delta; - - // Are the longitudes either side of the point’s meridian (lambda), - // and are the latitudes smaller than the parallel (phi)? - if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) { - var arc = cartesianCross(cartesian(point0), cartesian(point1)); - cartesianNormalizeInPlace(arc); - var intersection = cartesianCross(normal, arc); - cartesianNormalizeInPlace(intersection); - var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin$1(intersection[2]); - if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) { - winding += antimeridian ^ delta >= 0 ? 1 : -1; - } - } - } - } - - // First, determine whether the South pole is inside or outside: - // - // It is inside if: - // * the polygon winds around it in a clockwise direction. - // * the polygon does not (cumulatively) wind around it, but has a negative - // (counter-clockwise) area. - // - // Second, count the (signed) number of times a segment crosses a lambda - // from the point to the South pole. If it is zero, then the point is the - // same side as the South pole. - - return (angle < -epsilon$1 || angle < epsilon$1 && sum < -epsilon2) ^ (winding & 1); - } - - function clip(pointVisible, clipLine, interpolate, start) { - return function(sink) { - var line = clipLine(sink), - ringBuffer = clipBuffer(), - ringSink = clipLine(ringBuffer), - polygonStarted = false, - polygon, - segments, - ring; - - var clip = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { - clip.point = pointRing; - clip.lineStart = ringStart; - clip.lineEnd = ringEnd; - segments = []; - polygon = []; - }, - polygonEnd: function() { - clip.point = point; - clip.lineStart = lineStart; - clip.lineEnd = lineEnd; - segments = merge(segments); - var startInside = polygonContains(polygon, start); - if (segments.length) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - clipRejoin(segments, compareIntersection, startInside, interpolate, sink); - } else if (startInside) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - } - if (polygonStarted) sink.polygonEnd(), polygonStarted = false; - segments = polygon = null; - }, - sphere: function() { - sink.polygonStart(); - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - sink.polygonEnd(); - } - }; - - function point(lambda, phi) { - if (pointVisible(lambda, phi)) sink.point(lambda, phi); - } - - function pointLine(lambda, phi) { - line.point(lambda, phi); - } - - function lineStart() { - clip.point = pointLine; - line.lineStart(); - } - - function lineEnd() { - clip.point = point; - line.lineEnd(); - } - - function pointRing(lambda, phi) { - ring.push([lambda, phi]); - ringSink.point(lambda, phi); - } - - function ringStart() { - ringSink.lineStart(); - ring = []; - } - - function ringEnd() { - pointRing(ring[0][0], ring[0][1]); - ringSink.lineEnd(); - - var clean = ringSink.clean(), - ringSegments = ringBuffer.result(), - i, n = ringSegments.length, m, - segment, - point; - - ring.pop(); - polygon.push(ring); - ring = null; - - if (!n) return; - - // No intersections. - if (clean & 1) { - segment = ringSegments[0]; - if ((m = segment.length - 1) > 0) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]); - sink.lineEnd(); - } - return; - } - - // Rejoin connected segments. - // TODO reuse ringBuffer.rejoin()? - if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); - - segments.push(ringSegments.filter(validSegment)); - } - - return clip; - }; - } - - function validSegment(segment) { - return segment.length > 1; - } - - // Intersections are sorted along the clip edge. For both antimeridian cutting - // and circle clipping, the same comparison is used. - function compareIntersection(a, b) { - return ((a = a.x)[0] < 0 ? a[1] - halfPi$1 - epsilon$1 : halfPi$1 - a[1]) - - ((b = b.x)[0] < 0 ? b[1] - halfPi$1 - epsilon$1 : halfPi$1 - b[1]); - } - - var clipAntimeridian = clip( - function() { return true; }, - clipAntimeridianLine, - clipAntimeridianInterpolate, - [-pi$1, -halfPi$1] - ); - - // Takes a line and cuts into visible segments. Return values: 0 - there were - // intersections or the line was empty; 1 - no intersections; 2 - there were - // intersections, and the first and last segments should be rejoined. - function clipAntimeridianLine(stream) { - var lambda0 = NaN, - phi0 = NaN, - sign0 = NaN, - clean; // no intersections - - return { - lineStart: function() { - stream.lineStart(); - clean = 1; - }, - point: function(lambda1, phi1) { - var sign1 = lambda1 > 0 ? pi$1 : -pi$1, - delta = abs$1(lambda1 - lambda0); - if (abs$1(delta - pi$1) < epsilon$1) { // line crosses a pole - stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi$1 : -halfPi$1); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - stream.point(lambda1, phi0); - clean = 0; - } else if (sign0 !== sign1 && delta >= pi$1) { // line crosses antimeridian - if (abs$1(lambda0 - sign0) < epsilon$1) lambda0 -= sign0 * epsilon$1; // handle degeneracies - if (abs$1(lambda1 - sign1) < epsilon$1) lambda1 -= sign1 * epsilon$1; - phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - clean = 0; - } - stream.point(lambda0 = lambda1, phi0 = phi1); - sign0 = sign1; - }, - lineEnd: function() { - stream.lineEnd(); - lambda0 = phi0 = NaN; - }, - clean: function() { - return 2 - clean; // if intersections, rejoin first and last segments - } - }; - } - - function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) { - var cosPhi0, - cosPhi1, - sinLambda0Lambda1 = sin$1(lambda0 - lambda1); - return abs$1(sinLambda0Lambda1) > epsilon$1 - ? atan((sin$1(phi0) * (cosPhi1 = cos$1(phi1)) * sin$1(lambda1) - - sin$1(phi1) * (cosPhi0 = cos$1(phi0)) * sin$1(lambda0)) - / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) - : (phi0 + phi1) / 2; - } - - function clipAntimeridianInterpolate(from, to, direction, stream) { - var phi; - if (from == null) { - phi = direction * halfPi$1; - stream.point(-pi$1, phi); - stream.point(0, phi); - stream.point(pi$1, phi); - stream.point(pi$1, 0); - stream.point(pi$1, -phi); - stream.point(0, -phi); - stream.point(-pi$1, -phi); - stream.point(-pi$1, 0); - stream.point(-pi$1, phi); - } else if (abs$1(from[0] - to[0]) > epsilon$1) { - var lambda = from[0] < to[0] ? pi$1 : -pi$1; - phi = direction * lambda / 2; - stream.point(-lambda, phi); - stream.point(0, phi); - stream.point(lambda, phi); - } else { - stream.point(to[0], to[1]); - } - } - - function clipCircle(radius) { - var cr = cos$1(radius), - delta = 2 * radians, - smallRadius = cr > 0, - notHemisphere = abs$1(cr) > epsilon$1; // TODO optimise for this common case - - function interpolate(from, to, direction, stream) { - circleStream(stream, radius, delta, direction, from, to); - } - - function visible(lambda, phi) { - return cos$1(lambda) * cos$1(phi) > cr; - } - - // Takes a line and cuts into visible segments. Return values used for polygon - // clipping: 0 - there were intersections or the line was empty; 1 - no - // intersections 2 - there were intersections, and the first and last segments - // should be rejoined. - function clipLine(stream) { - var point0, // previous point - c0, // code for previous point - v0, // visibility of previous point - v00, // visibility of first point - clean; // no intersections - return { - lineStart: function() { - v00 = v0 = false; - clean = 1; - }, - point: function(lambda, phi) { - var point1 = [lambda, phi], - point2, - v = visible(lambda, phi), - c = smallRadius - ? v ? 0 : code(lambda, phi) - : v ? code(lambda + (lambda < 0 ? pi$1 : -pi$1), phi) : 0; - if (!point0 && (v00 = v0 = v)) stream.lineStart(); - if (v !== v0) { - point2 = intersect(point0, point1); - if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) - point1[2] = 1; - } - if (v !== v0) { - clean = 0; - if (v) { - // outside going in - stream.lineStart(); - point2 = intersect(point1, point0); - stream.point(point2[0], point2[1]); - } else { - // inside going out - point2 = intersect(point0, point1); - stream.point(point2[0], point2[1], 2); - stream.lineEnd(); - } - point0 = point2; - } else if (notHemisphere && point0 && smallRadius ^ v) { - var t; - // If the codes for two points are different, or are both zero, - // and there this segment intersects with the small circle. - if (!(c & c0) && (t = intersect(point1, point0, true))) { - clean = 0; - if (smallRadius) { - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - } else { - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - stream.lineStart(); - stream.point(t[0][0], t[0][1], 3); - } - } - } - if (v && (!point0 || !pointEqual(point0, point1))) { - stream.point(point1[0], point1[1]); - } - point0 = point1, v0 = v, c0 = c; - }, - lineEnd: function() { - if (v0) stream.lineEnd(); - point0 = null; - }, - // Rejoin first and last segments if there were intersections and the first - // and last points were visible. - clean: function() { - return clean | ((v00 && v0) << 1); - } - }; - } - - // Intersects the great circle between a and b with the clip circle. - function intersect(a, b, two) { - var pa = cartesian(a), - pb = cartesian(b); - - // We have two planes, n1.p = d1 and n2.p = d2. - // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2). - var n1 = [1, 0, 0], // normal - n2 = cartesianCross(pa, pb), - n2n2 = cartesianDot(n2, n2), - n1n2 = n2[0], // cartesianDot(n1, n2), - determinant = n2n2 - n1n2 * n1n2; - - // Two polar points. - if (!determinant) return !two && a; - - var c1 = cr * n2n2 / determinant, - c2 = -cr * n1n2 / determinant, - n1xn2 = cartesianCross(n1, n2), - A = cartesianScale(n1, c1), - B = cartesianScale(n2, c2); - cartesianAddInPlace(A, B); - - // Solve |p(t)|^2 = 1. - var u = n1xn2, - w = cartesianDot(A, u), - uu = cartesianDot(u, u), - t2 = w * w - uu * (cartesianDot(A, A) - 1); - - if (t2 < 0) return; - - var t = sqrt$2(t2), - q = cartesianScale(u, (-w - t) / uu); - cartesianAddInPlace(q, A); - q = spherical(q); - - if (!two) return q; - - // Two intersection points. - var lambda0 = a[0], - lambda1 = b[0], - phi0 = a[1], - phi1 = b[1], - z; - - if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z; - - var delta = lambda1 - lambda0, - polar = abs$1(delta - pi$1) < epsilon$1, - meridian = polar || delta < epsilon$1; - - if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z; - - // Check that the first point is between a and b. - if (meridian - ? polar - ? phi0 + phi1 > 0 ^ q[1] < (abs$1(q[0] - lambda0) < epsilon$1 ? phi0 : phi1) - : phi0 <= q[1] && q[1] <= phi1 - : delta > pi$1 ^ (lambda0 <= q[0] && q[0] <= lambda1)) { - var q1 = cartesianScale(u, (-w + t) / uu); - cartesianAddInPlace(q1, A); - return [q, spherical(q1)]; - } - } - - // Generates a 4-bit vector representing the location of a point relative to - // the small circle's bounding box. - function code(lambda, phi) { - var r = smallRadius ? radius : pi$1 - radius, - code = 0; - if (lambda < -r) code |= 1; // left - else if (lambda > r) code |= 2; // right - if (phi < -r) code |= 4; // below - else if (phi > r) code |= 8; // above - return code; - } - - return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi$1, radius - pi$1]); - } - - function clipLine(a, b, x0, y0, x1, y1) { - var ax = a[0], - ay = a[1], - bx = b[0], - by = b[1], - t0 = 0, - t1 = 1, - dx = bx - ax, - dy = by - ay, - r; - - r = x0 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dx > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = x1 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dx > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - r = y0 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dy > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = y1 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dy > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy; - if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy; - return true; - } - - var clipMax = 1e9, clipMin = -clipMax; - - // TODO Use d3-polygon’s polygonContains here for the ring check? - // TODO Eliminate duplicate buffering in clipBuffer and polygon.push? - - function clipRectangle(x0, y0, x1, y1) { - - function visible(x, y) { - return x0 <= x && x <= x1 && y0 <= y && y <= y1; - } - - function interpolate(from, to, direction, stream) { - var a = 0, a1 = 0; - if (from == null - || (a = corner(from, direction)) !== (a1 = corner(to, direction)) - || comparePoint(from, to) < 0 ^ direction > 0) { - do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); - while ((a = (a + direction + 4) % 4) !== a1); - } else { - stream.point(to[0], to[1]); - } - } - - function corner(p, direction) { - return abs$1(p[0] - x0) < epsilon$1 ? direction > 0 ? 0 : 3 - : abs$1(p[0] - x1) < epsilon$1 ? direction > 0 ? 2 : 1 - : abs$1(p[1] - y0) < epsilon$1 ? direction > 0 ? 1 : 0 - : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon - } - - function compareIntersection(a, b) { - return comparePoint(a.x, b.x); - } - - function comparePoint(a, b) { - var ca = corner(a, 1), - cb = corner(b, 1); - return ca !== cb ? ca - cb - : ca === 0 ? b[1] - a[1] - : ca === 1 ? a[0] - b[0] - : ca === 2 ? a[1] - b[1] - : b[0] - a[0]; - } - - return function(stream) { - var activeStream = stream, - bufferStream = clipBuffer(), - segments, - polygon, - ring, - x__, y__, v__, // first point - x_, y_, v_, // previous point - first, - clean; - - var clipStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: polygonStart, - polygonEnd: polygonEnd - }; - - function point(x, y) { - if (visible(x, y)) activeStream.point(x, y); - } - - function polygonInside() { - var winding = 0; - - for (var i = 0, n = polygon.length; i < n; ++i) { - for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) { - a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1]; - if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; } - else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; } - } - } - - return winding; - } - - // Buffer geometry within a polygon and then clip it en masse. - function polygonStart() { - activeStream = bufferStream, segments = [], polygon = [], clean = true; - } - - function polygonEnd() { - var startInside = polygonInside(), - cleanInside = clean && startInside, - visible = (segments = merge(segments)).length; - if (cleanInside || visible) { - stream.polygonStart(); - if (cleanInside) { - stream.lineStart(); - interpolate(null, null, 1, stream); - stream.lineEnd(); - } - if (visible) { - clipRejoin(segments, compareIntersection, startInside, interpolate, stream); - } - stream.polygonEnd(); - } - activeStream = stream, segments = polygon = ring = null; - } - - function lineStart() { - clipStream.point = linePoint; - if (polygon) polygon.push(ring = []); - first = true; - v_ = false; - x_ = y_ = NaN; - } - - // TODO rather than special-case polygons, simply handle them separately. - // Ideally, coincident intersection points should be jittered to avoid - // clipping issues. - function lineEnd() { - if (segments) { - linePoint(x__, y__); - if (v__ && v_) bufferStream.rejoin(); - segments.push(bufferStream.result()); - } - clipStream.point = point; - if (v_) activeStream.lineEnd(); - } - - function linePoint(x, y) { - var v = visible(x, y); - if (polygon) ring.push([x, y]); - if (first) { - x__ = x, y__ = y, v__ = v; - first = false; - if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - } - } else { - if (v && v_) activeStream.point(x, y); - else { - var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], - b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))]; - if (clipLine(a, b, x0, y0, x1, y1)) { - if (!v_) { - activeStream.lineStart(); - activeStream.point(a[0], a[1]); - } - activeStream.point(b[0], b[1]); - if (!v) activeStream.lineEnd(); - clean = false; - } else if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - clean = false; - } - } - } - x_ = x, y_ = y, v_ = v; - } - - return clipStream; - }; - } - - function extent() { - var x0 = 0, - y0 = 0, - x1 = 960, - y1 = 500, - cache, - cacheStream, - clip; - - return clip = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream); - }, - extent: function(_) { - return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]]; - } - }; - } - - var lengthSum$1, - lambda0, - sinPhi0, - cosPhi0; - - var lengthStream$1 = { - sphere: noop$1, - point: noop$1, - lineStart: lengthLineStart, - lineEnd: noop$1, - polygonStart: noop$1, - polygonEnd: noop$1 - }; - - function lengthLineStart() { - lengthStream$1.point = lengthPointFirst$1; - lengthStream$1.lineEnd = lengthLineEnd; - } - - function lengthLineEnd() { - lengthStream$1.point = lengthStream$1.lineEnd = noop$1; - } - - function lengthPointFirst$1(lambda, phi) { - lambda *= radians, phi *= radians; - lambda0 = lambda, sinPhi0 = sin$1(phi), cosPhi0 = cos$1(phi); - lengthStream$1.point = lengthPoint$1; - } - - function lengthPoint$1(lambda, phi) { - lambda *= radians, phi *= radians; - var sinPhi = sin$1(phi), - cosPhi = cos$1(phi), - delta = abs$1(lambda - lambda0), - cosDelta = cos$1(delta), - sinDelta = sin$1(delta), - x = cosPhi * sinDelta, - y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta, - z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta; - lengthSum$1.add(atan2$1(sqrt$2(x * x + y * y), z)); - lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi; - } - - function length$1(object) { - lengthSum$1 = new Adder(); - geoStream(object, lengthStream$1); - return +lengthSum$1; - } - - var coordinates = [null, null], - object = {type: "LineString", coordinates: coordinates}; - - function distance(a, b) { - coordinates[0] = a; - coordinates[1] = b; - return length$1(object); - } - - var containsObjectType = { - Feature: function(object, point) { - return containsGeometry(object.geometry, point); - }, - FeatureCollection: function(object, point) { - var features = object.features, i = -1, n = features.length; - while (++i < n) if (containsGeometry(features[i].geometry, point)) return true; - return false; - } - }; - - var containsGeometryType = { - Sphere: function() { - return true; - }, - Point: function(object, point) { - return containsPoint(object.coordinates, point); - }, - MultiPoint: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPoint(coordinates[i], point)) return true; - return false; - }, - LineString: function(object, point) { - return containsLine(object.coordinates, point); - }, - MultiLineString: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsLine(coordinates[i], point)) return true; - return false; - }, - Polygon: function(object, point) { - return containsPolygon(object.coordinates, point); - }, - MultiPolygon: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPolygon(coordinates[i], point)) return true; - return false; - }, - GeometryCollection: function(object, point) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) if (containsGeometry(geometries[i], point)) return true; - return false; - } - }; - - function containsGeometry(geometry, point) { - return geometry && containsGeometryType.hasOwnProperty(geometry.type) - ? containsGeometryType[geometry.type](geometry, point) - : false; - } - - function containsPoint(coordinates, point) { - return distance(coordinates, point) === 0; - } - - function containsLine(coordinates, point) { - var ao, bo, ab; - for (var i = 0, n = coordinates.length; i < n; i++) { - bo = distance(coordinates[i], point); - if (bo === 0) return true; - if (i > 0) { - ab = distance(coordinates[i], coordinates[i - 1]); - if ( - ab > 0 && - ao <= ab && - bo <= ab && - (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab - ) - return true; - } - ao = bo; - } - return false; - } - - function containsPolygon(coordinates, point) { - return !!polygonContains(coordinates.map(ringRadians), pointRadians(point)); - } - - function ringRadians(ring) { - return ring = ring.map(pointRadians), ring.pop(), ring; - } - - function pointRadians(point) { - return [point[0] * radians, point[1] * radians]; - } - - function contains$1(object, point) { - return (object && containsObjectType.hasOwnProperty(object.type) - ? containsObjectType[object.type] - : containsGeometry)(object, point); - } - - function graticuleX(y0, y1, dy) { - var y = range$2(y0, y1 - epsilon$1, dy).concat(y1); - return function(x) { return y.map(function(y) { return [x, y]; }); }; - } - - function graticuleY(x0, x1, dx) { - var x = range$2(x0, x1 - epsilon$1, dx).concat(x1); - return function(y) { return x.map(function(x) { return [x, y]; }); }; - } - - function graticule() { - var x1, x0, X1, X0, - y1, y0, Y1, Y0, - dx = 10, dy = dx, DX = 90, DY = 360, - x, y, X, Y, - precision = 2.5; - - function graticule() { - return {type: "MultiLineString", coordinates: lines()}; - } - - function lines() { - return range$2(ceil(X0 / DX) * DX, X1, DX).map(X) - .concat(range$2(ceil(Y0 / DY) * DY, Y1, DY).map(Y)) - .concat(range$2(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs$1(x % DX) > epsilon$1; }).map(x)) - .concat(range$2(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs$1(y % DY) > epsilon$1; }).map(y)); - } - - graticule.lines = function() { - return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; }); - }; - - graticule.outline = function() { - return { - type: "Polygon", - coordinates: [ - X(X0).concat( - Y(Y1).slice(1), - X(X1).reverse().slice(1), - Y(Y0).reverse().slice(1)) - ] - }; - }; - - graticule.extent = function(_) { - if (!arguments.length) return graticule.extentMinor(); - return graticule.extentMajor(_).extentMinor(_); - }; - - graticule.extentMajor = function(_) { - if (!arguments.length) return [[X0, Y0], [X1, Y1]]; - X0 = +_[0][0], X1 = +_[1][0]; - Y0 = +_[0][1], Y1 = +_[1][1]; - if (X0 > X1) _ = X0, X0 = X1, X1 = _; - if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; - return graticule.precision(precision); - }; - - graticule.extentMinor = function(_) { - if (!arguments.length) return [[x0, y0], [x1, y1]]; - x0 = +_[0][0], x1 = +_[1][0]; - y0 = +_[0][1], y1 = +_[1][1]; - if (x0 > x1) _ = x0, x0 = x1, x1 = _; - if (y0 > y1) _ = y0, y0 = y1, y1 = _; - return graticule.precision(precision); - }; - - graticule.step = function(_) { - if (!arguments.length) return graticule.stepMinor(); - return graticule.stepMajor(_).stepMinor(_); - }; - - graticule.stepMajor = function(_) { - if (!arguments.length) return [DX, DY]; - DX = +_[0], DY = +_[1]; - return graticule; - }; - - graticule.stepMinor = function(_) { - if (!arguments.length) return [dx, dy]; - dx = +_[0], dy = +_[1]; - return graticule; - }; - - graticule.precision = function(_) { - if (!arguments.length) return precision; - precision = +_; - x = graticuleX(y0, y1, 90); - y = graticuleY(x0, x1, precision); - X = graticuleX(Y0, Y1, 90); - Y = graticuleY(X0, X1, precision); - return graticule; - }; - - return graticule - .extentMajor([[-180, -90 + epsilon$1], [180, 90 - epsilon$1]]) - .extentMinor([[-180, -80 - epsilon$1], [180, 80 + epsilon$1]]); - } - - function graticule10() { - return graticule()(); - } - - function interpolate(a, b) { - var x0 = a[0] * radians, - y0 = a[1] * radians, - x1 = b[0] * radians, - y1 = b[1] * radians, - cy0 = cos$1(y0), - sy0 = sin$1(y0), - cy1 = cos$1(y1), - sy1 = sin$1(y1), - kx0 = cy0 * cos$1(x0), - ky0 = cy0 * sin$1(x0), - kx1 = cy1 * cos$1(x1), - ky1 = cy1 * sin$1(x1), - d = 2 * asin$1(sqrt$2(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))), - k = sin$1(d); - - var interpolate = d ? function(t) { - var B = sin$1(t *= d) / k, - A = sin$1(d - t) / k, - x = A * kx0 + B * kx1, - y = A * ky0 + B * ky1, - z = A * sy0 + B * sy1; - return [ - atan2$1(y, x) * degrees, - atan2$1(z, sqrt$2(x * x + y * y)) * degrees - ]; - } : function() { - return [x0 * degrees, y0 * degrees]; - }; - - interpolate.distance = d; - - return interpolate; - } - - var identity$5 = x => x; - - var areaSum = new Adder(), - areaRingSum = new Adder(), - x00$2, - y00$2, - x0$3, - y0$3; - - var areaStream = { - point: noop$1, - lineStart: noop$1, - lineEnd: noop$1, - polygonStart: function() { - areaStream.lineStart = areaRingStart; - areaStream.lineEnd = areaRingEnd; - }, - polygonEnd: function() { - areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop$1; - areaSum.add(abs$1(areaRingSum)); - areaRingSum = new Adder(); - }, - result: function() { - var area = areaSum / 2; - areaSum = new Adder(); - return area; - } - }; - - function areaRingStart() { - areaStream.point = areaPointFirst; - } - - function areaPointFirst(x, y) { - areaStream.point = areaPoint; - x00$2 = x0$3 = x, y00$2 = y0$3 = y; - } - - function areaPoint(x, y) { - areaRingSum.add(y0$3 * x - x0$3 * y); - x0$3 = x, y0$3 = y; - } - - function areaRingEnd() { - areaPoint(x00$2, y00$2); - } - - var x0$2 = Infinity, - y0$2 = x0$2, - x1 = -x0$2, - y1 = x1; - - var boundsStream = { - point: boundsPoint, - lineStart: noop$1, - lineEnd: noop$1, - polygonStart: noop$1, - polygonEnd: noop$1, - result: function() { - var bounds = [[x0$2, y0$2], [x1, y1]]; - x1 = y1 = -(y0$2 = x0$2 = Infinity); - return bounds; - } - }; - - function boundsPoint(x, y) { - if (x < x0$2) x0$2 = x; - if (x > x1) x1 = x; - if (y < y0$2) y0$2 = y; - if (y > y1) y1 = y; - } - - // TODO Enforce positive area for exterior, negative area for interior? - - var X0 = 0, - Y0 = 0, - Z0 = 0, - X1 = 0, - Y1 = 0, - Z1 = 0, - X2 = 0, - Y2 = 0, - Z2 = 0, - x00$1, - y00$1, - x0$1, - y0$1; - - var centroidStream = { - point: centroidPoint, - lineStart: centroidLineStart, - lineEnd: centroidLineEnd, - polygonStart: function() { - centroidStream.lineStart = centroidRingStart; - centroidStream.lineEnd = centroidRingEnd; - }, - polygonEnd: function() { - centroidStream.point = centroidPoint; - centroidStream.lineStart = centroidLineStart; - centroidStream.lineEnd = centroidLineEnd; - }, - result: function() { - var centroid = Z2 ? [X2 / Z2, Y2 / Z2] - : Z1 ? [X1 / Z1, Y1 / Z1] - : Z0 ? [X0 / Z0, Y0 / Z0] - : [NaN, NaN]; - X0 = Y0 = Z0 = - X1 = Y1 = Z1 = - X2 = Y2 = Z2 = 0; - return centroid; - } - }; - - function centroidPoint(x, y) { - X0 += x; - Y0 += y; - ++Z0; - } - - function centroidLineStart() { - centroidStream.point = centroidPointFirstLine; - } - - function centroidPointFirstLine(x, y) { - centroidStream.point = centroidPointLine; - centroidPoint(x0$1 = x, y0$1 = y); - } - - function centroidPointLine(x, y) { - var dx = x - x0$1, dy = y - y0$1, z = sqrt$2(dx * dx + dy * dy); - X1 += z * (x0$1 + x) / 2; - Y1 += z * (y0$1 + y) / 2; - Z1 += z; - centroidPoint(x0$1 = x, y0$1 = y); - } - - function centroidLineEnd() { - centroidStream.point = centroidPoint; - } - - function centroidRingStart() { - centroidStream.point = centroidPointFirstRing; - } - - function centroidRingEnd() { - centroidPointRing(x00$1, y00$1); - } - - function centroidPointFirstRing(x, y) { - centroidStream.point = centroidPointRing; - centroidPoint(x00$1 = x0$1 = x, y00$1 = y0$1 = y); - } - - function centroidPointRing(x, y) { - var dx = x - x0$1, - dy = y - y0$1, - z = sqrt$2(dx * dx + dy * dy); - - X1 += z * (x0$1 + x) / 2; - Y1 += z * (y0$1 + y) / 2; - Z1 += z; - - z = y0$1 * x - x0$1 * y; - X2 += z * (x0$1 + x); - Y2 += z * (y0$1 + y); - Z2 += z * 3; - centroidPoint(x0$1 = x, y0$1 = y); - } - - function PathContext(context) { - this._context = context; - } - - PathContext.prototype = { - _radius: 4.5, - pointRadius: function(_) { - return this._radius = _, this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._context.closePath(); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._context.moveTo(x, y); - this._point = 1; - break; - } - case 1: { - this._context.lineTo(x, y); - break; - } - default: { - this._context.moveTo(x + this._radius, y); - this._context.arc(x, y, this._radius, 0, tau$1); - break; - } - } - }, - result: noop$1 - }; - - var lengthSum = new Adder(), - lengthRing, - x00, - y00, - x0, - y0; - - var lengthStream = { - point: noop$1, - lineStart: function() { - lengthStream.point = lengthPointFirst; - }, - lineEnd: function() { - if (lengthRing) lengthPoint(x00, y00); - lengthStream.point = noop$1; - }, - polygonStart: function() { - lengthRing = true; - }, - polygonEnd: function() { - lengthRing = null; - }, - result: function() { - var length = +lengthSum; - lengthSum = new Adder(); - return length; - } - }; - - function lengthPointFirst(x, y) { - lengthStream.point = lengthPoint; - x00 = x0 = x, y00 = y0 = y; - } - - function lengthPoint(x, y) { - x0 -= x, y0 -= y; - lengthSum.add(sqrt$2(x0 * x0 + y0 * y0)); - x0 = x, y0 = y; - } - - // Simple caching for constant-radius points. - let cacheDigits, cacheAppend, cacheRadius, cacheCircle; - - class PathString { - constructor(digits) { - this._append = digits == null ? append : appendRound(digits); - this._radius = 4.5; - this._ = ""; - } - pointRadius(_) { - this._radius = +_; - return this; - } - polygonStart() { - this._line = 0; - } - polygonEnd() { - this._line = NaN; - } - lineStart() { - this._point = 0; - } - lineEnd() { - if (this._line === 0) this._ += "Z"; - this._point = NaN; - } - point(x, y) { - switch (this._point) { - case 0: { - this._append`M${x},${y}`; - this._point = 1; - break; - } - case 1: { - this._append`L${x},${y}`; - break; - } - default: { - this._append`M${x},${y}`; - if (this._radius !== cacheRadius || this._append !== cacheAppend) { - const r = this._radius; - const s = this._; - this._ = ""; // stash the old string so we can cache the circle path fragment - this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`; - cacheRadius = r; - cacheAppend = this._append; - cacheCircle = this._; - this._ = s; - } - this._ += cacheCircle; - break; - } - } - } - result() { - const result = this._; - this._ = ""; - return result.length ? result : null; - } - } - - function append(strings) { - let i = 1; - this._ += strings[0]; - for (const j = strings.length; i < j; ++i) { - this._ += arguments[i] + strings[i]; - } - } - - function appendRound(digits) { - const d = Math.floor(digits); - if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`); - if (d > 15) return append; - if (d !== cacheDigits) { - const k = 10 ** d; - cacheDigits = d; - cacheAppend = function append(strings) { - let i = 1; - this._ += strings[0]; - for (const j = strings.length; i < j; ++i) { - this._ += Math.round(arguments[i] * k) / k + strings[i]; - } - }; - } - return cacheAppend; - } - - function index$2(projection, context) { - let digits = 3, - pointRadius = 4.5, - projectionStream, - contextStream; - - function path(object) { - if (object) { - if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); - geoStream(object, projectionStream(contextStream)); - } - return contextStream.result(); - } - - path.area = function(object) { - geoStream(object, projectionStream(areaStream)); - return areaStream.result(); - }; - - path.measure = function(object) { - geoStream(object, projectionStream(lengthStream)); - return lengthStream.result(); - }; - - path.bounds = function(object) { - geoStream(object, projectionStream(boundsStream)); - return boundsStream.result(); - }; - - path.centroid = function(object) { - geoStream(object, projectionStream(centroidStream)); - return centroidStream.result(); - }; - - path.projection = function(_) { - if (!arguments.length) return projection; - projectionStream = _ == null ? (projection = null, identity$5) : (projection = _).stream; - return path; - }; - - path.context = function(_) { - if (!arguments.length) return context; - contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _); - if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); - return path; - }; - - path.pointRadius = function(_) { - if (!arguments.length) return pointRadius; - pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); - return path; - }; - - path.digits = function(_) { - if (!arguments.length) return digits; - if (_ == null) digits = null; - else { - const d = Math.floor(_); - if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`); - digits = d; - } - if (context === null) contextStream = new PathString(digits); - return path; - }; - - return path.projection(projection).digits(digits).context(context); - } - - function transform$1(methods) { - return { - stream: transformer$3(methods) - }; - } - - function transformer$3(methods) { - return function(stream) { - var s = new TransformStream; - for (var key in methods) s[key] = methods[key]; - s.stream = stream; - return s; - }; - } - - function TransformStream() {} - - TransformStream.prototype = { - constructor: TransformStream, - point: function(x, y) { this.stream.point(x, y); }, - sphere: function() { this.stream.sphere(); }, - lineStart: function() { this.stream.lineStart(); }, - lineEnd: function() { this.stream.lineEnd(); }, - polygonStart: function() { this.stream.polygonStart(); }, - polygonEnd: function() { this.stream.polygonEnd(); } - }; - - function fit(projection, fitBounds, object) { - var clip = projection.clipExtent && projection.clipExtent(); - projection.scale(150).translate([0, 0]); - if (clip != null) projection.clipExtent(null); - geoStream(object, projection.stream(boundsStream)); - fitBounds(boundsStream.result()); - if (clip != null) projection.clipExtent(clip); - return projection; - } - - function fitExtent(projection, extent, object) { - return fit(projection, function(b) { - var w = extent[1][0] - extent[0][0], - h = extent[1][1] - extent[0][1], - k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), - x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, - y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); - } - - function fitSize(projection, size, object) { - return fitExtent(projection, [[0, 0], size], object); - } - - function fitWidth(projection, width, object) { - return fit(projection, function(b) { - var w = +width, - k = w / (b[1][0] - b[0][0]), - x = (w - k * (b[1][0] + b[0][0])) / 2, - y = -k * b[0][1]; - projection.scale(150 * k).translate([x, y]); - }, object); - } - - function fitHeight(projection, height, object) { - return fit(projection, function(b) { - var h = +height, - k = h / (b[1][1] - b[0][1]), - x = -k * b[0][0], - y = (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); - } - - var maxDepth = 16, // maximum depth of subdivision - cosMinDistance = cos$1(30 * radians); // cos(minimum angular distance) - - function resample(project, delta2) { - return +delta2 ? resample$1(project, delta2) : resampleNone(project); - } - - function resampleNone(project) { - return transformer$3({ - point: function(x, y) { - x = project(x, y); - this.stream.point(x[0], x[1]); - } - }); - } - - function resample$1(project, delta2) { - - function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) { - var dx = x1 - x0, - dy = y1 - y0, - d2 = dx * dx + dy * dy; - if (d2 > 4 * delta2 && depth--) { - var a = a0 + a1, - b = b0 + b1, - c = c0 + c1, - m = sqrt$2(a * a + b * b + c * c), - phi2 = asin$1(c /= m), - lambda2 = abs$1(abs$1(c) - 1) < epsilon$1 || abs$1(lambda0 - lambda1) < epsilon$1 ? (lambda0 + lambda1) / 2 : atan2$1(b, a), - p = project(lambda2, phi2), - x2 = p[0], - y2 = p[1], - dx2 = x2 - x0, - dy2 = y2 - y0, - dz = dy * dx2 - dx * dy2; - if (dz * dz / d2 > delta2 // perpendicular projected distance - || abs$1((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end - || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream); - stream.point(x2, y2); - resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream); - } - } - } - return function(stream) { - var lambda00, x00, y00, a00, b00, c00, // first point - lambda0, x0, y0, a0, b0, c0; // previous point - - var resampleStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; }, - polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; } - }; - - function point(x, y) { - x = project(x, y); - stream.point(x[0], x[1]); - } - - function lineStart() { - x0 = NaN; - resampleStream.point = linePoint; - stream.lineStart(); - } - - function linePoint(lambda, phi) { - var c = cartesian([lambda, phi]), p = project(lambda, phi); - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); - stream.point(x0, y0); - } - - function lineEnd() { - resampleStream.point = point; - stream.lineEnd(); - } - - function ringStart() { - lineStart(); - resampleStream.point = ringPoint; - resampleStream.lineEnd = ringEnd; - } - - function ringPoint(lambda, phi) { - linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; - resampleStream.point = linePoint; - } - - function ringEnd() { - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream); - resampleStream.lineEnd = lineEnd; - lineEnd(); - } - - return resampleStream; - }; - } - - var transformRadians = transformer$3({ - point: function(x, y) { - this.stream.point(x * radians, y * radians); - } - }); - - function transformRotate(rotate) { - return transformer$3({ - point: function(x, y) { - var r = rotate(x, y); - return this.stream.point(r[0], r[1]); - } - }); - } - - function scaleTranslate(k, dx, dy, sx, sy) { - function transform(x, y) { - x *= sx; y *= sy; - return [dx + k * x, dy - k * y]; - } - transform.invert = function(x, y) { - return [(x - dx) / k * sx, (dy - y) / k * sy]; - }; - return transform; - } - - function scaleTranslateRotate(k, dx, dy, sx, sy, alpha) { - if (!alpha) return scaleTranslate(k, dx, dy, sx, sy); - var cosAlpha = cos$1(alpha), - sinAlpha = sin$1(alpha), - a = cosAlpha * k, - b = sinAlpha * k, - ai = cosAlpha / k, - bi = sinAlpha / k, - ci = (sinAlpha * dy - cosAlpha * dx) / k, - fi = (sinAlpha * dx + cosAlpha * dy) / k; - function transform(x, y) { - x *= sx; y *= sy; - return [a * x - b * y + dx, dy - b * x - a * y]; - } - transform.invert = function(x, y) { - return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)]; - }; - return transform; - } - - function projection(project) { - return projectionMutator(function() { return project; })(); - } - - function projectionMutator(projectAt) { - var project, - k = 150, // scale - x = 480, y = 250, // translate - lambda = 0, phi = 0, // center - deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate - alpha = 0, // post-rotate angle - sx = 1, // reflectX - sy = 1, // reflectX - theta = null, preclip = clipAntimeridian, // pre-clip angle - x0 = null, y0, x1, y1, postclip = identity$5, // post-clip extent - delta2 = 0.5, // precision - projectResample, - projectTransform, - projectRotateTransform, - cache, - cacheStream; - - function projection(point) { - return projectRotateTransform(point[0] * radians, point[1] * radians); - } - - function invert(point) { - point = projectRotateTransform.invert(point[0], point[1]); - return point && [point[0] * degrees, point[1] * degrees]; - } - - projection.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream))))); - }; - - projection.preclip = function(_) { - return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip; - }; - - projection.postclip = function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }; - - projection.clipAngle = function(_) { - return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees; - }; - - projection.clipExtent = function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$5) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - projection.scale = function(_) { - return arguments.length ? (k = +_, recenter()) : k; - }; - - projection.translate = function(_) { - return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y]; - }; - - projection.center = function(_) { - return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees]; - }; - - projection.rotate = function(_) { - return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees]; - }; - - projection.angle = function(_) { - return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees; - }; - - projection.reflectX = function(_) { - return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0; - }; - - projection.reflectY = function(_) { - return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0; - }; - - projection.precision = function(_) { - return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt$2(delta2); - }; - - projection.fitExtent = function(extent, object) { - return fitExtent(projection, extent, object); - }; - - projection.fitSize = function(size, object) { - return fitSize(projection, size, object); - }; - - projection.fitWidth = function(width, object) { - return fitWidth(projection, width, object); - }; - - projection.fitHeight = function(height, object) { - return fitHeight(projection, height, object); - }; - - function recenter() { - var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)), - transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha); - rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma); - projectTransform = compose(project, transform); - projectRotateTransform = compose(rotate, projectTransform); - projectResample = resample(projectTransform, delta2); - return reset(); - } - - function reset() { - cache = cacheStream = null; - return projection; - } - - return function() { - project = projectAt.apply(this, arguments); - projection.invert = project.invert && invert; - return recenter(); - }; - } - - function conicProjection(projectAt) { - var phi0 = 0, - phi1 = pi$1 / 3, - m = projectionMutator(projectAt), - p = m(phi0, phi1); - - p.parallels = function(_) { - return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees]; - }; - - return p; - } - - function cylindricalEqualAreaRaw(phi0) { - var cosPhi0 = cos$1(phi0); - - function forward(lambda, phi) { - return [lambda * cosPhi0, sin$1(phi) / cosPhi0]; - } - - forward.invert = function(x, y) { - return [x / cosPhi0, asin$1(y * cosPhi0)]; - }; - - return forward; - } - - function conicEqualAreaRaw(y0, y1) { - var sy0 = sin$1(y0), n = (sy0 + sin$1(y1)) / 2; - - // Are the parallels symmetrical around the Equator? - if (abs$1(n) < epsilon$1) return cylindricalEqualAreaRaw(y0); - - var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt$2(c) / n; - - function project(x, y) { - var r = sqrt$2(c - 2 * n * sin$1(y)) / n; - return [r * sin$1(x *= n), r0 - r * cos$1(x)]; - } - - project.invert = function(x, y) { - var r0y = r0 - y, - l = atan2$1(x, abs$1(r0y)) * sign$1(r0y); - if (r0y * n < 0) - l -= pi$1 * sign$1(x) * sign$1(r0y); - return [l / n, asin$1((c - (x * x + r0y * r0y) * n * n) / (2 * n))]; - }; - - return project; - } - - function conicEqualArea() { - return conicProjection(conicEqualAreaRaw) - .scale(155.424) - .center([0, 33.6442]); - } - - function albers() { - return conicEqualArea() - .parallels([29.5, 45.5]) - .scale(1070) - .translate([480, 250]) - .rotate([96, 0]) - .center([-0.6, 38.7]); - } - - // The projections must have mutually exclusive clip regions on the sphere, - // as this will avoid emitting interleaving lines and polygons. - function multiplex(streams) { - var n = streams.length; - return { - point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); }, - sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); }, - lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); }, - lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); }, - polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); }, - polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); } - }; - } - - // A composite projection for the United States, configured by default for - // 960×500. The projection also works quite well at 960×600 if you change the - // scale to 1285 and adjust the translate accordingly. The set of standard - // parallels for each region comes from USGS, which is published here: - // http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers - function albersUsa() { - var cache, - cacheStream, - lower48 = albers(), lower48Point, - alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338 - hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007 - point, pointStream = {point: function(x, y) { point = [x, y]; }}; - - function albersUsa(coordinates) { - var x = coordinates[0], y = coordinates[1]; - return point = null, - (lower48Point.point(x, y), point) - || (alaskaPoint.point(x, y), point) - || (hawaiiPoint.point(x, y), point); - } - - albersUsa.invert = function(coordinates) { - var k = lower48.scale(), - t = lower48.translate(), - x = (coordinates[0] - t[0]) / k, - y = (coordinates[1] - t[1]) / k; - return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska - : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii - : lower48).invert(coordinates); - }; - - albersUsa.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]); - }; - - albersUsa.precision = function(_) { - if (!arguments.length) return lower48.precision(); - lower48.precision(_), alaska.precision(_), hawaii.precision(_); - return reset(); - }; - - albersUsa.scale = function(_) { - if (!arguments.length) return lower48.scale(); - lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_); - return albersUsa.translate(lower48.translate()); - }; - - albersUsa.translate = function(_) { - if (!arguments.length) return lower48.translate(); - var k = lower48.scale(), x = +_[0], y = +_[1]; - - lower48Point = lower48 - .translate(_) - .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]) - .stream(pointStream); - - alaskaPoint = alaska - .translate([x - 0.307 * k, y + 0.201 * k]) - .clipExtent([[x - 0.425 * k + epsilon$1, y + 0.120 * k + epsilon$1], [x - 0.214 * k - epsilon$1, y + 0.234 * k - epsilon$1]]) - .stream(pointStream); - - hawaiiPoint = hawaii - .translate([x - 0.205 * k, y + 0.212 * k]) - .clipExtent([[x - 0.214 * k + epsilon$1, y + 0.166 * k + epsilon$1], [x - 0.115 * k - epsilon$1, y + 0.234 * k - epsilon$1]]) - .stream(pointStream); - - return reset(); - }; - - albersUsa.fitExtent = function(extent, object) { - return fitExtent(albersUsa, extent, object); - }; - - albersUsa.fitSize = function(size, object) { - return fitSize(albersUsa, size, object); - }; - - albersUsa.fitWidth = function(width, object) { - return fitWidth(albersUsa, width, object); - }; - - albersUsa.fitHeight = function(height, object) { - return fitHeight(albersUsa, height, object); - }; - - function reset() { - cache = cacheStream = null; - return albersUsa; - } - - return albersUsa.scale(1070); - } - - function azimuthalRaw(scale) { - return function(x, y) { - var cx = cos$1(x), - cy = cos$1(y), - k = scale(cx * cy); - if (k === Infinity) return [2, 0]; - return [ - k * cy * sin$1(x), - k * sin$1(y) - ]; - } - } - - function azimuthalInvert(angle) { - return function(x, y) { - var z = sqrt$2(x * x + y * y), - c = angle(z), - sc = sin$1(c), - cc = cos$1(c); - return [ - atan2$1(x * sc, z * cc), - asin$1(z && y * sc / z) - ]; - } - } - - var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) { - return sqrt$2(2 / (1 + cxcy)); - }); - - azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) { - return 2 * asin$1(z / 2); - }); - - function azimuthalEqualArea() { - return projection(azimuthalEqualAreaRaw) - .scale(124.75) - .clipAngle(180 - 1e-3); - } - - var azimuthalEquidistantRaw = azimuthalRaw(function(c) { - return (c = acos$1(c)) && c / sin$1(c); - }); - - azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) { - return z; - }); - - function azimuthalEquidistant() { - return projection(azimuthalEquidistantRaw) - .scale(79.4188) - .clipAngle(180 - 1e-3); - } - - function mercatorRaw(lambda, phi) { - return [lambda, log$1(tan((halfPi$1 + phi) / 2))]; - } - - mercatorRaw.invert = function(x, y) { - return [x, 2 * atan(exp(y)) - halfPi$1]; - }; - - function mercator() { - return mercatorProjection(mercatorRaw) - .scale(961 / tau$1); - } - - function mercatorProjection(project) { - var m = projection(project), - center = m.center, - scale = m.scale, - translate = m.translate, - clipExtent = m.clipExtent, - x0 = null, y0, x1, y1; // clip extent - - m.scale = function(_) { - return arguments.length ? (scale(_), reclip()) : scale(); - }; - - m.translate = function(_) { - return arguments.length ? (translate(_), reclip()) : translate(); - }; - - m.center = function(_) { - return arguments.length ? (center(_), reclip()) : center(); - }; - - m.clipExtent = function(_) { - return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - function reclip() { - var k = pi$1 * scale(), - t = m(rotation(m.rotate()).invert([0, 0])); - return clipExtent(x0 == null - ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw - ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] - : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]); - } - - return reclip(); - } - - function tany(y) { - return tan((halfPi$1 + y) / 2); - } - - function conicConformalRaw(y0, y1) { - var cy0 = cos$1(y0), - n = y0 === y1 ? sin$1(y0) : log$1(cy0 / cos$1(y1)) / log$1(tany(y1) / tany(y0)), - f = cy0 * pow$1(tany(y0), n) / n; - - if (!n) return mercatorRaw; - - function project(x, y) { - if (f > 0) { if (y < -halfPi$1 + epsilon$1) y = -halfPi$1 + epsilon$1; } - else { if (y > halfPi$1 - epsilon$1) y = halfPi$1 - epsilon$1; } - var r = f / pow$1(tany(y), n); - return [r * sin$1(n * x), f - r * cos$1(n * x)]; - } - - project.invert = function(x, y) { - var fy = f - y, r = sign$1(n) * sqrt$2(x * x + fy * fy), - l = atan2$1(x, abs$1(fy)) * sign$1(fy); - if (fy * n < 0) - l -= pi$1 * sign$1(x) * sign$1(fy); - return [l / n, 2 * atan(pow$1(f / r, 1 / n)) - halfPi$1]; - }; - - return project; - } - - function conicConformal() { - return conicProjection(conicConformalRaw) - .scale(109.5) - .parallels([30, 30]); - } - - function equirectangularRaw(lambda, phi) { - return [lambda, phi]; - } - - equirectangularRaw.invert = equirectangularRaw; - - function equirectangular() { - return projection(equirectangularRaw) - .scale(152.63); - } - - function conicEquidistantRaw(y0, y1) { - var cy0 = cos$1(y0), - n = y0 === y1 ? sin$1(y0) : (cy0 - cos$1(y1)) / (y1 - y0), - g = cy0 / n + y0; - - if (abs$1(n) < epsilon$1) return equirectangularRaw; - - function project(x, y) { - var gy = g - y, nx = n * x; - return [gy * sin$1(nx), g - gy * cos$1(nx)]; - } - - project.invert = function(x, y) { - var gy = g - y, - l = atan2$1(x, abs$1(gy)) * sign$1(gy); - if (gy * n < 0) - l -= pi$1 * sign$1(x) * sign$1(gy); - return [l / n, g - sign$1(n) * sqrt$2(x * x + gy * gy)]; - }; - - return project; - } - - function conicEquidistant() { - return conicProjection(conicEquidistantRaw) - .scale(131.154) - .center([0, 13.9389]); - } - - var A1 = 1.340264, - A2 = -0.081106, - A3 = 0.000893, - A4 = 0.003796, - M$2 = sqrt$2(3) / 2, - iterations = 12; - - function equalEarthRaw(lambda, phi) { - var l = asin$1(M$2 * sin$1(phi)), l2 = l * l, l6 = l2 * l2 * l2; - return [ - lambda * cos$1(l) / (M$2 * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), - l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - ]; - } - - equalEarthRaw.invert = function(x, y) { - var l = y, l2 = l * l, l6 = l2 * l2 * l2; - for (var i = 0, delta, fy, fpy; i < iterations; ++i) { - fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y; - fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2); - l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2; - if (abs$1(delta) < epsilon2) break; - } - return [ - M$2 * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos$1(l), - asin$1(sin$1(l) / M$2) - ]; - }; - - function equalEarth() { - return projection(equalEarthRaw) - .scale(177.158); - } - - function gnomonicRaw(x, y) { - var cy = cos$1(y), k = cos$1(x) * cy; - return [cy * sin$1(x) / k, sin$1(y) / k]; - } - - gnomonicRaw.invert = azimuthalInvert(atan); - - function gnomonic() { - return projection(gnomonicRaw) - .scale(144.049) - .clipAngle(60); - } - - function identity$4() { - var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect - alpha = 0, ca, sa, // angle - x0 = null, y0, x1, y1, // clip extent - kx = 1, ky = 1, - transform = transformer$3({ - point: function(x, y) { - var p = projection([x, y]); - this.stream.point(p[0], p[1]); - } - }), - postclip = identity$5, - cache, - cacheStream; - - function reset() { - kx = k * sx; - ky = k * sy; - cache = cacheStream = null; - return projection; - } - - function projection (p) { - var x = p[0] * kx, y = p[1] * ky; - if (alpha) { - var t = y * ca - x * sa; - x = x * ca + y * sa; - y = t; - } - return [x + tx, y + ty]; - } - projection.invert = function(p) { - var x = p[0] - tx, y = p[1] - ty; - if (alpha) { - var t = y * ca + x * sa; - x = x * ca - y * sa; - y = t; - } - return [x / kx, y / ky]; - }; - projection.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream)); - }; - projection.postclip = function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }; - projection.clipExtent = function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$5) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - projection.scale = function(_) { - return arguments.length ? (k = +_, reset()) : k; - }; - projection.translate = function(_) { - return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty]; - }; - projection.angle = function(_) { - return arguments.length ? (alpha = _ % 360 * radians, sa = sin$1(alpha), ca = cos$1(alpha), reset()) : alpha * degrees; - }; - projection.reflectX = function(_) { - return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0; - }; - projection.reflectY = function(_) { - return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0; - }; - projection.fitExtent = function(extent, object) { - return fitExtent(projection, extent, object); - }; - projection.fitSize = function(size, object) { - return fitSize(projection, size, object); - }; - projection.fitWidth = function(width, object) { - return fitWidth(projection, width, object); - }; - projection.fitHeight = function(height, object) { - return fitHeight(projection, height, object); - }; - - return projection; - } - - function naturalEarth1Raw(lambda, phi) { - var phi2 = phi * phi, phi4 = phi2 * phi2; - return [ - lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), - phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - ]; - } - - naturalEarth1Raw.invert = function(x, y) { - var phi = y, i = 25, delta; - do { - var phi2 = phi * phi, phi4 = phi2 * phi2; - phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / - (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4))); - } while (abs$1(delta) > epsilon$1 && --i > 0); - return [ - x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), - phi - ]; - }; - - function naturalEarth1() { - return projection(naturalEarth1Raw) - .scale(175.295); - } - - function orthographicRaw(x, y) { - return [cos$1(y) * sin$1(x), sin$1(y)]; - } - - orthographicRaw.invert = azimuthalInvert(asin$1); - - function orthographic() { - return projection(orthographicRaw) - .scale(249.5) - .clipAngle(90 + epsilon$1); - } - - function stereographicRaw(x, y) { - var cy = cos$1(y), k = 1 + cos$1(x) * cy; - return [cy * sin$1(x) / k, sin$1(y) / k]; - } - - stereographicRaw.invert = azimuthalInvert(function(z) { - return 2 * atan(z); - }); - - function stereographic() { - return projection(stereographicRaw) - .scale(250) - .clipAngle(142); - } - - function transverseMercatorRaw(lambda, phi) { - return [log$1(tan((halfPi$1 + phi) / 2)), -lambda]; - } - - transverseMercatorRaw.invert = function(x, y) { - return [-y, 2 * atan(exp(x)) - halfPi$1]; - }; - - function transverseMercator() { - var m = mercatorProjection(transverseMercatorRaw), - center = m.center, - rotate = m.rotate; - - m.center = function(_) { - return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]); - }; - - m.rotate = function(_) { - return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]); - }; - - return rotate([0, 0, 90]) - .scale(159.155); - } - - function defaultSeparation$1(a, b) { - return a.parent === b.parent ? 1 : 2; - } - - function meanX(children) { - return children.reduce(meanXReduce, 0) / children.length; - } - - function meanXReduce(x, c) { - return x + c.x; - } - - function maxY(children) { - return 1 + children.reduce(maxYReduce, 0); - } - - function maxYReduce(y, c) { - return Math.max(y, c.y); - } - - function leafLeft(node) { - var children; - while (children = node.children) node = children[0]; - return node; - } - - function leafRight(node) { - var children; - while (children = node.children) node = children[children.length - 1]; - return node; - } - - function cluster() { - var separation = defaultSeparation$1, - dx = 1, - dy = 1, - nodeSize = false; - - function cluster(root) { - var previousNode, - x = 0; - - // First walk, computing the initial x & y values. - root.eachAfter(function(node) { - var children = node.children; - if (children) { - node.x = meanX(children); - node.y = maxY(children); - } else { - node.x = previousNode ? x += separation(node, previousNode) : 0; - node.y = 0; - previousNode = node; - } - }); - - var left = leafLeft(root), - right = leafRight(root), - x0 = left.x - separation(left, right) / 2, - x1 = right.x + separation(right, left) / 2; - - // Second walk, normalizing x & y to the desired size. - return root.eachAfter(nodeSize ? function(node) { - node.x = (node.x - root.x) * dx; - node.y = (root.y - node.y) * dy; - } : function(node) { - node.x = (node.x - x0) / (x1 - x0) * dx; - node.y = (1 - (root.y ? node.y / root.y : 1)) * dy; - }); - } - - cluster.separation = function(x) { - return arguments.length ? (separation = x, cluster) : separation; - }; - - cluster.size = function(x) { - return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]); - }; - - cluster.nodeSize = function(x) { - return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null); - }; - - return cluster; - } - - function count(node) { - var sum = 0, - children = node.children, - i = children && children.length; - if (!i) sum = 1; - else while (--i >= 0) sum += children[i].value; - node.value = sum; - } - - function node_count() { - return this.eachAfter(count); - } - - function node_each(callback, that) { - let index = -1; - for (const node of this) { - callback.call(that, node, ++index, this); - } - return this; - } - - function node_eachBefore(callback, that) { - var node = this, nodes = [node], children, i, index = -1; - while (node = nodes.pop()) { - callback.call(that, node, ++index, this); - if (children = node.children) { - for (i = children.length - 1; i >= 0; --i) { - nodes.push(children[i]); - } - } - } - return this; - } - - function node_eachAfter(callback, that) { - var node = this, nodes = [node], next = [], children, i, n, index = -1; - while (node = nodes.pop()) { - next.push(node); - if (children = node.children) { - for (i = 0, n = children.length; i < n; ++i) { - nodes.push(children[i]); - } - } - } - while (node = next.pop()) { - callback.call(that, node, ++index, this); - } - return this; - } - - function node_find(callback, that) { - let index = -1; - for (const node of this) { - if (callback.call(that, node, ++index, this)) { - return node; - } - } - } - - function node_sum(value) { - return this.eachAfter(function(node) { - var sum = +value(node.data) || 0, - children = node.children, - i = children && children.length; - while (--i >= 0) sum += children[i].value; - node.value = sum; - }); - } - - function node_sort(compare) { - return this.eachBefore(function(node) { - if (node.children) { - node.children.sort(compare); - } - }); - } - - function node_path(end) { - var start = this, - ancestor = leastCommonAncestor(start, end), - nodes = [start]; - while (start !== ancestor) { - start = start.parent; - nodes.push(start); - } - var k = nodes.length; - while (end !== ancestor) { - nodes.splice(k, 0, end); - end = end.parent; - } - return nodes; - } - - function leastCommonAncestor(a, b) { - if (a === b) return a; - var aNodes = a.ancestors(), - bNodes = b.ancestors(), - c = null; - a = aNodes.pop(); - b = bNodes.pop(); - while (a === b) { - c = a; - a = aNodes.pop(); - b = bNodes.pop(); - } - return c; - } - - function node_ancestors() { - var node = this, nodes = [node]; - while (node = node.parent) { - nodes.push(node); - } - return nodes; - } - - function node_descendants() { - return Array.from(this); - } - - function node_leaves() { - var leaves = []; - this.eachBefore(function(node) { - if (!node.children) { - leaves.push(node); - } - }); - return leaves; - } - - function node_links() { - var root = this, links = []; - root.each(function(node) { - if (node !== root) { // Don’t include the root’s parent, if any. - links.push({source: node.parent, target: node}); - } - }); - return links; - } - - function* node_iterator() { - var node = this, current, next = [node], children, i, n; - do { - current = next.reverse(), next = []; - while (node = current.pop()) { - yield node; - if (children = node.children) { - for (i = 0, n = children.length; i < n; ++i) { - next.push(children[i]); - } - } - } - } while (next.length); - } - - function hierarchy(data, children) { - if (data instanceof Map) { - data = [undefined, data]; - if (children === undefined) children = mapChildren; - } else if (children === undefined) { - children = objectChildren; - } - - var root = new Node$1(data), - node, - nodes = [root], - child, - childs, - i, - n; - - while (node = nodes.pop()) { - if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) { - node.children = childs; - for (i = n - 1; i >= 0; --i) { - nodes.push(child = childs[i] = new Node$1(childs[i])); - child.parent = node; - child.depth = node.depth + 1; - } - } - } - - return root.eachBefore(computeHeight); - } - - function node_copy() { - return hierarchy(this).eachBefore(copyData); - } - - function objectChildren(d) { - return d.children; - } - - function mapChildren(d) { - return Array.isArray(d) ? d[1] : null; - } - - function copyData(node) { - if (node.data.value !== undefined) node.value = node.data.value; - node.data = node.data.data; - } - - function computeHeight(node) { - var height = 0; - do node.height = height; - while ((node = node.parent) && (node.height < ++height)); - } - - function Node$1(data) { - this.data = data; - this.depth = - this.height = 0; - this.parent = null; - } - - Node$1.prototype = hierarchy.prototype = { - constructor: Node$1, - count: node_count, - each: node_each, - eachAfter: node_eachAfter, - eachBefore: node_eachBefore, - find: node_find, - sum: node_sum, - sort: node_sort, - path: node_path, - ancestors: node_ancestors, - descendants: node_descendants, - leaves: node_leaves, - links: node_links, - copy: node_copy, - [Symbol.iterator]: node_iterator - }; - - function optional(f) { - return f == null ? null : required(f); - } - - function required(f) { - if (typeof f !== "function") throw new Error; - return f; - } - - function constantZero() { - return 0; - } - - function constant$2(x) { - return function() { - return x; - }; - } - - // https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use - const a$2 = 1664525; - const c$4 = 1013904223; - const m$2 = 4294967296; // 2^32 - - function lcg$1() { - let s = 1; - return () => (s = (a$2 * s + c$4) % m$2) / m$2; - } - - function array$1(x) { - return typeof x === "object" && "length" in x - ? x // Array, TypedArray, NodeList, array-like - : Array.from(x); // Map, Set, iterable, string, or anything else - } - - function shuffle(array, random) { - let m = array.length, - t, - i; - - while (m) { - i = random() * m-- | 0; - t = array[m]; - array[m] = array[i]; - array[i] = t; - } - - return array; - } - - function enclose(circles) { - return packEncloseRandom(circles, lcg$1()); - } - - function packEncloseRandom(circles, random) { - var i = 0, n = (circles = shuffle(Array.from(circles), random)).length, B = [], p, e; - - while (i < n) { - p = circles[i]; - if (e && enclosesWeak(e, p)) ++i; - else e = encloseBasis(B = extendBasis(B, p)), i = 0; - } - - return e; - } - - function extendBasis(B, p) { - var i, j; - - if (enclosesWeakAll(p, B)) return [p]; - - // If we get here then B must have at least one element. - for (i = 0; i < B.length; ++i) { - if (enclosesNot(p, B[i]) - && enclosesWeakAll(encloseBasis2(B[i], p), B)) { - return [B[i], p]; - } - } - - // If we get here then B must have at least two elements. - for (i = 0; i < B.length - 1; ++i) { - for (j = i + 1; j < B.length; ++j) { - if (enclosesNot(encloseBasis2(B[i], B[j]), p) - && enclosesNot(encloseBasis2(B[i], p), B[j]) - && enclosesNot(encloseBasis2(B[j], p), B[i]) - && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) { - return [B[i], B[j], p]; - } - } - } - - // If we get here then something is very wrong. - throw new Error; - } - - function enclosesNot(a, b) { - var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y; - return dr < 0 || dr * dr < dx * dx + dy * dy; - } - - function enclosesWeak(a, b) { - var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y; - return dr > 0 && dr * dr > dx * dx + dy * dy; - } - - function enclosesWeakAll(a, B) { - for (var i = 0; i < B.length; ++i) { - if (!enclosesWeak(a, B[i])) { - return false; - } - } - return true; - } - - function encloseBasis(B) { - switch (B.length) { - case 1: return encloseBasis1(B[0]); - case 2: return encloseBasis2(B[0], B[1]); - case 3: return encloseBasis3(B[0], B[1], B[2]); - } - } - - function encloseBasis1(a) { - return { - x: a.x, - y: a.y, - r: a.r - }; - } - - function encloseBasis2(a, b) { - var x1 = a.x, y1 = a.y, r1 = a.r, - x2 = b.x, y2 = b.y, r2 = b.r, - x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1, - l = Math.sqrt(x21 * x21 + y21 * y21); - return { - x: (x1 + x2 + x21 / l * r21) / 2, - y: (y1 + y2 + y21 / l * r21) / 2, - r: (l + r1 + r2) / 2 - }; - } - - function encloseBasis3(a, b, c) { - var x1 = a.x, y1 = a.y, r1 = a.r, - x2 = b.x, y2 = b.y, r2 = b.r, - x3 = c.x, y3 = c.y, r3 = c.r, - a2 = x1 - x2, - a3 = x1 - x3, - b2 = y1 - y2, - b3 = y1 - y3, - c2 = r2 - r1, - c3 = r3 - r1, - d1 = x1 * x1 + y1 * y1 - r1 * r1, - d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, - d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, - ab = a3 * b2 - a2 * b3, - xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, - xb = (b3 * c2 - b2 * c3) / ab, - ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, - yb = (a2 * c3 - a3 * c2) / ab, - A = xb * xb + yb * yb - 1, - B = 2 * (r1 + xa * xb + ya * yb), - C = xa * xa + ya * ya - r1 * r1, - r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); - return { - x: x1 + xa + xb * r, - y: y1 + ya + yb * r, - r: r - }; - } - - function place(b, a, c) { - var dx = b.x - a.x, x, a2, - dy = b.y - a.y, y, b2, - d2 = dx * dx + dy * dy; - if (d2) { - a2 = a.r + c.r, a2 *= a2; - b2 = b.r + c.r, b2 *= b2; - if (a2 > b2) { - x = (d2 + b2 - a2) / (2 * d2); - y = Math.sqrt(Math.max(0, b2 / d2 - x * x)); - c.x = b.x - x * dx - y * dy; - c.y = b.y - x * dy + y * dx; - } else { - x = (d2 + a2 - b2) / (2 * d2); - y = Math.sqrt(Math.max(0, a2 / d2 - x * x)); - c.x = a.x + x * dx - y * dy; - c.y = a.y + x * dy + y * dx; - } - } else { - c.x = a.x + c.r; - c.y = a.y; - } - } - - function intersects(a, b) { - var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y; - return dr > 0 && dr * dr > dx * dx + dy * dy; - } - - function score(node) { - var a = node._, - b = node.next._, - ab = a.r + b.r, - dx = (a.x * b.r + b.x * a.r) / ab, - dy = (a.y * b.r + b.y * a.r) / ab; - return dx * dx + dy * dy; - } - - function Node(circle) { - this._ = circle; - this.next = null; - this.previous = null; - } - - function packSiblingsRandom(circles, random) { - if (!(n = (circles = array$1(circles)).length)) return 0; - - var a, b, c, n, aa, ca, i, j, k, sj, sk; - - // Place the first circle. - a = circles[0], a.x = 0, a.y = 0; - if (!(n > 1)) return a.r; - - // Place the second circle. - b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0; - if (!(n > 2)) return a.r + b.r; - - // Place the third circle. - place(b, a, c = circles[2]); - - // Initialize the front-chain using the first three circles a, b and c. - a = new Node(a), b = new Node(b), c = new Node(c); - a.next = c.previous = b; - b.next = a.previous = c; - c.next = b.previous = a; - - // Attempt to place each remaining circle… - pack: for (i = 3; i < n; ++i) { - place(a._, b._, c = circles[i]), c = new Node(c); - - // Find the closest intersecting circle on the front-chain, if any. - // “Closeness” is determined by linear distance along the front-chain. - // “Ahead” or “behind” is likewise determined by linear distance. - j = b.next, k = a.previous, sj = b._.r, sk = a._.r; - do { - if (sj <= sk) { - if (intersects(j._, c._)) { - b = j, a.next = b, b.previous = a, --i; - continue pack; - } - sj += j._.r, j = j.next; - } else { - if (intersects(k._, c._)) { - a = k, a.next = b, b.previous = a, --i; - continue pack; - } - sk += k._.r, k = k.previous; - } - } while (j !== k.next); - - // Success! Insert the new circle c between a and b. - c.previous = a, c.next = b, a.next = b.previous = b = c; - - // Compute the new closest circle pair to the centroid. - aa = score(a); - while ((c = c.next) !== b) { - if ((ca = score(c)) < aa) { - a = c, aa = ca; - } - } - b = a.next; - } - - // Compute the enclosing circle of the front chain. - a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = packEncloseRandom(a, random); - - // Translate the circles to put the enclosing circle around the origin. - for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y; - - return c.r; - } - - function siblings(circles) { - packSiblingsRandom(circles, lcg$1()); - return circles; - } - - function defaultRadius(d) { - return Math.sqrt(d.value); - } - - function index$1() { - var radius = null, - dx = 1, - dy = 1, - padding = constantZero; - - function pack(root) { - const random = lcg$1(); - root.x = dx / 2, root.y = dy / 2; - if (radius) { - root.eachBefore(radiusLeaf(radius)) - .eachAfter(packChildrenRandom(padding, 0.5, random)) - .eachBefore(translateChild(1)); - } else { - root.eachBefore(radiusLeaf(defaultRadius)) - .eachAfter(packChildrenRandom(constantZero, 1, random)) - .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random)) - .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); - } - return root; - } - - pack.radius = function(x) { - return arguments.length ? (radius = optional(x), pack) : radius; - }; - - pack.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy]; - }; - - pack.padding = function(x) { - return arguments.length ? (padding = typeof x === "function" ? x : constant$2(+x), pack) : padding; - }; - - return pack; - } - - function radiusLeaf(radius) { - return function(node) { - if (!node.children) { - node.r = Math.max(0, +radius(node) || 0); - } - }; - } - - function packChildrenRandom(padding, k, random) { - return function(node) { - if (children = node.children) { - var children, - i, - n = children.length, - r = padding(node) * k || 0, - e; - - if (r) for (i = 0; i < n; ++i) children[i].r += r; - e = packSiblingsRandom(children, random); - if (r) for (i = 0; i < n; ++i) children[i].r -= r; - node.r = e + r; - } - }; - } - - function translateChild(k) { - return function(node) { - var parent = node.parent; - node.r *= k; - if (parent) { - node.x = parent.x + k * node.x; - node.y = parent.y + k * node.y; - } - }; - } - - function roundNode(node) { - node.x0 = Math.round(node.x0); - node.y0 = Math.round(node.y0); - node.x1 = Math.round(node.x1); - node.y1 = Math.round(node.y1); - } - - function treemapDice(parent, x0, y0, x1, y1) { - var nodes = parent.children, - node, - i = -1, - n = nodes.length, - k = parent.value && (x1 - x0) / parent.value; - - while (++i < n) { - node = nodes[i], node.y0 = y0, node.y1 = y1; - node.x0 = x0, node.x1 = x0 += node.value * k; - } - } - - function partition() { - var dx = 1, - dy = 1, - padding = 0, - round = false; - - function partition(root) { - var n = root.height + 1; - root.x0 = - root.y0 = padding; - root.x1 = dx; - root.y1 = dy / n; - root.eachBefore(positionNode(dy, n)); - if (round) root.eachBefore(roundNode); - return root; - } - - function positionNode(dy, n) { - return function(node) { - if (node.children) { - treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n); - } - var x0 = node.x0, - y0 = node.y0, - x1 = node.x1 - padding, - y1 = node.y1 - padding; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - }; - } - - partition.round = function(x) { - return arguments.length ? (round = !!x, partition) : round; - }; - - partition.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy]; - }; - - partition.padding = function(x) { - return arguments.length ? (padding = +x, partition) : padding; - }; - - return partition; - } - - var preroot = {depth: -1}, - ambiguous = {}, - imputed = {}; - - function defaultId(d) { - return d.id; - } - - function defaultParentId(d) { - return d.parentId; - } - - function stratify() { - var id = defaultId, - parentId = defaultParentId, - path; - - function stratify(data) { - var nodes = Array.from(data), - currentId = id, - currentParentId = parentId, - n, - d, - i, - root, - parent, - node, - nodeId, - nodeKey, - nodeByKey = new Map; - - if (path != null) { - const I = nodes.map((d, i) => normalize$1(path(d, i, data))); - const P = I.map(parentof); - const S = new Set(I).add(""); - for (const i of P) { - if (!S.has(i)) { - S.add(i); - I.push(i); - P.push(parentof(i)); - nodes.push(imputed); - } - } - currentId = (_, i) => I[i]; - currentParentId = (_, i) => P[i]; - } - - for (i = 0, n = nodes.length; i < n; ++i) { - d = nodes[i], node = nodes[i] = new Node$1(d); - if ((nodeId = currentId(d, i, data)) != null && (nodeId += "")) { - nodeKey = node.id = nodeId; - nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node); - } - if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += "")) { - node.parent = nodeId; - } - } - - for (i = 0; i < n; ++i) { - node = nodes[i]; - if (nodeId = node.parent) { - parent = nodeByKey.get(nodeId); - if (!parent) throw new Error("missing: " + nodeId); - if (parent === ambiguous) throw new Error("ambiguous: " + nodeId); - if (parent.children) parent.children.push(node); - else parent.children = [node]; - node.parent = parent; - } else { - if (root) throw new Error("multiple roots"); - root = node; - } - } - - if (!root) throw new Error("no root"); - - // When imputing internal nodes, only introduce roots if needed. - // Then replace the imputed marker data with null. - if (path != null) { - while (root.data === imputed && root.children.length === 1) { - root = root.children[0], --n; - } - for (let i = nodes.length - 1; i >= 0; --i) { - node = nodes[i]; - if (node.data !== imputed) break; - node.data = null; - } - } - - root.parent = preroot; - root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight); - root.parent = null; - if (n > 0) throw new Error("cycle"); - - return root; - } - - stratify.id = function(x) { - return arguments.length ? (id = optional(x), stratify) : id; - }; - - stratify.parentId = function(x) { - return arguments.length ? (parentId = optional(x), stratify) : parentId; - }; - - stratify.path = function(x) { - return arguments.length ? (path = optional(x), stratify) : path; - }; - - return stratify; - } - - // To normalize a path, we coerce to a string, strip the trailing slash if any - // (as long as the trailing slash is not immediately preceded by another slash), - // and add leading slash if missing. - function normalize$1(path) { - path = `${path}`; - let i = path.length; - if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1); - return path[0] === "/" ? path : `/${path}`; - } - - // Walk backwards to find the first slash that is not the leading slash, e.g.: - // "/foo/bar" ⇥ "/foo", "/foo" ⇥ "/", "/" ↦ "". (The root is special-cased - // because the id of the root must be a truthy value.) - function parentof(path) { - let i = path.length; - if (i < 2) return ""; - while (--i > 1) if (slash(path, i)) break; - return path.slice(0, i); - } - - // Slashes can be escaped; to determine whether a slash is a path delimiter, we - // count the number of preceding backslashes escaping the forward slash: an odd - // number indicates an escaped forward slash. - function slash(path, i) { - if (path[i] === "/") { - let k = 0; - while (i > 0 && path[--i] === "\\") ++k; - if ((k & 1) === 0) return true; - } - return false; - } - - function defaultSeparation(a, b) { - return a.parent === b.parent ? 1 : 2; - } - - // function radialSeparation(a, b) { - // return (a.parent === b.parent ? 1 : 2) / a.depth; - // } - - // This function is used to traverse the left contour of a subtree (or - // subforest). It returns the successor of v on this contour. This successor is - // either given by the leftmost child of v or by the thread of v. The function - // returns null if and only if v is on the highest level of its subtree. - function nextLeft(v) { - var children = v.children; - return children ? children[0] : v.t; - } - - // This function works analogously to nextLeft. - function nextRight(v) { - var children = v.children; - return children ? children[children.length - 1] : v.t; - } - - // Shifts the current subtree rooted at w+. This is done by increasing - // prelim(w+) and mod(w+) by shift. - function moveSubtree(wm, wp, shift) { - var change = shift / (wp.i - wm.i); - wp.c -= change; - wp.s += shift; - wm.c += change; - wp.z += shift; - wp.m += shift; - } - - // All other shifts, applied to the smaller subtrees between w- and w+, are - // performed by this function. To prepare the shifts, we have to adjust - // change(w+), shift(w+), and change(w-). - function executeShifts(v) { - var shift = 0, - change = 0, - children = v.children, - i = children.length, - w; - while (--i >= 0) { - w = children[i]; - w.z += shift; - w.m += shift; - shift += w.s + (change += w.c); - } - } - - // If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise, - // returns the specified (default) ancestor. - function nextAncestor(vim, v, ancestor) { - return vim.a.parent === v.parent ? vim.a : ancestor; - } - - function TreeNode(node, i) { - this._ = node; - this.parent = null; - this.children = null; - this.A = null; // default ancestor - this.a = this; // ancestor - this.z = 0; // prelim - this.m = 0; // mod - this.c = 0; // change - this.s = 0; // shift - this.t = null; // thread - this.i = i; // number - } - - TreeNode.prototype = Object.create(Node$1.prototype); - - function treeRoot(root) { - var tree = new TreeNode(root, 0), - node, - nodes = [tree], - child, - children, - i, - n; - - while (node = nodes.pop()) { - if (children = node._.children) { - node.children = new Array(n = children.length); - for (i = n - 1; i >= 0; --i) { - nodes.push(child = node.children[i] = new TreeNode(children[i], i)); - child.parent = node; - } - } - } - - (tree.parent = new TreeNode(null, 0)).children = [tree]; - return tree; - } - - // Node-link tree diagram using the Reingold-Tilford "tidy" algorithm - function tree() { - var separation = defaultSeparation, - dx = 1, - dy = 1, - nodeSize = null; - - function tree(root) { - var t = treeRoot(root); - - // Compute the layout using Buchheim et al.’s algorithm. - t.eachAfter(firstWalk), t.parent.m = -t.z; - t.eachBefore(secondWalk); - - // If a fixed node size is specified, scale x and y. - if (nodeSize) root.eachBefore(sizeNode); - - // If a fixed tree size is specified, scale x and y based on the extent. - // Compute the left-most, right-most, and depth-most nodes for extents. - else { - var left = root, - right = root, - bottom = root; - root.eachBefore(function(node) { - if (node.x < left.x) left = node; - if (node.x > right.x) right = node; - if (node.depth > bottom.depth) bottom = node; - }); - var s = left === right ? 1 : separation(left, right) / 2, - tx = s - left.x, - kx = dx / (right.x + s + tx), - ky = dy / (bottom.depth || 1); - root.eachBefore(function(node) { - node.x = (node.x + tx) * kx; - node.y = node.depth * ky; - }); - } - - return root; - } - - // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is - // applied recursively to the children of v, as well as the function - // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the - // node v is placed to the midpoint of its outermost children. - function firstWalk(v) { - var children = v.children, - siblings = v.parent.children, - w = v.i ? siblings[v.i - 1] : null; - if (children) { - executeShifts(v); - var midpoint = (children[0].z + children[children.length - 1].z) / 2; - if (w) { - v.z = w.z + separation(v._, w._); - v.m = v.z - midpoint; - } else { - v.z = midpoint; - } - } else if (w) { - v.z = w.z + separation(v._, w._); - } - v.parent.A = apportion(v, w, v.parent.A || siblings[0]); - } - - // Computes all real x-coordinates by summing up the modifiers recursively. - function secondWalk(v) { - v._.x = v.z + v.parent.m; - v.m += v.parent.m; - } - - // The core of the algorithm. Here, a new subtree is combined with the - // previous subtrees. Threads are used to traverse the inside and outside - // contours of the left and right subtree up to the highest common level. The - // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the - // superscript o means outside and i means inside, the subscript - means left - // subtree and + means right subtree. For summing up the modifiers along the - // contour, we use respective variables si+, si-, so-, and so+. Whenever two - // nodes of the inside contours conflict, we compute the left one of the - // greatest uncommon ancestors using the function ANCESTOR and call MOVE - // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees. - // Finally, we add a new thread (if necessary). - function apportion(v, w, ancestor) { - if (w) { - var vip = v, - vop = v, - vim = w, - vom = vip.parent.children[0], - sip = vip.m, - sop = vop.m, - sim = vim.m, - som = vom.m, - shift; - while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) { - vom = nextLeft(vom); - vop = nextRight(vop); - vop.a = v; - shift = vim.z + sim - vip.z - sip + separation(vim._, vip._); - if (shift > 0) { - moveSubtree(nextAncestor(vim, v, ancestor), v, shift); - sip += shift; - sop += shift; - } - sim += vim.m; - sip += vip.m; - som += vom.m; - sop += vop.m; - } - if (vim && !nextRight(vop)) { - vop.t = vim; - vop.m += sim - sop; - } - if (vip && !nextLeft(vom)) { - vom.t = vip; - vom.m += sip - som; - ancestor = v; - } - } - return ancestor; - } - - function sizeNode(node) { - node.x *= dx; - node.y = node.depth * dy; - } - - tree.separation = function(x) { - return arguments.length ? (separation = x, tree) : separation; - }; - - tree.size = function(x) { - return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]); - }; - - tree.nodeSize = function(x) { - return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null); - }; - - return tree; - } - - function treemapSlice(parent, x0, y0, x1, y1) { - var nodes = parent.children, - node, - i = -1, - n = nodes.length, - k = parent.value && (y1 - y0) / parent.value; - - while (++i < n) { - node = nodes[i], node.x0 = x0, node.x1 = x1; - node.y0 = y0, node.y1 = y0 += node.value * k; - } - } - - var phi = (1 + Math.sqrt(5)) / 2; - - function squarifyRatio(ratio, parent, x0, y0, x1, y1) { - var rows = [], - nodes = parent.children, - row, - nodeValue, - i0 = 0, - i1 = 0, - n = nodes.length, - dx, dy, - value = parent.value, - sumValue, - minValue, - maxValue, - newRatio, - minRatio, - alpha, - beta; - - while (i0 < n) { - dx = x1 - x0, dy = y1 - y0; - - // Find the next non-empty node. - do sumValue = nodes[i1++].value; while (!sumValue && i1 < n); - minValue = maxValue = sumValue; - alpha = Math.max(dy / dx, dx / dy) / (value * ratio); - beta = sumValue * sumValue * alpha; - minRatio = Math.max(maxValue / beta, beta / minValue); - - // Keep adding nodes while the aspect ratio maintains or improves. - for (; i1 < n; ++i1) { - sumValue += nodeValue = nodes[i1].value; - if (nodeValue < minValue) minValue = nodeValue; - if (nodeValue > maxValue) maxValue = nodeValue; - beta = sumValue * sumValue * alpha; - newRatio = Math.max(maxValue / beta, beta / minValue); - if (newRatio > minRatio) { sumValue -= nodeValue; break; } - minRatio = newRatio; - } - - // Position and record the row orientation. - rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)}); - if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1); - else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1); - value -= sumValue, i0 = i1; - } - - return rows; - } - - var squarify = (function custom(ratio) { - - function squarify(parent, x0, y0, x1, y1) { - squarifyRatio(ratio, parent, x0, y0, x1, y1); - } - - squarify.ratio = function(x) { - return custom((x = +x) > 1 ? x : 1); - }; - - return squarify; - })(phi); - - function index() { - var tile = squarify, - round = false, - dx = 1, - dy = 1, - paddingStack = [0], - paddingInner = constantZero, - paddingTop = constantZero, - paddingRight = constantZero, - paddingBottom = constantZero, - paddingLeft = constantZero; - - function treemap(root) { - root.x0 = - root.y0 = 0; - root.x1 = dx; - root.y1 = dy; - root.eachBefore(positionNode); - paddingStack = [0]; - if (round) root.eachBefore(roundNode); - return root; - } - - function positionNode(node) { - var p = paddingStack[node.depth], - x0 = node.x0 + p, - y0 = node.y0 + p, - x1 = node.x1 - p, - y1 = node.y1 - p; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - if (node.children) { - p = paddingStack[node.depth + 1] = paddingInner(node) / 2; - x0 += paddingLeft(node) - p; - y0 += paddingTop(node) - p; - x1 -= paddingRight(node) - p; - y1 -= paddingBottom(node) - p; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - tile(node, x0, y0, x1, y1); - } - } - - treemap.round = function(x) { - return arguments.length ? (round = !!x, treemap) : round; - }; - - treemap.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy]; - }; - - treemap.tile = function(x) { - return arguments.length ? (tile = required(x), treemap) : tile; - }; - - treemap.padding = function(x) { - return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner(); - }; - - treemap.paddingInner = function(x) { - return arguments.length ? (paddingInner = typeof x === "function" ? x : constant$2(+x), treemap) : paddingInner; - }; - - treemap.paddingOuter = function(x) { - return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop(); - }; - - treemap.paddingTop = function(x) { - return arguments.length ? (paddingTop = typeof x === "function" ? x : constant$2(+x), treemap) : paddingTop; - }; - - treemap.paddingRight = function(x) { - return arguments.length ? (paddingRight = typeof x === "function" ? x : constant$2(+x), treemap) : paddingRight; - }; - - treemap.paddingBottom = function(x) { - return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant$2(+x), treemap) : paddingBottom; - }; - - treemap.paddingLeft = function(x) { - return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant$2(+x), treemap) : paddingLeft; - }; - - return treemap; - } - - function binary(parent, x0, y0, x1, y1) { - var nodes = parent.children, - i, n = nodes.length, - sum, sums = new Array(n + 1); - - for (sums[0] = sum = i = 0; i < n; ++i) { - sums[i + 1] = sum += nodes[i].value; - } - - partition(0, n, parent.value, x0, y0, x1, y1); - - function partition(i, j, value, x0, y0, x1, y1) { - if (i >= j - 1) { - var node = nodes[i]; - node.x0 = x0, node.y0 = y0; - node.x1 = x1, node.y1 = y1; - return; - } - - var valueOffset = sums[i], - valueTarget = (value / 2) + valueOffset, - k = i + 1, - hi = j - 1; - - while (k < hi) { - var mid = k + hi >>> 1; - if (sums[mid] < valueTarget) k = mid + 1; - else hi = mid; - } - - if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k; - - var valueLeft = sums[k] - valueOffset, - valueRight = value - valueLeft; - - if ((x1 - x0) > (y1 - y0)) { - var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1; - partition(i, k, valueLeft, x0, y0, xk, y1); - partition(k, j, valueRight, xk, y0, x1, y1); - } else { - var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1; - partition(i, k, valueLeft, x0, y0, x1, yk); - partition(k, j, valueRight, x0, yk, x1, y1); - } - } - } - - function sliceDice(parent, x0, y0, x1, y1) { - (parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1); - } - - var resquarify = (function custom(ratio) { - - function resquarify(parent, x0, y0, x1, y1) { - if ((rows = parent._squarify) && (rows.ratio === ratio)) { - var rows, - row, - nodes, - i, - j = -1, - n, - m = rows.length, - value = parent.value; - - while (++j < m) { - row = rows[j], nodes = row.children; - for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value; - if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1); - else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1); - value -= row.value; - } - } else { - parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1); - rows.ratio = ratio; - } - } - - resquarify.ratio = function(x) { - return custom((x = +x) > 1 ? x : 1); - }; - - return resquarify; - })(phi); - - function area$1(polygon) { - var i = -1, - n = polygon.length, - a, - b = polygon[n - 1], - area = 0; - - while (++i < n) { - a = b; - b = polygon[i]; - area += a[1] * b[0] - a[0] * b[1]; - } - - return area / 2; - } - - function centroid(polygon) { - var i = -1, - n = polygon.length, - x = 0, - y = 0, - a, - b = polygon[n - 1], - c, - k = 0; - - while (++i < n) { - a = b; - b = polygon[i]; - k += c = a[0] * b[1] - b[0] * a[1]; - x += (a[0] + b[0]) * c; - y += (a[1] + b[1]) * c; - } - - return k *= 3, [x / k, y / k]; - } - - // Returns the 2D cross product of AB and AC vectors, i.e., the z-component of - // the 3D cross product in a quadrant I Cartesian coordinate system (+x is - // right, +y is up). Returns a positive value if ABC is counter-clockwise, - // negative if clockwise, and zero if the points are collinear. - function cross$1(a, b, c) { - return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]); - } - - function lexicographicOrder(a, b) { - return a[0] - b[0] || a[1] - b[1]; - } - - // Computes the upper convex hull per the monotone chain algorithm. - // Assumes points.length >= 3, is sorted by x, unique in y. - // Returns an array of indices into points in left-to-right order. - function computeUpperHullIndexes(points) { - const n = points.length, - indexes = [0, 1]; - let size = 2, i; - - for (i = 2; i < n; ++i) { - while (size > 1 && cross$1(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size; - indexes[size++] = i; - } - - return indexes.slice(0, size); // remove popped points - } - - function hull(points) { - if ((n = points.length) < 3) return null; - - var i, - n, - sortedPoints = new Array(n), - flippedPoints = new Array(n); - - for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i]; - sortedPoints.sort(lexicographicOrder); - for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]]; - - var upperIndexes = computeUpperHullIndexes(sortedPoints), - lowerIndexes = computeUpperHullIndexes(flippedPoints); - - // Construct the hull polygon, removing possible duplicate endpoints. - var skipLeft = lowerIndexes[0] === upperIndexes[0], - skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1], - hull = []; - - // Add upper hull in right-to-l order. - // Then add lower hull in left-to-right order. - for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]); - for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]); - - return hull; - } - - function contains(polygon, point) { - var n = polygon.length, - p = polygon[n - 1], - x = point[0], y = point[1], - x0 = p[0], y0 = p[1], - x1, y1, - inside = false; - - for (var i = 0; i < n; ++i) { - p = polygon[i], x1 = p[0], y1 = p[1]; - if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside; - x0 = x1, y0 = y1; - } - - return inside; - } - - function length(polygon) { - var i = -1, - n = polygon.length, - b = polygon[n - 1], - xa, - ya, - xb = b[0], - yb = b[1], - perimeter = 0; - - while (++i < n) { - xa = xb; - ya = yb; - b = polygon[i]; - xb = b[0]; - yb = b[1]; - xa -= xb; - ya -= yb; - perimeter += Math.hypot(xa, ya); - } - - return perimeter; - } - - var defaultSource = Math.random; - - var uniform = (function sourceRandomUniform(source) { - function randomUniform(min, max) { - min = min == null ? 0 : +min; - max = max == null ? 1 : +max; - if (arguments.length === 1) max = min, min = 0; - else max -= min; - return function() { - return source() * max + min; - }; - } - - randomUniform.source = sourceRandomUniform; - - return randomUniform; - })(defaultSource); - - var int = (function sourceRandomInt(source) { - function randomInt(min, max) { - if (arguments.length < 2) max = min, min = 0; - min = Math.floor(min); - max = Math.floor(max) - min; - return function() { - return Math.floor(source() * max + min); - }; - } - - randomInt.source = sourceRandomInt; - - return randomInt; - })(defaultSource); - - var normal = (function sourceRandomNormal(source) { - function randomNormal(mu, sigma) { - var x, r; - mu = mu == null ? 0 : +mu; - sigma = sigma == null ? 1 : +sigma; - return function() { - var y; - - // If available, use the second previously-generated uniform random. - if (x != null) y = x, x = null; - - // Otherwise, generate a new x and y. - else do { - x = source() * 2 - 1; - y = source() * 2 - 1; - r = x * x + y * y; - } while (!r || r > 1); - - return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r); - }; - } - - randomNormal.source = sourceRandomNormal; - - return randomNormal; - })(defaultSource); - - var logNormal = (function sourceRandomLogNormal(source) { - var N = normal.source(source); - - function randomLogNormal() { - var randomNormal = N.apply(this, arguments); - return function() { - return Math.exp(randomNormal()); - }; - } - - randomLogNormal.source = sourceRandomLogNormal; - - return randomLogNormal; - })(defaultSource); - - var irwinHall = (function sourceRandomIrwinHall(source) { - function randomIrwinHall(n) { - if ((n = +n) <= 0) return () => 0; - return function() { - for (var sum = 0, i = n; i > 1; --i) sum += source(); - return sum + i * source(); - }; - } - - randomIrwinHall.source = sourceRandomIrwinHall; - - return randomIrwinHall; - })(defaultSource); - - var bates = (function sourceRandomBates(source) { - var I = irwinHall.source(source); - - function randomBates(n) { - // use limiting distribution at n === 0 - if ((n = +n) === 0) return source; - var randomIrwinHall = I(n); - return function() { - return randomIrwinHall() / n; - }; - } - - randomBates.source = sourceRandomBates; - - return randomBates; - })(defaultSource); - - var exponential = (function sourceRandomExponential(source) { - function randomExponential(lambda) { - return function() { - return -Math.log1p(-source()) / lambda; - }; - } - - randomExponential.source = sourceRandomExponential; - - return randomExponential; - })(defaultSource); - - var pareto = (function sourceRandomPareto(source) { - function randomPareto(alpha) { - if ((alpha = +alpha) < 0) throw new RangeError("invalid alpha"); - alpha = 1 / -alpha; - return function() { - return Math.pow(1 - source(), alpha); - }; - } - - randomPareto.source = sourceRandomPareto; - - return randomPareto; - })(defaultSource); - - var bernoulli = (function sourceRandomBernoulli(source) { - function randomBernoulli(p) { - if ((p = +p) < 0 || p > 1) throw new RangeError("invalid p"); - return function() { - return Math.floor(source() + p); - }; - } - - randomBernoulli.source = sourceRandomBernoulli; - - return randomBernoulli; - })(defaultSource); - - var geometric = (function sourceRandomGeometric(source) { - function randomGeometric(p) { - if ((p = +p) < 0 || p > 1) throw new RangeError("invalid p"); - if (p === 0) return () => Infinity; - if (p === 1) return () => 1; - p = Math.log1p(-p); - return function() { - return 1 + Math.floor(Math.log1p(-source()) / p); - }; - } - - randomGeometric.source = sourceRandomGeometric; - - return randomGeometric; - })(defaultSource); - - var gamma = (function sourceRandomGamma(source) { - var randomNormal = normal.source(source)(); - - function randomGamma(k, theta) { - if ((k = +k) < 0) throw new RangeError("invalid k"); - // degenerate distribution if k === 0 - if (k === 0) return () => 0; - theta = theta == null ? 1 : +theta; - // exponential distribution if k === 1 - if (k === 1) return () => -Math.log1p(-source()) * theta; - - var d = (k < 1 ? k + 1 : k) - 1 / 3, - c = 1 / (3 * Math.sqrt(d)), - multiplier = k < 1 ? () => Math.pow(source(), 1 / k) : () => 1; - return function() { - do { - do { - var x = randomNormal(), - v = 1 + c * x; - } while (v <= 0); - v *= v * v; - var u = 1 - source(); - } while (u >= 1 - 0.0331 * x * x * x * x && Math.log(u) >= 0.5 * x * x + d * (1 - v + Math.log(v))); - return d * v * multiplier() * theta; - }; - } - - randomGamma.source = sourceRandomGamma; - - return randomGamma; - })(defaultSource); - - var beta = (function sourceRandomBeta(source) { - var G = gamma.source(source); - - function randomBeta(alpha, beta) { - var X = G(alpha), - Y = G(beta); - return function() { - var x = X(); - return x === 0 ? 0 : x / (x + Y()); - }; - } - - randomBeta.source = sourceRandomBeta; - - return randomBeta; - })(defaultSource); - - var binomial = (function sourceRandomBinomial(source) { - var G = geometric.source(source), - B = beta.source(source); - - function randomBinomial(n, p) { - n = +n; - if ((p = +p) >= 1) return () => n; - if (p <= 0) return () => 0; - return function() { - var acc = 0, nn = n, pp = p; - while (nn * pp > 16 && nn * (1 - pp) > 16) { - var i = Math.floor((nn + 1) * pp), - y = B(i, nn - i + 1)(); - if (y <= pp) { - acc += i; - nn -= i; - pp = (pp - y) / (1 - y); - } else { - nn = i - 1; - pp /= y; - } - } - var sign = pp < 0.5, - pFinal = sign ? pp : 1 - pp, - g = G(pFinal); - for (var s = g(), k = 0; s <= nn; ++k) s += g(); - return acc + (sign ? k : nn - k); - }; - } - - randomBinomial.source = sourceRandomBinomial; - - return randomBinomial; - })(defaultSource); - - var weibull = (function sourceRandomWeibull(source) { - function randomWeibull(k, a, b) { - var outerFunc; - if ((k = +k) === 0) { - outerFunc = x => -Math.log(x); - } else { - k = 1 / k; - outerFunc = x => Math.pow(x, k); - } - a = a == null ? 0 : +a; - b = b == null ? 1 : +b; - return function() { - return a + b * outerFunc(-Math.log1p(-source())); - }; - } - - randomWeibull.source = sourceRandomWeibull; - - return randomWeibull; - })(defaultSource); - - var cauchy = (function sourceRandomCauchy(source) { - function randomCauchy(a, b) { - a = a == null ? 0 : +a; - b = b == null ? 1 : +b; - return function() { - return a + b * Math.tan(Math.PI * source()); - }; - } - - randomCauchy.source = sourceRandomCauchy; - - return randomCauchy; - })(defaultSource); - - var logistic = (function sourceRandomLogistic(source) { - function randomLogistic(a, b) { - a = a == null ? 0 : +a; - b = b == null ? 1 : +b; - return function() { - var u = source(); - return a + b * Math.log(u / (1 - u)); - }; - } - - randomLogistic.source = sourceRandomLogistic; - - return randomLogistic; - })(defaultSource); - - var poisson = (function sourceRandomPoisson(source) { - var G = gamma.source(source), - B = binomial.source(source); - - function randomPoisson(lambda) { - return function() { - var acc = 0, l = lambda; - while (l > 16) { - var n = Math.floor(0.875 * l), - t = G(n)(); - if (t > l) return acc + B(n - 1, l / t)(); - acc += n; - l -= t; - } - for (var s = -Math.log1p(-source()), k = 0; s <= l; ++k) s -= Math.log1p(-source()); - return acc + k; - }; - } - - randomPoisson.source = sourceRandomPoisson; - - return randomPoisson; - })(defaultSource); - - // https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use - const mul = 0x19660D; - const inc = 0x3C6EF35F; - const eps = 1 / 0x100000000; - - function lcg(seed = Math.random()) { - let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0; - return () => (state = mul * state + inc | 0, eps * (state >>> 0)); - } - - function initRange(domain, range) { - switch (arguments.length) { - case 0: break; - case 1: this.range(domain); break; - default: this.range(range).domain(domain); break; - } - return this; - } - - function initInterpolator(domain, interpolator) { - switch (arguments.length) { - case 0: break; - case 1: { - if (typeof domain === "function") this.interpolator(domain); - else this.range(domain); - break; - } - default: { - this.domain(domain); - if (typeof interpolator === "function") this.interpolator(interpolator); - else this.range(interpolator); - break; - } - } - return this; - } - - const implicit = Symbol("implicit"); - - function ordinal() { - var index = new InternMap(), - domain = [], - range = [], - unknown = implicit; - - function scale(d) { - let i = index.get(d); - if (i === undefined) { - if (unknown !== implicit) return unknown; - index.set(d, i = domain.push(d) - 1); - } - return range[i % range.length]; - } - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = [], index = new InternMap(); - for (const value of _) { - if (index.has(value)) continue; - index.set(value, domain.push(value) - 1); - } - return scale; - }; - - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), scale) : range.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return ordinal(domain, range).unknown(unknown); - }; - - initRange.apply(scale, arguments); - - return scale; - } - - function band() { - var scale = ordinal().unknown(undefined), - domain = scale.domain, - ordinalRange = scale.range, - r0 = 0, - r1 = 1, - step, - bandwidth, - round = false, - paddingInner = 0, - paddingOuter = 0, - align = 0.5; - - delete scale.unknown; - - function rescale() { - var n = domain().length, - reverse = r1 < r0, - start = reverse ? r1 : r0, - stop = reverse ? r0 : r1; - step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); - if (round) step = Math.floor(step); - start += (stop - start - step * (n - paddingInner)) * align; - bandwidth = step * (1 - paddingInner); - if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); - var values = range$2(n).map(function(i) { return start + step * i; }); - return ordinalRange(reverse ? values.reverse() : values); - } - - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - - scale.range = function(_) { - return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1]; - }; - - scale.rangeRound = function(_) { - return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale(); - }; - - scale.bandwidth = function() { - return bandwidth; - }; - - scale.step = function() { - return step; - }; - - scale.round = function(_) { - return arguments.length ? (round = !!_, rescale()) : round; - }; - - scale.padding = function(_) { - return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; - }; - - scale.paddingInner = function(_) { - return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; - }; - - scale.paddingOuter = function(_) { - return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; - }; - - scale.align = function(_) { - return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; - }; - - scale.copy = function() { - return band(domain(), [r0, r1]) - .round(round) - .paddingInner(paddingInner) - .paddingOuter(paddingOuter) - .align(align); - }; - - return initRange.apply(rescale(), arguments); - } - - function pointish(scale) { - var copy = scale.copy; - - scale.padding = scale.paddingOuter; - delete scale.paddingInner; - delete scale.paddingOuter; - - scale.copy = function() { - return pointish(copy()); - }; - - return scale; - } - - function point$4() { - return pointish(band.apply(null, arguments).paddingInner(1)); - } - - function constants(x) { - return function() { - return x; - }; - } - - function number$1(x) { - return +x; - } - - var unit = [0, 1]; - - function identity$3(x) { - return x; - } - - function normalize(a, b) { - return (b -= (a = +a)) - ? function(x) { return (x - a) / b; } - : constants(isNaN(b) ? NaN : 0.5); - } - - function clamper(a, b) { - var t; - if (a > b) t = a, a = b, b = t; - return function(x) { return Math.max(a, Math.min(b, x)); }; - } - - // normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. - // interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. - function bimap(domain, range, interpolate) { - var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1]; - if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0); - else d0 = normalize(d0, d1), r0 = interpolate(r0, r1); - return function(x) { return r0(d0(x)); }; - } - - function polymap(domain, range, interpolate) { - var j = Math.min(domain.length, range.length) - 1, - d = new Array(j), - r = new Array(j), - i = -1; - - // Reverse descending domains. - if (domain[j] < domain[0]) { - domain = domain.slice().reverse(); - range = range.slice().reverse(); - } - - while (++i < j) { - d[i] = normalize(domain[i], domain[i + 1]); - r[i] = interpolate(range[i], range[i + 1]); - } - - return function(x) { - var i = bisectRight(domain, x, 1, j) - 1; - return r[i](d[i](x)); - }; - } - - function copy$1(source, target) { - return target - .domain(source.domain()) - .range(source.range()) - .interpolate(source.interpolate()) - .clamp(source.clamp()) - .unknown(source.unknown()); - } - - function transformer$2() { - var domain = unit, - range = unit, - interpolate = interpolate$2, - transform, - untransform, - unknown, - clamp = identity$3, - piecewise, - output, - input; - - function rescale() { - var n = Math.min(domain.length, range.length); - if (clamp !== identity$3) clamp = clamper(domain[0], domain[n - 1]); - piecewise = n > 2 ? polymap : bimap; - output = input = null; - return scale; - } - - function scale(x) { - return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x))); - } - - scale.invert = function(y) { - return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y))); - }; - - scale.domain = function(_) { - return arguments.length ? (domain = Array.from(_, number$1), rescale()) : domain.slice(); - }; - - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); - }; - - scale.rangeRound = function(_) { - return range = Array.from(_), interpolate = interpolateRound, rescale(); - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = _ ? true : identity$3, rescale()) : clamp !== identity$3; - }; - - scale.interpolate = function(_) { - return arguments.length ? (interpolate = _, rescale()) : interpolate; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t, u) { - transform = t, untransform = u; - return rescale(); - }; - } - - function continuous() { - return transformer$2()(identity$3, identity$3); - } - - function tickFormat(start, stop, count, specifier) { - var step = tickStep(start, stop, count), - precision; - specifier = formatSpecifier(specifier == null ? ",f" : specifier); - switch (specifier.type) { - case "s": { - var value = Math.max(Math.abs(start), Math.abs(stop)); - if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision; - return formatPrefix(specifier, value); - } - case "": - case "e": - case "g": - case "p": - case "r": { - if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); - break; - } - case "f": - case "%": { - if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2; - break; - } - } - return format(specifier); - } - - function linearish(scale) { - var domain = scale.domain; - - scale.ticks = function(count) { - var d = domain(); - return ticks(d[0], d[d.length - 1], count == null ? 10 : count); - }; - - scale.tickFormat = function(count, specifier) { - var d = domain(); - return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); - }; - - scale.nice = function(count) { - if (count == null) count = 10; - - var d = domain(); - var i0 = 0; - var i1 = d.length - 1; - var start = d[i0]; - var stop = d[i1]; - var prestep; - var step; - var maxIter = 10; - - if (stop < start) { - step = start, start = stop, stop = step; - step = i0, i0 = i1, i1 = step; - } - - while (maxIter-- > 0) { - step = tickIncrement(start, stop, count); - if (step === prestep) { - d[i0] = start; - d[i1] = stop; - return domain(d); - } else if (step > 0) { - start = Math.floor(start / step) * step; - stop = Math.ceil(stop / step) * step; - } else if (step < 0) { - start = Math.ceil(start * step) / step; - stop = Math.floor(stop * step) / step; - } else { - break; - } - prestep = step; - } - - return scale; - }; - - return scale; - } - - function linear() { - var scale = continuous(); - - scale.copy = function() { - return copy$1(scale, linear()); - }; - - initRange.apply(scale, arguments); - - return linearish(scale); - } - - function identity$2(domain) { - var unknown; - - function scale(x) { - return x == null || isNaN(x = +x) ? unknown : x; - } - - scale.invert = scale; - - scale.domain = scale.range = function(_) { - return arguments.length ? (domain = Array.from(_, number$1), scale) : domain.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return identity$2(domain).unknown(unknown); - }; - - domain = arguments.length ? Array.from(domain, number$1) : [0, 1]; - - return linearish(scale); - } - - function nice(domain, interval) { - domain = domain.slice(); - - var i0 = 0, - i1 = domain.length - 1, - x0 = domain[i0], - x1 = domain[i1], - t; - - if (x1 < x0) { - t = i0, i0 = i1, i1 = t; - t = x0, x0 = x1, x1 = t; - } - - domain[i0] = interval.floor(x0); - domain[i1] = interval.ceil(x1); - return domain; - } - - function transformLog(x) { - return Math.log(x); - } - - function transformExp(x) { - return Math.exp(x); - } - - function transformLogn(x) { - return -Math.log(-x); - } - - function transformExpn(x) { - return -Math.exp(-x); - } - - function pow10(x) { - return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; - } - - function powp(base) { - return base === 10 ? pow10 - : base === Math.E ? Math.exp - : x => Math.pow(base, x); - } - - function logp(base) { - return base === Math.E ? Math.log - : base === 10 && Math.log10 - || base === 2 && Math.log2 - || (base = Math.log(base), x => Math.log(x) / base); - } - - function reflect(f) { - return (x, k) => -f(-x, k); - } - - function loggish(transform) { - const scale = transform(transformLog, transformExp); - const domain = scale.domain; - let base = 10; - let logs; - let pows; - - function rescale() { - logs = logp(base), pows = powp(base); - if (domain()[0] < 0) { - logs = reflect(logs), pows = reflect(pows); - transform(transformLogn, transformExpn); - } else { - transform(transformLog, transformExp); - } - return scale; - } - - scale.base = function(_) { - return arguments.length ? (base = +_, rescale()) : base; - }; - - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - - scale.ticks = count => { - const d = domain(); - let u = d[0]; - let v = d[d.length - 1]; - const r = v < u; - - if (r) ([u, v] = [v, u]); - - let i = logs(u); - let j = logs(v); - let k; - let t; - const n = count == null ? 10 : +count; - let z = []; - - if (!(base % 1) && j - i < n) { - i = Math.floor(i), j = Math.ceil(j); - if (u > 0) for (; i <= j; ++i) { - for (k = 1; k < base; ++k) { - t = i < 0 ? k / pows(-i) : k * pows(i); - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } else for (; i <= j; ++i) { - for (k = base - 1; k >= 1; --k) { - t = i > 0 ? k / pows(-i) : k * pows(i); - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } - if (z.length * 2 < n) z = ticks(u, v, n); - } else { - z = ticks(i, j, Math.min(j - i, n)).map(pows); - } - return r ? z.reverse() : z; - }; - - scale.tickFormat = (count, specifier) => { - if (count == null) count = 10; - if (specifier == null) specifier = base === 10 ? "s" : ","; - if (typeof specifier !== "function") { - if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true; - specifier = format(specifier); - } - if (count === Infinity) return specifier; - const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? - return d => { - let i = d / pows(Math.round(logs(d))); - if (i * base < base - 0.5) i *= base; - return i <= k ? specifier(d) : ""; - }; - }; - - scale.nice = () => { - return domain(nice(domain(), { - floor: x => pows(Math.floor(logs(x))), - ceil: x => pows(Math.ceil(logs(x))) - })); - }; - - return scale; - } - - function log() { - const scale = loggish(transformer$2()).domain([1, 10]); - scale.copy = () => copy$1(scale, log()).base(scale.base()); - initRange.apply(scale, arguments); - return scale; - } - - function transformSymlog(c) { - return function(x) { - return Math.sign(x) * Math.log1p(Math.abs(x / c)); - }; - } - - function transformSymexp(c) { - return function(x) { - return Math.sign(x) * Math.expm1(Math.abs(x)) * c; - }; - } - - function symlogish(transform) { - var c = 1, scale = transform(transformSymlog(c), transformSymexp(c)); - - scale.constant = function(_) { - return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c; - }; - - return linearish(scale); - } - - function symlog() { - var scale = symlogish(transformer$2()); - - scale.copy = function() { - return copy$1(scale, symlog()).constant(scale.constant()); - }; - - return initRange.apply(scale, arguments); - } - - function transformPow(exponent) { - return function(x) { - return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent); - }; - } - - function transformSqrt(x) { - return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x); - } - - function transformSquare(x) { - return x < 0 ? -x * x : x * x; - } - - function powish(transform) { - var scale = transform(identity$3, identity$3), - exponent = 1; - - function rescale() { - return exponent === 1 ? transform(identity$3, identity$3) - : exponent === 0.5 ? transform(transformSqrt, transformSquare) - : transform(transformPow(exponent), transformPow(1 / exponent)); - } - - scale.exponent = function(_) { - return arguments.length ? (exponent = +_, rescale()) : exponent; - }; - - return linearish(scale); - } - - function pow() { - var scale = powish(transformer$2()); - - scale.copy = function() { - return copy$1(scale, pow()).exponent(scale.exponent()); - }; - - initRange.apply(scale, arguments); - - return scale; - } - - function sqrt$1() { - return pow.apply(null, arguments).exponent(0.5); - } - - function square$1(x) { - return Math.sign(x) * x * x; - } - - function unsquare(x) { - return Math.sign(x) * Math.sqrt(Math.abs(x)); - } - - function radial() { - var squared = continuous(), - range = [0, 1], - round = false, - unknown; - - function scale(x) { - var y = unsquare(squared(x)); - return isNaN(y) ? unknown : round ? Math.round(y) : y; - } - - scale.invert = function(y) { - return squared.invert(square$1(y)); - }; - - scale.domain = function(_) { - return arguments.length ? (squared.domain(_), scale) : squared.domain(); - }; - - scale.range = function(_) { - return arguments.length ? (squared.range((range = Array.from(_, number$1)).map(square$1)), scale) : range.slice(); - }; - - scale.rangeRound = function(_) { - return scale.range(_).round(true); - }; - - scale.round = function(_) { - return arguments.length ? (round = !!_, scale) : round; - }; - - scale.clamp = function(_) { - return arguments.length ? (squared.clamp(_), scale) : squared.clamp(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return radial(squared.domain(), range) - .round(round) - .clamp(squared.clamp()) - .unknown(unknown); - }; - - initRange.apply(scale, arguments); - - return linearish(scale); - } - - function quantile() { - var domain = [], - range = [], - thresholds = [], - unknown; - - function rescale() { - var i = 0, n = Math.max(1, range.length); - thresholds = new Array(n - 1); - while (++i < n) thresholds[i - 1] = quantileSorted(domain, i / n); - return scale; - } - - function scale(x) { - return x == null || isNaN(x = +x) ? unknown : range[bisectRight(thresholds, x)]; - } - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return i < 0 ? [NaN, NaN] : [ - i > 0 ? thresholds[i - 1] : domain[0], - i < thresholds.length ? thresholds[i] : domain[domain.length - 1] - ]; - }; - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending$3); - return rescale(); - }; - - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.quantiles = function() { - return thresholds.slice(); - }; - - scale.copy = function() { - return quantile() - .domain(domain) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(scale, arguments); - } - - function quantize() { - var x0 = 0, - x1 = 1, - n = 1, - domain = [0.5], - range = [0, 1], - unknown; - - function scale(x) { - return x != null && x <= x ? range[bisectRight(domain, x, 0, n)] : unknown; - } - - function rescale() { - var i = -1; - domain = new Array(n); - while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1); - return scale; - } - - scale.domain = function(_) { - return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1]; - }; - - scale.range = function(_) { - return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice(); - }; - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return i < 0 ? [NaN, NaN] - : i < 1 ? [x0, domain[0]] - : i >= n ? [domain[n - 1], x1] - : [domain[i - 1], domain[i]]; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : scale; - }; - - scale.thresholds = function() { - return domain.slice(); - }; - - scale.copy = function() { - return quantize() - .domain([x0, x1]) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(linearish(scale), arguments); - } - - function threshold() { - var domain = [0.5], - range = [0, 1], - unknown, - n = 1; - - function scale(x) { - return x != null && x <= x ? range[bisectRight(domain, x, 0, n)] : unknown; - } - - scale.domain = function(_) { - return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice(); - }; - - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice(); - }; - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return [domain[i - 1], domain[i]]; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return threshold() - .domain(domain) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(scale, arguments); - } - - const t0 = new Date, t1 = new Date; - - function timeInterval(floori, offseti, count, field) { - - function interval(date) { - return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; - } - - interval.floor = (date) => { - return floori(date = new Date(+date)), date; - }; - - interval.ceil = (date) => { - return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; - }; - - interval.round = (date) => { - const d0 = interval(date), d1 = interval.ceil(date); - return date - d0 < d1 - date ? d0 : d1; - }; - - interval.offset = (date, step) => { - return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; - }; - - interval.range = (start, stop, step) => { - const range = []; - start = interval.ceil(start); - step = step == null ? 1 : Math.floor(step); - if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date - let previous; - do range.push(previous = new Date(+start)), offseti(start, step), floori(start); - while (previous < start && start < stop); - return range; - }; - - interval.filter = (test) => { - return timeInterval((date) => { - if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); - }, (date, step) => { - if (date >= date) { - if (step < 0) while (++step <= 0) { - while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty - } else while (--step >= 0) { - while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty - } - } - }); - }; - - if (count) { - interval.count = (start, end) => { - t0.setTime(+start), t1.setTime(+end); - floori(t0), floori(t1); - return Math.floor(count(t0, t1)); - }; - - interval.every = (step) => { - step = Math.floor(step); - return !isFinite(step) || !(step > 0) ? null - : !(step > 1) ? interval - : interval.filter(field - ? (d) => field(d) % step === 0 - : (d) => interval.count(0, d) % step === 0); - }; - } - - return interval; - } - - const millisecond = timeInterval(() => { - // noop - }, (date, step) => { - date.setTime(+date + step); - }, (start, end) => { - return end - start; - }); - - // An optimized implementation for this simple case. - millisecond.every = (k) => { - k = Math.floor(k); - if (!isFinite(k) || !(k > 0)) return null; - if (!(k > 1)) return millisecond; - return timeInterval((date) => { - date.setTime(Math.floor(date / k) * k); - }, (date, step) => { - date.setTime(+date + step * k); - }, (start, end) => { - return (end - start) / k; - }); - }; - - const milliseconds = millisecond.range; - - const durationSecond = 1000; - const durationMinute = durationSecond * 60; - const durationHour = durationMinute * 60; - const durationDay = durationHour * 24; - const durationWeek = durationDay * 7; - const durationMonth = durationDay * 30; - const durationYear = durationDay * 365; - - const second = timeInterval((date) => { - date.setTime(date - date.getMilliseconds()); - }, (date, step) => { - date.setTime(+date + step * durationSecond); - }, (start, end) => { - return (end - start) / durationSecond; - }, (date) => { - return date.getUTCSeconds(); - }); - - const seconds = second.range; - - const timeMinute = timeInterval((date) => { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); - }, (date, step) => { - date.setTime(+date + step * durationMinute); - }, (start, end) => { - return (end - start) / durationMinute; - }, (date) => { - return date.getMinutes(); - }); - - const timeMinutes = timeMinute.range; - - const utcMinute = timeInterval((date) => { - date.setUTCSeconds(0, 0); - }, (date, step) => { - date.setTime(+date + step * durationMinute); - }, (start, end) => { - return (end - start) / durationMinute; - }, (date) => { - return date.getUTCMinutes(); - }); - - const utcMinutes = utcMinute.range; - - const timeHour = timeInterval((date) => { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); - }, (date, step) => { - date.setTime(+date + step * durationHour); - }, (start, end) => { - return (end - start) / durationHour; - }, (date) => { - return date.getHours(); - }); - - const timeHours = timeHour.range; - - const utcHour = timeInterval((date) => { - date.setUTCMinutes(0, 0, 0); - }, (date, step) => { - date.setTime(+date + step * durationHour); - }, (start, end) => { - return (end - start) / durationHour; - }, (date) => { - return date.getUTCHours(); - }); - - const utcHours = utcHour.range; - - const timeDay = timeInterval( - date => date.setHours(0, 0, 0, 0), - (date, step) => date.setDate(date.getDate() + step), - (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay, - date => date.getDate() - 1 - ); - - const timeDays = timeDay.range; - - const utcDay = timeInterval((date) => { - date.setUTCHours(0, 0, 0, 0); - }, (date, step) => { - date.setUTCDate(date.getUTCDate() + step); - }, (start, end) => { - return (end - start) / durationDay; - }, (date) => { - return date.getUTCDate() - 1; - }); - - const utcDays = utcDay.range; - - const unixDay = timeInterval((date) => { - date.setUTCHours(0, 0, 0, 0); - }, (date, step) => { - date.setUTCDate(date.getUTCDate() + step); - }, (start, end) => { - return (end - start) / durationDay; - }, (date) => { - return Math.floor(date / durationDay); - }); - - const unixDays = unixDay.range; - - function timeWeekday(i) { - return timeInterval((date) => { - date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); - date.setHours(0, 0, 0, 0); - }, (date, step) => { - date.setDate(date.getDate() + step * 7); - }, (start, end) => { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; - }); - } - - const timeSunday = timeWeekday(0); - const timeMonday = timeWeekday(1); - const timeTuesday = timeWeekday(2); - const timeWednesday = timeWeekday(3); - const timeThursday = timeWeekday(4); - const timeFriday = timeWeekday(5); - const timeSaturday = timeWeekday(6); - - const timeSundays = timeSunday.range; - const timeMondays = timeMonday.range; - const timeTuesdays = timeTuesday.range; - const timeWednesdays = timeWednesday.range; - const timeThursdays = timeThursday.range; - const timeFridays = timeFriday.range; - const timeSaturdays = timeSaturday.range; - - function utcWeekday(i) { - return timeInterval((date) => { - date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); - date.setUTCHours(0, 0, 0, 0); - }, (date, step) => { - date.setUTCDate(date.getUTCDate() + step * 7); - }, (start, end) => { - return (end - start) / durationWeek; - }); - } - - const utcSunday = utcWeekday(0); - const utcMonday = utcWeekday(1); - const utcTuesday = utcWeekday(2); - const utcWednesday = utcWeekday(3); - const utcThursday = utcWeekday(4); - const utcFriday = utcWeekday(5); - const utcSaturday = utcWeekday(6); - - const utcSundays = utcSunday.range; - const utcMondays = utcMonday.range; - const utcTuesdays = utcTuesday.range; - const utcWednesdays = utcWednesday.range; - const utcThursdays = utcThursday.range; - const utcFridays = utcFriday.range; - const utcSaturdays = utcSaturday.range; - - const timeMonth = timeInterval((date) => { - date.setDate(1); - date.setHours(0, 0, 0, 0); - }, (date, step) => { - date.setMonth(date.getMonth() + step); - }, (start, end) => { - return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; - }, (date) => { - return date.getMonth(); - }); - - const timeMonths = timeMonth.range; - - const utcMonth = timeInterval((date) => { - date.setUTCDate(1); - date.setUTCHours(0, 0, 0, 0); - }, (date, step) => { - date.setUTCMonth(date.getUTCMonth() + step); - }, (start, end) => { - return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; - }, (date) => { - return date.getUTCMonth(); - }); - - const utcMonths = utcMonth.range; - - const timeYear = timeInterval((date) => { - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); - }, (date, step) => { - date.setFullYear(date.getFullYear() + step); - }, (start, end) => { - return end.getFullYear() - start.getFullYear(); - }, (date) => { - return date.getFullYear(); - }); - - // An optimized implementation for this simple case. - timeYear.every = (k) => { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => { - date.setFullYear(Math.floor(date.getFullYear() / k) * k); - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); - }, (date, step) => { - date.setFullYear(date.getFullYear() + step * k); - }); - }; - - const timeYears = timeYear.range; - - const utcYear = timeInterval((date) => { - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - }, (date, step) => { - date.setUTCFullYear(date.getUTCFullYear() + step); - }, (start, end) => { - return end.getUTCFullYear() - start.getUTCFullYear(); - }, (date) => { - return date.getUTCFullYear(); - }); - - // An optimized implementation for this simple case. - utcYear.every = (k) => { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => { - date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - }, (date, step) => { - date.setUTCFullYear(date.getUTCFullYear() + step * k); - }); - }; - - const utcYears = utcYear.range; - - function ticker(year, month, week, day, hour, minute) { - - const tickIntervals = [ - [second, 1, durationSecond], - [second, 5, 5 * durationSecond], - [second, 15, 15 * durationSecond], - [second, 30, 30 * durationSecond], - [minute, 1, durationMinute], - [minute, 5, 5 * durationMinute], - [minute, 15, 15 * durationMinute], - [minute, 30, 30 * durationMinute], - [ hour, 1, durationHour ], - [ hour, 3, 3 * durationHour ], - [ hour, 6, 6 * durationHour ], - [ hour, 12, 12 * durationHour ], - [ day, 1, durationDay ], - [ day, 2, 2 * durationDay ], - [ week, 1, durationWeek ], - [ month, 1, durationMonth ], - [ month, 3, 3 * durationMonth ], - [ year, 1, durationYear ] - ]; - - function ticks(start, stop, count) { - const reverse = stop < start; - if (reverse) [start, stop] = [stop, start]; - const interval = count && typeof count.range === "function" ? count : tickInterval(start, stop, count); - const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop - return reverse ? ticks.reverse() : ticks; - } - - function tickInterval(start, stop, count) { - const target = Math.abs(stop - start) / count; - const i = bisector(([,, step]) => step).right(tickIntervals, target); - if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count)); - if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1)); - const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; - return t.every(step); - } - - return [ticks, tickInterval]; - } - - const [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute); - const [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute); - - function localDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); - date.setFullYear(d.y); - return date; - } - return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); - } - - function utcDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); - date.setUTCFullYear(d.y); - return date; - } - return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); - } - - function newDate(y, m, d) { - return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0}; - } - - function formatLocale(locale) { - var locale_dateTime = locale.dateTime, - locale_date = locale.date, - locale_time = locale.time, - locale_periods = locale.periods, - locale_weekdays = locale.days, - locale_shortWeekdays = locale.shortDays, - locale_months = locale.months, - locale_shortMonths = locale.shortMonths; - - var periodRe = formatRe(locale_periods), - periodLookup = formatLookup(locale_periods), - weekdayRe = formatRe(locale_weekdays), - weekdayLookup = formatLookup(locale_weekdays), - shortWeekdayRe = formatRe(locale_shortWeekdays), - shortWeekdayLookup = formatLookup(locale_shortWeekdays), - monthRe = formatRe(locale_months), - monthLookup = formatLookup(locale_months), - shortMonthRe = formatRe(locale_shortMonths), - shortMonthLookup = formatLookup(locale_shortMonths); - - var formats = { - "a": formatShortWeekday, - "A": formatWeekday, - "b": formatShortMonth, - "B": formatMonth, - "c": null, - "d": formatDayOfMonth, - "e": formatDayOfMonth, - "f": formatMicroseconds, - "g": formatYearISO, - "G": formatFullYearISO, - "H": formatHour24, - "I": formatHour12, - "j": formatDayOfYear, - "L": formatMilliseconds, - "m": formatMonthNumber, - "M": formatMinutes, - "p": formatPeriod, - "q": formatQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatSeconds, - "u": formatWeekdayNumberMonday, - "U": formatWeekNumberSunday, - "V": formatWeekNumberISO, - "w": formatWeekdayNumberSunday, - "W": formatWeekNumberMonday, - "x": null, - "X": null, - "y": formatYear, - "Y": formatFullYear, - "Z": formatZone, - "%": formatLiteralPercent - }; - - var utcFormats = { - "a": formatUTCShortWeekday, - "A": formatUTCWeekday, - "b": formatUTCShortMonth, - "B": formatUTCMonth, - "c": null, - "d": formatUTCDayOfMonth, - "e": formatUTCDayOfMonth, - "f": formatUTCMicroseconds, - "g": formatUTCYearISO, - "G": formatUTCFullYearISO, - "H": formatUTCHour24, - "I": formatUTCHour12, - "j": formatUTCDayOfYear, - "L": formatUTCMilliseconds, - "m": formatUTCMonthNumber, - "M": formatUTCMinutes, - "p": formatUTCPeriod, - "q": formatUTCQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatUTCSeconds, - "u": formatUTCWeekdayNumberMonday, - "U": formatUTCWeekNumberSunday, - "V": formatUTCWeekNumberISO, - "w": formatUTCWeekdayNumberSunday, - "W": formatUTCWeekNumberMonday, - "x": null, - "X": null, - "y": formatUTCYear, - "Y": formatUTCFullYear, - "Z": formatUTCZone, - "%": formatLiteralPercent - }; - - var parses = { - "a": parseShortWeekday, - "A": parseWeekday, - "b": parseShortMonth, - "B": parseMonth, - "c": parseLocaleDateTime, - "d": parseDayOfMonth, - "e": parseDayOfMonth, - "f": parseMicroseconds, - "g": parseYear, - "G": parseFullYear, - "H": parseHour24, - "I": parseHour24, - "j": parseDayOfYear, - "L": parseMilliseconds, - "m": parseMonthNumber, - "M": parseMinutes, - "p": parsePeriod, - "q": parseQuarter, - "Q": parseUnixTimestamp, - "s": parseUnixTimestampSeconds, - "S": parseSeconds, - "u": parseWeekdayNumberMonday, - "U": parseWeekNumberSunday, - "V": parseWeekNumberISO, - "w": parseWeekdayNumberSunday, - "W": parseWeekNumberMonday, - "x": parseLocaleDate, - "X": parseLocaleTime, - "y": parseYear, - "Y": parseFullYear, - "Z": parseZone, - "%": parseLiteralPercent - }; - - // These recursive directive definitions must be deferred. - formats.x = newFormat(locale_date, formats); - formats.X = newFormat(locale_time, formats); - formats.c = newFormat(locale_dateTime, formats); - utcFormats.x = newFormat(locale_date, utcFormats); - utcFormats.X = newFormat(locale_time, utcFormats); - utcFormats.c = newFormat(locale_dateTime, utcFormats); - - function newFormat(specifier, formats) { - return function(date) { - var string = [], - i = -1, - j = 0, - n = specifier.length, - c, - pad, - format; - - if (!(date instanceof Date)) date = new Date(+date); - - while (++i < n) { - if (specifier.charCodeAt(i) === 37) { - string.push(specifier.slice(j, i)); - if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); - else pad = c === "e" ? " " : "0"; - if (format = formats[c]) c = format(date, pad); - string.push(c); - j = i + 1; - } - } - - string.push(specifier.slice(j, i)); - return string.join(""); - }; - } - - function newParse(specifier, Z) { - return function(string) { - var d = newDate(1900, undefined, 1), - i = parseSpecifier(d, specifier, string += "", 0), - week, day; - if (i != string.length) return null; - - // If a UNIX timestamp is specified, return it. - if ("Q" in d) return new Date(d.Q); - if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); - - // If this is utcParse, never use the local timezone. - if (Z && !("Z" in d)) d.Z = 0; - - // The am-pm flag is 0 for AM, and 1 for PM. - if ("p" in d) d.H = d.H % 12 + d.p * 12; - - // If the month was not specified, inherit from the quarter. - if (d.m === undefined) d.m = "q" in d ? d.q : 0; - - // Convert day-of-week and week-of-year to day-of-year. - if ("V" in d) { - if (d.V < 1 || d.V > 53) return null; - if (!("w" in d)) d.w = 1; - if ("Z" in d) { - week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay(); - week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week); - week = utcDay.offset(week, (d.V - 1) * 7); - d.y = week.getUTCFullYear(); - d.m = week.getUTCMonth(); - d.d = week.getUTCDate() + (d.w + 6) % 7; - } else { - week = localDate(newDate(d.y, 0, 1)), day = week.getDay(); - week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week); - week = timeDay.offset(week, (d.V - 1) * 7); - d.y = week.getFullYear(); - d.m = week.getMonth(); - d.d = week.getDate() + (d.w + 6) % 7; - } - } else if ("W" in d || "U" in d) { - if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; - day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); - d.m = 0; - d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7; - } - - // If a time zone is specified, all fields are interpreted as UTC and then - // offset according to the specified time zone. - if ("Z" in d) { - d.H += d.Z / 100 | 0; - d.M += d.Z % 100; - return utcDate(d); - } - - // Otherwise, all fields are in local time. - return localDate(d); - }; - } - - function parseSpecifier(d, specifier, string, j) { - var i = 0, - n = specifier.length, - m = string.length, - c, - parse; - - while (i < n) { - if (j >= m) return -1; - c = specifier.charCodeAt(i++); - if (c === 37) { - c = specifier.charAt(i++); - parse = parses[c in pads ? specifier.charAt(i++) : c]; - if (!parse || ((j = parse(d, string, j)) < 0)) return -1; - } else if (c != string.charCodeAt(j++)) { - return -1; - } - } - - return j; - } - - function parsePeriod(d, string, i) { - var n = periodRe.exec(string.slice(i)); - return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - - function parseShortWeekday(d, string, i) { - var n = shortWeekdayRe.exec(string.slice(i)); - return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - - function parseWeekday(d, string, i) { - var n = weekdayRe.exec(string.slice(i)); - return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - - function parseShortMonth(d, string, i) { - var n = shortMonthRe.exec(string.slice(i)); - return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - - function parseMonth(d, string, i) { - var n = monthRe.exec(string.slice(i)); - return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - - function parseLocaleDateTime(d, string, i) { - return parseSpecifier(d, locale_dateTime, string, i); - } - - function parseLocaleDate(d, string, i) { - return parseSpecifier(d, locale_date, string, i); - } - - function parseLocaleTime(d, string, i) { - return parseSpecifier(d, locale_time, string, i); - } - - function formatShortWeekday(d) { - return locale_shortWeekdays[d.getDay()]; - } - - function formatWeekday(d) { - return locale_weekdays[d.getDay()]; - } - - function formatShortMonth(d) { - return locale_shortMonths[d.getMonth()]; - } - - function formatMonth(d) { - return locale_months[d.getMonth()]; - } - - function formatPeriod(d) { - return locale_periods[+(d.getHours() >= 12)]; - } - - function formatQuarter(d) { - return 1 + ~~(d.getMonth() / 3); - } - - function formatUTCShortWeekday(d) { - return locale_shortWeekdays[d.getUTCDay()]; - } - - function formatUTCWeekday(d) { - return locale_weekdays[d.getUTCDay()]; - } - - function formatUTCShortMonth(d) { - return locale_shortMonths[d.getUTCMonth()]; - } - - function formatUTCMonth(d) { - return locale_months[d.getUTCMonth()]; - } - - function formatUTCPeriod(d) { - return locale_periods[+(d.getUTCHours() >= 12)]; - } - - function formatUTCQuarter(d) { - return 1 + ~~(d.getUTCMonth() / 3); - } - - return { - format: function(specifier) { - var f = newFormat(specifier += "", formats); - f.toString = function() { return specifier; }; - return f; - }, - parse: function(specifier) { - var p = newParse(specifier += "", false); - p.toString = function() { return specifier; }; - return p; - }, - utcFormat: function(specifier) { - var f = newFormat(specifier += "", utcFormats); - f.toString = function() { return specifier; }; - return f; - }, - utcParse: function(specifier) { - var p = newParse(specifier += "", true); - p.toString = function() { return specifier; }; - return p; - } - }; - } - - var pads = {"-": "", "_": " ", "0": "0"}, - numberRe = /^\s*\d+/, // note: ignores next directive - percentRe = /^%/, - requoteRe = /[\\^$*+?|[\]().{}]/g; - - function pad(value, fill, width) { - var sign = value < 0 ? "-" : "", - string = (sign ? -value : value) + "", - length = string.length; - return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); - } - - function requote(s) { - return s.replace(requoteRe, "\\$&"); - } - - function formatRe(names) { - return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); - } - - function formatLookup(names) { - return new Map(names.map((name, i) => [name.toLowerCase(), i])); - } - - function parseWeekdayNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.w = +n[0], i + n[0].length) : -1; - } - - function parseWeekdayNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.u = +n[0], i + n[0].length) : -1; - } - - function parseWeekNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.U = +n[0], i + n[0].length) : -1; - } - - function parseWeekNumberISO(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.V = +n[0], i + n[0].length) : -1; - } - - function parseWeekNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.W = +n[0], i + n[0].length) : -1; - } - - function parseFullYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 4)); - return n ? (d.y = +n[0], i + n[0].length) : -1; - } - - function parseYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; - } - - function parseZone(d, string, i) { - var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); - return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; - } - - function parseQuarter(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; - } - - function parseMonthNumber(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.m = n[0] - 1, i + n[0].length) : -1; - } - - function parseDayOfMonth(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.d = +n[0], i + n[0].length) : -1; - } - - function parseDayOfYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; - } - - function parseHour24(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.H = +n[0], i + n[0].length) : -1; - } - - function parseMinutes(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.M = +n[0], i + n[0].length) : -1; - } - - function parseSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.S = +n[0], i + n[0].length) : -1; - } - - function parseMilliseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.L = +n[0], i + n[0].length) : -1; - } - - function parseMicroseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 6)); - return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; - } - - function parseLiteralPercent(d, string, i) { - var n = percentRe.exec(string.slice(i, i + 1)); - return n ? i + n[0].length : -1; - } - - function parseUnixTimestamp(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.Q = +n[0], i + n[0].length) : -1; - } - - function parseUnixTimestampSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.s = +n[0], i + n[0].length) : -1; - } - - function formatDayOfMonth(d, p) { - return pad(d.getDate(), p, 2); - } - - function formatHour24(d, p) { - return pad(d.getHours(), p, 2); - } - - function formatHour12(d, p) { - return pad(d.getHours() % 12 || 12, p, 2); - } - - function formatDayOfYear(d, p) { - return pad(1 + timeDay.count(timeYear(d), d), p, 3); - } - - function formatMilliseconds(d, p) { - return pad(d.getMilliseconds(), p, 3); - } - - function formatMicroseconds(d, p) { - return formatMilliseconds(d, p) + "000"; - } - - function formatMonthNumber(d, p) { - return pad(d.getMonth() + 1, p, 2); - } - - function formatMinutes(d, p) { - return pad(d.getMinutes(), p, 2); - } - - function formatSeconds(d, p) { - return pad(d.getSeconds(), p, 2); - } - - function formatWeekdayNumberMonday(d) { - var day = d.getDay(); - return day === 0 ? 7 : day; - } - - function formatWeekNumberSunday(d, p) { - return pad(timeSunday.count(timeYear(d) - 1, d), p, 2); - } - - function dISO(d) { - var day = d.getDay(); - return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d); - } - - function formatWeekNumberISO(d, p) { - d = dISO(d); - return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2); - } - - function formatWeekdayNumberSunday(d) { - return d.getDay(); - } - - function formatWeekNumberMonday(d, p) { - return pad(timeMonday.count(timeYear(d) - 1, d), p, 2); - } - - function formatYear(d, p) { - return pad(d.getFullYear() % 100, p, 2); - } - - function formatYearISO(d, p) { - d = dISO(d); - return pad(d.getFullYear() % 100, p, 2); - } - - function formatFullYear(d, p) { - return pad(d.getFullYear() % 10000, p, 4); - } - - function formatFullYearISO(d, p) { - var day = d.getDay(); - d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d); - return pad(d.getFullYear() % 10000, p, 4); - } - - function formatZone(d) { - var z = d.getTimezoneOffset(); - return (z > 0 ? "-" : (z *= -1, "+")) - + pad(z / 60 | 0, "0", 2) - + pad(z % 60, "0", 2); - } - - function formatUTCDayOfMonth(d, p) { - return pad(d.getUTCDate(), p, 2); - } - - function formatUTCHour24(d, p) { - return pad(d.getUTCHours(), p, 2); - } - - function formatUTCHour12(d, p) { - return pad(d.getUTCHours() % 12 || 12, p, 2); - } - - function formatUTCDayOfYear(d, p) { - return pad(1 + utcDay.count(utcYear(d), d), p, 3); - } - - function formatUTCMilliseconds(d, p) { - return pad(d.getUTCMilliseconds(), p, 3); - } - - function formatUTCMicroseconds(d, p) { - return formatUTCMilliseconds(d, p) + "000"; - } - - function formatUTCMonthNumber(d, p) { - return pad(d.getUTCMonth() + 1, p, 2); - } - - function formatUTCMinutes(d, p) { - return pad(d.getUTCMinutes(), p, 2); - } - - function formatUTCSeconds(d, p) { - return pad(d.getUTCSeconds(), p, 2); - } - - function formatUTCWeekdayNumberMonday(d) { - var dow = d.getUTCDay(); - return dow === 0 ? 7 : dow; - } - - function formatUTCWeekNumberSunday(d, p) { - return pad(utcSunday.count(utcYear(d) - 1, d), p, 2); - } - - function UTCdISO(d) { - var day = d.getUTCDay(); - return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d); - } - - function formatUTCWeekNumberISO(d, p) { - d = UTCdISO(d); - return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2); - } - - function formatUTCWeekdayNumberSunday(d) { - return d.getUTCDay(); - } - - function formatUTCWeekNumberMonday(d, p) { - return pad(utcMonday.count(utcYear(d) - 1, d), p, 2); - } - - function formatUTCYear(d, p) { - return pad(d.getUTCFullYear() % 100, p, 2); - } - - function formatUTCYearISO(d, p) { - d = UTCdISO(d); - return pad(d.getUTCFullYear() % 100, p, 2); - } - - function formatUTCFullYear(d, p) { - return pad(d.getUTCFullYear() % 10000, p, 4); - } - - function formatUTCFullYearISO(d, p) { - var day = d.getUTCDay(); - d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d); - return pad(d.getUTCFullYear() % 10000, p, 4); - } - - function formatUTCZone() { - return "+0000"; - } - - function formatLiteralPercent() { - return "%"; - } - - function formatUnixTimestamp(d) { - return +d; - } - - function formatUnixTimestampSeconds(d) { - return Math.floor(+d / 1000); - } - - var locale; - var timeFormat; - var timeParse; - var utcFormat; - var utcParse; - - defaultLocale({ - dateTime: "%x, %X", - date: "%-m/%-d/%Y", - time: "%-I:%M:%S %p", - periods: ["AM", "PM"], - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] - }); - - function defaultLocale(definition) { - locale = formatLocale(definition); - timeFormat = locale.format; - timeParse = locale.parse; - utcFormat = locale.utcFormat; - utcParse = locale.utcParse; - return locale; - } - - var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; - - function formatIsoNative(date) { - return date.toISOString(); - } - - var formatIso = Date.prototype.toISOString - ? formatIsoNative - : utcFormat(isoSpecifier); - - function parseIsoNative(string) { - var date = new Date(string); - return isNaN(date) ? null : date; - } - - var parseIso = +new Date("2000-01-01T00:00:00.000Z") - ? parseIsoNative - : utcParse(isoSpecifier); - - function date(t) { - return new Date(t); - } - - function number(t) { - return t instanceof Date ? +t : +new Date(+t); - } - - function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) { - var scale = continuous(), - invert = scale.invert, - domain = scale.domain; - - var formatMillisecond = format(".%L"), - formatSecond = format(":%S"), - formatMinute = format("%I:%M"), - formatHour = format("%I %p"), - formatDay = format("%a %d"), - formatWeek = format("%b %d"), - formatMonth = format("%B"), - formatYear = format("%Y"); - - function tickFormat(date) { - return (second(date) < date ? formatMillisecond - : minute(date) < date ? formatSecond - : hour(date) < date ? formatMinute - : day(date) < date ? formatHour - : month(date) < date ? (week(date) < date ? formatDay : formatWeek) - : year(date) < date ? formatMonth - : formatYear)(date); - } - - scale.invert = function(y) { - return new Date(invert(y)); - }; - - scale.domain = function(_) { - return arguments.length ? domain(Array.from(_, number)) : domain().map(date); - }; - - scale.ticks = function(interval) { - var d = domain(); - return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval); - }; - - scale.tickFormat = function(count, specifier) { - return specifier == null ? tickFormat : format(specifier); - }; - - scale.nice = function(interval) { - var d = domain(); - if (!interval || typeof interval.range !== "function") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval); - return interval ? domain(nice(d, interval)) : scale; - }; - - scale.copy = function() { - return copy$1(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format)); - }; - - return scale; - } - - function time() { - return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute, second, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments); - } - - function utcTime() { - return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments); - } - - function transformer$1() { - var x0 = 0, - x1 = 1, - t0, - t1, - k10, - transform, - interpolator = identity$3, - clamp = false, - unknown; - - function scale(x) { - return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x)); - } - - scale.domain = function(_) { - return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1]; - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - function range(interpolate) { - return function(_) { - var r0, r1; - return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)]; - }; - } - - scale.range = range(interpolate$2); - - scale.rangeRound = range(interpolateRound); - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t) { - transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0); - return scale; - }; - } - - function copy(source, target) { - return target - .domain(source.domain()) - .interpolator(source.interpolator()) - .clamp(source.clamp()) - .unknown(source.unknown()); - } - - function sequential() { - var scale = linearish(transformer$1()(identity$3)); - - scale.copy = function() { - return copy(scale, sequential()); - }; - - return initInterpolator.apply(scale, arguments); - } - - function sequentialLog() { - var scale = loggish(transformer$1()).domain([1, 10]); - - scale.copy = function() { - return copy(scale, sequentialLog()).base(scale.base()); - }; - - return initInterpolator.apply(scale, arguments); - } - - function sequentialSymlog() { - var scale = symlogish(transformer$1()); - - scale.copy = function() { - return copy(scale, sequentialSymlog()).constant(scale.constant()); - }; - - return initInterpolator.apply(scale, arguments); - } - - function sequentialPow() { - var scale = powish(transformer$1()); - - scale.copy = function() { - return copy(scale, sequentialPow()).exponent(scale.exponent()); - }; - - return initInterpolator.apply(scale, arguments); - } - - function sequentialSqrt() { - return sequentialPow.apply(null, arguments).exponent(0.5); - } - - function sequentialQuantile() { - var domain = [], - interpolator = identity$3; - - function scale(x) { - if (x != null && !isNaN(x = +x)) return interpolator((bisectRight(domain, x, 1) - 1) / (domain.length - 1)); - } - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending$3); - return scale; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.range = function() { - return domain.map((d, i) => interpolator(i / (domain.length - 1))); - }; - - scale.quantiles = function(n) { - return Array.from({length: n + 1}, (_, i) => quantile$1(domain, i / n)); - }; - - scale.copy = function() { - return sequentialQuantile(interpolator).domain(domain); - }; - - return initInterpolator.apply(scale, arguments); - } - - function transformer() { - var x0 = 0, - x1 = 0.5, - x2 = 1, - s = 1, - t0, - t1, - t2, - k10, - k21, - interpolator = identity$3, - transform, - clamp = false, - unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x)); - } - - scale.domain = function(_) { - return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2]; - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - function range(interpolate) { - return function(_) { - var r0, r1, r2; - return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)]; - }; - } - - scale.range = range(interpolate$2); - - scale.rangeRound = range(interpolateRound); - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t) { - transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1; - return scale; - }; - } - - function diverging$1() { - var scale = linearish(transformer()(identity$3)); - - scale.copy = function() { - return copy(scale, diverging$1()); - }; - - return initInterpolator.apply(scale, arguments); - } - - function divergingLog() { - var scale = loggish(transformer()).domain([0.1, 1, 10]); - - scale.copy = function() { - return copy(scale, divergingLog()).base(scale.base()); - }; - - return initInterpolator.apply(scale, arguments); - } - - function divergingSymlog() { - var scale = symlogish(transformer()); - - scale.copy = function() { - return copy(scale, divergingSymlog()).constant(scale.constant()); - }; - - return initInterpolator.apply(scale, arguments); - } - - function divergingPow() { - var scale = powish(transformer()); - - scale.copy = function() { - return copy(scale, divergingPow()).exponent(scale.exponent()); - }; - - return initInterpolator.apply(scale, arguments); - } - - function divergingSqrt() { - return divergingPow.apply(null, arguments).exponent(0.5); - } - - function colors(specifier) { - var n = specifier.length / 6 | 0, colors = new Array(n), i = 0; - while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6); - return colors; - } - - var category10 = colors("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"); - - var Accent = colors("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"); - - var Dark2 = colors("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"); - - var observable10 = colors("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"); - - var Paired = colors("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"); - - var Pastel1 = colors("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"); - - var Pastel2 = colors("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"); - - var Set1 = colors("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"); - - var Set2 = colors("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"); - - var Set3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"); - - var Tableau10 = colors("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"); - - var ramp$1 = scheme => rgbBasis(scheme[scheme.length - 1]); - - var scheme$q = new Array(3).concat( - "d8b365f5f5f55ab4ac", - "a6611adfc27d80cdc1018571", - "a6611adfc27df5f5f580cdc1018571", - "8c510ad8b365f6e8c3c7eae55ab4ac01665e", - "8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e", - "8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e", - "8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e", - "5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30", - "5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30" - ).map(colors); - - var BrBG = ramp$1(scheme$q); - - var scheme$p = new Array(3).concat( - "af8dc3f7f7f77fbf7b", - "7b3294c2a5cfa6dba0008837", - "7b3294c2a5cff7f7f7a6dba0008837", - "762a83af8dc3e7d4e8d9f0d37fbf7b1b7837", - "762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837", - "762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837", - "762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837", - "40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b", - "40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b" - ).map(colors); - - var PRGn = ramp$1(scheme$p); - - var scheme$o = new Array(3).concat( - "e9a3c9f7f7f7a1d76a", - "d01c8bf1b6dab8e1864dac26", - "d01c8bf1b6daf7f7f7b8e1864dac26", - "c51b7de9a3c9fde0efe6f5d0a1d76a4d9221", - "c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221", - "c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221", - "c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221", - "8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419", - "8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419" - ).map(colors); - - var PiYG = ramp$1(scheme$o); - - var scheme$n = new Array(3).concat( - "998ec3f7f7f7f1a340", - "5e3c99b2abd2fdb863e66101", - "5e3c99b2abd2f7f7f7fdb863e66101", - "542788998ec3d8daebfee0b6f1a340b35806", - "542788998ec3d8daebf7f7f7fee0b6f1a340b35806", - "5427888073acb2abd2d8daebfee0b6fdb863e08214b35806", - "5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806", - "2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08", - "2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08" - ).map(colors); - - var PuOr = ramp$1(scheme$n); - - var scheme$m = new Array(3).concat( - "ef8a62f7f7f767a9cf", - "ca0020f4a58292c5de0571b0", - "ca0020f4a582f7f7f792c5de0571b0", - "b2182bef8a62fddbc7d1e5f067a9cf2166ac", - "b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac", - "b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac", - "b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac", - "67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061", - "67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061" - ).map(colors); - - var RdBu = ramp$1(scheme$m); - - var scheme$l = new Array(3).concat( - "ef8a62ffffff999999", - "ca0020f4a582bababa404040", - "ca0020f4a582ffffffbababa404040", - "b2182bef8a62fddbc7e0e0e09999994d4d4d", - "b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d", - "b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d", - "b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d", - "67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a", - "67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a" - ).map(colors); - - var RdGy = ramp$1(scheme$l); - - var scheme$k = new Array(3).concat( - "fc8d59ffffbf91bfdb", - "d7191cfdae61abd9e92c7bb6", - "d7191cfdae61ffffbfabd9e92c7bb6", - "d73027fc8d59fee090e0f3f891bfdb4575b4", - "d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4", - "d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4", - "d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4", - "a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695", - "a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695" - ).map(colors); - - var RdYlBu = ramp$1(scheme$k); - - var scheme$j = new Array(3).concat( - "fc8d59ffffbf91cf60", - "d7191cfdae61a6d96a1a9641", - "d7191cfdae61ffffbfa6d96a1a9641", - "d73027fc8d59fee08bd9ef8b91cf601a9850", - "d73027fc8d59fee08bffffbfd9ef8b91cf601a9850", - "d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850", - "d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850", - "a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837", - "a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837" - ).map(colors); - - var RdYlGn = ramp$1(scheme$j); - - var scheme$i = new Array(3).concat( - "fc8d59ffffbf99d594", - "d7191cfdae61abdda42b83ba", - "d7191cfdae61ffffbfabdda42b83ba", - "d53e4ffc8d59fee08be6f59899d5943288bd", - "d53e4ffc8d59fee08bffffbfe6f59899d5943288bd", - "d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd", - "d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd", - "9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2", - "9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2" - ).map(colors); - - var Spectral = ramp$1(scheme$i); - - var scheme$h = new Array(3).concat( - "e5f5f999d8c92ca25f", - "edf8fbb2e2e266c2a4238b45", - "edf8fbb2e2e266c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b" - ).map(colors); - - var BuGn = ramp$1(scheme$h); - - var scheme$g = new Array(3).concat( - "e0ecf49ebcda8856a7", - "edf8fbb3cde38c96c688419d", - "edf8fbb3cde38c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b" - ).map(colors); - - var BuPu = ramp$1(scheme$g); - - var scheme$f = new Array(3).concat( - "e0f3dba8ddb543a2ca", - "f0f9e8bae4bc7bccc42b8cbe", - "f0f9e8bae4bc7bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081" - ).map(colors); - - var GnBu = ramp$1(scheme$f); - - var scheme$e = new Array(3).concat( - "fee8c8fdbb84e34a33", - "fef0d9fdcc8afc8d59d7301f", - "fef0d9fdcc8afc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000" - ).map(colors); - - var OrRd = ramp$1(scheme$e); - - var scheme$d = new Array(3).concat( - "ece2f0a6bddb1c9099", - "f6eff7bdc9e167a9cf02818a", - "f6eff7bdc9e167a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636" - ).map(colors); - - var PuBuGn = ramp$1(scheme$d); - - var scheme$c = new Array(3).concat( - "ece7f2a6bddb2b8cbe", - "f1eef6bdc9e174a9cf0570b0", - "f1eef6bdc9e174a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858" - ).map(colors); - - var PuBu = ramp$1(scheme$c); - - var scheme$b = new Array(3).concat( - "e7e1efc994c7dd1c77", - "f1eef6d7b5d8df65b0ce1256", - "f1eef6d7b5d8df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f" - ).map(colors); - - var PuRd = ramp$1(scheme$b); - - var scheme$a = new Array(3).concat( - "fde0ddfa9fb5c51b8a", - "feebe2fbb4b9f768a1ae017e", - "feebe2fbb4b9f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a" - ).map(colors); - - var RdPu = ramp$1(scheme$a); - - var scheme$9 = new Array(3).concat( - "edf8b17fcdbb2c7fb8", - "ffffcca1dab441b6c4225ea8", - "ffffcca1dab441b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58" - ).map(colors); - - var YlGnBu = ramp$1(scheme$9); - - var scheme$8 = new Array(3).concat( - "f7fcb9addd8e31a354", - "ffffccc2e69978c679238443", - "ffffccc2e69978c67931a354006837", - "ffffccd9f0a3addd8e78c67931a354006837", - "ffffccd9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529" - ).map(colors); - - var YlGn = ramp$1(scheme$8); - - var scheme$7 = new Array(3).concat( - "fff7bcfec44fd95f0e", - "ffffd4fed98efe9929cc4c02", - "ffffd4fed98efe9929d95f0e993404", - "ffffd4fee391fec44ffe9929d95f0e993404", - "ffffd4fee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506" - ).map(colors); - - var YlOrBr = ramp$1(scheme$7); - - var scheme$6 = new Array(3).concat( - "ffeda0feb24cf03b20", - "ffffb2fecc5cfd8d3ce31a1c", - "ffffb2fecc5cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026" - ).map(colors); - - var YlOrRd = ramp$1(scheme$6); - - var scheme$5 = new Array(3).concat( - "deebf79ecae13182bd", - "eff3ffbdd7e76baed62171b5", - "eff3ffbdd7e76baed63182bd08519c", - "eff3ffc6dbef9ecae16baed63182bd08519c", - "eff3ffc6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b" - ).map(colors); - - var Blues = ramp$1(scheme$5); - - var scheme$4 = new Array(3).concat( - "e5f5e0a1d99b31a354", - "edf8e9bae4b374c476238b45", - "edf8e9bae4b374c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b" - ).map(colors); - - var Greens = ramp$1(scheme$4); - - var scheme$3 = new Array(3).concat( - "f0f0f0bdbdbd636363", - "f7f7f7cccccc969696525252", - "f7f7f7cccccc969696636363252525", - "f7f7f7d9d9d9bdbdbd969696636363252525", - "f7f7f7d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000" - ).map(colors); - - var Greys = ramp$1(scheme$3); - - var scheme$2 = new Array(3).concat( - "efedf5bcbddc756bb1", - "f2f0f7cbc9e29e9ac86a51a3", - "f2f0f7cbc9e29e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d" - ).map(colors); - - var Purples = ramp$1(scheme$2); - - var scheme$1 = new Array(3).concat( - "fee0d2fc9272de2d26", - "fee5d9fcae91fb6a4acb181d", - "fee5d9fcae91fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d" - ).map(colors); - - var Reds = ramp$1(scheme$1); - - var scheme = new Array(3).concat( - "fee6cefdae6be6550d", - "feeddefdbe85fd8d3cd94701", - "feeddefdbe85fd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704" - ).map(colors); - - var Oranges = ramp$1(scheme); - - function cividis(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" - + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + ", " - + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + ", " - + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67))))))) - + ")"; - } - - var cubehelix = cubehelixLong(cubehelix$3(300, 0.5, 0.0), cubehelix$3(-240, 0.5, 1.0)); - - var warm = cubehelixLong(cubehelix$3(-100, 0.75, 0.35), cubehelix$3(80, 1.50, 0.8)); - - var cool = cubehelixLong(cubehelix$3(260, 0.75, 0.35), cubehelix$3(80, 1.50, 0.8)); - - var c$3 = cubehelix$3(); - - function rainbow(t) { - if (t < 0 || t > 1) t -= Math.floor(t); - var ts = Math.abs(t - 0.5); - c$3.h = 360 * t - 100; - c$3.s = 1.5 - 1.5 * ts; - c$3.l = 0.8 - 0.9 * ts; - return c$3 + ""; - } - - var c$2 = rgb(), - pi_1_3 = Math.PI / 3, - pi_2_3 = Math.PI * 2 / 3; - - function sinebow(t) { - var x; - t = (0.5 - t) * Math.PI; - c$2.r = 255 * (x = Math.sin(t)) * x; - c$2.g = 255 * (x = Math.sin(t + pi_1_3)) * x; - c$2.b = 255 * (x = Math.sin(t + pi_2_3)) * x; - return c$2 + ""; - } - - function turbo(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" - + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + ", " - + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + ", " - + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66))))))) - + ")"; - } - - function ramp(range) { - var n = range.length; - return function(t) { - return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; - } - - var viridis = ramp(colors("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")); - - var magma = ramp(colors("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")); - - var inferno = ramp(colors("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")); - - var plasma = ramp(colors("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")); - - function constant$1(x) { - return function constant() { - return x; - }; - } - - const abs = Math.abs; - const atan2 = Math.atan2; - const cos = Math.cos; - const max = Math.max; - const min = Math.min; - const sin = Math.sin; - const sqrt = Math.sqrt; - - const epsilon = 1e-12; - const pi = Math.PI; - const halfPi = pi / 2; - const tau = 2 * pi; - - function acos(x) { - return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); - } - - function asin(x) { - return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x); - } - - function withPath(shape) { - let digits = 3; - - shape.digits = function(_) { - if (!arguments.length) return digits; - if (_ == null) { - digits = null; - } else { - const d = Math.floor(_); - if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`); - digits = d; - } - return shape; - }; - - return () => new Path$1(digits); - } - - function arcInnerRadius(d) { - return d.innerRadius; - } - - function arcOuterRadius(d) { - return d.outerRadius; - } - - function arcStartAngle(d) { - return d.startAngle; - } - - function arcEndAngle(d) { - return d.endAngle; - } - - function arcPadAngle(d) { - return d && d.padAngle; // Note: optional! - } - - function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { - var x10 = x1 - x0, y10 = y1 - y0, - x32 = x3 - x2, y32 = y3 - y2, - t = y32 * x10 - x32 * y10; - if (t * t < epsilon) return; - t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t; - return [x0 + t * x10, y0 + t * y10]; - } - - // Compute perpendicular offset line of length rc. - // http://mathworld.wolfram.com/Circle-LineIntersection.html - function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { - var x01 = x0 - x1, - y01 = y0 - y1, - lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), - ox = lo * y01, - oy = -lo * x01, - x11 = x0 + ox, - y11 = y0 + oy, - x10 = x1 + ox, - y10 = y1 + oy, - x00 = (x11 + x10) / 2, - y00 = (y11 + y10) / 2, - dx = x10 - x11, - dy = y10 - y11, - d2 = dx * dx + dy * dy, - r = r1 - rc, - D = x11 * y10 - x10 * y11, - d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)), - cx0 = (D * dy - dx * d) / d2, - cy0 = (-D * dx - dy * d) / d2, - cx1 = (D * dy + dx * d) / d2, - cy1 = (-D * dx + dy * d) / d2, - dx0 = cx0 - x00, - dy0 = cy0 - y00, - dx1 = cx1 - x00, - dy1 = cy1 - y00; - - // Pick the closer of the two intersection points. - // TODO Is there a faster way to determine which intersection to use? - if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; - - return { - cx: cx0, - cy: cy0, - x01: -ox, - y01: -oy, - x11: cx0 * (r1 / r - 1), - y11: cy0 * (r1 / r - 1) - }; - } - - function arc() { - var innerRadius = arcInnerRadius, - outerRadius = arcOuterRadius, - cornerRadius = constant$1(0), - padRadius = null, - startAngle = arcStartAngle, - endAngle = arcEndAngle, - padAngle = arcPadAngle, - context = null, - path = withPath(arc); - - function arc() { - var buffer, - r, - r0 = +innerRadius.apply(this, arguments), - r1 = +outerRadius.apply(this, arguments), - a0 = startAngle.apply(this, arguments) - halfPi, - a1 = endAngle.apply(this, arguments) - halfPi, - da = abs(a1 - a0), - cw = a1 > a0; - - if (!context) context = buffer = path(); - - // Ensure that the outer radius is always larger than the inner radius. - if (r1 < r0) r = r1, r1 = r0, r0 = r; - - // Is it a point? - if (!(r1 > epsilon)) context.moveTo(0, 0); - - // Or is it a circle or annulus? - else if (da > tau - epsilon) { - context.moveTo(r1 * cos(a0), r1 * sin(a0)); - context.arc(0, 0, r1, a0, a1, !cw); - if (r0 > epsilon) { - context.moveTo(r0 * cos(a1), r0 * sin(a1)); - context.arc(0, 0, r0, a1, a0, cw); - } - } - - // Or is it a circular or annular sector? - else { - var a01 = a0, - a11 = a1, - a00 = a0, - a10 = a1, - da0 = da, - da1 = da, - ap = padAngle.apply(this, arguments) / 2, - rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)), - rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), - rc0 = rc, - rc1 = rc, - t0, - t1; - - // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0. - if (rp > epsilon) { - var p0 = asin(rp / r0 * sin(ap)), - p1 = asin(rp / r1 * sin(ap)); - if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0; - else da0 = 0, a00 = a10 = (a0 + a1) / 2; - if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1; - else da1 = 0, a01 = a11 = (a0 + a1) / 2; - } - - var x01 = r1 * cos(a01), - y01 = r1 * sin(a01), - x10 = r0 * cos(a10), - y10 = r0 * sin(a10); - - // Apply rounded corners? - if (rc > epsilon) { - var x11 = r1 * cos(a11), - y11 = r1 * sin(a11), - x00 = r0 * cos(a00), - y00 = r0 * sin(a00), - oc; - - // Restrict the corner radius according to the sector angle. If this - // intersection fails, it’s probably because the arc is too small, so - // disable the corner radius entirely. - if (da < pi) { - if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) { - var ax = x01 - oc[0], - ay = y01 - oc[1], - bx = x11 - oc[0], - by = y11 - oc[1], - kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2), - lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]); - rc0 = min(rc, (r0 - lc) / (kc - 1)); - rc1 = min(rc, (r1 - lc) / (kc + 1)); - } else { - rc0 = rc1 = 0; - } - } - } - - // Is the sector collapsed to a line? - if (!(da1 > epsilon)) context.moveTo(x01, y01); - - // Does the sector’s outer ring have rounded corners? - else if (rc1 > epsilon) { - t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); - t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); - - context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); - - // Have the corners merged? - if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); - - // Otherwise, draw the two corners and the ring. - else { - context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw); - context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw); - context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw); - } - } - - // Or is the outer ring just a circular arc? - else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); - - // Is there no inner ring, and it’s a circular sector? - // Or perhaps it’s an annular sector collapsed due to padding? - if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10); - - // Does the sector’s inner ring (or point) have rounded corners? - else if (rc0 > epsilon) { - t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); - t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); - - context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); - - // Have the corners merged? - if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); - - // Otherwise, draw the two corners and the ring. - else { - context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw); - context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw); - context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw); - } - } - - // Or is the inner ring just a circular arc? - else context.arc(0, 0, r0, a10, a00, cw); - } - - context.closePath(); - - if (buffer) return context = null, buffer + "" || null; - } - - arc.centroid = function() { - var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, - a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2; - return [cos(a) * r, sin(a) * r]; - }; - - arc.innerRadius = function(_) { - return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant$1(+_), arc) : innerRadius; - }; - - arc.outerRadius = function(_) { - return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant$1(+_), arc) : outerRadius; - }; - - arc.cornerRadius = function(_) { - return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant$1(+_), arc) : cornerRadius; - }; - - arc.padRadius = function(_) { - return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant$1(+_), arc) : padRadius; - }; - - arc.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$1(+_), arc) : startAngle; - }; - - arc.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$1(+_), arc) : endAngle; - }; - - arc.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$1(+_), arc) : padAngle; - }; - - arc.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), arc) : context; - }; - - return arc; - } - - var slice = Array.prototype.slice; - - function array(x) { - return typeof x === "object" && "length" in x - ? x // Array, TypedArray, NodeList, array-like - : Array.from(x); // Map, Set, iterable, string, or anything else - } - - function Linear(context) { - this._context = context; - } - - Linear.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // falls through - default: this._context.lineTo(x, y); break; - } - } - }; - - function curveLinear(context) { - return new Linear(context); - } - - function x$2(p) { - return p[0]; - } - - function y$1(p) { - return p[1]; - } - - function line(x, y) { - var defined = constant$1(true), - context = null, - curve = curveLinear, - output = null, - path = withPath(line); - - x = typeof x === "function" ? x : (x === undefined) ? x$2 : constant$1(x); - y = typeof y === "function" ? y : (y === undefined) ? y$1 : constant$1(y); - - function line(data) { - var i, - n = (data = array(data)).length, - d, - defined0 = false, - buffer; - - if (context == null) output = curve(buffer = path()); - - for (i = 0; i <= n; ++i) { - if (!(i < n && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) output.lineStart(); - else output.lineEnd(); - } - if (defined0) output.point(+x(d, i, data), +y(d, i, data)); - } - - if (buffer) return output = null, buffer + "" || null; - } - - line.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$1(+_), line) : x; - }; - - line.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$1(+_), line) : y; - }; - - line.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$1(!!_), line) : defined; - }; - - line.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; - }; - - line.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; - }; - - return line; - } - - function area(x0, y0, y1) { - var x1 = null, - defined = constant$1(true), - context = null, - curve = curveLinear, - output = null, - path = withPath(area); - - x0 = typeof x0 === "function" ? x0 : (x0 === undefined) ? x$2 : constant$1(+x0); - y0 = typeof y0 === "function" ? y0 : (y0 === undefined) ? constant$1(0) : constant$1(+y0); - y1 = typeof y1 === "function" ? y1 : (y1 === undefined) ? y$1 : constant$1(+y1); - - function area(data) { - var i, - j, - k, - n = (data = array(data)).length, - d, - defined0 = false, - buffer, - x0z = new Array(n), - y0z = new Array(n); - - if (context == null) output = curve(buffer = path()); - - for (i = 0; i <= n; ++i) { - if (!(i < n && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) { - j = i; - output.areaStart(); - output.lineStart(); - } else { - output.lineEnd(); - output.lineStart(); - for (k = i - 1; k >= j; --k) { - output.point(x0z[k], y0z[k]); - } - output.lineEnd(); - output.areaEnd(); - } - } - if (defined0) { - x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data); - output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]); - } - } - - if (buffer) return output = null, buffer + "" || null; - } - - function arealine() { - return line().defined(defined).curve(curve).context(context); - } - - area.x = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$1(+_), x1 = null, area) : x0; - }; - - area.x0 = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$1(+_), area) : x0; - }; - - area.x1 = function(_) { - return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : constant$1(+_), area) : x1; - }; - - area.y = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$1(+_), y1 = null, area) : y0; - }; - - area.y0 = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$1(+_), area) : y0; - }; - - area.y1 = function(_) { - return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : constant$1(+_), area) : y1; - }; - - area.lineX0 = - area.lineY0 = function() { - return arealine().x(x0).y(y0); - }; - - area.lineY1 = function() { - return arealine().x(x0).y(y1); - }; - - area.lineX1 = function() { - return arealine().x(x1).y(y0); - }; - - area.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$1(!!_), area) : defined; - }; - - area.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve; - }; - - area.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context; - }; - - return area; - } - - function descending$1(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; - } - - function identity$1(d) { - return d; - } - - function pie() { - var value = identity$1, - sortValues = descending$1, - sort = null, - startAngle = constant$1(0), - endAngle = constant$1(tau), - padAngle = constant$1(0); - - function pie(data) { - var i, - n = (data = array(data)).length, - j, - k, - sum = 0, - index = new Array(n), - arcs = new Array(n), - a0 = +startAngle.apply(this, arguments), - da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)), - a1, - p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), - pa = p * (da < 0 ? -1 : 1), - v; - - for (i = 0; i < n; ++i) { - if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { - sum += v; - } - } - - // Optionally sort the arcs by previously-computed values or by data. - if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); }); - else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); }); - - // Compute the arcs! They are stored in the original data's order. - for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { - j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { - data: data[j], - index: i, - value: v, - startAngle: a0, - endAngle: a1, - padAngle: p - }; - } - - return arcs; - } - - pie.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$1(+_), pie) : value; - }; - - pie.sortValues = function(_) { - return arguments.length ? (sortValues = _, sort = null, pie) : sortValues; - }; - - pie.sort = function(_) { - return arguments.length ? (sort = _, sortValues = null, pie) : sort; - }; - - pie.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$1(+_), pie) : startAngle; - }; - - pie.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$1(+_), pie) : endAngle; - }; - - pie.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$1(+_), pie) : padAngle; - }; - - return pie; - } - - var curveRadialLinear = curveRadial(curveLinear); - - function Radial(curve) { - this._curve = curve; - } - - Radial.prototype = { - areaStart: function() { - this._curve.areaStart(); - }, - areaEnd: function() { - this._curve.areaEnd(); - }, - lineStart: function() { - this._curve.lineStart(); - }, - lineEnd: function() { - this._curve.lineEnd(); - }, - point: function(a, r) { - this._curve.point(r * Math.sin(a), r * -Math.cos(a)); - } - }; - - function curveRadial(curve) { - - function radial(context) { - return new Radial(curve(context)); - } - - radial._curve = curve; - - return radial; - } - - function lineRadial(l) { - var c = l.curve; - - l.angle = l.x, delete l.x; - l.radius = l.y, delete l.y; - - l.curve = function(_) { - return arguments.length ? c(curveRadial(_)) : c()._curve; - }; - - return l; - } - - function lineRadial$1() { - return lineRadial(line().curve(curveRadialLinear)); - } - - function areaRadial() { - var a = area().curve(curveRadialLinear), - c = a.curve, - x0 = a.lineX0, - x1 = a.lineX1, - y0 = a.lineY0, - y1 = a.lineY1; - - a.angle = a.x, delete a.x; - a.startAngle = a.x0, delete a.x0; - a.endAngle = a.x1, delete a.x1; - a.radius = a.y, delete a.y; - a.innerRadius = a.y0, delete a.y0; - a.outerRadius = a.y1, delete a.y1; - a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0; - a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1; - a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0; - a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1; - - a.curve = function(_) { - return arguments.length ? c(curveRadial(_)) : c()._curve; - }; - - return a; - } - - function pointRadial(x, y) { - return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)]; - } - - class Bump { - constructor(context, x) { - this._context = context; - this._x = x; - } - areaStart() { - this._line = 0; - } - areaEnd() { - this._line = NaN; - } - lineStart() { - this._point = 0; - } - lineEnd() { - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - } - point(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: { - this._point = 1; - if (this._line) this._context.lineTo(x, y); - else this._context.moveTo(x, y); - break; - } - case 1: this._point = 2; // falls through - default: { - if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y); - else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y); - break; - } - } - this._x0 = x, this._y0 = y; - } - } - - class BumpRadial { - constructor(context) { - this._context = context; - } - lineStart() { - this._point = 0; - } - lineEnd() {} - point(x, y) { - x = +x, y = +y; - if (this._point === 0) { - this._point = 1; - } else { - const p0 = pointRadial(this._x0, this._y0); - const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2); - const p2 = pointRadial(x, this._y0); - const p3 = pointRadial(x, y); - this._context.moveTo(...p0); - this._context.bezierCurveTo(...p1, ...p2, ...p3); - } - this._x0 = x, this._y0 = y; - } - } - - function bumpX(context) { - return new Bump(context, true); - } - - function bumpY(context) { - return new Bump(context, false); - } - - function bumpRadial(context) { - return new BumpRadial(context); - } - - function linkSource(d) { - return d.source; - } - - function linkTarget(d) { - return d.target; - } - - function link(curve) { - let source = linkSource, - target = linkTarget, - x = x$2, - y = y$1, - context = null, - output = null, - path = withPath(link); - - function link() { - let buffer; - const argv = slice.call(arguments); - const s = source.apply(this, argv); - const t = target.apply(this, argv); - if (context == null) output = curve(buffer = path()); - output.lineStart(); - argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv)); - argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv)); - output.lineEnd(); - if (buffer) return output = null, buffer + "" || null; - } - - link.source = function(_) { - return arguments.length ? (source = _, link) : source; - }; - - link.target = function(_) { - return arguments.length ? (target = _, link) : target; - }; - - link.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$1(+_), link) : x; - }; - - link.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$1(+_), link) : y; - }; - - link.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context; - }; - - return link; - } - - function linkHorizontal() { - return link(bumpX); - } - - function linkVertical() { - return link(bumpY); - } - - function linkRadial() { - const l = link(bumpRadial); - l.angle = l.x, delete l.x; - l.radius = l.y, delete l.y; - return l; - } - - const sqrt3$2 = sqrt(3); - - var asterisk = { - draw(context, size) { - const r = sqrt(size + min(size / 28, 0.75)) * 0.59436; - const t = r / 2; - const u = t * sqrt3$2; - context.moveTo(0, r); - context.lineTo(0, -r); - context.moveTo(-u, -t); - context.lineTo(u, t); - context.moveTo(-u, t); - context.lineTo(u, -t); - } - }; - - var circle = { - draw(context, size) { - const r = sqrt(size / pi); - context.moveTo(r, 0); - context.arc(0, 0, r, 0, tau); - } - }; - - var cross = { - draw(context, size) { - const r = sqrt(size / 5) / 2; - context.moveTo(-3 * r, -r); - context.lineTo(-r, -r); - context.lineTo(-r, -3 * r); - context.lineTo(r, -3 * r); - context.lineTo(r, -r); - context.lineTo(3 * r, -r); - context.lineTo(3 * r, r); - context.lineTo(r, r); - context.lineTo(r, 3 * r); - context.lineTo(-r, 3 * r); - context.lineTo(-r, r); - context.lineTo(-3 * r, r); - context.closePath(); - } - }; - - const tan30 = sqrt(1 / 3); - const tan30_2 = tan30 * 2; - - var diamond = { - draw(context, size) { - const y = sqrt(size / tan30_2); - const x = y * tan30; - context.moveTo(0, -y); - context.lineTo(x, 0); - context.lineTo(0, y); - context.lineTo(-x, 0); - context.closePath(); - } - }; - - var diamond2 = { - draw(context, size) { - const r = sqrt(size) * 0.62625; - context.moveTo(0, -r); - context.lineTo(r, 0); - context.lineTo(0, r); - context.lineTo(-r, 0); - context.closePath(); - } - }; - - var plus = { - draw(context, size) { - const r = sqrt(size - min(size / 7, 2)) * 0.87559; - context.moveTo(-r, 0); - context.lineTo(r, 0); - context.moveTo(0, r); - context.lineTo(0, -r); - } - }; - - var square = { - draw(context, size) { - const w = sqrt(size); - const x = -w / 2; - context.rect(x, x, w, w); - } - }; - - var square2 = { - draw(context, size) { - const r = sqrt(size) * 0.4431; - context.moveTo(r, r); - context.lineTo(r, -r); - context.lineTo(-r, -r); - context.lineTo(-r, r); - context.closePath(); - } - }; - - const ka$1 = 0.89081309152928522810; - const kr = sin(pi / 10) / sin(7 * pi / 10); - const kx = sin(tau / 10) * kr; - const ky = -cos(tau / 10) * kr; - - var star = { - draw(context, size) { - const r = sqrt(size * ka$1); - const x = kx * r; - const y = ky * r; - context.moveTo(0, -r); - context.lineTo(x, y); - for (let i = 1; i < 5; ++i) { - const a = tau * i / 5; - const c = cos(a); - const s = sin(a); - context.lineTo(s * r, -c * r); - context.lineTo(c * x - s * y, s * x + c * y); - } - context.closePath(); - } - }; - - const sqrt3$1 = sqrt(3); - - var triangle = { - draw(context, size) { - const y = -sqrt(size / (sqrt3$1 * 3)); - context.moveTo(0, y * 2); - context.lineTo(-sqrt3$1 * y, -y); - context.lineTo(sqrt3$1 * y, -y); - context.closePath(); - } - }; - - const sqrt3 = sqrt(3); - - var triangle2 = { - draw(context, size) { - const s = sqrt(size) * 0.6824; - const t = s / 2; - const u = (s * sqrt3) / 2; // cos(Math.PI / 6) - context.moveTo(0, -s); - context.lineTo(u, t); - context.lineTo(-u, t); - context.closePath(); - } - }; - - const c$1 = -0.5; - const s$1 = sqrt(3) / 2; - const k$1 = 1 / sqrt(12); - const a$1 = (k$1 / 2 + 1) * 3; - - var wye = { - draw(context, size) { - const r = sqrt(size / a$1); - const x0 = r / 2, y0 = r * k$1; - const x1 = x0, y1 = r * k$1 + r; - const x2 = -x1, y2 = y1; - context.moveTo(x0, y0); - context.lineTo(x1, y1); - context.lineTo(x2, y2); - context.lineTo(c$1 * x0 - s$1 * y0, s$1 * x0 + c$1 * y0); - context.lineTo(c$1 * x1 - s$1 * y1, s$1 * x1 + c$1 * y1); - context.lineTo(c$1 * x2 - s$1 * y2, s$1 * x2 + c$1 * y2); - context.lineTo(c$1 * x0 + s$1 * y0, c$1 * y0 - s$1 * x0); - context.lineTo(c$1 * x1 + s$1 * y1, c$1 * y1 - s$1 * x1); - context.lineTo(c$1 * x2 + s$1 * y2, c$1 * y2 - s$1 * x2); - context.closePath(); - } - }; - - var times = { - draw(context, size) { - const r = sqrt(size - min(size / 6, 1.7)) * 0.6189; - context.moveTo(-r, -r); - context.lineTo(r, r); - context.moveTo(-r, r); - context.lineTo(r, -r); - } - }; - - // These symbols are designed to be filled. - const symbolsFill = [ - circle, - cross, - diamond, - square, - star, - triangle, - wye - ]; - - // These symbols are designed to be stroked (with a width of 1.5px and round caps). - const symbolsStroke = [ - circle, - plus, - times, - triangle2, - asterisk, - square2, - diamond2 - ]; - - function Symbol$1(type, size) { - let context = null, - path = withPath(symbol); - - type = typeof type === "function" ? type : constant$1(type || circle); - size = typeof size === "function" ? size : constant$1(size === undefined ? 64 : +size); - - function symbol() { - let buffer; - if (!context) context = buffer = path(); - type.apply(this, arguments).draw(context, +size.apply(this, arguments)); - if (buffer) return context = null, buffer + "" || null; - } - - symbol.type = function(_) { - return arguments.length ? (type = typeof _ === "function" ? _ : constant$1(_), symbol) : type; - }; - - symbol.size = function(_) { - return arguments.length ? (size = typeof _ === "function" ? _ : constant$1(+_), symbol) : size; - }; - - symbol.context = function(_) { - return arguments.length ? (context = _ == null ? null : _, symbol) : context; - }; - - return symbol; - } - - function noop() {} - - function point$3(that, x, y) { - that._context.bezierCurveTo( - (2 * that._x0 + that._x1) / 3, - (2 * that._y0 + that._y1) / 3, - (that._x0 + 2 * that._x1) / 3, - (that._y0 + 2 * that._y1) / 3, - (that._x0 + 4 * that._x1 + x) / 6, - (that._y0 + 4 * that._y1 + y) / 6 - ); - } - - function Basis(context) { - this._context = context; - } - - Basis.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 3: point$3(this, this._x1, this._y1); // falls through - case 2: this._context.lineTo(this._x1, this._y1); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } - }; - - function basis(context) { - return new Basis(context); - } - - function BasisClosed(context) { - this._context = context; - } - - BasisClosed.prototype = { - areaStart: noop, - areaEnd: noop, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x2, this._y2); - this._context.closePath(); - break; - } - case 2: { - this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); - this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x2, this._y2); - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._x2 = x, this._y2 = y; break; - case 1: this._point = 2; this._x3 = x, this._y3 = y; break; - case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break; - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } - }; - - function basisClosed(context) { - return new BasisClosed(context); - } - - function BasisOpen(context) { - this._context = context; - } - - BasisOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; - case 3: this._point = 4; // falls through - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } - }; - - function basisOpen(context) { - return new BasisOpen(context); - } - - function Bundle(context, beta) { - this._basis = new Basis(context); - this._beta = beta; - } - - Bundle.prototype = { - lineStart: function() { - this._x = []; - this._y = []; - this._basis.lineStart(); - }, - lineEnd: function() { - var x = this._x, - y = this._y, - j = x.length - 1; - - if (j > 0) { - var x0 = x[0], - y0 = y[0], - dx = x[j] - x0, - dy = y[j] - y0, - i = -1, - t; - - while (++i <= j) { - t = i / j; - this._basis.point( - this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), - this._beta * y[i] + (1 - this._beta) * (y0 + t * dy) - ); - } - } - - this._x = this._y = null; - this._basis.lineEnd(); - }, - point: function(x, y) { - this._x.push(+x); - this._y.push(+y); - } - }; - - var bundle = (function custom(beta) { - - function bundle(context) { - return beta === 1 ? new Basis(context) : new Bundle(context, beta); - } - - bundle.beta = function(beta) { - return custom(+beta); - }; - - return bundle; - })(0.85); - - function point$2(that, x, y) { - that._context.bezierCurveTo( - that._x1 + that._k * (that._x2 - that._x0), - that._y1 + that._k * (that._y2 - that._y0), - that._x2 + that._k * (that._x1 - x), - that._y2 + that._k * (that._y1 - y), - that._x2, - that._y2 - ); - } - - function Cardinal(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; - } - - Cardinal.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x2, this._y2); break; - case 3: point$2(this, this._x1, this._y1); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; this._x1 = x, this._y1 = y; break; - case 2: this._point = 3; // falls through - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } - }; - - var cardinal = (function custom(tension) { - - function cardinal(context) { - return new Cardinal(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; - })(0); - - function CardinalClosed(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; - } - - CardinalClosed.prototype = { - areaStart: noop, - areaEnd: noop, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._x3 = x, this._y3 = y; break; - case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; - case 2: this._point = 3; this._x5 = x, this._y5 = y; break; - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } - }; - - var cardinalClosed = (function custom(tension) { - - function cardinal(context) { - return new CardinalClosed(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; - })(0); - - function CardinalOpen(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; - } - - CardinalOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; - case 3: this._point = 4; // falls through - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } - }; - - var cardinalOpen = (function custom(tension) { - - function cardinal(context) { - return new CardinalOpen(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; - })(0); - - function point$1(that, x, y) { - var x1 = that._x1, - y1 = that._y1, - x2 = that._x2, - y2 = that._y2; - - if (that._l01_a > epsilon) { - var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, - n = 3 * that._l01_a * (that._l01_a + that._l12_a); - x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n; - y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n; - } - - if (that._l23_a > epsilon) { - var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, - m = 3 * that._l23_a * (that._l23_a + that._l12_a); - x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m; - y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m; - } - - that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2); - } - - function CatmullRom(context, alpha) { - this._context = context; - this._alpha = alpha; - } - - CatmullRom.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x2, this._y2); break; - case 3: this.point(this._x2, this._y2); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; // falls through - default: point$1(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } - }; - - var catmullRom = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; - })(0.5); - - function CatmullRomClosed(context, alpha) { - this._context = context; - this._alpha = alpha; - } - - CatmullRomClosed.prototype = { - areaStart: noop, - areaEnd: noop, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; this._x3 = x, this._y3 = y; break; - case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; - case 2: this._point = 3; this._x5 = x, this._y5 = y; break; - default: point$1(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } - }; - - var catmullRomClosed = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; - })(0.5); - - function CatmullRomOpen(context, alpha) { - this._context = context; - this._alpha = alpha; - } - - CatmullRomOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; - case 3: this._point = 4; // falls through - default: point$1(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } - }; - - var catmullRomOpen = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; - })(0.5); - - function LinearClosed(context) { - this._context = context; - } - - LinearClosed.prototype = { - areaStart: noop, - areaEnd: noop, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._point) this._context.closePath(); - }, - point: function(x, y) { - x = +x, y = +y; - if (this._point) this._context.lineTo(x, y); - else this._point = 1, this._context.moveTo(x, y); - } - }; - - function linearClosed(context) { - return new LinearClosed(context); - } - - function sign(x) { - return x < 0 ? -1 : 1; - } - - // Calculate the slopes of the tangents (Hermite-type interpolation) based on - // the following paper: Steffen, M. 1990. A Simple Method for Monotonic - // Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. - // NOV(II), P. 443, 1990. - function slope3(that, x2, y2) { - var h0 = that._x1 - that._x0, - h1 = x2 - that._x1, - s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), - s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), - p = (s0 * h1 + s1 * h0) / (h0 + h1); - return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; - } - - // Calculate a one-sided slope. - function slope2(that, t) { - var h = that._x1 - that._x0; - return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; - } - - // According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations - // "you can express cubic Hermite interpolation in terms of cubic Bézier curves - // with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1". - function point(that, t0, t1) { - var x0 = that._x0, - y0 = that._y0, - x1 = that._x1, - y1 = that._y1, - dx = (x1 - x0) / 3; - that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1); - } - - function MonotoneX(context) { - this._context = context; - } - - MonotoneX.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = - this._t0 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x1, this._y1); break; - case 3: point(this, this._t0, slope2(this, this._t0)); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - var t1 = NaN; - - x = +x, y = +y; - if (x === this._x1 && y === this._y1) return; // Ignore coincident points. - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break; - default: point(this, this._t0, t1 = slope3(this, x, y)); break; - } - - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - this._t0 = t1; - } - }; - - function MonotoneY(context) { - this._context = new ReflectContext(context); - } - - (MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) { - MonotoneX.prototype.point.call(this, y, x); - }; - - function ReflectContext(context) { - this._context = context; - } - - ReflectContext.prototype = { - moveTo: function(x, y) { this._context.moveTo(y, x); }, - closePath: function() { this._context.closePath(); }, - lineTo: function(x, y) { this._context.lineTo(y, x); }, - bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); } - }; - - function monotoneX(context) { - return new MonotoneX(context); - } - - function monotoneY(context) { - return new MonotoneY(context); - } - - function Natural(context) { - this._context = context; - } - - Natural.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = []; - this._y = []; - }, - lineEnd: function() { - var x = this._x, - y = this._y, - n = x.length; - - if (n) { - this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]); - if (n === 2) { - this._context.lineTo(x[1], y[1]); - } else { - var px = controlPoints(x), - py = controlPoints(y); - for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { - this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]); - } - } - } - - if (this._line || (this._line !== 0 && n === 1)) this._context.closePath(); - this._line = 1 - this._line; - this._x = this._y = null; - }, - point: function(x, y) { - this._x.push(+x); - this._y.push(+y); - } - }; - - // See https://www.particleincell.com/2012/bezier-splines/ for derivation. - function controlPoints(x) { - var i, - n = x.length - 1, - m, - a = new Array(n), - b = new Array(n), - r = new Array(n); - a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1]; - for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1]; - a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n]; - for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; - a[n - 1] = r[n - 1] / b[n - 1]; - for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i]; - b[n - 1] = (x[n] + a[n - 1]) / 2; - for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1]; - return [a, b]; - } - - function natural(context) { - return new Natural(context); - } - - function Step(context, t) { - this._context = context; - this._t = t; - } - - Step.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = this._y = NaN; - this._point = 0; - }, - lineEnd: function() { - if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // falls through - default: { - if (this._t <= 0) { - this._context.lineTo(this._x, y); - this._context.lineTo(x, y); - } else { - var x1 = this._x * (1 - this._t) + x * this._t; - this._context.lineTo(x1, this._y); - this._context.lineTo(x1, y); - } - break; - } - } - this._x = x, this._y = y; - } - }; - - function step(context) { - return new Step(context, 0.5); - } - - function stepBefore(context) { - return new Step(context, 0); - } - - function stepAfter(context) { - return new Step(context, 1); - } - - function none$1(series, order) { - if (!((n = series.length) > 1)) return; - for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) { - s0 = s1, s1 = series[order[i]]; - for (j = 0; j < m; ++j) { - s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1]; - } - } - } - - function none(series) { - var n = series.length, o = new Array(n); - while (--n >= 0) o[n] = n; - return o; - } - - function stackValue(d, key) { - return d[key]; - } - - function stackSeries(key) { - const series = []; - series.key = key; - return series; - } - - function stack() { - var keys = constant$1([]), - order = none, - offset = none$1, - value = stackValue; - - function stack(data) { - var sz = Array.from(keys.apply(this, arguments), stackSeries), - i, n = sz.length, j = -1, - oz; - - for (const d of data) { - for (i = 0, ++j; i < n; ++i) { - (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d; - } - } - - for (i = 0, oz = array(order(sz)); i < n; ++i) { - sz[oz[i]].index = i; - } - - offset(sz, oz); - return sz; - } - - stack.keys = function(_) { - return arguments.length ? (keys = typeof _ === "function" ? _ : constant$1(Array.from(_)), stack) : keys; - }; - - stack.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$1(+_), stack) : value; - }; - - stack.order = function(_) { - return arguments.length ? (order = _ == null ? none : typeof _ === "function" ? _ : constant$1(Array.from(_)), stack) : order; - }; - - stack.offset = function(_) { - return arguments.length ? (offset = _ == null ? none$1 : _, stack) : offset; - }; - - return stack; - } - - function expand(series, order) { - if (!((n = series.length) > 0)) return; - for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) { - for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0; - if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y; - } - none$1(series, order); - } - - function diverging(series, order) { - if (!((n = series.length) > 0)) return; - for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) { - for (yp = yn = 0, i = 0; i < n; ++i) { - if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) { - d[0] = yp, d[1] = yp += dy; - } else if (dy < 0) { - d[1] = yn, d[0] = yn += dy; - } else { - d[0] = 0, d[1] = dy; - } - } - } - } - - function silhouette(series, order) { - if (!((n = series.length) > 0)) return; - for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) { - for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0; - s0[j][1] += s0[j][0] = -y / 2; - } - none$1(series, order); - } - - function wiggle(series, order) { - if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return; - for (var y = 0, j = 1, s0, m, n; j < m; ++j) { - for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) { - var si = series[order[i]], - sij0 = si[j][1] || 0, - sij1 = si[j - 1][1] || 0, - s3 = (sij0 - sij1) / 2; - for (var k = 0; k < i; ++k) { - var sk = series[order[k]], - skj0 = sk[j][1] || 0, - skj1 = sk[j - 1][1] || 0; - s3 += skj0 - skj1; - } - s1 += sij0, s2 += s3 * sij0; - } - s0[j - 1][1] += s0[j - 1][0] = y; - if (s1) y -= s2 / s1; - } - s0[j - 1][1] += s0[j - 1][0] = y; - none$1(series, order); - } - - function appearance(series) { - var peaks = series.map(peak); - return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; }); - } - - function peak(series) { - var i = -1, j = 0, n = series.length, vi, vj = -Infinity; - while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i; - return j; - } - - function ascending(series) { - var sums = series.map(sum); - return none(series).sort(function(a, b) { return sums[a] - sums[b]; }); - } - - function sum(series) { - var s = 0, i = -1, n = series.length, v; - while (++i < n) if (v = +series[i][1]) s += v; - return s; - } - - function descending(series) { - return ascending(series).reverse(); - } - - function insideOut(series) { - var n = series.length, - i, - j, - sums = series.map(sum), - order = appearance(series), - top = 0, - bottom = 0, - tops = [], - bottoms = []; - - for (i = 0; i < n; ++i) { - j = order[i]; - if (top < bottom) { - top += sums[j]; - tops.push(j); - } else { - bottom += sums[j]; - bottoms.push(j); - } - } - - return bottoms.reverse().concat(tops); - } - - function reverse(series) { - return none(series).reverse(); - } - - var constant = x => () => x; - - function ZoomEvent(type, { - sourceEvent, - target, - transform, - dispatch - }) { - Object.defineProperties(this, { - type: {value: type, enumerable: true, configurable: true}, - sourceEvent: {value: sourceEvent, enumerable: true, configurable: true}, - target: {value: target, enumerable: true, configurable: true}, - transform: {value: transform, enumerable: true, configurable: true}, - _: {value: dispatch} - }); - } - - function Transform(k, x, y) { - this.k = k; - this.x = x; - this.y = y; - } - - Transform.prototype = { - constructor: Transform, - scale: function(k) { - return k === 1 ? this : new Transform(this.k * k, this.x, this.y); - }, - translate: function(x, y) { - return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y); - }, - apply: function(point) { - return [point[0] * this.k + this.x, point[1] * this.k + this.y]; - }, - applyX: function(x) { - return x * this.k + this.x; - }, - applyY: function(y) { - return y * this.k + this.y; - }, - invert: function(location) { - return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; - }, - invertX: function(x) { - return (x - this.x) / this.k; - }, - invertY: function(y) { - return (y - this.y) / this.k; - }, - rescaleX: function(x) { - return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x)); - }, - rescaleY: function(y) { - return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y)); - }, - toString: function() { - return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; - } - }; - - var identity = new Transform(1, 0, 0); - - transform.prototype = Transform.prototype; - - function transform(node) { - while (!node.__zoom) if (!(node = node.parentNode)) return identity; - return node.__zoom; - } - - function nopropagation(event) { - event.stopImmediatePropagation(); - } - - function noevent(event) { - event.preventDefault(); - event.stopImmediatePropagation(); - } - - // Ignore right-click, since that should open the context menu. - // except for pinch-to-zoom, which is sent as a wheel+ctrlKey event - function defaultFilter(event) { - return (!event.ctrlKey || event.type === 'wheel') && !event.button; - } - - function defaultExtent() { - var e = this; - if (e instanceof SVGElement) { - e = e.ownerSVGElement || e; - if (e.hasAttribute("viewBox")) { - e = e.viewBox.baseVal; - return [[e.x, e.y], [e.x + e.width, e.y + e.height]]; - } - return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]; - } - return [[0, 0], [e.clientWidth, e.clientHeight]]; - } - - function defaultTransform() { - return this.__zoom || identity; - } - - function defaultWheelDelta(event) { - return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1); - } - - function defaultTouchable() { - return navigator.maxTouchPoints || ("ontouchstart" in this); - } - - function defaultConstrain(transform, extent, translateExtent) { - var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], - dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], - dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], - dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1]; - return transform.translate( - dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), - dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) - ); - } - - function zoom() { - var filter = defaultFilter, - extent = defaultExtent, - constrain = defaultConstrain, - wheelDelta = defaultWheelDelta, - touchable = defaultTouchable, - scaleExtent = [0, Infinity], - translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], - duration = 250, - interpolate = interpolateZoom, - listeners = dispatch("start", "zoom", "end"), - touchstarting, - touchfirst, - touchending, - touchDelay = 500, - wheelDelay = 150, - clickDistance2 = 0, - tapDistance = 10; - - function zoom(selection) { - selection - .property("__zoom", defaultTransform) - .on("wheel.zoom", wheeled, {passive: false}) - .on("mousedown.zoom", mousedowned) - .on("dblclick.zoom", dblclicked) - .filter(touchable) - .on("touchstart.zoom", touchstarted) - .on("touchmove.zoom", touchmoved) - .on("touchend.zoom touchcancel.zoom", touchended) - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - zoom.transform = function(collection, transform, point, event) { - var selection = collection.selection ? collection.selection() : collection; - selection.property("__zoom", defaultTransform); - if (collection !== selection) { - schedule(collection, transform, point, event); - } else { - selection.interrupt().each(function() { - gesture(this, arguments) - .event(event) - .start() - .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform) - .end(); - }); - } - }; - - zoom.scaleBy = function(selection, k, p, event) { - zoom.scaleTo(selection, function() { - var k0 = this.__zoom.k, - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return k0 * k1; - }, p, event); - }; - - zoom.scaleTo = function(selection, k, p, event) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t0 = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, - p1 = t0.invert(p0), - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent); - }, p, event); - }; - - zoom.translateBy = function(selection, x, y, event) { - zoom.transform(selection, function() { - return constrain(this.__zoom.translate( - typeof x === "function" ? x.apply(this, arguments) : x, - typeof y === "function" ? y.apply(this, arguments) : y - ), extent.apply(this, arguments), translateExtent); - }, null, event); - }; - - zoom.translateTo = function(selection, x, y, p, event) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p; - return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate( - typeof x === "function" ? -x.apply(this, arguments) : -x, - typeof y === "function" ? -y.apply(this, arguments) : -y - ), e, translateExtent); - }, p, event); - }; - - function scale(transform, k) { - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k)); - return k === transform.k ? transform : new Transform(k, transform.x, transform.y); - } - - function translate(transform, p0, p1) { - var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k; - return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y); - } - - function centroid(extent) { - return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2]; - } - - function schedule(transition, transform, point, event) { - transition - .on("start.zoom", function() { gesture(this, arguments).event(event).start(); }) - .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).event(event).end(); }) - .tween("zoom", function() { - var that = this, - args = arguments, - g = gesture(that, args).event(event), - e = extent.apply(that, args), - p = point == null ? centroid(e) : typeof point === "function" ? point.apply(that, args) : point, - w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), - a = that.__zoom, - b = typeof transform === "function" ? transform.apply(that, args) : transform, - i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k)); - return function(t) { - if (t === 1) t = b; // Avoid rounding error on end. - else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); } - g.zoom(null, t); - }; - }); - } - - function gesture(that, args, clean) { - return (!clean && that.__zooming) || new Gesture(that, args); - } - - function Gesture(that, args) { - this.that = that; - this.args = args; - this.active = 0; - this.sourceEvent = null; - this.extent = extent.apply(that, args); - this.taps = 0; - } - - Gesture.prototype = { - event: function(event) { - if (event) this.sourceEvent = event; - return this; - }, - start: function() { - if (++this.active === 1) { - this.that.__zooming = this; - this.emit("start"); - } - return this; - }, - zoom: function(key, transform) { - if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]); - if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]); - if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]); - this.that.__zoom = transform; - this.emit("zoom"); - return this; - }, - end: function() { - if (--this.active === 0) { - delete this.that.__zooming; - this.emit("end"); - } - return this; - }, - emit: function(type) { - var d = select(this.that).datum(); - listeners.call( - type, - this.that, - new ZoomEvent(type, { - sourceEvent: this.sourceEvent, - target: zoom, - type, - transform: this.that.__zoom, - dispatch: listeners - }), - d - ); - } - }; - - function wheeled(event, ...args) { - if (!filter.apply(this, arguments)) return; - var g = gesture(this, args).event(event), - t = this.__zoom, - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), - p = pointer(event); - - // If the mouse is in the same location as before, reuse it. - // If there were recent wheel events, reset the wheel idle timeout. - if (g.wheel) { - if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { - g.mouse[1] = t.invert(g.mouse[0] = p); - } - clearTimeout(g.wheel); - } - - // If this wheel event won’t trigger a transform change, ignore it. - else if (t.k === k) return; - - // Otherwise, capture the mouse point and location at the start. - else { - g.mouse = [p, t.invert(p)]; - interrupt(this); - g.start(); - } - - noevent(event); - g.wheel = setTimeout(wheelidled, wheelDelay); - g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent)); - - function wheelidled() { - g.wheel = null; - g.end(); - } - } - - function mousedowned(event, ...args) { - if (touchending || !filter.apply(this, arguments)) return; - var currentTarget = event.currentTarget, - g = gesture(this, args, true).event(event), - v = select(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), - p = pointer(event, currentTarget), - x0 = event.clientX, - y0 = event.clientY; - - dragDisable(event.view); - nopropagation(event); - g.mouse = [p, this.__zoom.invert(p)]; - interrupt(this); - g.start(); - - function mousemoved(event) { - noevent(event); - if (!g.moved) { - var dx = event.clientX - x0, dy = event.clientY - y0; - g.moved = dx * dx + dy * dy > clickDistance2; - } - g.event(event) - .zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent)); - } - - function mouseupped(event) { - v.on("mousemove.zoom mouseup.zoom", null); - yesdrag(event.view, g.moved); - noevent(event); - g.event(event).end(); - } - } - - function dblclicked(event, ...args) { - if (!filter.apply(this, arguments)) return; - var t0 = this.__zoom, - p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this), - p1 = t0.invert(p0), - k1 = t0.k * (event.shiftKey ? 0.5 : 2), - t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent); - - noevent(event); - if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event); - else select(this).call(zoom.transform, t1, p0, event); - } - - function touchstarted(event, ...args) { - if (!filter.apply(this, arguments)) return; - var touches = event.touches, - n = touches.length, - g = gesture(this, args, event.changedTouches.length === n).event(event), - started, i, t, p; - - nopropagation(event); - for (i = 0; i < n; ++i) { - t = touches[i], p = pointer(t, this); - p = [p, this.__zoom.invert(p), t.identifier]; - if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting; - else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0; - } - - if (touchstarting) touchstarting = clearTimeout(touchstarting); - - if (started) { - if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay); - interrupt(this); - g.start(); - } - } - - function touchmoved(event, ...args) { - if (!this.__zooming) return; - var g = gesture(this, args).event(event), - touches = event.changedTouches, - n = touches.length, i, t, p, l; - - noevent(event); - for (i = 0; i < n; ++i) { - t = touches[i], p = pointer(t, this); - if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p; - else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p; - } - t = g.that.__zoom; - if (g.touch1) { - var p0 = g.touch0[0], l0 = g.touch0[1], - p1 = g.touch1[0], l1 = g.touch1[1], - dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, - dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; - t = scale(t, Math.sqrt(dp / dl)); - p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; - l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; - } - else if (g.touch0) p = g.touch0[0], l = g.touch0[1]; - else return; - - g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent)); - } - - function touchended(event, ...args) { - if (!this.__zooming) return; - var g = gesture(this, args).event(event), - touches = event.changedTouches, - n = touches.length, i, t; - - nopropagation(event); - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, touchDelay); - for (i = 0; i < n; ++i) { - t = touches[i]; - if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0; - else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1; - } - if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1; - if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]); - else { - g.end(); - // If this was a dbltap, reroute to the (optional) dblclick.zoom handler. - if (g.taps === 2) { - t = pointer(t, this); - if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) { - var p = select(this).on("dblclick.zoom"); - if (p) p.apply(this, arguments); - } - } - } - } - - zoom.wheelDelta = function(_) { - return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant(+_), zoom) : wheelDelta; - }; - - zoom.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), zoom) : filter; - }; - - zoom.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant(!!_), zoom) : touchable; - }; - - zoom.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; - }; - - zoom.scaleExtent = function(_) { - return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]]; - }; - - zoom.translateExtent = function(_) { - return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]]; - }; - - zoom.constrain = function(_) { - return arguments.length ? (constrain = _, zoom) : constrain; - }; - - zoom.duration = function(_) { - return arguments.length ? (duration = +_, zoom) : duration; - }; - - zoom.interpolate = function(_) { - return arguments.length ? (interpolate = _, zoom) : interpolate; - }; - - zoom.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? zoom : value; - }; - - zoom.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); - }; - - zoom.tapDistance = function(_) { - return arguments.length ? (tapDistance = +_, zoom) : tapDistance; - }; - - return zoom; - } - - var d3 = /*#__PURE__*/Object.freeze({ - __proto__: null, - Adder: Adder, - Delaunay: Delaunay, - FormatSpecifier: FormatSpecifier, - InternMap: InternMap, - InternSet: InternSet, - Node: Node$1, - Path: Path$1, - Voronoi: Voronoi, - ZoomTransform: Transform, - active: active, - arc: arc, - area: area, - areaRadial: areaRadial, - ascending: ascending$3, - autoType: autoType, - axisBottom: axisBottom, - axisLeft: axisLeft, - axisRight: axisRight, - axisTop: axisTop, - bin: bin, - bisect: bisectRight, - bisectCenter: bisectCenter, - bisectLeft: bisectLeft, - bisectRight: bisectRight, - bisector: bisector, - blob: blob, - blur: blur, - blur2: blur2, - blurImage: blurImage, - brush: brush, - brushSelection: brushSelection, - brushX: brushX, - brushY: brushY, - buffer: buffer, - chord: chord, - chordDirected: chordDirected, - chordTranspose: chordTranspose, - cluster: cluster, - color: color, - contourDensity: density, - contours: Contours, - count: count$1, - create: create$1, - creator: creator, - cross: cross$2, - csv: csv, - csvFormat: csvFormat, - csvFormatBody: csvFormatBody, - csvFormatRow: csvFormatRow, - csvFormatRows: csvFormatRows, - csvFormatValue: csvFormatValue, - csvParse: csvParse, - csvParseRows: csvParseRows, - cubehelix: cubehelix$3, - cumsum: cumsum, - curveBasis: basis, - curveBasisClosed: basisClosed, - curveBasisOpen: basisOpen, - curveBumpX: bumpX, - curveBumpY: bumpY, - curveBundle: bundle, - curveCardinal: cardinal, - curveCardinalClosed: cardinalClosed, - curveCardinalOpen: cardinalOpen, - curveCatmullRom: catmullRom, - curveCatmullRomClosed: catmullRomClosed, - curveCatmullRomOpen: catmullRomOpen, - curveLinear: curveLinear, - curveLinearClosed: linearClosed, - curveMonotoneX: monotoneX, - curveMonotoneY: monotoneY, - curveNatural: natural, - curveStep: step, - curveStepAfter: stepAfter, - curveStepBefore: stepBefore, - descending: descending$2, - deviation: deviation, - difference: difference, - disjoint: disjoint, - dispatch: dispatch, - drag: drag, - dragDisable: dragDisable, - dragEnable: yesdrag, - dsv: dsv, - dsvFormat: dsvFormat, - easeBack: backInOut, - easeBackIn: backIn, - easeBackInOut: backInOut, - easeBackOut: backOut, - easeBounce: bounceOut, - easeBounceIn: bounceIn, - easeBounceInOut: bounceInOut, - easeBounceOut: bounceOut, - easeCircle: circleInOut, - easeCircleIn: circleIn, - easeCircleInOut: circleInOut, - easeCircleOut: circleOut, - easeCubic: cubicInOut, - easeCubicIn: cubicIn, - easeCubicInOut: cubicInOut, - easeCubicOut: cubicOut, - easeElastic: elasticOut, - easeElasticIn: elasticIn, - easeElasticInOut: elasticInOut, - easeElasticOut: elasticOut, - easeExp: expInOut, - easeExpIn: expIn, - easeExpInOut: expInOut, - easeExpOut: expOut, - easeLinear: linear$1, - easePoly: polyInOut, - easePolyIn: polyIn, - easePolyInOut: polyInOut, - easePolyOut: polyOut, - easeQuad: quadInOut, - easeQuadIn: quadIn, - easeQuadInOut: quadInOut, - easeQuadOut: quadOut, - easeSin: sinInOut, - easeSinIn: sinIn, - easeSinInOut: sinInOut, - easeSinOut: sinOut, - every: every, - extent: extent$1, - fcumsum: fcumsum, - filter: filter$1, - flatGroup: flatGroup, - flatRollup: flatRollup, - forceCenter: center, - forceCollide: collide, - forceLink: link$2, - forceManyBody: manyBody, - forceRadial: radial$1, - forceSimulation: simulation, - forceX: x$3, - forceY: y$2, - get format () { return format; }, - formatDefaultLocale: defaultLocale$1, - formatLocale: formatLocale$1, - get formatPrefix () { return formatPrefix; }, - formatSpecifier: formatSpecifier, - fsum: fsum, - geoAlbers: albers, - geoAlbersUsa: albersUsa, - geoArea: area$2, - geoAzimuthalEqualArea: azimuthalEqualArea, - geoAzimuthalEqualAreaRaw: azimuthalEqualAreaRaw, - geoAzimuthalEquidistant: azimuthalEquidistant, - geoAzimuthalEquidistantRaw: azimuthalEquidistantRaw, - geoBounds: bounds, - geoCentroid: centroid$1, - geoCircle: circle$1, - geoClipAntimeridian: clipAntimeridian, - geoClipCircle: clipCircle, - geoClipExtent: extent, - geoClipRectangle: clipRectangle, - geoConicConformal: conicConformal, - geoConicConformalRaw: conicConformalRaw, - geoConicEqualArea: conicEqualArea, - geoConicEqualAreaRaw: conicEqualAreaRaw, - geoConicEquidistant: conicEquidistant, - geoConicEquidistantRaw: conicEquidistantRaw, - geoContains: contains$1, - geoDistance: distance, - geoEqualEarth: equalEarth, - geoEqualEarthRaw: equalEarthRaw, - geoEquirectangular: equirectangular, - geoEquirectangularRaw: equirectangularRaw, - geoGnomonic: gnomonic, - geoGnomonicRaw: gnomonicRaw, - geoGraticule: graticule, - geoGraticule10: graticule10, - geoIdentity: identity$4, - geoInterpolate: interpolate, - geoLength: length$1, - geoMercator: mercator, - geoMercatorRaw: mercatorRaw, - geoNaturalEarth1: naturalEarth1, - geoNaturalEarth1Raw: naturalEarth1Raw, - geoOrthographic: orthographic, - geoOrthographicRaw: orthographicRaw, - geoPath: index$2, - geoProjection: projection, - geoProjectionMutator: projectionMutator, - geoRotation: rotation, - geoStereographic: stereographic, - geoStereographicRaw: stereographicRaw, - geoStream: geoStream, - geoTransform: transform$1, - geoTransverseMercator: transverseMercator, - geoTransverseMercatorRaw: transverseMercatorRaw, - gray: gray, - greatest: greatest, - greatestIndex: greatestIndex, - group: group, - groupSort: groupSort, - groups: groups, - hcl: hcl$2, - hierarchy: hierarchy, - histogram: bin, - hsl: hsl$2, - html: html, - image: image, - index: index$4, - indexes: indexes, - interpolate: interpolate$2, - interpolateArray: array$3, - interpolateBasis: basis$2, - interpolateBasisClosed: basisClosed$1, - interpolateBlues: Blues, - interpolateBrBG: BrBG, - interpolateBuGn: BuGn, - interpolateBuPu: BuPu, - interpolateCividis: cividis, - interpolateCool: cool, - interpolateCubehelix: cubehelix$2, - interpolateCubehelixDefault: cubehelix, - interpolateCubehelixLong: cubehelixLong, - interpolateDate: date$1, - interpolateDiscrete: discrete, - interpolateGnBu: GnBu, - interpolateGreens: Greens, - interpolateGreys: Greys, - interpolateHcl: hcl$1, - interpolateHclLong: hclLong, - interpolateHsl: hsl$1, - interpolateHslLong: hslLong, - interpolateHue: hue, - interpolateInferno: inferno, - interpolateLab: lab, - interpolateMagma: magma, - interpolateNumber: interpolateNumber, - interpolateNumberArray: numberArray, - interpolateObject: object$1, - interpolateOrRd: OrRd, - interpolateOranges: Oranges, - interpolatePRGn: PRGn, - interpolatePiYG: PiYG, - interpolatePlasma: plasma, - interpolatePuBu: PuBu, - interpolatePuBuGn: PuBuGn, - interpolatePuOr: PuOr, - interpolatePuRd: PuRd, - interpolatePurples: Purples, - interpolateRainbow: rainbow, - interpolateRdBu: RdBu, - interpolateRdGy: RdGy, - interpolateRdPu: RdPu, - interpolateRdYlBu: RdYlBu, - interpolateRdYlGn: RdYlGn, - interpolateReds: Reds, - interpolateRgb: interpolateRgb, - interpolateRgbBasis: rgbBasis, - interpolateRgbBasisClosed: rgbBasisClosed, - interpolateRound: interpolateRound, - interpolateSinebow: sinebow, - interpolateSpectral: Spectral, - interpolateString: interpolateString, - interpolateTransformCss: interpolateTransformCss, - interpolateTransformSvg: interpolateTransformSvg, - interpolateTurbo: turbo, - interpolateViridis: viridis, - interpolateWarm: warm, - interpolateYlGn: YlGn, - interpolateYlGnBu: YlGnBu, - interpolateYlOrBr: YlOrBr, - interpolateYlOrRd: YlOrRd, - interpolateZoom: interpolateZoom, - interrupt: interrupt, - intersection: intersection, - interval: interval, - isoFormat: formatIso, - isoParse: parseIso, - json: json, - lab: lab$1, - lch: lch, - least: least, - leastIndex: leastIndex, - line: line, - lineRadial: lineRadial$1, - link: link, - linkHorizontal: linkHorizontal, - linkRadial: linkRadial, - linkVertical: linkVertical, - local: local$1, - map: map$1, - matcher: matcher, - max: max$3, - maxIndex: maxIndex, - mean: mean, - median: median, - medianIndex: medianIndex, - merge: merge, - min: min$2, - minIndex: minIndex, - mode: mode, - namespace: namespace, - namespaces: namespaces, - nice: nice$1, - now: now, - pack: index$1, - packEnclose: enclose, - packSiblings: siblings, - pairs: pairs, - partition: partition, - path: path, - pathRound: pathRound, - permute: permute, - pie: pie, - piecewise: piecewise, - pointRadial: pointRadial, - pointer: pointer, - pointers: pointers, - polygonArea: area$1, - polygonCentroid: centroid, - polygonContains: contains, - polygonHull: hull, - polygonLength: length, - precisionFixed: precisionFixed, - precisionPrefix: precisionPrefix, - precisionRound: precisionRound, - quadtree: quadtree, - quantile: quantile$1, - quantileIndex: quantileIndex, - quantileSorted: quantileSorted, - quantize: quantize$1, - quickselect: quickselect, - radialArea: areaRadial, - radialLine: lineRadial$1, - randomBates: bates, - randomBernoulli: bernoulli, - randomBeta: beta, - randomBinomial: binomial, - randomCauchy: cauchy, - randomExponential: exponential, - randomGamma: gamma, - randomGeometric: geometric, - randomInt: int, - randomIrwinHall: irwinHall, - randomLcg: lcg, - randomLogNormal: logNormal, - randomLogistic: logistic, - randomNormal: normal, - randomPareto: pareto, - randomPoisson: poisson, - randomUniform: uniform, - randomWeibull: weibull, - range: range$2, - rank: rank, - reduce: reduce, - reverse: reverse$1, - rgb: rgb, - ribbon: ribbon$1, - ribbonArrow: ribbonArrow, - rollup: rollup, - rollups: rollups, - scaleBand: band, - scaleDiverging: diverging$1, - scaleDivergingLog: divergingLog, - scaleDivergingPow: divergingPow, - scaleDivergingSqrt: divergingSqrt, - scaleDivergingSymlog: divergingSymlog, - scaleIdentity: identity$2, - scaleImplicit: implicit, - scaleLinear: linear, - scaleLog: log, - scaleOrdinal: ordinal, - scalePoint: point$4, - scalePow: pow, - scaleQuantile: quantile, - scaleQuantize: quantize, - scaleRadial: radial, - scaleSequential: sequential, - scaleSequentialLog: sequentialLog, - scaleSequentialPow: sequentialPow, - scaleSequentialQuantile: sequentialQuantile, - scaleSequentialSqrt: sequentialSqrt, - scaleSequentialSymlog: sequentialSymlog, - scaleSqrt: sqrt$1, - scaleSymlog: symlog, - scaleThreshold: threshold, - scaleTime: time, - scaleUtc: utcTime, - scan: scan, - schemeAccent: Accent, - schemeBlues: scheme$5, - schemeBrBG: scheme$q, - schemeBuGn: scheme$h, - schemeBuPu: scheme$g, - schemeCategory10: category10, - schemeDark2: Dark2, - schemeGnBu: scheme$f, - schemeGreens: scheme$4, - schemeGreys: scheme$3, - schemeObservable10: observable10, - schemeOrRd: scheme$e, - schemeOranges: scheme, - schemePRGn: scheme$p, - schemePaired: Paired, - schemePastel1: Pastel1, - schemePastel2: Pastel2, - schemePiYG: scheme$o, - schemePuBu: scheme$c, - schemePuBuGn: scheme$d, - schemePuOr: scheme$n, - schemePuRd: scheme$b, - schemePurples: scheme$2, - schemeRdBu: scheme$m, - schemeRdGy: scheme$l, - schemeRdPu: scheme$a, - schemeRdYlBu: scheme$k, - schemeRdYlGn: scheme$j, - schemeReds: scheme$1, - schemeSet1: Set1, - schemeSet2: Set2, - schemeSet3: Set3, - schemeSpectral: scheme$i, - schemeTableau10: Tableau10, - schemeYlGn: scheme$8, - schemeYlGnBu: scheme$9, - schemeYlOrBr: scheme$7, - schemeYlOrRd: scheme$6, - select: select, - selectAll: selectAll, - selection: selection, - selector: selector, - selectorAll: selectorAll, - shuffle: shuffle$1, - shuffler: shuffler, - some: some, - sort: sort, - stack: stack, - stackOffsetDiverging: diverging, - stackOffsetExpand: expand, - stackOffsetNone: none$1, - stackOffsetSilhouette: silhouette, - stackOffsetWiggle: wiggle, - stackOrderAppearance: appearance, - stackOrderAscending: ascending, - stackOrderDescending: descending, - stackOrderInsideOut: insideOut, - stackOrderNone: none, - stackOrderReverse: reverse, - stratify: stratify, - style: styleValue, - subset: subset, - sum: sum$2, - superset: superset, - svg: svg, - symbol: Symbol$1, - symbolAsterisk: asterisk, - symbolCircle: circle, - symbolCross: cross, - symbolDiamond: diamond, - symbolDiamond2: diamond2, - symbolPlus: plus, - symbolSquare: square, - symbolSquare2: square2, - symbolStar: star, - symbolTimes: times, - symbolTriangle: triangle, - symbolTriangle2: triangle2, - symbolWye: wye, - symbolX: times, - symbols: symbolsFill, - symbolsFill: symbolsFill, - symbolsStroke: symbolsStroke, - text: text, - thresholdFreedmanDiaconis: thresholdFreedmanDiaconis, - thresholdScott: thresholdScott, - thresholdSturges: thresholdSturges, - tickFormat: tickFormat, - tickIncrement: tickIncrement, - tickStep: tickStep, - ticks: ticks, - timeDay: timeDay, - timeDays: timeDays, - get timeFormat () { return timeFormat; }, - timeFormatDefaultLocale: defaultLocale, - timeFormatLocale: formatLocale, - timeFriday: timeFriday, - timeFridays: timeFridays, - timeHour: timeHour, - timeHours: timeHours, - timeInterval: timeInterval, - timeMillisecond: millisecond, - timeMilliseconds: milliseconds, - timeMinute: timeMinute, - timeMinutes: timeMinutes, - timeMonday: timeMonday, - timeMondays: timeMondays, - timeMonth: timeMonth, - timeMonths: timeMonths, - get timeParse () { return timeParse; }, - timeSaturday: timeSaturday, - timeSaturdays: timeSaturdays, - timeSecond: second, - timeSeconds: seconds, - timeSunday: timeSunday, - timeSundays: timeSundays, - timeThursday: timeThursday, - timeThursdays: timeThursdays, - timeTickInterval: timeTickInterval, - timeTicks: timeTicks, - timeTuesday: timeTuesday, - timeTuesdays: timeTuesdays, - timeWednesday: timeWednesday, - timeWednesdays: timeWednesdays, - timeWeek: timeSunday, - timeWeeks: timeSundays, - timeYear: timeYear, - timeYears: timeYears, - timeout: timeout, - timer: timer, - timerFlush: timerFlush, - transition: transition, - transpose: transpose, - tree: tree, - treemap: index, - treemapBinary: binary, - treemapDice: treemapDice, - treemapResquarify: resquarify, - treemapSlice: treemapSlice, - treemapSliceDice: sliceDice, - treemapSquarify: squarify, - tsv: tsv, - tsvFormat: tsvFormat, - tsvFormatBody: tsvFormatBody, - tsvFormatRow: tsvFormatRow, - tsvFormatRows: tsvFormatRows, - tsvFormatValue: tsvFormatValue, - tsvParse: tsvParse, - tsvParseRows: tsvParseRows, - union: union, - unixDay: unixDay, - unixDays: unixDays, - utcDay: utcDay, - utcDays: utcDays, - get utcFormat () { return utcFormat; }, - utcFriday: utcFriday, - utcFridays: utcFridays, - utcHour: utcHour, - utcHours: utcHours, - utcMillisecond: millisecond, - utcMilliseconds: milliseconds, - utcMinute: utcMinute, - utcMinutes: utcMinutes, - utcMonday: utcMonday, - utcMondays: utcMondays, - utcMonth: utcMonth, - utcMonths: utcMonths, - get utcParse () { return utcParse; }, - utcSaturday: utcSaturday, - utcSaturdays: utcSaturdays, - utcSecond: second, - utcSeconds: seconds, - utcSunday: utcSunday, - utcSundays: utcSundays, - utcThursday: utcThursday, - utcThursdays: utcThursdays, - utcTickInterval: utcTickInterval, - utcTicks: utcTicks, - utcTuesday: utcTuesday, - utcTuesdays: utcTuesdays, - utcWednesday: utcWednesday, - utcWednesdays: utcWednesdays, - utcWeek: utcSunday, - utcWeeks: utcSundays, - utcYear: utcYear, - utcYears: utcYears, - variance: variance, - window: defaultView, - xml: xml, - zip: zip, - zoom: zoom, - zoomIdentity: identity, - zoomTransform: transform - }); - - class TSRootContainer extends HTMLDivElement { - main_svg = null; - tree_data = {}; - static observeAttributes = ['backgroundPattern', 'backgroundSize', 'customBackground']; - backgroundPattern = null; - backgroundSize = undefined; - customBackground = undefined; - backgroundPosition = 'center'; - constructor() { - super(); - } - connectedCallback() { - this.className = "ts-root-wrapper-element tree-spider"; - this.backgroundPattern = this.getAttribute('backgroundPattern') || 'default'; - this.backgroundSize = this.getAttribute('backgroundSize'); - this.backgroundSize = this.backgroundSize == 'undefined' ? undefined : this.backgroundSize; - this.customBackground = this.getAttribute('customBackground'); - this.customBackground = this.customBackground == 'undefined' ? undefined : this.customBackground; - this.backgroundPosition = this.getAttribute('backgroundPosition'); - this.backgroundPosition = this.backgroundPosition == 'undefined' ? undefined : this.backgroundPosition; - this.setCanvasBg(); - } - setCanvasBg() { - const patterns = { - default: () => this.defaultDotsPatternBg(), - flux: () => this.fluxPatternBg(), - quad: () => this.quadPatternBg(), - blurry: () => this.blurryBg(), - chaos: () => this.chaosPatternBg(), - flurry: () => this.flurryPatternBg(), - spiral: () => this.spiralPatternBg(), - whirling: () => this.whirlingPatternBg(), - replicate: () => this.replicatePatternBg(), - scribble: () => this.scribblePatternBg(), - squiggly: () => this.squigglyPatternBg(), - gyrrate: () => this.gyrratePatternBg(), - leaves: () => this.leavesPatternBg(), - spot: () => this.spotPatternBg() - }; - if (this.backgroundPattern == 'none') - return; - const svgPattern = this.customBackground || patterns[this.backgroundPattern](); - let svgData; - if (typeof svgPattern == 'object') { - svgData = new XMLSerializer().serializeToString(svgPattern.node()); - } - else { - svgData = svgPattern; - } - const encodeSVG = encodeURIComponent(svgData) - .replace(/\(/g, '%28') - .replace(/\)/g, '%29'); - this.backgroundSize != undefined && (this.style.backgroundSize = this.backgroundSize || '40%'); - this.backgroundPosition != undefined && (this.style.backgroundPosition = this.backgroundPosition || 'center'); - const svgDataUrl = "data:image/svg+xml;charset=utf-8," + encodeSVG; - this.style.setProperty('--ts-root-el-bg-image', 'url(' + svgDataUrl + ')'); - } - defaultDotsPatternBg() { - const svg = create$1('svg') - .attr("width", "20") - .attr("height", "20"); - svg.append('rect') - .attr("width", "20") - .attr("height", "20") - .attr("fill", "transparent"); - svg.append('circle') - .attr("cx", "10") - .attr("cy", "10") - .attr("r", "1") - .attr("fill", "rgb(150,150,150)"); - this.style.backgroundSize = this.backgroundSize || '2%'; - return svg; - } - fluxPatternBg() { - this.style.backgroundSize = this.backgroundSize || '20%'; - return backgrounds['flux']; - } - quadPatternBg() { - this.style.backgroundSize = this.backgroundSize || '20%'; - return backgrounds['quad']; - } - blurryBg() { - this.style.backgroundSize = '20%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['blurry']; - } - chaosPatternBg() { - this.style.backgroundSize = this.backgroundSize || '50%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['chaos']; - } - spiralPatternBg() { - this.style.backgroundSize = this.backgroundSize || '100%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['spiral']; - } - flurryPatternBg() { - this.style.backgroundSize = this.backgroundSize || '30%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['flurry']; - } - whirlingPatternBg() { - this.style.backgroundSize = this.backgroundSize || '20%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['whirling']; - } - replicatePatternBg() { - this.style.backgroundSize = this.backgroundSize || '100%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['replicate']; - } - scribblePatternBg() { - this.style.backgroundSize = this.backgroundSize || '30%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['scribble']; - } - squigglyPatternBg() { - this.style.backgroundSize = this.backgroundSize || '20%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['squiggly']; - } - gyrratePatternBg() { - this.style.backgroundSize = this.backgroundSize || '100%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['gyrate']; - } - leavesPatternBg() { - this.style.backgroundSize = this.backgroundSize || '40%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['leaves']; - } - reflectionPatternBg() { - this.style.backgroundSize = this.backgroundSize || '20%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['reflection']; - } - spotPatternBg() { - this.style.backgroundSize = this.backgroundSize || '40%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['spot']; - } - } - window.customElements.define("ts-root-container", TSRootContainer, { extends: 'div' }); - - class TSElement extends HTMLDivElement { - constructor() { - super(); - } - connectedCallback() { } - } - window.customElements.define('ts-element', TSElement, { extends: 'div' }); - - var e=[{name:"Aegean Airlines",iataCode:"A3"},{name:"Aeroflot",iataCode:"SU"},{name:"Aerolineas Argentinas",iataCode:"AR"},{name:"Aeromexico",iataCode:"AM"},{name:"Air Algerie",iataCode:"AH"},{name:"Air Arabia",iataCode:"G9"},{name:"Air Canada",iataCode:"AC"},{name:"Air China",iataCode:"CA"},{name:"Air Europa",iataCode:"UX"},{name:"Air France-KLM",iataCode:"AF"},{name:"Air India",iataCode:"AI"},{name:"Air Mauritius",iataCode:"MK"},{name:"Air New Zealand",iataCode:"NZ"},{name:"Air Niugini",iataCode:"PX"},{name:"Air Tahiti",iataCode:"VT"},{name:"Air Tahiti Nui",iataCode:"TN"},{name:"Air Transat",iataCode:"TS"},{name:"AirAsia X",iataCode:"D7"},{name:"AirAsia",iataCode:"AK"},{name:"Aircalin",iataCode:"SB"},{name:"Alaska Airlines",iataCode:"AS"},{name:"Alitalia",iataCode:"AZ"},{name:"All Nippon Airways",iataCode:"NH"},{name:"Allegiant Air",iataCode:"G4"},{name:"American Airlines",iataCode:"AA"},{name:"Asiana Airlines",iataCode:"OZ"},{name:"Avianca",iataCode:"AV"},{name:"Azul Linhas Aereas Brasileiras",iataCode:"AD"},{name:"Azur Air",iataCode:"ZF"},{name:"Beijing Capital Airlines",iataCode:"JD"},{name:"Boliviana de Aviacion",iataCode:"OB"},{name:"British Airways",iataCode:"BA"},{name:"Cathay Pacific",iataCode:"CX"},{name:"Cebu Pacific Air",iataCode:"5J"},{name:"China Airlines",iataCode:"CI"},{name:"China Eastern Airlines",iataCode:"MU"},{name:"China Southern Airlines",iataCode:"CZ"},{name:"Condor",iataCode:"DE"},{name:"Copa Airlines",iataCode:"CM"},{name:"Delta Air Lines",iataCode:"DL"},{name:"Easyfly",iataCode:"VE"},{name:"EasyJet",iataCode:"U2"},{name:"EcoJet",iataCode:"8J"},{name:"Egyptair",iataCode:"MS"},{name:"El Al",iataCode:"LY"},{name:"Emirates Airlines",iataCode:"EK"},{name:"Ethiopian Airlines",iataCode:"ET"},{name:"Etihad Airways",iataCode:"EY"},{name:"EVA Air",iataCode:"BR"},{name:"Fiji Airways",iataCode:"FJ"},{name:"Finnair",iataCode:"AY"},{name:"Flybondi",iataCode:"FO"},{name:"Flydubai",iataCode:"FZ"},{name:"FlySafair",iataCode:"FA"},{name:"Frontier Airlines",iataCode:"F9"},{name:"Garuda Indonesia",iataCode:"GA"},{name:"Go First",iataCode:"G8"},{name:"Gol Linhas Aereas Inteligentes",iataCode:"G3"},{name:"Hainan Airlines",iataCode:"HU"},{name:"Hawaiian Airlines",iataCode:"HA"},{name:"IndiGo Airlines",iataCode:"6E"},{name:"Japan Airlines",iataCode:"JL"},{name:"Jeju Air",iataCode:"7C"},{name:"Jet2",iataCode:"LS"},{name:"JetBlue Airways",iataCode:"B6"},{name:"JetSMART",iataCode:"JA"},{name:"Juneyao Airlines",iataCode:"HO"},{name:"Kenya Airways",iataCode:"KQ"},{name:"Korean Air",iataCode:"KE"},{name:"Kulula.com",iataCode:"MN"},{name:"LATAM Airlines",iataCode:"LA"},{name:"Lion Air",iataCode:"JT"},{name:"LOT Polish Airlines",iataCode:"LO"},{name:"Lufthansa",iataCode:"LH"},{name:"Libyan Airlines",iataCode:"LN"},{name:"Linea Aerea Amaszonas",iataCode:"Z8"},{name:"Malaysia Airlines",iataCode:"MH"},{name:"Nordwind Airlines",iataCode:"N4"},{name:"Norwegian Air Shuttle",iataCode:"DY"},{name:"Oman Air",iataCode:"WY"},{name:"Pakistan International Airlines",iataCode:"PK"},{name:"Pegasus Airlines",iataCode:"PC"},{name:"Philippine Airlines",iataCode:"PR"},{name:"Qantas Group",iataCode:"QF"},{name:"Qatar Airways",iataCode:"QR"},{name:"Republic Airways",iataCode:"YX"},{name:"Royal Air Maroc",iataCode:"AT"},{name:"Ryanair",iataCode:"FR"},{name:"S7 Airlines",iataCode:"S7"},{name:"SAS",iataCode:"SK"},{name:"Satena",iataCode:"9R"},{name:"Saudia",iataCode:"SV"},{name:"Shandong Airlines",iataCode:"SC"},{name:"Sichuan Airlines",iataCode:"3U"},{name:"Singapore Airlines",iataCode:"SQ"},{name:"Sky Airline",iataCode:"H2"},{name:"SkyWest Airlines",iataCode:"OO"},{name:"South African Airways",iataCode:"SA"},{name:"Southwest Airlines",iataCode:"WN"},{name:"SpiceJet",iataCode:"SG"},{name:"Spirit Airlines",iataCode:"NK"},{name:"Spring Airlines",iataCode:"9S"},{name:"SriLankan Airlines",iataCode:"UL"},{name:"Star Peru",iataCode:"2I"},{name:"Sun Country Airlines",iataCode:"SY"},{name:"SunExpress",iataCode:"XQ"},{name:"TAP Air Portugal",iataCode:"TP"},{name:"Thai AirAsia",iataCode:"FD"},{name:"Thai Airways",iataCode:"TG"},{name:"TUI Airways",iataCode:"BY"},{name:"Tunisair",iataCode:"TU"},{name:"Turkish Airlines",iataCode:"TK"},{name:"Ukraine International",iataCode:"PS"},{name:"United Airlines",iataCode:"UA"},{name:"Ural Airlines",iataCode:"U6"},{name:"VietJet Air",iataCode:"VJ"},{name:"Vietnam Airlines",iataCode:"VN"},{name:"Virgin Atlantic Airways",iataCode:"VS"},{name:"Virgin Australia",iataCode:"VA"},{name:"VivaAerobus",iataCode:"VB"},{name:"VOEPASS Linhas Aereas",iataCode:"2Z"},{name:"Volaris",iataCode:"Y4"},{name:"WestJet",iataCode:"WS"},{name:"Wingo",iataCode:"P5"},{name:"Wizz Air",iataCode:"W6"}];var a=[{name:"Aerospatiale/BAC Concorde",iataTypeCode:"SSC"},{name:"Airbus A300",iataTypeCode:"AB3"},{name:"Airbus A310",iataTypeCode:"310"},{name:"Airbus A310-200",iataTypeCode:"312"},{name:"Airbus A310-300",iataTypeCode:"313"},{name:"Airbus A318",iataTypeCode:"318"},{name:"Airbus A319",iataTypeCode:"319"},{name:"Airbus A319neo",iataTypeCode:"31N"},{name:"Airbus A320",iataTypeCode:"320"},{name:"Airbus A320neo",iataTypeCode:"32N"},{name:"Airbus A321",iataTypeCode:"321"},{name:"Airbus A321neo",iataTypeCode:"32Q"},{name:"Airbus A330",iataTypeCode:"330"},{name:"Airbus A330-200",iataTypeCode:"332"},{name:"Airbus A330-300",iataTypeCode:"333"},{name:"Airbus A330-800neo",iataTypeCode:"338"},{name:"Airbus A330-900neo",iataTypeCode:"339"},{name:"Airbus A340",iataTypeCode:"340"},{name:"Airbus A340-200",iataTypeCode:"342"},{name:"Airbus A340-300",iataTypeCode:"343"},{name:"Airbus A340-500",iataTypeCode:"345"},{name:"Airbus A340-600",iataTypeCode:"346"},{name:"Airbus A350",iataTypeCode:"350"},{name:"Airbus A350-900",iataTypeCode:"359"},{name:"Airbus A350-1000",iataTypeCode:"351"},{name:"Airbus A380",iataTypeCode:"380"},{name:"Airbus A380-800",iataTypeCode:"388"},{name:"Antonov An-12",iataTypeCode:"ANF"},{name:"Antonov An-24",iataTypeCode:"AN4"},{name:"Antonov An-26",iataTypeCode:"A26"},{name:"Antonov An-28",iataTypeCode:"A28"},{name:"Antonov An-30",iataTypeCode:"A30"},{name:"Antonov An-32",iataTypeCode:"A32"},{name:"Antonov An-72",iataTypeCode:"AN7"},{name:"Antonov An-124 Ruslan",iataTypeCode:"A4F"},{name:"Antonov An-140",iataTypeCode:"A40"},{name:"Antonov An-148",iataTypeCode:"A81"},{name:"Antonov An-158",iataTypeCode:"A58"},{name:"Antonov An-225 Mriya",iataTypeCode:"A5F"},{name:"Boeing 707",iataTypeCode:"703"},{name:"Boeing 717",iataTypeCode:"717"},{name:"Boeing 720B",iataTypeCode:"B72"},{name:"Boeing 727",iataTypeCode:"727"},{name:"Boeing 727-100",iataTypeCode:"721"},{name:"Boeing 727-200",iataTypeCode:"722"},{name:"Boeing 737 MAX 7",iataTypeCode:"7M7"},{name:"Boeing 737 MAX 8",iataTypeCode:"7M8"},{name:"Boeing 737 MAX 9",iataTypeCode:"7M9"},{name:"Boeing 737 MAX 10",iataTypeCode:"7MJ"},{name:"Boeing 737",iataTypeCode:"737"},{name:"Boeing 737-100",iataTypeCode:"731"},{name:"Boeing 737-200",iataTypeCode:"732"},{name:"Boeing 737-300",iataTypeCode:"733"},{name:"Boeing 737-400",iataTypeCode:"734"},{name:"Boeing 737-500",iataTypeCode:"735"},{name:"Boeing 737-600",iataTypeCode:"736"},{name:"Boeing 737-700",iataTypeCode:"73G"},{name:"Boeing 737-800",iataTypeCode:"738"},{name:"Boeing 737-900",iataTypeCode:"739"},{name:"Boeing 747",iataTypeCode:"747"},{name:"Boeing 747-100",iataTypeCode:"741"},{name:"Boeing 747-200",iataTypeCode:"742"},{name:"Boeing 747-300",iataTypeCode:"743"},{name:"Boeing 747-400",iataTypeCode:"744"},{name:"Boeing 747-400D",iataTypeCode:"74J"},{name:"Boeing 747-8",iataTypeCode:"748"},{name:"Boeing 747SP",iataTypeCode:"74L"},{name:"Boeing 747SR",iataTypeCode:"74R"},{name:"Boeing 757",iataTypeCode:"757"},{name:"Boeing 757-200",iataTypeCode:"752"},{name:"Boeing 757-300",iataTypeCode:"753"},{name:"Boeing 767",iataTypeCode:"767"},{name:"Boeing 767-200",iataTypeCode:"762"},{name:"Boeing 767-300",iataTypeCode:"763"},{name:"Boeing 767-400",iataTypeCode:"764"},{name:"Boeing 777",iataTypeCode:"777"},{name:"Boeing 777-200",iataTypeCode:"772"},{name:"Boeing 777-200LR",iataTypeCode:"77L"},{name:"Boeing 777-300",iataTypeCode:"773"},{name:"Boeing 777-300ER",iataTypeCode:"77W"},{name:"Boeing 787",iataTypeCode:"787"},{name:"Boeing 787-8",iataTypeCode:"788"},{name:"Boeing 787-9",iataTypeCode:"789"},{name:"Boeing 787-10",iataTypeCode:"781"},{name:"Canadair Challenger",iataTypeCode:"CCJ"},{name:"Canadair CL-44",iataTypeCode:"CL4"},{name:"Canadair Regional Jet 100",iataTypeCode:"CR1"},{name:"Canadair Regional Jet 200",iataTypeCode:"CR2"},{name:"Canadair Regional Jet 700",iataTypeCode:"CR7"},{name:"Canadair Regional Jet 705",iataTypeCode:"CRA"},{name:"Canadair Regional Jet 900",iataTypeCode:"CR9"},{name:"Canadair Regional Jet 1000",iataTypeCode:"CRK"},{name:"De Havilland Canada DHC-2 Beaver",iataTypeCode:"DHP"},{name:"De Havilland Canada DHC-2 Turbo-Beaver",iataTypeCode:"DHR"},{name:"De Havilland Canada DHC-3 Otter",iataTypeCode:"DHL"},{name:"De Havilland Canada DHC-4 Caribou",iataTypeCode:"DHC"},{name:"De Havilland Canada DHC-6 Twin Otter",iataTypeCode:"DHT"},{name:"De Havilland Canada DHC-7 Dash 7",iataTypeCode:"DH7"},{name:"De Havilland Canada DHC-8-100 Dash 8 / 8Q",iataTypeCode:"DH1"},{name:"De Havilland Canada DHC-8-200 Dash 8 / 8Q",iataTypeCode:"DH2"},{name:"De Havilland Canada DHC-8-300 Dash 8 / 8Q",iataTypeCode:"DH3"},{name:"De Havilland Canada DHC-8-400 Dash 8Q",iataTypeCode:"DH4"},{name:"De Havilland DH.104 Dove",iataTypeCode:"DHD"},{name:"De Havilland DH.114 Heron",iataTypeCode:"DHH"},{name:"Douglas DC-3",iataTypeCode:"D3F"},{name:"Douglas DC-6",iataTypeCode:"D6F"},{name:"Douglas DC-8-50",iataTypeCode:"D8T"},{name:"Douglas DC-8-62",iataTypeCode:"D8L"},{name:"Douglas DC-8-72",iataTypeCode:"D8Q"},{name:"Douglas DC-9-10",iataTypeCode:"D91"},{name:"Douglas DC-9-20",iataTypeCode:"D92"},{name:"Douglas DC-9-30",iataTypeCode:"D93"},{name:"Douglas DC-9-40",iataTypeCode:"D94"},{name:"Douglas DC-9-50",iataTypeCode:"D95"},{name:"Douglas DC-10",iataTypeCode:"D10"},{name:"Douglas DC-10-10",iataTypeCode:"D1X"},{name:"Douglas DC-10-30",iataTypeCode:"D1Y"},{name:"Embraer 170",iataTypeCode:"E70"},{name:"Embraer 175",iataTypeCode:"E75"},{name:"Embraer 190",iataTypeCode:"E90"},{name:"Embraer 195",iataTypeCode:"E95"},{name:"Embraer E190-E2",iataTypeCode:"290"},{name:"Embraer E195-E2",iataTypeCode:"295"},{name:"Embraer EMB.110 Bandeirante",iataTypeCode:"EMB"},{name:"Embraer EMB.120 Brasilia",iataTypeCode:"EM2"},{name:"Embraer Legacy 600",iataTypeCode:"ER3"},{name:"Embraer Phenom 100",iataTypeCode:"EP1"},{name:"Embraer Phenom 300",iataTypeCode:"EP3"},{name:"Embraer RJ135",iataTypeCode:"ER3"},{name:"Embraer RJ140",iataTypeCode:"ERD"},{name:"Embraer RJ145 Amazon",iataTypeCode:"ER4"},{name:"Ilyushin IL18",iataTypeCode:"IL8"},{name:"Ilyushin IL62",iataTypeCode:"IL6"},{name:"Ilyushin IL76",iataTypeCode:"IL7"},{name:"Ilyushin IL86",iataTypeCode:"ILW"},{name:"Ilyushin IL96-300",iataTypeCode:"I93"},{name:"Ilyushin IL114",iataTypeCode:"I14"},{name:"Lockheed L-182 / 282 / 382 (L-100) Hercules",iataTypeCode:"LOH"},{name:"Lockheed L-188 Electra",iataTypeCode:"LOE"},{name:"Lockheed L-1011 Tristar",iataTypeCode:"L10"},{name:"Lockheed L-1049 Super Constellation",iataTypeCode:"L49"},{name:"McDonnell Douglas MD11",iataTypeCode:"M11"},{name:"McDonnell Douglas MD80",iataTypeCode:"M80"},{name:"McDonnell Douglas MD81",iataTypeCode:"M81"},{name:"McDonnell Douglas MD82",iataTypeCode:"M82"},{name:"McDonnell Douglas MD83",iataTypeCode:"M83"},{name:"McDonnell Douglas MD87",iataTypeCode:"M87"},{name:"McDonnell Douglas MD88",iataTypeCode:"M88"},{name:"McDonnell Douglas MD90",iataTypeCode:"M90"},{name:"Sukhoi Superjet 100-95",iataTypeCode:"SU9"},{name:"Tupolev Tu-134",iataTypeCode:"TU3"},{name:"Tupolev Tu-154",iataTypeCode:"TU5"},{name:"Tupolev Tu-204",iataTypeCode:"T20"},{name:"Yakovlev Yak-40",iataTypeCode:"YK4"},{name:"Yakovlev Yak-42",iataTypeCode:"YK2"}];var o=[{name:"Adelaide International Airport",iataCode:"ADL"},{name:"Adolfo Suarez Madrid-Barajas Airport",iataCode:"MAD"},{name:"Aeroparque Jorge Newbery Airport",iataCode:"AEP"},{name:"Afonso Pena International Airport",iataCode:"CWB"},{name:"Alfonso Bonilla Aragon International Airport",iataCode:"CLO"},{name:"Amsterdam Airport Schiphol",iataCode:"AMS"},{name:"Arturo Merino Benitez International Airport",iataCode:"SCL"},{name:"Auckland International Airport",iataCode:"AKL"},{name:"Beijing Capital International Airport",iataCode:"PEK"},{name:"Belem Val de Cans International Airport",iataCode:"BEL"},{name:"Belo Horizonte Tancredo Neves International Airport",iataCode:"CNF"},{name:"Berlin-Tegel Airport",iataCode:"TXL"},{name:"Bole International Airport",iataCode:"ADD"},{name:"Brasilia-Presidente Juscelino Kubitschek International Airport",iataCode:"BSB"},{name:"Brisbane International Airport",iataCode:"BNE"},{name:"Brussels Airport",iataCode:"BRU"},{name:"Cairns Airport",iataCode:"CNS"},{name:"Cairo International Airport",iataCode:"CAI"},{name:"Canberra Airport",iataCode:"CBR"},{name:"Capetown International Airport",iataCode:"CPT"},{name:"Charles de Gaulle International Airport",iataCode:"CDG"},{name:"Charlotte Douglas International Airport",iataCode:"CLT"},{name:"Chengdu Shuangliu International Airport",iataCode:"CTU"},{name:"Chhatrapati Shivaji International Airport",iataCode:"BOM"},{name:"Chicago O'Hare International Airport",iataCode:"ORD"},{name:"Chongqing Jiangbei International Airport",iataCode:"CKG"},{name:"Christchurch International Airport",iataCode:"CHC"},{name:"Copenhagen Kastrup Airport",iataCode:"CPH"},{name:"Dallas Fort Worth International Airport",iataCode:"DFW"},{name:"Daniel K. Inouye International Airport",iataCode:"HNL"},{name:"Denver International Airport",iataCode:"DEN"},{name:"Don Mueang International Airport",iataCode:"DMK"},{name:"Dubai International Airport",iataCode:"DXB"},{name:"Dublin Airport",iataCode:"DUB"},{name:"Dusseldorf Airport",iataCode:"DUS"},{name:"El Dorado International Airport",iataCode:"BOG"},{name:"Eleftherios Venizelos International Airport",iataCode:"ATH"},{name:"Faa'a International Airport",iataCode:"PPT"},{name:"Fort Lauderdale Hollywood International Airport",iataCode:"FLL"},{name:"Fortaleza Pinto Martins International Airport",iataCode:"FOR"},{name:"Frankfurt am Main Airport",iataCode:"FRA"},{name:"George Bush Intercontinental Houston Airport",iataCode:"IAH"},{name:"Gold Coast Airport",iataCode:"OOL"},{name:"Guarulhos - Governador Andre Franco Montoro International Airport",iataCode:"GRU"},{name:"Hartsfield-Jackson Atlanta International Airport",iataCode:"ATL"},{name:"Helsinki Vantaa Airport",iataCode:"HEL"},{name:"Hobart International Airport",iataCode:"HBA"},{name:"Hong Kong International Airport",iataCode:"HKG"},{name:"Houari Boumediene Airport",iataCode:"ALG"},{name:"Hurgada International Airport",iataCode:"HRG"},{name:"Incheon International Airport",iataCode:"ICN"},{name:"Indira Gandhi International Airport",iataCode:"DEL"},{name:"Istanbul Airport",iataCode:"IST"},{name:"Jacksons International Airport",iataCode:"POM"},{name:"Jeju International Airport",iataCode:"CJU"},{name:"John F Kennedy International Airport",iataCode:"JFK"},{name:"Jorge Chavez International Airport",iataCode:"LIM"},{name:"Jose Maria Cordova International Airport",iataCode:"MDE"},{name:"Josep Tarradellas Barcelona-El Prat Airport",iataCode:"BCN"},{name:"Kahului Airport",iataCode:"OGG"},{name:"King Abdulaziz International Airport",iataCode:"JED"},{name:"Kuala Lumpur International Airport",iataCode:"KUL"},{name:"Kunming Changshui International Airport",iataCode:"KMG"},{name:"La Tontouta International Airport",iataCode:"NOU"},{name:"Leonardo da Vinci-Fiumicino Airport",iataCode:"FCO"},{name:"London Heathrow Airport",iataCode:"LHR"},{name:"Los Angeles International Airport",iataCode:"LAX"},{name:"McCarran International Airport",iataCode:"LAS"},{name:"Melbourne International Airport",iataCode:"MEL"},{name:"Mexico City International Airport",iataCode:"MEX"},{name:"Miami International Airport",iataCode:"MIA"},{name:"Ministro Pistarini International Airport",iataCode:"EZE"},{name:"Minneapolis-St Paul International/Wold-Chamberlain Airport",iataCode:"MSP"},{name:"Mohammed V International Airport",iataCode:"CMN"},{name:"Moscow Domodedovo Airport",iataCode:"DME"},{name:"Munich Airport",iataCode:"MUC"},{name:"Murtala Muhammed International Airport",iataCode:"LOS"},{name:"Nadi International Airport",iataCode:"NAN"},{name:"Nairobi Jomo Kenyatta International Airport",iataCode:"NBO"},{name:"Narita International Airport",iataCode:"NRT"},{name:"Newark Liberty International Airport",iataCode:"EWR"},{name:"Ninoy Aquino International Airport",iataCode:"MNL"},{name:"Noumea Magenta Airport",iataCode:"GEA"},{name:"O. R. Tambo International Airport",iataCode:"JNB"},{name:"Orlando International Airport",iataCode:"MCO"},{name:"Oslo Lufthavn",iataCode:"OSL"},{name:"Perth Airport",iataCode:"PER"},{name:"Phoenix Sky Harbor International Airport",iataCode:"PHX"},{name:"Recife Guararapes-Gilberto Freyre International Airport",iataCode:"REC"},{name:"Rio de Janeiro Galeao International Airport",iataCode:"GIG"},{name:"Salgado Filho International Airport",iataCode:"POA"},{name:"Salvador Deputado Luis Eduardo Magalhaes International Airport",iataCode:"SSA"},{name:"San Francisco International Airport",iataCode:"SFO"},{name:"Santos Dumont Airport",iataCode:"SDU"},{name:"Sao Paulo-Congonhas Airport",iataCode:"CGH"},{name:"Seattle Tacoma International Airport",iataCode:"SEA"},{name:"Shanghai Hongqiao International Airport",iataCode:"SHA"},{name:"Shanghai Pudong International Airport",iataCode:"PVG"},{name:"Shenzhen Bao'an International Airport",iataCode:"SZX"},{name:"Sheremetyevo International Airport",iataCode:"SVO"},{name:"Singapore Changi Airport",iataCode:"SIN"},{name:"Soekarno-Hatta International Airport",iataCode:"CGK"},{name:'Stockholm-Arlanda Airport"',iataCode:"ARN"},{name:"Suvarnabhumi Airport",iataCode:"BKK"},{name:"Sydney Kingsford Smith International Airport",iataCode:"SYD"},{name:"Taiwan Taoyuan International Airport",iataCode:"TPE"},{name:"Tan Son Nhat International Airport",iataCode:"SGN"},{name:"Tokyo Haneda International Airport",iataCode:"HND"},{name:"Toronto Pearson International Airport",iataCode:"YYZ"},{name:"Tunis Carthage International Airport",iataCode:"TUN"},{name:"Vancouver International Airport",iataCode:"YVR"},{name:"Vienna International Airport",iataCode:"VIE"},{name:"Viracopos International Airport",iataCode:"VCP"},{name:"Vnukovo International Airport",iataCode:"VKO"},{name:"Wellington International Airport",iataCode:"WLG"},{name:"Xi'an Xianyang International Airport",iataCode:"XIY"},{name:"Zhukovsky International Airport",iataCode:"ZIA"},{name:"Zurich Airport",iataCode:"ZRH"}];var Ja={airline:e,airplane:a,airport:o},r=Ja;var n=["American black bear","Asian black bear","Brown bear","Giant panda","Polar bear","Sloth bear","Spectacled bear","Sun bear"];var i=["Abert's Towhee","Acadian Flycatcher","Acorn Woodpecker","Alder Flycatcher","Aleutian Tern","Allen's Hummingbird","Altamira Oriole","American Avocet","American Bittern","American Black Duck","American Coot","American Crow","American Dipper","American Golden-Plover","American Goldfinch","American Kestrel","American Oystercatcher","American Pipit","American Redstart","American Robin","American Tree Sparrow","American White Pelican","American Wigeon","American Woodcock","Ancient Murrelet","Anhinga","Anna's Hummingbird","Antillean Nighthawk","Antillean Palm Swift","Aplomado Falcon","Arctic Loon","Arctic Tern","Arctic Warbler","Ash-throated Flycatcher","Ashy Storm-Petrel","Asian Brown Flycatcher","Atlantic Puffin","Audubon's Oriole","Audubon's Shearwater","Aztec Thrush","Azure Gallinule","Bachman's Sparrow","Bachman's Warbler","Bahama Mockingbird","Bahama Swallow","Bahama Woodstar","Baikal Teal","Baird's Sandpiper","Baird's Sparrow","Bald Eagle","Baltimore Oriole","Bananaquit","Band-rumped Storm-Petrel","Band-tailed Gull","Band-tailed Pigeon","Bank Swallow","Bar-tailed Godwit","Barn Owl","Barn Swallow","Barnacle Goose","Barred Owl","Barrow's Goldeneye","Bay-breasted Warbler","Bean Goose","Bell's Vireo","Belted Kingfisher","Bendire's Thrasher","Berylline Hummingbird","Bewick's Wren","Bicknell's Thrush","Black Catbird","Black Guillemot","Black Noddy","Black Oystercatcher","Black Phoebe","Black Rail","Black Rosy-Finch","Black Scoter","Black Skimmer","Black Storm-Petrel","Black Swift","Black Tern","Black Turnstone","Black Vulture","Black-and-white Warbler","Black-backed Wagtail","Black-backed Woodpecker","Black-bellied Plover","Black-bellied Whistling-Duck","Black-billed Cuckoo","Black-billed Magpie","Black-browed Albatross","Black-capped Chickadee","Black-capped Gnatcatcher","Black-capped Petrel","Black-capped Vireo","Black-chinned Hummingbird","Black-chinned Sparrow","Black-crowned Night-Heron","Black-faced Grassquit","Black-footed Albatross","Black-headed Grosbeak","Black-headed Gull","Black-legged Kittiwake","Black-necked Stilt","Black-tailed Gnatcatcher","Black-tailed Godwit","Black-tailed Gull","Black-throated Blue Warbler","Black-throated Gray Warbler","Black-throated Green Warbler","Black-throated Sparrow","Black-vented Oriole","Black-vented Shearwater","Black-whiskered Vireo","Black-winged Stilt","Blackburnian Warbler","Blackpoll Warbler","Blue Bunting","Blue Grosbeak","Blue Grouse","Blue Jay","Blue Mockingbird","Blue-footed Booby","Blue-gray Gnatcatcher","Blue-headed Vireo","Blue-throated Hummingbird","Blue-winged Teal","Blue-winged Warbler","Bluethroat","Boat-tailed Grackle","Bobolink","Bohemian Waxwing","Bonaparte's Gull","Boreal Chickadee","Boreal Owl","Botteri's Sparrow","Brambling","Brandt's Cormorant","Brant","Brewer's Blackbird","Brewer's Sparrow","Bridled Tern","Bridled Titmouse","Bristle-thighed Curlew","Broad-billed Hummingbird","Broad-billed Sandpiper","Broad-tailed Hummingbird","Broad-winged Hawk","Bronzed Cowbird","Brown Booby","Brown Creeper","Brown Jay","Brown Noddy","Brown Pelican","Brown Shrike","Brown Thrasher","Brown-capped Rosy-Finch","Brown-chested Martin","Brown-crested Flycatcher","Brown-headed Cowbird","Brown-headed Nuthatch","Budgerigar","Buff-bellied Hummingbird","Buff-breasted Flycatcher","Buff-breasted Sandpiper","Buff-collared Nightjar","Bufflehead","Buller's Shearwater","Bullock's Oriole","Bumblebee Hummingbird","Burrowing Owl","Bushtit","Cactus Wren","California Condor","California Gnatcatcher","California Gull","California Quail","California Thrasher","California Towhee","Calliope Hummingbird","Canada Goose","Canada Warbler","Canvasback","Canyon Towhee","Canyon Wren","Cape May Warbler","Caribbean Elaenia","Carolina Chickadee","Carolina Parakeet","Carolina Wren","Caspian Tern","Cassin's Auklet","Cassin's Finch","Cassin's Kingbird","Cassin's Sparrow","Cassin's Vireo","Cattle Egret","Cave Swallow","Cedar Waxwing","Cerulean Warbler","Chestnut-backed Chickadee","Chestnut-collared Longspur","Chestnut-sided Warbler","Chihuahuan Raven","Chimney Swift","Chinese Egret","Chipping Sparrow","Chuck-will's-widow","Chukar","Cinnamon Hummingbird","Cinnamon Teal","Citrine Wagtail","Clapper Rail","Clark's Grebe","Clark's Nutcracker","Clay-colored Robin","Clay-colored Sparrow","Cliff Swallow","Colima Warbler","Collared Forest-Falcon","Collared Plover","Common Black-Hawk","Common Chaffinch","Common Crane","Common Cuckoo","Common Eider","Common Goldeneye","Common Grackle","Common Greenshank","Common Ground-Dove","Common House-Martin","Common Loon","Common Merganser","Common Moorhen","Common Murre","Common Nighthawk","Common Pauraque","Common Pochard","Common Poorwill","Common Raven","Common Redpoll","Common Ringed Plover","Common Rosefinch","Common Sandpiper","Common Snipe","Common Swift","Common Tern","Common Yellowthroat","Connecticut Warbler","Cook's Petrel","Cooper's Hawk","Cordilleran Flycatcher","Corn Crake","Cory's Shearwater","Costa's Hummingbird","Couch's Kingbird","Crane Hawk","Craveri's Murrelet","Crescent-chested Warbler","Crested Auklet","Crested Caracara","Crested Myna","Crimson-collared Grosbeak","Crissal Thrasher","Cuban Martin","Curlew Sandpiper","Curve-billed Thrasher","Dark-eyed Junco","Dickcissel","Double-crested Cormorant","Double-striped Thick-knee","Dovekie","Downy Woodpecker","Dunlin","Dusky Flycatcher","Dusky Thrush","Dusky Warbler","Dusky-capped Flycatcher","Eared Grebe","Eared Trogon","Eastern Bluebird","Eastern Kingbird","Eastern Meadowlark","Eastern Phoebe","Eastern Screech-Owl","Eastern Towhee","Eastern Wood-Pewee","Elegant Tern","Elegant Trogon","Elf Owl","Emperor Goose","Eskimo Curlew","Eurasian Blackbird","Eurasian Bullfinch","Eurasian Collared-Dove","Eurasian Coot","Eurasian Curlew","Eurasian Dotterel","Eurasian Hobby","Eurasian Jackdaw","Eurasian Kestrel","Eurasian Oystercatcher","Eurasian Siskin","Eurasian Tree Sparrow","Eurasian Wigeon","Eurasian Woodcock","Eurasian Wryneck","European Golden-Plover","European Starling","European Storm-Petrel","European Turtle-Dove","Evening Grosbeak","Eyebrowed Thrush","Falcated Duck","Fan-tailed Warbler","Far Eastern Curlew","Ferruginous Hawk","Ferruginous Pygmy-Owl","Field Sparrow","Fieldfare","Fish Crow","Five-striped Sparrow","Flame-colored Tanager","Flammulated Owl","Flesh-footed Shearwater","Florida Scrub-Jay","Fork-tailed Flycatcher","Fork-tailed Storm-Petrel","Fork-tailed Swift","Forster's Tern","Fox Sparrow","Franklin's Gull","Fulvous Whistling-Duck","Gadwall","Gambel's Quail","Garganey","Gila Woodpecker","Gilded Flicker","Glaucous Gull","Glaucous-winged Gull","Glossy Ibis","Golden Eagle","Golden-cheeked Warbler","Golden-crowned Kinglet","Golden-crowned Sparrow","Golden-crowned Warbler","Golden-fronted Woodpecker","Golden-winged Warbler","Grace's Warbler","Grasshopper Sparrow","Gray Bunting","Gray Catbird","Gray Flycatcher","Gray Hawk","Gray Jay","Gray Kingbird","Gray Partridge","Gray Silky-flycatcher","Gray Vireo","Gray Wagtail","Gray-breasted Martin","Gray-cheeked Thrush","Gray-crowned Rosy-Finch","Gray-crowned Yellowthroat","Gray-headed Chickadee","Gray-spotted Flycatcher","Gray-tailed Tattler","Great Auk","Great Black-backed Gull","Great Blue Heron","Great Cormorant","Great Crested Flycatcher","Great Egret","Great Frigatebird","Great Gray Owl","Great Horned Owl","Great Kiskadee","Great Knot","Great Skua","Great Spotted Woodpecker","Great-tailed Grackle","Greater Flamingo","Greater Pewee","Greater Prairie-chicken","Greater Roadrunner","Greater Scaup","Greater Shearwater","Greater White-fronted Goose","Greater Yellowlegs","Green Heron","Green Jay","Green Kingfisher","Green Sandpiper","Green Violet-ear","Green-breasted Mango","Green-tailed Towhee","Green-winged Teal","Greenish Elaenia","Groove-billed Ani","Gull-billed Tern","Gyrfalcon","Hairy Woodpecker","Hammond's Flycatcher","Harlequin Duck","Harris's Hawk","Harris's Sparrow","Hawfinch","Heermann's Gull","Henslow's Sparrow","Hepatic Tanager","Herald Petrel","Hermit Thrush","Hermit Warbler","Herring Gull","Himalayan Snowcock","Hoary Redpoll","Hooded Merganser","Hooded Oriole","Hooded Warbler","Hook-billed Kite","Hoopoe","Horned Grebe","Horned Lark","Horned Puffin","House Finch","House Sparrow","House Wren","Hudsonian Godwit","Hutton's Vireo","Iceland Gull","Inca Dove","Indigo Bunting","Island Scrub-Jay","Ivory Gull","Ivory-billed Woodpecker","Jabiru","Jack Snipe","Jungle Nightjar","Juniper Titmouse","Kentucky Warbler","Key West Quail-Dove","Killdeer","King Eider","King Rail","Kirtland's Warbler","Kittlitz's Murrelet","La Sagra's Flycatcher","Labrador Duck","Ladder-backed Woodpecker","Lanceolated Warbler","Lapland Longspur","Large-billed Tern","Lark Bunting","Lark Sparrow","Laughing Gull","Lawrence's Goldfinch","Laysan Albatross","Lazuli Bunting","Le Conte's Sparrow","Le Conte's Thrasher","Leach's Storm-Petrel","Least Auklet","Least Bittern","Least Flycatcher","Least Grebe","Least Sandpiper","Least Storm-Petrel","Least Tern","Lesser Black-backed Gull","Lesser Frigatebird","Lesser Goldfinch","Lesser Nighthawk","Lesser Prairie-chicken","Lesser Scaup","Lesser White-fronted Goose","Lesser Yellowlegs","Lewis's Woodpecker","Limpkin","Lincoln's Sparrow","Little Blue Heron","Little Bunting","Little Curlew","Little Egret","Little Gull","Little Ringed Plover","Little Shearwater","Little Stint","Loggerhead Kingbird","Loggerhead Shrike","Long-billed Curlew","Long-billed Dowitcher","Long-billed Murrelet","Long-billed Thrasher","Long-eared Owl","Long-tailed Jaeger","Long-toed Stint","Louisiana Waterthrush","Lucifer Hummingbird","Lucy's Warbler","MacGillivray's Warbler","Magnificent Frigatebird","Magnificent Hummingbird","Magnolia Warbler","Mallard","Mangrove Cuckoo","Manx Shearwater","Marbled Godwit","Marbled Murrelet","Marsh Sandpiper","Marsh Wren","Masked Booby","Masked Duck","Masked Tityra","McCown's Longspur","McKay's Bunting","Merlin","Mew Gull","Mexican Chickadee","Mexican Jay","Middendorff's Grasshopper-Warbler","Mississippi Kite","Mongolian Plover","Monk Parakeet","Montezuma Quail","Mottled Duck","Mottled Owl","Mottled Petrel","Mountain Bluebird","Mountain Chickadee","Mountain Plover","Mountain Quail","Mourning Dove","Mourning Warbler","Mugimaki Flycatcher","Murphy's Petrel","Muscovy Duck","Mute Swan","Narcissus Flycatcher","Nashville Warbler","Nelson's Sharp-tailed Sparrow","Neotropic Cormorant","Northern Beardless-Tyrannulet","Northern Bobwhite","Northern Cardinal","Northern Flicker","Northern Fulmar","Northern Gannet","Northern Goshawk","Northern Harrier","Northern Hawk Owl","Northern Jacana","Northern Lapwing","Northern Mockingbird","Northern Parula","Northern Pintail","Northern Pygmy-Owl","Northern Rough-winged Swallow","Northern Saw-whet Owl","Northern Shoveler","Northern Shrike","Northern Waterthrush","Northern Wheatear","Northwestern Crow","Nuttall's Woodpecker","Nutting's Flycatcher","Oak Titmouse","Oldsquaw","Olive Sparrow","Olive Warbler","Olive-backed Pipit","Olive-sided Flycatcher","Orange-crowned Warbler","Orchard Oriole","Oriental Cuckoo","Oriental Greenfinch","Oriental Pratincole","Oriental Scops-Owl","Oriental Turtle-Dove","Osprey","Ovenbird","Pacific Golden-Plover","Pacific Loon","Pacific-slope Flycatcher","Paint-billed Crake","Painted Bunting","Painted Redstart","Pallas's Bunting","Palm Warbler","Parakeet Auklet","Parasitic Jaeger","Passenger Pigeon","Pechora Pipit","Pectoral Sandpiper","Pelagic Cormorant","Peregrine Falcon","Phainopepla","Philadelphia Vireo","Pied-billed Grebe","Pigeon Guillemot","Pileated Woodpecker","Pin-tailed Snipe","Pine Bunting","Pine Grosbeak","Pine Siskin","Pine Warbler","Pink-footed Goose","Pink-footed Shearwater","Pinyon Jay","Piping Plover","Plain Chachalaca","Plain-capped Starthroat","Plumbeous Vireo","Pomarine Jaeger","Prairie Falcon","Prairie Warbler","Prothonotary Warbler","Purple Finch","Purple Gallinule","Purple Martin","Purple Sandpiper","Pygmy Nuthatch","Pyrrhuloxia","Razorbill","Red Crossbill","Red Knot","Red Phalarope","Red-bellied Woodpecker","Red-billed Pigeon","Red-billed Tropicbird","Red-breasted Flycatcher","Red-breasted Merganser","Red-breasted Nuthatch","Red-breasted Sapsucker","Red-cockaded Woodpecker","Red-crowned Parrot","Red-eyed Vireo","Red-faced Cormorant","Red-faced Warbler","Red-flanked Bluetail","Red-footed Booby","Red-headed Woodpecker","Red-legged Kittiwake","Red-naped Sapsucker","Red-necked Grebe","Red-necked Phalarope","Red-necked Stint","Red-shouldered Hawk","Red-tailed Hawk","Red-tailed Tropicbird","Red-throated Loon","Red-throated Pipit","Red-whiskered Bulbul","Red-winged Blackbird","Reddish Egret","Redhead","Redwing","Reed Bunting","Rhinoceros Auklet","Ring-billed Gull","Ring-necked Duck","Ring-necked Pheasant","Ringed Kingfisher","Roadside Hawk","Rock Dove","Rock Ptarmigan","Rock Sandpiper","Rock Wren","Rose-breasted Grosbeak","Rose-throated Becard","Roseate Spoonbill","Roseate Tern","Ross's Goose","Ross's Gull","Rough-legged Hawk","Royal Tern","Ruby-crowned Kinglet","Ruby-throated Hummingbird","Ruddy Duck","Ruddy Ground-Dove","Ruddy Quail-Dove","Ruddy Turnstone","Ruff","Ruffed Grouse","Rufous Hummingbird","Rufous-backed Robin","Rufous-capped Warbler","Rufous-crowned Sparrow","Rufous-winged Sparrow","Rustic Bunting","Rusty Blackbird","Sabine's Gull","Sage Grouse","Sage Sparrow","Sage Thrasher","Saltmarsh Sharp-tailed Sparrow","Sanderling","Sandhill Crane","Sandwich Tern","Savannah Sparrow","Say's Phoebe","Scaled Quail","Scaly-naped Pigeon","Scarlet Ibis","Scarlet Tanager","Scissor-tailed Flycatcher","Scott's Oriole","Seaside Sparrow","Sedge Wren","Semipalmated Plover","Semipalmated Sandpiper","Sharp-shinned Hawk","Sharp-tailed Grouse","Sharp-tailed Sandpiper","Shiny Cowbird","Short-billed Dowitcher","Short-eared Owl","Short-tailed Albatross","Short-tailed Hawk","Short-tailed Shearwater","Shy Albatross","Siberian Accentor","Siberian Blue Robin","Siberian Flycatcher","Siberian Rubythroat","Sky Lark","Slate-throated Redstart","Slaty-backed Gull","Slender-billed Curlew","Smew","Smith's Longspur","Smooth-billed Ani","Snail Kite","Snow Bunting","Snow Goose","Snowy Egret","Snowy Owl","Snowy Plover","Solitary Sandpiper","Song Sparrow","Sooty Shearwater","Sooty Tern","Sora","South Polar Skua","Southern Martin","Spectacled Eider","Spoonbill Sandpiper","Spot-billed Duck","Spot-breasted Oriole","Spotted Dove","Spotted Owl","Spotted Rail","Spotted Redshank","Spotted Sandpiper","Spotted Towhee","Sprague's Pipit","Spruce Grouse","Stejneger's Petrel","Steller's Eider","Steller's Jay","Steller's Sea-Eagle","Stilt Sandpiper","Stonechat","Streak-backed Oriole","Streaked Shearwater","Strickland's Woodpecker","Stripe-headed Tanager","Sulphur-bellied Flycatcher","Summer Tanager","Surf Scoter","Surfbird","Swainson's Hawk","Swainson's Thrush","Swainson's Warbler","Swallow-tailed Kite","Swamp Sparrow","Tamaulipas Crow","Tawny-shouldered Blackbird","Temminck's Stint","Tennessee Warbler","Terek Sandpiper","Thayer's Gull","Thick-billed Kingbird","Thick-billed Murre","Thick-billed Parrot","Thick-billed Vireo","Three-toed Woodpecker","Townsend's Solitaire","Townsend's Warbler","Tree Pipit","Tree Swallow","Tricolored Blackbird","Tricolored Heron","Tropical Kingbird","Tropical Parula","Trumpeter Swan","Tufted Duck","Tufted Flycatcher","Tufted Puffin","Tufted Titmouse","Tundra Swan","Turkey Vulture","Upland Sandpiper","Varied Bunting","Varied Thrush","Variegated Flycatcher","Vaux's Swift","Veery","Verdin","Vermilion Flycatcher","Vesper Sparrow","Violet-crowned Hummingbird","Violet-green Swallow","Virginia Rail","Virginia's Warbler","Wandering Albatross","Wandering Tattler","Warbling Vireo","Wedge-rumped Storm-Petrel","Wedge-tailed Shearwater","Western Bluebird","Western Grebe","Western Gull","Western Kingbird","Western Meadowlark","Western Reef-Heron","Western Sandpiper","Western Screech-Owl","Western Scrub-Jay","Western Tanager","Western Wood-Pewee","Whimbrel","Whip-poor-will","Whiskered Auklet","Whiskered Screech-Owl","Whiskered Tern","White Ibis","White Wagtail","White-breasted Nuthatch","White-cheeked Pintail","White-chinned Petrel","White-collared Seedeater","White-collared Swift","White-crowned Pigeon","White-crowned Sparrow","White-eared Hummingbird","White-eyed Vireo","White-faced Ibis","White-faced Storm-Petrel","White-headed Woodpecker","White-rumped Sandpiper","White-tailed Eagle","White-tailed Hawk","White-tailed Kite","White-tailed Ptarmigan","White-tailed Tropicbird","White-throated Needletail","White-throated Robin","White-throated Sparrow","White-throated Swift","White-tipped Dove","White-winged Crossbill","White-winged Dove","White-winged Parakeet","White-winged Scoter","White-winged Tern","Whooper Swan","Whooping Crane","Wild Turkey","Willet","Williamson's Sapsucker","Willow Flycatcher","Willow Ptarmigan","Wilson's Phalarope","Wilson's Plover","Wilson's Storm-Petrel","Wilson's Warbler","Winter Wren","Wood Duck","Wood Sandpiper","Wood Stork","Wood Thrush","Wood Warbler","Worm-eating Warbler","Worthen's Sparrow","Wrentit","Xantus's Hummingbird","Xantus's Murrelet","Yellow Bittern","Yellow Grosbeak","Yellow Rail","Yellow Wagtail","Yellow Warbler","Yellow-bellied Flycatcher","Yellow-bellied Sapsucker","Yellow-billed Cuckoo","Yellow-billed Loon","Yellow-billed Magpie","Yellow-breasted Bunting","Yellow-breasted Chat","Yellow-crowned Night-Heron","Yellow-eyed Junco","Yellow-faced Grassquit","Yellow-footed Gull","Yellow-green Vireo","Yellow-headed Blackbird","Yellow-legged Gull","Yellow-nosed Albatross","Yellow-rumped Warbler","Yellow-throated Vireo","Yellow-throated Warbler","Yucatan Vireo","Zenaida Dove","Zone-tailed Hawk"];var t=["Abyssinian","American Bobtail","American Curl","American Shorthair","American Wirehair","Balinese","Bengal","Birman","Bombay","British Shorthair","Burmese","Chartreux","Chausie","Cornish Rex","Devon Rex","Donskoy","Egyptian Mau","Exotic Shorthair","Havana","Highlander","Himalayan","Japanese Bobtail","Korat","Kurilian Bobtail","LaPerm","Maine Coon","Manx","Minskin","Munchkin","Nebelung","Norwegian Forest Cat","Ocicat","Ojos Azules","Oriental","Persian","Peterbald","Pixiebob","Ragdoll","Russian Blue","Savannah","Scottish Fold","Selkirk Rex","Serengeti","Siamese","Siberian","Singapura","Snowshoe","Sokoke","Somali","Sphynx","Thai","Tonkinese","Toyger","Turkish Angora","Turkish Van"];var l=["Amazon River Dolphin","Arnoux's Beaked Whale","Atlantic Humpbacked Dolphin","Atlantic Spotted Dolphin","Atlantic White-Sided Dolphin","Australian Snubfin Dolphin","Australian humpback Dolphin","Blue Whale","Bottlenose Dolphin","Bryde\u2019s whale","Burrunan Dolphin","Chilean Dolphin","Chinese River Dolphin","Chinese White Dolphin","Clymene Dolphin","Commerson\u2019s Dolphin","Costero","Dusky Dolphin","False Killer Whale","Fin Whale","Fraser\u2019s Dolphin","Ganges River Dolphin","Guiana Dolphin","Heaviside\u2019s Dolphin","Hector\u2019s Dolphin","Hourglass Dolphin","Humpback whale","Indo-Pacific Bottlenose Dolphin","Indo-Pacific Hump-backed Dolphin","Irrawaddy Dolphin","Killer Whale (Orca)","La Plata Dolphin","Long-Beaked Common Dolphin","Long-finned Pilot Whale","Longman's Beaked Whale","Melon-headed Whale","Northern Rightwhale Dolphin","Omura\u2019s whale","Pacific White-Sided Dolphin","Pantropical Spotted Dolphin","Peale\u2019s Dolphin","Pygmy Killer Whale","Risso\u2019s Dolphin","Rough-Toothed Dolphin","Sei Whale","Short-Beaked Common Dolphin","Short-finned Pilot Whale","Southern Bottlenose Whale","Southern Rightwhale Dolphin","Sperm Whale","Spinner Dolphin","Striped Dolphin","Tucuxi","White-Beaked Dolphin"];var s=["Aberdeen Angus","Abergele","Abigar","Abondance","Abyssinian Shorthorned Zebu","Aceh","Achham","Adamawa","Adaptaur","Afar","Africangus","Afrikaner","Agerolese","Alambadi","Alatau","Albanian","Albera","Alderney","Alentejana","Aleutian wild cattle","Aliad Dinka","Alistana-Sanabresa","Allmogekor","Alur","American","American Angus","American Beef Friesian","American Brown Swiss","American Milking Devon","American White Park","Amerifax","Amrit Mahal","Amsterdam Island cattle","Anatolian Black","Andalusian Black","Andalusian Blond","Andalusian Grey","Angeln","Angoni","Ankina","Ankole","Ankole-Watusi","Aracena","Arado","Argentine Criollo","Argentine Friesian","Armorican","Arouquesa","Arsi","Asturian Mountain","Asturian Valley","Aubrac","Aulie-Ata","Aure et Saint-Girons","Australian Braford","Australian Brangus","Australian Charbray","Australian Friesian Sahiwal","Australian Lowline","Australian Milking Zebu","Australian Shorthorn","Austrian Simmental","Austrian Yellow","Avile\xF1a-Negra Ib\xE9rica","Av\xE9tonou","Aweil Dinka","Ayrshire","Azaouak","Azebuado","Azerbaijan Zebu","Azores","Bachaur cattle","Baherie cattle","Bakosi cattle","Balancer","Baoule","Bargur cattle","Barros\xE3","Barzona","Bazadaise","Bedit","Beef Freisian","Beefalo","Beefmaker","Beefmaster","Begayt","Belgian Blue","Belgian Red","Belgian Red Pied","Belgian White-and-Red","Belmont Red","Belted Galloway","Bernese","Berrenda cattle","Betizu","Bianca Modenese","Blaarkop","Black Angus","Black Baldy","Black Hereford","Blanca Cacere\xF1a","Blanco Orejinegro BON","Blonde d'Aquitaine","Blue Albion","Blue Grey","Bohuskulla","Bonsmara","Boran","Bo\u0161karin","Braford","Brahman","Brahmousin","Brangus","Braunvieh","Brava","Breed","British Friesian","British White","Brown Carpathian","Brown Caucasian","Brown Swiss","Bue Lingo","Burlina","Bushuyev","Butana cattle","Bu\u0161a cattle","Cachena","Caldelana","Camargue","Campbell Island cattle","Canadian Speckle Park","Canadienne","Canaria","Canchim","Caracu","Carinthian Blondvieh","Carora","Cedit","Charbray","Charolais","Chateaubriand","Chiangus","Chianina","Chillingham cattle","Chinese Black Pied","Cholistani","Coloursided White Back","Commercial","Corriente","Corsican cattle","Coste\xF1o con Cuernos","Crioulo Lageano","C\xE1rdena Andaluza","Dajal","Dangi cattle","Danish Black-Pied","Danish Jersey","Danish Red","Dedit","Deep Red cattle","Deoni","Devon","Dexter cattle","Dhanni","Doayo cattle","Doela","Drakensberger","Droughtmaster","Dulong'","Dutch Belted","Dutch Friesian","Dwarf Lulu","D\xF8lafe","East Anatolian Red","Eastern Finncattle","Eastern Red Polled","Eedit","Enderby Island cattle","English Longhorn","Ennstaler Bergscheck","Estonian Holstein","Estonian Native","Estonian Red cattle","Fedit","Finncattle","Finnish Ayrshire","Finnish Holstein-Friesian","Fj\xE4ll","Fleckvieh","Florida Cracker cattle","Fogera","French Simmental","Fribourgeoise","Friesian Red and White","Fulani Sudanese","F\u0113ng Cattle","Galician Blond","Galloway cattle","Gangatiri","Gaolao","Garvonesa","Gascon cattle","Gedit","Gelbvieh","Georgian Mountain cattle","German Angus","German Black Pied Dairy","German Black Pied cattle","German Red Pied","Gir","Glan cattle","Gloucester","Gobra","Greek Shorthorn","Greek Steppe","Greyman cattle","Gudali","Guernsey cattle","Guzer\xE1","Hallikar4","Hanwoo","Hariana cattle","Hart\xF3n del Valle","Harzer Rotvieh","Hays Converter","Heck cattle","Hedit","Hereford","Herens","Highland cattle","Hinterwald","Holando-Argentino","Holstein Friesian cattle","Horro","Hungarian Grey","Hu\xE1ng Cattle","Hybridmaster","Iberian cattle","Icelandic","Iedit","Illawarra cattle","Improved Red and White","Indo-Brazilian","Irish Moiled","Israeli Holstein","Israeli Red","Istoben cattle","Istrian cattle","Jamaica Black","Jamaica Hope","Jamaica Red","Japanese Brown","Jarmelista","Javari cattle","Jedit","Jersey cattle","Jutland cattle","Kabin Buri cattle","Kalmyk cattle","Kamphaeng Saen cattle","Kangayam","Kankrej","Karan Swiss","Kasaragod Dwarf cattle","Kathiawadi","Kazakh Whiteheaded","Kedit","Kenana cattle","Kenkatha cattle","Kerry cattle","Kherigarh","Khillari cattle","Kholomogory","Korat Wagyu","Kostroma cattle","Krishna Valley cattle","Kurgan cattle","Kuri","La Reina cattle","Lakenvelder cattle","Lampurger","Latvian Blue","Latvian Brown","Latvian Danish Red","Lebedyn","Ledit","Levantina","Limia cattle","Limousin","Limpurger","Lincoln Red","Lineback","Lithuanian Black-and-White","Lithuanian Light Grey","Lithuanian Red","Lithuanian White-Backed","Lohani cattle","Lourdais","Lucerna cattle","Luing","Madagascar Zebu","Madura","Maine-Anjou","Malnad Gidda","Malvi","Mandalong Special","Mantequera Leonesa","Maramure\u015F Brown","Marchigiana","Maremmana","Marinhoa","Maronesa","Masai","Mashona","Medit","Menorquina","Mertolenga","Meuse-Rhine-Issel","Mewati","Milking Shorthorn","Minhota","Mirandesa","Mirkadim","Moc\u0103ni\u0163\u0103","Mollie","Monchina","Mongolian","Montb\xE9liarde","Morucha","Murboden","Murnau-Werdenfels","Murray Grey","Muturu","N'Dama","Nagori","Nedit","Negra Andaluza","Nelore","Nguni","Nimari","Normande","North Bengal Grey","Northern Finncattle","Northern Shorthorn","Norwegian Red","Oedit]","Ongole","Original Simmental","Pajuna","Palmera","Pantaneiro","Parda Alpina","Parthenaise","Pasiega","Pedit","Pembroke","Philippine Native","Pie Rouge des Plaines","Piedmontese cattle","Pineywoods","Pinzgauer","Pirenaica","Podolac","Podolica","Polish Black-and-White","Polish Red","Poll Shorthorn","Polled Hereford","Polled Shorthorn","Ponwar","Preta","Pulikulam","Punganur","Pustertaler Sprinzen","Qedit","Qinchaun","Queensland Miniature Boran","RX3","Ramo Grande","Randall","Raramuri Criollo","Rathi","Raya","Red Angus","Red Brangus","Red Chittagong","Red Fulani","Red Gorbatov","Red Holstein","Red Kandhari","Red Mingrelian","Red Poll","Red Polled \xD8stland","Red Sindhi","Redit","Retinta","Riggit Galloway","Ringam\xE5la","Rohjan","Romagnola","Romanian B\u0103l\u0163ata","Romanian Steppe Gray","Romosinuano","Russian Black Pied","R\xE4tisches Grauvieh","Sahiwal","Salers","Salorn","Sanga","Sanhe","Santa Cruz","Santa Gertrudis","Sayaguesa","Schwyz","Sedit","Selembu","Senepol","Serbian Pied","Serbian Steppe","Sheko","Shetland","Shorthorn","Siboney de Cuba","Simbrah","Simford","Simmental","Siri","South Devon","Spanish Fighting Bull","Speckle Park","Square Meater","Sussex","Swedish Friesian","Swedish Polled","Swedish Red Pied","Swedish Red Polled","Swedish Red-and-White","Tabapu\xE3","Tarentaise","Tasmanian Grey","Tauros","Tedit","Telemark","Texas Longhorn","Texon","Thai Black","Thai Fighting Bull","Thai Friesian","Thai Milking Zebu","Tharparkar","Tswana","Tudanca","Tuli","Tulim","Turkish Grey Steppe","Tux-Zillertal","Tyrol Grey","Uedit","Ukrainian Grey","Umblachery","Valdostana Castana","Valdostana Pezzata Nera","Valdostana Pezzata Rossa","Vaynol","Vechur8","Vedit","Vestland Fjord","Vestland Red Polled","Vianesa","Volinian Beef","Vorderwald","Vosgienne","V\xE4neko","Waguli","Wagyu","Wangus","Wedit","Welsh Black","Western Finncattle","White C\xE1ceres","White Fulani","White Lamphun","White Park","Whitebred Shorthorn","Xedit","Xingjiang Brown","Yakutian","Yanbian","Yanhuang","Yedit","Yurino","Zebu","Zedit","\xC9vol\xE8ne cattle","\u017Bubro\u0144"];var d=["African Slender-snouted Crocodile","Alligator mississippiensis","American Crocodile","Australian Freshwater Crocodile","Black Caiman","Broad-snouted Caiman","Chinese Alligator","Cuban Crocodile","Cuvier\u2019s Dwarf Caiman","Dwarf Crocodile","Gharial","Morelet\u2019s Crocodile","Mugger Crocodile","New Guinea Freshwater Crocodile","Nile Crocodile","Orinoco Crocodile","Philippine Crocodile","Saltwater Crocodile","Schneider\u2019s Smooth-fronted Caiman","Siamese Crocodile","Spectacled Caiman","Tomistoma","West African Crocodile","Yacare Caiman"];var u=["Affenpinscher","Afghan Hound","Aidi","Airedale Terrier","Akbash","Akita","Alano Espa\xF1ol","Alapaha Blue Blood Bulldog","Alaskan Husky","Alaskan Klee Kai","Alaskan Malamute","Alopekis","Alpine Dachsbracke","American Bulldog","American Bully","American Cocker Spaniel","American English Coonhound","American Foxhound","American Hairless Terrier","American Pit Bull Terrier","American Staffordshire Terrier","American Water Spaniel","Andalusian Hound","Anglo-Fran\xE7ais de Petite V\xE9nerie","Appenzeller Sennenhund","Ariegeois","Armant","Armenian Gampr dog","Artois Hound","Australian Cattle Dog","Australian Kelpie","Australian Shepherd","Australian Stumpy Tail Cattle Dog","Australian Terrier","Austrian Black and Tan Hound","Austrian Pinscher","Azawakh","Bakharwal dog","Banjara Hound","Barbado da Terceira","Barbet","Basenji","Basque Shepherd Dog","Basset Art\xE9sien Normand","Basset Bleu de Gascogne","Basset Fauve de Bretagne","Basset Hound","Bavarian Mountain Hound","Beagle","Beagle-Harrier","Bearded Collie","Beauceron","Bedlington Terrier","Belgian Shepherd","Bergamasco Shepherd","Berger Picard","Bernese Mountain Dog","Bhotia","Bichon Fris\xE9","Billy","Black Mouth Cur","Black Norwegian Elkhound","Black Russian Terrier","Black and Tan Coonhound","Bloodhound","Blue Lacy","Blue Picardy Spaniel","Bluetick Coonhound","Boerboel","Bohemian Shepherd","Bolognese","Border Collie","Border Terrier","Borzoi","Bosnian Coarse-haired Hound","Boston Terrier","Bouvier des Ardennes","Bouvier des Flandres","Boxer","Boykin Spaniel","Bracco Italiano","Braque Francais","Braque Saint-Germain","Braque d'Auvergne","Braque de l'Ari\xE8ge","Braque du Bourbonnais","Briard","Briquet Griffon Vend\xE9en","Brittany","Broholmer","Bruno Jura Hound","Brussels Griffon","Bucovina Shepherd Dog","Bull Arab","Bull Terrier","Bulldog","Bullmastiff","Bully Kutta","Burgos Pointer","Cairn Terrier","Campeiro Bulldog","Can de Chira","Canaan Dog","Canadian Eskimo Dog","Cane Corso","Cane Paratore","Cane di Oropa","Cantabrian Water Dog","Cardigan Welsh Corgi","Carea Castellano Manchego","Carolina Dog","Carpathian Shepherd Dog","Catahoula Leopard Dog","Catalan Sheepdog","Caucasian Shepherd Dog","Cavalier King Charles Spaniel","Central Asian Shepherd Dog","Cesky Fousek","Cesky Terrier","Chesapeake Bay Retriever","Chien Fran\xE7ais Blanc et Noir","Chien Fran\xE7ais Blanc et Orange","Chien Fran\xE7ais Tricolore","Chihuahua","Chilean Terrier","Chinese Chongqing Dog","Chinese Crested Dog","Chinook","Chippiparai","Chongqing dog","Chortai","Chow Chow","Cimarr\xF3n Uruguayo","Cirneco dell'Etna","Clumber Spaniel","Colombian fino hound","Coton de Tulear","Cretan Hound","Croatian Sheepdog","Curly-Coated Retriever","Cursinu","Czechoslovakian Wolfdog","C\xE3o Fila de S\xE3o Miguel","C\xE3o da Serra de Aires","C\xE3o de Castro Laboreiro","C\xE3o de Gado Transmontano","Dachshund","Dalmatian","Dandie Dinmont Terrier","Danish-Swedish Farmdog","Denmark Feist","Dingo","Doberman Pinscher","Dogo Argentino","Dogo Guatemalteco","Dogo Sardesco","Dogue Brasileiro","Dogue de Bordeaux","Drentse Patrijshond","Drever","Dunker","Dutch Shepherd","Dutch Smoushond","East European Shepherd","East Siberian Laika","English Cocker Spaniel","English Foxhound","English Mastiff","English Setter","English Shepherd","English Springer Spaniel","English Toy Terrier","Entlebucher Mountain Dog","Estonian Hound","Estrela Mountain Dog","Eurasier","Field Spaniel","Fila Brasileiro","Finnish Hound","Finnish Lapphund","Finnish Spitz","Flat-Coated Retriever","French Bulldog","French Spaniel","Galgo Espa\xF1ol","Galician Shepherd Dog","Garafian Shepherd","Gascon Saintongeois","Georgian Shepherd","German Hound","German Longhaired Pointer","German Pinscher","German Roughhaired Pointer","German Shepherd Dog","German Shorthaired Pointer","German Spaniel","German Spitz","German Wirehaired Pointer","Giant Schnauzer","Glen of Imaal Terrier","Golden Retriever","Gordon Setter","Go\u0144czy Polski","Grand Anglo-Fran\xE7ais Blanc et Noir","Grand Anglo-Fran\xE7ais Blanc et Orange","Grand Anglo-Fran\xE7ais Tricolore","Grand Basset Griffon Vend\xE9en","Grand Bleu de Gascogne","Grand Griffon Vend\xE9en","Great Dane","Greater Swiss Mountain Dog","Greek Harehound","Greek Shepherd","Greenland Dog","Greyhound","Griffon Bleu de Gascogne","Griffon Fauve de Bretagne","Griffon Nivernais","Gull Dong","Gull Terrier","Hamiltonst\xF6vare","Hanover Hound","Harrier","Havanese","Hierran Wolfdog","Hokkaido","Hovawart","Huntaway","Hygen Hound","H\xE4llefors Elkhound","Ibizan Hound","Icelandic Sheepdog","Indian Spitz","Indian pariah dog","Irish Red and White Setter","Irish Setter","Irish Terrier","Irish Water Spaniel","Irish Wolfhound","Istrian Coarse-haired Hound","Istrian Shorthaired Hound","Italian Greyhound","Jack Russell Terrier","Jagdterrier","Japanese Chin","Japanese Spitz","Japanese Terrier","Jindo","Jonangi","Kai Ken","Kaikadi","Kangal Shepherd Dog","Kanni","Karakachan dog","Karelian Bear Dog","Kars","Karst Shepherd","Keeshond","Kerry Beagle","Kerry Blue Terrier","King Charles Spaniel","King Shepherd","Kintamani","Kishu","Kokoni","Kombai","Komondor","Kooikerhondje","Koolie","Koyun dog","Kromfohrl\xE4nder","Kuchi","Kuvasz","Labrador Retriever","Lagotto Romagnolo","Lakeland Terrier","Lancashire Heeler","Landseer","Lapponian Herder","Large M\xFCnsterl\xE4nder","Leonberger","Levriero Sardo","Lhasa Apso","Lithuanian Hound","Lupo Italiano","L\xF6wchen","Mackenzie River Husky","Magyar ag\xE1r","Mahratta Greyhound","Maltese","Manchester Terrier","Maremmano-Abruzzese Sheepdog","McNab dog","Miniature American Shepherd","Miniature Bull Terrier","Miniature Fox Terrier","Miniature Pinscher","Miniature Schnauzer","Molossus of Epirus","Montenegrin Mountain Hound","Mountain Cur","Mountain Feist","Mucuchies","Mudhol Hound","Mudi","Neapolitan Mastiff","New Guinea Singing Dog","New Zealand Heading Dog","Newfoundland","Norfolk Terrier","Norrbottenspets","Northern Inuit Dog","Norwegian Buhund","Norwegian Elkhound","Norwegian Lundehund","Norwich Terrier","Nova Scotia Duck Tolling Retriever","Old Croatian Sighthound","Old Danish Pointer","Old English Sheepdog","Old English Terrier","Olde English Bulldogge","Otterhound","Pachon Navarro","Paisley Terrier","Pampas Deerhound","Papillon","Parson Russell Terrier","Pastore della Lessinia e del Lagorai","Patagonian Sheepdog","Patterdale Terrier","Pekingese","Pembroke Welsh Corgi","Perro Majorero","Perro de Pastor Mallorquin","Perro de Presa Canario","Perro de Presa Mallorquin","Peruvian Inca Orchid","Petit Basset Griffon Vend\xE9en","Petit Bleu de Gascogne","Phal\xE8ne","Pharaoh Hound","Phu Quoc Ridgeback","Picardy Spaniel","Plott Hound","Plummer Terrier","Podenco Canario","Podenco Valenciano","Pointer","Poitevin","Polish Greyhound","Polish Hound","Polish Lowland Sheepdog","Polish Tatra Sheepdog","Pomeranian","Pont-Audemer Spaniel","Poodle","Porcelaine","Portuguese Podengo","Portuguese Pointer","Portuguese Water Dog","Posavac Hound","Pra\u017Esk\xFD Krysa\u0159\xEDk","Pshdar Dog","Pudelpointer","Pug","Puli","Pumi","Pungsan Dog","Pyrenean Mastiff","Pyrenean Mountain Dog","Pyrenean Sheepdog","Rafeiro do Alentejo","Rajapalayam","Rampur Greyhound","Rat Terrier","Ratonero Bodeguero Andaluz","Ratonero Mallorquin","Ratonero Murciano de Huerta","Ratonero Valenciano","Redbone Coonhound","Rhodesian Ridgeback","Romanian Mioritic Shepherd Dog","Romanian Raven Shepherd Dog","Rottweiler","Rough Collie","Russian Spaniel","Russian Toy","Russo-European Laika","Saarloos Wolfdog","Sabueso Espa\xF1ol","Saint Bernard","Saint Hubert Jura Hound","Saint-Usuge Spaniel","Saluki","Samoyed","Sapsali","Sarabi dog","Sardinian Shepherd Dog","Schapendoes","Schillerst\xF6vare","Schipperke","Schweizer Laufhund","Schweizerischer Niederlaufhund","Scottish Deerhound","Scottish Terrier","Sealyham Terrier","Segugio Italiano","Segugio Maremmano","Segugio dell'Appennino","Seppala Siberian Sleddog","Serbian Hound","Serbian Tricolour Hound","Serrano Bulldog","Shar Pei","Shetland Sheepdog","Shiba Inu","Shih Tzu","Shikoku","Shiloh Shepherd","Siberian Husky","Silken Windhound","Silky Terrier","Sinhala Hound","Skye Terrier","Sloughi","Slovakian Wirehaired Pointer","Slovensk\xFD Cuvac","Slovensk\xFD Kopov","Smalandst\xF6vare","Small Greek domestic dog","Small M\xFCnsterl\xE4nder","Smooth Collie","Smooth Fox Terrier","Soft-Coated Wheaten Terrier","South Russian Ovcharka","Spanish Mastiff","Spanish Water Dog","Spinone Italiano","Sporting Lucas Terrier","Stabyhoun","Staffordshire Bull Terrier","Standard Schnauzer","Stephens Stock","Styrian Coarse-haired Hound","Sussex Spaniel","Swedish Elkhound","Swedish Lapphund","Swedish Vallhund","Swedish White Elkhound","Taigan","Taiwan Dog","Tamaskan Dog","Teddy Roosevelt Terrier","Telomian","Tenterfield Terrier","Terrier Brasileiro","Thai Bangkaew Dog","Thai Ridgeback","Tibetan Mastiff","Tibetan Spaniel","Tibetan Terrier","Tornjak","Tosa","Toy Fox Terrier","Toy Manchester Terrier","Transylvanian Hound","Treeing Cur","Treeing Feist","Treeing Tennessee Brindle","Treeing Walker Coonhound","Trigg Hound","Tyrolean Hound","Vikhan","Villano de Las Encartaciones","Villanuco de Las Encartaciones","Vizsla","Volpino Italiano","Weimaraner","Welsh Sheepdog","Welsh Springer Spaniel","Welsh Terrier","West Highland White Terrier","West Siberian Laika","Westphalian Dachsbracke","Wetterhoun","Whippet","White Shepherd","White Swiss Shepherd Dog","Wire Fox Terrier","Wirehaired Pointing Griffon","Wirehaired Vizsla","Xiasi Dog","Xoloitzcuintli","Yakutian Laika","Yorkshire Terrier","\u0160arplaninac"];var c=["Alaska pollock","Albacore","Amur catfish","Araucanian herring","Argentine hake","Asari","Asian swamp eel","Atlantic cod","Atlantic herring","Atlantic horse mackerel","Atlantic mackerel","Atlantic menhaden","Atlantic salmon","Bigeye scad","Bigeye tuna","Bighead carp","Black carp","Blood cockle","Blue swimming crab","Blue whiting","Bombay-duck","Bonga shad","California pilchard","Cape horse mackerel","Capelin","Catla","Channel catfish","Chilean jack mackerel","Chinese perch","Chinese softshell turtle","Chub mackerel","Chum salmon","Common carp","Crucian carp","Daggertooth pike conger","European anchovy","European pilchard","European sprat","Filipino Venus","Gazami crab","Goldstripe sardinella","Grass carp","Gulf menhaden","Haddock","Hilsa shad","Indian mackerel","Indian oil sardine","Iridescent shark","Japanese anchovy","Japanese cockle","Japanese common catfish","Japanese flying squid","Japanese jack mackerel","Japanese littleneck","Japanese pilchard","Jumbo flying squid","Kawakawa","Korean bullhead","Largehead hairtail","Longtail tuna","Madeiran sardinella","Mandarin fish","Milkfish","Mrigal carp","Narrow-barred Spanish mackerel","Nile perch","Nile tilapia","North Pacific hake","Northern snakehead","Pacific anchoveta","Pacific cod","Pacific herring","Pacific sand lance","Pacific sandlance","Pacific saury","Pacific thread herring","Peruvian anchoveta","Pink salmon","Pollock","Pond loach","Rainbow trout","Rohu","Round sardinella","Short mackerel","Silver carp","Silver cyprinid","Skipjack tuna","Southern African anchovy","Southern rough shrimp","Whiteleg shrimp","Wuchang bream","Yellow croaker","Yellowfin tuna","Yellowhead catfish","Yellowstripe scad"];var m$1=["Abaco Barb","Abtenauer","Abyssinian","Aegidienberger","Akhal-Teke","Albanian Horse","Altai Horse","Alt\xE8r Real","American Albino","American Cream Draft","American Indian Horse","American Paint Horse","American Quarter Horse","American Saddlebred","American Warmblood","Andalusian Horse","Andravida Horse","Anglo-Arabian","Anglo-Arabo-Sardo","Anglo-Kabarda","Appaloosa","AraAppaloosa","Arabian Horse","Ardennes Horse","Arenberg-Nordkirchen","Argentine Criollo","Asian wild Horse","Assateague Horse","Asturc\xF3n","Augeron","Australian Brumby","Australian Draught Horse","Australian Stock Horse","Austrian Warmblood","Auvergne Horse","Auxois","Azerbaijan Horse","Azteca Horse","Baise Horse","Bale","Balearic Horse","Balikun Horse","Baluchi Horse","Banker Horse","Barb Horse","Bardigiano","Bashkir Curly","Basque Mountain Horse","Bavarian Warmblood","Belgian Half-blood","Belgian Horse","Belgian Warmblood ","Bhutia Horse","Black Forest Horse","Blazer Horse","Boerperd","Borana","Boulonnais Horse","Brabant","Brandenburger","Brazilian Sport Horse","Breton Horse","Brumby","Budyonny Horse","Burguete Horse","Burmese Horse","Byelorussian Harness Horse","Calabrese Horse","Camargue Horse","Camarillo White Horse","Campeiro","Campolina","Canadian Horse","Canadian Pacer","Carolina Marsh Tacky","Carthusian Horse","Caspian Horse","Castilian Horse","Castillonnais","Catria Horse","Cavallo Romano della Maremma Laziale","Cerbat Mustang","Chickasaw Horse","Chilean Corralero","Choctaw Horse","Cleveland Bay","Clydesdale Horse","Cob","Coldblood Trotter","Colonial Spanish Horse","Colorado Ranger","Comtois Horse","Corsican Horse","Costa Rican Saddle Horse","Cretan Horse","Criollo Horse","Croatian Coldblood","Cuban Criollo","Cumberland Island Horse","Curly Horse","Czech Warmblood","Daliboz","Danish Warmblood","Danube Delta Horse","Dole Gudbrandsdal","Don","Dongola Horse","Draft Trotter","Dutch Harness Horse","Dutch Heavy Draft","Dutch Warmblood","Dzungarian Horse","East Bulgarian","East Friesian Horse","Estonian Draft","Estonian Horse","Falabella","Faroese","Finnhorse","Fjord Horse","Fleuve","Florida Cracker Horse","Foutank\xE9","Frederiksborg Horse","Freiberger","French Trotter","Friesian Cross","Friesian Horse","Friesian Sporthorse","Furioso-North Star","Galice\xF1o","Galician Pony","Gelderland Horse","Georgian Grande Horse","German Warmblood","Giara Horse","Gidran","Groningen Horse","Gypsy Horse","Hackney Horse","Haflinger","Hanoverian Horse","Heck Horse","Heihe Horse","Henson Horse","Hequ Horse","Hirzai","Hispano-Bret\xF3n","Holsteiner Horse","Horro","Hungarian Warmblood","Icelandic Horse","Iomud","Irish Draught","Irish Sport Horse sometimes called Irish Hunter","Italian Heavy Draft","Italian Trotter","Jaca Navarra","Jeju Horse","Jutland Horse","Kabarda Horse","Kafa","Kaimanawa Horses","Kalmyk Horse","Karabair","Karabakh Horse","Karachai Horse","Karossier","Kathiawari","Kazakh Horse","Kentucky Mountain Saddle Horse","Kiger Mustang","Kinsky Horse","Kisber Felver","Kiso Horse","Kladruber","Knabstrupper","Konik","Kundudo","Kustanair","Kyrgyz Horse","Latvian Horse","Lipizzan","Lithuanian Heavy Draught","Lokai","Losino Horse","Lusitano","Lyngshest","M'Bayar","M'Par","Mallorqu\xEDn","Malopolski","Mangalarga","Mangalarga Marchador","Maremmano","Marisme\xF1o Horse","Marsh Tacky","Marwari Horse","Mecklenburger","Menorqu\xEDn","Messara Horse","Metis Trotter","Mez\u0151hegyesi Sport Horse","Me\u0111imurje Horse","Miniature Horse","Misaki Horse","Missouri Fox Trotter","Monchina","Mongolian Horse","Mongolian Wild Horse","Monterufolino","Morab","Morgan Horse","Mountain Pleasure Horse","Moyle Horse","Murakoz Horse","Murgese","Mustang Horse","M\xE9rens Horse","Namib Desert Horse","Nangchen Horse","National Show Horse","Nez Perce Horse","Nivernais Horse","Nokota Horse","Noma","Nonius Horse","Nooitgedachter","Nordlandshest","Noriker Horse","Norman Cob","North American Single-Footer Horse","North Swedish Horse","Norwegian Coldblood Trotter","Norwegian Fjord","Novokirghiz","Oberlander Horse","Ogaden","Oldenburg Horse","Orlov trotter","Ostfriesen","Paint","Pampa Horse","Paso Fino","Pentro Horse","Percheron","Persano Horse","Peruvian Paso","Pintabian","Pleven Horse","Poitevin Horse","Posavac Horse","Pottok","Pryor Mountain Mustang","Przewalski's Horse","Pura Raza Espa\xF1ola","Purosangue Orientale","Qatgani","Quarab","Quarter Horse","Racking Horse","Retuerta Horse","Rhenish German Coldblood","Rhinelander Horse","Riwoche Horse","Rocky Mountain Horse","Romanian Sporthorse","Rottaler","Russian Don","Russian Heavy Draft","Russian Trotter","Saddlebred","Salerno Horse","Samolaco Horse","San Fratello Horse","Sarcidano Horse","Sardinian Anglo-Arab","Schleswig Coldblood","Schwarzw\xE4lder Kaltblut","Selale","Sella Italiano","Selle Fran\xE7ais","Shagya Arabian","Shan Horse","Shire Horse","Siciliano Indigeno","Silesian Horse","Sokolsky Horse","Sorraia","South German Coldblood","Soviet Heavy Draft","Spanish Anglo-Arab","Spanish Barb","Spanish Jennet Horse","Spanish Mustang","Spanish Tarpan","Spanish-Norman Horse","Spiti Horse","Spotted Saddle Horse","Standardbred Horse","Suffolk Punch","Swedish Ardennes","Swedish Warmblood","Swedish coldblood trotter","Swiss Warmblood","Taish\u016B Horse","Takhi","Tawleed","Tchernomor","Tennessee Walking Horse","Tersk Horse","Thoroughbred","Tiger Horse","Tinker Horse","Tolfetano","Tori Horse","Trait Du Nord","Trakehner","Tsushima","Tuigpaard","Ukrainian Riding Horse","Unmol Horse","Uzunyayla","Ventasso Horse","Virginia Highlander","Vlaamperd","Vladimir Heavy Draft","Vyatka","Waler","Waler Horse","Walkaloosa","Warlander","Warmblood","Welsh Cob","Westphalian Horse","Wielkopolski","W\xFCrttemberger","Xilingol Horse","Yakutian Horse","Yili Horse","Yonaguni Horse","Zaniskari","Zhemaichu","Zweibr\xFCcker","\u017Demaitukas"];var h=["Acacia-ants","Acorn-plum gall","Aerial yellowjacket","Africanized honey bee","Allegheny mound ant","Almond stone wasp","Ant","Arboreal ant","Argentine ant","Asian paper wasp","Baldfaced hornet","Bee","Bigheaded ant","Black and yellow mud dauber","Black carpenter ant","Black imported fire ant","Blue horntail woodwasp","Blue orchard bee","Braconid wasp","Bumble bee","Carpenter ant","Carpenter wasp","Chalcid wasp","Cicada killer","Citrus blackfly parasitoid","Common paper wasp","Crazy ant","Cuckoo wasp","Cynipid gall wasp","Eastern Carpenter bee","Eastern yellowjacket","Elm sawfly","Encyrtid wasp","Erythrina gall wasp","Eulophid wasp","European hornet","European imported fire ant","False honey ant","Fire ant","Forest bachac","Forest yellowjacket","German yellowjacket","Ghost ant","Giant ichneumon wasp","Giant resin bee","Giant wood wasp","Golden northern bumble bee","Golden paper wasp","Gouty oak gall","Grass Carrying Wasp","Great black wasp","Great golden digger wasp","Hackberry nipple gall parasitoid","Honey bee","Horned oak gall","Horse guard wasp","Hunting wasp","Ichneumonid wasp","Keyhole wasp","Knopper gall","Large garden bumble bee","Large oak-apple gall","Leafcutting bee","Little fire ant","Little yellow ant","Long-horned bees","Long-legged ant","Macao paper wasp","Mallow bee","Marble gall","Mossyrose gall wasp","Mud-daubers","Multiflora rose seed chalcid","Oak apple gall wasp","Oak rough bulletgall wasp","Oak saucer gall","Oak shoot sawfly","Odorous house ant","Orange-tailed bumble bee","Orangetailed potter wasp","Oriental chestnut gall wasp","Paper wasp","Pavement ant","Pigeon tremex","Pip gall wasp","Prairie yellowjacket","Pteromalid wasp","Pyramid ant","Raspberry Horntail","Red ant","Red carpenter ant","Red harvester ant","Red imported fire ant","Red wasp","Red wood ant","Red-tailed wasp","Reddish carpenter ant","Rough harvester ant","Sawfly parasitic wasp","Scale parasitoid","Silky ant","Sirex woodwasp","Siricid woodwasp","Smaller yellow ant","Southeastern blueberry bee","Southern fire ant","Southern yellowjacket","Sphecid wasp","Stony gall","Sweat bee","Texas leafcutting ant","Tiphiid wasp","Torymid wasp","Tramp ant","Valentine ant","Velvet ant","Vespid wasp","Weevil parasitoid","Western harvester ant","Western paper wasp","Western thatching ant","Western yellowjacket","White-horned horntail","Willow shoot sawfly","Woodwasp","Wool sower gall maker","Yellow Crazy Ant","Yellow and black potter wasp","Yellow-horned horntail"];var y=["Asiatic Lion","Barbary Lion","Cape lion","Masai Lion","Northeast Congo Lion","Transvaal lion","West African Lion"];var p$1=["American","American Chinchilla","American Fuzzy Lop","American Sable","Argente Brun","Belgian Hare","Beveren","Blanc de Hotot","Britannia Petite","Californian","Champagne D\u2019Argent","Checkered Giant","Cinnamon","Cr\xE8me D\u2019Argent","Dutch","Dwarf Hotot","English Angora","English Lop","English Spot","Flemish Giant","Florida White","French Angora","French Lop","Giant Angora","Giant Chinchilla","Harlequin","Havana","Himalayan","Holland Lop","Jersey Wooly","Lilac","Lionhead","Mini Lop","Mini Rex","Mini Satin","Netherland Dwarf","New Zealand","Palomino","Polish","Rex","Rhinelander","Satin","Satin Angora","Silver","Silver Fox","Silver Marten","Standard Chinchilla","Tan","Thrianta"];var g=["Abrocoma","Abrocoma schistacea","Aconaemys","Aconaemys porteri","African brush-tailed porcupine","Andean mountain cavy","Argentine tuco-tuco","Ashy chinchilla rat","Asiatic brush-tailed porcupine","Atherurus","Azara's agouti","Azara's tuco-tuco","Bahia porcupine","Bathyergus","Bathyergus janetta","Bathyergus suillus","Bennett's chinchilla rat","Bicolored-spined porcupine","Black agouti","Black dwarf porcupine","Black-rumped agouti","Black-tailed hairy dwarf porcupine","Bolivian chinchilla rat","Bolivian tuco-tuco","Bonetto's tuco-tuco","Brandt's yellow-toothed cavy","Brazilian guinea pig","Brazilian porcupine","Brazilian tuco-tuco","Bridge's degu","Brown hairy dwarf porcupine","Budin's chinchilla rat, A. budini","Cape porcupine","Catamarca tuco-tuco","Cavia","Central American agouti","Chacoan tuco-tuco","Chilean rock rat","Chinchilla","Coendou","Coiban agouti","Colburn's tuco-tuco","Collared tuco-tuco","Common degu","Common yellow-toothed cavy","Conover's tuco-tuco","Coruro","Crested agouti","Crested porcupine","Cryptomys","Cryptomys bocagei","Cryptomys damarensis","Cryptomys foxi","Cryptomys hottentotus","Cryptomys mechowi","Cryptomys ochraceocinereus","Cryptomys zechi","Ctenomys","Cuniculus","Cuscomys","Cuscomys ashanika","Dactylomys","Dactylomys boliviensis","Dactylomys dactylinus","Dactylomys peruanus","Dasyprocta","Domestic guinea pig","Emily's tuco-tuco","Erethizon","Famatina chinchilla rat","Frosted hairy dwarf porcupine","Fukomys","Fukomys amatus","Fukomys anselli","Fukomys bocagei","Fukomys damarensis","Fukomys darlingi","Fukomys foxi","Fukomys ilariae","Fukomys kafuensis","Fukomys mechowii","Fukomys micklemi","Fukomys occlusus","Fukomys ochraceocinereus","Fukomys whytei","Fukomys zechi","Furtive tuco-tuco","Galea","Georychus","Georychus capensis","Golden viscacha-rat","Goya tuco-tuco","Greater guinea pig","Green acouchi","Haig's tuco-tuco","Heliophobius","Heliophobius argenteocinereus","Heterocephalus","Heterocephalus glaber","Highland tuco-tuco","Hystrix","Indian porcupine","Isla Mocha degu","Kalinowski agouti","Kannabateomys","Kannabateomys amblyonyx","Lagidium","Lagostomus","Lewis' tuco-tuco","Long-tailed chinchilla","Long-tailed porcupine","Los Chalchaleros' viscacha-rat","Lowland paca","Magellanic tuco-tuco","Malayan porcupine","Maule tuco-tuco","Mendoza tuco-tuco","Mexican agouti","Mexican hairy dwarf porcupine","Microcavia","Montane guinea pig","Moon-toothed degu","Mottled tuco-tuco","Mountain degu","Mountain paca","Mountain viscacha-rat","Myoprocta","Natterer's tuco-tuco","North American porcupine","Northern viscacha","Octodon","Octodontomys","Octomys","Olallamys","Olallamys albicauda","Olallamys edax","Orinoco agouti","Paraguaian hairy dwarf porcupine","Pearson's tuco-tuco","Peruvian tuco-tuco","Philippine porcupine","Pipanacoctomys","Plains viscacha","Plains viscacha-rat","Porteous' tuco-tuco","Punta de Vacas chinchilla rat","Red acouchi","Red-rumped agouti","Reddish tuco-tuco","Rio Negro tuco-tuco","Robust tuco-tuco","Roosmalen's dwarf porcupine","Rothschild's porcupine","Ruatan Island agouti","Sage's rock rat","Salinoctomys","Salta tuco-tuco","San Luis tuco-tuco","Santa Catarina's guinea pig","Shiny guinea pig","Shipton's mountain cavy","Short-tailed chinchilla","Silky tuco-tuco","Social tuco-tuco","Southern mountain cavy","Southern tuco-tuco","Southern viscacha","Spalacopus","Spix's yellow-toothed cavy","Steinbach's tuco-tuco","Streaked dwarf porcupine","Strong tuco-tuco","Stump-tailed porcupine","Sumatran porcupine","Sunda porcupine","Talas tuco-tuco","Tawny tuco-tuco","Thick-spined porcupine","Tiny tuco-tuco","Trichys","Tucuman tuco-tuco","Tympanoctomys","Uspallata chinchilla rat","White-toothed tuco-tuco","Wolffsohn's viscacha"];var b=["Abaco Island boa","Aesculapian snake","African beaked snake","African puff adder","African rock python","African twig snake","African wolf snake","Amazon tree boa","Amazonian palm viper","American Vine Snake","American copperhead","Amethystine python","Anaconda","Andaman cat snake","Andaman cobra","Angolan python","Annulated sea snake","Arabian cobra","Arafura file snake","Arizona black rattlesnake","Arizona coral snake","Aruba rattlesnake","Asian Vine Snake, Whip Snake","Asian cobra","Asian keelback","Asian pipe snake","Asp","Asp viper","Assam keelback","Australian copperhead","Australian scrub python","Baird's rat snake","Baja California lyresnake","Ball Python","Ball python","Bamboo pitviper","Bamboo viper","Banded Flying Snake","Banded cat-eyed snake","Banded krait","Banded pitviper","Banded water cobra","Barbour's pit viper","Barred wolf snake","Beaked sea snake","Beauty rat snake","Beddome's cat snake","Beddome's coral snake","Bimini racer","Bird snake","Bismarck ringed python","Black headed python","Black krait","Black mamba","Black rat snake","Black snake","Black tree cobra","Black-banded trinket snake","Black-headed snake","Black-necked cobra","Black-necked spitting cobra","Black-speckled palm-pitviper","Black-striped keelback","Black-tailed horned pit viper","Blanding's tree snake","Blind snake","Blonde hognose snake","Blood python","Blue krait","Blunt-headed tree snake","Bluntnose viper","Boa","Boa constrictor","Bocourt's water snake","Boelen python","Boiga","Bolivian anaconda","Boomslang","Bornean pitviper","Borneo short-tailed python","Brahminy blind snake","Brazilian coral snake","Brazilian mud Viper","Brazilian smooth snake","Bredl's python","Brongersma's pitviper","Brown snake","Brown spotted pitviper[4]","Brown tree snake","Brown water python","Brown white-lipped python","Buff striped keelback","Bull snake","Burmese keelback","Burmese krait","Burmese python","Burrowing cobra","Burrowing viper","Bush viper","Bushmaster","Buttermilk racer","Calabar python","California kingsnake","Canebrake","Cantil","Cantor's pitviper","Cape cobra","Cape coral snake","Cape gopher snake","Carpet viper","Cascabel","Caspian cobra","Cat snake","Cat-eyed night snake","Cat-eyed snake","Central American lyre snake","Central ranges taipan","Centralian carpet python","Ceylon krait","Chappell Island tiger snake","Checkered garter snake","Checkered keelback","Chicken snake","Chihuahuan ridge-nosed rattlesnake","Children's python","Chinese tree viper","Coachwhip snake","Coastal carpet python","Coastal taipan","Cobra","Collett's snake","Colorado desert sidewinder","Common adder","Common cobra","Common garter snake","Common ground snake","Common keelback","Common lancehead","Common tiger snake","Common worm snake","Congo snake","Congo water cobra","Copperhead","Coral snake","Corn snake","Coronado Island rattlesnake","Cottonmouth","Crossed viper","Crowned snake","Cuban boa","Cuban wood snake","Cyclades blunt-nosed viper","Dauan Island water python","De Schauensee's anaconda","Death Adder","Desert death adder","Desert kingsnake","Desert woma python","Diamond python","Dog-toothed cat snake","Down's tiger snake","Dubois's sea snake","Dumeril's boa","Durango rock rattlesnake","Dusky pigmy rattlesnake","Dusty hognose snake","Dwarf beaked snake","Dwarf boa","Dwarf pipe snake","Dwarf sand adder","Eastern brown snake","Eastern coral snake","Eastern diamondback rattlesnake","Eastern green mamba","Eastern hognose snake","Eastern lyre snake","Eastern mud snake","Eastern racer","Eastern tiger snake","Eastern water cobra","Eastern yellowbelly sad racer","Egg-eater","Egyptian asp","Egyptian cobra","Elegant pitviper","Emerald tree boa","Equatorial spitting cobra","European asp","European smooth snake","Eyelash palm-pitviper","Eyelash pit viper","Eyelash viper","False cobra","False horned viper","False water cobra","Fan-Si-Pan horned pitviper","Fea's viper","Fer-de-lance","Fierce snake","Fifty pacer","Fishing snake","Flat-nosed pitviper","Flinders python","Flying snake","Forest cobra","Forest flame snake","Forsten's cat snake","Fox snake, three species of Pantherophis","Gaboon viper","Garter snake","Giant Malagasy hognose snake","Godman's pit viper","Gold tree cobra","Gold-ringed cat snake","Golden tree snake","Grand Canyon rattlesnake","Grass snake","Gray cat snake","Great Basin rattlesnake","Great Lakes bush viper","Great Plains rat snake","Green anaconda","Green cat-eyed snake","Green mamba","Green palm viper","Green rat snake","Green snake","Green tree pit viper","Green tree python","Grey Lora","Grey-banded kingsnake","Ground snake","Guatemalan palm viper","Guatemalan tree viper","Habu","Habu pit viper","Hagen's pitviper","Hairy bush viper","Halmahera python","Hardwicke's sea snake","Harlequin coral snake","High Woods coral snake","Hill keelback","Himalayan keelback","Hogg Island boa","Hognose snake","Hognosed viper","Honduran palm viper","Hook Nosed Sea Snake","Hopi rattlesnake","Horned adder","Horned desert viper","Horned viper","Horseshoe pitviper","Hundred pacer","Hutton's tree viper","Ikaheka snake","Indian cobra","Indian flying snake","Indian krait","Indian python","Indian tree viper","Indigo snake","Indochinese spitting cobra","Indonesian water python","Inland carpet python","Inland taipan","Jamaican Tree Snake","Jamaican boa","Jan's hognose snake","Japanese forest rat snake","Japanese rat snake","Japanese striped snake","Javan spitting cobra","Jerdon's pitviper","Jumping viper","Jungle carpet python","Kanburian pit viper","Kaulback's lance-headed pitviper","Kayaudi dwarf reticulated python","Kaznakov's viper","Keelback","Kham Plateau pitviper","Khasi Hills keelback","King Island tiger snake","King brown","King cobra","King rat snake","King snake","Krait","Krefft's tiger snake","Lance-headed rattlesnake","Lancehead","Large shield snake","Large-eyed pitviper","Large-scaled tree viper","Leaf viper","Leaf-nosed viper","Lesser black krait","Levant viper","Long-nosed adder","Long-nosed tree snake","Long-nosed viper","Long-nosed whip snake","Long-tailed rattlesnake","Longnosed worm snake","Lora","Lyre snake","Machete savane","Macklot's python","Madagascar ground boa","Madagascar tree boa","Malabar rock pitviper","Malayan krait","Malayan long-glanded coral snake","Malayan pit viper","Malcolm's tree viper","Mamba","Mamushi","Manchurian Black Water Snake","Mandalay cobra","Mandarin rat snake","Mangrove pit viper","Mangrove snake","Mangshan pitviper","Many-banded krait","Many-banded tree snake","Many-horned adder","Many-spotted cat snake","Massasauga rattlesnake","McMahon's viper","Mexican black kingsnake","Mexican green rattlesnake","Mexican hognose snake","Mexican palm-pitviper","Mexican parrot snake","Mexican racer","Mexican vine snake","Mexican west coast rattlesnake","Midget faded rattlesnake","Milk snake","Moccasin snake","Modest keelback","Mojave desert sidewinder","Mojave rattlesnake","Mole viper","Mollucan python","Moluccan flying snake","Montpellier snake","Motuo bamboo pitviper","Mountain adder","Mozambique spitting cobra","Mud adder","Mud snake","Mussurana","Namaqua dwarf adder","Namib dwarf sand adder","Narrowhead Garter Snake","New Guinea carpet python","Nichell snake","Nicobar Island keelback","Nicobar bamboo pitviper","Night snake","Nightingale adder","Nilgiri keelback","Nitsche's bush viper","Nitsche's tree viper","North Philippine cobra","North eastern king snake","Northeastern hill krait","Northern black-tailed rattlesnake","Northern tree snake","Northern water snake","Northern white-lipped python","Northwestern carpet python","Nose-horned viper","Nubian spitting cobra","Oaxacan small-headed rattlesnake","Oenpelli python","Olive python","Olive sea snake","Orange-collared keelback","Ornate flying snake","Palestine viper","Pallas' viper","Palm viper","Papuan python","Paradise flying snake","Parrot snake","Patchnose snake","Paupan taipan","Pelagic sea snake","Peninsula tiger snake","Peringuey's adder","Perrotet's shieldtail snake","Persian rat snake","Philippine cobra","Philippine pitviper","Pine snake","Pipe snake","Pit viper","Pointed-scaled pit viper[5]","Pope's tree viper","Portuguese viper","Prairie kingsnake","Puerto Rican boa","Puff adder","Pygmy python","Python","Queen snake","Racer","Raddysnake","Rainbow boa","Rat snake","Rattler","Rattlesnake","Red blood python","Red diamond rattlesnake","Red spitting cobra","Red-backed rat snake","Red-bellied black snake","Red-headed krait","Red-necked keelback","Red-tailed bamboo pitviper","Red-tailed boa","Red-tailed pipe snake","Reticulated python","Rhinoceros viper","Rhombic night adder","Ribbon snake","Rinkhals","Rinkhals cobra","River jack","Rosy boa","Rough green snake","Rough-scaled bush viper","Rough-scaled python","Rough-scaled tree viper","Royal python","Rubber boa","Rufous beaked snake","Rungwe tree viper","San Francisco garter snake","Sand adder","Sand boa","Savu python","Saw-scaled viper","Scarlet kingsnake","Schlegel's viper","Schultze's pitviper","Sea snake","Sedge viper","Selayer reticulated python","Sharp-nosed viper","Shield-nosed cobra","Shield-tailed snake","Siamese palm viper","Side-striped palm-pitviper","Sidewinder","Sikkim keelback","Sinai desert cobra","Sind krait","Small-eyed snake","Smooth green snake","Smooth snake","Snorkel viper","Snouted cobra","Sonoran sidewinder","South American hognose snake","South eastern corn snake","Southern Indonesian spitting cobra","Southern Pacific rattlesnake","Southern Philippine cobra","Southern black racer","Southern white-lipped python","Southwestern black spitting cobra","Southwestern blackhead snake","Southwestern carpet python","Southwestern speckled rattlesnake","Speckle-bellied keelback","Speckled kingsnake","Spectacled cobra","Spiny bush viper","Spitting cobra","Spotted python","Sri Lankan pit viper","Stejneger's bamboo pitviper","Stiletto snake","Stimson's python","Stoke's sea snake","Storm water cobra","Striped snake","Sumatran short-tailed python","Sumatran tree viper","Sunbeam snake","Taipan","Taiwan cobra","Tan racer","Tancitaran dusky rattlesnake","Tanimbar python","Tasmanian tiger snake","Tawny cat snake","Temple pit viper","Temple viper","Tentacled snake","Texas Coral Snake","Texas blind snake","Texas garter snake","Texas lyre snake","Texas night snake","Thai cobra","Three-lined ground snake","Tibetan bamboo pitviper","Tic polonga","Tiger pit viper","Tiger rattlesnake","Tiger snake","Tigre snake","Timber rattlesnake","Timor python","Titanboa","Tree boa","Tree snake","Tree viper","Trinket snake","Tropical rattlesnake","Twig snake","Twin Headed King Snake","Twin-Barred tree snake","Twin-spotted rat snake","Twin-spotted rattlesnake","Undulated pit viper","Uracoan rattlesnake","Ursini's viper","Urutu","Vine snake","Viper","Viper Adder","Vipera ammodytes","Wagler's pit viper","Wart snake","Water adder","Water moccasin","Water snake","West Indian racer","Western blind snake","Western carpet python","Western coral snake","Western diamondback rattlesnake","Western green mamba","Western ground snake","Western hog-nosed viper","Western mud snake","Western tiger snake","Western woma python","Wetar Island python","Whip snake","White-lipped keelback","White-lipped python","White-lipped tree viper","Wirot's pit viper","Wolf snake","Woma python","Worm snake","Wutu","Wynaad keelback","Yarara","Yellow anaconda","Yellow-banded sea snake","Yellow-bellied sea snake","Yellow-lined palm viper","Yellow-lipped sea snake","Yellow-striped rat snake","Yunnan keelback","Zebra snake","Zebra spitting cobra"];var S=["bat","bear","bee","bird","butterfly","cat","cow","crocodile","deer","dog","dolphin","eagle","elephant","fish","flamingo","fox","frog","gecko","giraffe","gorilla","hamster","hippopotamus","horse","kangaroo","koala","lion","monkey","ostrich","panda","parrot","peacock","penguin","polar bear","rabbit","rhinoceros","sea lion","shark","snake","squirrel","tiger","turtle","whale","wolf","zebra"];var Ia={bear:n,bird:i,cat:t,cetacean:l,cow:s,crocodilia:d,dog:u,fish:c,horse:m$1,insect:h,lion:y,rabbit:p$1,rodent:g,snake:b,type:S},k=Ia;var C$1=["{{person.name}}","{{company.name}}"];var f$1=["Redhold","Treeflex","Trippledex","Kanlam","Bigtax","Daltfresh","Toughjoyfax","Mat Lam Tam","Otcom","Tres-Zap","Y-Solowarm","Tresom","Voltsillam","Biodex","Greenlam","Viva","Matsoft","Temp","Zoolab","Subin","Rank","Job","Stringtough","Tin","It","Home Ing","Zamit","Sonsing","Konklab","Alpha","Latlux","Voyatouch","Alphazap","Holdlamis","Zaam-Dox","Sub-Ex","Quo Lux","Bamity","Ventosanzap","Lotstring","Hatity","Tempsoft","Overhold","Fixflex","Konklux","Zontrax","Tampflex","Span","Namfix","Transcof","Stim","Fix San","Sonair","Stronghold","Fintone","Y-find","Opela","Lotlux","Ronstring","Zathin","Duobam","Keylex"];var v$1=["0.#.#","0.##","#.##","#.#","#.#.#"];var Ka={author:C$1,name:f$1,version:v$1},A=Ka;var B$1=["###-###-####","(###) ###-####","1-###-###-####","###.###.####"];var Oa={formats:B$1},w$1=Oa;var M$1=["azure","black","blue","cyan","fuchsia","gold","green","grey","indigo","ivory","lavender","lime","magenta","maroon","mint green","olive","orange","orchid","pink","plum","purple","red","salmon","silver","sky blue","tan","teal","turquoise","violet","white","yellow"];var xa={human:M$1},T=xa;var L$1=["Automotive","Baby","Beauty","Books","Clothing","Computers","Electronics","Games","Garden","Grocery","Health","Home","Industrial","Jewelry","Kids","Movies","Music","Outdoors","Shoes","Sports","Tools","Toys"];var D$1=["Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals","Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles","Carbonite web goalkeeper gloves are ergonomically designed to give easy fit","Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support","New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016","New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart","The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design","The Football Is Good For Training And Recreational Purposes","The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J","The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive","The beautiful range of Apple Natural\xE9 that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients","The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality"];var R$1={adjective:["Awesome","Bespoke","Electronic","Elegant","Ergonomic","Fantastic","Generic","Gorgeous","Handcrafted","Handmade","Incredible","Intelligent","Licensed","Luxurious","Modern","Oriental","Practical","Recycled","Refined","Rustic","Sleek","Small","Tasty","Unbranded"],material:["Bronze","Concrete","Cotton","Fresh","Frozen","Granite","Metal","Plastic","Rubber","Soft","Steel","Wooden"],product:["Bacon","Ball","Bike","Car","Chair","Cheese","Chicken","Chips","Computer","Fish","Gloves","Hat","Keyboard","Mouse","Pants","Pizza","Salad","Sausages","Shirt","Shoes","Soap","Table","Towels","Tuna"]};var za={department:L$1,product_description:D$1,product_name:R$1},H$1=za;var P=["Adaptive","Advanced","Ameliorated","Assimilated","Automated","Balanced","Business-focused","Centralized","Cloned","Compatible","Configurable","Cross-group","Cross-platform","Customer-focused","Customizable","De-engineered","Decentralized","Devolved","Digitized","Distributed","Diverse","Down-sized","Enhanced","Enterprise-wide","Ergonomic","Exclusive","Expanded","Extended","Face to face","Focused","Front-line","Fully-configurable","Function-based","Fundamental","Future-proofed","Grass-roots","Horizontal","Implemented","Innovative","Integrated","Intuitive","Inverse","Managed","Mandatory","Monitored","Multi-channelled","Multi-lateral","Multi-layered","Multi-tiered","Networked","Object-based","Open-architected","Open-source","Operative","Optimized","Optional","Organic","Organized","Persevering","Persistent","Phased","Polarised","Pre-emptive","Proactive","Profit-focused","Profound","Programmable","Progressive","Public-key","Quality-focused","Re-contextualized","Re-engineered","Reactive","Realigned","Reduced","Reverse-engineered","Right-sized","Robust","Seamless","Secured","Self-enabling","Sharable","Stand-alone","Streamlined","Switchable","Synchronised","Synergistic","Synergized","Team-oriented","Total","Triple-buffered","Universal","Up-sized","Upgradable","User-centric","User-friendly","Versatile","Virtual","Vision-oriented","Visionary"];var W$1=["24/365","24/7","B2B","B2C","back-end","best-of-breed","bleeding-edge","bricks-and-clicks","clicks-and-mortar","collaborative","compelling","cross-media","cross-platform","customized","cutting-edge","distributed","dot-com","dynamic","e-business","efficient","end-to-end","enterprise","extensible","frictionless","front-end","global","granular","holistic","impactful","innovative","integrated","interactive","intuitive","killer","leading-edge","magnetic","mission-critical","next-generation","one-to-one","open-source","out-of-the-box","plug-and-play","proactive","real-time","revolutionary","rich","robust","scalable","seamless","sexy","sticky","strategic","synergistic","transparent","turn-key","ubiquitous","user-centric","value-added","vertical","viral","virtual","visionary","web-enabled","wireless","world-class"];var G$1=["ROI","action-items","applications","architectures","bandwidth","blockchains","channels","communities","content","convergence","deliverables","e-business","e-commerce","e-markets","experiences","eyeballs","functionalities","infrastructures","initiatives","interfaces","lifetime value","markets","methodologies","metrics","mindshare","models","networks","niches","paradigms","partnerships","platforms","portals","relationships","schemas","solutions","supply-chains","synergies","systems","technologies","users","web services"];var N$1=["aggregate","architect","benchmark","brand","cultivate","deliver","deploy","disintermediate","drive","e-enable","embrace","empower","enable","engage","engineer","enhance","envisioneer","evolve","expedite","exploit","extend","facilitate","generate","grow","harness","implement","incentivize","incubate","innovate","integrate","iterate","leverage","matrix","maximize","mesh","monetize","morph","optimize","orchestrate","productize","recontextualize","redefine","reintermediate","reinvent","repurpose","revolutionize","scale","seize","strategize","streamline","syndicate","synergize","synthesize","target","transform","transition","unleash","utilize","visualize","whiteboard"];var E$1=["24 hour","24/7","3rd generation","4th generation","5th generation","6th generation","actuating","analyzing","asymmetric","asynchronous","attitude-oriented","background","bandwidth-monitored","bi-directional","bifurcated","bottom-line","clear-thinking","client-driven","client-server","coherent","cohesive","composite","content-based","context-sensitive","contextually-based","dedicated","demand-driven","didactic","directional","discrete","disintermediate","dynamic","eco-centric","empowering","encompassing","even-keeled","executive","explicit","exuding","fault-tolerant","foreground","fresh-thinking","full-range","global","grid-enabled","heuristic","high-level","holistic","homogeneous","human-resource","hybrid","impactful","incremental","intangible","interactive","intermediate","leading edge","local","logistical","maximized","methodical","mission-critical","mobile","modular","motivating","multi-state","multi-tasking","multimedia","national","needs-based","neutral","next generation","non-volatile","object-oriented","optimal","optimizing","radical","real-time","reciprocal","regional","responsive","scalable","secondary","solution-oriented","stable","static","system-worthy","systematic","systemic","tangible","tertiary","transitional","uniform","upward-trending","user-facing","value-added","web-enabled","well-modulated","zero administration","zero defect","zero tolerance"];var F$1=["Group","Inc","LLC","and Sons"];var J$1=["{{person.last_name.generic}} - {{person.last_name.generic}}","{{person.last_name.generic}} {{company.legal_entity_type}}","{{person.last_name.generic}}, {{person.last_name.generic}} and {{person.last_name.generic}}"];var I$1=["Graphic Interface","Graphical User Interface","ability","access","adapter","algorithm","alliance","analyzer","application","approach","architecture","archive","array","artificial intelligence","attitude","benchmark","budgetary management","capability","capacity","challenge","circuit","collaboration","complexity","concept","conglomeration","contingency","core","customer loyalty","data-warehouse","database","definition","emulation","encoding","encryption","extranet","firmware","flexibility","focus group","forecast","frame","framework","function","functionalities","groupware","hardware","help-desk","hierarchy","hub","implementation","info-mediaries","infrastructure","initiative","installation","instruction set","interface","internet solution","intranet","knowledge base","knowledge user","leverage","local area network","matrices","matrix","methodology","middleware","migration","model","moderator","monitoring","moratorium","neural-net","open architecture","open system","orchestration","paradigm","parallelism","policy","portal","pricing structure","process improvement","product","productivity","project","projection","protocol","secured line","service-desk","software","solution","standardization","strategy","structure","success","superstructure","support","synergy","system engine","task-force","throughput","time-frame","toolset","utilisation","website","workforce"];var Va={adjective:P,buzz_adjective:W$1,buzz_noun:G$1,buzz_verb:N$1,descriptor:E$1,legal_entity_type:F$1,name_pattern:J$1,noun:I$1},K$1=Va;var O$1=["avatar","category","comment","createdAt","email","group","id","name","password","phone","status","title","token","updatedAt"];var Ya={column:O$1},x$1=Ya;var z$1={wide:["April","August","December","February","January","July","June","March","May","November","October","September"],abbr:["Apr","Aug","Dec","Feb","Jan","Jul","Jun","Mar","May","Nov","Oct","Sep"]};var V$1={wide:["Friday","Monday","Saturday","Sunday","Thursday","Tuesday","Wednesday"],abbr:["Fri","Mon","Sat","Sun","Thu","Tue","Wed"]};var ja={month:z$1,weekday:V$1},Y$1=ja;var j$1=["Auto Loan","Checking","Credit Card","Home Loan","Investment","Money Market","Personal Loan","Savings"];var q$1=["34##-######-####L","37##-######-####L"];var U$1=["30[0-5]#-######-###L","36##-######-###L","54##-####-####-###L"];var Z$1=["6011-####-####-###L","6011-62##-####-####-###L","64[4-9]#-####-####-###L","64[4-9]#-62##-####-####-###L","65##-####-####-###L","65##-62##-####-####-###L"];var _$1=["3528-####-####-###L","3529-####-####-###L","35[3-8]#-####-####-###L"];var Q$1=["2[221-720]-####-####-###L","5[1-5]##-####-####-###L"];var X$1=["4###########L","4###-####-####-###L"];var qa={american_express:q$1,diners_club:U$1,discover:Z$1,jcb:_$1,mastercard:Q$1,visa:X$1},$$1=qa;var ee$1=[{name:"UAE Dirham",code:"AED",symbol:""},{name:"Afghani",code:"AFN",symbol:"\u060B"},{name:"Lek",code:"ALL",symbol:"Lek"},{name:"Armenian Dram",code:"AMD",symbol:""},{name:"Netherlands Antillian Guilder",code:"ANG",symbol:"\u0192"},{name:"Kwanza",code:"AOA",symbol:""},{name:"Argentine Peso",code:"ARS",symbol:"$"},{name:"Australian Dollar",code:"AUD",symbol:"$"},{name:"Aruban Guilder",code:"AWG",symbol:"\u0192"},{name:"Azerbaijanian Manat",code:"AZN",symbol:"\u043C\u0430\u043D"},{name:"Convertible Marks",code:"BAM",symbol:"KM"},{name:"Barbados Dollar",code:"BBD",symbol:"$"},{name:"Taka",code:"BDT",symbol:""},{name:"Bulgarian Lev",code:"BGN",symbol:"\u043B\u0432"},{name:"Bahraini Dinar",code:"BHD",symbol:""},{name:"Burundi Franc",code:"BIF",symbol:""},{name:"Bermudian Dollar (customarily known as Bermuda Dollar)",code:"BMD",symbol:"$"},{name:"Brunei Dollar",code:"BND",symbol:"$"},{name:"Boliviano boliviano",code:"BOB",symbol:"Bs"},{name:"Brazilian Real",code:"BRL",symbol:"R$"},{name:"Bahamian Dollar",code:"BSD",symbol:"$"},{name:"Pula",code:"BWP",symbol:"P"},{name:"Belarusian Ruble",code:"BYN",symbol:"Rbl"},{name:"Belize Dollar",code:"BZD",symbol:"BZ$"},{name:"Canadian Dollar",code:"CAD",symbol:"$"},{name:"Congolese Franc",code:"CDF",symbol:""},{name:"Swiss Franc",code:"CHF",symbol:"CHF"},{name:"Chilean Peso",code:"CLP",symbol:"$"},{name:"Yuan Renminbi",code:"CNY",symbol:"\xA5"},{name:"Colombian Peso",code:"COP",symbol:"$"},{name:"Costa Rican Colon",code:"CRC",symbol:"\u20A1"},{name:"Cuban Peso",code:"CUP",symbol:"\u20B1"},{name:"Cape Verde Escudo",code:"CVE",symbol:""},{name:"Czech Koruna",code:"CZK",symbol:"K\u010D"},{name:"Djibouti Franc",code:"DJF",symbol:""},{name:"Danish Krone",code:"DKK",symbol:"kr"},{name:"Dominican Peso",code:"DOP",symbol:"RD$"},{name:"Algerian Dinar",code:"DZD",symbol:""},{name:"Egyptian Pound",code:"EGP",symbol:"\xA3"},{name:"Nakfa",code:"ERN",symbol:""},{name:"Ethiopian Birr",code:"ETB",symbol:""},{name:"Euro",code:"EUR",symbol:"\u20AC"},{name:"Fiji Dollar",code:"FJD",symbol:"$"},{name:"Falkland Islands Pound",code:"FKP",symbol:"\xA3"},{name:"Pound Sterling",code:"GBP",symbol:"\xA3"},{name:"Lari",code:"GEL",symbol:""},{name:"Cedi",code:"GHS",symbol:""},{name:"Gibraltar Pound",code:"GIP",symbol:"\xA3"},{name:"Dalasi",code:"GMD",symbol:""},{name:"Guinea Franc",code:"GNF",symbol:""},{name:"Quetzal",code:"GTQ",symbol:"Q"},{name:"Guyana Dollar",code:"GYD",symbol:"$"},{name:"Hong Kong Dollar",code:"HKD",symbol:"$"},{name:"Lempira",code:"HNL",symbol:"L"},{name:"Gourde",code:"HTG",symbol:""},{name:"Forint",code:"HUF",symbol:"Ft"},{name:"Rupiah",code:"IDR",symbol:"Rp"},{name:"New Israeli Sheqel",code:"ILS",symbol:"\u20AA"},{name:"Bhutanese Ngultrum",code:"BTN",symbol:"Nu"},{name:"Indian Rupee",code:"INR",symbol:"\u20B9"},{name:"Iraqi Dinar",code:"IQD",symbol:""},{name:"Iranian Rial",code:"IRR",symbol:"\uFDFC"},{name:"Iceland Krona",code:"ISK",symbol:"kr"},{name:"Jamaican Dollar",code:"JMD",symbol:"J$"},{name:"Jordanian Dinar",code:"JOD",symbol:""},{name:"Yen",code:"JPY",symbol:"\xA5"},{name:"Kenyan Shilling",code:"KES",symbol:""},{name:"Som",code:"KGS",symbol:"\u043B\u0432"},{name:"Riel",code:"KHR",symbol:"\u17DB"},{name:"Comoro Franc",code:"KMF",symbol:""},{name:"North Korean Won",code:"KPW",symbol:"\u20A9"},{name:"Won",code:"KRW",symbol:"\u20A9"},{name:"Kuwaiti Dinar",code:"KWD",symbol:""},{name:"Cayman Islands Dollar",code:"KYD",symbol:"$"},{name:"Tenge",code:"KZT",symbol:"\u043B\u0432"},{name:"Kip",code:"LAK",symbol:"\u20AD"},{name:"Lebanese Pound",code:"LBP",symbol:"\xA3"},{name:"Sri Lanka Rupee",code:"LKR",symbol:"\u20A8"},{name:"Liberian Dollar",code:"LRD",symbol:"$"},{name:"Libyan Dinar",code:"LYD",symbol:""},{name:"Moroccan Dirham",code:"MAD",symbol:""},{name:"Moldovan Leu",code:"MDL",symbol:""},{name:"Malagasy Ariary",code:"MGA",symbol:""},{name:"Denar",code:"MKD",symbol:"\u0434\u0435\u043D"},{name:"Kyat",code:"MMK",symbol:""},{name:"Tugrik",code:"MNT",symbol:"\u20AE"},{name:"Pataca",code:"MOP",symbol:""},{name:"Ouguiya",code:"MRU",symbol:""},{name:"Mauritius Rupee",code:"MUR",symbol:"\u20A8"},{name:"Rufiyaa",code:"MVR",symbol:""},{name:"Kwacha",code:"MWK",symbol:""},{name:"Mexican Peso",code:"MXN",symbol:"$"},{name:"Malaysian Ringgit",code:"MYR",symbol:"RM"},{name:"Metical",code:"MZN",symbol:"MT"},{name:"Naira",code:"NGN",symbol:"\u20A6"},{name:"Cordoba Oro",code:"NIO",symbol:"C$"},{name:"Norwegian Krone",code:"NOK",symbol:"kr"},{name:"Nepalese Rupee",code:"NPR",symbol:"\u20A8"},{name:"New Zealand Dollar",code:"NZD",symbol:"$"},{name:"Rial Omani",code:"OMR",symbol:"\uFDFC"},{name:"Balboa",code:"PAB",symbol:"B/."},{name:"Nuevo Sol",code:"PEN",symbol:"S/."},{name:"Kina",code:"PGK",symbol:""},{name:"Philippine Peso",code:"PHP",symbol:"Php"},{name:"Pakistan Rupee",code:"PKR",symbol:"\u20A8"},{name:"Zloty",code:"PLN",symbol:"z\u0142"},{name:"Guarani",code:"PYG",symbol:"Gs"},{name:"Qatari Rial",code:"QAR",symbol:"\uFDFC"},{name:"New Leu",code:"RON",symbol:"lei"},{name:"Serbian Dinar",code:"RSD",symbol:"\u0414\u0438\u043D."},{name:"Russian Ruble",code:"RUB",symbol:"\u0440\u0443\u0431"},{name:"Rwanda Franc",code:"RWF",symbol:""},{name:"Saudi Riyal",code:"SAR",symbol:"\uFDFC"},{name:"Solomon Islands Dollar",code:"SBD",symbol:"$"},{name:"Seychelles Rupee",code:"SCR",symbol:"\u20A8"},{name:"Sudanese Pound",code:"SDG",symbol:""},{name:"Swedish Krona",code:"SEK",symbol:"kr"},{name:"Singapore Dollar",code:"SGD",symbol:"$"},{name:"Saint Helena Pound",code:"SHP",symbol:"\xA3"},{name:"Leone",code:"SLE",symbol:""},{name:"Somali Shilling",code:"SOS",symbol:"S"},{name:"Surinam Dollar",code:"SRD",symbol:"$"},{name:"South Sudanese pound",code:"SSP",symbol:""},{name:"Dobra",code:"STN",symbol:"Db"},{name:"Syrian Pound",code:"SYP",symbol:"\xA3"},{name:"Lilangeni",code:"SZL",symbol:""},{name:"Baht",code:"THB",symbol:"\u0E3F"},{name:"Somoni",code:"TJS",symbol:""},{name:"Manat",code:"TMT",symbol:""},{name:"Tunisian Dinar",code:"TND",symbol:""},{name:"Pa'anga",code:"TOP",symbol:""},{name:"Turkish Lira",code:"TRY",symbol:"\u20BA"},{name:"Trinidad and Tobago Dollar",code:"TTD",symbol:"TT$"},{name:"New Taiwan Dollar",code:"TWD",symbol:"NT$"},{name:"Tanzanian Shilling",code:"TZS",symbol:""},{name:"Hryvnia",code:"UAH",symbol:"\u20B4"},{name:"Uganda Shilling",code:"UGX",symbol:""},{name:"US Dollar",code:"USD",symbol:"$"},{name:"Peso Uruguayo",code:"UYU",symbol:"$U"},{name:"Uzbekistan Sum",code:"UZS",symbol:"\u043B\u0432"},{name:"Venezuelan bol\xEDvar",code:"VES",symbol:"Bs"},{name:"Dong",code:"VND",symbol:"\u20AB"},{name:"Vatu",code:"VUV",symbol:""},{name:"Tala",code:"WST",symbol:""},{name:"CFA Franc BEAC",code:"XAF",symbol:""},{name:"East Caribbean Dollar",code:"XCD",symbol:"$"},{name:"CFA Franc BCEAO",code:"XOF",symbol:""},{name:"CFP Franc",code:"XPF",symbol:""},{name:"Yemeni Rial",code:"YER",symbol:"\uFDFC"},{name:"Rand",code:"ZAR",symbol:"R"},{name:"Lesotho Loti",code:"LSL",symbol:""},{name:"Namibia Dollar",code:"NAD",symbol:"N$"},{name:"Zambian Kwacha",code:"ZMW",symbol:"K"},{name:"Zimbabwe Dollar",code:"ZWL",symbol:""}];var ae$1=["deposit","invoice","payment","withdrawal"];var Ua={account_type:j$1,credit_card:$$1,currency:ee$1,transaction_type:ae$1},oe$1=Ua;var re$1=["bitter","creamy","crispy","crunchy","delicious","fluffy","fresh","golden","juicy","moist","rich","salty","savory","smoky","sour","spicy","sweet","tangy","tender","zesty"];var ne$1=["A classic pie filled with delicious {{food.meat}} and {{food.adjective}} {{food.ingredient}}, baked in a {{food.adjective}} pastry crust and topped with a golden-brown lattice.","A delightful tart combining {{food.adjective}} {{food.vegetable}} and sweet {{food.fruit}}, set in a buttery pastry shell and finished with a hint of {{food.spice}}.","A heartwarming {{food.ethnic_category}} soup, featuring fresh {{food.ingredient}} and an aromatic blend of traditional spices.","A robust {{food.adjective}} stew featuring {{food.ethnic_category}} flavors, loaded with {{food.adjective}} meat, {{food.adjective}} vegetables, and a {{food.adjective}}, {{food.adjective}} broth.","A simple {{food.fruit}} pie. No fancy stuff. Just pie.","A slow-roasted {{animal.bird}} with a {{food.adjective}}, {{food.adjective}} exterior. Stuffed with {{food.fruit}} and covered in {{food.fruit}} sauce. Sides with {{food.vegetable}} puree and wild {{food.vegetable}}.","A special {{color.human}} {{food.ingredient}} from {{location.country}}. To support the strong flavor it is sided with a tablespoon of {{food.spice}}.","A succulent {{food.meat}} steak, encased in a {{food.adjective}} {{food.spice}} crust, served with a side of {{food.spice}} mashed {{food.vegetable}}.","An exquisite {{food.meat}} roast, infused with the essence of {{food.fruit}}, slow-roasted to bring out its natural flavors and served with a side of creamy {{food.vegetable}}","Baked {{food.ingredient}}-stuffed {{food.meat}}, seasoned with {{food.spice}} and {{food.adjective}} herbs, accompanied by roasted {{food.vegetable}} medley.","Crispy fried {{food.meat}} bites, seasoned with {{food.spice}} and served with a tangy {{food.fruit}} dipping sauce.","Fresh mixed greens tossed with {{food.spice}}-rubbed {{food.meat}}, {{food.vegetable}}, and a light dressing.","Fresh {{food.ingredient}} with a pinch of {{food.spice}}, topped by a caramelized {{food.fruit}} with whipped cream","Grilled {{food.meat}} kebabs, marinated in {{food.ethnic_category}} spices and served with a fresh {{food.vegetable}} and {{food.fruit}} salad.","Hearty {{food.ingredient}} and {{food.meat}} stew, slow-cooked with {{food.spice}} and {{food.vegetable}} for a comforting, flavorful meal.","Juicy {{food.meat}}, grilled to your liking and drizzled with a bold {{food.spice}} sauce, served alongside roasted {{food.vegetable}}.","Our {{food.adjective}} {{food.meat}}, slow-cooked to perfection, accompanied by steamed {{food.vegetable}} and a rich, savory gravy.","Tender {{food.meat}} skewers, glazed with a sweet and tangy {{food.fruit}} sauce, served over a bed of fragrant jasmine rice.","Tenderly braised {{food.meat}} in a rich {{food.spice}} and {{food.vegetable}} sauce, served with a side of creamy {{food.vegetable}}.","Three {{food.ingredient}} with {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}} and {{food.ingredient}}. With a side of baked {{food.fruit}}, and your choice of {{food.ingredient}} or {{food.ingredient}}.",'{{number.int({"min":1, "max":99})}}-day aged {{food.meat}} steak, with choice of {{number.int({"min":2, "max":4})}} sides.'];var ie$1=["California maki","Peking duck","Philadelphia maki","arepas","barbecue ribs","bruschette with tomato","bunny chow","caesar salad","caprese salad","cauliflower penne","cheeseburger","chicken fajitas","chicken milanese","chicken parm","chicken wings","chilli con carne","ebiten maki","fettuccine alfredo","fish and chips","french fries with sausages","french toast","hummus","katsu curry","kebab","lasagne","linguine with clams","massaman curry","meatballs with sauce","mushroom risotto","pappardelle alla bolognese","pasta and beans","pasta carbonara","pasta with tomato and basil","pho","pierogi","pizza","poke","pork belly buns","pork sausage roll","poutine","ricotta stuffed ravioli","risotto with seafood","salmon nigiri","scotch eggs","seafood paella","som tam","souvlaki","stinky tofu","sushi","tacos","teriyaki chicken donburi","tiramis\xF9","tuna sashimi","vegetable soup"];var te$1=["{{food.adjective}} {{food.ethnic_category}} stew","{{food.adjective}} {{food.meat}} with {{food.vegetable}}","{{food.ethnic_category}} {{food.ingredient}} soup","{{food.fruit}} and {{food.fruit}} tart","{{food.fruit}} pie","{{food.fruit}}-glazed {{food.meat}} skewers","{{food.fruit}}-infused {{food.meat}} roast","{{food.ingredient}} and {{food.meat}} pie","{{food.ingredient}}-infused {{food.meat}}","{{food.meat}} steak","{{food.meat}} with {{food.fruit}} sauce","{{food.spice}}-crusted {{food.meat}}","{{food.spice}}-rubbed {{food.meat}} salad","{{food.vegetable}} salad","{{person.first_name.generic}}'s special {{food.ingredient}}"];var le$1=["Ainu","Albanian","American","Andhra","Anglo-Indian","Arab","Argentine","Armenian","Assyrian","Awadhi","Azerbaijani","Balochi","Bangladeshi","Bashkir","Belarusian","Bengali","Berber","Brazilian","British","Buddhist","Bulgarian","Cajun","Cantonese","Caribbean","Chechen","Chinese","Chinese Islamic","Circassian","Crimean Tatar","Cypriot","Czech","Danish","Egyptian","English","Eritrean","Estonian","Ethiopian","Filipino","French","Georgian","German","Goan","Goan Catholic","Greek","Gujarati","Hyderabad","Indian","Indian Chinese","Indian Singaporean","Indonesian","Inuit","Irish","Italian","Italian-American","Jamaican","Japanese","Jewish - Israeli","Karnataka","Kazakh","Keralite","Korean","Kurdish","Laotian","Latvian","Lebanese","Lithuanian","Louisiana Creole","Maharashtrian","Malay","Malaysian Chinese","Malaysian Indian","Mangalorean","Mediterranean","Mennonite","Mexican","Mordovian","Mughal","Native American","Nepalese","New Mexican","Odia","Pakistani","Parsi","Pashtun","Pennsylvania Dutch","Peranakan","Persian","Peruvian","Polish","Portuguese","Punjabi","Qu\xE9b\xE9cois","Rajasthani","Romani","Romanian","Russian","Sami","Serbian","Sindhi","Slovak","Slovenian","Somali","South Indian","Soviet","Spanish","Sri Lankan","Taiwanese","Tamil","Tatar","Texan","Thai","Turkish","Udupi","Ukrainian","Vietnamese","Yamal","Zambian","Zanzibari"];var se$1=["apple","apricot","aubergine","avocado","banana","berry","blackberry","blood orange","blueberry","bush tomato","butternut pumpkin","cantaloupe","cavalo","cherry","corella pear","cranberry","cumquat","currant","custard apple","custard apples daikon","date","dragonfruit","dried apricot","elderberry","feijoa","fig","fingerlime","goji berry","grape","grapefruit","guava","honeydew melon","incaberry","jarrahdale pumpkin","juniper berry","kiwi fruit","kiwiberry","lemon","lime","longan","loquat","lychee","mandarin","mango","mangosteen","melon","mulberry","nashi pear","nectarine","olive","orange","papaw","papaya","passionfruit","peach","pear","pineapple","plum","pomegranate","prune","rockmelon","snowpea","sprout","starfruit","strawberry","sultana","tangelo","tomato","watermelon"];var de=["achacha","adzuki beans","agar","agave syrup","ajowan seed","albacore tuna","alfalfa","allspice","almond oil","almonds","amaranth","amchur","anchovies","aniseed","annatto seed","apple cider vinegar","apple juice","apple juice concentrate","apples","apricots","arborio rice","arrowroot","artichoke","arugula","asafoetida","asian greens","asian noodles","asparagus","aubergine","avocado","avocado oil","avocado spread","bacon","baking powder","baking soda","balsamic vinegar","bamboo shoots","banana","barberry","barley","barramundi","basil basmati rice","bay leaves","bean shoots","bean sprouts","beans","beef","beef stock","beetroot","berries","besan","black eyed beans","blackberries","blood oranges","blue cheese","blue eye trevalla","blue swimmer crab","blueberries","bocconcini","bok choy","bonito flakes","bonza","borlotti beans","bran","brazil nut","bread","brie","broccoli","broccolini","brown flour","brown mushrooms","brown rice","brown rice vinegar","brussels sprouts","buckwheat","buckwheat flour","buckwheat noodles","bulghur","bush tomato","butter","butter beans","buttermilk","butternut lettuce","butternut pumpkin","cabbage","cacao","cake","calamari","camellia tea oil","camembert","camomile","candle nut","cannellini beans","canola oil","cantaloupe","capers","capsicum","caraway seed","cardamom","carob carrot","carrot","cashews","cassia bark","cauliflower","cavalo","cayenne","celery","celery seed","cheddar","cherries","chestnut","chia seeds","chicken","chicken stock","chickory","chickpea","chilli pepper","chinese cabbage","chinese five spice","chives","choy sum","cinnamon","clams","cloves","cocoa powder","coconut","coconut oil","coconut water","coffee","common cultivated mushrooms","corella pear","coriander leaves","coriander seed","corn oil","corn syrup","corn tortilla","cornichons","cornmeal","cos lettuce","cottage cheese","cous cous","crabs","cranberry","cream","cream cheese","cucumber","cumin","cumquat","currants","curry leaves","curry powder","custard apples","dandelion","dark chocolate","dashi","dates","dill","dragonfruit","dried apricots","dried chinese broccoli","duck","edam","edamame","eggplant","eggs","elderberry","endive","english spinach","enoki mushrooms","extra virgin olive oil","farmed prawns","feijoa","fennel","fennel seeds","fenugreek","feta","figs","file powder","fingerlime","fish sauce","fish stock","flat mushrooms","flathead","flaxseed","flaxseed oil","flounder","flour","freekeh","french eschallots","fresh chillies","fromage blanc","fruit","galangal","garam masala","garlic","goat cheese","goat milk","goji berry","grape seed oil","grapefruit","grapes","green beans","green pepper","green tea","green tea noodles","greenwheat freekeh","gruyere","guava","gula melaka","haloumi","ham","haricot beans","harissa","hazelnut","hijiki","hiramasa kingfish","hokkien noodles","honey","honeydew melon","horseradish","hot smoked salmon","hummus","iceberg lettuce","incaberries","jarrahdale pumpkin","jasmine rice","jelly","jerusalem artichoke","jewfish","jicama","juniper berries","kale","kangaroo","kecap manis","kenchur","kidney beans","kidneys","kiwi berries","kiwi fruit","kohlrabi","kokam","kombu","koshihikari rice","kudzu","kumera","lamb","lavender flowers","leeks","lemon","lemongrass","lentils","lettuce","licorice","lime leaves","limes","liver","lobster","longan","loquats","lotus root","lychees","macadamia nut","macadamia oil","mace","mackerel","mahi mahi","mahlab","malt vinegar","mandarins","mango","mangosteens","maple syrup","margarine","marigold","marjoram","mastic","melon","milk","milk chocolate","mint","miso","molasses","monkfish","morwong","mountain bread","mozzarella","muesli","mulberries","mullet","mung beans","mussels","mustard","mustard seed","nashi pear","nasturtium","nectarines","nori","nutmeg","nutritional yeast","nuts","oat flour","oatmeal","oats","octopus","okra","olive oil","olives","omega spread","onion","oranges","oregano","oyster mushrooms","oyster sauce","oysters","pandanus leaves","papaw","papaya","paprik","parmesan cheese","parrotfish","parsley","parsnip","passionfruit","pasta","peaches","peanuts","pear","pear juice","pears","peas","pecan nut","pecorino","pepitas","peppercorns","peppermint","peppers","persimmon","pine nut","pineapple","pinto beans","pistachio nut","plums","polenta","pomegranate","poppy seed","porcini mushrooms","pork","potato flour","potatoes","provolone","prunes","pumpkin","pumpkin seed","purple carrot","purple rice","quark","quince","quinoa","radicchio","radish","raisin","raspberry","red cabbage","red lentils","red pepper","red wine","red wine vinegar","redfish","rhubarb","rice flour","rice noodles","rice paper","rice syrup","ricemilk","ricotta","rockmelon","rose water","rosemary","rye","rye bread","safflower oil","saffron","sage","sake","salmon","sardines","sausages","scallops","sea salt","semolina","sesame oil","sesame seeds","shark","shiitake mushrooms","silverbeet","slivered almonds","smoked trout","snapper","snowpea sprouts","snowpeas","soba","sour dough bread","soy","soy beans","soy flour","soy milk","soy sauce","soymilk","spearmint","spelt","spelt bread","spinach","spring onions","sprouts","squash","squid","star anise","star fruit","starfruit","stevia","strawberries","sugar","sultanas","sun-dried tomatoes","sunflower oil","sunflower seeds","sweet chilli sauce","sweet potato","swiss chard","swordfish","szechuan pepperberry","tabasco","tahini","taleggio cheese","tamari","tamarillo","tangelo","tapioca","tapioca flour","tarragon","tea","tea oil","tempeh","thyme","tinned","tofu","tom yum","tomatoes","trout","tuna","turkey","turmeric","turnips","unbleached flour","vanilla beans","vegetable oil","vegetable spaghetti","vegetable stock","vermicelli noodles","vinegar","wakame","walnut","warehou","wasabi","water","watercress","watermelon","wattleseed","wheat","wheatgrass juice","white bread","white flour","white rice","white wine","white wine vinegar","whiting wild rice","wholegrain bread","wholemeal","wholewheat flour","william pear","yeast","yellow papaw","yellowtail kingfish","yoghurt","yogurt","zucchini"];var ue$1=["beef","chicken","crocodile","duck","emu","goose","kangaroo","lamb","ostrich","pigeon","pork","quail","rabbit","salmon","turkey","venison"];var ce$1=["achiote seed","ajwain seed","ajwan seed","allspice","amchoor","anise","anise star","aniseed","annatto seed","arrowroot","asafoetida","baharat","balti masala","balti stir fry mix","basil","bay leaves","bbq","caraway seed","cardamom","cassia","cayenne pepper","celery","chamomile","chervil","chilli","chilli pepper","chillies","china star","chives","cinnamon","cloves","colombo","coriander","cumin","curly leaf parsley","curry","dhansak","dill","fennel seed","fenugreek","fines herbes","five spice","french lavender","galangal","garam masala","garlic","german chamomile","ginger","green cardamom","herbes de provence","jalfrezi","jerk","kaffir leaves","korma","lavender","lemon grass","lemon pepper","lime leaves","liquorice root","mace","mango","marjoram","methi","mint","mustard","nutmeg","onion seed","orange zest","oregano","paprika","parsley","pepper","peppercorns","pimento","piri piri","poppy seed","pot marjoram","poudre de colombo","ras-el-hanout","rice paper","rogan josh","rose baie","rosemary","saffron","sage","sesame seed","spearmint","sumac","sweet basil","sweet laurel","tagine","tandoori masala","tarragon","thyme","tikka masala","turmeric","vanilla","zahtar"];var me$1=["artichoke","arugula","asian greens","asparagus","bean shoots","bean sprouts","beans","beetroot","bok choy","broccoli","broccolini","brussels sprouts","butternut lettuce","cabbage","capers","carob carrot","carrot","cauliflower","celery","chilli pepper","chinese cabbage","chives","cornichons","cos lettuce","cucumber","dried chinese broccoli","eggplant","endive","english spinach","french eschallots","fresh chillies","garlic","green beans","green pepper","hijiki","iceberg lettuce","jerusalem artichoke","jicama","kale","kohlrabi","leeks","lettuce","okra","onion","parsnip","peas","peppers","potatoes","pumpkin","purple carrot","radicchio","radish","raspberry","red cabbage","red pepper","rhubarb","snowpea sprouts","spinach","squash","sun dried tomatoes","sweet potato","swiss chard","turnips","zucchini"];var Za={adjective:re$1,description_pattern:ne$1,dish:ie$1,dish_pattern:te$1,ethnic_category:le$1,fruit:se$1,ingredient:de,meat:ue$1,spice:ce$1,vegetable:me$1},he$1=Za;var ye$1=["1080p","auxiliary","back-end","bluetooth","cross-platform","digital","haptic","mobile","multi-byte","neural","online","open-source","optical","primary","redundant","solid state","virtual","wireless"];var pe$1=["backing up","bypassing","calculating","compressing","connecting","copying","generating","hacking","indexing","navigating","overriding","parsing","programming","quantifying","synthesizing","transmitting"];var ge$1=["alarm","application","array","bandwidth","bus","capacitor","card","circuit","driver","feed","firewall","hard drive","interface","matrix","microchip","monitor","panel","pixel","port","program","protocol","sensor","system","transmitter"];var be$1=["I'll {{verb}} the {{adjective}} {{abbreviation}} {{noun}}, that should {{noun}} the {{abbreviation}} {{noun}}!","If we {{verb}} the {{noun}}, we can get to the {{abbreviation}} {{noun}} through the {{adjective}} {{abbreviation}} {{noun}}!","The {{abbreviation}} {{noun}} is down, {{verb}} the {{adjective}} {{noun}} so we can {{verb}} the {{abbreviation}} {{noun}}!","Try to {{verb}} the {{abbreviation}} {{noun}}, maybe it will {{verb}} the {{adjective}} {{noun}}!","Use the {{adjective}} {{abbreviation}} {{noun}}, then you can {{verb}} the {{adjective}} {{noun}}!","We need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!","You can't {{verb}} the {{noun}} without {{ingverb}} the {{adjective}} {{abbreviation}} {{noun}}!","{{ingverb}} the {{noun}} won't do anything, we need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!"];var Se$1=["back up","bypass","calculate","compress","connect","copy","generate","hack","index","input","navigate","override","parse","program","quantify","reboot","synthesize","transmit"];var _a={adjective:ye$1,ingverb:pe$1,noun:ge$1,phrase:be$1,verb:Se$1},ke$1=_a;var Ce$1=["com","biz","info","name","net","org"];var fe$1=["example.org","example.com","example.net"];var ve$1=["gmail.com","yahoo.com","hotmail.com"];var Qa$1={domain_suffix:Ce$1,example_email:fe$1,free_email:ve$1},Ae$1=Qa$1;var Be$1=["#####","####","###"];var we$1=["Abilene","Akron","Alafaya","Alameda","Albany","Albuquerque","Alexandria","Alhambra","Aliso Viejo","Allen","Allentown","Aloha","Alpharetta","Altadena","Altamonte Springs","Altoona","Amarillo","Ames","Anaheim","Anchorage","Anderson","Ankeny","Ann Arbor","Annandale","Antelope","Antioch","Apex","Apopka","Apple Valley","Appleton","Arcadia","Arden-Arcade","Arecibo","Arlington","Arlington Heights","Arvada","Ashburn","Asheville","Aspen Hill","Atascocita","Athens-Clarke County","Atlanta","Attleboro","Auburn","Augusta-Richmond County","Aurora","Austin","Avondale","Azusa","Bakersfield","Baldwin Park","Baltimore","Barnstable Town","Bartlett","Baton Rouge","Battle Creek","Bayamon","Bayonne","Baytown","Beaumont","Beavercreek","Beaverton","Bedford","Bel Air South","Bell Gardens","Belleville","Bellevue","Bellflower","Bellingham","Bend","Bentonville","Berkeley","Berwyn","Bethesda","Bethlehem","Billings","Biloxi","Binghamton","Birmingham","Bismarck","Blacksburg","Blaine","Bloomington","Blue Springs","Boca Raton","Boise City","Bolingbrook","Bonita Springs","Bossier City","Boston","Bothell","Boulder","Bountiful","Bowie","Bowling Green","Boynton Beach","Bozeman","Bradenton","Brandon","Brentwood","Bridgeport","Bristol","Brockton","Broken Arrow","Brookhaven","Brookline","Brooklyn Park","Broomfield","Brownsville","Bryan","Buckeye","Buena Park","Buffalo","Buffalo Grove","Burbank","Burien","Burke","Burleson","Burlington","Burnsville","Caguas","Caldwell","Camarillo","Cambridge","Camden","Canton","Cape Coral","Carlsbad","Carmel","Carmichael","Carolina","Carrollton","Carson","Carson City","Cary","Casa Grande","Casas Adobes","Casper","Castle Rock","Castro Valley","Catalina Foothills","Cathedral City","Catonsville","Cedar Hill","Cedar Park","Cedar Rapids","Centennial","Centreville","Ceres","Cerritos","Champaign","Chandler","Chapel Hill","Charleston","Charlotte","Charlottesville","Chattanooga","Cheektowaga","Chesapeake","Chesterfield","Cheyenne","Chicago","Chico","Chicopee","Chino","Chino Hills","Chula Vista","Cicero","Cincinnati","Citrus Heights","Clarksville","Clearwater","Cleveland","Cleveland Heights","Clifton","Clovis","Coachella","Coconut Creek","Coeur d'Alene","College Station","Collierville","Colorado Springs","Colton","Columbia","Columbus","Commerce City","Compton","Concord","Conroe","Conway","Coon Rapids","Coral Gables","Coral Springs","Corona","Corpus Christi","Corvallis","Costa Mesa","Council Bluffs","Country Club","Covina","Cranston","Cupertino","Cutler Bay","Cuyahoga Falls","Cypress","Dale City","Dallas","Daly City","Danbury","Danville","Davenport","Davie","Davis","Dayton","Daytona Beach","DeKalb","DeSoto","Dearborn","Dearborn Heights","Decatur","Deerfield Beach","Delano","Delray Beach","Deltona","Denton","Denver","Des Moines","Des Plaines","Detroit","Diamond Bar","Doral","Dothan","Downers Grove","Downey","Draper","Dublin","Dubuque","Duluth","Dundalk","Dunwoody","Durham","Eagan","East Hartford","East Honolulu","East Lansing","East Los Angeles","East Orange","East Providence","Eastvale","Eau Claire","Eden Prairie","Edina","Edinburg","Edmond","El Cajon","El Centro","El Dorado Hills","El Monte","El Paso","Elgin","Elizabeth","Elk Grove","Elkhart","Ellicott City","Elmhurst","Elyria","Encinitas","Enid","Enterprise","Erie","Escondido","Euclid","Eugene","Euless","Evanston","Evansville","Everett","Fairfield","Fall River","Fargo","Farmington","Farmington Hills","Fayetteville","Federal Way","Findlay","Fishers","Flagstaff","Flint","Florence-Graham","Florin","Florissant","Flower Mound","Folsom","Fond du Lac","Fontana","Fort Collins","Fort Lauderdale","Fort Myers","Fort Pierce","Fort Smith","Fort Wayne","Fort Worth","Fountain Valley","Fountainebleau","Framingham","Franklin","Frederick","Freeport","Fremont","Fresno","Frisco","Fullerton","Gainesville","Gaithersburg","Galveston","Garden Grove","Gardena","Garland","Gary","Gastonia","Georgetown","Germantown","Gilbert","Gilroy","Glen Burnie","Glendale","Glendora","Glenview","Goodyear","Grand Forks","Grand Island","Grand Junction","Grand Prairie","Grand Rapids","Grapevine","Great Falls","Greeley","Green Bay","Greensboro","Greenville","Greenwood","Gresham","Guaynabo","Gulfport","Hacienda Heights","Hackensack","Haltom City","Hamilton","Hammond","Hampton","Hanford","Harlingen","Harrisburg","Harrisonburg","Hartford","Hattiesburg","Haverhill","Hawthorne","Hayward","Hemet","Hempstead","Henderson","Hendersonville","Hesperia","Hialeah","Hicksville","High Point","Highland","Highlands Ranch","Hillsboro","Hilo","Hoboken","Hoffman Estates","Hollywood","Homestead","Honolulu","Hoover","Houston","Huntersville","Huntington","Huntington Beach","Huntington Park","Huntsville","Hutchinson","Idaho Falls","Independence","Indianapolis","Indio","Inglewood","Iowa City","Irondequoit","Irvine","Irving","Jackson","Jacksonville","Janesville","Jefferson City","Jeffersonville","Jersey City","Johns Creek","Johnson City","Joliet","Jonesboro","Joplin","Jupiter","Jurupa Valley","Kalamazoo","Kannapolis","Kansas City","Kearny","Keller","Kendale Lakes","Kendall","Kenner","Kennewick","Kenosha","Kent","Kentwood","Kettering","Killeen","Kingsport","Kirkland","Kissimmee","Knoxville","Kokomo","La Crosse","La Habra","La Mesa","La Mirada","Lacey","Lafayette","Laguna Niguel","Lake Charles","Lake Elsinore","Lake Forest","Lake Havasu City","Lake Ridge","Lakeland","Lakeville","Lakewood","Lancaster","Lansing","Laredo","Largo","Las Cruces","Las Vegas","Lauderhill","Lawrence","Lawton","Layton","League City","Lee's Summit","Leesburg","Lehi","Lehigh Acres","Lenexa","Levittown","Lewisville","Lexington-Fayette","Lincoln","Linden","Little Rock","Littleton","Livermore","Livonia","Lodi","Logan","Lombard","Lompoc","Long Beach","Longmont","Longview","Lorain","Los Angeles","Louisville/Jefferson County","Loveland","Lowell","Lubbock","Lynchburg","Lynn","Lynwood","Macon-Bibb County","Madera","Madison","Malden","Manchester","Manhattan","Mansfield","Manteca","Maple Grove","Margate","Maricopa","Marietta","Marysville","Mayaguez","McAllen","McKinney","McLean","Medford","Melbourne","Memphis","Menifee","Mentor","Merced","Meriden","Meridian","Mesa","Mesquite","Metairie","Methuen Town","Miami","Miami Beach","Miami Gardens","Middletown","Midland","Midwest City","Milford","Millcreek","Milpitas","Milwaukee","Minneapolis","Minnetonka","Minot","Miramar","Mishawaka","Mission","Mission Viejo","Missoula","Missouri City","Mobile","Modesto","Moline","Monroe","Montebello","Monterey Park","Montgomery","Moore","Moreno Valley","Morgan Hill","Mount Pleasant","Mount Prospect","Mount Vernon","Mountain View","Muncie","Murfreesboro","Murray","Murrieta","Nampa","Napa","Naperville","Nashua","Nashville-Davidson","National City","New Bedford","New Braunfels","New Britain","New Brunswick","New Haven","New Orleans","New Rochelle","New York","Newark","Newport Beach","Newport News","Newton","Niagara Falls","Noblesville","Norfolk","Normal","Norman","North Bethesda","North Charleston","North Highlands","North Las Vegas","North Lauderdale","North Little Rock","North Miami","North Miami Beach","North Port","North Richland Hills","Norwalk","Novato","Novi","O'Fallon","Oak Lawn","Oak Park","Oakland","Oakland Park","Ocala","Oceanside","Odessa","Ogden","Oklahoma City","Olathe","Olympia","Omaha","Ontario","Orange","Orem","Orland Park","Orlando","Oro Valley","Oshkosh","Overland Park","Owensboro","Oxnard","Palatine","Palm Bay","Palm Beach Gardens","Palm Coast","Palm Desert","Palm Harbor","Palm Springs","Palmdale","Palo Alto","Paradise","Paramount","Parker","Parma","Pasadena","Pasco","Passaic","Paterson","Pawtucket","Peabody","Pearl City","Pearland","Pembroke Pines","Pensacola","Peoria","Perris","Perth Amboy","Petaluma","Pflugerville","Pharr","Philadelphia","Phoenix","Pico Rivera","Pine Bluff","Pine Hills","Pinellas Park","Pittsburg","Pittsburgh","Pittsfield","Placentia","Plainfield","Plano","Plantation","Pleasanton","Plymouth","Pocatello","Poinciana","Pomona","Pompano Beach","Ponce","Pontiac","Port Arthur","Port Charlotte","Port Orange","Port St. Lucie","Portage","Porterville","Portland","Portsmouth","Potomac","Poway","Providence","Provo","Pueblo","Quincy","Racine","Raleigh","Rancho Cordova","Rancho Cucamonga","Rancho Palos Verdes","Rancho Santa Margarita","Rapid City","Reading","Redding","Redlands","Redmond","Redondo Beach","Redwood City","Reno","Renton","Reston","Revere","Rialto","Richardson","Richland","Richmond","Rio Rancho","Riverside","Riverton","Riverview","Roanoke","Rochester","Rochester Hills","Rock Hill","Rockford","Rocklin","Rockville","Rockwall","Rocky Mount","Rogers","Rohnert Park","Rosemead","Roseville","Roswell","Round Rock","Rowland Heights","Rowlett","Royal Oak","Sacramento","Saginaw","Salem","Salina","Salinas","Salt Lake City","Sammamish","San Angelo","San Antonio","San Bernardino","San Bruno","San Buenaventura (Ventura)","San Clemente","San Diego","San Francisco","San Jacinto","San Jose","San Juan","San Leandro","San Luis Obispo","San Marcos","San Mateo","San Rafael","San Ramon","San Tan Valley","Sandy","Sandy Springs","Sanford","Santa Ana","Santa Barbara","Santa Clara","Santa Clarita","Santa Cruz","Santa Fe","Santa Maria","Santa Monica","Santa Rosa","Santee","Sarasota","Savannah","Sayreville","Schaumburg","Schenectady","Scottsdale","Scranton","Seattle","Severn","Shawnee","Sheboygan","Shoreline","Shreveport","Sierra Vista","Silver Spring","Simi Valley","Sioux City","Sioux Falls","Skokie","Smyrna","Somerville","South Bend","South Gate","South Hill","South Jordan","South San Francisco","South Valley","South Whittier","Southaven","Southfield","Sparks","Spokane","Spokane Valley","Spring","Spring Hill","Spring Valley","Springdale","Springfield","St. Charles","St. Clair Shores","St. Cloud","St. George","St. Joseph","St. Louis","St. Louis Park","St. Paul","St. Peters","St. Petersburg","Stamford","State College","Sterling Heights","Stillwater","Stockton","Stratford","Strongsville","Suffolk","Sugar Land","Summerville","Sunnyvale","Sunrise","Sunrise Manor","Surprise","Syracuse","Tacoma","Tallahassee","Tamarac","Tamiami","Tampa","Taunton","Taylor","Taylorsville","Temecula","Tempe","Temple","Terre Haute","Texas City","The Hammocks","The Villages","The Woodlands","Thornton","Thousand Oaks","Tigard","Tinley Park","Titusville","Toledo","Toms River","Tonawanda","Topeka","Torrance","Town 'n' Country","Towson","Tracy","Trenton","Troy","Trujillo Alto","Tuckahoe","Tucson","Tulare","Tulsa","Turlock","Tuscaloosa","Tustin","Twin Falls","Tyler","Union City","University","Upland","Urbana","Urbandale","Utica","Vacaville","Valdosta","Vallejo","Vancouver","Victoria","Victorville","Vineland","Virginia Beach","Visalia","Vista","Waco","Waipahu","Waldorf","Walnut Creek","Waltham","Warner Robins","Warren","Warwick","Washington","Waterbury","Waterloo","Watsonville","Waukegan","Waukesha","Wauwatosa","Wellington","Wesley Chapel","West Allis","West Babylon","West Covina","West Des Moines","West Hartford","West Haven","West Jordan","West Lafayette","West New York","West Palm Beach","West Sacramento","West Seneca","West Valley City","Westfield","Westland","Westminster","Weston","Weymouth Town","Wheaton","White Plains","Whittier","Wichita","Wichita Falls","Wilmington","Wilson","Winston-Salem","Woodbury","Woodland","Worcester","Wylie","Wyoming","Yakima","Yonkers","Yorba Linda","York","Youngstown","Yuba City","Yucaipa","Yuma"];var Me$1=["{{location.city_prefix}} {{person.first_name.generic}}{{location.city_suffix}}","{{location.city_prefix}} {{person.first_name.generic}}","{{person.first_name.generic}}{{location.city_suffix}}","{{person.last_name.generic}}{{location.city_suffix}}","{{location.city_name}}"];var Te$1=["North","East","West","South","New","Lake","Port","Fort"];var Le$1=["town","ton","land","ville","berg","burgh","boro","borough","bury","view","port","mouth","stad","stead","furt","chester","cester","fort","field","haven","side","shire","worth"];var De$1=["Afghanistan","Aland Islands","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bonaire, Sint Eustatius and Saba","Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory (Chagos Archipelago)","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo","Cook Islands","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Curacao","Cyprus","Czechia","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Faroe Islands","Falkland Islands (Malvinas)","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Holy See (Vatican City State)","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Democratic People's Republic of Korea","Republic of Korea","Kuwait","Kyrgyz Republic","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macao","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saint Barthelemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard & Jan Mayen Islands","Sweden","Switzerland","Syrian Arab Republic","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Virgin Islands, British","Virgin Islands, U.S.","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"];var Re$1=["Adams County","Calhoun County","Carroll County","Clark County","Clay County","Crawford County","Douglas County","Fayette County","Franklin County","Grant County","Greene County","Hamilton County","Hancock County","Henry County","Jackson County","Jefferson County","Johnson County","Lake County","Lawrence County","Lee County","Lincoln County","Logan County","Madison County","Marion County","Marshall County","Monroe County","Montgomery County","Morgan County","Perry County","Pike County","Polk County","Scott County","Union County","Warren County","Washington County","Wayne County","Avon","Bedfordshire","Berkshire","Borders","Buckinghamshire","Cambridgeshire","Central","Cheshire","Cleveland","Clwyd","Cornwall","County Antrim","County Armagh","County Down","County Fermanagh","County Londonderry","County Tyrone","Cumbria","Derbyshire","Devon","Dorset","Dumfries and Galloway","Durham","Dyfed","East Sussex","Essex","Fife","Gloucestershire","Grampian","Greater Manchester","Gwent","Gwynedd County","Hampshire","Herefordshire","Hertfordshire","Highlands and Islands","Humberside","Isle of Wight","Kent","Lancashire","Leicestershire","Lincolnshire","Lothian","Merseyside","Mid Glamorgan","Norfolk","North Yorkshire","Northamptonshire","Northumberland","Nottinghamshire","Oxfordshire","Powys","Rutland","Shropshire","Somerset","South Glamorgan","South Yorkshire","Staffordshire","Strathclyde","Suffolk","Surrey","Tayside","Tyne and Wear","Warwickshire","West Glamorgan","West Midlands","West Sussex","West Yorkshire","Wiltshire","Worcestershire"];var He$1={cardinal:["North","East","South","West"],cardinal_abbr:["N","E","S","W"],ordinal:["Northeast","Northwest","Southeast","Southwest"],ordinal_abbr:["NE","NW","SE","SW"]};var Pe$1=["#####","#####-####"];var We$1=["Apt. ###","Suite ###"];var Ge$1=["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"];var Ne$1=["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"];var Ee$1={normal:"{{location.buildingNumber}} {{location.street}}",full:"{{location.buildingNumber}} {{location.street}} {{location.secondaryAddress}}"};var Fe$1=["10th Street","11th Street","12th Street","13th Street","14th Street","15th Street","16th Street","1st Avenue","1st Street","2nd Avenue","2nd Street","3rd Avenue","3rd Street","4th Avenue","4th Street","5th Avenue","5th Street","6th Avenue","6th Street","7th Avenue","7th Street","8th Avenue","8th Street","9th Street","A Street","Abbey Road","Adams Avenue","Adams Street","Airport Road","Albany Road","Albert Road","Albion Street","Alexandra Road","Alfred Street","Alma Street","Ash Close","Ash Grove","Ash Road","Ash Street","Aspen Close","Atlantic Avenue","Avenue Road","Back Lane","Baker Street","Balmoral Road","Barn Close","Barton Road","Bath Road","Bath Street","Bay Street","Beach Road","Bedford Road","Beech Close","Beech Drive","Beech Grove","Beech Road","Beechwood Avenue","Bell Lane","Belmont Road","Birch Avenue","Birch Close","Birch Grove","Birch Road","Blind Lane","Bluebell Close","Boundary Road","Bramble Close","Bramley Close","Bridge Road","Bridge Street","Broad Lane","Broad Street","Broadway","Broadway Avenue","Broadway Street","Brook Lane","Brook Road","Brook Street","Brookside","Buckingham Road","Cambridge Street","Canal Street","Castle Close","Castle Lane","Castle Road","Castle Street","Cavendish Road","Cedar Avenue","Cedar Close","Cedar Grove","Cedar Road","Cedar Street","Cemetery Road","Center Avenue","Center Road","Center Street","Central Avenue","Central Street","Chapel Close","Chapel Hill","Chapel Road","Chapel Street","Charles Street","Cherry Close","Cherry Street","Cherry Tree Close","Chester Road","Chestnut Close","Chestnut Drive","Chestnut Grove","Chestnut Street","Church Avenue","Church Close","Church Hill","Church Lane","Church Path","Church Road","Church Street","Church View","Church Walk","Claremont Road","Clarence Road","Clarence Street","Clarendon Road","Clark Street","Clay Lane","Cleveland Street","Cliff Road","Clifton Road","Clinton Street","College Avenue","College Street","Columbia Avenue","Commerce Street","Commercial Road","Commercial Street","Common Lane","Coronation Avenue","Coronation Road","County Line Road","County Road","Court Street","Cow Lane","Crescent Road","Cromwell Road","Cross Lane","Cross Street","Crown Street","Cumberland Street","Dale Street","Dark Lane","Davis Street","Depot Street","Derby Road","Derwent Close","Devonshire Road","Division Street","Douglas Road","Duke Street","E 10th Street","E 11th Street","E 12th Street","E 14th Street","E 1st Street","E 2nd Street","E 3rd Street","E 4th Avenue","E 4th Street","E 5th Street","E 6th Avenue","E 6th Street","E 7th Street","E 8th Street","E 9th Street","E Bridge Street","E Broad Street","E Broadway","E Broadway Street","E Cedar Street","E Center Street","E Central Avenue","E Church Street","E Elm Street","E Franklin Street","E Front Street","E Grand Avenue","E High Street","E Jackson Street","E Jefferson Street","E Main","E Main Street","E Maple Street","E Market Street","E North Street","E Oak Street","E Park Avenue","E Pine Street","E River Road","E South Street","E State Street","E Union Street","E Walnut Street","E Washington Avenue","E Washington Street","E Water Street","East Avenue","East Road","East Street","Edward Street","Elm Close","Elm Grove","Elm Road","Elm Street","Euclid Avenue","Fairfield Road","Farm Close","Ferry Road","Field Close","Field Lane","First Avenue","First Street","Fore Street","Forest Avenue","Forest Road","Fourth Avenue","Franklin Avenue","Franklin Road","Franklin Street","Front Street","Frontage Road","Garden Close","Garden Street","George Street","Gladstone Road","Glebe Close","Gloucester Road","Gordon Road","Gordon Street","Grand Avenue","Grange Avenue","Grange Close","Grange Road","Grant Street","Green Close","Green Lane","Green Street","Greenville Road","Greenway","Greenwood Road","Grove Lane","Grove Road","Grove Street","Hall Lane","Hall Street","Harrison Avenue","Harrison Street","Hawthorn Avenue","Hawthorn Close","Hazel Close","Hazel Grove","Heath Road","Heather Close","Henry Street","Heron Close","Hickory Street","High Road","High Street","Highfield Avenue","Highfield Close","Highfield Road","Highland Avenue","Hill Road","Hill Street","Hillside","Hillside Avenue","Hillside Close","Hillside Road","Holly Close","Honeysuckle Close","Howard Road","Howard Street","Jackson Avenue","Jackson Street","James Street","Jefferson Avenue","Jefferson Street","Johnson Street","Jubilee Close","Juniper Close","Kent Road","Kestrel Close","King Street","King's Road","Kingfisher Close","Kings Highway","Kingsway","Laburnum Grove","Lafayette Street","Lake Avenue","Lake Drive","Lake Road","Lake Street","Lancaster Road","Lansdowne Road","Larch Close","Laurel Close","Lawrence Street","Lee Street","Liberty Street","Lime Grove","Lincoln Avenue","Lincoln Highway","Lincoln Road","Lincoln Street","Locust Street","Lodge Close","Lodge Lane","London Road","Long Lane","Low Road","Madison Avenue","Madison Street","Main","Main Avenue","Main Road","Main Street","Main Street E","Main Street N","Main Street S","Main Street W","Manchester Road","Manor Close","Manor Drive","Manor Gardens","Manor Road","Manor Way","Maple Avenue","Maple Close","Maple Drive","Maple Road","Maple Street","Market Place","Market Square","Market Street","Marlborough Road","Marsh Lane","Martin Luther King Boulevard","Martin Luther King Drive","Martin Luther King Jr Boulevard","Mary Street","Mayfield Road","Meadow Close","Meadow Drive","Meadow Lane","Meadow View","Meadow Way","Memorial Drive","Middle Street","Mill Close","Mill Lane","Mill Road","Mill Street","Milton Road","Milton Street","Monroe Street","Moor Lane","Moss Lane","Mount Pleasant","Mount Street","Mulberry Street","N 1st Street","N 2nd Street","N 3rd Street","N 4th Street","N 5th Street","N 6th Street","N 7th Street","N 8th Street","N 9th Street","N Bridge Street","N Broad Street","N Broadway","N Broadway Street","N Cedar Street","N Center Street","N Central Avenue","N Chestnut Street","N Church Street","N College Street","N Court Street","N Division Street","N East Street","N Elm Street","N Franklin Street","N Front Street","N Harrison Street","N High Street","N Jackson Street","N Jefferson Street","N Lincoln Street","N Locust Street","N Main","N Main Avenue","N Main Street","N Maple Street","N Market Street","N Monroe Street","N Oak Street","N Park Street","N Pearl Street","N Pine Street","N Poplar Street","N Railroad Street","N State Street","N Union Street","N Walnut Street","N Washington Avenue","N Washington Street","N Water Street","Nelson Road","Nelson Street","New Lane","New Road","New Street","Newton Road","Nightingale Close","Norfolk Road","North Avenue","North Lane","North Road","North Street","Northfield Road","Oak Avenue","Oak Drive","Oak Lane","Oak Road","Oak Street","Oakfield Road","Oaklands","Old Lane","Old Military Road","Old Road","Old State Road","Orchard Drive","Orchard Lane","Orchard Road","Orchard Street","Oxford Road","Oxford Street","Park Avenue","Park Crescent","Park Drive","Park Lane","Park Place","Park Road","Park Street","Park View","Parkside","Pearl Street","Pennsylvania Avenue","Pine Close","Pine Grove","Pine Street","Pinfold Lane","Pleasant Street","Poplar Avenue","Poplar Close","Poplar Road","Poplar Street","Post Road","Pound Lane","Princes Street","Princess Street","Priory Close","Priory Road","Prospect Avenue","Prospect Place","Prospect Road","Prospect Street","Quarry Lane","Quarry Road","Queen's Road","Railroad Avenue","Railroad Street","Railway Street","Rectory Close","Rectory Lane","Richmond Close","Richmond Road","Ridge Road","River Road","River Street","Riverside","Riverside Avenue","Riverside Drive","Roman Road","Roman Way","Rowan Close","Russell Street","S 10th Street","S 14th Street","S 1st Avenue","S 1st Street","S 2nd Street","S 3rd Street","S 4th Street","S 5th Street","S 6th Street","S 7th Street","S 8th Street","S 9th Street","S Bridge Street","S Broad Street","S Broadway","S Broadway Street","S Center Street","S Central Avenue","S Chestnut Street","S Church Street","S College Street","S Division Street","S East Street","S Elm Street","S Franklin Street","S Front Street","S Grand Avenue","S High Street","S Jackson Street","S Jefferson Street","S Lincoln Street","S Main","S Main Avenue","S Main Street","S Maple Street","S Market Street","S Mill Street","S Monroe Street","S Oak Street","S Park Street","S Pine Street","S Railroad Street","S State Street","S Union Street","S Walnut Street","S Washington Avenue","S Washington Street","S Water Street","S West Street","Salisbury Road","Sandringham Road","Sandy Lane","School Close","School Lane","School Road","School Street","Second Avenue","Silver Street","Skyline Drive","Smith Street","Somerset Road","South Avenue","South Drive","South Road","South Street","South View","Spring Gardens","Spring Street","Springfield Close","Springfield Road","Spruce Street","St Andrew's Road","St Andrews Close","St George's Road","St John's Road","St Mary's Close","St Mary's Road","Stanley Road","Stanley Street","State Avenue","State Line Road","State Road","State Street","Station Road","Station Street","Stoney Lane","Sycamore Avenue","Sycamore Close","Sycamore Drive","Sycamore Street","Talbot Road","Tennyson Road","The Avenue","The Beeches","The Causeway","The Chase","The Coppice","The Copse","The Crescent","The Croft","The Dell","The Drive","The Fairway","The Glebe","The Grange","The Green","The Grove","The Hawthorns","The Lane","The Laurels","The Limes","The Maltings","The Meadows","The Mews","The Mount","The Oaks","The Orchard","The Oval","The Paddock","The Paddocks","The Poplars","The Ridgeway","The Ridings","The Rise","The Sidings","The Spinney","The Square","The Willows","The Woodlands","Third Avenue","Third Street","Tower Road","Trinity Road","Tudor Close","Union Avenue","Union Street","University Avenue","University Drive","Valley Road","Veterans Memorial Drive","Veterans Memorial Highway","Vicarage Close","Vicarage Lane","Vicarage Road","Victoria Place","Victoria Road","Victoria Street","Vine Street","W 10th Street","W 11th Street","W 12th Street","W 14th Street","W 1st Street","W 2nd Street","W 3rd Street","W 4th Avenue","W 4th Street","W 5th Street","W 6th Avenue","W 6th Street","W 7th Street","W 8th Street","W 9th Street","W Bridge Street","W Broad Street","W Broadway","W Broadway Avenue","W Broadway Street","W Center Street","W Central Avenue","W Chestnut Street","W Church Street","W Division Street","W Elm Street","W Franklin Street","W Front Street","W Grand Avenue","W High Street","W Jackson Street","W Jefferson Street","W Lake Street","W Main","W Main Street","W Maple Street","W Market Street","W Monroe Street","W North Street","W Oak Street","W Park Street","W Pine Street","W River Road","W South Street","W State Street","W Union Street","W Walnut Street","W Washington Avenue","W Washington Street","Walnut Close","Walnut Street","Warren Close","Warren Road","Washington Avenue","Washington Boulevard","Washington Road","Washington Street","Water Lane","Water Street","Waterloo Road","Waterside","Watery Lane","Waverley Road","Well Lane","Wellington Road","Wellington Street","West Avenue","West End","West Lane","West Road","West Street","West View","Western Avenue","Western Road","Westfield Road","Westgate","William Street","Willow Close","Willow Drive","Willow Grove","Willow Road","Willow Street","Windermere Road","Windmill Close","Windmill Lane","Windsor Avenue","Windsor Close","Windsor Drive","Wood Lane","Wood Street","Woodland Close","Woodland Road","Woodlands","Woodlands Avenue","Woodlands Close","Woodlands Road","Woodside","Woodside Road","Wren Close","Yew Tree Close","York Road","York Street"];var Je$1=["{{person.first_name.generic}} {{location.street_suffix}}","{{person.last_name.generic}} {{location.street_suffix}}","{{location.street_name}}"];var Ie$1=["Alley","Avenue","Branch","Bridge","Brook","Brooks","Burg","Burgs","Bypass","Camp","Canyon","Cape","Causeway","Center","Centers","Circle","Circles","Cliff","Cliffs","Club","Common","Corner","Corners","Course","Court","Courts","Cove","Coves","Creek","Crescent","Crest","Crossing","Crossroad","Curve","Dale","Dam","Divide","Drive","Drives","Estate","Estates","Expressway","Extension","Extensions","Fall","Falls","Ferry","Field","Fields","Flat","Flats","Ford","Fords","Forest","Forge","Forges","Fork","Forks","Fort","Freeway","Garden","Gardens","Gateway","Glen","Glens","Green","Greens","Grove","Groves","Harbor","Harbors","Haven","Heights","Highway","Hill","Hills","Hollow","Inlet","Island","Islands","Isle","Junction","Junctions","Key","Keys","Knoll","Knolls","Lake","Lakes","Land","Landing","Lane","Light","Lights","Loaf","Lock","Locks","Lodge","Loop","Mall","Manor","Manors","Meadow","Meadows","Mews","Mill","Mills","Mission","Motorway","Mount","Mountain","Mountains","Neck","Orchard","Oval","Overpass","Park","Parks","Parkway","Parkways","Pass","Passage","Path","Pike","Pine","Pines","Place","Plain","Plains","Plaza","Point","Points","Port","Ports","Prairie","Radial","Ramp","Ranch","Rapid","Rapids","Rest","Ridge","Ridges","River","Road","Roads","Route","Row","Rue","Run","Shoal","Shoals","Shore","Shores","Skyway","Spring","Springs","Spur","Spurs","Square","Squares","Station","Stravenue","Stream","Street","Streets","Summit","Terrace","Throughway","Trace","Track","Trafficway","Trail","Tunnel","Turnpike","Underpass","Union","Unions","Valley","Valleys","Via","Viaduct","View","Views","Village","Villages","Ville","Vista","Walk","Walks","Wall","Way","Ways","Well","Wells"];var Xa={building_number:Be$1,city_name:we$1,city_pattern:Me$1,city_prefix:Te$1,city_suffix:Le$1,country:De$1,county:Re$1,direction:He$1,postcode:Pe$1,secondary_address:We$1,state:Ge$1,state_abbr:Ne$1,street_address:Ee$1,street_name:Fe$1,street_pattern:Je$1,street_suffix:Ie$1},Ke$1=Xa;var Oe$1=["a","ab","abbas","abduco","abeo","abscido","absconditus","absens","absorbeo","absque","abstergo","absum","abundans","abutor","accedo","accendo","acceptus","accommodo","accusamus","accusantium","accusator","acer","acerbitas","acervus","acidus","acies","acquiro","acsi","ad","adamo","adaugeo","addo","adduco","ademptio","adeo","adeptio","adfectus","adfero","adficio","adflicto","adhaero","adhuc","adicio","adimpleo","adinventitias","adipisci","adipiscor","adiuvo","administratio","admiratio","admitto","admoneo","admoveo","adnuo","adopto","adsidue","adstringo","adsuesco","adsum","adulatio","adulescens","aduro","advenio","adversus","advoco","aedificium","aeger","aegre","aegrotatio","aegrus","aeneus","aequitas","aequus","aer","aestas","aestivus","aestus","aetas","aeternus","ager","aggero","aggredior","agnitio","agnosco","ago","ait","aiunt","alias","alienus","alii","alioqui","aliqua","aliquam","aliquid","alius","allatus","alo","alter","altus","alveus","amaritudo","ambitus","ambulo","amet","amicitia","amiculum","amissio","amita","amitto","amo","amor","amoveo","amplexus","amplitudo","amplus","ancilla","angelus","angulus","angustus","animadverto","animi","animus","annus","anser","ante","antea","antepono","antiquus","aperiam","aperio","aperte","apostolus","apparatus","appello","appono","appositus","approbo","apto","aptus","apud","aqua","ara","aranea","arbitro","arbor","arbustum","arca","arceo","arcesso","architecto","arcus","argentum","argumentum","arguo","arma","armarium","aro","ars","articulus","artificiose","arto","arx","ascisco","ascit","asper","asperiores","aspernatur","aspicio","asporto","assentator","assumenda","astrum","at","atavus","ater","atque","atqui","atrocitas","atrox","attero","attollo","attonbitus","auctor","auctus","audacia","audax","audentia","audeo","audio","auditor","aufero","aureus","aurum","aut","autem","autus","auxilium","avaritia","avarus","aveho","averto","baiulus","balbus","barba","bardus","basium","beatae","beatus","bellicus","bellum","bene","beneficium","benevolentia","benigne","bestia","bibo","bis","blandior","blanditiis","bonus","bos","brevis","cado","caecus","caelestis","caelum","calamitas","calcar","calco","calculus","callide","campana","candidus","canis","canonicus","canto","capillus","capio","capitulus","capto","caput","carbo","carcer","careo","caries","cariosus","caritas","carmen","carpo","carus","casso","caste","casus","catena","caterva","cattus","cauda","causa","caute","caveo","cavus","cedo","celebrer","celer","celo","cena","cenaculum","ceno","censura","centum","cerno","cernuus","certe","certus","cervus","cetera","charisma","chirographum","cibo","cibus","cicuta","cilicium","cimentarius","ciminatio","cinis","circumvenio","cito","civis","civitas","clam","clamo","claro","clarus","claudeo","claustrum","clementia","clibanus","coadunatio","coaegresco","coepi","coerceo","cogito","cognatus","cognomen","cogo","cohaero","cohibeo","cohors","colligo","collum","colo","color","coma","combibo","comburo","comedo","comes","cometes","comis","comitatus","commemoro","comminor","commodi","commodo","communis","comparo","compello","complectus","compono","comprehendo","comptus","conatus","concedo","concido","conculco","condico","conduco","confero","confido","conforto","confugo","congregatio","conicio","coniecto","conitor","coniuratio","conor","conqueror","conscendo","consectetur","consequatur","consequuntur","conservo","considero","conspergo","constans","consuasor","contabesco","contego","contigo","contra","conturbo","conventus","convoco","copia","copiose","cornu","corona","corporis","corpus","correptius","corrigo","corroboro","corrumpo","corrupti","coruscus","cotidie","crapula","cras","crastinus","creator","creber","crebro","credo","creo","creptio","crepusculum","cresco","creta","cribro","crinis","cruciamentum","crudelis","cruentus","crur","crustulum","crux","cubicularis","cubitum","cubo","cui","cuius","culpa","culpo","cultellus","cultura","cum","cumque","cunabula","cunae","cunctatio","cupiditas","cupiditate","cupio","cuppedia","cupressus","cur","cura","curatio","curia","curiositas","curis","curo","curriculum","currus","cursim","curso","cursus","curto","curtus","curvo","custodia","damnatio","damno","dapifer","debeo","debilito","debitis","decens","decerno","decet","decimus","decipio","decor","decretum","decumbo","dedecor","dedico","deduco","defaeco","defendo","defero","defessus","defetiscor","deficio","defleo","defluo","defungo","degenero","degero","degusto","deinde","delectatio","delectus","delego","deleniti","deleo","delibero","delicate","delinquo","deludo","demens","demergo","demitto","demo","demonstro","demoror","demulceo","demum","denego","denique","dens","denuncio","denuo","deorsum","depereo","depono","depopulo","deporto","depraedor","deprecator","deprimo","depromo","depulso","deputo","derelinquo","derideo","deripio","deserunt","desidero","desino","desipio","desolo","desparatus","despecto","dicta","dignissimos","distinctio","dolor","dolore","dolorem","doloremque","dolores","doloribus","dolorum","ducimus","ea","eaque","earum","eius","eligendi","enim","eos","error","esse","est","et","eum","eveniet","ex","excepturi","exercitationem","expedita","explicabo","facere","facilis","fuga","fugiat","fugit","harum","hic","id","illo","illum","impedit","in","incidunt","infit","inflammatio","inventore","ipsa","ipsam","ipsum","iste","itaque","iure","iusto","labore","laboriosam","laborum","laudantium","libero","magnam","magni","maiores","maxime","minima","minus","modi","molestiae","molestias","mollitia","nam","natus","necessitatibus","nemo","neque","nesciunt","nihil","nisi","nobis","non","nostrum","nulla","numquam","occaecati","ocer","odio","odit","officia","officiis","omnis","optio","paens","pariatur","patior","patria","patrocinor","patruus","pauci","paulatim","pauper","pax","peccatus","pecco","pecto","pectus","pecus","peior","pel","perferendis","perspiciatis","placeat","porro","possimus","praesentium","provident","quae","quaerat","quam","quas","quasi","qui","quia","quibusdam","quidem","quis","quisquam","quo","quod","quos","ratione","recusandae","reiciendis","rem","repellat","repellendus","reprehenderit","repudiandae","rerum","saepe","sapiente","sed","sequi","similique","sint","sit","socius","sodalitas","sol","soleo","solio","solitudo","solium","sollers","sollicito","solum","solus","soluta","solutio","solvo","somniculosus","somnus","sonitus","sono","sophismata","sopor","sordeo","sortitus","spargo","speciosus","spectaculum","speculum","sperno","spero","spes","spiculum","spiritus","spoliatio","sponte","stabilis","statim","statua","stella","stillicidium","stipes","stips","sto","strenuus","strues","studio","stultus","suadeo","suasoria","sub","subito","subiungo","sublime","subnecto","subseco","substantia","subvenio","succedo","succurro","sufficio","suffoco","suffragium","suggero","sui","sulum","sum","summa","summisse","summopere","sumo","sumptus","sunt","supellex","super","suppellex","supplanto","suppono","supra","surculus","surgo","sursum","suscipio","suscipit","suspendo","sustineo","suus","synagoga","tabella","tabernus","tabesco","tabgo","tabula","taceo","tactus","taedium","talio","talis","talus","tam","tamdiu","tamen","tametsi","tamisium","tamquam","tandem","tantillus","tantum","tardus","tego","temeritas","temperantia","templum","tempora","tempore","temporibus","temptatio","tempus","tenax","tendo","teneo","tener","tenetur","tenuis","tenus","tepesco","tepidus","ter","terebro","teres","terga","tergeo","tergiversatio","tergo","tergum","termes","terminatio","tero","terra","terreo","territo","terror","tersus","tertius","testimonium","texo","textilis","textor","textus","thalassinus","theatrum","theca","thema","theologus","thermae","thesaurus","thesis","thorax","thymbra","thymum","tibi","timidus","timor","titulus","tolero","tollo","tondeo","tonsor","torqueo","torrens","tot","totam","totidem","toties","totus","tracto","trado","traho","trans","tredecim","tremo","trepide","tres","tribuo","tricesimus","triduana","tripudio","tristis","triumphus","trucido","truculenter","tubineus","tui","tum","tumultus","tunc","turba","turbo","turpis","tutamen","tutis","tyrannus","uberrime","ubi","ulciscor","ullam","ullus","ulterius","ultio","ultra","umbra","umerus","umquam","una","unde","undique","universe","unus","urbanus","urbs","uredo","usitas","usque","ustilo","ustulo","usus","ut","uter","uterque","utilis","utique","utor","utpote","utrimque","utroque","utrum","uxor","vaco","vacuus","vado","vae","valde","valens","valeo","valetudo","validus","vallum","vapulus","varietas","varius","vehemens","vel","velit","velociter","velum","velut","venia","veniam","venio","ventito","ventosus","ventus","venustas","ver","verbera","verbum","vere","verecundia","vereor","vergo","veritas","veritatis","vero","versus","verto","verumtamen","verus","vesco","vesica","vesper","vespillo","vester","vestigium","vestrum","vetus","via","vicinus","vicissitudo","victoria","victus","videlicet","video","viduo","vigilo","vigor","vilicus","vilis","vilitas","villa","vinco","vinculum","vindico","vinitor","vinum","vir","virga","virgo","viridis","viriliter","virtus","vis","viscus","vita","vitae","vitiosus","vitium","vito","vivo","vix","vobis","vociferor","voco","volaticus","volo","volubilis","voluntarius","volup","voluptas","voluptate","voluptatem","voluptates","voluptatibus","voluptatum","volutabrum","volva","vomer","vomica","vomito","vorago","vorax","voro","vos","votum","voveo","vox","vulariter","vulgaris","vulgivagus","vulgo","vulgus","vulnero","vulnus","vulpes","vulticulus","xiphias"];var $a={word:Oe$1},xe$1=$a;var eo={title:"English",code:"en",language:"en",endonym:"English",dir:"ltr",script:"Latn"},ze$1=eo;var Ve$1=['"Awaken, My Love!"',"(What's The Story) Morning Glory?","- Tragedy +","13 Reasons Why (Season 3)","21st Century Breakdown","30 De Febrero","432 Hz Deep Healing","5-Star","528 Hz Meditation Music","54+1","8 Mile","808s & Heartbreak","9 To 5 And Odd Jobs","A Beautiful Lie","A Day At The Races","A Day Without Rain","A Fever You Can't Sweat Out","A Gangsta's Pain","A Gift & A Curse","A Hard Day's Night","A Head Full Of Dreams","A Kind Of Magic","A Million Ways To Murder","A Moment Apart","A Song For Every Moon","A Thousand Suns","A Winter Romance","ABBA","AI YoungBoy","AJ Tracey","Act One","After Hours","Agent Provocateur","All About You","All I Know So Far: Setlist","All Or Nothing","All Out","All Over The Place","All Stand Together","All The Lost Souls","All The Things I Never Said","All Things Must Pass","Alleen","Alright, Still","Alta Suciedad","America","American Heartbreak","American Teen","And Justice For None","Animal Songs","Another Friday Night","Anything Goes","Ao Vivo Em S\xE3o Paulo","Ao Vivo No Ibirapuera","Apricot Princess","Aqui E Agora (Ao Vivo)","Arcane League Of Legends","Ardipithecus","Aretha Now","Around The Fur","Arrival","Artist 2.0","As She Pleases","Ascend","Ashlyn","Astro Lounge","At Night, Alone.","At. Long. Last. ASAP","Atlas","Audioslave","Aura","Austin","Awake","Away From The Sun","Ayayay!","Baby On Baby","Back For Everything","Back From The Edge","Back In Black","Back To Black","Back To The Game","Bad","Bah\xEDa Ducati","Baila","Barbie The Album","Battleground","Bayou Country","Bcos U Will Never B Free","Be","Be Here Now","Beautiful Mind","Beautiful Thugger Girls","Beautiful Trauma","Beauty And The Beast","Beggars Banquet","Being Funny In A Foreign Language","Berlin Lebt","Berry Is On Top","Best White Noise For Baby Sleep - Loopable With No Fade","Big Baby DRAM","Bigger, Better, Faster, More!","Billy Talent II","Black Star Elephant","Blackout","Blank Face LP","Bleach","Blizzard Of Ozz","Blonde","Blood Sugar Sex Magik","Bloom","Blowin' Your Mind!","Blu Celeste","Blue","Blue Banisters","Blue Hawaii","Blue Neighbourhood","Bluebird Days","Bobby Tarantino","Bobby Tarantino II","Bon Iver","Born Pink","Born To Run","Brand New Eyes","Break The Cycle","Breakfast In America","Breakthrough","Brett Young","Bridge Over Troubled Water","Bright: The Album","Brol","Buds","Buena Vista Social Club","Built On Glass","Bury Me At Makeout Creek","Busyhead","By The Way","CB6","CNCO","California Sunrise","Californication","Call Me Irresponsible","Calm","Camino Palmero","Camp","Caracal","Carbon Fiber Hits","Carnival","Carry On","Cartel De Santa","Certified Lover Boy","Chaaama","Chama Meu Nome","Chapter 1: Snake Oil","Chapter 2: Swamp Savant","Chapter One","Charlie's Angels","Cherry Bomb","Chief","Chocolate Factory","Chosen","Chris Brown","Christina Aguilera","Chromatica","Church","City Of Evil","Clandestino","Clouds","Coco","Collision Course","Colour Vision","Combat Rock","Come Around Sundown","Come Away With Me","Come Home The Kids Miss You","Come What(ever) May","Commando","Common Sense","Communion","Conditions","Confident","Confrontation","Control The Streets, Volume 2","Corinne Bailey Rae","Costello Music","Cottonwood","Covers, Vol. 2","Cozy Tapes Vol. 2: Too Cozy","Crash Talk","Crazy Love","Crazysexycool","Crowded House","Cruisin' With Junior H","Culture","Current Mood","DS2","Dale","Danger Days: The True Lives Of The Fabulous Killjoys","Dangerous Woman","Dangerous: The Double Album","Dark Horse","Day69","Daydream","De Fiesta","De Viaje","DeAnn","Death Race For Love","Delirium","Delta","Demidevil","Depression Cherry","Descendants","Desgenerados Mixtape","Destin","Destiny Fulfilled","Desvelado","Detroit 2","Dex Meets Dexter","Dharma","Die A Legend","Different World","Dig Your Roots","Digital Druglord","Dirt","Disclaimer I / II","Discovery","Disraeli Gears","Disumano","Dizzy Up The Girl","Don't Play That Song","Donda","Donde Quiero Estar","Doo-Wops & Hooligans","Down The Way","Dr. Feelgood","Dream Your Life Away","Dreaming Out Loud","Drip Harder","Drive","Drones","Dropped Outta College","Drowning","Dua Warna Cinta","Dulce Beat","Dusty In Memphis","Dutty Rock","Dying To Live","ENR","East Atlanta Love Letter","Editorial","Edna","El Abayarde","El Amor En Los Tiempos Del Perreo","El Camino","El Comienzo","El Dorado","El Karma","El Mal Querer","El Malo","El Trabajo Es La Suerte","El Viaje De Copperpot","Electric Ladyland","Emotion","En Tus Planes","Endless Summer Vacation","Enter The Wu-Tang (36 Chambers)","Equals (=)","Estrella","Euphoria","Europop","Evermore","Every Kingdom","Everyday Life","Evolve","Expectations","Face Yourself","Facelift","Fallin'","Fancy You","Fantas\xEDa","Favourite Worst Nightmare","Fear Of The Dark","Fearless","Feel Something","Feels Like Home","Femme Fatale","Ferxxocalipsis","Fifty Shades Darker","Fifty Shades Freed","Fifty Shades Of Grey","Final (Vol.1)","Finding Beauty In Negative Spaces","Fine Line","First Impressions Of Earth","First Steps","Five Seconds Flat","Folklore","For Emma, Forever Ago","Forajido EP 1","Forever","Forever Young","Formula Of Love: O+T=<3","Free 6lack","Freudian","Frozen II","Full Moon Fever","Funhouse","Funk Wav Bounces Vol.1","Future History","FutureSex/LoveSounds","Fuzzybrain","Gallery","Gangsta's Paradise","Gemini","Gemini Rights","Generationwhy","Get A Grip","Get Up","Gettin' Old","Girl","Gladiator","Glisten","Globalization","Gloria","Glory Days","God's Project","Gold Skies","Golden","Good Evening","Good Thing","Goodbye Yellow Brick Road","Gossip Columns","Got Your Six","Graceland","Graduation","Grand Champ","Grandson, Vol. 1","Green River","Guerra","Ha*Ash Primera Fila - Hecho Realidad","Haiz","Hamilton","Happy Endings","Harry Styles","Hasta La Ra\xEDz","Hatful Of Hollow","Head In The Clouds","Heard It In A Past Life","Heart Shaped World","Heartbeat City","Heartbreak On A Full Moon / Cuffing Season - 12 Days Of Christmas","Heaven Or Hell","Heaven knows","Hellbilly Deluxe","Hellboy","Help!","Her Loss","Here Comes The Cowboy","Hey World","High School Musical","High Tide In The Snake's Nest","Historias De Un Capricornio","Hndrxx","Hombres G (Devu\xE9lveme A Mi Chica)","Homerun","Homework","Hot Fuss","Hot Pink","Hot Sauce / Hello Future","Hot Space","Hotel Diablo","Houses Of The Holy","How Big, How Blue, How Beautiful","How I'm Feeling","How To Be Human","How To Save A Life","How To: Friend, Love, Freefall","Hozier","Human","Huncho Jack, Jack Huncho","Hunter Hayes","Hysteria","I Am...Sasha Fierce","I Can't Handle Change","I Met You When I Was 18. (The Playlist)","I Never Liked You","I Never Loved A Man The Way I Love You","I See You","I Think You Think Too Much Of Me","I Used To Know Her","I Used To Think I Could Fly","I'm Comin' Over","Ich & Keine Maske","If You Can Believe Your Eyes & Ears","Il Ballo Della Vita","Ill Communication","Imagination & The Misfit Kid","Imagine","Immortalized","In A Perfect World...","In Colour","In My Own Words","In Rainbows","In Return","In The Lonely Hour","Infest","Innuendo","Inter Shibuya - La Mafia","Interstellar","Is This It","It Was Written","It's Not Me, It's You","It's Only Me","Ivory","JackBoys","Jamie","Jazz","Jibrail & Iblis","Jordi","Jordin Sparks","Jose","Just As I Am","Just Cause Y'all Waited 2","Just Like You","Justified","K-12 / After School","K.I.D.S.","K.O.","K.O.B. Live","KG0516","KOD","Kane Brown","Kid A","Kid Krow","Kids See Ghosts","Kids in Love","Kinks (You Really Got Me)","Know-It-All","Konvicted","Kring","LANY","LM5","La Criatura","La Flaca","La Melodia De La Calle","La Revolucion","Lady Lady","Lady Wood","Langit Mong Bughaw","Las Que No Iban A Salir","Last Day Of Summer","Last Year Was Complicated","Layers","Layover","Lazarus","Led Zeppelin","Left Of The Middle","Leftoverture","Legends Never Die","Let's Skip To The Wedding","Let's Talk About Love","Licensed To Ill","Life In Cartoon Motion","Life Thru A Lens","Lifelines","Like..?","Lil Big Pac","Lil Boat","Lil Boat 2","Lil Boat 3.5","Lil Kiwi","Lil Pump","Limon Y Sal","Listen Without Prejudice","Little Voice","Live On Red Barn Radio I & II","Lo Que And\xE1bamos Buscando","Lofi Fruits Music 2021","London Calling","Los Campeones Del Pueblo","Los Extraterrestres","Los Favoritos 2","Lost","Lost In Love","Loud","Love Sick","Love Story","Love Stuff","Love Yourself: Tear","Lover","Luca Brasi 2: Gangsta Grillz","Lust For Life","Luv Is Rage","M!ssundaztood","Ma Fleur","Made In Lagos","Mafia Bidness","Magazines Or Novels","Mainstream Sellout","Majestic","Make It Big","Make Yourself","Making Mirrors","Mamma Mia! Here We Go Again","Man Of The Woods","Manic","Me And My Gang","Meduza","Meet The Orphans","Meet The Woo","Melim","Mellon Collie And The Infinite Sadness","Melly vs. Melvin","Memories...Do Not Open","Menagerie","Midnights","Minecraft - Volume Alpha","Minutes To Midnight","Mix Pa Llorar En Tu Cuarto","Modo Avi\xF3n","Monkey Business","Mono.","Montana","Montevallo","Moosetape","Morning View","Motivan2","Moving Pictures","Mr. Davis","Mr. Misunderstood","Mulan","Mura Masa","Music From The Edge Of Heaven","Music Of The Sun","My House","My Kinda Party","My Krazy Life","My Liver Will Handle What My Heart Can't","My Moment","My Own Lane","My Turn","My Worlds","Na Praia (Ao Vivo)","Nakamura","Nation Of Two","Navegando","Need You Now","Neon Future III","Neotheater","Never Trust A Happy Song","New English","News Of The World","Nicole","Night & Day","Nimmerland","Nimrod","Nine Track Mind","No Angel","No Me Pidas Perd\xF3n","No More Drama","No Protection","No Strings Attached","No Time To Die","Nobody Is Listening","Non Stop Erotic Cabaret","Non-Fiction","Northsbest","Nostalgia","Nostalgia, Ultra","Notes On A Conditional Form","Now Or Never","O Embaixador (Ao Vivo)","O My Heart","OK Computer","Ocean","Ocean Avenue","Ocean Eyes","Odisea","Oh My My","Oh, What A Life","On The 6","One In A Million","One More Light","One Of These Nights","Open Up And Say...Ahh!","Ordinary Man","Origins","Out Of The Blue","Over It","OzuTochi","PTSD","Pa Las Baby's Y Belikeada","Pa Que Hablen","Pa' Luego Es Tarde","Pa' Otro La 'O","Pablo Honey","Pain Is Love","Pain Is Temporary","Painting Pictures","Palmen Aus Plastik 2","Para Mi Ex","Para Siempre","Partners In Crime","Pawn Shop","Pegasus / Neon Shark VS Pegasus","Pet Sounds","Piece By Piece","Pier Pressure","Pineapple Sunrise","Piseiro 2020 Ao Vivo","Planet Pit","Plans","Play Deep","Playa Saturno","Por Primera Vez","Por Vida","Positions","Post Human: Survival Horror","Poster Girl","Prazer, Eu Sou Ferrugem (Ao Vivo)","Pretty Girls Like Trap Music","Pretty. Odd.","Prince Royce","Prisma","Prometo","Providence","Puberty 2","Punisher","Purgatory","Purple Rain","Que Bendici\xF3n","Queen Of The Clouds","Quiero Volver","R&G (Rhythm & Gangsta): The Masterpiece","Raise!","Ransom 2","Rapunzel","Rare","Re Mida","Ready To Die","Realer","Rebelde","Reclassified","Recovery","Recuerden Mi Estilo","Reggatta De Blanc","Regulate\u2026 G Funk Era","Reik","Reise, Reise","Relapse","Relaxing Piano Lullabies And Natural Sleep Aid For Baby Sleep Music","Religiously. The Album.","Replay","Results May Vary","Revenge","Revolve","Revolver","Ricky Martin","Rien 100 Rien","Ripcord","Rise And Fall, Rage And Grace","Rise Of An Empire","Robin Hood: Prince Of Thieves","Rock N Roll Jesus","Romance","Romances","Ronan","Royal Blood","Rumours","Sad Boyz 4 Life II","San Lucas","Santana World","Saturation III","Sauce Boyz","Savage Mode","Saxobeats","Scarlet","Schwarzes Herz","Seal The Deal & Let's Boogie","Section.80","Segundo Romance","Sehnsucht","Shake The Snow Globe","Shang-Chi And The Legend Of The Ten Rings: The Album","Sheer Heart Attack","Shiesty Season","Shock Value","Shoot For The Stars, Aim For The Moon","Signed Sealed And Delivered","Signos","Silent Alarm","Simplemente Gracias","Sin Bandera","Sing Me A Lullaby, My Sweet Temptation","Sinner","Sirio","Sit Still, Look Pretty","Skin","Slowhand","Smash","Smithereens","Snow Cougar","Social Cues","Some Girls","Song Hits From Holiday Inn","Songs For Dads","Songs For The Deaf","Songs For You, Truths For Me","Songs In The Key Of Life","Souled Out","Sounds Of Silence","Soy Como Quiero Ser","Speak Now","Speak Your Mind","Speakerboxxx/The Love Below","Spider-Man: Into The Spider-Verse","Split Decision","Square Up","SremmLife","Starboy","Stay +","Stay Dangerous","Staying At Tamara's","Steppenwolf","Stick Season","Still Bill","Straight Outta Compton","Strange Trails","Stronger","Suavemente","Sublime","Suck It and See","Sucker","Sue\xF1os","Sugar","Summer Forever","Summer,","Sunset Season","Sunshine On Leith","Surfer Rosa","Sweet Talker","SweetSexySavage","System Of A Down","TA13OO","Talk That Talk","Talking Heads: 77","Tangled Up","Tango In The Night","Taxi Driver","Taylor Swift","Tell Me It's Real","Ten","Ten Summoner's Tales","Terra Sem Cep (Ao Vivo)","Terral","Testing","Tha Carter III","Thank Me Later","That's Christmas To Me","The Academy","The Adventures Of Bobby Ray","The Album","The Andy Williams Christmas Album","The Aviary","The Balcony","The Battle Of Los Angeles","The Beatles (White Album)","The Beginning","The Better Life","The Big Day","The Book","The Breakfast Club","The Cars","The Colour And The Shape","The Death Of Peace Of Mind","The Diary Of Alicia Keys","The Documentary","The Emancipation Of Mimi","The Eminem Show","The End Of Everything","The Final Countdown","The Forever Story","The Foundation","The Goat","The Golden Child","The Good Parts","The Greatest Showman: Reimagined","The Green Trip","The Hardest Love","The Head And The Heart","The Human Condition","The Infamous","The Lady Killer","The Last Don II","The Lion King","The Lockdown Sessions","The London Sessions","The Lord Of The Rings: The Fellowship Of The Ring","The Lost Boy","The Magic Of Christmas / The Christmas Song","The Marshall Mathers LP","The Martin Garrix Collection","The Melodic Blue","The Mockingbird & The Crow","The Pains Of Growing","The Papercut Chronicles","The Perfect Luv Tape","The Pinkprint","The Predator","The Queen Is Dead","The ReVe Festival: Finale","The Rise And Fall Of Ziggy Stardust And The Spiders From Mars","The Rising Tied","The River","The Stone Roses","The Story Of Us","The Stranger","The Sufferer & The Witness","The Sun's Tirade","The Temptations Sing Smokey","The Time Of Our Lives","The Way It Is","The Wonderful World Of Sam Cooke","The Writing's On The Wall","The Young And The Hopeless","Therapy","Therapy Session","There Is More (Live)","There Is Nothing Left To Lose","These Things Happen","Third Eye Blind","This Is Me...Then","This Unruly Mess I've Made","Threat to Survival","Thrill Of The Chase","Time","Timelezz","To Let A Good Thing Die","To Pimp A Butterfly","Toast To Our Differences","Todos Os Cantos, Vol. 1 (Ao Vivo)","Too Hard","Torches X","Total Xanarchy","Toto IV","Toulouse Street","Tourist History","Toxicity","Tragic Kingdom","Tranquility Base Hotel & Casino","Traumazine","Traveler","Tres Hombres","Trip At Knight","Tron: Legacy","True Blue","True Colors","Trustfall","Tu Veneno Mortal","Tudo Em Paz","Ubuntu","Ugly Is Beautiful","Ultra 2021","Una Mattina","Unbroken","Uncovered","Under Pressure","Unsponsored Content","Unstoppable","Unwritten","Urban Flora","Urban Hymns","Use Your Illusion I","Veneer","Versions Of Me","Vibes","Vice Versa","Vices & Virtues","Victory","Vida","Viejo Marihuano","Visual\xEDzate","Walk Away","Walk Me Home...","Watch The Throne","Wave","We Broke The Rules","We Love You Tecca","We Love You Tecca 2","Weezer (Green Album)","Welcome To The Madhouse","Westlife","What A Time To Be Alive","What Do You Think About The Car?","What Is Love?","What Makes You Country","What Separates Me From You","What You See Is What You Get / What You See Ain't Always What You Get","When It's Dark Out","When We All Fall Asleep, Where Do We Go?","Where The Light Is","While The World Was Burning","White Pony","Whitney","Who Really Cares","Who You Are","Who's Next","Wide Open","Wilder Mind","Wildfire","Willy And The Poor Boys","Wings / You Never Walk Alone","Wish","Wish You Were Here","Without Warning","Wonder","X&Y","XOXO","Y Que Quede Claro","YBN: The Mixtape","Yo Creo","You Will Regret","Youngblood","Younger Now","Youth"];var Ye$1=["$NOT","$uicideboy$","(G)I-DLE","*NSYNC","2 Chainz","21 Savage","6LACK","? & The Mysterians","A Boogie Wit da Hoodie","A Taste of Honey","A Tribe Called Quest","A-Ha","ABBA","AC/DC","AJ Tracey","ATEEZ","Ace of Base","Adele","Ado","Aerosmith","Agust D","Aitana","Al Dexter & his Troopers","Al Green","Al Jolson","Al Martino","Alan Jackson","Alannah Myles","Alec Benjamin","Alejandro Sanz","Alesso","Alfredo Olivas","Ali Gatie","Alice In Chains","Alina Baraz","All Time Low","All-4-One","All-American Rejects","Alok","America","American Quartet","Amii Stewart","Amitabh Bhattacharya","Ana Castela","Anderson .Paak","Andy Grammer","Angus & Julia Stone","Anirudh Ravichander","Anita Ward","Anitta","Anton Karas","Anuel AA","Arcade Fire","Archie Bell & The Drells","Archies","Aretha Franklin","Arizona Zervas","Armin van Buuren","Arthur Conley","Artie Shaw","Asake","Asees Kaur","Association","Atif Aslam","Audioslave","Aventura","Avril Lavigne","Aya Nakamura","B J Thomas","B.o.B","BLACKPINK","BONES","BROCKHAMPTON","BTS","Baby Keem","Bachman-Turner Overdrive","Backstreet Boys","Bad Bunny","Badshah","Bailey Zimmerman","Banda El Recodo","Barbra Streisand","Barry White","Bazzi","Bebe Rexha","Becky G","Becky Hill","Bee Gees","Ben Bernie","Ben Howard","Ben Selvin","Berlin","Bessie Smith","Bethel Music","Bette Midler","Beyonce","Bibi Blocksberg","Bibi und Tina","BigXthaPlug","Bill Doggett","Bill Haley & his Comets","Bill Withers","Billy Davis Jr","Billy Joel","Billy Paul","Billy Preston","Billy Swan","Birdy","Bizarrap","Blake Shelton","Blur","Bob Marley & The Wailers","Bob Seger","Bobby Darin","Bobby Lewis","Bobby McFerrin","Bobby Vinton","Boney M.","Bonez MC","Bonnie Tyler","Booba","Boston","BoyWithUke","Boyce Avenue","Bradley Cooper","Bread","Brent Faiyaz","Brett Young","Bring Me The Horizon","Britney Spears","Brooks & Dunn","Bruce Channel","Bruno & Marrone","Bryan Adams","Bryce Vine","Buddy Holly","Burna Boy","C. Tangana","CKay","CRO","Camilo","Capital Bra","Captain & Tennille","Cardi B","Carin Leon","Carlos Vives","Carly Simon","Carpenters","Cavetown","Celine Dion","Central Cee","Chaka Khan","Champs","Charlie Rich","Chayanne","Cheat Codes","Cher","Chic","Chicago","Chris Brown","Chris Isaak","Chris Young","Christina Aguilera","Christina Perri","Christopher Cross","Chuck Berry","Ciara","Cigarettes After Sex","Cliff Edwards (Ukelele Ike)","Cody Johnson","Colbie Caillat","Colby O'Donis","Cole Swindell","Coleman Hawkins","Contours","Coolio","Count Basie","Cris Mj","Culture Club","Cyndi Lauper","D-Block Europe","DAY6","DJ Khaled","DJ Luian","DJ Nelson","DMX","DNCE","DaVido","Dadju","Daft Punk","Dan + Shay","Daniel Powter","Danny Ocean","Darius Rucker","Dave","David Bowie","David Guetta","Daya","Dean Martin","Deee-Lite","Deep Purple","Deftones","Demi Lovato","Dennis Lloyd","Denzel Curry","Dermot Kennedy","Desiigner","Devo","Dewa 19","Dexys Midnight Runners","Diddy","Dido","Die drei !!!","Diego & Victor Hugo","Diljit Dosanjh","Dimitri Vegas & Like Mike","Dinah Shore","Dionne Warwick","Dire Straits","Disclosure","Dixie Cups","Doja Cat","Dolly Parton","Don Diablo","Don Henley","Don McLean","Don Omar","Donna Summer","Donovan","Dr. Dre","Drake","Dreamville","Dua Lipa","EMF","ENHYPEN","Earth, Wind & Fire","Ed Sheeran","Eddie Cantor","Eddie Cochran","Eddy Howard","Edgar Winter Group","Edwin Hawkins Singers","Edwin Starr","El Alfa","Eladio Carrion","Electric Light Orchestra","Elevation Worship","Ella Henderson","Ellie Goulding","Elton John","Elvis Presley","Empire of the Sun","En Vogue","Enrique Iglesias","Eslabon Armado","Ethel Waters","Etta James","Evanescence","Exile","Extreme","Faith Hill","Fall Out Boy","Fanny Brice","Farruko","Fats Domino","Fats Waller","Feid","Felix Jaehn","Fergie","Fetty Wap","Fiersa Besari","Fifth Harmony","Fine Young Cannibals","Five Finger Death Punch","Fleetwood Mac","Flo-Rida","Florence + The Machine","Flume","Foo Fighters","Foreigner","Foster The People","Four Aces","Frank Ocean","Frank Sinatra","Frankie Avalon","Frankie Valli","Fred Astaire","Freda Payne","Freddie Dredd","Freddy Fender","French Montana","Fuerza Regida","Fujii Kaze","Future","G-Eazy","Garfunkel and Oates","Gary Lewis & The Playboys","Gary Numan","Gene Autry","Gene Chandler","Gene Vincent","George Michael","George Strait","Gera MX","Ghost","Ghostemane","Gigi D'Agostino","Gladys Knight & The Pips","Glass Animals","Glee Cast","Gloria Gaynor","Godsmack","Gorillaz","Gotye","Grand Funk Railroad","Green Day","Grouplove","Grupo Firme","Grupo Marca Registrada","Gryffin","Gucci Mane","Guess Who","Gunna","Gusttavo Lima","Guy Mitchell","Gwen Stefani","Gzuz","H.E.R.","HARDY","Hailee Steinfeld","Halsey","Hans Zimmer","Harris Jayaraj","Harry Chapin","Harry James","Harry Nilsson","Harry Styles","Hayley Williams","Herb Alpert","Herman's Hermits","Hillsong UNITED","Hillsong Worship","Hollywood Undead","Honey Cone","Hoobastank","Hues Corporation","I Prevail","ITZY","IVE","Ice Cube","Ice Spice","Iggy Azalea","Imagine Dragons","Incubus","Internet Money","Isaac Hayes","J Geils Band","J. Cole","JAY-Z","JJ Lin","JP Saxe","JVKE","Jack Harlow","Jack Johnson","Jackie Wilson","Jacquees","James Arthur","James Brown","James TW","James Taylor","Jamie Foxx","Janet Jackson","Janis Joplin","Jason Aldean","Jason Mraz","Jay Chou","Jay Sean","Jay Wheeler","Jaymes Young","Jean Knight","Jeezy","Jennifer Lopez","Jennifer Warnes","Jeremih","Jeremy Zucker","Jerry Lee Lewis","Jerry Murad's Harmonicats","Jess Glynne","Jessie J","Jewel","Jimi Hendrix","Jimin","Jimmie Rodgers","Jimmy Dean","Jo Stafford","Joan Jett & The Blackhearts","Joao Gilberto","Joel Corry","John Fred & The Playboy Band","John Legend","John Mayer","John Williams","Johnnie Ray","Johnnie Taylor","Johnny Cash","Johnny Horton","Johnny Mathis","Johnny Mercer","Johnny Nash","Joji","Jon Bellion","Jonas Blue","Jonas Brothers","Joni James","Jorja Smith","Juan Gabriel","Juan Luis Guerra 4.40","Juanes","Juice Newton","Julia Michaels","Justin Bieber","Justin Quiles","KALEO","KAROL G","KAYTRANADA","KK","KSI","KYLE","Kacey Musgraves","Kane Brown","Kanye West","Karan Aujla","Kate Smith","Katy Perry","Kay Kyser","Ke$ha","Kehlani","Kelly Clarkson","Kenny Chesney","Kenny Loggins","Kenny Rogers","Kenshi Yonezu","Kenya Grace","Kevin Gates","Key Glock","Khalid","Kim Carnes","Kim Petras","Kimbra","Kina","King Gnu","Kings of Leon","Kingsmen","Kitty Kallen","Kodak Black","Kodaline","Kollegah","Kool & The Gang","Kungs","Kygo","Kylie Minogue","LE SSERAFIM","LISA","LMFAO","LUDMILLA","La Adictiva Banda San Jos\xE9 de Mesillas","La Oreja de Van Gogh","Labrinth","Lady Antebellum","Lady GaGa","Lainey Wilson","Lana Del Rey","Latto","Lauryn Hill","Lauv","League of Legends","Lee Brice","Leon Bridges","Leona Lewis","Lesley Gore","Leslie Odom Jr.","Liam Payne","Lifehouse","Lil Baby","Lil Dicky","Lil Durk","Lil Mosey","Lil Nas X","Lil Pump","Lil Skies","Lil Tjay","Lil Uzi Vert","Lil Yachty","Lil' Kim","Lil' Wayne","Lin-Manuel Miranda","Linkin Park","Lionel Richie","Lipps Inc","Lisa Loeb","Little Peggy March","Little Richard","Lofi Fruits Music","Lord Huron","Los Del Rio","Los Dos Carnales","Los Lobos","Los Temerarios","Los Tigres Del Norte","Los Tucanes De Tijuana","Lou Reed","Loud Luxury","Louis Jordan","Louis Tomlinson","Love Unlimited","Lovin' Spoonful","Luan Santana","Luciano","Luis Miguel","Luis R Conriquez","Lulu","Lunay","Lupe Fiasco","M","MAX","MC Hammer","MC Ryan SP","MKTO","Mabel","Machine Gun Kelly","Madison Beer","Madonna","Mahalini","Major Lazer","Mambo Kingz","Maneskin","Marco Antonio Sol\xEDs","Margaret Whiting","Maria Becerra","Mario","Mario Lanza","Mark Ronson","Maroon 5","Marshmello","Martin Garrix","Mary Ford","Mary J Blige","Mary J. Blige","Mary Wells","Matoma","Mau y Ricky","Meek Mill","Megadeth","Melanie","Melanie Martinez","Melendi","Men At Work","Metro Boomin","Michael Bubl\xE9","Michael Jackson","Michael McDonald","Michael Sembello","Miguel","Mike Posner","Miley Cyrus","Milky Chance","Minnie Riperton","Miracle Tones","Miranda Lambert","Mohit Chauhan","Mon Laferte","Moneybagg Yo","Monsta X","Mora","Morad","Morat","Mother Mother","Motley Crue","Ms. Lauryn Hill","Mumford & Sons","Muse","Mya","Myke Towers","NCT 127","NCT DREAM","NEFFEX","Nadin Amizah","Nancy Sinatra","Nat King Cole","Nate Smith","Natti Natasha","Nayer","Neil Diamond","Neil Sedaka","Nekfeu","Nelly","New Vaudeville Band","Next","Nickelback","Nicki Minaj","Nicki Nicole","Nicky Jam","Nina Simone","Ninho","Nipsey Hussle","Nirvana","Niska","No Doubt","Norah Jones","Normani","OMI","ONE OK ROCK","Oasis","Official HIGE DANdism","Offset","Old Dominion","Oliver Heldens","Olivia Rodrigo","Omah Lay","One Direction","Otis Redding","OutKast","Owl City","P Diddy","P!nk","PLK","PNL","Pamungkas","Passenger","Pat Boone","Patsy Cline","Patti LaBelle","Patti Page","Paul & Paula","Paul Revere & the Raiders","Paul Robeson","Paul Russell","Paul Whiteman","Paula Abdul","Peaches & Herb","Pearl Jam","Pee Wee Hunt","Pee Wee King","Pentatonix","Percy Faith","Percy Sledge","Peso Pluma","Peter Cetera","Peter Gabriel","Peter, Paul & Mary","Pharrell Williams","Pierce The Veil","Pineapple StormTv","Pink Floyd","Pink Sweat$","Piso 21","Pitbull","Plan B","Player","Polo G","Pop Smoke","Portugal. The Man","Pouya","Prince","Prince Royce","Pusha T","Quality Control","Queen","Quinn XCII","R. Kelly","RAF Camora","RAYE","REM","REO Speedwagon","Radiohead","Rag'n'Bone Man","Rage Against The Machine","Rahat Fateh Ali Khan","Rainbow Kitten Surprise","Rammstein","Rauw Alejandro","Ray Charles","Ray Parker Jr","Ray Stevens","Red Foley","Red Hot Chili Peppers","Red Velvet","Regard","Regina Belle","Reik","Rels B","Rema","Ricardo Arjona","Rich The Kid","Rick Astley","Rick Dees & his Cast of Idiots","Rick Ross","Rick Springfield","Ricky Martin","Ricky Nelson","Rihanna","Rita Ora","Ritchie Valens","Rizky Febian","Rob Thomas","Roberta Flack","Robin Schulz","Robin Thicke","Rod Stewart","Rod Wave","Roddy Ricch","Roger Miller","Romeo Santos","Rosemary Clooney","Roxette","Roy Acuff","Roy Orbison","Rudimental","Ruel","Ruth B.","Ryan Lewis","SCH","SEVENTEEN","SWV","Sabaton","Sabrina Carpenter","Sachet Tandon","Sachin-Jigar","Sade","Sam Cooke","Sam Feldt","Sam Hunt","Sam Smith","Sam The Sham & The Pharaohs","Sammy Davis Jr","Sammy Kaye","Santana","Sasha Alex Sloan","Savage Garden","Saweetie","Scorpions","Sean Kingston","Sean Paul","Sebastian Yatra","Sech","Seeb","Sezen Aksu","Sfera Ebbasta","Shaggy","Shania Twain","Shawn Mendes","Sheena Easton","Shinedown","Shubh","Sia","Sid Sriram","Sidhu Moose Wala","Silk","Silver Convention","Simon & Garfunkel","Sinead O'Connor","Sir Mix-a-Lot","Sister Sledge","Ski Mask The Slump God","Skillet","Skrillex","Sleeping At Last","Smokey Robinson","Snoop Dogg","Snow Patrol","Soda Stereo","Sonu Nigam","Sophie Ellis-Bextor","Spencer Davis Group","Spice Girls","Stan Getz","Starland Vocal Band","Stephen Sanchez","Steve Aoki","Steve Lacy","Steve Winwood","Stevie B","Sting","Stormzy","Strawberry Alarm Clock","Stray Kids","Stromae","Sublime","Sum 41","Summer Walker","Supertramp","Survivor","Swedish House Mafia","System Of A Down","T-Pain","T.I.","TAEYEON","TKKG","TLC","TOMORROW X TOGETHER","TOTO","TWICE","Tag Team","Tainy","Tammi Terrell","Tanishk Bagchi","Tate McRae","Taylor Swift","Tears For Fears","Tems","Tennessee Ernie Ford","Terence Trent D'Arby","Teresa Brewer","Terry Jacks","The Ames Brothers","The Animals","The B52s","The Bangles","The Beatles","The Black Eyed Peas","The Black Keys","The Box Tops","The Chainsmokers","The Chiffons","The Chordettes","The Clash","The Coasters","The Commodores","The Cowsills","The Cranberries","The Crew-Cuts","The Cure","The Detroit Spinners","The Diamonds","The Doobie Brothers","The Doors","The Drifters","The Emotions","The Eurythmics","The Fireballs","The Flamingos","The Foundations","The Four Seasons","The Fray","The Game","The Go Gos","The Goo Goo Dolls","The Head And The Heart","The Hollies","The Ink Spots","The Isley Brothers","The Jackson 5","The Kid LAROI","The Killers","The Kingston Trio","The Kooks","The Lemon Pipers","The Living Tombstone","The Lumineers","The Mamas & The Papas","The Marvelettes","The McCoys","The Mills Brothers","The Miracles","The Monkees","The Moody Blues","The National","The Neighbourhood","The Notorious B.I.G.","The O'Jays","The Offspring","The Osmonds","The Partridge Family","The Penguins","The Pet Shop Boys","The Platters","The Righteous Brothers","The Rolling Stones","The Ronettes","The Score","The Script","The Seekers","The Shangri-Las","The Smashing Pumpkins","The Staple Singers","The Strokes","The Supremes","The Temptations","The Turtles","The Vamps","The Verve","The Village People","The Weavers","The White Stripes","The Young Rascals","The Zombies","Thelma Houston","Thomas Rhett","Three Days Grace","Three Dog Night","Three Man Down","Timbaland","Timmy Trumpet","Toby Keith","Tom Jones","Tom Petty and the Heartbreakers","Tommy Dorsey","Tommy Edwards","Tommy James & the Shondells","Tone Loc","Toni Braxton","Topic","Tory Lanez","Tove Lo","Trevor Daniel","Trey Songz","Trippie Redd","Trueno","Tulsi Kumar","Tulus","Twenty One Pilots","Two Feet","Ty Dolla $ign","Tyga","Tyler Hubbard","U2","UB40","UZI","Ufo361","Upchurch","V","Vampire Weekend","Van McCoy","Van Morrison","Vance Joy","Vanessa Carlton","Vanessa Williams","Vera Lynn","Vernon Dalhart","Vicente Fernandez","Vishal-Shekhar","Volbeat","WILLOW","Wale","Wallows","Weezer","Wham!","Whitney Houston","Why Don't We","Wilbert Harrison","Wilson Phillips","Wiz Khalifa","Woody Guthrie","Wyclef Jean","XXXTENTACION","Xavi","YG","YNW Melly","YOASOBI","Yandel","Years & Years","Yeat","Yo Gotti","Young Dolph","Young Miko","Young Thug","YoungBoy Never Broke Again","Yung Gravy","Yuuri","Yuvan Shankar Raja","ZAYN","ZZ Top","Zac Brown Band","Zach Bryan","Zara Larsson","aespa","benny blanco","blink-182","d4vd","deadmau5","girl in red","gnash","iann dior","will.i.am"];var je$1=["Acid House","Acid Jazz","Acid Rock","Acoustic","Acoustic Blues","Afro-Pop","Afrobeat","Alt-Rock","Alternative","Ambient","American Trad Rock","Americana","Anime","Arena Rock","Art-Rock","Avant-Garde","Avant-Punk","Baladas y Boleros","Barbershop","Baroque","Bebop","Big Band","Black Metal","Blue Note","Bluegrass","Blues","Boogaloo","Bop","Bossa Nova","Bounce","Brazilian Funk","Breakbeat","Britpop","CCM","Cajun","Cantopop","Celtic","Celtic Folk","Chamber Music","Chant","Chanukah","Chicago Blues","Chicago House","Chicano","Children\u2019s Music","Chill","Choral","Christian","Christmas","Classical","Club","College Rock","Conjunto","Cool Jazz","Country","Crunk","Dance","Dancehall","Death Metal","Deep House","Delta Blues","Detroit Techno","Dirty South","Disco","Disney","Dixieland","Doo-wop","Downtempo","Dream Pop","Drill","Drinking Songs","Drone","Drum'n'bass","Dub","Dubstep","EDM","Early Music","East Coast Rap","Easter","Easy Listening","Eclectic","Electric Blues","Electro","Electronic","Electronica","Emo","Enka","Environmental","Ethio-jazz","Experimental","Experimental Rock","Flamenco","Folk","Folk-Rock","Forro","French Pop","Funk","Fusion","Gangsta Rap","Garage","German Folk","German Pop","Glam Rock","Gospel","Goth","Grime","Grindcore","Groove","Grunge","Hair Metal","Halloween","Happy","Hard Bop","Hard Dance","Hard Rock","Hardcore","Hardcore Punk","Hardcore Rap","Hardstyle","Healing","Heavy Metal","High Classical","Hip Hop","Holiday","Honky Tonk","House","IDM","Impressionist","Indie","Industrial","Instrumental","J-Dance","J-Idol","J-Pop","J-Punk","J-Rock","J-Ska","J-Synth","Jackin House","Jam Bands","Japanese Pop","Jazz","Jungle","K-Pop","Karaoke","Kayokyoku","Kids","Kitsch","Klezmer","Krautrock","Latin","Latin Jazz","Latin Rap","Local","Lounge","Lullabies","MPB","Mainstream Jazz","Malay","Mandopop","March","Mariachi","Mawwal","Medieval","Meditation","Metal","Metalcore","Minimal Techno","Minimalism","Modern","Motown","Mugham","Musicals","Musique Concr\xE8te","Nature","Neo-Soul","Nerdcore","New Acoustic","New Age","New Mex","New Wave","No Wave","Noise","Nordic","Novelty","OPM","Oi!","Old School Rap","Opera","Orchestral","Original Score","Outlaw Country","Pagode","Party","Piano","Polka","Pop","Pop Film","Pop Latino","Post Dubstep","Power Pop","Praise & Worship","Progressive House","Progressive Rock","Proto-punk","Psych Rock","Psychedelic","Punk","Punk Rock","Qawwali","Quiet Storm","R&B","Ragtime","Rainy Day","Rap","Reggae","Reggaeton","Regional Mexicano","Relaxation","Renaissance","Retro","Rock","Rockabilly","Rocksteady","Romance","Romantic","Roots Reggae","Roots Rock","SKA","Sad","Salsa","Samba","Second Line","Sertanejo","Shaabi","Shoegaze","Sleep","Smooth Jazz","Soft Rock","Soul","Soundtrack","Southern Gospel","Southern Rock","Space Rock","Stage And Screen","Steampunk","Summer","Surf","Swamp Pop","Swing","Synth Pop","Tango","Techno","Teen Pop","Tejano","Tex-Mex","Thanksgiving","Traditional","Trance","Trip Hop","Tropical","Underground Rap","Urban","Urban Cowboy","West Coast Rap","Western Swing","World","Worldbeat","Zydeco"];var qe$1=["(Everything I Do) I Do it For You","(Ghost) Riders in the Sky","(I Can't Get No) Satisfaction","(I've Got a Gal In) Kalamazoo","(I've Had) the Time of My Life","(It's No) Sin","(Just Like) Starting Over","(Let Me Be Your) Teddy Bear","(Put Another Nickel In) Music! Music! Music!","(Sexual) Healing","(Sittin' On) the Dock of the Bay","(They Long to Be) Close to You","(You Keep Me) Hangin' On","(You're My) Soul & Inspiration","(Your Love Keeps Lifting Me) Higher & Higher","12th Street Rag","1999","19th Nervous Breakdown","50 Ways to Leave Your Lover","9 to 5","96 Tears","A Boy Named Sue","A Hard Day's Night","A String of Pearls","A Thousand Miles","A Tree in the Meadow","A Whiter Shade of Pale","A Whole New World (Aladdin's Theme)","A Woman in Love","A-Tisket A-Tasket","ABC","Abracadabra","Ac-cent-tchu-ate the Positive","Addicted to Love","After You've Gone","Afternoon Delight","Again","Against All Odds (Take a Look At Me Now)","Ain't Misbehavin'","Ain't No Mountain High Enough","Ain't No Sunshine","Ain't That a Shame","Airplanes","All Along the Watchtower","All I Have to Do is Dream","All I Wanna Do","All My Lovin' (You're Never Gonna Get It)","All Night Long (All Night)","All Out of Love","All Shook Up","All You Need is Love","Alone","Alone Again (Naturally)","Always On My Mind","American Pie","American Woman","Angie","Another Brick in the Wall (part 2)","Another Day in Paradise","Another Night","Another One Bites the Dust","Apologize","April Showers","Aquarius/Let The Sunshine In","Are You Lonesome Tonight?","Arthur's Theme (Best That You Can Do)","As Time Goes By","At Last","At the Hop","Auf Wiederseh'n Sweetheart","Baby Baby","Baby Come Back","Baby Got Back","Baby Love","Baby One More Time","Bad","Bad Day","Bad Girls","Bad Moon Rising","Bad Romance","Baker Street","Ball of Confusion (That's What the World is Today)","Ballad of the Green Berets","Ballerina","Band On the Run","Band of Gold","Battle of New Orleans","Be Bop a Lula","Be My Baby","Be My Love","Beat It","Beautiful Day","Beauty & the Beast","Because I Love You (The Postman Song)","Because You Loved Me","Because of You","Before The Next Teardrop Falls","Begin the Beguine","Behind Closed Doors","Being With You","Believe","Ben","Bennie & the Jets","Besame Mucho","Best of My Love","Bette Davis Eyes","Big Bad John","Big Girls Don't Cry","Billie Jean","Bitter Sweet Symphony","Black Or White","Black Velvet","Blaze of Glory","Bleeding Love","Blue Suede Shoes","Blue Tango","Blueberry Hill","Blurred Lines","Body & Soul","Bohemian Rhapsody","Boogie Oogie Oogie","Boogie Woogie Bugle Boy","Boom Boom Pow","Born in the USA","Born to Be Wild","Born to Run","Boulevard of Broken Dreams","Brand New Key","Brandy (You're A Fine Girl)","Breaking Up is Hard to Do","Breathe","Bridge Over Troubled Water","Brother","Brother Louie","Brown Eyed Girl","Brown Sugar","Build Me Up Buttercup","Burn","Buttons & Bows","Bye","Bye Bye","Bye Bye Love","Caldonia Boogie (What Makes Your Big Head So Hard)","California Dreamin'","California Girls","Call Me","Call Me Maybe","Can You Feel the Love Tonight","Can't Buy Me Love","Can't Get Enough of Your Love","Can't Help Falling in Love","Candle in the Wind '97","Candy Man","Car Wash","Careless Whisper","Cars","Cat's in the Cradle","Cathy's Clown","Celebration","Centerfold","Chain of Fools","Chances Are","Change the World","Chapel of Love","Chattanooga Choo Choo","Chattanoogie Shoe-Shine Boy","Check On It","Cheek to Cheek","Cherish","Cherry Pink & Apple Blossom White","Cold","Colors of the Wind","Come On Eileen","Come On-a My House","Come Together","Coming Up","Cracklin' Rosie","Crazy","Crazy For You","Crazy Little Thing Called Love","Crazy in Love","Creep","Crimson & Clover","Crocodile Rock","Cry","Cry Like a Baby","Crying","Da Doo Ron Ron (When He Walked Me Home)","Dance to the Music","Dancing Queen","Dancing in the Dark","Dancing in the Street","Dardanella","Daydream Believer","December 1963 (Oh What a Night)","Delicado","Dilemma","Disco Duck","Disco Lady","Disturbia","Dizzy","Do That to Me One More Time","Do Wah Diddy Diddy","Do Ya Think I'm Sexy?","Do You Love Me?","Don't Be Cruel","Don't Fence Me In","Don't Go Breaking My Heart","Don't Leave Me This Way","Don't Let the Stars Get in Your Eyes","Don't Let the Sun Go Down On Me","Don't Speak","Don't Stop 'Til You Get Enough","Don't Worry Be Happy","Don't You (Forget About Me)","Don't You Want Me","Doo Wop (That Thing)","Down","Down Hearted Blues","Down Under","Downtown","Dreamlover","Dreams","Drop it Like It's Hot","Drops of Jupiter (Tell Me)","Duke of Earl","E.T.","Earth Angel","Ebony & Ivory","Eight Days a Week","Empire State Of Mind","End of the Road","Endless Love","Escape (The Pina Colada Song)","Eve of Destruction","Every Breath You Take","Every Little Thing She Does is Magic","Everybody Loves Somebody","Everybody Wants to Rule the World","Everyday People","Eye of the Tiger","Faith","Fallin'","Fame","Family Affair","Fantasy","Fast Car","Feel Good Inc","Feel Like Making Love","Fire & Rain","Firework","Flashdance. What a Feeling","Fly Robin Fly","Foolish Games","Footloose","For What It's Worth (Stop","Fortunate Son","Frankenstein","Freak Me","Freebird","Frenesi","Funkytown","Gangsta's Paradise","Georgia On My Mind","Georgy Girl","Get Back","Get Down Tonight","Get Off of My Cloud","Ghostbusters","Gimme Some Lovin'","Girls Just Wanna Have Fun","Give Me Everything","Gives You Hell","Glamorous","Glory of Love","Go Your Own Way","God Bless America","God Bless the Child","Gold Digger","Gonna Make You Sweat (Everybody Dance Now)","Good Lovin'","Good Times","Good Vibrations","Goodbye Yellow Brick Road","Goodnight","Got to Give it Up","Grease","Great Balls of Fire","Greatest Love of All","Green Onions","Green River","Green Tambourine","Grenade","Groove is in the Heart","Groovin'","Gypsies","Hair","Hang On Sloopy","Hanging by a Moment","Hanky Panky","Happy Days Are Here Again","Happy Together","Harbour Lights","Hard to Say I'm Sorry","Harper Valley PTA","Have You Ever Really Loved a Woman?","He'll Have to Go","He's So Fine","He's a Rebel","Heart of Glass","Heart of Gold","Heartbreak Hotel","Hello","Hello Dolly","Help Me","Help!","Here Without You","Here in My Heart","Hero","Hey Baby","Hey Jude","Hey Paula","Hey There","Hey There Delilah","Hey Ya!","Higher Love","Hips don't lie","Hit the Road","Hold On","Hollaback Girl","Honey","Honky Tonk","Honky Tonk Woman","Horse With No Name","Hot Child In The City","Hot Stuff","Hotel California","Hound Dog","House of the Rising Sun","How Deep is Your Love?","How Do I Live?","How Do You Mend a Broken Heart","How High the Moon","How Much is That Doggy in the Window?","How Will I Know","How You Remind Me","How to Save a Life","Hungry Heart","Hurt So Good","I Believe I Can Fly","I Can Dream","I Can Help","I Can See Clearly Now","I Can't Get Next to You","I Can't Get Started","I Can't Go For That (No Can Do)","I Can't Help Myself (Sugar Pie","I Can't Stop Loving You","I Don't Want to Miss a Thing","I Fall to Pieces","I Feel Fine","I Feel For You","I Feel Love","I Get Around","I Got You (I Feel Good)","I Got You Babe","I Gotta Feeling","I Heard it Through the Grapevine","I Honestly Love You","I Just Called to Say I Love You","I Just Wanna Be Your Everything","I Kissed A Girl","I Love Rock 'n' Roll","I Need You Now","I Only Have Eyes For You","I Shot the Sheriff","I Still Haven't Found What I'm Looking For","I Swear","I Think I Love You","I Walk the Line","I Wanna Dance With Somebody (Who Loves Me)","I Wanna Love You","I Want You Back","I Want to Hold Your Hand","I Want to Know What Love Is","I Went to Your Wedding","I Will Always Love You","I Will Follow Him","I Will Survive","I Write the Songs","I'll Be Missing You","I'll Be There","I'll Make Love to You","I'll Never Smile Again","I'll Take You There","I'll Walk Alone","I'll be seeing you","I'm Looking Over a Four Leaf Clover","I'm So Lonesome I Could Cry","I'm Sorry","I'm Walking Behind You","I'm Your Boogie Man","I'm Yours","I'm a Believer","I've Heard That Song Before","If (They Made Me a King)","If I Didn't Care","If You Don't Know Me By Now","If You Leave Me Now","Imagine","In Da Club","In the End","In the Ghetto","In the Mood","In the Summertime","In the Year 2525 (Exordium & Terminus)","Incense & Peppermints","Indian Reservation (The Lament Of The Cherokee Reservation Indian)","Instant Karma","Iris","Ironic","Irreplaceable","It Had to Be You","It's All in the Game","It's My Party","It's Now Or Never","It's Still Rock 'n' Roll to Me","It's Too Late","Jack & Diane","Jailhouse Rock","Jessie's Girl","Jive Talkin'","Johnny B Goode","Joy to the World","Judy in Disguise (With Glasses)","Jump","Jumpin' Jack Flash","Just Dance","Just My Imagination (Running Away With Me)","Just the Way You Are","Kansas City","Karma Chameleon","Keep On Loving You","Killing Me Softly With His Song","King of the Road","Kiss","Kiss & Say Goodbye","Kiss From a Rose","Kiss Me","Kiss On My List","Kiss You All Over","Knock On Wood","Knock Three Times","Kokomo","Kryptonite","Kung Fu Fighting","La Bamba","Lady","Lady Marmalade (Voulez-Vous Coucher Aver Moi Ce Soir?)","Last Train to Clarksville","Layla","Le Freak","Leader of the Pack","Lean On Me","Leaving","Let Me Call You Sweetheart","Let Me Love You","Let it Be","Let it Snow! Let it Snow! Let it Snow!","Let's Dance","Let's Get it On","Let's Groove","Let's Hear it For the Boy","Let's Stay Together","Light My Fire","Lights","Like a Prayer","Like a Rolling Stone","Like a Virgin","Little Darlin'","Little Things Mean a Lot","Live & Let Die","Livin' La Vida Loca","Livin' On a Prayer","Living For the City","Locked Out Of Heaven","Lola","Lonely Boy","Long Cool Woman in a Black Dress","Long Tall Sally","Look Away","Lookin' Out My Back Door","Lose Yourself","Losing My Religion","Louie Louie","Love Child","Love Hangover","Love In This Club","Love Is Blue (L'Amour Est Bleu)","Love Letters in the Sand","Love Me Do","Love Me Tender","Love Shack","Love Theme From 'A Star is Born' (Evergreen)","Love Train","Love Will Keep Us Together","Love is a Many Splendoured Thing","Love to Love You Baby","Love's Theme","Loving You","Low","Macarena","Mack the Knife","Maggie May","Magic","Magic Carpet Ride","Make Love to Me","Make it With You","Makin' Whoopee","Mama Told Me Not to Come","Man in the Mirror","Manana (Is Soon Enough For Me)","Maneater","Maniac","Maybellene","Me & Bobby McGee","Me & Mrs Jones","Memories Are Made of This","Mercy Mercy Me (The Ecology)","Mickey","Midnight Train to Georgia","Minnie the Moocher","Miss You","Miss You Much","Mister Sandman","Mmmbop","Mona Lisa","Monday Monday","Money For Nothing","Mony Mony","Mood Indigo","Moonlight Cocktail","Moonlight Serenade","More Than Words","More Than a Feeling","Morning Train (Nine to Five)","Mr Big Stuff","Mr Brightside","Mr Tambourine Man","Mrs Brown You've Got a Lovely Daughter","Mrs Robinson","Mule Train","Music","My Blue Heaven","My Boyfriend's Back","My Eyes Adored You","My Girl","My Guy","My Heart Will Go On","My Life","My Love","My Man","My Prayer","My Sharona","My Sweet Lord","Na Na Hey Hey (Kiss Him Goodbye)","Nature Boy","Near You","Need You Now","Need You Tonight","Never Gonna Give You Up","Night & Day","Night Fever","Nights in White Satin","No One","No Scrubs","Nobody Does it Better","Nothin' on You","Nothing Compares 2 U","Nothing's Gonna Stop Us Now","Ode To Billie Joe","Oh","Oh Happy Day","Oh My Papa (O Mein Papa)","Ol' Man River","Ole Buttermilk Sky","On Bended Knee","On My Own","On the Atchison","One","One Bad Apple","One More Try","One O'Clock Jump","One Sweet Day","One of These Nights","One of Us","Only The Lonely (Know The Way I Feel)","Only You (And You Alone)","Open Arms","Over There","Over the Rainbow","Paint it Black","Papa Don't Preach","Papa Was a Rolling Stone","Papa's Got a Brand New Bag","Paper Doll","Paper Planes","Paperback Writer","Party Rock Anthem","Peg o' My Heart","Peggy Sue","Pennies From Heaven","Penny Lane","People","People Got to Be Free","Personality","Philadelphia Freedom","Physical","Piano Man","Pick Up the Pieces","Pistol Packin' Mama","Play That Funky Music","Please Mr Postman","Poker Face","Pon De Replay","Pony Time","Pop Muzik","Prisoner of Love","Private Eyes","Promiscuous","Proud Mary","Purple Haze","Purple Rain","Puttin' on the Ritz","Que sera sera (Whatever will be will be)","Queen of Hearts","Rag Doll","Rag Mop","Rags to Riches","Raindrops Keep Falling On My Head","Rapture","Ray of Light","Reach Out (I'll Be There)","Red Red Wine","Rehab","Respect","Return to Sender","Reunited","Revolution","Rhapsody in Blue","Rhinestone Cowboy","Rich Girl","Riders On the Storm","Right Back Where We Started From","Ring My Bell","Ring of Fire","Rock Around the Clock","Rock With You","Rock Your Baby","Rock the Boat","Rock the Casbah","Roll Over Beethoven","Roll With It","Rolling In The Deep","Rosanna","Roses Are Red","Royals","Ruby Tuesday","Rudolph","Rum & Coca-Cola","Runaround Sue","Runaway","Running Scared","Rush Rush","Sailing","Save the Best For Last","Save the Last Dance For Me","Say It Right","Say My Name","Say Say Say","Say You","School's Out","Seasons in the Sun","Secret Love","Sentimental Journey","Sexyback","Sh-Boom (Life Could Be a Dream)","Shadow Dancing","Shake Down","Shake You Down","She Drives Me Crazy","She Loves You","She's a Lady","Shining Star","Shop Around","Shout","Silly Love Songs","Since U Been Gone","Sing","Singing The Blues","Single Ladies (Put A Ring On It)","Sir Duke","Sixteen Tons","Sledgehammer","Sleep Walk","Sleepy Lagoon","Slow Poke","Smells Like Teen Spirit","Smoke Gets in Your Eyes","Smoke On the Water","Smoke! Smoke! Smoke! (That Cigarette)","Smooth","So Much in Love","Soldier Boy","Some Enchanted Evening","Some of These Days","Somebody That I Used to Know","Somebody to Love","Someday","Somethin' Stupid","Something","Soul Man","Spanish Harlem","Spill the Wine","Spinning Wheel","Spirit in the Sky","St George & the Dragonette","St Louis Blues","Stagger Lee","Stairway to Heaven","Stand By Me","Stardust","Stars & Stripes Forever","Stay (I Missed You)","Stayin' Alive","Stop! in the Name of Love","Stormy Weather (Keeps Rainin' All the Time)","Straight Up","Strange Fruit","Stranger On the Shore","Strangers in the Night","Strawberry Fields Forever","Streets of Philadelphia","Stronger","Stuck On You","Sugar Shack","Sugar Sugar","Summer in the City","Summertime Blues","Sunday","Sunshine Superman","Sunshine of Your Love","Superstar","Superstition","Surfin' USA","Suspicious Minds","Swanee","Sweet Caroline (Good Times Never Seemed So Good)","Sweet Child O' Mine","Sweet Dreams (Are Made of This)","Sweet Georgia Brown","Sweet Home Alabama","Sweet Soul Music","Swinging On a Star","T For Texas (Blue Yodel No 1)","TSOP (The Sound of Philadelphia)","Take Me Home","Take My Breath Away","Take On Me","Take The 'A' Train","Take a Bow","Tammy","Tangerine","Tears in Heaven","Tears of a Clown","Temperature","Tennessee Waltz","Tequila","Tha Crossroads","Thank You (Falettinme be Mice Elf Again)","That Lucky Old Sun (Just Rolls Around Heaven All Day)","That Old Black Magic","That'll Be the Day","That's Amore","That's What Friends Are For","That's the Way (I Like It)","That's the Way Love Goes","The Boy is Mine","The Boys of Summer","The Christmas Song (Chestnuts Roasting On An Open Fire)","The End of the World","The First Time Ever I Saw Your Face","The Girl From Ipanema","The Glow-Worm","The Great Pretender","The Gypsy","The Hustle","The Joker","The Last Dance","The Letter","The Loco-Motion","The Long & Winding Road","The Love You Save","The Morning After","The Power of Love","The Prisoner's Song","The Reason","The Rose","The Sign","The Song From Moulin Rouge (Where Is Your Heart)","The Sounds of Silence","The Streak","The Sweet Escape","The Thing","The Tide is High","The Tracks of My Tears","The Twist","The Wanderer","The Way We Were","The Way You Look Tonight","The Way You Move","Theme From 'A Summer Place'","Theme From 'Greatest American Hero' (Believe It Or Not)","Theme From 'Shaft'","There goes my baby","These Boots Are Made For Walking","Third Man Theme","This Diamond Ring","This Guy's in Love With You","This Land is Your Land","This Love","This Ole House","This Used to Be My Playground","Three Coins in the Fountain","Three Times a Lady","Thrift Shop","Thriller","Ticket to Ride","Tie a Yellow Ribbon 'round the Old Oak Tree","Tiger Rag","Tighten Up","Tik-Toc","Till I Waltz Again With You","Till The End of Time","Time After Time","Time of the Season","To Sir","Tom Dooley","Tonight's the Night (Gonna Be Alright)","Too Close","Too Young","Tossing & Turning","Total Eclipse of the Heart","Touch Me","Toxic","Travellin' Band","Travellin' Man","Truly Madly Deeply","Turn! Turn! Turn! (To Everything There is a Season)","Tutti Frutti","Twist & Shout","Two Hearts","U Can't Touch This","U Got it Bad","Umbrella","Un-Break My Heart","Unbelievable","Unchained Melody","Uncle Albert (Admiral Halsey)","Under the Boardwalk","Under the Bridge","Unforgettable","Up Around the Bend","Up Up & Away","Up Where We Belong","Upside Down","Use Somebody","Vaya Con Dios (may God Be With You)","Venus","Vision of Love","Viva La Vida","Vogue","Volare","Wabash Cannonball","Waiting For a Girl Like You","Wake Me Up Before You Go Go","Wake Up Little Susie","Walk Don't Run","Walk Like a Man","Walk Like an Egyptian","Walk On By","Walk On the Wild Side","Walk This Way","Wannabe","Want Ads","Wanted","War","Waterfalls","Wayward Wind","We Are Family","We Are Young","We Are the Champions","We Are the World","We Belong Together","We Built This City","We Can Work it Out","We Didn't Start the Fire","We Found Love","We Got The Beat","We Will Rock You","We've Only Just Begun","Weak","Wedding Bell Blues","West End Blues","West End Girls","What Goes Around Comes Around","What a Fool Believes","What'd I Say","What's Going On?","What's Love Got to Do With It?","Whatcha Say","Wheel of Fortune","When Doves Cry","When You Wish Upon a Star","When a Man Loves a Woman","Where Did Our Love Go","Where is the Love?","Whip It","Whispering","White Christmas","White Rabbit","Whole Lotta Love","Whole Lotta Shakin' Goin' On","Whoomp! (There it Is)","Why Do Fools Fall in Love?","Why Don't You Believe Me?","Wichita Lineman","Wicked Game","Wild Thing","Wild Wild West","Will It Go Round In Circles","Will You Love Me Tomorrow","Winchester Cathedral","Wind Beneath My Wings","Wipe Out","Wishing Well","With Or Without You","Without Me","Without You","Woman","Won't Get Fooled Again","Wooly Bully","Working My Way Back to You","YMCA","Yakety Yak","Yeah!","Yellow Rose of Texas","Yesterday","You Ain't Seen Nothin' Yet","You Always Hurt the One You Love","You Are the Sunshine of My Life","You Belong With Me","You Belong to Me","You Can't Hurry Love","You Don't Bring Me Flowers","You Don't Have to Be a Star (To Be in My Show)","You Light Up My Life","You Make Me Feel Brand New","You Make Me Feel Like Dancing","You Really Got Me","You Send Me","You Sexy Thing","You Were Meant for Me","You make Me Wanna","You'll Never Know","You're Beautiful","You're So Vain","You're Still the One","You're the One That I Want","You've Got a Friend","You've Lost That Lovin' Feelin'","Your Cheatin' Heart","Your Song"];var ao={album:Ve$1,artist:Ye$1,genre:je$1,song_name:qe$1},Ue$1=ao;var Ze$1=["activist","artist","author","blogger","business owner","coach","creator","designer","developer","dreamer","educator","engineer","entrepreneur","environmentalist","film lover","filmmaker","foodie","founder","friend","gamer","geek","grad","inventor","leader","model","musician","nerd","parent","patriot","person","philosopher","photographer","public speaker","scientist","singer","streamer","student","teacher","traveler","veteran","writer"];var _e$1=["{{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}","{{word.noun}} {{person.bio_supporter}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}} {{internet.emoji}}"];var Qe$1=["advocate","devotee","enthusiast","fan","junkie","lover","supporter"];var Xe$1={generic:["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aimee","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arden","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","Edd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gayle","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"],female:["Mary","Patricia","Linda","Barbara","Elizabeth","Jennifer","Maria","Susan","Margaret","Dorothy","Lisa","Nancy","Karen","Betty","Helen","Sandra","Donna","Carol","Ruth","Sharon","Michelle","Laura","Sarah","Kimberly","Deborah","Jessica","Shirley","Cynthia","Angela","Melissa","Brenda","Amy","Anna","Rebecca","Virginia","Kathleen","Pamela","Martha","Debra","Amanda","Stephanie","Carolyn","Christine","Marie","Janet","Catherine","Frances","Ann","Joyce","Diane","Alice","Julie","Heather","Teresa","Doris","Gloria","Evelyn","Jean","Cheryl","Mildred","Katherine","Joan","Ashley","Judith","Rose","Janice","Kelly","Nicole","Judy","Christina","Kathy","Theresa","Beverly","Denise","Tammy","Irene","Jane","Lori","Rachel","Marilyn","Andrea","Kathryn","Louise","Sara","Anne","Jacqueline","Wanda","Bonnie","Julia","Ruby","Lois","Tina","Phyllis","Norma","Paula","Diana","Annie","Lillian","Emily","Robin","Peggy","Crystal","Gladys","Rita","Dawn","Connie","Florence","Tracy","Edna","Tiffany","Carmen","Rosa","Cindy","Grace","Wendy","Victoria","Edith","Kim","Sherry","Sylvia","Josephine","Thelma","Shannon","Sheila","Ethel","Ellen","Elaine","Marjorie","Carrie","Charlotte","Monica","Esther","Pauline","Emma","Juanita","Anita","Rhonda","Hazel","Amber","Eva","Debbie","April","Leslie","Clara","Lucille","Jamie","Joanne","Eleanor","Valerie","Danielle","Megan","Alicia","Suzanne","Michele","Gail","Bertha","Darlene","Veronica","Jill","Erin","Geraldine","Lauren","Cathy","Joann","Lorraine","Lynn","Sally","Regina","Erica","Beatrice","Dolores","Bernice","Audrey","Yvonne","Annette","June","Samantha","Marion","Dana","Stacy","Ana","Renee","Ida","Vivian","Roberta","Holly","Brittany","Melanie","Loretta","Yolanda","Jeanette","Laurie","Katie","Kristen","Vanessa","Alma","Sue","Elsie","Beth","Jeanne","Vicki","Carla","Tara","Rosemary","Eileen","Terri","Gertrude","Lucy","Tonya","Ella","Stacey","Wilma","Gina","Kristin","Jessie","Natalie","Agnes","Vera","Willie","Charlene","Bessie","Delores","Melinda","Pearl","Arlene","Maureen","Colleen","Allison","Tamara","Joy","Georgia","Constance","Lillie","Claudia","Jackie","Marcia","Tanya","Nellie","Minnie","Marlene","Heidi","Glenda","Lydia","Viola","Courtney","Marian","Stella","Caroline","Dora","Jo","Vickie","Mattie","Terry","Maxine","Irma","Mabel","Marsha","Myrtle","Lena","Christy","Deanna","Patsy","Hilda","Gwendolyn","Jennie","Nora","Margie","Nina","Cassandra","Leah","Penny","Kay","Priscilla","Naomi","Carole","Brandy","Olga","Billie","Dianne","Tracey","Leona","Jenny","Felicia","Sonia","Miriam","Velma","Becky","Bobbie","Violet","Kristina","Toni","Misty","Mae","Shelly","Daisy","Ramona","Sherri","Erika","Katrina","Claire","Lindsey","Lindsay","Geneva","Guadalupe","Belinda","Margarita","Sheryl","Cora","Faye","Ada","Natasha","Sabrina","Isabel","Marguerite","Hattie","Harriet","Molly","Cecilia","Kristi","Brandi","Blanche","Sandy","Rosie","Joanna","Iris","Eunice","Angie","Inez","Lynda","Madeline","Amelia","Alberta","Genevieve","Monique","Jodi","Janie","Maggie","Kayla","Sonya","Jan","Lee","Kristine","Candace","Fannie","Maryann","Opal","Alison","Yvette","Melody","Luz","Susie","Olivia","Flora","Shelley","Kristy","Mamie","Lula","Lola","Verna","Beulah","Antoinette","Candice","Juana","Jeannette","Pam","Kelli","Hannah","Whitney","Bridget","Karla","Celia","Latoya","Patty","Shelia","Gayle","Della","Vicky","Lynne","Sheri","Marianne","Kara","Jacquelyn","Erma","Blanca","Myra","Leticia","Pat","Krista","Roxanne","Angelica","Johnnie","Robyn","Francis","Adrienne","Rosalie","Alexandra","Brooke","Bethany","Sadie","Bernadette","Traci","Jody","Kendra","Jasmine","Nichole","Rachael","Chelsea","Mable","Ernestine","Muriel","Marcella","Elena","Krystal","Angelina","Nadine","Kari","Estelle","Dianna","Paulette","Lora","Mona","Doreen","Rosemarie","Angel","Desiree","Antonia","Hope","Ginger","Janis","Betsy","Christie","Freda","Mercedes","Meredith","Lynette","Teri","Cristina","Eula","Leigh","Meghan","Sophia","Eloise","Rochelle","Gretchen","Cecelia","Raquel","Henrietta","Alyssa","Jana","Kelley","Gwen","Kerry","Jenna","Tricia","Laverne","Olive","Alexis","Tasha","Silvia","Elvira","Casey","Delia","Sophie","Kate","Patti","Lorena","Kellie","Sonja","Lila","Lana","Darla","May","Mindy","Essie","Mandy","Lorene","Elsa","Josefina","Jeannie","Miranda","Dixie","Lucia","Marta","Faith","Lela","Johanna","Shari","Camille","Tami","Shawna","Elisa","Ebony","Melba","Ora","Nettie","Tabitha","Ollie","Jaime","Winifred","Kristie"],male:["James","John","Robert","Michael","William","David","Richard","Charles","Joseph","Thomas","Christopher","Daniel","Paul","Mark","Donald","George","Kenneth","Steven","Edward","Brian","Ronald","Anthony","Kevin","Jason","Matthew","Gary","Timothy","Jose","Larry","Jeffrey","Frank","Scott","Eric","Stephen","Andrew","Raymond","Gregory","Joshua","Jerry","Dennis","Walter","Patrick","Peter","Harold","Douglas","Henry","Carl","Arthur","Ryan","Roger","Joe","Juan","Jack","Albert","Jonathan","Justin","Terry","Gerald","Keith","Samuel","Willie","Ralph","Lawrence","Nicholas","Roy","Benjamin","Bruce","Brandon","Adam","Harry","Fred","Wayne","Billy","Steve","Louis","Jeremy","Aaron","Randy","Howard","Eugene","Carlos","Russell","Bobby","Victor","Martin","Ernest","Phillip","Todd","Jesse","Craig","Alan","Shawn","Clarence","Sean","Philip","Chris","Johnny","Earl","Jimmy","Antonio","Danny","Bryan","Tony","Luis","Mike","Stanley","Leonard","Nathan","Dale","Manuel","Rodney","Curtis","Norman","Allen","Marvin","Vincent","Glenn","Jeffery","Travis","Jeff","Chad","Jacob","Lee","Melvin","Alfred","Kyle","Francis","Bradley","Jesus","Herbert","Frederick","Ray","Joel","Edwin","Don","Eddie","Ricky","Troy","Randall","Barry","Alexander","Bernard","Mario","Leroy","Francisco","Marcus","Micheal","Theodore","Clifford","Miguel","Oscar","Jay","Jim","Tom","Calvin","Alex","Jon","Ronnie","Bill","Lloyd","Tommy","Leon","Derek","Warren","Darrell","Jerome","Floyd","Leo","Alvin","Tim","Wesley","Gordon","Dean","Greg","Jorge","Dustin","Pedro","Derrick","Dan","Lewis","Zachary","Corey","Herman","Maurice","Vernon","Roberto","Clyde","Glen","Hector","Shane","Ricardo","Sam","Rick","Lester","Brent","Ramon","Charlie","Tyler","Gilbert","Gene","Marc","Reginald","Ruben","Brett","Angel","Nathaniel","Rafael","Leslie","Edgar","Milton","Raul","Ben","Chester","Cecil","Duane","Franklin","Andre","Elmer","Brad","Gabriel","Ron","Mitchell","Roland","Arnold","Harvey","Jared","Adrian","Karl","Cory","Claude","Erik","Darryl","Jamie","Neil","Jessie","Christian","Javier","Fernando","Clinton","Ted","Mathew","Tyrone","Darren","Lonnie","Lance","Cody","Julio","Kelly","Kurt","Allan","Nelson","Guy","Clayton","Hugh","Max","Dwayne","Dwight","Armando","Felix","Jimmie","Everett","Jordan","Ian","Wallace","Ken","Bob","Jaime","Casey","Alfredo","Alberto","Dave","Ivan","Johnnie","Sidney","Byron","Julian","Isaac","Morris","Clifton","Willard","Daryl","Ross","Virgil","Andy","Marshall","Salvador","Perry","Kirk","Sergio","Marion","Tracy","Seth","Kent","Terrance","Rene","Eduardo","Terrence","Enrique","Freddie","Wade","Austin","Stuart","Fredrick","Arturo","Alejandro","Jackie","Joey","Nick","Luther","Wendell","Jeremiah","Evan","Julius","Dana","Donnie","Otis","Shannon","Trevor","Oliver","Luke","Homer","Gerard","Doug","Kenny","Hubert","Angelo","Shaun","Lyle","Matt","Lynn","Alfonso","Orlando","Rex","Carlton","Ernesto","Cameron","Neal","Pablo","Lorenzo","Omar","Wilbur","Blake","Grant","Horace","Roderick","Kerry","Abraham","Willis","Rickey","Jean","Ira","Andres","Cesar","Johnathan","Malcolm","Rudolph","Damon","Kelvin","Rudy","Preston","Alton","Archie","Marco","Wm","Pete","Randolph","Garry","Geoffrey","Jonathon","Felipe","Bennie","Gerardo","Ed","Dominic","Robin","Loren","Delbert","Colin","Guillermo","Earnest","Lucas","Benny","Noel","Spencer","Rodolfo","Myron","Edmund","Garrett","Salvatore","Cedric","Lowell","Gregg","Sherman","Wilson","Devin","Sylvester","Kim","Roosevelt","Israel","Jermaine","Forrest","Wilbert","Leland","Simon","Guadalupe","Clark","Irving","Carroll","Bryant","Owen","Rufus","Woodrow","Sammy","Kristopher","Mack","Levi","Marcos","Gustavo","Jake","Lionel","Marty","Taylor","Ellis","Dallas","Gilberto","Clint","Nicolas","Laurence","Ismael","Orville","Drew","Jody","Ervin","Dewey","Al","Wilfred","Josh","Hugo","Ignacio","Caleb","Tomas","Sheldon","Erick","Frankie","Stewart","Doyle","Darrel","Rogelio","Terence","Santiago","Alonzo","Elias","Bert","Elbert","Ramiro","Conrad","Pat","Noah","Grady","Phil","Cornelius","Lamar","Rolando","Clay","Percy","Dexter","Bradford","Merle","Darin","Amos","Terrell","Moses","Irvin","Saul","Roman","Darnell","Randal","Tommie","Timmy","Darrin","Winston","Brendan","Toby","Van","Abel","Dominick","Boyd","Courtney","Jan","Emilio","Elijah","Cary","Domingo","Santos","Aubrey","Emmett","Marlon","Emanuel","Jerald","Edmond"]};var $e$1=["Agender","Androgyne","Androgynous","Bigender","Cis female","Cis male","Cis man","Cis woman","Cis","Cisgender female","Cisgender male","Cisgender man","Cisgender woman","Cisgender","Demi-boy","Demi-girl","Demi-man","Demi-woman","Demiflux","Demigender","F2M","FTM","Female to male trans man","Female to male transgender man","Female to male transsexual man","Female to male","Gender fluid","Gender neutral","Gender nonconforming","Gender questioning","Gender variant","Genderflux","Genderqueer","Hermaphrodite","Intersex man","Intersex person","Intersex woman","Intersex","M2F","MTF","Male to female trans woman","Male to female transgender woman","Male to female transsexual woman","Male to female","Man","Multigender","Neither","Neutrois","Non-binary","Omnigender","Other","Pangender","Polygender","T* man","T* woman","Trans female","Trans male","Trans man","Trans person","Trans woman","Trans","Transsexual female","Transsexual male","Transsexual man","Transsexual person","Transsexual woman","Transsexual","Transgender female","Transgender person","Transmasculine","Trigender","Two* person","Two-spirit person","Two-spirit","Woman","Xenogender"];var ea=["Solutions","Program","Brand","Security","Research","Marketing","Directives","Implementation","Integration","Functionality","Response","Paradigm","Tactics","Identity","Markets","Group","Division","Applications","Optimization","Operations","Infrastructure","Intranet","Communications","Web","Branding","Quality","Assurance","Mobility","Accounts","Data","Creative","Configuration","Accountability","Interactions","Factors","Usability","Metrics"];var aa=["Lead","Senior","Direct","Corporate","Dynamic","Future","Product","National","Regional","District","Central","Global","Customer","Investor","International","Legacy","Forward","Internal","Human","Chief","Principal"];var oa=["{{person.jobDescriptor}} {{person.jobArea}} {{person.jobType}}"];var ra=["Supervisor","Associate","Executive","Liaison","Officer","Manager","Engineer","Specialist","Director","Coordinator","Administrator","Architect","Analyst","Designer","Planner","Orchestrator","Technician","Developer","Producer","Consultant","Assistant","Facilitator","Agent","Representative","Strategist"];var na={generic:["Abbott","Abernathy","Abshire","Adams","Altenwerth","Anderson","Ankunding","Armstrong","Auer","Aufderhar","Bahringer","Bailey","Balistreri","Barrows","Bartell","Bartoletti","Barton","Bashirian","Batz","Bauch","Baumbach","Bayer","Beahan","Beatty","Bechtelar","Becker","Bednar","Beer","Beier","Berge","Bergnaum","Bergstrom","Bernhard","Bernier","Bins","Blanda","Blick","Block","Bode","Boehm","Bogan","Bogisich","Borer","Bosco","Botsford","Boyer","Boyle","Bradtke","Brakus","Braun","Breitenberg","Brekke","Brown","Bruen","Buckridge","Carroll","Carter","Cartwright","Casper","Cassin","Champlin","Christiansen","Cole","Collier","Collins","Conn","Connelly","Conroy","Considine","Corkery","Cormier","Corwin","Cremin","Crist","Crona","Cronin","Crooks","Cruickshank","Cummerata","Cummings","Dach","D'Amore","Daniel","Dare","Daugherty","Davis","Deckow","Denesik","Dibbert","Dickens","Dicki","Dickinson","Dietrich","Donnelly","Dooley","Douglas","Doyle","DuBuque","Durgan","Ebert","Effertz","Emard","Emmerich","Erdman","Ernser","Fadel","Fahey","Farrell","Fay","Feeney","Feest","Feil","Ferry","Fisher","Flatley","Frami","Franecki","Franey","Friesen","Fritsch","Funk","Gerhold","Gerlach","Gibson","Gislason","Gleason","Gleichner","Glover","Goldner","Goodwin","Gorczany","Gottlieb","Goyette","Grady","Graham","Grant","Green","Greenfelder","Greenholt","Grimes","Gulgowski","Gusikowski","Gutkowski","Gutmann","Haag","Hackett","Hagenes","Hahn","Haley","Halvorson","Hamill","Hammes","Hand","Hane","Hansen","Harber","Harris","Hartmann","Harvey","Hauck","Hayes","Heaney","Heathcote","Hegmann","Heidenreich","Heller","Herman","Hermann","Hermiston","Herzog","Hessel","Hettinger","Hickle","Hilll","Hills","Hilpert","Hintz","Hirthe","Hodkiewicz","Hoeger","Homenick","Hoppe","Howe","Howell","Hudson","Huel","Huels","Hyatt","Jacobi","Jacobs","Jacobson","Jakubowski","Jaskolski","Jast","Jenkins","Jerde","Johns","Johnson","Johnston","Jones","Kassulke","Kautzer","Keebler","Keeling","Kemmer","Kerluke","Kertzmann","Kessler","Kiehn","Kihn","Kilback","King","Kirlin","Klein","Kling","Klocko","Koch","Koelpin","Koepp","Kohler","Konopelski","Koss","Kovacek","Kozey","Krajcik","Kreiger","Kris","Kshlerin","Kub","Kuhic","Kuhlman","Kuhn","Kulas","Kunde","Kunze","Kuphal","Kutch","Kuvalis","Labadie","Lakin","Lang","Langosh","Langworth","Larkin","Larson","Leannon","Lebsack","Ledner","Leffler","Legros","Lehner","Lemke","Lesch","Leuschke","Lind","Lindgren","Littel","Little","Lockman","Lowe","Lubowitz","Lueilwitz","Luettgen","Lynch","Macejkovic","MacGyver","Maggio","Mann","Mante","Marks","Marquardt","Marvin","Mayer","Mayert","McClure","McCullough","McDermott","McGlynn","McKenzie","McLaughlin","Medhurst","Mertz","Metz","Miller","Mills","Mitchell","Moen","Mohr","Monahan","Moore","Morar","Morissette","Mosciski","Mraz","Mueller","Muller","Murazik","Murphy","Murray","Nader","Nicolas","Nienow","Nikolaus","Nitzsche","Nolan","Oberbrunner","O'Connell","O'Conner","O'Hara","O'Keefe","O'Kon","Okuneva","Olson","Ondricka","O'Reilly","Orn","Ortiz","Osinski","Pacocha","Padberg","Pagac","Parisian","Parker","Paucek","Pfannerstill","Pfeffer","Pollich","Pouros","Powlowski","Predovic","Price","Prohaska","Prosacco","Purdy","Quigley","Quitzon","Rath","Ratke","Rau","Raynor","Reichel","Reichert","Reilly","Reinger","Rempel","Renner","Reynolds","Rice","Rippin","Ritchie","Robel","Roberts","Rodriguez","Rogahn","Rohan","Rolfson","Romaguera","Roob","Rosenbaum","Rowe","Ruecker","Runolfsdottir","Runolfsson","Runte","Russel","Rutherford","Ryan","Sanford","Satterfield","Sauer","Sawayn","Schaden","Schaefer","Schamberger","Schiller","Schimmel","Schinner","Schmeler","Schmidt","Schmitt","Schneider","Schoen","Schowalter","Schroeder","Schulist","Schultz","Schumm","Schuppe","Schuster","Senger","Shanahan","Shields","Simonis","Sipes","Skiles","Smith","Smitham","Spencer","Spinka","Sporer","Stamm","Stanton","Stark","Stehr","Steuber","Stiedemann","Stokes","Stoltenberg","Stracke","Streich","Stroman","Strosin","Swaniawski","Swift","Terry","Thiel","Thompson","Tillman","Torp","Torphy","Towne","Toy","Trantow","Tremblay","Treutel","Tromp","Turcotte","Turner","Ullrich","Upton","Vandervort","Veum","Volkman","Von","VonRueden","Waelchi","Walker","Walsh","Walter","Ward","Waters","Watsica","Weber","Wehner","Weimann","Weissnat","Welch","West","White","Wiegand","Wilderman","Wilkinson","Will","Williamson","Willms","Windler","Wintheiser","Wisoky","Wisozk","Witting","Wiza","Wolf","Wolff","Wuckert","Wunsch","Wyman","Yost","Yundt","Zboncak","Zemlak","Ziemann","Zieme","Zulauf"]};var ia={generic:[{value:"{{person.last_name.generic}}",weight:95},{value:"{{person.last_name.generic}}-{{person.last_name.generic}}",weight:5}]};var ta={generic:["Addison","Alex","Anderson","Angel","Arden","August","Austin","Avery","Bailey","Billie","Blake","Bowie","Brooklyn","Cameron","Charlie","Corey","Dakota","Drew","Elliott","Ellis","Emerson","Finley","Gray","Greer","Harper","Hayden","Jaden","James","Jamie","Jordan","Jules","Kai","Kendall","Kennedy","Kyle","Leslie","Logan","London","Marlowe","Micah","Nico","Noah","North","Parker","Phoenix","Quinn","Reagan","Reese","Reign","Riley","River","Robin","Rory","Rowan","Ryan","Sage","Sasha","Sawyer","Shawn","Shiloh","Skyler","Taylor"],female:["Abigail","Adele","Alex","Alice","Alisha","Amber","Amelia","Amora","Ana\xEFs","Angelou","Anika","Anise","Annabel","Anne","Aphrodite","Aretha","Arya","Ashton","Aster","Audrey","Avery","Bailee","Bay","Belle","Beth","Billie","Blair","Blaise","Blake","Blanche","Blue","Bree","Brielle","Brienne","Brooke","Caleen","Candice","Caprice","Carelyn","Caylen","Celine","Cerise","Cia","Claire","Claudia","Clementine","Coral","Coraline","Dahlia","Dakota","Dawn","Della","Demi","Denise","Denver","Devine","Devon","Diana","Dylan","Ebony","Eden","Eleanor","Elein","Elizabeth","Ellen","Elodie","Eloise","Ember","Emma","Erin","Eyre","Faith","Farrah","Fawn","Fayre","Fern","France","Francis","Frida","Genisis","Georgia","Grace","Gwen","Harley","Harper","Hazel","Helen","Hippolyta","Holly","Hope","Imani","Iowa","Ireland","Irene","Iris","Isa","Isla","Ivy","Jade","Jane","Jazz","Jean","Jess","Jett","Jo","Joan","Jolie","Jordan","Josie","Journey","Joy","Jules","Julien","Juliet","Juniper","Justice","Kali","Karma","Kat","Kate","Kennedy","Keva","Kylie","Lake","Lane","Lark","Layla","Lee","Leigh","Leona","Lexi","London","Lou","Louise","Love","Luna","Lux","Lynn","Lyric","Maddie","Mae","Marie","Matilda","Maude","Maybel","Meadow","Medusa","Mercy","Michelle","Mirabel","Monroe","Morgan","Nalia","Naomi","Nova","Olive","Paige","Parker","Pax","Pearl","Penelope","Phoenix","Quinn","Rae","Rain","Raven","Ray","Raye","Rebel","Reese","Reeve","Regan","Riley","River","Robin","Rory","Rose","Royal","Ruth","Rylie","Sage","Sam","Saturn","Scout","Serena","Sky","Skylar","Sofia","Sophia","Storm","Sue","Suzanne","Sydney","Taylen","Taylor","Teagan","Tempest","Tenley","Thea","Trinity","Valerie","Venus","Vera","Violet","Willow","Winter","Xena","Zaylee","Zion","Zoe"],male:["Ace","Aiden","Alexander","Ander","Anthony","Asher","August","Aziel","Bear","Beckham","Benjamin","Buddy","Calvin","Carter","Charles","Christopher","Clyde","Cooper","Daniel","David","Dior","Dylan","Elijah","Ellis","Emerson","Ethan","Ezra","Fletcher","Flynn","Gabriel","Grayson","Gus","Hank","Harrison","Hendrix","Henry","Houston","Hudson","Hugh","Isaac","Jack","Jackson","Jacob","Jakobe","James","Jaxon","Jaxtyn","Jayden","John","Joseph","Josiah","Jude","Julian","Karsyn","Kenji","Kobe","Kylo","Lennon","Leo","Levi","Liam","Lincoln","Logan","Louis","Lucas","Lucky","Luke","Mason","Mateo","Matthew","Maverick","Michael","Monroe","Nixon","Ocean","Oliver","Otis","Otto","Owen","Ozzy","Parker","Rocky","Samuel","Sebastian","Sonny","Teddy","Theo","Theodore","Thomas","Truett","Walter","Warren","Watson","William","Wison","Wyatt","Ziggy","Zyair"]};var la=[{value:"{{person.firstName}} {{person.lastName}}",weight:49},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}}",weight:7},{value:"{{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:7},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:1}];var sa={generic:["Dr.","Miss","Mr.","Mrs.","Ms."],female:["Mrs.","Ms.","Miss","Dr."],male:["Mr.","Dr."]};var da=["female","male"];var ua=["Jr.","Sr.","I","II","III","IV","V","MD","DDS","PhD","DVM"];var ca=["Aquarius","Pisces","Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn"];var oo={bio_part:Ze$1,bio_pattern:_e$1,bio_supporter:Qe$1,first_name:Xe$1,gender:$e$1,job_area:ea,job_descriptor:aa,job_title_pattern:oa,job_type:ra,last_name:na,last_name_pattern:ia,middle_name:ta,name:la,prefix:sa,sex:da,suffix:ua,western_zodiac_sign:ca},ma=oo;var ha=["!##-!##-####","(!##) !##-####","1-!##-!##-####","!##.!##.####","!##-!##-#### x###","(!##) !##-#### x###","1-!##-!##-#### x###","!##.!##.#### x###","!##-!##-#### x####","(!##) !##-#### x####","1-!##-!##-#### x####","!##.!##.#### x####","!##-!##-#### x#####","(!##) !##-#### x#####","1-!##-!##-#### x#####","!##.!##.#### x#####"];var ya=["+1!##!######"];var pa=["(!##) !##-####"];var ro={human:ha,international:ya,national:pa},ga=ro;var no={format:ga},ba=no;var Sa=[{symbol:"H",name:"Hydrogen",atomicNumber:1},{symbol:"He",name:"Helium",atomicNumber:2},{symbol:"Li",name:"Lithium",atomicNumber:3},{symbol:"Be",name:"Beryllium",atomicNumber:4},{symbol:"B",name:"Boron",atomicNumber:5},{symbol:"C",name:"Carbon",atomicNumber:6},{symbol:"N",name:"Nitrogen",atomicNumber:7},{symbol:"O",name:"Oxygen",atomicNumber:8},{symbol:"F",name:"Fluorine",atomicNumber:9},{symbol:"Ne",name:"Neon",atomicNumber:10},{symbol:"Na",name:"Sodium",atomicNumber:11},{symbol:"Mg",name:"Magnesium",atomicNumber:12},{symbol:"Al",name:"Aluminium",atomicNumber:13},{symbol:"Si",name:"Silicon",atomicNumber:14},{symbol:"P",name:"Phosphorus",atomicNumber:15},{symbol:"S",name:"Sulfur",atomicNumber:16},{symbol:"Cl",name:"Chlorine",atomicNumber:17},{symbol:"Ar",name:"Argon",atomicNumber:18},{symbol:"K",name:"Potassium",atomicNumber:19},{symbol:"Ca",name:"Calcium",atomicNumber:20},{symbol:"Sc",name:"Scandium",atomicNumber:21},{symbol:"Ti",name:"Titanium",atomicNumber:22},{symbol:"V",name:"Vanadium",atomicNumber:23},{symbol:"Cr",name:"Chromium",atomicNumber:24},{symbol:"Mn",name:"Manganese",atomicNumber:25},{symbol:"Fe",name:"Iron",atomicNumber:26},{symbol:"Co",name:"Cobalt",atomicNumber:27},{symbol:"Ni",name:"Nickel",atomicNumber:28},{symbol:"Cu",name:"Copper",atomicNumber:29},{symbol:"Zn",name:"Zinc",atomicNumber:30},{symbol:"Ga",name:"Gallium",atomicNumber:31},{symbol:"Ge",name:"Germanium",atomicNumber:32},{symbol:"As",name:"Arsenic",atomicNumber:33},{symbol:"Se",name:"Selenium",atomicNumber:34},{symbol:"Br",name:"Bromine",atomicNumber:35},{symbol:"Kr",name:"Krypton",atomicNumber:36},{symbol:"Rb",name:"Rubidium",atomicNumber:37},{symbol:"Sr",name:"Strontium",atomicNumber:38},{symbol:"Y",name:"Yttrium",atomicNumber:39},{symbol:"Zr",name:"Zirconium",atomicNumber:40},{symbol:"Nb",name:"Niobium",atomicNumber:41},{symbol:"Mo",name:"Molybdenum",atomicNumber:42},{symbol:"Tc",name:"Technetium",atomicNumber:43},{symbol:"Ru",name:"Ruthenium",atomicNumber:44},{symbol:"Rh",name:"Rhodium",atomicNumber:45},{symbol:"Pd",name:"Palladium",atomicNumber:46},{symbol:"Ag",name:"Silver",atomicNumber:47},{symbol:"Cd",name:"Cadmium",atomicNumber:48},{symbol:"In",name:"Indium",atomicNumber:49},{symbol:"Sn",name:"Tin",atomicNumber:50},{symbol:"Sb",name:"Antimony",atomicNumber:51},{symbol:"Te",name:"Tellurium",atomicNumber:52},{symbol:"I",name:"Iodine",atomicNumber:53},{symbol:"Xe",name:"Xenon",atomicNumber:54},{symbol:"Cs",name:"Caesium",atomicNumber:55},{symbol:"Ba",name:"Barium",atomicNumber:56},{symbol:"La",name:"Lanthanum",atomicNumber:57},{symbol:"Ce",name:"Cerium",atomicNumber:58},{symbol:"Pr",name:"Praseodymium",atomicNumber:59},{symbol:"Nd",name:"Neodymium",atomicNumber:60},{symbol:"Pm",name:"Promethium",atomicNumber:61},{symbol:"Sm",name:"Samarium",atomicNumber:62},{symbol:"Eu",name:"Europium",atomicNumber:63},{symbol:"Gd",name:"Gadolinium",atomicNumber:64},{symbol:"Tb",name:"Terbium",atomicNumber:65},{symbol:"Dy",name:"Dysprosium",atomicNumber:66},{symbol:"Ho",name:"Holmium",atomicNumber:67},{symbol:"Er",name:"Erbium",atomicNumber:68},{symbol:"Tm",name:"Thulium",atomicNumber:69},{symbol:"Yb",name:"Ytterbium",atomicNumber:70},{symbol:"Lu",name:"Lutetium",atomicNumber:71},{symbol:"Hf",name:"Hafnium",atomicNumber:72},{symbol:"Ta",name:"Tantalum",atomicNumber:73},{symbol:"W",name:"Tungsten",atomicNumber:74},{symbol:"Re",name:"Rhenium",atomicNumber:75},{symbol:"Os",name:"Osmium",atomicNumber:76},{symbol:"Ir",name:"Iridium",atomicNumber:77},{symbol:"Pt",name:"Platinum",atomicNumber:78},{symbol:"Au",name:"Gold",atomicNumber:79},{symbol:"Hg",name:"Mercury",atomicNumber:80},{symbol:"Tl",name:"Thallium",atomicNumber:81},{symbol:"Pb",name:"Lead",atomicNumber:82},{symbol:"Bi",name:"Bismuth",atomicNumber:83},{symbol:"Po",name:"Polonium",atomicNumber:84},{symbol:"At",name:"Astatine",atomicNumber:85},{symbol:"Rn",name:"Radon",atomicNumber:86},{symbol:"Fr",name:"Francium",atomicNumber:87},{symbol:"Ra",name:"Radium",atomicNumber:88},{symbol:"Ac",name:"Actinium",atomicNumber:89},{symbol:"Th",name:"Thorium",atomicNumber:90},{symbol:"Pa",name:"Protactinium",atomicNumber:91},{symbol:"U",name:"Uranium",atomicNumber:92},{symbol:"Np",name:"Neptunium",atomicNumber:93},{symbol:"Pu",name:"Plutonium",atomicNumber:94},{symbol:"Am",name:"Americium",atomicNumber:95},{symbol:"Cm",name:"Curium",atomicNumber:96},{symbol:"Bk",name:"Berkelium",atomicNumber:97},{symbol:"Cf",name:"Californium",atomicNumber:98},{symbol:"Es",name:"Einsteinium",atomicNumber:99},{symbol:"Fm",name:"Fermium",atomicNumber:100},{symbol:"Md",name:"Mendelevium",atomicNumber:101},{symbol:"No",name:"Nobelium",atomicNumber:102},{symbol:"Lr",name:"Lawrencium",atomicNumber:103},{symbol:"Rf",name:"Rutherfordium",atomicNumber:104},{symbol:"Db",name:"Dubnium",atomicNumber:105},{symbol:"Sg",name:"Seaborgium",atomicNumber:106},{symbol:"Bh",name:"Bohrium",atomicNumber:107},{symbol:"Hs",name:"Hassium",atomicNumber:108},{symbol:"Mt",name:"Meitnerium",atomicNumber:109},{symbol:"Ds",name:"Darmstadtium",atomicNumber:110},{symbol:"Rg",name:"Roentgenium",atomicNumber:111},{symbol:"Cn",name:"Copernicium",atomicNumber:112},{symbol:"Nh",name:"Nihonium",atomicNumber:113},{symbol:"Fl",name:"Flerovium",atomicNumber:114},{symbol:"Mc",name:"Moscovium",atomicNumber:115},{symbol:"Lv",name:"Livermorium",atomicNumber:116},{symbol:"Ts",name:"Tennessine",atomicNumber:117},{symbol:"Og",name:"Oganesson",atomicNumber:118}];var ka=[{name:"meter",symbol:"m"},{name:"second",symbol:"s"},{name:"mole",symbol:"mol"},{name:"ampere",symbol:"A"},{name:"kelvin",symbol:"K"},{name:"candela",symbol:"cd"},{name:"kilogram",symbol:"kg"},{name:"radian",symbol:"rad"},{name:"hertz",symbol:"Hz"},{name:"newton",symbol:"N"},{name:"pascal",symbol:"Pa"},{name:"joule",symbol:"J"},{name:"watt",symbol:"W"},{name:"coulomb",symbol:"C"},{name:"volt",symbol:"V"},{name:"ohm",symbol:"\u03A9"},{name:"tesla",symbol:"T"},{name:"degree Celsius",symbol:"\xB0C"},{name:"lumen",symbol:"lm"},{name:"becquerel",symbol:"Bq"},{name:"gray",symbol:"Gy"},{name:"sievert",symbol:"Sv"},{name:"steradian",symbol:"sr"},{name:"farad",symbol:"F"},{name:"siemens",symbol:"S"},{name:"weber",symbol:"Wb"},{name:"henry",symbol:"H"},{name:"lux",symbol:"lx"},{name:"katal",symbol:"kat"}];var io={chemical_element:Sa,unit:ka},Ca=io;var fa=["ants","bats","bears","bees","birds","buffalo","cats","chickens","cattle","dogs","dolphins","ducks","elephants","fishes","foxes","frogs","geese","goats","horses","kangaroos","lions","monkeys","owls","oxen","penguins","people","pigs","rabbits","sheep","tigers","whales","wolves","zebras","banshees","crows","black cats","chimeras","ghosts","conspirators","dragons","dwarves","elves","enchanters","exorcists","sons","foes","giants","gnomes","goblins","gooses","griffins","lycanthropes","nemesis","ogres","oracles","prophets","sorcerors","spiders","spirits","vampires","warlocks","vixens","werewolves","witches","worshipers","zombies","druids"];var va=["{{location.state}} {{team.creature}}"];var to={creature:fa,name:va},Aa=to;var Ba=["Adventure Road Bicycle","BMX Bicycle","City Bicycle","Cruiser Bicycle","Cyclocross Bicycle","Dual-Sport Bicycle","Fitness Bicycle","Flat-Foot Comfort Bicycle","Folding Bicycle","Hybrid Bicycle","Mountain Bicycle","Recumbent Bicycle","Road Bicycle","Tandem Bicycle","Touring Bicycle","Track/Fixed-Gear Bicycle","Triathlon/Time Trial Bicycle","Tricycle"];var wa=["Diesel","Electric","Gasoline","Hybrid"];var Ma=["Aston Martin","Audi","BMW","Bentley","Bugatti","Cadillac","Chevrolet","Chrysler","Dodge","Ferrari","Fiat","Ford","Honda","Hyundai","Jaguar","Jeep","Kia","Lamborghini","Land Rover","Maserati","Mazda","Mercedes Benz","Mini","Nissan","Polestar","Porsche","Rolls Royce","Smart","Tesla","Toyota","Volkswagen","Volvo"];var Ta=["1","2","911","A4","A8","ATS","Accord","Alpine","Altima","Aventador","Beetle","CTS","CX-9","Camaro","Camry","Challenger","Charger","Civic","Colorado","Corvette","Countach","Cruze","Durango","El Camino","Element","Escalade","Expedition","Explorer","F-150","Fiesta","Focus","Fortwo","Golf","Grand Caravan","Grand Cherokee","Impala","Jetta","Land Cruiser","LeBaron","Malibu","Mercielago","Model 3","Model S","Model T","Model X","Model Y","Mustang","PT Cruiser","Prius","Ranchero","Roadster","Sentra","Silverado","Spyder","Taurus","V90","Volt","Wrangler","XC90","XTS"];var La=["Cargo Van","Convertible","Coupe","Crew Cab Pickup","Extended Cab Pickup","Hatchback","Minivan","Passenger Van","SUV","Sedan","Wagon"];var lo={bicycle_type:Ba,fuel:wa,manufacturer:Ma,model:Ta,type:La},Da=lo;var Ra=["abandoned","able","acceptable","acclaimed","accomplished","accurate","aching","acidic","actual","admired","adolescent","advanced","affectionate","afraid","aged","aggravating","aggressive","agile","agitated","agreeable","ajar","alarmed","alert","alienated","alive","all","altruistic","amazing","ambitious","ample","amused","angelic","anguished","animated","annual","another","antique","any","apprehensive","appropriate","apt","arid","artistic","ashamed","assured","astonishing","athletic","austere","authentic","authorized","avaricious","average","aware","awesome","awful","babyish","back","bad","baggy","bare","basic","beloved","beneficial","best","better","big","biodegradable","bitter","black","black-and-white","blank","blaring","bleak","blind","blond","blue","blushing","bogus","boiling","bony","boring","bossy","both","bouncy","bowed","brave","breakable","bright","brilliant","brisk","broken","brown","bruised","bulky","burdensome","burly","bustling","busy","buttery","buzzing","calculating","candid","carefree","careless","caring","cautious","cavernous","celebrated","charming","cheap","cheerful","chilly","chubby","circular","classic","clean","clear","clear-cut","close","closed","cloudy","clueless","clumsy","cluttered","coarse","colorful","colorless","colossal","comfortable","common","compassionate","competent","complete","complicated","concerned","concrete","confused","considerate","content","cool","cooperative","coordinated","corny","corrupt","courageous","courteous","crafty","crazy","creamy","creative","criminal","critical","crooked","crowded","cruel","crushing","cuddly","cultivated","cumbersome","curly","cute","damaged","damp","dapper","dark","darling","dazzling","dead","deadly","deafening","dearest","decent","decisive","deep","defenseless","defensive","deficient","definite","definitive","delectable","delicious","delirious","dense","dental","dependable","dependent","descriptive","deserted","determined","devoted","different","difficult","digital","diligent","dim","direct","dirty","discrete","disloyal","dismal","distant","distinct","distorted","doting","downright","drab","dramatic","dreary","dual","dull","dutiful","each","early","earnest","easy","ecstatic","edible","educated","elastic","elderly","electric","elegant","elementary","elliptical","eminent","emotional","empty","enchanted","enchanting","energetic","enlightened","enraged","entire","equatorial","essential","esteemed","ethical","everlasting","every","evil","exalted","excellent","excitable","excited","exhausted","exotic","expensive","experienced","expert","extra-large","extroverted","failing","faint","fair","fake","familiar","fantastic","far","far-flung","far-off","faraway","fat","fatal","fatherly","favorable","favorite","fearless","feline","filthy","fine","finished","firm","first","firsthand","fixed","flashy","flawed","flawless","flickering","flimsy","flowery","fluffy","flustered","focused","fond","foolhardy","foolish","forceful","formal","forsaken","fortunate","fragrant","frail","frank","free","french","frequent","friendly","frightened","frilly","frivolous","frizzy","front","frozen","frugal","fruitful","functional","funny","fussy","fuzzy","gaseous","general","gentle","genuine","gifted","gigantic","giving","glaring","glass","gleaming","glittering","gloomy","glorious","glossy","glum","golden","good","good-natured","gorgeous","graceful","gracious","grandiose","granular","grave","gray","great","greedy","grim","grimy","gripping","grizzled","grouchy","grounded","growing","grown","grubby","gruesome","grumpy","guilty","gullible","gummy","hairy","handsome","handy","happy","happy-go-lucky","hard-to-find","harmful","hasty","hateful","haunting","heartfelt","heavenly","heavy","hefty","helpful","helpless","hidden","hoarse","hollow","homely","honorable","honored","hopeful","hospitable","hot","huge","humble","humiliating","hungry","hurtful","husky","icy","ideal","idealistic","idolized","ignorant","ill","ill-fated","illiterate","illustrious","imaginary","imaginative","immaculate","immediate","immense","impartial","impassioned","impeccable","impish","impolite","important","impossible","impractical","impressionable","impressive","improbable","impure","inborn","incomparable","incomplete","inconsequential","indelible","indolent","inexperienced","infamous","infatuated","inferior","infinite","informal","innocent","insecure","insidious","insignificant","insistent","instructive","intelligent","intent","interesting","internal","international","intrepid","ironclad","irresponsible","jagged","jam-packed","jaunty","jealous","jittery","joyful","joyous","jubilant","judicious","juicy","jumbo","junior","juvenile","kaleidoscopic","key","knotty","knowledgeable","known","kooky","kosher","lanky","last","lasting","late","lavish","lawful","lazy","leading","lean","left","legal","light","lighthearted","likable","likely","limited","limp","limping","linear","lined","liquid","little","live","lively","livid","lone","lonely","long","long-term","lost","lovable","lovely","low","lucky","lumbering","lumpy","lustrous","mad","made-up","magnificent","majestic","major","male","mammoth","married","marvelous","massive","mature","meager","mealy","mean","measly","meaty","mediocre","medium","memorable","menacing","merry","messy","metallic","mild","milky","mindless","minor","minty","miserable","miserly","misguided","mixed","moist","monstrous","monthly","monumental","moral","motionless","muddy","muffled","multicolored","mundane","murky","mushy","musty","muted","mysterious","narrow","natural","naughty","nautical","near","neat","necessary","needy","negative","neglected","negligible","neighboring","nervous","new","next","nice","nifty","nimble","nippy","nocturnal","normal","noted","noteworthy","noxious","numb","nutritious","obedient","oblong","obvious","odd","oddball","official","oily","old","old-fashioned","only","optimal","optimistic","orange","orderly","ordinary","ornate","ornery","other","our","outgoing","outlandish","outlying","outrageous","outstanding","oval","overcooked","overdue","palatable","pale","paltry","parallel","parched","partial","passionate","pastel","peaceful","peppery","perfumed","perky","personal","pertinent","pessimistic","petty","phony","physical","pink","pitiful","plain","pleasant","pleased","pleasing","plump","pointed","pointless","polished","polite","political","poor","portly","posh","possible","potable","powerful","powerless","practical","precious","present","prestigious","pretty","pricey","prickly","primary","prime","private","probable","productive","profitable","profuse","proper","proud","prudent","punctual","puny","pure","purple","pushy","putrid","puzzled","qualified","quarrelsome","quarterly","queasy","querulous","questionable","quick","quick-witted","quiet","quintessential","quixotic","radiant","ragged","rapid","rare","raw","realistic","reasonable","recent","reckless","rectangular","red","reflecting","regal","regular","remarkable","remorseful","repentant","respectful","responsible","rewarding","rich","right","rigid","ripe","roasted","robust","rosy","rotating","rotten","rough","round","rowdy","royal","rubbery","ruddy","rundown","runny","rural","rusty","sad","salty","same","sandy","sarcastic","sardonic","scaly","scared","scary","scented","scientific","scornful","scratchy","second","second-hand","secondary","secret","self-assured","self-reliant","selfish","sentimental","separate","serene","serpentine","severe","shabby","shadowy","shady","shallow","shameful","shameless","shimmering","shiny","shocked","shoddy","short","short-term","showy","shrill","shy","sick","silent","silky","silver","similar","simple","simplistic","sinful","sizzling","skeletal","sleepy","slight","slimy","slow","slushy","small","smart","smoggy","smooth","smug","snappy","snarling","sneaky","sniveling","snoopy","sociable","soft","soggy","somber","some","sophisticated","sore","sorrowful","soulful","soupy","sour","spanish","sparkling","sparse","specific","speedy","spherical","spiffy","spirited","spiteful","splendid","spotless","square","squeaky","squiggly","stable","staid","stained","stale","standard","stark","steel","steep","sticky","stiff","stingy","stormy","straight","strange","strict","strident","striking","strong","stunning","stupendous","sturdy","stylish","subdued","submissive","substantial","subtle","suburban","sudden","sugary","sunny","super","superb","superficial","superior","supportive","sure-footed","surprised","svelte","sweet","swift","talkative","tall","tame","tangible","tasty","tattered","taut","tedious","teeming","tempting","tender","tense","tepid","terrible","that","these","thick","thin","thorny","thorough","those","thrifty","tidy","tight","timely","tinted","tiny","tired","torn","total","tough","tragic","trained","triangular","tricky","trim","trivial","troubled","true","trusting","trustworthy","trusty","turbulent","twin","ugly","ultimate","unaware","uncomfortable","uncommon","unconscious","understated","uneven","unfinished","unfit","unfortunate","unhappy","unhealthy","uniform","unimportant","unique","unkempt","unknown","unlawful","unlined","unlucky","unpleasant","unrealistic","unripe","unruly","unselfish","unsightly","unsteady","unsung","untidy","untimely","untried","untrue","unused","unusual","unwelcome","unwieldy","unwilling","unwritten","upbeat","upright","upset","urban","usable","useless","utilized","utter","vague","vain","valuable","variable","vast","velvety","vengeful","vibrant","victorious","violent","vivacious","vivid","voluminous","warlike","warm","warmhearted","warped","wasteful","waterlogged","watery","wavy","wealthy","weary","webbed","wee","weekly","weighty","weird","well-documented","well-groomed","well-lit","well-made","well-off","well-to-do","well-worn","which","whimsical","whirlwind","whispered","white","whole","whopping","wicked","wide","wide-eyed","wiggly","willing","wilted","winding","windy","winged","wise","witty","wobbly","woeful","wonderful","wordy","worldly","worse","worst","worthless","worthwhile","worthy","wrathful","wretched","writhing","wrong","wry","yearly","yellow","yellowish","young","youthful","yummy","zany","zealous","zesty"];var Ha=["abnormally","absentmindedly","accidentally","acidly","actually","adventurously","afterwards","almost","always","angrily","annually","anxiously","arrogantly","awkwardly","badly","bashfully","beautifully","bitterly","bleakly","blindly","blissfully","boastfully","boldly","bravely","briefly","brightly","briskly","broadly","busily","calmly","carefully","carelessly","cautiously","certainly","cheerfully","clearly","cleverly","closely","coaxingly","colorfully","commonly","continually","coolly","correctly","courageously","crossly","cruelly","curiously","daily","daintily","dearly","deceivingly","deeply","defiantly","deliberately","delightfully","diligently","dimly","doubtfully","dreamily","easily","elegantly","energetically","enormously","enthusiastically","equally","especially","even","evenly","eventually","exactly","excitedly","extremely","fairly","faithfully","famously","far","fast","fatally","ferociously","fervently","fiercely","fondly","foolishly","fortunately","frankly","frantically","freely","frenetically","frightfully","fully","furiously","generally","generously","gently","gladly","gleefully","gracefully","gratefully","greatly","greedily","happily","hastily","healthily","heavily","helpfully","helplessly","highly","honestly","hopelessly","hourly","hungrily","immediately","innocently","inquisitively","instantly","intensely","intently","interestingly","inwardly","irritably","jaggedly","jealously","joshingly","jovially","joyfully","joyously","jubilantly","judgementally","justly","keenly","kiddingly","kindheartedly","kindly","kissingly","knavishly","knottily","knowingly","knowledgeably","kookily","lazily","less","lightly","likely","limply","lively","loftily","longingly","loosely","loudly","lovingly","loyally","madly","majestically","meaningfully","mechanically","merrily","miserably","mockingly","monthly","more","mortally","mostly","mysteriously","naturally","nearly","neatly","needily","nervously","never","nicely","noisily","not","obediently","obnoxiously","oddly","offensively","officially","often","only","openly","optimistically","overconfidently","owlishly","painfully","partially","patiently","perfectly","physically","playfully","politely","poorly","positively","potentially","powerfully","promptly","properly","punctually","quaintly","quarrelsomely","queasily","questionably","questioningly","quicker","quickly","quietly","quirkily","quizzically","rapidly","rarely","readily","really","reassuringly","recklessly","regularly","reluctantly","repeatedly","reproachfully","restfully","righteously","rightfully","rigidly","roughly","rudely","sadly","safely","scarcely","scarily","searchingly","sedately","seemingly","seldom","selfishly","separately","seriously","shakily","sharply","sheepishly","shrilly","shyly","silently","sleepily","slowly","smoothly","softly","solemnly","solidly","sometimes","soon","speedily","stealthily","sternly","strictly","successfully","suddenly","surprisingly","suspiciously","sweetly","swiftly","sympathetically","tenderly","tensely","terribly","thankfully","thoroughly","thoughtfully","tightly","tomorrow","too","tremendously","triumphantly","truly","truthfully","ultimately","unabashedly","unaccountably","unbearably","unethically","unexpectedly","unfortunately","unimpressively","unnaturally","unnecessarily","upbeat","upliftingly","upright","upside-down","upward","upwardly","urgently","usefully","uselessly","usually","utterly","vacantly","vaguely","vainly","valiantly","vastly","verbally","very","viciously","victoriously","violently","vivaciously","voluntarily","warmly","weakly","wearily","well","wetly","wholly","wildly","willfully","wisely","woefully","wonderfully","worriedly","wrongly","yawningly","yearly","yearningly","yesterday","yieldingly","youthfully"];var Pa=["after","although","and","as","because","before","but","consequently","even","finally","for","furthermore","hence","how","however","if","inasmuch","incidentally","indeed","instead","lest","likewise","meanwhile","nor","now","once","or","provided","since","so","supposing","than","that","though","till","unless","until","what","when","whenever","where","whereas","wherever","whether","which","while","who","whoever","whose","why","yet"];var Wa=["yuck","oh","phooey","blah","boo","whoa","yowza","huzzah","boohoo","fooey","geez","pfft","ew","ah","yum","brr","hm","yahoo","aha","woot","drat","gah","meh","psst","aw","ugh","yippee","eek","gee","bah","gadzooks","duh","ha","mmm","ouch","phew","ack","uh-huh","gosh","hmph","pish","zowie","er","ick","oof","um"];var Ga=["CD","SUV","abacus","academics","accelerator","accompanist","account","accountability","acquaintance","ad","adaptation","address","adrenalin","adult","advancement","advertisement","adviser","affect","affiliate","aftermath","agreement","airbus","aircraft","airline","airmail","airman","airport","alb","alert","allegation","alliance","alligator","allocation","almighty","amendment","amnesty","analogy","angle","annual","antelope","anticodon","apparatus","appliance","approach","apricot","arcade","archaeology","armchair","armoire","asset","assist","atrium","attraction","availability","avalanche","awareness","babushka","backbone","backburn","bakeware","bandwidth","bar","barge","baritone","barracks","baseboard","basket","bathhouse","bathrobe","battle","begonia","behest","bell","bench","bend","beret","best-seller","bid","bidet","bin","birdbath","birdcage","birth","blight","blossom","blowgun","bob","bog","bonfire","bonnet","bookcase","bookend","boulevard","bourgeoisie","bowler","bowling","boyfriend","brace","bracelet","bran","breastplate","brief","brochure","brook","brush","bug","bump","bungalow","cafe","cake","calculus","cannon","cantaloupe","cap","cappelletti","captain","caption","carboxyl","cardboard","carnival","case","casement","cash","casket","cassava","castanet","catalyst","cauliflower","cellar","celsius","cemetery","ceramic","ceramics","certification","chainstay","chairperson","challenge","championship","chap","chapel","character","characterization","charlatan","charm","chasuble","cheese","cheetah","chiffonier","chops","chow","cinder","cinema","circumference","citizen","clamp","clavicle","cleaner","climb","co-producer","coal","coast","cod","coil","coin","coliseum","collaboration","collectivization","colon","colonialism","comestible","commercial","commodity","community","comparison","completion","complication","compromise","concentration","configuration","confusion","conservation","conservative","consistency","contractor","contrail","convection","conversation","cook","coordination","cop-out","cope","cork","cornet","corporation","corral","cosset","costume","couch","council","councilman","countess","courtroom","cow","creator","creature","crest","cricket","crocodile","cross-contamination","cruelty","cuckoo","curl","custody","custom","cutlet","cutover","cycle","daddy","dandelion","dash","daughter","dead","decision","deck","declaration","decongestant","decryption","deduction","deed","deer","defendant","density","department","dependency","deployment","depot","derby","descendant","descent","design","designation","desk","detective","devastation","developing","developmental","devil","diagram","digestive","digit","dime","director","disadvantage","disappointment","disclosure","disconnection","discourse","dish","disk","disposer","distinction","diver","diversity","dividend","divine","doing","doorpost","doubter","draft","draw","dream","dredger","dress","drive","drug","duffel","dulcimer","dusk","duster","dwell","e-mail","earth","ecliptic","ectoderm","edge","editor","effector","eggplant","electronics","elevation","elevator","elver","embarrassment","embossing","emergent","encouragement","entry","epic","equal","essence","eternity","ethyl","euphonium","event","exasperation","excess","executor","exhaust","expansion","expense","experience","exploration","extension","extent","exterior","eyebrow","eyeliner","farm","farmer","fat","fax","feather","fedora","fellow","fen","fencing","ferret","festival","fibre","filter","final","finding","finer","finger","fireplace","fisherman","fishery","fit","flame","flat","fledgling","flight","flint","flood","flu","fog","fold","folklore","follower","following","foodstuffs","footrest","forage","forager","forgery","fork","formamide","formation","formula","fort","fowl","fraudster","freckle","freezing","freight","fuel","fun","fund","fundraising","futon","gallery","galoshes","gastropod","gazebo","gerbil","ghost","giant","gift","giggle","glider","gloom","goat","godfather","godparent","going","goodwill","governance","government","gown","gradient","graffiti","grandpa","grandson","granny","grass","gray","gripper","grouper","guacamole","guard","guidance","guide","gym","gymnast","habit","haircut","halt","hamburger","hammock","handful","handle","handover","harp","haversack","hawk","heartache","heartbeat","heating","hello","help","hepatitis","heroine","hexagon","hierarchy","hippodrome","honesty","hoof","hope","horde","hornet","horst","hose","hospitalization","hovel","hovercraft","hubris","humidity","humor","hundred","hunger","hunt","husband","hutch","hydrant","hydrocarbon","hydrolyse","hydrolyze","hyena","hygienic","hyphenation","ice-cream","icebreaker","igloo","ignorance","illusion","impact","import","importance","impostor","in-joke","incandescence","independence","individual","information","injunction","innovation","insolence","inspection","instance","institute","instruction","instructor","integer","intellect","intent","interchange","interior","intervention","interviewer","invite","iridescence","issue","jacket","jazz","jellyfish","jet","jogging","joy","juggernaut","jump","jungle","junior","jury","kettledrum","kick","kielbasa","kinase","king","kiss","kit","knickers","knight","knitting","knuckle","label","labourer","lace","lady","lamp","language","larva","lashes","laughter","lava","lawmaker","lay","leading","league","legend","legging","legislature","lender","license","lid","lieu","lifestyle","lift","linseed","litter","loaf","lobster","longboat","lotion","lounge","louse","lox","loyalty","luck","lyre","maestro","mainstream","maintainer","majority","makeover","making","mallard","management","manner","mantua","marathon","march","marimba","marketplace","marksman","markup","marten","massage","masterpiece","mathematics","meadow","meal","meander","meatloaf","mechanic","median","membership","mentor","merit","metabolite","metal","middle","midwife","milestone","millet","minion","minister","minor","minority","mixture","mobility","molasses","mom","moment","monasticism","monocle","monster","morbidity","morning","mortise","mountain","mouser","mousse","mozzarella","muscat","mythology","napkin","necklace","nectarine","negotiation","nephew","nerve","netsuke","newsletter","newsprint","newsstand","nightlife","noon","nougat","nucleotidase","nudge","numeracy","numeric","nun","obedience","obesity","object","obligation","ocelot","octave","offset","oil","omelet","onset","opera","operating","optimal","orchid","order","ostrich","other","outlaw","outrun","outset","overcoat","overheard","overload","ownership","pacemaker","packaging","paintwork","palate","pants","pantyhose","papa","parade","parsnip","partridge","passport","pasta","patroller","pear","pearl","pecan","pendant","peninsula","pension","peony","pepper","perfection","permafrost","perp","petal","petticoat","pharmacopoeia","phrase","pick","piglet","pigpen","pigsty","pile","pillbox","pillow","pilot","pine","pinstripe","place","plain","planula","plastic","platter","platypus","pleasure","pliers","plugin","plumber","pneumonia","pocket-watch","poetry","polarisation","polyester","pomelo","pop","poppy","popularity","populist","porter","possession","postbox","precedent","premeditation","premier","premise","premium","pressure","presume","priesthood","printer","privilege","procurement","produce","programme","prohibition","promise","pronoun","providence","provider","provision","publication","publicity","pulse","punctuation","pupil","puppet","puritan","quart","quinoa","quit","railway","range","rationale","ravioli","rawhide","reach","reasoning","reboot","receptor","recommendation","reconsideration","recovery","redesign","relative","release","remark","reorganisation","repeat","replacement","reporter","representation","republican","request","requirement","reservation","resolve","resource","responsibility","restaurant","retention","retrospectivity","reward","ribbon","rim","riser","roadway","role","rosemary","roundabout","rubric","ruin","rule","runway","rust","safe","sailor","saloon","sand","sandbar","sanity","sarong","sauerkraut","saw","scaffold","scale","scarification","scenario","schedule","schnitzel","scholarship","scorn","scorpion","scout","scrap","scratch","seafood","seagull","seal","season","secrecy","secret","section","sediment","self-confidence","sermon","sesame","settler","shadowbox","shark","shipper","shore","shoulder","sideboard","siege","sightseeing","signature","silk","simple","singing","skean","skeleton","skyline","skyscraper","slide","slime","slipper","smog","smoke","sock","soliloquy","solution","solvency","someplace","sonar","sonata","sonnet","soup","soybean","space","spear","spirit","spork","sport","spring","sprinkles","squid","stall","starboard","statue","status","stay","steak","steeple","step","step-mother","sticker","stir-fry","stitcher","stock","stool","story","strait","stranger","strategy","straw","stump","subexpression","submitter","subsidy","substitution","suitcase","summary","summer","sunbeam","sundae","supplier","surface","sushi","suspension","sustenance","swanling","swath","sweatshop","swim","swine","swing","switch","switchboard","swordfish","synergy","t-shirt","tabletop","tackle","tail","tapioca","taro","tarragon","taxicab","teammate","technician","technologist","tectonics","tenant","tenement","tennis","tentacle","teriyaki","term","testimonial","testing","thigh","thongs","thorn","thread","thunderbolt","thyme","tinderbox","toaster","tomatillo","tomb","tomography","tool","tooth","toothbrush","toothpick","topsail","traditionalism","traffic","translation","transom","transparency","trash","travel","tray","trench","tribe","tributary","trick","trolley","tuba","tuber","tune-up","turret","tusk","tuxedo","typeface","typewriter","unblinking","underneath","underpants","understanding","unibody","unique","unit","utilization","valentine","validity","valley","valuable","vanadyl","vein","velocity","venom","version","verve","vestment","veto","viability","vibraphone","vibration","vicinity","video","violin","vision","vista","vol","volleyball","wafer","waist","wallaby","warming","wasabi","waterspout","wear","wedding","whack","whale","wheel","widow","wilderness","willow","window","wombat","word","worth","wriggler","yak","yarmulke","yeast","yin","yogurt","zebra","zen"];var Na=["a","abaft","aboard","about","above","absent","across","afore","after","against","along","alongside","amid","amidst","among","amongst","an","anenst","anti","apropos","apud","around","as","aside","astride","at","athwart","atop","barring","before","behind","below","beneath","beside","besides","between","beyond","but","by","circa","concerning","considering","despite","down","during","except","excepting","excluding","failing","following","for","forenenst","from","given","in","including","inside","into","lest","like","mid","midst","minus","modulo","near","next","notwithstanding","of","off","on","onto","opposite","out","outside","over","pace","past","per","plus","pro","qua","regarding","round","sans","save","since","than","the","through","throughout","till","times","to","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","via","vice","with","within","without","worth"];var Ea=["abnegate","abscond","abseil","absolve","accentuate","accept","access","accessorise","accompany","account","accredit","achieve","acknowledge","acquire","adjourn","adjudge","admonish","adumbrate","advocate","afford","airbrush","ameliorate","amend","amount","anaesthetise","analyse","anesthetize","anneal","annex","antagonize","ape","apologise","apostrophize","appertain","appreciate","appropriate","approximate","arbitrate","archive","arraign","arrange","ascertain","ascribe","assail","atomize","attend","attest","attribute","augment","avow","axe","baa","banish","bank","baptise","battle","beard","beep","behold","belabor","bemuse","besmirch","bestride","better","bewail","bicycle","bide","bind","biodegrade","blacken","blaspheme","bleach","blend","blink","bliss","bloom","bludgeon","bobble","boggle","bolster","book","boom","bootleg","border","bore","boss","braid","brand","brandish","break","breed","broadcast","broadside","brood","browse","buck","burgeon","bus","butter","buzzing","camouflage","cannibalise","canter","cap","capitalise","capitalize","capsize","card","carouse","carp","carpool","catalog","catalyze","catch","categorise","cease","celebrate","censor","certify","char","charter","chase","chatter","chime","chip","christen","chromakey","chunder","chunter","cinch","circle","circulate","circumnavigate","clamor","clamour","claw","cleave","clinch","clinking","clone","clonk","coagulate","coexist","coincide","collaborate","colligate","colorize","colour","comb","come","commandeer","commemorate","communicate","compete","conceal","conceptualize","conclude","concrete","condense","cone","confide","confirm","confiscate","confound","confute","congregate","conjecture","connect","consign","construe","contradict","contrast","contravene","controvert","convalesce","converse","convince","convoke","coop","cop","corner","covenant","cow","crackle","cram","crank","creak","creaking","cripple","croon","cross","crumble","crystallize","culminate","culture","curry","curse","customise","cycle","dally","dampen","darn","debit","debut","decide","decode","decouple","decriminalize","deduce","deduct","deflate","deflect","deform","defrag","degenerate","degrease","delete","delight","deliquesce","demob","demobilise","democratize","demonstrate","denitrify","deny","depart","depend","deplore","deploy","deprave","depute","dereference","describe","desecrate","deselect","destock","detain","develop","devise","dial","dicker","digitize","dilate","disapprove","disarm","disbar","discontinue","disgorge","dishearten","dishonor","disinherit","dislocate","dispense","display","dispose","disrespect","dissemble","ditch","divert","dock","doodle","downchange","downshift","dowse","draft","drag","drain","dramatize","drowse","drum","dwell","economise","edge","efface","egg","eke","electrify","embalm","embed","embody","emboss","emerge","emphasise","emphasize","emulsify","encode","endow","enfold","engage","engender","enhance","enlist","enrage","enrich","enroll","entice","entomb","entrench","entwine","equate","essay","etch","eulogise","even","evince","exacerbate","exaggerate","exalt","exempt","exonerate","expatiate","explode","expostulate","extract","extricate","eyeglasses","fabricate","facilitate","factorise","factorize","fail","fall","familiarize","fashion","father","fathom","fax","federate","feminize","fence","fess","fictionalize","fiddle","fidget","fill","flash","fleck","flight","floodlight","floss","fluctuate","fluff","fly","focalise","foot","forearm","forecast","foretell","forgather","forgo","fork","form","forswear","founder","fraternise","fray","frizz","fumigate","function","furlough","fuss","gad","gallivant","galvanize","gape","garage","garrote","gasp","gestate","give","glimmer","glisten","gloat","gloss","glow","gnash","gnaw","goose","govern","grade","graduate","graft","grok","guest","guilt","gulp","gum","gurn","gust","gut","guzzle","ham","harangue","harvest","hassle","haul","haze","headline","hearten","heighten","highlight","hoick","hold","hole","hollow","holster","home","homeschool","hoot","horn","horse","hotfoot","house","hover","howl","huddle","huff","hunger","hunt","husk","hype","hypothesise","hypothesize","idle","ignite","imagineer","impact","impanel","implode","incinerate","incline","inculcate","industrialize","ingratiate","inhibit","inject","innovate","inscribe","insert","insist","inspect","institute","institutionalize","intend","intermarry","intermesh","intermix","internalise","internalize","internationalize","intrigue","inure","inveigle","inventory","investigate","irk","iterate","jaywalk","jell","jeopardise","jiggle","jive","joint","jot","jut","keel","knife","knit","know","kowtow","lack","lampoon","large","leap","lecture","legitimize","lend","libel","liberalize","license","ligate","list","lobotomise","lock","log","loose","low","lowball","machine","magnetize","major","make","malfunction","manage","manipulate","maroon","masculinize","mash","mask","masquerade","massage","masticate","materialise","matter","maul","memorise","merge","mesh","metabolise","microblog","microchip","micromanage","militate","mill","minister","minor","misappropriate","miscalculate","misfire","misjudge","miskey","mismatch","mispronounce","misread","misreport","misspend","mob","mobilise","mobilize","moisten","mooch","moor","moralise","mortar","mosh","mothball","motivate","motor","mould","mount","muddy","mummify","mutate","mystify","nab","narrate","narrowcast","nasalise","nauseate","navigate","neaten","neck","neglect","norm","notarize","object","obscure","observe","obsess","obstruct","obtrude","offend","offset","option","orchestrate","orient","orientate","outbid","outdo","outfit","outflank","outfox","outnumber","outrank","outrun","outsource","overburden","overcharge","overcook","overdub","overfeed","overload","overplay","overproduce","overreact","override","overspend","overstay","overtrain","overvalue","overwork","own","oxidise","oxidize","oxygenate","pace","pack","pale","pant","paralyse","parody","part","pause","pave","penalise","persecute","personalise","perspire","pertain","peter","pike","pillory","pinion","pip","pity","pivot","pixellate","plagiarise","plait","plan","please","pluck","ponder","popularize","portray","prance","preclude","preheat","prejudge","preregister","presell","preside","pretend","print","prioritize","probate","probe","proceed","procrastinate","profane","progress","proliferate","proofread","propound","proselytise","provision","pry","publicize","puff","pull","pulp","pulverize","purse","put","putrefy","quadruple","quaff","quantify","quarrel","quash","quaver","question","quiet","quintuple","quip","quit","rag","rally","ramp","randomize","rationalise","rationalize","ravage","ravel","react","readies","readjust","readmit","ready","reapply","rear","reassemble","rebel","reboot","reborn","rebound","rebuff","rebuild","rebuke","recede","reckon","reclassify","recompense","reconstitute","record","recount","redact","redevelop","redound","redraw","redress","reel","refer","reference","refine","reflate","refute","regulate","reiterate","rejigger","rejoin","rekindle","relaunch","relieve","remand","remark","reopen","reorient","replicate","repossess","represent","reprimand","reproach","reprove","repurpose","requite","reschedule","resort","respray","restructure","retool","retract","revere","revitalise","revoke","reword","rewrite","ride","ridge","rim","ring","rise","rival","roger","rosin","rot","rout","row","rue","rule","safeguard","sashay","sate","satirise","satirize","satisfy","saturate","savour","scale","scamper","scar","scare","scarper","scent","schematise","scheme","schlep","scoff","scoop","scope","scotch","scowl","scrabble","scram","scramble","scrape","screw","scruple","scrutinise","scuffle","scuttle","search","secularize","see","segregate","sell","sense","sensitize","sequester","serenade","serialize","serve","service","settle","sew","shaft","sham","shampoo","shanghai","shear","sheathe","shell","shinny","shirk","shoot","shoulder","shout","shovel","showboat","shred","shrill","shudder","shush","sidetrack","sign","silt","sin","singe","sit","sizzle","skateboard","ski","slake","slap","slather","sleet","slink","slip","slope","slump","smarten","smuggle","snack","sneak","sniff","snoop","snow","snowplow","snuggle","soap","solace","solder","solicit","source","spark","spattering","spectacles","spectate","spellcheck","spew","spice","spirit","splash","splay","split","splosh","splurge","spook","square","squirm","stabilise","stable","stack","stage","stake","starch","state","statement","stiffen","stigmatize","sting","stint","stoop","store","storyboard","stratify","structure","stuff","stunt","substantiate","subtract","suckle","suffice","suffocate","summarise","sun","sunbathe","sunder","sup","surge","surprise","swat","swathe","sway","swear","swelter","swerve","swill","swing","symbolise","synthesise","syringe","table","tabulate","tag","tame","tank","tankful","tarry","task","taxicab","team","telescope","tenant","terraform","terrorise","testify","think","throbbing","thump","tighten","toady","toe","tough","tousle","traduce","train","transcend","transplant","trash","treasure","treble","trek","trial","tromp","trouser","trust","tune","tut","twine","twist","typify","unbalance","uncork","uncover","underachieve","undergo","underplay","unearth","unfreeze","unfurl","unlearn","unscramble","unzip","uproot","upsell","usher","vacation","vamoose","vanish","vary","veg","venture","verify","vet","veto","volunteer","vulgarise","waft","wallop","waltz","warp","wash","waver","weary","weatherize","wedge","weep","weight","welcome","westernise","westernize","while","whine","whisper","whistle","whitewash","whup","wilt","wing","wire","wisecrack","wolf","wound","wring","writ","yak","yawn","yearn","yuppify"];var so={adjective:Ra,adverb:Ha,conjunction:Pa,interjection:Wa,noun:Ga,preposition:Na,verb:Ea},Fa=so;var uo={airline:r,animal:k,app:A,cell_phone:w$1,color:T,commerce:H$1,company:K$1,database:x$1,date:Y$1,finance:oe$1,food:he$1,hacker:ke$1,internet:Ae$1,location:Ke$1,lorem:xe$1,metadata:ze$1,music:Ue$1,person:ma,phone_number:ba,science:Ca,team:Aa,vehicle:Da,word:Fa},Gl=uo; - - var m=class extends Error{};function ge(i){let e=Object.getPrototypeOf(i);do{for(let t of Object.getOwnPropertyNames(e))typeof i[t]=="function"&&t!=="constructor"&&(i[t]=i[t].bind(i));e=Object.getPrototypeOf(e);}while(e!==Object.prototype)}var x=class{constructor(e){this.faker=e;ge(this);}},p=class extends x{constructor(t){super(t);this.faker=t;}};var ye=(r=>(r.Narrowbody="narrowbody",r.Regional="regional",r.Widebody="widebody",r))(ye||{}),nt=["0","1","2","3","4","5","6","7","8","9"],at=["0","O","1","I","L"],it={regional:20,narrowbody:35,widebody:60},ot={regional:["A","B","C","D"],narrowbody:["A","B","C","D","E","F"],widebody:["A","B","C","D","E","F","G","H","J","K"]},v=class extends p{airport(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airport)}airline(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airline)}airplane(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airplane)}recordLocator(e={}){let{allowNumerics:t=!1,allowVisuallySimilarCharacters:r=!1}=e,n=[];return t||n.push(...nt),r||n.push(...at),this.faker.string.alphanumeric({length:6,casing:"upper",exclude:n})}seat(e={}){let{aircraftType:t="narrowbody"}=e,r=it[t],n=ot[t],a=this.faker.number.int({min:1,max:r}),o=this.faker.helpers.arrayElement(n);return `${a}${o}`}aircraftType(){return this.faker.helpers.enumValue(ye)}flightNumber(e={}){let{length:t={min:1,max:4},addLeadingZeros:r=!1}=e,n=this.faker.string.numeric({length:t,allowLeadingZeros:!1});return r?n.padStart(4,"0"):n}};var ke=(a=>(a.SRGB="sRGB",a.DisplayP3="display-p3",a.REC2020="rec2020",a.A98RGB="a98-rgb",a.ProphotoRGB="prophoto-rgb",a))(ke||{}),xe=(c=>(c.RGB="rgb",c.RGBA="rgba",c.HSL="hsl",c.HSLA="hsla",c.HWB="hwb",c.CMYK="cmyk",c.LAB="lab",c.LCH="lch",c.COLOR="color",c))(xe||{});function st(i,e){let{prefix:t,casing:r}=e;switch(r){case"upper":{i=i.toUpperCase();break}case"lower":{i=i.toLowerCase();break}}return t&&(i=t+i),i}function Ae(i){return i.map(t=>{if(t%1!==0){let n=new ArrayBuffer(4);new DataView(n).setFloat32(0,t);let a=new Uint8Array(n);return Ae([...a]).replaceAll(" ","")}return (t>>>0).toString(2).padStart(8,"0")}).join(" ")}function ct(i,e="rgb",t="sRGB"){let r=n=>Math.round(n*100);switch(e){case"rgba":return `rgba(${i[0]}, ${i[1]}, ${i[2]}, ${i[3]})`;case"color":return `color(${t} ${i[0]} ${i[1]} ${i[2]})`;case"cmyk":return `cmyk(${r(i[0])}%, ${r(i[1])}%, ${r(i[2])}%, ${r(i[3])}%)`;case"hsl":return `hsl(${i[0]}deg ${r(i[1])}% ${r(i[2])}%)`;case"hsla":return `hsl(${i[0]}deg ${r(i[1])}% ${r(i[2])}% / ${r(i[3])})`;case"hwb":return `hwb(${i[0]} ${r(i[1])}% ${r(i[2])}%)`;case"lab":return `lab(${r(i[0])}% ${i[1]} ${i[2]})`;case"lch":return `lch(${r(i[0])}% ${i[1]} ${i[2]})`;case"rgb":return `rgb(${i[0]}, ${i[1]}, ${i[2]})`}}function C(i,e,t="rgb",r="sRGB"){switch(e){case"css":return ct(i,t,r);case"binary":return Ae(i);case"decimal":return i}}var I=class extends p{human(){return this.faker.helpers.arrayElement(this.faker.definitions.color.human)}space(){return this.faker.helpers.arrayElement(this.faker.definitions.color.space)}cssSupportedFunction(){return this.faker.helpers.enumValue(xe)}cssSupportedSpace(){return this.faker.helpers.enumValue(ke)}rgb(e={}){let{format:t="hex",includeAlpha:r=!1,prefix:n="#",casing:a="lower"}=e,o,s="rgb";return t==="hex"?(o=this.faker.string.hexadecimal({length:r?8:6,prefix:""}),o=st(o,{prefix:n,casing:a}),o):(o=Array.from({length:3},()=>this.faker.number.int(255)),r&&(o.push(this.faker.number.float({multipleOf:.01})),s="rgba"),C(o,t,s))}cmyk(e={}){let{format:t="decimal"}=e,r=Array.from({length:4},()=>this.faker.number.float({multipleOf:.01}));return C(r,t,"cmyk")}hsl(e={}){let{format:t="decimal",includeAlpha:r=!1}=e,n=[this.faker.number.int(360)];for(let a=0;a<(e?.includeAlpha?3:2);a++)n.push(this.faker.number.float({multipleOf:.01}));return C(n,t,r?"hsla":"hsl")}hwb(e={}){let{format:t="decimal"}=e,r=[this.faker.number.int(360)];for(let n=0;n<2;n++)r.push(this.faker.number.float({multipleOf:.01}));return C(r,t,"hwb")}lab(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let n=0;n<2;n++)r.push(this.faker.number.float({min:-100,max:100,multipleOf:1e-4}));return C(r,t,"lab")}lch(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let n=0;n<2;n++)r.push(this.faker.number.float({max:230,multipleOf:.1}));return C(r,t,"lch")}colorByCSSColorSpace(e={}){let{format:t="decimal",space:r="sRGB"}=e,n=Array.from({length:3},()=>this.faker.number.float({multipleOf:1e-4}));return C(n,t,"color",r)}};var he=(n=>(n.Legacy="legacy",n.Segwit="segwit",n.Bech32="bech32",n.Taproot="taproot",n))(he||{}),Ee=(t=>(t.Mainnet="mainnet",t.Testnet="testnet",t))(Ee||{}),we={legacy:{prefix:{mainnet:"1",testnet:"m"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},segwit:{prefix:{mainnet:"3",testnet:"2"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},bech32:{prefix:{mainnet:"bc1",testnet:"tb1"},length:{min:42,max:42},casing:"lower",exclude:"1bBiIoO"},taproot:{prefix:{mainnet:"bc1p",testnet:"tb1p"},length:{min:62,max:62},casing:"lower",exclude:"1bBiIoO"}};var Se=(t=>(t.Female="female",t.Male="male",t))(Se||{});function N(i,e,t){let{generic:r,female:n,male:a}=t;switch(e){case"female":return n??r;case"male":return a??r;default:return r??i.helpers.arrayElement([n,a])??[]}}var _=class extends p{firstName(e){return this.faker.helpers.arrayElement(N(this.faker,e,this.faker.definitions.person.first_name))}lastName(e){if(this.faker.rawDefinitions.person?.last_name_pattern!=null){let t=this.faker.helpers.weightedArrayElement(N(this.faker,e,this.faker.rawDefinitions.person.last_name_pattern));return this.faker.helpers.fake(t)}return this.faker.helpers.arrayElement(N(this.faker,e,this.faker.definitions.person.last_name))}middleName(e){return this.faker.helpers.arrayElement(N(this.faker,e,this.faker.definitions.person.middle_name))}fullName(e={}){let{sex:t=this.faker.helpers.arrayElement(["female","male"]),firstName:r=this.firstName(t),lastName:n=this.lastName(t)}=e,a=this.faker.helpers.weightedArrayElement(this.faker.definitions.person.name);return this.faker.helpers.mustache(a,{"person.prefix":()=>this.prefix(t),"person.firstName":()=>r,"person.middleName":()=>this.middleName(t),"person.lastName":()=>n,"person.suffix":()=>this.suffix()})}gender(){return this.faker.helpers.arrayElement(this.faker.definitions.person.gender)}sex(){return this.faker.helpers.arrayElement(this.faker.definitions.person.sex)}sexType(){return this.faker.helpers.enumValue(Se)}bio(){let{bio_pattern:e}=this.faker.definitions.person;return this.faker.helpers.fake(e)}prefix(e){return this.faker.helpers.arrayElement(N(this.faker,e,this.faker.definitions.person.prefix))}suffix(){return this.faker.helpers.arrayElement(this.faker.definitions.person.suffix)}jobTitle(){return this.faker.helpers.fake(this.faker.definitions.person.job_title_pattern)}jobDescriptor(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_descriptor)}jobArea(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_area)}jobType(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_type)}zodiacSign(){return this.faker.helpers.arrayElement(this.faker.definitions.person.western_zodiac_sign)}};var D=class{N=624;M=397;MATRIX_A=2567483615;UPPER_MASK=2147483648;LOWER_MASK=2147483647;mt=Array.from({length:this.N});mti=this.N+1;unsigned32(e){return e<0?(e^this.UPPER_MASK)+this.UPPER_MASK:e}subtraction32(e,t){return e>>n&1&&(r=this.addition32(r,this.unsigned32(t<>>30)),this.mti),this.mt[this.mti]=this.unsigned32(this.mt[this.mti]&4294967295);}initByArray(e,t){this.initGenrand(19650218);let r=1,n=0,a=this.N>t?this.N:t;for(;a;a--)this.mt[r]=this.addition32(this.addition32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1664525)),e[n]),n),this.mt[r]=this.unsigned32(this.mt[r]&4294967295),r++,n++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1),n>=t&&(n=0);for(a=this.N-1;a;a--)this.mt[r]=this.subtraction32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1566083941)),r),this.mt[r]=this.unsigned32(this.mt[r]&4294967295),r++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1);this.mt[0]=2147483648;}mag01=[0,this.MATRIX_A];genrandInt32(){let e;if(this.mti>=this.N){let t;for(this.mti===this.N+1&&this.initGenrand(5489),t=0;t>>1^this.mag01[e&1]);for(;t>>1^this.mag01[e&1]);e=this.unsigned32(this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK),this.mt[this.N-1]=this.unsigned32(this.mt[this.M-1]^e>>>1^this.mag01[e&1]),this.mti=0;}return e=this.mt[this.mti++],e=this.unsigned32(e^e>>>11),e=this.unsigned32(e^e<<7&2636928640),e=this.unsigned32(e^e<<15&4022730752),e=this.unsigned32(e^e>>>18),e}genrandInt31(){return this.genrandInt32()>>>1}genrandReal1(){return this.genrandInt32()*(1/4294967295)}genrandReal2(){return this.genrandInt32()*(1/4294967296)}genrandReal3(){return (this.genrandInt32()+.5)*(1/4294967296)}genrandRes53(){let e=this.genrandInt32()>>>5,t=this.genrandInt32()>>>6;return (e*67108864+t)*(1/9007199254740992)}};function Te(){let i=new D;return i.initGenrand(Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)),{next(){return i.genrandRes53()},seed(e){typeof e=="number"?i.initGenrand(e):Array.isArray(e)&&i.initByArray(e,e.length);}}}var G=class extends x{boolean(e={}){typeof e=="number"&&(e={probability:e});let{probability:t=.5}=e;return t<=0?!1:t>=1?!0:this.faker.number.float(){throw new m("You cannot edit the locale data on the faker instance")};function Me(i){let e={};return new Proxy(i,{has(){return !0},get(t,r){return typeof r=="symbol"||r==="nodeType"?t[r]:r in e?e[r]:e[r]=lt(r,t[r])},set:F,deleteProperty:F})}function O(i,...e){if(i===null)throw new m(`The locale data for '${e.join(".")}' aren't applicable to this locale. - If you think this is a bug, please report it at: https://github.com/faker-js/faker`);if(i===void 0)throw new m(`The locale data for '${e.join(".")}' are missing in this locale. - Please contribute the missing data to the project or use a locale/Faker instance that has these data. - For more information see https://fakerjs.dev/guide/localization.html`)}function lt(i,e={}){return new Proxy(e,{has(t,r){return t[r]!=null},get(t,r){let n=t[r];return typeof r=="symbol"||r==="nodeType"||O(n,i,r.toString()),n},set:F,deleteProperty:F})}function M(i,e="refDate"){let t=new Date(i);if(Number.isNaN(t.valueOf()))throw new m(`Invalid ${e} date: ${i.toString()}`);return t}var R=class extends x{anytime(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=M(t).getTime();return this.between({from:r-1e3*60*60*24*365,to:r+1e3*60*60*24*365})}past(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new m("Years must be greater than 0.");let n=M(r).getTime();return this.between({from:n-t*365*24*3600*1e3,to:n-1e3})}future(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new m("Years must be greater than 0.");let n=M(r).getTime();return this.between({from:n+1e3,to:n+t*365*24*3600*1e3})}between(e){if(e==null||e.from==null||e.to==null)throw new m("Must pass an options object with `from` and `to` values.");let{from:t,to:r}=e,n=M(t,"from").getTime(),a=M(r,"to").getTime();if(n>a)throw new m("`from` date must be before `to` date.");return new Date(this.faker.number.int({min:n,max:a}))}betweens(e){if(e==null||e.from==null||e.to==null)throw new m("Must pass an options object with `from` and `to` values.");let{from:t,to:r,count:n=3}=e;return this.faker.helpers.multiple(()=>this.between({from:t,to:r}),{count:n}).sort((a,o)=>a.getTime()-o.getTime())}recent(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new m("Days must be greater than 0.");let n=M(r).getTime();return this.between({from:n-t*24*3600*1e3,to:n-1e3})}soon(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new m("Days must be greater than 0.");let n=M(r).getTime();return this.between({from:n+1e3,to:n+t*24*3600*1e3})}birthdate(e={}){let{mode:t="age",min:r=18,max:n=80,refDate:a=this.faker.defaultRefDate(),mode:o,min:s,max:l}=e;if([s,l,o].filter(f=>f!=null).length%3!==0)throw new m("The 'min', 'max', and 'mode' options must be set together.");let u=M(a),h=u.getUTCFullYear();switch(t){case"age":{let g=new Date(u).setUTCFullYear(h-n-1)+864e5,b=new Date(u).setUTCFullYear(h-r);if(g>b)throw new m(`Max age ${n} should be greater than or equal to min age ${r}.`);return this.between({from:g,to:b})}case"year":{let f=new Date(Date.UTC(0,0,2)).setUTCFullYear(r),g=new Date(Date.UTC(0,11,30)).setUTCFullYear(n);if(f>g)throw new m(`Max year ${n} should be greater than or equal to min year ${r}.`);return this.between({from:f,to:g})}}}},K=class extends R{constructor(t){super(t);this.faker=t;}month(t={}){let{abbreviated:r=!1,context:n=!1}=t,a=this.faker.definitions.date.month,o;r?o=n&&a.abbr_context!=null?"abbr_context":"abbr":o=n&&a.wide_context!=null?"wide_context":"wide";let s=a[o];return O(s,"date.month",o),this.faker.helpers.arrayElement(s)}weekday(t={}){let{abbreviated:r=!1,context:n=!1}=t,a=this.faker.definitions.date.weekday,o;r?o=n&&a.abbr_context!=null?"abbr_context":"abbr":o=n&&a.wide_context!=null?"wide_context":"wide";let s=a[o];return O(s,"date.weekday",o),this.faker.helpers.arrayElement(s)}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.date.time_zone)}};var mt=/\.|\(/;function Ce(i,e,t=[e,e.rawDefinitions]){if(i.length===0)throw new m("Eval expression cannot be empty.");if(t.length===0)throw new m("Eval entrypoints cannot be empty.");let r=t,n=i;do{let o;n.startsWith("(")?[o,r]=ut(n,r,i):[o,r]=pt(n,r),n=n.substring(o),r=r.filter(s=>s!=null).map(s=>Array.isArray(s)?e.helpers.arrayElement(s):s);}while(n.length>0&&r.length>0);if(r.length===0)throw new m(`Cannot resolve expression '${i}'`);let a=r[0];return typeof a=="function"?a():a}function ut(i,e,t){let[r,n]=ht(i),a=i[r+1];switch(a){case".":case"(":case void 0:break;default:throw new m(`Expected dot ('.'), open parenthesis ('('), or nothing after function call but got '${a}'`)}return [r+(a==="."?2:1),e.map(o=>typeof o=="function"?o(...n):(console.warn(`[@faker-js/faker]: Invoking expressions which are not functions is deprecated since v9.0 and will be removed in v10.0. -Please remove the parentheses or replace the expression with an actual function. -${t} -${" ".repeat(t.length-i.length)}^`),o))]}function ht(i){let e=i.indexOf(")",1);if(e===-1)throw new m(`Missing closing parenthesis in '${i}'`);for(;e!==-1;){let r=i.substring(1,e);try{return [e,JSON.parse(`[${r}]`)]}catch{if(!r.includes("'")&&!r.includes('"'))try{return [e,JSON.parse(`["${r}"]`)]}catch{}}e=i.indexOf(")",e+1);}e=i.lastIndexOf(")");let t=i.substring(1,e);return [e,[t]]}function pt(i,e){let t=mt.exec(i),r=(t?.[0]??"")===".",n=t?.index??i.length,a=i.substring(0,n);if(a.length===0)throw new m(`Expression parts cannot be empty in '${i}'`);let o=i[n+1];if(r&&(o==null||o==="."||o==="("))throw new m(`Found dot without property name in '${i}'`);return [n+(r?1:0),e.map(s=>ft(s,a))]}function ft(i,e){switch(typeof i){case"function":{try{i=i();}catch{return}return i?.[e]}case"object":return i?.[e];default:return}}function Ne(i){let e=bt(i.replace(/L?$/,"0"));return e===0?0:10-e}function bt(i){i=i.replaceAll(/[\s-]/g,"");let e=0,t=!1;for(let r=i.length-1;r>=0;r--){let n=Number.parseInt(i[r]);t&&(n*=2,n>9&&(n=n%10+1)),e+=n,t=!t;}return e%10}function De(i,e,t,r){let n=1;if(e)switch(e){case"?":{n=i.datatype.boolean()?0:1;break}case"*":{let a=1;for(;i.datatype.boolean();)a*=2;n=i.number.int({min:0,max:a});break}case"+":{let a=1;for(;i.datatype.boolean();)a*=2;n=i.number.int({min:1,max:a});break}default:throw new m("Unknown quantifier symbol provided.")}else t!=null&&r!=null?n=i.number.int({min:Number.parseInt(t),max:Number.parseInt(r)}):t!=null&&r==null&&(n=Number.parseInt(t));return n}function dt(i,e=""){let t=/(.)\{(\d+),(\d+)\}/,r=/(.)\{(\d+)\}/,n=/\[(\d+)-(\d+)\]/,a,o,s,l,c=t.exec(e);for(;c!=null;)a=Number.parseInt(c[2]),o=Number.parseInt(c[3]),a>o&&(s=o,o=a,a=s),l=i.number.int({min:a,max:o}),e=e.slice(0,c.index)+c[1].repeat(l)+e.slice(c.index+c[0].length),c=t.exec(e);for(c=r.exec(e);c!=null;)l=Number.parseInt(c[2]),e=e.slice(0,c.index)+c[1].repeat(l)+e.slice(c.index+c[0].length),c=r.exec(e);for(c=n.exec(e);c!=null;)a=Number.parseInt(c[1]),o=Number.parseInt(c[2]),a>o&&(s=o,o=a,a=s),e=e.slice(0,c.index)+i.number.int({min:a,max:o}).toString()+e.slice(c.index+c[0].length),c=n.exec(e);return e}function pe(i,e="",t="#"){let r="";for(let n=0;nd.codePointAt(0)??Number.NaN);if(r=A[0],n=A[1],r>n)throw new m("Character range provided is out of order.");for(let d=r;d<=n;d++)if(t&&Number.isNaN(Number(String.fromCodePoint(d)))){let de=String.fromCodePoint(d);y.push(de.toUpperCase().codePointAt(0)??Number.NaN,de.toLowerCase().codePointAt(0)??Number.NaN);}else y.push(d);}else t&&Number.isNaN(Number(S[0]))?y.push(S[0].toUpperCase().codePointAt(0)??Number.NaN,S[0].toLowerCase().codePointAt(0)??Number.NaN):y.push(S[0].codePointAt(0)??Number.NaN);P=P.substring(S[0].length),S=l.exec(P);}if(a=De(this.faker,T,b,k),f){let A=-1;for(let d=48;d<=57;d++){if(A=y.indexOf(d),A>-1){y.splice(A,1);continue}y.push(d);}for(let d=65;d<=90;d++){if(A=y.indexOf(d),A>-1){y.splice(A,1);continue}y.push(d);}for(let d=97;d<=122;d++){if(A=y.indexOf(d),A>-1){y.splice(A,1);continue}y.push(d);}}let rt=this.multiple(()=>String.fromCodePoint(this.arrayElement(y)),{count:a}).join("");e=e.slice(0,s.index)+rt+e.slice(s.index+s[0].length),s=c.exec(e);}let u=/(.)\{(\d+),(\d+)\}/;for(s=u.exec(e);s!=null;){if(r=Number.parseInt(s[2]),n=Number.parseInt(s[3]),r>n)throw new m("Numbers out of order in {} quantifier.");a=this.faker.number.int({min:r,max:n}),e=e.slice(0,s.index)+s[1].repeat(a)+e.slice(s.index+s[0].length),s=u.exec(e);}let h=/(.)\{(\d+)\}/;for(s=h.exec(e);s!=null;)a=Number.parseInt(s[2]),e=e.slice(0,s.index)+s[1].repeat(a)+e.slice(s.index+s[0].length),s=h.exec(e);return e}shuffle(e,t={}){let{inplace:r=!1}=t;r||(e=[...e]);for(let n=e.length-1;n>0;--n){let a=this.faker.number.int(n);[e[n],e[a]]=[e[a],e[n]];}return e}uniqueArray(e,t){if(Array.isArray(e)){let a=[...new Set(e)];return this.shuffle(a).splice(0,t)}let r=new Set;try{if(typeof e=="function"){let n=1e3*t,a=0;for(;r.size1?this.faker.number.int({max:e.length-1}):0;return e[t]}weightedArrayElement(e){if(e.length===0)throw new m("weightedArrayElement expects an array with at least one element");if(!e.every(a=>a.weight>0))throw new m("weightedArrayElement expects an array of { weight, value } objects where weight is a positive number");let t=e.reduce((a,{weight:o})=>a+o,0),r=this.faker.number.float({min:0,max:t}),n=0;for(let{weight:a,value:o}of e)if(n+=a,r=e.length)return this.shuffle(e);if(r<=0)return [];let n=[...e],a=e.length,o=a-r,s,l;for(;a-- >o;)l=this.faker.number.int(a),s=n[l],n[l]=n[a],n[a]=s;return n.slice(o)}enumValue(e){let t=Object.keys(e).filter(n=>Number.isNaN(Number(n))),r=this.arrayElement(t);return e[r]}rangeToNumber(e){return typeof e=="number"?e:this.faker.number.int(e)}multiple(e,t={}){let r=this.rangeToNumber(t.count??3);return r<=0?[]:Array.from({length:r},e)}},U=class extends L{constructor(t){super(t);this.faker=t;}fake(t){t=typeof t=="string"?t:this.arrayElement(t);let r=t.search(/{{[a-z]/),n=t.indexOf("}}",r);if(r===-1||n===-1)return t;let o=t.substring(r+2,n+2).replace("}}","").replace("{{",""),s=Ce(o,this.faker),l=String(s),c=t.substring(0,r)+l+t.substring(n+2);return this.fake(c)}};var j=class extends x{int(e={}){typeof e=="number"&&(e={max:e});let{min:t=0,max:r=Number.MAX_SAFE_INTEGER,multipleOf:n=1}=e;if(!Number.isInteger(n))throw new m("multipleOf should be an integer.");if(n<=0)throw new m("multipleOf should be greater than 0.");let a=Math.ceil(t/n),o=Math.floor(r/n);if(a===o)return a*n;if(o=t?new m(`No suitable integer value between ${t} and ${r} found.`):new m(`Max ${r} should be greater than min ${t}.`);let l=this.faker._randomizer.next(),c=o-a+1;return Math.floor(l*c+a)*n}float(e={}){typeof e=="number"&&(e={max:e});let{min:t=0,max:r=1,fractionDigits:n,multipleOf:a,multipleOf:o=n==null?void 0:10**-n}=e;if(r===t)return t;if(rthis.faker.helpers.arrayElement(e),{count:t}).join("")}alpha(e={}){typeof e=="number"&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return "";let{casing:r="mixed"}=e,{exclude:n=[]}=e;typeof n=="string"&&(n=[...n]);let a;switch(r){case"upper":{a=[...H];break}case"lower":{a=[...V];break}case"mixed":{a=[...V,...H];break}}return a=a.filter(o=>!n.includes(o)),this.fromCharacters(a,t)}alphanumeric(e={}){typeof e=="number"&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return "";let{casing:r="mixed"}=e,{exclude:n=[]}=e;typeof n=="string"&&(n=[...n]);let a=[...Re];switch(r){case"upper":{a.push(...H);break}case"lower":{a.push(...V);break}case"mixed":{a.push(...V,...H);break}}return a=a.filter(o=>!n.includes(o)),this.fromCharacters(a,t)}binary(e={}){let{prefix:t="0b"}=e,r=t;return r+=this.fromCharacters(["0","1"],e.length??1),r}octal(e={}){let{prefix:t="0o"}=e,r=t;return r+=this.fromCharacters(["0","1","2","3","4","5","6","7"],e.length??1),r}hexadecimal(e={}){let{casing:t="mixed",prefix:r="0x"}=e,n=this.faker.helpers.rangeToNumber(e.length??1);if(n<=0)return r;let a=this.fromCharacters(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","A","B","C","D","E","F"],n);return t==="upper"?a=a.toUpperCase():t==="lower"&&(a=a.toLowerCase()),`${r}${a}`}numeric(e={}){typeof e=="number"&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return "";let{allowLeadingZeros:r=!0}=e,{exclude:n=[]}=e;typeof n=="string"&&(n=[...n]);let a=Re.filter(s=>!n.includes(s));if(a.length===0||a.length===1&&!r&&a[0]==="0")throw new m("Unable to generate numeric string, because all possible digits are excluded.");let o="";return !r&&!n.includes("0")&&(o+=this.faker.helpers.arrayElement(a.filter(s=>s!=="0"))),o+=this.fromCharacters(a,t-o.length),o}sample(e=10){e=this.faker.helpers.rangeToNumber(e);let t={min:33,max:125},r="";for(;r.lengththis.faker.number.hex({min:0,max:15})).replaceAll("y",()=>this.faker.number.hex({min:8,max:11}))}nanoid(e=21){if(e=this.faker.helpers.rangeToNumber(e),e<=0)return "";let t=[{value:()=>this.alphanumeric(1),weight:62},{value:()=>this.faker.helpers.arrayElement(["_","-"]),weight:2}],r="";for(;r.length","?","@","[","\\","]","^","_","`","{","|","}","~"],e)}};var $=class{_defaultRefDate=()=>new Date;get defaultRefDate(){return this._defaultRefDate}setDefaultRefDate(e=()=>new Date){typeof e=="function"?this._defaultRefDate=e:this._defaultRefDate=()=>new Date(e);}_randomizer;datatype=new G(this);date=new R(this);helpers=new L(this);number=new j(this);string=new z(this);constructor(e={}){let{randomizer:t=Te()}=e;this._randomizer=t;}seed(e=Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)){return this._randomizer.seed(e),e}};new $;function Le(i){let e={};for(let t of i)for(let r in t){let n=t[r];e[r]===void 0?e[r]={...n}:e[r]={...n,...e[r]};}return e}function B(i){let e=`[@faker-js/faker]: ${i.deprecated} is deprecated`;i.since&&(e+=` since v${i.since}`),i.until&&(e+=` and will be removed in v${i.until}`),i.proposed&&(e+=`. Please use ${i.proposed} instead`),console.warn(`${e}.`);}var Y=class extends p{dog(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.dog)}cat(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cat)}snake(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.snake)}bear(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bear)}lion(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.lion)}cetacean(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cetacean)}horse(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.horse)}bird(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bird)}cow(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cow)}fish(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.fish)}crocodilia(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.crocodilia)}insect(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.insect)}rabbit(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rabbit)}rodent(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rodent)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.type)}};var gt={0:[[1999999,2],[2279999,3],[2289999,4],[3689999,3],[3699999,4],[6389999,3],[6397999,4],[6399999,7],[6449999,3],[6459999,7],[6479999,3],[6489999,7],[6549999,3],[6559999,4],[6999999,3],[8499999,4],[8999999,5],[9499999,6],[9999999,7]],1:[[99999,3],[299999,2],[349999,3],[399999,4],[499999,3],[699999,2],[999999,4],[3979999,3],[5499999,4],[6499999,5],[6799999,4],[6859999,5],[7139999,4],[7169999,3],[7319999,4],[7399999,7],[7749999,5],[7753999,7],[7763999,5],[7764999,7],[7769999,5],[7782999,7],[7899999,5],[7999999,4],[8004999,5],[8049999,5],[8379999,5],[8384999,7],[8671999,5],[8675999,4],[8697999,5],[9159999,6],[9165059,7],[9168699,6],[9169079,7],[9195999,6],[9196549,7],[9729999,6],[9877999,4],[9911499,6],[9911999,7],[9989899,6],[9999999,7]]},W=class extends p{department(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.department)}productName(){return `${this.productAdjective()} ${this.productMaterial()} ${this.product()}`}price(e={}){let{dec:t=2,max:r=1e3,min:n=1,symbol:a=""}=e;if(n<0||r<0)return `${a}0`;if(n===r)return `${a}${n.toFixed(t)}`;let o=this.faker.number.float({min:n,max:r,fractionDigits:t});if(t===0)return `${a}${o.toFixed(t)}`;let s=o*10**t%10,l=this.faker.helpers.weightedArrayElement([{weight:5,value:9},{weight:3,value:5},{weight:1,value:0},{weight:1,value:this.faker.number.int({min:0,max:9})}]),c=(1/10)**t,u=s*c,h=l*c,f=o-u+h;return n<=f&&f<=r?`${a}${f.toFixed(t)}`:`${a}${o.toFixed(t)}`}productAdjective(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.adjective)}productMaterial(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.material)}product(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.product)}productDescription(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_description)}isbn(e={}){typeof e=="number"&&(e={variant:e});let{variant:t=13,separator:r="-"}=e,n="978",[a,o]=this.faker.helpers.objectEntry(gt),s=this.faker.string.numeric(8),l=Number.parseInt(s.slice(0,-1)),c=o.find(([k])=>l<=k)?.[1];if(!c)throw new m(`Unable to find a registrant length for the group ${a}`);let u=s.slice(0,c),h=s.slice(c),f=[n,a,u,h];t===10&&f.shift();let g=f.join(""),b=0;for(let k=0;k{let e=0;for(let t of i)e=(e*10+ +t)%97;return e},pattern10:["01","02","03","04","05","06","07","08","09"],pattern100:["001","002","003","004","005","006","007","008","009"],toDigitString:i=>i.replaceAll(/[A-Z]/gi,e=>String((e.toUpperCase().codePointAt(0)??Number.NaN)-55))},E=yt;function kt(i){let e="";for(let t=0;tc.country===t):this.faker.helpers.arrayElement(E.formats);if(!n)throw new m(`Country code ${t} not supported.`);let a="",o=0;for(let c of n.bban){let u=c.count;for(o+=c.count;u>0;)c.type==="a"?a+=this.faker.helpers.arrayElement(E.alpha):c.type==="c"?this.faker.datatype.boolean(.8)?a+=this.faker.number.int(9):a+=this.faker.helpers.arrayElement(E.alpha):u>=3&&this.faker.datatype.boolean(.3)?this.faker.datatype.boolean()?(a+=this.faker.helpers.arrayElement(E.pattern100),u-=2):(a+=this.faker.helpers.arrayElement(E.pattern10),u--):a+=this.faker.number.int(9),u--;a=a.substring(0,o);}let s=98-E.mod97(E.toDigitString(`${a}${n.country}00`));s<10&&(s=`0${s}`);let l=`${n.country}${s}${a}`;return r?kt(l):l}bic(e={}){let{includeBranchCode:t=this.faker.datatype.boolean()}=e,r=this.faker.string.alpha({length:4,casing:"upper"}),n=this.faker.helpers.arrayElement(E.iso3166),a=this.faker.string.alphanumeric({length:2,casing:"upper"}),o=t?this.faker.datatype.boolean()?this.faker.string.alphanumeric({length:3,casing:"upper"}):"XXX":"";return `${r}${n}${a}${o}`}transactionDescription(){let e=this.amount(),t=this.faker.company.name(),r=this.transactionType(),n=this.accountNumber(),a=this.maskedNumber(),o=this.currencyCode();return `${r} transaction at ${t} using card ending with ***${a} for ${o} ${e} in account ***${n}`}};var Q=class extends p{adjective(){return this.faker.helpers.fake(this.faker.definitions.food.adjective)}description(){return this.faker.helpers.fake(this.faker.definitions.food.description_pattern)}dish(){let e=t=>t.split(" ").map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" ");return this.faker.datatype.boolean()?e(this.faker.helpers.fake(this.faker.definitions.food.dish_pattern)):e(this.faker.helpers.arrayElement(this.faker.definitions.food.dish))}ethnicCategory(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ethnic_category)}fruit(){return this.faker.helpers.arrayElement(this.faker.definitions.food.fruit)}ingredient(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ingredient)}meat(){return this.faker.helpers.arrayElement(this.faker.definitions.food.meat)}spice(){return this.faker.helpers.arrayElement(this.faker.definitions.food.spice)}vegetable(){return this.faker.helpers.arrayElement(this.faker.definitions.food.vegetable)}};var xt="\xA0",q=class extends p{branch(){let e=this.faker.hacker.noun().replace(" ","-"),t=this.faker.hacker.verb().replace(" ","-");return `${e}-${t}`}commitEntry(e={}){let{merge:t=this.faker.datatype.boolean({probability:.2}),eol:r="CRLF",refDate:n}=e,a=[`commit ${this.faker.git.commitSha()}`];t&&a.push(`Merge: ${this.commitSha({length:7})} ${this.commitSha({length:7})}`);let o=this.faker.person.firstName(),s=this.faker.person.lastName(),l=this.faker.person.fullName({firstName:o,lastName:s}),c=this.faker.internet.userName({firstName:o,lastName:s}),u=this.faker.helpers.arrayElement([l,c]),h=this.faker.internet.email({firstName:o,lastName:s});u=u.replaceAll(/^[.,:;"\\']|[<>\n]|[.,:;"\\']$/g,""),a.push(`Author: ${u} <${h}>`,`Date: ${this.commitDate({refDate:n})}`,"",`${xt.repeat(4)}${this.commitMessage()}`,"");let f=r==="CRLF"?`\r -`:` -`;return a.join(f)}commitMessage(){return `${this.faker.hacker.verb()} ${this.faker.hacker.adjective()} ${this.faker.hacker.noun()}`}commitDate(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],a=this.faker.date.recent({days:1,refDate:t}),o=r[a.getUTCDay()],s=n[a.getUTCMonth()],l=a.getUTCDate(),c=a.getUTCHours().toString().padStart(2,"0"),u=a.getUTCMinutes().toString().padStart(2,"0"),h=a.getUTCSeconds().toString().padStart(2,"0"),f=a.getUTCFullYear(),g=this.faker.number.int({min:-11,max:12}),b=Math.abs(g).toString().padStart(2,"0"),k="00",T=g>=0?"+":"-";return `${o} ${s} ${l} ${c}:${u}:${h} ${f} ${T}${b}${k}`}commitSha(e={}){let{length:t=40}=e;return this.faker.string.hexadecimal({length:t,casing:"lower",prefix:""})}};var ee=class extends p{abbreviation(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.abbreviation)}adjective(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.adjective)}noun(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.noun)}verb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.verb)}ingverb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.ingverb)}phrase(){let e={abbreviation:this.abbreviation,adjective:this.adjective,ingverb:this.ingverb,noun:this.noun,verb:this.verb},t=this.faker.helpers.arrayElement(this.faker.definitions.hacker.phrase);return this.faker.helpers.mustache(t,e)}};var $e=typeof Buffer>"u"?i=>{let e=new TextEncoder().encode(i),t=Array.from(e,r=>String.fromCodePoint(r)).join("");return btoa(t)}:i=>Buffer.from(i).toString("base64");var te=class extends p{avatar(){return this.avatarGitHub()}avatarGitHub(){return `https://avatars.githubusercontent.com/u/${this.faker.number.int(1e8)}`}avatarLegacy(){return B({deprecated:"faker.image.avatarLegacy()",proposed:"faker.image.avatar()",since:"9.0.2",until:"10.0.0"}),`https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/${this.faker.number.int(1249)}.jpg`}url(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999})}=e;return this.faker.helpers.arrayElement([this.urlLoremFlickr,({width:a,height:o})=>this.urlPicsumPhotos({width:a,height:o,grayscale:!1,blur:0})])({width:t,height:r})}urlLoremFlickr(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),category:n}=e;return `https://loremflickr.com/${t}/${r}${n==null?"":`/${n}`}?lock=${this.faker.number.int()}`}urlPicsumPhotos(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),grayscale:n=this.faker.datatype.boolean(),blur:a=this.faker.number.int({max:10})}=e,o=`https://picsum.photos/seed/${this.faker.string.alphanumeric({length:{min:5,max:10}})}/${t}/${r}`,s=typeof a=="number"&&a>=1&&a<=10;return (n||s)&&(o+="?",n&&(o+="grayscale"),n&&s&&(o+="&"),s&&(o+=`blur=${a}`)),o}urlPlaceholder(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),backgroundColor:n=this.faker.color.rgb({format:"hex",prefix:""}),textColor:a=this.faker.color.rgb({format:"hex",prefix:""}),format:o=this.faker.helpers.arrayElement(["gif","jpeg","jpg","png","webp"]),text:s=this.faker.lorem.words()}=e,l="https://via.placeholder.com";return l+=`/${t}`,l+=`x${r}`,l+=`/${n}`,l+=`/${a}`,l+=`.${o}`,l+=`?text=${encodeURIComponent(s)}`,l}dataUri(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),color:n=this.faker.color.rgb(),type:a=this.faker.helpers.arrayElements(["svg-uri","svg-base64"])}=e,o=`${t}x${r}`;return a==="svg-uri"?`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(o)}`:`data:image/svg+xml;base64,${$e(o)}`}};var At=Object.fromEntries([["\u0410","A"],["\u0430","a"],["\u0411","B"],["\u0431","b"],["\u0412","V"],["\u0432","v"],["\u0413","G"],["\u0433","g"],["\u0414","D"],["\u0434","d"],["\u044A\u0435","ye"],["\u042A\u0435","Ye"],["\u044A\u0415","yE"],["\u042A\u0415","YE"],["\u0415","E"],["\u0435","e"],["\u0401","Yo"],["\u0451","yo"],["\u0416","Zh"],["\u0436","zh"],["\u0417","Z"],["\u0437","z"],["\u0418","I"],["\u0438","i"],["\u044B\u0439","iy"],["\u042B\u0439","Iy"],["\u042B\u0419","IY"],["\u044B\u0419","iY"],["\u0419","Y"],["\u0439","y"],["\u041A","K"],["\u043A","k"],["\u041B","L"],["\u043B","l"],["\u041C","M"],["\u043C","m"],["\u041D","N"],["\u043D","n"],["\u041E","O"],["\u043E","o"],["\u041F","P"],["\u043F","p"],["\u0420","R"],["\u0440","r"],["\u0421","S"],["\u0441","s"],["\u0422","T"],["\u0442","t"],["\u0423","U"],["\u0443","u"],["\u0424","F"],["\u0444","f"],["\u0425","Kh"],["\u0445","kh"],["\u0426","Ts"],["\u0446","ts"],["\u0427","Ch"],["\u0447","ch"],["\u0428","Sh"],["\u0448","sh"],["\u0429","Sch"],["\u0449","sch"],["\u042A",""],["\u044A",""],["\u042B","Y"],["\u044B","y"],["\u042C",""],["\u044C",""],["\u042D","E"],["\u044D","e"],["\u042E","Yu"],["\u044E","yu"],["\u042F","Ya"],["\u044F","ya"]]),Et=Object.fromEntries([["\u03B1","a"],["\u03B2","v"],["\u03B3","g"],["\u03B4","d"],["\u03B5","e"],["\u03B6","z"],["\u03B7","i"],["\u03B8","th"],["\u03B9","i"],["\u03BA","k"],["\u03BB","l"],["\u03BC","m"],["\u03BD","n"],["\u03BE","ks"],["\u03BF","o"],["\u03C0","p"],["\u03C1","r"],["\u03C3","s"],["\u03C4","t"],["\u03C5","y"],["\u03C6","f"],["\u03C7","x"],["\u03C8","ps"],["\u03C9","o"],["\u03AC","a"],["\u03AD","e"],["\u03AF","i"],["\u03CC","o"],["\u03CD","y"],["\u03AE","i"],["\u03CE","o"],["\u03C2","s"],["\u03CA","i"],["\u03B0","y"],["\u03CB","y"],["\u0390","i"],["\u0391","A"],["\u0392","B"],["\u0393","G"],["\u0394","D"],["\u0395","E"],["\u0396","Z"],["\u0397","I"],["\u0398","TH"],["\u0399","I"],["\u039A","K"],["\u039B","L"],["\u039C","M"],["\u039D","N"],["\u039E","KS"],["\u039F","O"],["\u03A0","P"],["\u03A1","R"],["\u03A3","S"],["\u03A4","T"],["\u03A5","Y"],["\u03A6","F"],["\u03A7","X"],["\u03A8","PS"],["\u03A9","O"],["\u0386","A"],["\u0388","E"],["\u038A","I"],["\u038C","O"],["\u038E","Y"],["\u0389","I"],["\u038F","O"],["\u03AA","I"],["\u03AB","Y"]]),wt=Object.fromEntries([["\u0621","e"],["\u0622","a"],["\u0623","a"],["\u0624","w"],["\u0625","i"],["\u0626","y"],["\u0627","a"],["\u0628","b"],["\u0629","t"],["\u062A","t"],["\u062B","th"],["\u062C","j"],["\u062D","h"],["\u062E","kh"],["\u062F","d"],["\u0630","dh"],["\u0631","r"],["\u0632","z"],["\u0633","s"],["\u0634","sh"],["\u0635","s"],["\u0636","d"],["\u0637","t"],["\u0638","z"],["\u0639","e"],["\u063A","gh"],["\u0640","_"],["\u0641","f"],["\u0642","q"],["\u0643","k"],["\u0644","l"],["\u0645","m"],["\u0646","n"],["\u0647","h"],["\u0648","w"],["\u0649","a"],["\u064A","y"],["\u064E\u200E","a"],["\u064F","u"],["\u0650\u200E","i"]]),St=Object.fromEntries([["\u0561","a"],["\u0531","A"],["\u0562","b"],["\u0532","B"],["\u0563","g"],["\u0533","G"],["\u0564","d"],["\u0534","D"],["\u0565","ye"],["\u0535","Ye"],["\u0566","z"],["\u0536","Z"],["\u0567","e"],["\u0537","E"],["\u0568","y"],["\u0538","Y"],["\u0569","t"],["\u0539","T"],["\u056A","zh"],["\u053A","Zh"],["\u056B","i"],["\u053B","I"],["\u056C","l"],["\u053C","L"],["\u056D","kh"],["\u053D","Kh"],["\u056E","ts"],["\u053E","Ts"],["\u056F","k"],["\u053F","K"],["\u0570","h"],["\u0540","H"],["\u0571","dz"],["\u0541","Dz"],["\u0572","gh"],["\u0542","Gh"],["\u0573","tch"],["\u0543","Tch"],["\u0574","m"],["\u0544","M"],["\u0575","y"],["\u0545","Y"],["\u0576","n"],["\u0546","N"],["\u0577","sh"],["\u0547","Sh"],["\u0578","vo"],["\u0548","Vo"],["\u0579","ch"],["\u0549","Ch"],["\u057A","p"],["\u054A","P"],["\u057B","j"],["\u054B","J"],["\u057C","r"],["\u054C","R"],["\u057D","s"],["\u054D","S"],["\u057E","v"],["\u054E","V"],["\u057F","t"],["\u054F","T"],["\u0580","r"],["\u0550","R"],["\u0581","c"],["\u0551","C"],["\u0578\u0582","u"],["\u0548\u0552","U"],["\u0548\u0582","U"],["\u0583","p"],["\u0553","P"],["\u0584","q"],["\u0554","Q"],["\u0585","o"],["\u0555","O"],["\u0586","f"],["\u0556","F"],["\u0587","yev"]]),Tt=Object.fromEntries([["\u0686","ch"],["\u06A9","k"],["\u06AF","g"],["\u067E","p"],["\u0698","zh"],["\u06CC","y"]]),Mt=Object.fromEntries([["\u05D0","a"],["\u05D1","b"],["\u05D2","g"],["\u05D3","d"],["\u05D4","h"],["\u05D5","v"],["\u05D6","z"],["\u05D7","ch"],["\u05D8","t"],["\u05D9","y"],["\u05DB","k"],["\u05DA","kh"],["\u05DC","l"],["\u05DD","m"],["\u05DE","m"],["\u05DF","n"],["\u05E0","n"],["\u05E1","s"],["\u05E2","a"],["\u05E4","f"],["\u05E3","ph"],["\u05E6","ts"],["\u05E5","ts"],["\u05E7","k"],["\u05E8","r"],["\u05E9","sh"],["\u05EA","t"],["\u05D5","v"]]),fe={...At,...Et,...wt,...Tt,...St,...Mt};function Be(i){let e=()=>i.helpers.arrayElement(["AB","AF","AN","AR","AS","AZ","BE","BG","BN","BO","BR","BS","CA","CE","CO","CS","CU","CY","DA","DE","EL","EN","EO","ES","ET","EU","FA","FI","FJ","FO","FR","FY","GA","GD","GL","GV","HE","HI","HR","HT","HU","HY","ID","IS","IT","JA","JV","KA","KG","KO","KU","KW","KY","LA","LB","LI","LN","LT","LV","MG","MK","MN","MO","MS","MT","MY","NB","NE","NL","NN","NO","OC","PL","PT","RM","RO","RU","SC","SE","SK","SL","SO","SQ","SR","SV","SW","TK","TR","TY","UK","UR","UZ","VI","VO","YI","ZH"]),t=()=>{let c={chrome:["win","mac","lin"],firefox:["win","mac","lin"],opera:["win","mac","lin"],safari:["win","mac"],iexplorer:["win"]},u=i.helpers.objectKey(c),h=i.helpers.arrayElement(c[u]);return [u,h]},r=c=>i.helpers.arrayElement({lin:["i686","x86_64"],mac:["Intel","PPC","U; Intel","U; PPC"],win:["","WOW64","Win64; x64"]}[c]),n=c=>{let u="";for(let h=0;h=11?`Mozilla/5.0 (Windows NT 6.${i.number.int({min:1,max:3})}; Trident/7.0; ${i.datatype.boolean()?"Touch; ":""}rv:11.0) like Gecko`:`Mozilla/5.0 (compatible; MSIE ${c}.0; Windows NT ${a.nt()}; Trident/${a.trident()}${i.datatype.boolean()?`; .NET CLR ${a.net()}`:""})`},opera(c){let u=` Presto/${a.presto()} Version/${a.presto2()})`,h=c==="win"?`(Windows NT ${a.nt()}; U; ${e()}${u}`:c==="lin"?`(X11; Linux ${r(c)}; U; ${e()}${u}`:`(Macintosh; Intel Mac OS X ${a.osx()} U; ${e()} Presto/${a.presto()} Version/${a.presto2()})`;return `Opera/${i.number.int({min:9,max:14})}.${i.number.int(99)} ${h}`},safari(c){let u=a.safari(),h=`${i.number.int({min:4,max:7})}.${i.number.int(1)}.${i.number.int(10)}`;return `Mozilla/5.0 ${c==="mac"?`(Macintosh; ${r("mac")} Mac OS X ${a.osx("_")} rv:${i.number.int({min:2,max:6})}.0; ${e()}) `:`(Windows; U; Windows NT ${a.nt()})`}AppleWebKit/${u} (KHTML, like Gecko) Version/${h} Safari/${u}`},chrome(c){let u=a.safari();return `Mozilla/5.0 ${c==="mac"?`(Macintosh; ${r("mac")} Mac OS X ${a.osx("_")}) `:c==="win"?`(Windows; U; Windows NT ${a.nt()})`:`(X11; Linux ${r(c)}`} AppleWebKit/${u} (KHTML, like Gecko) Chrome/${a.chrome()} Safari/${u}`}},[s,l]=t();return o[s](l)}var re=class extends p{email(e={}){let{firstName:t,lastName:r,provider:n=this.faker.helpers.arrayElement(this.faker.definitions.internet.free_email),allowSpecialCharacters:a=!1}=e,o=this.userName({firstName:t,lastName:r});if(o=o.replaceAll(/[^A-Za-z0-9._+-]+/g,""),o=o.substring(0,50),a){let s=[..."._-"],l=[...".!#$%&'*+-/=?^_`{|}~"];o=o.replace(this.faker.helpers.arrayElement(s),this.faker.helpers.arrayElement(l));}return o=o.replaceAll(/\.{2,}/g,"."),o=o.replace(/^\./,""),o=o.replace(/\.$/,""),`${o}@${n}`}exampleEmail(e={}){let{firstName:t,lastName:r,allowSpecialCharacters:n=!1}=e,a=this.faker.helpers.arrayElement(this.faker.definitions.internet.example_email);return this.email({firstName:t,lastName:r,provider:a,allowSpecialCharacters:n})}userName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName(),lastName:n}=e,a=this.faker.helpers.arrayElement([".","_"]),o=this.faker.number.int(99),s=[()=>`${t}${a}${r}${o}`,()=>`${t}${a}${r}`];n||s.push(()=>`${t}${o}`);let l=this.faker.helpers.arrayElement(s)();return l=l.normalize("NFKD").replaceAll(/[\u0300-\u036F]/g,""),l=[...l].map(c=>{if(fe[c])return fe[c];let u=c.codePointAt(0)??Number.NaN;return u<128?c:u.toString(36)}).join(""),l=l.toString().replaceAll("'",""),l=l.replaceAll(" ",""),l}displayName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName()}=e,n=this.faker.helpers.arrayElement([".","_"]),a=this.faker.number.int(99),o=[()=>`${t}${a}`,()=>`${t}${n}${r}`,()=>`${t}${n}${r}${a}`],s=this.faker.helpers.arrayElement(o)();return s=s.toString().replaceAll("'",""),s=s.replaceAll(" ",""),s}protocol(){let e=["http","https"];return this.faker.helpers.arrayElement(e)}httpMethod(){let e=["GET","POST","PUT","DELETE","PATCH"];return this.faker.helpers.arrayElement(e)}httpStatusCode(e={}){let{types:t=Object.keys(this.faker.definitions.internet.http_status_code)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.http_status_code[r])}url(e={}){let{appendSlash:t=this.faker.datatype.boolean(),protocol:r="https"}=e;return `${r}://${this.domainName()}${t?"/":""}`}domainName(){return `${this.domainWord()}.${this.domainSuffix()}`}domainSuffix(){return this.faker.helpers.arrayElement(this.faker.definitions.internet.domain_suffix)}domainWord(){return this.faker.helpers.slugify(`${this.faker.word.adjective()}-${this.faker.word.noun()}`).toLowerCase()}ip(){return this.faker.datatype.boolean()?this.ipv4():this.ipv6()}ipv4(){return Array.from({length:4},()=>this.faker.number.int(255)).join(".")}ipv6(){return Array.from({length:8},()=>this.faker.string.hexadecimal({length:4,casing:"lower",prefix:""})).join(":")}port(){return this.faker.number.int(65535)}userAgent(){return Be(this.faker)}color(e={}){let{redBase:t=0,greenBase:r=0,blueBase:n=0}=e,a=c=>Math.floor((this.faker.number.int(256)+c)/2).toString(16).padStart(2,"0"),o=a(t),s=a(r),l=a(n);return `#${o}${s}${l}`}mac(e={}){typeof e=="string"&&(e={separator:e});let{separator:t=":"}=e,r,n="";for([":","-",""].includes(t)||(t=":"),r=0;r<12;r++)n+=this.faker.number.hex(15),r%2===1&&r!==11&&(n+=t);return n}password(e={}){let t=/[aeiouAEIOU]$/,r=/[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/,n=(c,u,h,f)=>{if(f.length>=c)return f;u&&(h=r.test(f)?t:r);let g=this.faker.number.int(94)+33,b=String.fromCodePoint(g);return u&&(b=b.toLowerCase()),h.test(b)?n(c,u,h,f+b):n(c,u,h,f)},{length:a=15,memorable:o=!1,pattern:s=/\w/,prefix:l=""}=e;return n(a,o,s,l)}emoji(e={}){let{types:t=Object.keys(this.faker.definitions.internet.emoji)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.emoji[r])}};var ne=class extends p{zipCode(e={}){typeof e=="string"&&(e={format:e});let{state:t}=e;if(t!=null){let n=this.faker.definitions.location.postcode_by_state[t];if(n==null)throw new m(`No zip code definition found for state "${t}"`);return this.faker.helpers.fake(n)}let{format:r=this.faker.definitions.location.postcode}=e;return typeof r=="string"&&(r=[r]),r=this.faker.helpers.arrayElement(r),this.faker.helpers.replaceSymbols(r)}city(){return this.faker.helpers.fake(this.faker.definitions.location.city_pattern)}buildingNumber(){return this.faker.helpers.arrayElement(this.faker.definitions.location.building_number).replaceAll(/#+/g,e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1}))}street(){return this.faker.helpers.fake(this.faker.definitions.location.street_pattern)}streetAddress(e={}){typeof e=="boolean"&&(e={useFullAddress:e});let{useFullAddress:t}=e,n=this.faker.definitions.location.street_address[t?"full":"normal"];return this.faker.helpers.fake(n)}secondaryAddress(){return this.faker.helpers.fake(this.faker.definitions.location.secondary_address).replaceAll(/#+/g,e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1}))}county(){return this.faker.helpers.arrayElement(this.faker.definitions.location.county)}country(){return this.faker.helpers.arrayElement(this.faker.definitions.location.country)}countryCode(e={}){typeof e=="string"&&(e={variant:e});let{variant:t="alpha-2"}=e,r=(()=>{switch(t){case"numeric":return "numeric";case"alpha-3":return "alpha3";case"alpha-2":return "alpha2"}})();return this.faker.helpers.arrayElement(this.faker.definitions.location.country_code)[r]}state(e={}){let{abbreviated:t=!1}=e,r=t?this.faker.definitions.location.state_abbr:this.faker.definitions.location.state;return this.faker.helpers.arrayElement(r)}latitude(e={}){let{max:t=90,min:r=-90,precision:n=4}=e;return this.faker.number.float({min:r,max:t,fractionDigits:n})}longitude(e={}){let{max:t=180,min:r=-180,precision:n=4}=e;return this.faker.number.float({max:t,min:r,fractionDigits:n})}direction(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal_abbr,...this.faker.definitions.location.direction.ordinal_abbr]):this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal,...this.faker.definitions.location.direction.ordinal])}cardinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal)}ordinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal)}nearbyGPSCoordinate(e={}){let{origin:t,radius:r=10,isMetric:n=!1}=e;if(t==null)return [this.latitude(),this.longitude()];let a=this.faker.number.float({max:2*Math.PI,fractionDigits:5}),o=n?r:r*1.60934,l=this.faker.number.float({max:o,fractionDigits:3})*.995,c=4e4/360,u=l/c,h=[t[0]+Math.sin(a)*u,t[1]+Math.cos(a)*u];return h[0]=h[0]%180,(h[0]<-90||h[0]>90)&&(h[0]=Math.sign(h[0])*180-h[0],h[1]+=180),h[1]=(h[1]%360+540)%360-180,[h[0],h[1]]}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.location.time_zone)}};function Pe(i,e,t=r=>r){let r={};for(let n of i){let a=e(n);r[a]===void 0&&(r[a]=[]),r[a].push(t(n));}return r}var be={fail:()=>{throw new m("No words found that match the given length.")},closest:(i,e)=>{let t=Pe(i,s=>s.length),r=Object.keys(t).map(Number),n=Math.min(...r),a=Math.max(...r),o=Math.min(e.min-n,a-e.max);return i.filter(s=>s.length===e.min-o||s.length===e.max+o)},shortest:i=>{let e=Math.min(...i.map(t=>t.length));return i.filter(t=>t.length===e)},longest:i=>{let e=Math.max(...i.map(t=>t.length));return i.filter(t=>t.length===e)},"any-length":i=>[...i]};function w(i){let{wordList:e,length:t,strategy:r="any-length"}=i;if(t){let n=typeof t=="number"?o=>o.length===t:o=>o.length>=t.min&&o.length<=t.max,a=e.filter(n);return a.length>0?a:typeof t=="number"?be[r](e,{min:t,max:t}):be[r](e,t)}else if(r==="shortest"||r==="longest")return be[r](e);return [...e]}var ae=class extends p{word(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.lorem.word}))}words(e=3){return this.faker.helpers.multiple(()=>this.word(),{count:e}).join(" ")}sentence(e={min:3,max:10}){let t=this.words(e);return `${t.charAt(0).toUpperCase()+t.substring(1)}.`}slug(e=3){let t=this.words(e);return this.faker.helpers.slugify(t)}sentences(e={min:2,max:6},t=" "){return this.faker.helpers.multiple(()=>this.sentence(),{count:e}).join(t)}paragraph(e=3){return this.sentences(e)}paragraphs(e=3,t=` -`){return this.faker.helpers.multiple(()=>this.paragraph(),{count:e}).join(t)}text(){let e=["sentence","sentences","paragraph","paragraphs","lines"],t=this.faker.helpers.arrayElement(e);return this[t]()}lines(e={min:1,max:5}){return this.sentences(e,` -`)}};var ie=class extends p{album(){return this.faker.helpers.arrayElement(this.faker.definitions.music.album)}artist(){return this.faker.helpers.arrayElement(this.faker.definitions.music.artist)}genre(){return this.faker.helpers.arrayElement(this.faker.definitions.music.genre)}songName(){return this.faker.helpers.arrayElement(this.faker.definitions.music.song_name)}};var oe=class extends p{number(e={}){let{style:t="human"}=e,n=this.faker.definitions.phone_number.format[t];if(!n)throw new Error(`No definitions for ${t} in this locale`);let a=this.faker.helpers.arrayElement(n);return pe(this.faker,a)}imei(){return this.faker.helpers.replaceCreditCardSymbols("##-######-######-L","#")}};var se=class extends p{chemicalElement(){return this.faker.helpers.arrayElement(this.faker.definitions.science.chemical_element)}unit(){return this.faker.helpers.arrayElement(this.faker.definitions.science.unit)}};var Nt=["video","audio","image","text","application"],Dt=["application/pdf","audio/mpeg","audio/wav","image/png","image/jpeg","image/gif","video/mp4","video/mpeg","text/html"],Rt=["en","wl","ww"],ve={index:"o",slot:"s",mac:"x",pci:"p"},Lt=["SUN","MON","TUE","WED","THU","FRI","SAT"],ce=class extends p{fileName(e={}){let{extensionCount:t=1}=e,r=this.faker.word.words().toLowerCase().replaceAll(/\W/g,"_"),n=this.faker.helpers.multiple(()=>this.fileExt(),{count:t}).join(".");return n.length===0?r:`${r}.${n}`}commonFileName(e){return `${this.fileName({extensionCount:0})}.${e||this.commonFileExt()}`}mimeType(){let e=Object.keys(this.faker.definitions.system.mime_type);return this.faker.helpers.arrayElement(e)}commonFileType(){return this.faker.helpers.arrayElement(Nt)}commonFileExt(){return this.fileExt(this.faker.helpers.arrayElement(Dt))}fileType(){let e=this.faker.definitions.system.mime_type,t=new Set(Object.keys(e).map(r=>r.split("/")[0]));return this.faker.helpers.arrayElement([...t])}fileExt(e){let t=this.faker.definitions.system.mime_type;if(typeof e=="string")return this.faker.helpers.arrayElement(t[e].extensions);let r=new Set(Object.values(t).flatMap(({extensions:n})=>n));return this.faker.helpers.arrayElement([...r])}directoryPath(){let e=this.faker.definitions.system.directory_path;return this.faker.helpers.arrayElement(e)}filePath(){return `${this.directoryPath()}/${this.fileName()}`}semver(){return [this.faker.number.int(9),this.faker.number.int(9),this.faker.number.int(9)].join(".")}networkInterface(e={}){let{interfaceType:t=this.faker.helpers.arrayElement(Rt),interfaceSchema:r=this.faker.helpers.objectKey(ve)}=e,n,a="",o=()=>this.faker.string.numeric({allowLeadingZeros:!0});switch(r){case"index":{n=o();break}case"slot":{n=`${o()}${this.faker.helpers.maybe(()=>`f${o()}`)??""}${this.faker.helpers.maybe(()=>`d${o()}`)??""}`;break}case"mac":{n=this.faker.internet.mac("");break}case"pci":{a=this.faker.helpers.maybe(()=>`P${o()}`)??"",n=`${o()}s${o()}${this.faker.helpers.maybe(()=>`f${o()}`)??""}${this.faker.helpers.maybe(()=>`d${o()}`)??""}`;break}}return `${a}${t}${ve[r]}${n}`}cron(e={}){let{includeYear:t=!1,includeNonStandard:r=!1}=e,n=[this.faker.number.int(59),"*"],a=[this.faker.number.int(23),"*"],o=[this.faker.number.int({min:1,max:31}),"*","?"],s=[this.faker.number.int({min:1,max:12}),"*"],l=[this.faker.number.int(6),this.faker.helpers.arrayElement(Lt),"*","?"],c=[this.faker.number.int({min:1970,max:2099}),"*"],u=this.faker.helpers.arrayElement(n),h=this.faker.helpers.arrayElement(a),f=this.faker.helpers.arrayElement(o),g=this.faker.helpers.arrayElement(s),b=this.faker.helpers.arrayElement(l),k=this.faker.helpers.arrayElement(c),T=`${u} ${h} ${f} ${g} ${b}`;t&&(T+=` ${k}`);let y=["@annually","@daily","@hourly","@monthly","@reboot","@weekly","@yearly"];return !r||this.faker.datatype.boolean()?T:this.faker.helpers.arrayElement(y)}};var le=class extends p{vehicle(){return `${this.manufacturer()} ${this.model()}`}manufacturer(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.manufacturer)}model(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.model)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.type)}fuel(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.fuel)}vin(){let e=["o","i","q","O","I","Q"];return `${this.faker.string.alphanumeric({length:10,casing:"upper",exclude:e})}${this.faker.string.alpha({length:1,casing:"upper",exclude:e})}${this.faker.string.alphanumeric({length:1,casing:"upper",exclude:e})}${this.faker.string.numeric({length:5,allowLeadingZeros:!0})}`}color(){return this.faker.color.human()}vrm(){return `${this.faker.string.alpha({length:2,casing:"upper"})}${this.faker.string.numeric({length:2,allowLeadingZeros:!0})}${this.faker.string.alpha({length:3,casing:"upper"})}`}bicycle(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.bicycle_type)}};var me=class extends p{adjective(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.adjective}))}adverb(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.adverb}))}conjunction(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.conjunction}))}interjection(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.interjection}))}noun(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.noun}))}preposition(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.preposition}))}verb(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.verb}))}sample(e={}){let t=this.faker.helpers.shuffle([this.adjective,this.adverb,this.conjunction,this.interjection,this.noun,this.preposition,this.verb]);for(let r of t)try{return r(e)}catch{continue}throw new m("No matching word data available for the current locale")}words(e={}){typeof e=="number"&&(e={count:e});let{count:t={min:1,max:3}}=e;return this.faker.helpers.multiple(()=>this.sample(),{count:t}).join(" ")}};var Ie=class extends ${rawDefinitions;definitions;airline=new v(this);animal=new Y(this);color=new I(this);commerce=new W(this);company=new Z(this);database=new J(this);date=new K(this);finance=new X(this);food=new Q(this);git=new q(this);hacker=new ee(this);helpers=new U(this);image=new te(this);internet=new re(this);location=new ne(this);lorem=new ae(this);music=new ie(this);person=new _(this);phone=new oe(this);science=new se(this);system=new ce(this);vehicle=new le(this);word=new me(this);get address(){return B({deprecated:"faker.address",proposed:"faker.location",since:"8.0",until:"10.0"}),this.location}get name(){return B({deprecated:"faker.name",proposed:"faker.person",since:"8.0",until:"10.0"}),this.person}constructor(e){super({randomizer:e.randomizer});let{locale:t}=e;if(Array.isArray(t)){if(t.length===0)throw new m("The locale option must contain at least one locale definition.");t=Le(t);}this.rawDefinitions=t,this.definitions=Me(this.rawDefinitions);}getMetadata(){return this.rawDefinitions.metadata??{}}};var _e=["Academy Color Encoding System (ACES)","Adobe RGB","Adobe Wide Gamut RGB","British Standard Colour (BS)","CIE 1931 XYZ","CIELAB","CIELUV","CIEUVW","CMY","CMYK","DCI-P3","Display-P3","Federal Standard 595C","HKS","HSL","HSLA","HSLuv","HSV","HWB","LCh","LMS","Munsell Color System","Natural Color System (NSC)","Pantone Matching System (PMS)","ProPhoto RGB Color Space","RAL","RG","RGBA","RGK","Rec. 2020","Rec. 2100","Rec. 601","Rec. 709","Uniform Color Spaces (UCSs)","YDbDr","YIQ","YPbPr","sRGB","sYCC","scRGB","xvYCC"];var $t={space:_e},Ge=$t;var Fe=["ascii_bin","ascii_general_ci","cp1250_bin","cp1250_general_ci","utf8_bin","utf8_general_ci","utf8_unicode_ci"];var Oe=["ARCHIVE","BLACKHOLE","CSV","InnoDB","MEMORY","MyISAM"];var Ke=["bigint","binary","bit","blob","boolean","date","datetime","decimal","double","enum","float","geometry","int","mediumint","point","real","serial","set","smallint","text","time","timestamp","tinyint","varchar"];var Bt={collation:Fe,engine:Oe,type:Ke},Ue=Bt;var ue=["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New_York","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"];var Pt={time_zone:ue},je=Pt;var He=["ADP","AGP","AI","API","ASCII","CLI","COM","CSS","DNS","DRAM","EXE","FTP","GB","HDD","HEX","HTTP","IB","IP","JBOD","JSON","OCR","PCI","PNG","RAM","RSS","SAS","SCSI","SDD","SMS","SMTP","SQL","SSD","SSL","TCP","THX","TLS","UDP","USB","UTF8","VGA","XML","XSS"];var vt={abbreviation:He},Ve=vt;var ze={smiley:["\u{1F600}","\u{1F603}","\u{1F604}","\u{1F601}","\u{1F606}","\u{1F605}","\u{1F923}","\u{1F602}","\u{1F642}","\u{1F643}","\u{1F609}","\u{1F60A}","\u{1F607}","\u{1F970}","\u{1F60D}","\u{1F929}","\u{1F618}","\u{1F617}","\u263A\uFE0F","\u{1F61A}","\u{1F619}","\u{1F972}","\u{1F60B}","\u{1F61B}","\u{1F61C}","\u{1F92A}","\u{1F61D}","\u{1F911}","\u{1F917}","\u{1F92D}","\u{1F92B}","\u{1F914}","\u{1F910}","\u{1F928}","\u{1F610}","\u{1F611}","\u{1F636}","\u{1F636}\u200D\u{1F32B}\uFE0F","\u{1F60F}","\u{1F612}","\u{1F644}","\u{1F62C}","\u{1F62E}\u200D\u{1F4A8}","\u{1F925}","\u{1F60C}","\u{1F614}","\u{1F62A}","\u{1F924}","\u{1F634}","\u{1F637}","\u{1F912}","\u{1F915}","\u{1F922}","\u{1F92E}","\u{1F927}","\u{1F975}","\u{1F976}","\u{1F974}","\u{1F635}","\u{1F635}\u200D\u{1F4AB}","\u{1F92F}","\u{1F920}","\u{1F973}","\u{1F978}","\u{1F60E}","\u{1F913}","\u{1F9D0}","\u{1F615}","\u{1F61F}","\u{1F641}","\u2639\uFE0F","\u{1F62E}","\u{1F62F}","\u{1F632}","\u{1F633}","\u{1F97A}","\u{1F626}","\u{1F627}","\u{1F628}","\u{1F630}","\u{1F625}","\u{1F622}","\u{1F62D}","\u{1F631}","\u{1F616}","\u{1F623}","\u{1F61E}","\u{1F613}","\u{1F629}","\u{1F62B}","\u{1F971}","\u{1F624}","\u{1F621}","\u{1F620}","\u{1F92C}","\u{1F608}","\u{1F47F}","\u{1F480}","\u2620\uFE0F","\u{1F4A9}","\u{1F921}","\u{1F479}","\u{1F47A}","\u{1F47B}","\u{1F47D}","\u{1F47E}","\u{1F916}","\u{1F63A}","\u{1F638}","\u{1F639}","\u{1F63B}","\u{1F63C}","\u{1F63D}","\u{1F640}","\u{1F63F}","\u{1F63E}","\u{1F648}","\u{1F649}","\u{1F64A}","\u{1F48B}","\u{1F48C}","\u{1F498}","\u{1F49D}","\u{1F496}","\u{1F497}","\u{1F493}","\u{1F49E}","\u{1F495}","\u{1F49F}","\u2763\uFE0F","\u{1F494}","\u2764\uFE0F\u200D\u{1F525}","\u2764\uFE0F\u200D\u{1FA79}","\u2764\uFE0F","\u{1F9E1}","\u{1F49B}","\u{1F49A}","\u{1F499}","\u{1F49C}","\u{1F90E}","\u{1F5A4}","\u{1F90D}","\u{1F4AF}","\u{1F4A2}","\u{1F4A5}","\u{1F4AB}","\u{1F4A6}","\u{1F4A8}","\u{1F573}\uFE0F","\u{1F4A3}","\u{1F4AC}","\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F","\u{1F5E8}\uFE0F","\u{1F5EF}\uFE0F","\u{1F4AD}","\u{1F4A4}"],body:["\u{1F44B}","\u{1F44B}\u{1F3FB}","\u{1F44B}\u{1F3FC}","\u{1F44B}\u{1F3FD}","\u{1F44B}\u{1F3FE}","\u{1F44B}\u{1F3FF}","\u{1F91A}","\u{1F91A}\u{1F3FB}","\u{1F91A}\u{1F3FC}","\u{1F91A}\u{1F3FD}","\u{1F91A}\u{1F3FE}","\u{1F91A}\u{1F3FF}","\u{1F590}\uFE0F","\u{1F590}\u{1F3FB}","\u{1F590}\u{1F3FC}","\u{1F590}\u{1F3FD}","\u{1F590}\u{1F3FE}","\u{1F590}\u{1F3FF}","\u270B","\u270B\u{1F3FB}","\u270B\u{1F3FC}","\u270B\u{1F3FD}","\u270B\u{1F3FE}","\u270B\u{1F3FF}","\u{1F596}","\u{1F596}\u{1F3FB}","\u{1F596}\u{1F3FC}","\u{1F596}\u{1F3FD}","\u{1F596}\u{1F3FE}","\u{1F596}\u{1F3FF}","\u{1F44C}","\u{1F44C}\u{1F3FB}","\u{1F44C}\u{1F3FC}","\u{1F44C}\u{1F3FD}","\u{1F44C}\u{1F3FE}","\u{1F44C}\u{1F3FF}","\u{1F90C}","\u{1F90C}\u{1F3FB}","\u{1F90C}\u{1F3FC}","\u{1F90C}\u{1F3FD}","\u{1F90C}\u{1F3FE}","\u{1F90C}\u{1F3FF}","\u{1F90F}","\u{1F90F}\u{1F3FB}","\u{1F90F}\u{1F3FC}","\u{1F90F}\u{1F3FD}","\u{1F90F}\u{1F3FE}","\u{1F90F}\u{1F3FF}","\u270C\uFE0F","\u270C\u{1F3FB}","\u270C\u{1F3FC}","\u270C\u{1F3FD}","\u270C\u{1F3FE}","\u270C\u{1F3FF}","\u{1F91E}","\u{1F91E}\u{1F3FB}","\u{1F91E}\u{1F3FC}","\u{1F91E}\u{1F3FD}","\u{1F91E}\u{1F3FE}","\u{1F91E}\u{1F3FF}","\u{1F91F}","\u{1F91F}\u{1F3FB}","\u{1F91F}\u{1F3FC}","\u{1F91F}\u{1F3FD}","\u{1F91F}\u{1F3FE}","\u{1F91F}\u{1F3FF}","\u{1F918}","\u{1F918}\u{1F3FB}","\u{1F918}\u{1F3FC}","\u{1F918}\u{1F3FD}","\u{1F918}\u{1F3FE}","\u{1F918}\u{1F3FF}","\u{1F919}","\u{1F919}\u{1F3FB}","\u{1F919}\u{1F3FC}","\u{1F919}\u{1F3FD}","\u{1F919}\u{1F3FE}","\u{1F919}\u{1F3FF}","\u{1F448}","\u{1F448}\u{1F3FB}","\u{1F448}\u{1F3FC}","\u{1F448}\u{1F3FD}","\u{1F448}\u{1F3FE}","\u{1F448}\u{1F3FF}","\u{1F449}","\u{1F449}\u{1F3FB}","\u{1F449}\u{1F3FC}","\u{1F449}\u{1F3FD}","\u{1F449}\u{1F3FE}","\u{1F449}\u{1F3FF}","\u{1F446}","\u{1F446}\u{1F3FB}","\u{1F446}\u{1F3FC}","\u{1F446}\u{1F3FD}","\u{1F446}\u{1F3FE}","\u{1F446}\u{1F3FF}","\u{1F595}","\u{1F595}\u{1F3FB}","\u{1F595}\u{1F3FC}","\u{1F595}\u{1F3FD}","\u{1F595}\u{1F3FE}","\u{1F595}\u{1F3FF}","\u{1F447}","\u{1F447}\u{1F3FB}","\u{1F447}\u{1F3FC}","\u{1F447}\u{1F3FD}","\u{1F447}\u{1F3FE}","\u{1F447}\u{1F3FF}","\u261D\uFE0F","\u261D\u{1F3FB}","\u261D\u{1F3FC}","\u261D\u{1F3FD}","\u261D\u{1F3FE}","\u261D\u{1F3FF}","\u{1F44D}","\u{1F44D}\u{1F3FB}","\u{1F44D}\u{1F3FC}","\u{1F44D}\u{1F3FD}","\u{1F44D}\u{1F3FE}","\u{1F44D}\u{1F3FF}","\u{1F44E}","\u{1F44E}\u{1F3FB}","\u{1F44E}\u{1F3FC}","\u{1F44E}\u{1F3FD}","\u{1F44E}\u{1F3FE}","\u{1F44E}\u{1F3FF}","\u270A","\u270A\u{1F3FB}","\u270A\u{1F3FC}","\u270A\u{1F3FD}","\u270A\u{1F3FE}","\u270A\u{1F3FF}","\u{1F44A}","\u{1F44A}\u{1F3FB}","\u{1F44A}\u{1F3FC}","\u{1F44A}\u{1F3FD}","\u{1F44A}\u{1F3FE}","\u{1F44A}\u{1F3FF}","\u{1F91B}","\u{1F91B}\u{1F3FB}","\u{1F91B}\u{1F3FC}","\u{1F91B}\u{1F3FD}","\u{1F91B}\u{1F3FE}","\u{1F91B}\u{1F3FF}","\u{1F91C}","\u{1F91C}\u{1F3FB}","\u{1F91C}\u{1F3FC}","\u{1F91C}\u{1F3FD}","\u{1F91C}\u{1F3FE}","\u{1F91C}\u{1F3FF}","\u{1F44F}","\u{1F44F}\u{1F3FB}","\u{1F44F}\u{1F3FC}","\u{1F44F}\u{1F3FD}","\u{1F44F}\u{1F3FE}","\u{1F44F}\u{1F3FF}","\u{1F64C}","\u{1F64C}\u{1F3FB}","\u{1F64C}\u{1F3FC}","\u{1F64C}\u{1F3FD}","\u{1F64C}\u{1F3FE}","\u{1F64C}\u{1F3FF}","\u{1F450}","\u{1F450}\u{1F3FB}","\u{1F450}\u{1F3FC}","\u{1F450}\u{1F3FD}","\u{1F450}\u{1F3FE}","\u{1F450}\u{1F3FF}","\u{1F932}","\u{1F932}\u{1F3FB}","\u{1F932}\u{1F3FC}","\u{1F932}\u{1F3FD}","\u{1F932}\u{1F3FE}","\u{1F932}\u{1F3FF}","\u{1F91D}","\u{1F64F}","\u{1F64F}\u{1F3FB}","\u{1F64F}\u{1F3FC}","\u{1F64F}\u{1F3FD}","\u{1F64F}\u{1F3FE}","\u{1F64F}\u{1F3FF}","\u270D\uFE0F","\u270D\u{1F3FB}","\u270D\u{1F3FC}","\u270D\u{1F3FD}","\u270D\u{1F3FE}","\u270D\u{1F3FF}","\u{1F485}","\u{1F485}\u{1F3FB}","\u{1F485}\u{1F3FC}","\u{1F485}\u{1F3FD}","\u{1F485}\u{1F3FE}","\u{1F485}\u{1F3FF}","\u{1F933}","\u{1F933}\u{1F3FB}","\u{1F933}\u{1F3FC}","\u{1F933}\u{1F3FD}","\u{1F933}\u{1F3FE}","\u{1F933}\u{1F3FF}","\u{1F4AA}","\u{1F4AA}\u{1F3FB}","\u{1F4AA}\u{1F3FC}","\u{1F4AA}\u{1F3FD}","\u{1F4AA}\u{1F3FE}","\u{1F4AA}\u{1F3FF}","\u{1F9BE}","\u{1F9BF}","\u{1F9B5}","\u{1F9B5}\u{1F3FB}","\u{1F9B5}\u{1F3FC}","\u{1F9B5}\u{1F3FD}","\u{1F9B5}\u{1F3FE}","\u{1F9B5}\u{1F3FF}","\u{1F9B6}","\u{1F9B6}\u{1F3FB}","\u{1F9B6}\u{1F3FC}","\u{1F9B6}\u{1F3FD}","\u{1F9B6}\u{1F3FE}","\u{1F9B6}\u{1F3FF}","\u{1F442}","\u{1F442}\u{1F3FB}","\u{1F442}\u{1F3FC}","\u{1F442}\u{1F3FD}","\u{1F442}\u{1F3FE}","\u{1F442}\u{1F3FF}","\u{1F9BB}","\u{1F9BB}\u{1F3FB}","\u{1F9BB}\u{1F3FC}","\u{1F9BB}\u{1F3FD}","\u{1F9BB}\u{1F3FE}","\u{1F9BB}\u{1F3FF}","\u{1F443}","\u{1F443}\u{1F3FB}","\u{1F443}\u{1F3FC}","\u{1F443}\u{1F3FD}","\u{1F443}\u{1F3FE}","\u{1F443}\u{1F3FF}","\u{1F9E0}","\u{1FAC0}","\u{1FAC1}","\u{1F9B7}","\u{1F9B4}","\u{1F440}","\u{1F441}\uFE0F","\u{1F445}","\u{1F444}"],person:["\u{1F476}","\u{1F476}\u{1F3FB}","\u{1F476}\u{1F3FC}","\u{1F476}\u{1F3FD}","\u{1F476}\u{1F3FE}","\u{1F476}\u{1F3FF}","\u{1F9D2}","\u{1F9D2}\u{1F3FB}","\u{1F9D2}\u{1F3FC}","\u{1F9D2}\u{1F3FD}","\u{1F9D2}\u{1F3FE}","\u{1F9D2}\u{1F3FF}","\u{1F466}","\u{1F466}\u{1F3FB}","\u{1F466}\u{1F3FC}","\u{1F466}\u{1F3FD}","\u{1F466}\u{1F3FE}","\u{1F466}\u{1F3FF}","\u{1F467}","\u{1F467}\u{1F3FB}","\u{1F467}\u{1F3FC}","\u{1F467}\u{1F3FD}","\u{1F467}\u{1F3FE}","\u{1F467}\u{1F3FF}","\u{1F9D1}","\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FF}","\u{1F471}","\u{1F471}\u{1F3FB}","\u{1F471}\u{1F3FC}","\u{1F471}\u{1F3FD}","\u{1F471}\u{1F3FE}","\u{1F471}\u{1F3FF}","\u{1F468}","\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FF}","\u{1F9D4}","\u{1F9D4}\u{1F3FB}","\u{1F9D4}\u{1F3FC}","\u{1F9D4}\u{1F3FD}","\u{1F9D4}\u{1F3FE}","\u{1F9D4}\u{1F3FF}","\u{1F9D4}\u200D\u2642\uFE0F","\u{1F9D4}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9D4}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9D4}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9D4}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9D4}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D4}\u200D\u2640\uFE0F","\u{1F9D4}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9D4}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9D4}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9D4}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9D4}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F468}\u200D\u{1F9B0}","\u{1F468}\u{1F3FB}\u200D\u{1F9B0}","\u{1F468}\u{1F3FC}\u200D\u{1F9B0}","\u{1F468}\u{1F3FD}\u200D\u{1F9B0}","\u{1F468}\u{1F3FE}\u200D\u{1F9B0}","\u{1F468}\u{1F3FF}\u200D\u{1F9B0}","\u{1F468}\u200D\u{1F9B1}","\u{1F468}\u{1F3FB}\u200D\u{1F9B1}","\u{1F468}\u{1F3FC}\u200D\u{1F9B1}","\u{1F468}\u{1F3FD}\u200D\u{1F9B1}","\u{1F468}\u{1F3FE}\u200D\u{1F9B1}","\u{1F468}\u{1F3FF}\u200D\u{1F9B1}","\u{1F468}\u200D\u{1F9B3}","\u{1F468}\u{1F3FB}\u200D\u{1F9B3}","\u{1F468}\u{1F3FC}\u200D\u{1F9B3}","\u{1F468}\u{1F3FD}\u200D\u{1F9B3}","\u{1F468}\u{1F3FE}\u200D\u{1F9B3}","\u{1F468}\u{1F3FF}\u200D\u{1F9B3}","\u{1F468}\u200D\u{1F9B2}","\u{1F468}\u{1F3FB}\u200D\u{1F9B2}","\u{1F468}\u{1F3FC}\u200D\u{1F9B2}","\u{1F468}\u{1F3FD}\u200D\u{1F9B2}","\u{1F468}\u{1F3FE}\u200D\u{1F9B2}","\u{1F468}\u{1F3FF}\u200D\u{1F9B2}","\u{1F469}","\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FF}","\u{1F469}\u200D\u{1F9B0}","\u{1F469}\u{1F3FB}\u200D\u{1F9B0}","\u{1F469}\u{1F3FC}\u200D\u{1F9B0}","\u{1F469}\u{1F3FD}\u200D\u{1F9B0}","\u{1F469}\u{1F3FE}\u200D\u{1F9B0}","\u{1F469}\u{1F3FF}\u200D\u{1F9B0}","\u{1F9D1}\u200D\u{1F9B0}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9B0}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9B0}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9B0}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9B0}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9B0}","\u{1F469}\u200D\u{1F9B1}","\u{1F469}\u{1F3FB}\u200D\u{1F9B1}","\u{1F469}\u{1F3FC}\u200D\u{1F9B1}","\u{1F469}\u{1F3FD}\u200D\u{1F9B1}","\u{1F469}\u{1F3FE}\u200D\u{1F9B1}","\u{1F469}\u{1F3FF}\u200D\u{1F9B1}","\u{1F9D1}\u200D\u{1F9B1}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9B1}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9B1}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9B1}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9B1}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9B1}","\u{1F469}\u200D\u{1F9B3}","\u{1F469}\u{1F3FB}\u200D\u{1F9B3}","\u{1F469}\u{1F3FC}\u200D\u{1F9B3}","\u{1F469}\u{1F3FD}\u200D\u{1F9B3}","\u{1F469}\u{1F3FE}\u200D\u{1F9B3}","\u{1F469}\u{1F3FF}\u200D\u{1F9B3}","\u{1F9D1}\u200D\u{1F9B3}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9B3}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9B3}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9B3}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9B3}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9B3}","\u{1F469}\u200D\u{1F9B2}","\u{1F469}\u{1F3FB}\u200D\u{1F9B2}","\u{1F469}\u{1F3FC}\u200D\u{1F9B2}","\u{1F469}\u{1F3FD}\u200D\u{1F9B2}","\u{1F469}\u{1F3FE}\u200D\u{1F9B2}","\u{1F469}\u{1F3FF}\u200D\u{1F9B2}","\u{1F9D1}\u200D\u{1F9B2}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9B2}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9B2}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9B2}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9B2}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9B2}","\u{1F471}\u200D\u2640\uFE0F","\u{1F471}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F471}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F471}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F471}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F471}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F471}\u200D\u2642\uFE0F","\u{1F471}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F471}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F471}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F471}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F471}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D3}","\u{1F9D3}\u{1F3FB}","\u{1F9D3}\u{1F3FC}","\u{1F9D3}\u{1F3FD}","\u{1F9D3}\u{1F3FE}","\u{1F9D3}\u{1F3FF}","\u{1F474}","\u{1F474}\u{1F3FB}","\u{1F474}\u{1F3FC}","\u{1F474}\u{1F3FD}","\u{1F474}\u{1F3FE}","\u{1F474}\u{1F3FF}","\u{1F475}","\u{1F475}\u{1F3FB}","\u{1F475}\u{1F3FC}","\u{1F475}\u{1F3FD}","\u{1F475}\u{1F3FE}","\u{1F475}\u{1F3FF}","\u{1F64D}","\u{1F64D}\u{1F3FB}","\u{1F64D}\u{1F3FC}","\u{1F64D}\u{1F3FD}","\u{1F64D}\u{1F3FE}","\u{1F64D}\u{1F3FF}","\u{1F64D}\u200D\u2642\uFE0F","\u{1F64D}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F64D}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F64D}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F64D}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F64D}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F64D}\u200D\u2640\uFE0F","\u{1F64D}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F64D}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F64D}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F64D}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F64D}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F64E}","\u{1F64E}\u{1F3FB}","\u{1F64E}\u{1F3FC}","\u{1F64E}\u{1F3FD}","\u{1F64E}\u{1F3FE}","\u{1F64E}\u{1F3FF}","\u{1F64E}\u200D\u2642\uFE0F","\u{1F64E}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F64E}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F64E}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F64E}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F64E}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F64E}\u200D\u2640\uFE0F","\u{1F64E}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F64E}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F64E}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F64E}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F64E}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F645}","\u{1F645}\u{1F3FB}","\u{1F645}\u{1F3FC}","\u{1F645}\u{1F3FD}","\u{1F645}\u{1F3FE}","\u{1F645}\u{1F3FF}","\u{1F645}\u200D\u2642\uFE0F","\u{1F645}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F645}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F645}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F645}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F645}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F645}\u200D\u2640\uFE0F","\u{1F645}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F645}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F645}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F645}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F645}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F646}","\u{1F646}\u{1F3FB}","\u{1F646}\u{1F3FC}","\u{1F646}\u{1F3FD}","\u{1F646}\u{1F3FE}","\u{1F646}\u{1F3FF}","\u{1F646}\u200D\u2642\uFE0F","\u{1F646}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F646}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F646}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F646}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F646}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F646}\u200D\u2640\uFE0F","\u{1F646}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F646}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F646}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F646}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F646}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F481}","\u{1F481}\u{1F3FB}","\u{1F481}\u{1F3FC}","\u{1F481}\u{1F3FD}","\u{1F481}\u{1F3FE}","\u{1F481}\u{1F3FF}","\u{1F481}\u200D\u2642\uFE0F","\u{1F481}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F481}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F481}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F481}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F481}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F481}\u200D\u2640\uFE0F","\u{1F481}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F481}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F481}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F481}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F481}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F64B}","\u{1F64B}\u{1F3FB}","\u{1F64B}\u{1F3FC}","\u{1F64B}\u{1F3FD}","\u{1F64B}\u{1F3FE}","\u{1F64B}\u{1F3FF}","\u{1F64B}\u200D\u2642\uFE0F","\u{1F64B}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F64B}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F64B}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F64B}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F64B}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F64B}\u200D\u2640\uFE0F","\u{1F64B}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F64B}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F64B}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F64B}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F64B}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9CF}","\u{1F9CF}\u{1F3FB}","\u{1F9CF}\u{1F3FC}","\u{1F9CF}\u{1F3FD}","\u{1F9CF}\u{1F3FE}","\u{1F9CF}\u{1F3FF}","\u{1F9CF}\u200D\u2642\uFE0F","\u{1F9CF}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9CF}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9CF}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9CF}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9CF}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9CF}\u200D\u2640\uFE0F","\u{1F9CF}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9CF}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9CF}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9CF}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9CF}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F647}","\u{1F647}\u{1F3FB}","\u{1F647}\u{1F3FC}","\u{1F647}\u{1F3FD}","\u{1F647}\u{1F3FE}","\u{1F647}\u{1F3FF}","\u{1F647}\u200D\u2642\uFE0F","\u{1F647}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F647}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F647}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F647}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F647}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F647}\u200D\u2640\uFE0F","\u{1F647}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F647}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F647}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F647}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F647}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F926}","\u{1F926}\u{1F3FB}","\u{1F926}\u{1F3FC}","\u{1F926}\u{1F3FD}","\u{1F926}\u{1F3FE}","\u{1F926}\u{1F3FF}","\u{1F926}\u200D\u2642\uFE0F","\u{1F926}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F926}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F926}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F926}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F926}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F926}\u200D\u2640\uFE0F","\u{1F926}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F926}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F926}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F926}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F926}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F937}","\u{1F937}\u{1F3FB}","\u{1F937}\u{1F3FC}","\u{1F937}\u{1F3FD}","\u{1F937}\u{1F3FE}","\u{1F937}\u{1F3FF}","\u{1F937}\u200D\u2642\uFE0F","\u{1F937}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F937}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F937}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F937}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F937}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F937}\u200D\u2640\uFE0F","\u{1F937}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F937}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F937}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F937}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F937}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9D1}\u200D\u2695\uFE0F","\u{1F9D1}\u{1F3FB}\u200D\u2695\uFE0F","\u{1F9D1}\u{1F3FC}\u200D\u2695\uFE0F","\u{1F9D1}\u{1F3FD}\u200D\u2695\uFE0F","\u{1F9D1}\u{1F3FE}\u200D\u2695\uFE0F","\u{1F9D1}\u{1F3FF}\u200D\u2695\uFE0F","\u{1F468}\u200D\u2695\uFE0F","\u{1F468}\u{1F3FB}\u200D\u2695\uFE0F","\u{1F468}\u{1F3FC}\u200D\u2695\uFE0F","\u{1F468}\u{1F3FD}\u200D\u2695\uFE0F","\u{1F468}\u{1F3FE}\u200D\u2695\uFE0F","\u{1F468}\u{1F3FF}\u200D\u2695\uFE0F","\u{1F469}\u200D\u2695\uFE0F","\u{1F469}\u{1F3FB}\u200D\u2695\uFE0F","\u{1F469}\u{1F3FC}\u200D\u2695\uFE0F","\u{1F469}\u{1F3FD}\u200D\u2695\uFE0F","\u{1F469}\u{1F3FE}\u200D\u2695\uFE0F","\u{1F469}\u{1F3FF}\u200D\u2695\uFE0F","\u{1F9D1}\u200D\u{1F393}","\u{1F9D1}\u{1F3FB}\u200D\u{1F393}","\u{1F9D1}\u{1F3FC}\u200D\u{1F393}","\u{1F9D1}\u{1F3FD}\u200D\u{1F393}","\u{1F9D1}\u{1F3FE}\u200D\u{1F393}","\u{1F9D1}\u{1F3FF}\u200D\u{1F393}","\u{1F468}\u200D\u{1F393}","\u{1F468}\u{1F3FB}\u200D\u{1F393}","\u{1F468}\u{1F3FC}\u200D\u{1F393}","\u{1F468}\u{1F3FD}\u200D\u{1F393}","\u{1F468}\u{1F3FE}\u200D\u{1F393}","\u{1F468}\u{1F3FF}\u200D\u{1F393}","\u{1F469}\u200D\u{1F393}","\u{1F469}\u{1F3FB}\u200D\u{1F393}","\u{1F469}\u{1F3FC}\u200D\u{1F393}","\u{1F469}\u{1F3FD}\u200D\u{1F393}","\u{1F469}\u{1F3FE}\u200D\u{1F393}","\u{1F469}\u{1F3FF}\u200D\u{1F393}","\u{1F9D1}\u200D\u{1F3EB}","\u{1F9D1}\u{1F3FB}\u200D\u{1F3EB}","\u{1F9D1}\u{1F3FC}\u200D\u{1F3EB}","\u{1F9D1}\u{1F3FD}\u200D\u{1F3EB}","\u{1F9D1}\u{1F3FE}\u200D\u{1F3EB}","\u{1F9D1}\u{1F3FF}\u200D\u{1F3EB}","\u{1F468}\u200D\u{1F3EB}","\u{1F468}\u{1F3FB}\u200D\u{1F3EB}","\u{1F468}\u{1F3FC}\u200D\u{1F3EB}","\u{1F468}\u{1F3FD}\u200D\u{1F3EB}","\u{1F468}\u{1F3FE}\u200D\u{1F3EB}","\u{1F468}\u{1F3FF}\u200D\u{1F3EB}","\u{1F469}\u200D\u{1F3EB}","\u{1F469}\u{1F3FB}\u200D\u{1F3EB}","\u{1F469}\u{1F3FC}\u200D\u{1F3EB}","\u{1F469}\u{1F3FD}\u200D\u{1F3EB}","\u{1F469}\u{1F3FE}\u200D\u{1F3EB}","\u{1F469}\u{1F3FF}\u200D\u{1F3EB}","\u{1F9D1}\u200D\u2696\uFE0F","\u{1F9D1}\u{1F3FB}\u200D\u2696\uFE0F","\u{1F9D1}\u{1F3FC}\u200D\u2696\uFE0F","\u{1F9D1}\u{1F3FD}\u200D\u2696\uFE0F","\u{1F9D1}\u{1F3FE}\u200D\u2696\uFE0F","\u{1F9D1}\u{1F3FF}\u200D\u2696\uFE0F","\u{1F468}\u200D\u2696\uFE0F","\u{1F468}\u{1F3FB}\u200D\u2696\uFE0F","\u{1F468}\u{1F3FC}\u200D\u2696\uFE0F","\u{1F468}\u{1F3FD}\u200D\u2696\uFE0F","\u{1F468}\u{1F3FE}\u200D\u2696\uFE0F","\u{1F468}\u{1F3FF}\u200D\u2696\uFE0F","\u{1F469}\u200D\u2696\uFE0F","\u{1F469}\u{1F3FB}\u200D\u2696\uFE0F","\u{1F469}\u{1F3FC}\u200D\u2696\uFE0F","\u{1F469}\u{1F3FD}\u200D\u2696\uFE0F","\u{1F469}\u{1F3FE}\u200D\u2696\uFE0F","\u{1F469}\u{1F3FF}\u200D\u2696\uFE0F","\u{1F9D1}\u200D\u{1F33E}","\u{1F9D1}\u{1F3FB}\u200D\u{1F33E}","\u{1F9D1}\u{1F3FC}\u200D\u{1F33E}","\u{1F9D1}\u{1F3FD}\u200D\u{1F33E}","\u{1F9D1}\u{1F3FE}\u200D\u{1F33E}","\u{1F9D1}\u{1F3FF}\u200D\u{1F33E}","\u{1F468}\u200D\u{1F33E}","\u{1F468}\u{1F3FB}\u200D\u{1F33E}","\u{1F468}\u{1F3FC}\u200D\u{1F33E}","\u{1F468}\u{1F3FD}\u200D\u{1F33E}","\u{1F468}\u{1F3FE}\u200D\u{1F33E}","\u{1F468}\u{1F3FF}\u200D\u{1F33E}","\u{1F469}\u200D\u{1F33E}","\u{1F469}\u{1F3FB}\u200D\u{1F33E}","\u{1F469}\u{1F3FC}\u200D\u{1F33E}","\u{1F469}\u{1F3FD}\u200D\u{1F33E}","\u{1F469}\u{1F3FE}\u200D\u{1F33E}","\u{1F469}\u{1F3FF}\u200D\u{1F33E}","\u{1F9D1}\u200D\u{1F373}","\u{1F9D1}\u{1F3FB}\u200D\u{1F373}","\u{1F9D1}\u{1F3FC}\u200D\u{1F373}","\u{1F9D1}\u{1F3FD}\u200D\u{1F373}","\u{1F9D1}\u{1F3FE}\u200D\u{1F373}","\u{1F9D1}\u{1F3FF}\u200D\u{1F373}","\u{1F468}\u200D\u{1F373}","\u{1F468}\u{1F3FB}\u200D\u{1F373}","\u{1F468}\u{1F3FC}\u200D\u{1F373}","\u{1F468}\u{1F3FD}\u200D\u{1F373}","\u{1F468}\u{1F3FE}\u200D\u{1F373}","\u{1F468}\u{1F3FF}\u200D\u{1F373}","\u{1F469}\u200D\u{1F373}","\u{1F469}\u{1F3FB}\u200D\u{1F373}","\u{1F469}\u{1F3FC}\u200D\u{1F373}","\u{1F469}\u{1F3FD}\u200D\u{1F373}","\u{1F469}\u{1F3FE}\u200D\u{1F373}","\u{1F469}\u{1F3FF}\u200D\u{1F373}","\u{1F9D1}\u200D\u{1F527}","\u{1F9D1}\u{1F3FB}\u200D\u{1F527}","\u{1F9D1}\u{1F3FC}\u200D\u{1F527}","\u{1F9D1}\u{1F3FD}\u200D\u{1F527}","\u{1F9D1}\u{1F3FE}\u200D\u{1F527}","\u{1F9D1}\u{1F3FF}\u200D\u{1F527}","\u{1F468}\u200D\u{1F527}","\u{1F468}\u{1F3FB}\u200D\u{1F527}","\u{1F468}\u{1F3FC}\u200D\u{1F527}","\u{1F468}\u{1F3FD}\u200D\u{1F527}","\u{1F468}\u{1F3FE}\u200D\u{1F527}","\u{1F468}\u{1F3FF}\u200D\u{1F527}","\u{1F469}\u200D\u{1F527}","\u{1F469}\u{1F3FB}\u200D\u{1F527}","\u{1F469}\u{1F3FC}\u200D\u{1F527}","\u{1F469}\u{1F3FD}\u200D\u{1F527}","\u{1F469}\u{1F3FE}\u200D\u{1F527}","\u{1F469}\u{1F3FF}\u200D\u{1F527}","\u{1F9D1}\u200D\u{1F3ED}","\u{1F9D1}\u{1F3FB}\u200D\u{1F3ED}","\u{1F9D1}\u{1F3FC}\u200D\u{1F3ED}","\u{1F9D1}\u{1F3FD}\u200D\u{1F3ED}","\u{1F9D1}\u{1F3FE}\u200D\u{1F3ED}","\u{1F9D1}\u{1F3FF}\u200D\u{1F3ED}","\u{1F468}\u200D\u{1F3ED}","\u{1F468}\u{1F3FB}\u200D\u{1F3ED}","\u{1F468}\u{1F3FC}\u200D\u{1F3ED}","\u{1F468}\u{1F3FD}\u200D\u{1F3ED}","\u{1F468}\u{1F3FE}\u200D\u{1F3ED}","\u{1F468}\u{1F3FF}\u200D\u{1F3ED}","\u{1F469}\u200D\u{1F3ED}","\u{1F469}\u{1F3FB}\u200D\u{1F3ED}","\u{1F469}\u{1F3FC}\u200D\u{1F3ED}","\u{1F469}\u{1F3FD}\u200D\u{1F3ED}","\u{1F469}\u{1F3FE}\u200D\u{1F3ED}","\u{1F469}\u{1F3FF}\u200D\u{1F3ED}","\u{1F9D1}\u200D\u{1F4BC}","\u{1F9D1}\u{1F3FB}\u200D\u{1F4BC}","\u{1F9D1}\u{1F3FC}\u200D\u{1F4BC}","\u{1F9D1}\u{1F3FD}\u200D\u{1F4BC}","\u{1F9D1}\u{1F3FE}\u200D\u{1F4BC}","\u{1F9D1}\u{1F3FF}\u200D\u{1F4BC}","\u{1F468}\u200D\u{1F4BC}","\u{1F468}\u{1F3FB}\u200D\u{1F4BC}","\u{1F468}\u{1F3FC}\u200D\u{1F4BC}","\u{1F468}\u{1F3FD}\u200D\u{1F4BC}","\u{1F468}\u{1F3FE}\u200D\u{1F4BC}","\u{1F468}\u{1F3FF}\u200D\u{1F4BC}","\u{1F469}\u200D\u{1F4BC}","\u{1F469}\u{1F3FB}\u200D\u{1F4BC}","\u{1F469}\u{1F3FC}\u200D\u{1F4BC}","\u{1F469}\u{1F3FD}\u200D\u{1F4BC}","\u{1F469}\u{1F3FE}\u200D\u{1F4BC}","\u{1F469}\u{1F3FF}\u200D\u{1F4BC}","\u{1F9D1}\u200D\u{1F52C}","\u{1F9D1}\u{1F3FB}\u200D\u{1F52C}","\u{1F9D1}\u{1F3FC}\u200D\u{1F52C}","\u{1F9D1}\u{1F3FD}\u200D\u{1F52C}","\u{1F9D1}\u{1F3FE}\u200D\u{1F52C}","\u{1F9D1}\u{1F3FF}\u200D\u{1F52C}","\u{1F468}\u200D\u{1F52C}","\u{1F468}\u{1F3FB}\u200D\u{1F52C}","\u{1F468}\u{1F3FC}\u200D\u{1F52C}","\u{1F468}\u{1F3FD}\u200D\u{1F52C}","\u{1F468}\u{1F3FE}\u200D\u{1F52C}","\u{1F468}\u{1F3FF}\u200D\u{1F52C}","\u{1F469}\u200D\u{1F52C}","\u{1F469}\u{1F3FB}\u200D\u{1F52C}","\u{1F469}\u{1F3FC}\u200D\u{1F52C}","\u{1F469}\u{1F3FD}\u200D\u{1F52C}","\u{1F469}\u{1F3FE}\u200D\u{1F52C}","\u{1F469}\u{1F3FF}\u200D\u{1F52C}","\u{1F9D1}\u200D\u{1F4BB}","\u{1F9D1}\u{1F3FB}\u200D\u{1F4BB}","\u{1F9D1}\u{1F3FC}\u200D\u{1F4BB}","\u{1F9D1}\u{1F3FD}\u200D\u{1F4BB}","\u{1F9D1}\u{1F3FE}\u200D\u{1F4BB}","\u{1F9D1}\u{1F3FF}\u200D\u{1F4BB}","\u{1F468}\u200D\u{1F4BB}","\u{1F468}\u{1F3FB}\u200D\u{1F4BB}","\u{1F468}\u{1F3FC}\u200D\u{1F4BB}","\u{1F468}\u{1F3FD}\u200D\u{1F4BB}","\u{1F468}\u{1F3FE}\u200D\u{1F4BB}","\u{1F468}\u{1F3FF}\u200D\u{1F4BB}","\u{1F469}\u200D\u{1F4BB}","\u{1F469}\u{1F3FB}\u200D\u{1F4BB}","\u{1F469}\u{1F3FC}\u200D\u{1F4BB}","\u{1F469}\u{1F3FD}\u200D\u{1F4BB}","\u{1F469}\u{1F3FE}\u200D\u{1F4BB}","\u{1F469}\u{1F3FF}\u200D\u{1F4BB}","\u{1F9D1}\u200D\u{1F3A4}","\u{1F9D1}\u{1F3FB}\u200D\u{1F3A4}","\u{1F9D1}\u{1F3FC}\u200D\u{1F3A4}","\u{1F9D1}\u{1F3FD}\u200D\u{1F3A4}","\u{1F9D1}\u{1F3FE}\u200D\u{1F3A4}","\u{1F9D1}\u{1F3FF}\u200D\u{1F3A4}","\u{1F468}\u200D\u{1F3A4}","\u{1F468}\u{1F3FB}\u200D\u{1F3A4}","\u{1F468}\u{1F3FC}\u200D\u{1F3A4}","\u{1F468}\u{1F3FD}\u200D\u{1F3A4}","\u{1F468}\u{1F3FE}\u200D\u{1F3A4}","\u{1F468}\u{1F3FF}\u200D\u{1F3A4}","\u{1F469}\u200D\u{1F3A4}","\u{1F469}\u{1F3FB}\u200D\u{1F3A4}","\u{1F469}\u{1F3FC}\u200D\u{1F3A4}","\u{1F469}\u{1F3FD}\u200D\u{1F3A4}","\u{1F469}\u{1F3FE}\u200D\u{1F3A4}","\u{1F469}\u{1F3FF}\u200D\u{1F3A4}","\u{1F9D1}\u200D\u{1F3A8}","\u{1F9D1}\u{1F3FB}\u200D\u{1F3A8}","\u{1F9D1}\u{1F3FC}\u200D\u{1F3A8}","\u{1F9D1}\u{1F3FD}\u200D\u{1F3A8}","\u{1F9D1}\u{1F3FE}\u200D\u{1F3A8}","\u{1F9D1}\u{1F3FF}\u200D\u{1F3A8}","\u{1F468}\u200D\u{1F3A8}","\u{1F468}\u{1F3FB}\u200D\u{1F3A8}","\u{1F468}\u{1F3FC}\u200D\u{1F3A8}","\u{1F468}\u{1F3FD}\u200D\u{1F3A8}","\u{1F468}\u{1F3FE}\u200D\u{1F3A8}","\u{1F468}\u{1F3FF}\u200D\u{1F3A8}","\u{1F469}\u200D\u{1F3A8}","\u{1F469}\u{1F3FB}\u200D\u{1F3A8}","\u{1F469}\u{1F3FC}\u200D\u{1F3A8}","\u{1F469}\u{1F3FD}\u200D\u{1F3A8}","\u{1F469}\u{1F3FE}\u200D\u{1F3A8}","\u{1F469}\u{1F3FF}\u200D\u{1F3A8}","\u{1F9D1}\u200D\u2708\uFE0F","\u{1F9D1}\u{1F3FB}\u200D\u2708\uFE0F","\u{1F9D1}\u{1F3FC}\u200D\u2708\uFE0F","\u{1F9D1}\u{1F3FD}\u200D\u2708\uFE0F","\u{1F9D1}\u{1F3FE}\u200D\u2708\uFE0F","\u{1F9D1}\u{1F3FF}\u200D\u2708\uFE0F","\u{1F468}\u200D\u2708\uFE0F","\u{1F468}\u{1F3FB}\u200D\u2708\uFE0F","\u{1F468}\u{1F3FC}\u200D\u2708\uFE0F","\u{1F468}\u{1F3FD}\u200D\u2708\uFE0F","\u{1F468}\u{1F3FE}\u200D\u2708\uFE0F","\u{1F468}\u{1F3FF}\u200D\u2708\uFE0F","\u{1F469}\u200D\u2708\uFE0F","\u{1F469}\u{1F3FB}\u200D\u2708\uFE0F","\u{1F469}\u{1F3FC}\u200D\u2708\uFE0F","\u{1F469}\u{1F3FD}\u200D\u2708\uFE0F","\u{1F469}\u{1F3FE}\u200D\u2708\uFE0F","\u{1F469}\u{1F3FF}\u200D\u2708\uFE0F","\u{1F9D1}\u200D\u{1F680}","\u{1F9D1}\u{1F3FB}\u200D\u{1F680}","\u{1F9D1}\u{1F3FC}\u200D\u{1F680}","\u{1F9D1}\u{1F3FD}\u200D\u{1F680}","\u{1F9D1}\u{1F3FE}\u200D\u{1F680}","\u{1F9D1}\u{1F3FF}\u200D\u{1F680}","\u{1F468}\u200D\u{1F680}","\u{1F468}\u{1F3FB}\u200D\u{1F680}","\u{1F468}\u{1F3FC}\u200D\u{1F680}","\u{1F468}\u{1F3FD}\u200D\u{1F680}","\u{1F468}\u{1F3FE}\u200D\u{1F680}","\u{1F468}\u{1F3FF}\u200D\u{1F680}","\u{1F469}\u200D\u{1F680}","\u{1F469}\u{1F3FB}\u200D\u{1F680}","\u{1F469}\u{1F3FC}\u200D\u{1F680}","\u{1F469}\u{1F3FD}\u200D\u{1F680}","\u{1F469}\u{1F3FE}\u200D\u{1F680}","\u{1F469}\u{1F3FF}\u200D\u{1F680}","\u{1F9D1}\u200D\u{1F692}","\u{1F9D1}\u{1F3FB}\u200D\u{1F692}","\u{1F9D1}\u{1F3FC}\u200D\u{1F692}","\u{1F9D1}\u{1F3FD}\u200D\u{1F692}","\u{1F9D1}\u{1F3FE}\u200D\u{1F692}","\u{1F9D1}\u{1F3FF}\u200D\u{1F692}","\u{1F468}\u200D\u{1F692}","\u{1F468}\u{1F3FB}\u200D\u{1F692}","\u{1F468}\u{1F3FC}\u200D\u{1F692}","\u{1F468}\u{1F3FD}\u200D\u{1F692}","\u{1F468}\u{1F3FE}\u200D\u{1F692}","\u{1F468}\u{1F3FF}\u200D\u{1F692}","\u{1F469}\u200D\u{1F692}","\u{1F469}\u{1F3FB}\u200D\u{1F692}","\u{1F469}\u{1F3FC}\u200D\u{1F692}","\u{1F469}\u{1F3FD}\u200D\u{1F692}","\u{1F469}\u{1F3FE}\u200D\u{1F692}","\u{1F469}\u{1F3FF}\u200D\u{1F692}","\u{1F46E}","\u{1F46E}\u{1F3FB}","\u{1F46E}\u{1F3FC}","\u{1F46E}\u{1F3FD}","\u{1F46E}\u{1F3FE}","\u{1F46E}\u{1F3FF}","\u{1F46E}\u200D\u2642\uFE0F","\u{1F46E}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F46E}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F46E}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F46E}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F46E}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F46E}\u200D\u2640\uFE0F","\u{1F46E}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F46E}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F46E}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F46E}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F46E}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F575}\uFE0F","\u{1F575}\u{1F3FB}","\u{1F575}\u{1F3FC}","\u{1F575}\u{1F3FD}","\u{1F575}\u{1F3FE}","\u{1F575}\u{1F3FF}","\u{1F575}\uFE0F\u200D\u2642\uFE0F","\u{1F575}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F575}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F575}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F575}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F575}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F575}\uFE0F\u200D\u2640\uFE0F","\u{1F575}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F575}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F575}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F575}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F575}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F482}","\u{1F482}\u{1F3FB}","\u{1F482}\u{1F3FC}","\u{1F482}\u{1F3FD}","\u{1F482}\u{1F3FE}","\u{1F482}\u{1F3FF}","\u{1F482}\u200D\u2642\uFE0F","\u{1F482}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F482}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F482}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F482}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F482}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F482}\u200D\u2640\uFE0F","\u{1F482}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F482}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F482}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F482}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F482}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F977}","\u{1F977}\u{1F3FB}","\u{1F977}\u{1F3FC}","\u{1F977}\u{1F3FD}","\u{1F977}\u{1F3FE}","\u{1F977}\u{1F3FF}","\u{1F477}","\u{1F477}\u{1F3FB}","\u{1F477}\u{1F3FC}","\u{1F477}\u{1F3FD}","\u{1F477}\u{1F3FE}","\u{1F477}\u{1F3FF}","\u{1F477}\u200D\u2642\uFE0F","\u{1F477}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F477}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F477}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F477}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F477}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F477}\u200D\u2640\uFE0F","\u{1F477}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F477}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F477}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F477}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F477}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F934}","\u{1F934}\u{1F3FB}","\u{1F934}\u{1F3FC}","\u{1F934}\u{1F3FD}","\u{1F934}\u{1F3FE}","\u{1F934}\u{1F3FF}","\u{1F478}","\u{1F478}\u{1F3FB}","\u{1F478}\u{1F3FC}","\u{1F478}\u{1F3FD}","\u{1F478}\u{1F3FE}","\u{1F478}\u{1F3FF}","\u{1F473}","\u{1F473}\u{1F3FB}","\u{1F473}\u{1F3FC}","\u{1F473}\u{1F3FD}","\u{1F473}\u{1F3FE}","\u{1F473}\u{1F3FF}","\u{1F473}\u200D\u2642\uFE0F","\u{1F473}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F473}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F473}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F473}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F473}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F473}\u200D\u2640\uFE0F","\u{1F473}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F473}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F473}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F473}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F473}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F472}","\u{1F472}\u{1F3FB}","\u{1F472}\u{1F3FC}","\u{1F472}\u{1F3FD}","\u{1F472}\u{1F3FE}","\u{1F472}\u{1F3FF}","\u{1F9D5}","\u{1F9D5}\u{1F3FB}","\u{1F9D5}\u{1F3FC}","\u{1F9D5}\u{1F3FD}","\u{1F9D5}\u{1F3FE}","\u{1F9D5}\u{1F3FF}","\u{1F935}","\u{1F935}\u{1F3FB}","\u{1F935}\u{1F3FC}","\u{1F935}\u{1F3FD}","\u{1F935}\u{1F3FE}","\u{1F935}\u{1F3FF}","\u{1F935}\u200D\u2642\uFE0F","\u{1F935}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F935}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F935}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F935}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F935}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F935}\u200D\u2640\uFE0F","\u{1F935}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F935}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F935}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F935}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F935}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F470}","\u{1F470}\u{1F3FB}","\u{1F470}\u{1F3FC}","\u{1F470}\u{1F3FD}","\u{1F470}\u{1F3FE}","\u{1F470}\u{1F3FF}","\u{1F470}\u200D\u2642\uFE0F","\u{1F470}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F470}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F470}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F470}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F470}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F470}\u200D\u2640\uFE0F","\u{1F470}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F470}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F470}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F470}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F470}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F930}","\u{1F930}\u{1F3FB}","\u{1F930}\u{1F3FC}","\u{1F930}\u{1F3FD}","\u{1F930}\u{1F3FE}","\u{1F930}\u{1F3FF}","\u{1F931}","\u{1F931}\u{1F3FB}","\u{1F931}\u{1F3FC}","\u{1F931}\u{1F3FD}","\u{1F931}\u{1F3FE}","\u{1F931}\u{1F3FF}","\u{1F469}\u200D\u{1F37C}","\u{1F469}\u{1F3FB}\u200D\u{1F37C}","\u{1F469}\u{1F3FC}\u200D\u{1F37C}","\u{1F469}\u{1F3FD}\u200D\u{1F37C}","\u{1F469}\u{1F3FE}\u200D\u{1F37C}","\u{1F469}\u{1F3FF}\u200D\u{1F37C}","\u{1F468}\u200D\u{1F37C}","\u{1F468}\u{1F3FB}\u200D\u{1F37C}","\u{1F468}\u{1F3FC}\u200D\u{1F37C}","\u{1F468}\u{1F3FD}\u200D\u{1F37C}","\u{1F468}\u{1F3FE}\u200D\u{1F37C}","\u{1F468}\u{1F3FF}\u200D\u{1F37C}","\u{1F9D1}\u200D\u{1F37C}","\u{1F9D1}\u{1F3FB}\u200D\u{1F37C}","\u{1F9D1}\u{1F3FC}\u200D\u{1F37C}","\u{1F9D1}\u{1F3FD}\u200D\u{1F37C}","\u{1F9D1}\u{1F3FE}\u200D\u{1F37C}","\u{1F9D1}\u{1F3FF}\u200D\u{1F37C}","\u{1F47C}","\u{1F47C}\u{1F3FB}","\u{1F47C}\u{1F3FC}","\u{1F47C}\u{1F3FD}","\u{1F47C}\u{1F3FE}","\u{1F47C}\u{1F3FF}","\u{1F385}","\u{1F385}\u{1F3FB}","\u{1F385}\u{1F3FC}","\u{1F385}\u{1F3FD}","\u{1F385}\u{1F3FE}","\u{1F385}\u{1F3FF}","\u{1F936}","\u{1F936}\u{1F3FB}","\u{1F936}\u{1F3FC}","\u{1F936}\u{1F3FD}","\u{1F936}\u{1F3FE}","\u{1F936}\u{1F3FF}","\u{1F9D1}\u200D\u{1F384}","\u{1F9D1}\u{1F3FB}\u200D\u{1F384}","\u{1F9D1}\u{1F3FC}\u200D\u{1F384}","\u{1F9D1}\u{1F3FD}\u200D\u{1F384}","\u{1F9D1}\u{1F3FE}\u200D\u{1F384}","\u{1F9D1}\u{1F3FF}\u200D\u{1F384}","\u{1F9B8}","\u{1F9B8}\u{1F3FB}","\u{1F9B8}\u{1F3FC}","\u{1F9B8}\u{1F3FD}","\u{1F9B8}\u{1F3FE}","\u{1F9B8}\u{1F3FF}","\u{1F9B8}\u200D\u2642\uFE0F","\u{1F9B8}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9B8}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9B8}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9B8}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9B8}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9B8}\u200D\u2640\uFE0F","\u{1F9B8}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9B8}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9B8}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9B8}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9B8}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9B9}","\u{1F9B9}\u{1F3FB}","\u{1F9B9}\u{1F3FC}","\u{1F9B9}\u{1F3FD}","\u{1F9B9}\u{1F3FE}","\u{1F9B9}\u{1F3FF}","\u{1F9B9}\u200D\u2642\uFE0F","\u{1F9B9}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9B9}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9B9}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9B9}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9B9}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9B9}\u200D\u2640\uFE0F","\u{1F9B9}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9B9}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9B9}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9B9}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9B9}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9D9}","\u{1F9D9}\u{1F3FB}","\u{1F9D9}\u{1F3FC}","\u{1F9D9}\u{1F3FD}","\u{1F9D9}\u{1F3FE}","\u{1F9D9}\u{1F3FF}","\u{1F9D9}\u200D\u2642\uFE0F","\u{1F9D9}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9D9}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9D9}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9D9}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9D9}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D9}\u200D\u2640\uFE0F","\u{1F9D9}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9D9}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9D9}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9D9}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9D9}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9DA}","\u{1F9DA}\u{1F3FB}","\u{1F9DA}\u{1F3FC}","\u{1F9DA}\u{1F3FD}","\u{1F9DA}\u{1F3FE}","\u{1F9DA}\u{1F3FF}","\u{1F9DA}\u200D\u2642\uFE0F","\u{1F9DA}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9DA}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9DA}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9DA}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9DA}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9DA}\u200D\u2640\uFE0F","\u{1F9DA}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9DA}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9DA}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9DA}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9DA}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9DB}","\u{1F9DB}\u{1F3FB}","\u{1F9DB}\u{1F3FC}","\u{1F9DB}\u{1F3FD}","\u{1F9DB}\u{1F3FE}","\u{1F9DB}\u{1F3FF}","\u{1F9DB}\u200D\u2642\uFE0F","\u{1F9DB}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9DB}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9DB}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9DB}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9DB}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9DB}\u200D\u2640\uFE0F","\u{1F9DB}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9DB}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9DB}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9DB}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9DB}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9DC}","\u{1F9DC}\u{1F3FB}","\u{1F9DC}\u{1F3FC}","\u{1F9DC}\u{1F3FD}","\u{1F9DC}\u{1F3FE}","\u{1F9DC}\u{1F3FF}","\u{1F9DC}\u200D\u2642\uFE0F","\u{1F9DC}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9DC}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9DC}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9DC}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9DC}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9DC}\u200D\u2640\uFE0F","\u{1F9DC}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9DC}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9DC}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9DC}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9DC}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9DD}","\u{1F9DD}\u{1F3FB}","\u{1F9DD}\u{1F3FC}","\u{1F9DD}\u{1F3FD}","\u{1F9DD}\u{1F3FE}","\u{1F9DD}\u{1F3FF}","\u{1F9DD}\u200D\u2642\uFE0F","\u{1F9DD}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9DD}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9DD}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9DD}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9DD}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9DD}\u200D\u2640\uFE0F","\u{1F9DD}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9DD}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9DD}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9DD}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9DD}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9DE}","\u{1F9DE}\u200D\u2642\uFE0F","\u{1F9DE}\u200D\u2640\uFE0F","\u{1F9DF}","\u{1F9DF}\u200D\u2642\uFE0F","\u{1F9DF}\u200D\u2640\uFE0F","\u{1F486}","\u{1F486}\u{1F3FB}","\u{1F486}\u{1F3FC}","\u{1F486}\u{1F3FD}","\u{1F486}\u{1F3FE}","\u{1F486}\u{1F3FF}","\u{1F486}\u200D\u2642\uFE0F","\u{1F486}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F486}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F486}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F486}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F486}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F486}\u200D\u2640\uFE0F","\u{1F486}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F486}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F486}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F486}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F486}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F487}","\u{1F487}\u{1F3FB}","\u{1F487}\u{1F3FC}","\u{1F487}\u{1F3FD}","\u{1F487}\u{1F3FE}","\u{1F487}\u{1F3FF}","\u{1F487}\u200D\u2642\uFE0F","\u{1F487}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F487}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F487}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F487}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F487}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F487}\u200D\u2640\uFE0F","\u{1F487}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F487}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F487}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F487}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F487}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F6B6}","\u{1F6B6}\u{1F3FB}","\u{1F6B6}\u{1F3FC}","\u{1F6B6}\u{1F3FD}","\u{1F6B6}\u{1F3FE}","\u{1F6B6}\u{1F3FF}","\u{1F6B6}\u200D\u2642\uFE0F","\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F6B6}\u200D\u2640\uFE0F","\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9CD}","\u{1F9CD}\u{1F3FB}","\u{1F9CD}\u{1F3FC}","\u{1F9CD}\u{1F3FD}","\u{1F9CD}\u{1F3FE}","\u{1F9CD}\u{1F3FF}","\u{1F9CD}\u200D\u2642\uFE0F","\u{1F9CD}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9CD}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9CD}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9CD}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9CD}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9CD}\u200D\u2640\uFE0F","\u{1F9CD}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9CD}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9CD}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9CD}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9CD}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9CE}","\u{1F9CE}\u{1F3FB}","\u{1F9CE}\u{1F3FC}","\u{1F9CE}\u{1F3FD}","\u{1F9CE}\u{1F3FE}","\u{1F9CE}\u{1F3FF}","\u{1F9CE}\u200D\u2642\uFE0F","\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9CE}\u200D\u2640\uFE0F","\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9D1}\u200D\u{1F9AF}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}","\u{1F468}\u200D\u{1F9AF}","\u{1F468}\u{1F3FB}\u200D\u{1F9AF}","\u{1F468}\u{1F3FC}\u200D\u{1F9AF}","\u{1F468}\u{1F3FD}\u200D\u{1F9AF}","\u{1F468}\u{1F3FE}\u200D\u{1F9AF}","\u{1F468}\u{1F3FF}\u200D\u{1F9AF}","\u{1F469}\u200D\u{1F9AF}","\u{1F469}\u{1F3FB}\u200D\u{1F9AF}","\u{1F469}\u{1F3FC}\u200D\u{1F9AF}","\u{1F469}\u{1F3FD}\u200D\u{1F9AF}","\u{1F469}\u{1F3FE}\u200D\u{1F9AF}","\u{1F469}\u{1F3FF}\u200D\u{1F9AF}","\u{1F9D1}\u200D\u{1F9BC}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}","\u{1F468}\u200D\u{1F9BC}","\u{1F468}\u{1F3FB}\u200D\u{1F9BC}","\u{1F468}\u{1F3FC}\u200D\u{1F9BC}","\u{1F468}\u{1F3FD}\u200D\u{1F9BC}","\u{1F468}\u{1F3FE}\u200D\u{1F9BC}","\u{1F468}\u{1F3FF}\u200D\u{1F9BC}","\u{1F469}\u200D\u{1F9BC}","\u{1F469}\u{1F3FB}\u200D\u{1F9BC}","\u{1F469}\u{1F3FC}\u200D\u{1F9BC}","\u{1F469}\u{1F3FD}\u200D\u{1F9BC}","\u{1F469}\u{1F3FE}\u200D\u{1F9BC}","\u{1F469}\u{1F3FF}\u200D\u{1F9BC}","\u{1F9D1}\u200D\u{1F9BD}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}","\u{1F468}\u200D\u{1F9BD}","\u{1F468}\u{1F3FB}\u200D\u{1F9BD}","\u{1F468}\u{1F3FC}\u200D\u{1F9BD}","\u{1F468}\u{1F3FD}\u200D\u{1F9BD}","\u{1F468}\u{1F3FE}\u200D\u{1F9BD}","\u{1F468}\u{1F3FF}\u200D\u{1F9BD}","\u{1F469}\u200D\u{1F9BD}","\u{1F469}\u{1F3FB}\u200D\u{1F9BD}","\u{1F469}\u{1F3FC}\u200D\u{1F9BD}","\u{1F469}\u{1F3FD}\u200D\u{1F9BD}","\u{1F469}\u{1F3FE}\u200D\u{1F9BD}","\u{1F469}\u{1F3FF}\u200D\u{1F9BD}","\u{1F3C3}","\u{1F3C3}\u{1F3FB}","\u{1F3C3}\u{1F3FC}","\u{1F3C3}\u{1F3FD}","\u{1F3C3}\u{1F3FE}","\u{1F3C3}\u{1F3FF}","\u{1F3C3}\u200D\u2642\uFE0F","\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F3C3}\u200D\u2640\uFE0F","\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F483}","\u{1F483}\u{1F3FB}","\u{1F483}\u{1F3FC}","\u{1F483}\u{1F3FD}","\u{1F483}\u{1F3FE}","\u{1F483}\u{1F3FF}","\u{1F57A}","\u{1F57A}\u{1F3FB}","\u{1F57A}\u{1F3FC}","\u{1F57A}\u{1F3FD}","\u{1F57A}\u{1F3FE}","\u{1F57A}\u{1F3FF}","\u{1F574}\uFE0F","\u{1F574}\u{1F3FB}","\u{1F574}\u{1F3FC}","\u{1F574}\u{1F3FD}","\u{1F574}\u{1F3FE}","\u{1F574}\u{1F3FF}","\u{1F46F}","\u{1F46F}\u200D\u2642\uFE0F","\u{1F46F}\u200D\u2640\uFE0F","\u{1F9D6}","\u{1F9D6}\u{1F3FB}","\u{1F9D6}\u{1F3FC}","\u{1F9D6}\u{1F3FD}","\u{1F9D6}\u{1F3FE}","\u{1F9D6}\u{1F3FF}","\u{1F9D6}\u200D\u2642\uFE0F","\u{1F9D6}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9D6}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9D6}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9D6}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9D6}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D6}\u200D\u2640\uFE0F","\u{1F9D6}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9D6}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9D6}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9D6}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9D6}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9D7}","\u{1F9D7}\u{1F3FB}","\u{1F9D7}\u{1F3FC}","\u{1F9D7}\u{1F3FD}","\u{1F9D7}\u{1F3FE}","\u{1F9D7}\u{1F3FF}","\u{1F9D7}\u200D\u2642\uFE0F","\u{1F9D7}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9D7}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9D7}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9D7}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9D7}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D7}\u200D\u2640\uFE0F","\u{1F9D7}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9D7}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9D7}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9D7}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9D7}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F93A}","\u{1F3C7}","\u{1F3C7}\u{1F3FB}","\u{1F3C7}\u{1F3FC}","\u{1F3C7}\u{1F3FD}","\u{1F3C7}\u{1F3FE}","\u{1F3C7}\u{1F3FF}","\u26F7\uFE0F","\u{1F3C2}","\u{1F3C2}\u{1F3FB}","\u{1F3C2}\u{1F3FC}","\u{1F3C2}\u{1F3FD}","\u{1F3C2}\u{1F3FE}","\u{1F3C2}\u{1F3FF}","\u{1F3CC}\uFE0F","\u{1F3CC}\u{1F3FB}","\u{1F3CC}\u{1F3FC}","\u{1F3CC}\u{1F3FD}","\u{1F3CC}\u{1F3FE}","\u{1F3CC}\u{1F3FF}","\u{1F3CC}\uFE0F\u200D\u2642\uFE0F","\u{1F3CC}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F3CC}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F3CC}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F3CC}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F3CC}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F3CC}\uFE0F\u200D\u2640\uFE0F","\u{1F3CC}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F3CC}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F3CC}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F3CC}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F3CC}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F3C4}","\u{1F3C4}\u{1F3FB}","\u{1F3C4}\u{1F3FC}","\u{1F3C4}\u{1F3FD}","\u{1F3C4}\u{1F3FE}","\u{1F3C4}\u{1F3FF}","\u{1F3C4}\u200D\u2642\uFE0F","\u{1F3C4}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F3C4}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F3C4}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F3C4}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F3C4}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F3C4}\u200D\u2640\uFE0F","\u{1F3C4}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F3C4}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F3C4}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F3C4}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F3C4}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F6A3}","\u{1F6A3}\u{1F3FB}","\u{1F6A3}\u{1F3FC}","\u{1F6A3}\u{1F3FD}","\u{1F6A3}\u{1F3FE}","\u{1F6A3}\u{1F3FF}","\u{1F6A3}\u200D\u2642\uFE0F","\u{1F6A3}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F6A3}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F6A3}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F6A3}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F6A3}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F6A3}\u200D\u2640\uFE0F","\u{1F6A3}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F6A3}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F6A3}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F6A3}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F6A3}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F3CA}","\u{1F3CA}\u{1F3FB}","\u{1F3CA}\u{1F3FC}","\u{1F3CA}\u{1F3FD}","\u{1F3CA}\u{1F3FE}","\u{1F3CA}\u{1F3FF}","\u{1F3CA}\u200D\u2642\uFE0F","\u{1F3CA}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F3CA}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F3CA}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F3CA}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F3CA}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F3CA}\u200D\u2640\uFE0F","\u{1F3CA}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F3CA}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F3CA}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F3CA}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F3CA}\u{1F3FF}\u200D\u2640\uFE0F","\u26F9\uFE0F","\u26F9\u{1F3FB}","\u26F9\u{1F3FC}","\u26F9\u{1F3FD}","\u26F9\u{1F3FE}","\u26F9\u{1F3FF}","\u26F9\uFE0F\u200D\u2642\uFE0F","\u26F9\u{1F3FB}\u200D\u2642\uFE0F","\u26F9\u{1F3FC}\u200D\u2642\uFE0F","\u26F9\u{1F3FD}\u200D\u2642\uFE0F","\u26F9\u{1F3FE}\u200D\u2642\uFE0F","\u26F9\u{1F3FF}\u200D\u2642\uFE0F","\u26F9\uFE0F\u200D\u2640\uFE0F","\u26F9\u{1F3FB}\u200D\u2640\uFE0F","\u26F9\u{1F3FC}\u200D\u2640\uFE0F","\u26F9\u{1F3FD}\u200D\u2640\uFE0F","\u26F9\u{1F3FE}\u200D\u2640\uFE0F","\u26F9\u{1F3FF}\u200D\u2640\uFE0F","\u{1F3CB}\uFE0F","\u{1F3CB}\u{1F3FB}","\u{1F3CB}\u{1F3FC}","\u{1F3CB}\u{1F3FD}","\u{1F3CB}\u{1F3FE}","\u{1F3CB}\u{1F3FF}","\u{1F3CB}\uFE0F\u200D\u2642\uFE0F","\u{1F3CB}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F3CB}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F3CB}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F3CB}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F3CB}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F3CB}\uFE0F\u200D\u2640\uFE0F","\u{1F3CB}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F3CB}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F3CB}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F3CB}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F3CB}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F6B4}","\u{1F6B4}\u{1F3FB}","\u{1F6B4}\u{1F3FC}","\u{1F6B4}\u{1F3FD}","\u{1F6B4}\u{1F3FE}","\u{1F6B4}\u{1F3FF}","\u{1F6B4}\u200D\u2642\uFE0F","\u{1F6B4}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F6B4}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F6B4}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F6B4}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F6B4}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F6B4}\u200D\u2640\uFE0F","\u{1F6B4}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F6B4}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F6B4}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F6B4}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F6B4}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F6B5}","\u{1F6B5}\u{1F3FB}","\u{1F6B5}\u{1F3FC}","\u{1F6B5}\u{1F3FD}","\u{1F6B5}\u{1F3FE}","\u{1F6B5}\u{1F3FF}","\u{1F6B5}\u200D\u2642\uFE0F","\u{1F6B5}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F6B5}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F6B5}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F6B5}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F6B5}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F6B5}\u200D\u2640\uFE0F","\u{1F6B5}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F6B5}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F6B5}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F6B5}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F6B5}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F938}","\u{1F938}\u{1F3FB}","\u{1F938}\u{1F3FC}","\u{1F938}\u{1F3FD}","\u{1F938}\u{1F3FE}","\u{1F938}\u{1F3FF}","\u{1F938}\u200D\u2642\uFE0F","\u{1F938}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F938}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F938}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F938}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F938}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F938}\u200D\u2640\uFE0F","\u{1F938}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F938}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F938}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F938}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F938}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F93C}","\u{1F93C}\u200D\u2642\uFE0F","\u{1F93C}\u200D\u2640\uFE0F","\u{1F93D}","\u{1F93D}\u{1F3FB}","\u{1F93D}\u{1F3FC}","\u{1F93D}\u{1F3FD}","\u{1F93D}\u{1F3FE}","\u{1F93D}\u{1F3FF}","\u{1F93D}\u200D\u2642\uFE0F","\u{1F93D}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F93D}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F93D}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F93D}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F93D}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F93D}\u200D\u2640\uFE0F","\u{1F93D}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F93D}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F93D}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F93D}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F93D}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F93E}","\u{1F93E}\u{1F3FB}","\u{1F93E}\u{1F3FC}","\u{1F93E}\u{1F3FD}","\u{1F93E}\u{1F3FE}","\u{1F93E}\u{1F3FF}","\u{1F93E}\u200D\u2642\uFE0F","\u{1F93E}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F93E}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F93E}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F93E}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F93E}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F93E}\u200D\u2640\uFE0F","\u{1F93E}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F93E}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F93E}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F93E}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F93E}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F939}","\u{1F939}\u{1F3FB}","\u{1F939}\u{1F3FC}","\u{1F939}\u{1F3FD}","\u{1F939}\u{1F3FE}","\u{1F939}\u{1F3FF}","\u{1F939}\u200D\u2642\uFE0F","\u{1F939}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F939}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F939}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F939}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F939}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F939}\u200D\u2640\uFE0F","\u{1F939}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F939}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F939}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F939}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F939}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9D8}","\u{1F9D8}\u{1F3FB}","\u{1F9D8}\u{1F3FC}","\u{1F9D8}\u{1F3FD}","\u{1F9D8}\u{1F3FE}","\u{1F9D8}\u{1F3FF}","\u{1F9D8}\u200D\u2642\uFE0F","\u{1F9D8}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9D8}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9D8}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9D8}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9D8}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D8}\u200D\u2640\uFE0F","\u{1F9D8}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9D8}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9D8}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9D8}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9D8}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F6C0}","\u{1F6C0}\u{1F3FB}","\u{1F6C0}\u{1F3FC}","\u{1F6C0}\u{1F3FD}","\u{1F6C0}\u{1F3FE}","\u{1F6C0}\u{1F3FF}","\u{1F6CC}","\u{1F6CC}\u{1F3FB}","\u{1F6CC}\u{1F3FC}","\u{1F6CC}\u{1F3FD}","\u{1F6CC}\u{1F3FE}","\u{1F6CC}\u{1F3FF}","\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}","\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}","\u{1F46D}","\u{1F46D}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}","\u{1F46D}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}","\u{1F46D}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}","\u{1F46D}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}","\u{1F46D}\u{1F3FF}","\u{1F46B}","\u{1F46B}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F46B}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F46B}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F46B}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F46B}\u{1F3FF}","\u{1F46C}","\u{1F46C}\u{1F3FB}","\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F46C}\u{1F3FC}","\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F46C}\u{1F3FD}","\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F46C}\u{1F3FE}","\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F46C}\u{1F3FF}","\u{1F48F}","\u{1F48F}\u{1F3FB}","\u{1F48F}\u{1F3FC}","\u{1F48F}\u{1F3FD}","\u{1F48F}\u{1F3FE}","\u{1F48F}\u{1F3FF}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}","\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}","\u{1F491}","\u{1F491}\u{1F3FB}","\u{1F491}\u{1F3FC}","\u{1F491}\u{1F3FD}","\u{1F491}\u{1F3FE}","\u{1F491}\u{1F3FF}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}","\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}","\u{1F46A}","\u{1F468}\u200D\u{1F469}\u200D\u{1F466}","\u{1F468}\u200D\u{1F469}\u200D\u{1F467}","\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","\u{1F468}\u200D\u{1F468}\u200D\u{1F466}","\u{1F468}\u200D\u{1F468}\u200D\u{1F467}","\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","\u{1F469}\u200D\u{1F469}\u200D\u{1F466}","\u{1F469}\u200D\u{1F469}\u200D\u{1F467}","\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","\u{1F468}\u200D\u{1F466}","\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","\u{1F468}\u200D\u{1F467}","\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","\u{1F469}\u200D\u{1F466}","\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","\u{1F469}\u200D\u{1F467}","\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","\u{1F5E3}\uFE0F","\u{1F464}","\u{1F465}","\u{1FAC2}","\u{1F463}"],nature:["\u{1F435}","\u{1F412}","\u{1F98D}","\u{1F9A7}","\u{1F436}","\u{1F415}","\u{1F9AE}","\u{1F415}\u200D\u{1F9BA}","\u{1F429}","\u{1F43A}","\u{1F98A}","\u{1F99D}","\u{1F431}","\u{1F408}","\u{1F408}\u200D\u2B1B","\u{1F981}","\u{1F42F}","\u{1F405}","\u{1F406}","\u{1F434}","\u{1F40E}","\u{1F984}","\u{1F993}","\u{1F98C}","\u{1F9AC}","\u{1F42E}","\u{1F402}","\u{1F403}","\u{1F404}","\u{1F437}","\u{1F416}","\u{1F417}","\u{1F43D}","\u{1F40F}","\u{1F411}","\u{1F410}","\u{1F42A}","\u{1F42B}","\u{1F999}","\u{1F992}","\u{1F418}","\u{1F9A3}","\u{1F98F}","\u{1F99B}","\u{1F42D}","\u{1F401}","\u{1F400}","\u{1F439}","\u{1F430}","\u{1F407}","\u{1F43F}\uFE0F","\u{1F9AB}","\u{1F994}","\u{1F987}","\u{1F43B}","\u{1F43B}\u200D\u2744\uFE0F","\u{1F428}","\u{1F43C}","\u{1F9A5}","\u{1F9A6}","\u{1F9A8}","\u{1F998}","\u{1F9A1}","\u{1F43E}","\u{1F983}","\u{1F414}","\u{1F413}","\u{1F423}","\u{1F424}","\u{1F425}","\u{1F426}","\u{1F427}","\u{1F54A}\uFE0F","\u{1F985}","\u{1F986}","\u{1F9A2}","\u{1F989}","\u{1F9A4}","\u{1FAB6}","\u{1F9A9}","\u{1F99A}","\u{1F99C}","\u{1F438}","\u{1F40A}","\u{1F422}","\u{1F98E}","\u{1F40D}","\u{1F432}","\u{1F409}","\u{1F995}","\u{1F996}","\u{1F433}","\u{1F40B}","\u{1F42C}","\u{1F9AD}","\u{1F41F}","\u{1F420}","\u{1F421}","\u{1F988}","\u{1F419}","\u{1F41A}","\u{1F40C}","\u{1F98B}","\u{1F41B}","\u{1F41C}","\u{1F41D}","\u{1FAB2}","\u{1F41E}","\u{1F997}","\u{1FAB3}","\u{1F577}\uFE0F","\u{1F578}\uFE0F","\u{1F982}","\u{1F99F}","\u{1FAB0}","\u{1FAB1}","\u{1F9A0}","\u{1F490}","\u{1F338}","\u{1F4AE}","\u{1F3F5}\uFE0F","\u{1F339}","\u{1F940}","\u{1F33A}","\u{1F33B}","\u{1F33C}","\u{1F337}","\u{1F331}","\u{1FAB4}","\u{1F332}","\u{1F333}","\u{1F334}","\u{1F335}","\u{1F33E}","\u{1F33F}","\u2618\uFE0F","\u{1F340}","\u{1F341}","\u{1F342}","\u{1F343}"],food:["\u{1F347}","\u{1F348}","\u{1F349}","\u{1F34A}","\u{1F34B}","\u{1F34C}","\u{1F34D}","\u{1F96D}","\u{1F34E}","\u{1F34F}","\u{1F350}","\u{1F351}","\u{1F352}","\u{1F353}","\u{1FAD0}","\u{1F95D}","\u{1F345}","\u{1FAD2}","\u{1F965}","\u{1F951}","\u{1F346}","\u{1F954}","\u{1F955}","\u{1F33D}","\u{1F336}\uFE0F","\u{1FAD1}","\u{1F952}","\u{1F96C}","\u{1F966}","\u{1F9C4}","\u{1F9C5}","\u{1F344}","\u{1F95C}","\u{1F330}","\u{1F35E}","\u{1F950}","\u{1F956}","\u{1FAD3}","\u{1F968}","\u{1F96F}","\u{1F95E}","\u{1F9C7}","\u{1F9C0}","\u{1F356}","\u{1F357}","\u{1F969}","\u{1F953}","\u{1F354}","\u{1F35F}","\u{1F355}","\u{1F32D}","\u{1F96A}","\u{1F32E}","\u{1F32F}","\u{1FAD4}","\u{1F959}","\u{1F9C6}","\u{1F95A}","\u{1F373}","\u{1F958}","\u{1F372}","\u{1FAD5}","\u{1F963}","\u{1F957}","\u{1F37F}","\u{1F9C8}","\u{1F9C2}","\u{1F96B}","\u{1F371}","\u{1F358}","\u{1F359}","\u{1F35A}","\u{1F35B}","\u{1F35C}","\u{1F35D}","\u{1F360}","\u{1F362}","\u{1F363}","\u{1F364}","\u{1F365}","\u{1F96E}","\u{1F361}","\u{1F95F}","\u{1F960}","\u{1F961}","\u{1F980}","\u{1F99E}","\u{1F990}","\u{1F991}","\u{1F9AA}","\u{1F366}","\u{1F367}","\u{1F368}","\u{1F369}","\u{1F36A}","\u{1F382}","\u{1F370}","\u{1F9C1}","\u{1F967}","\u{1F36B}","\u{1F36C}","\u{1F36D}","\u{1F36E}","\u{1F36F}","\u{1F37C}","\u{1F95B}","\u2615","\u{1FAD6}","\u{1F375}","\u{1F376}","\u{1F37E}","\u{1F377}","\u{1F378}","\u{1F379}","\u{1F37A}","\u{1F37B}","\u{1F942}","\u{1F943}","\u{1F964}","\u{1F9CB}","\u{1F9C3}","\u{1F9C9}","\u{1F9CA}","\u{1F962}","\u{1F37D}\uFE0F","\u{1F374}","\u{1F944}","\u{1F52A}","\u{1F3FA}"],travel:["\u{1F30D}","\u{1F30E}","\u{1F30F}","\u{1F310}","\u{1F5FA}\uFE0F","\u{1F5FE}","\u{1F9ED}","\u{1F3D4}\uFE0F","\u26F0\uFE0F","\u{1F30B}","\u{1F5FB}","\u{1F3D5}\uFE0F","\u{1F3D6}\uFE0F","\u{1F3DC}\uFE0F","\u{1F3DD}\uFE0F","\u{1F3DE}\uFE0F","\u{1F3DF}\uFE0F","\u{1F3DB}\uFE0F","\u{1F3D7}\uFE0F","\u{1F9F1}","\u{1FAA8}","\u{1FAB5}","\u{1F6D6}","\u{1F3D8}\uFE0F","\u{1F3DA}\uFE0F","\u{1F3E0}","\u{1F3E1}","\u{1F3E2}","\u{1F3E3}","\u{1F3E4}","\u{1F3E5}","\u{1F3E6}","\u{1F3E8}","\u{1F3E9}","\u{1F3EA}","\u{1F3EB}","\u{1F3EC}","\u{1F3ED}","\u{1F3EF}","\u{1F3F0}","\u{1F492}","\u{1F5FC}","\u{1F5FD}","\u26EA","\u{1F54C}","\u{1F6D5}","\u{1F54D}","\u26E9\uFE0F","\u{1F54B}","\u26F2","\u26FA","\u{1F301}","\u{1F303}","\u{1F3D9}\uFE0F","\u{1F304}","\u{1F305}","\u{1F306}","\u{1F307}","\u{1F309}","\u2668\uFE0F","\u{1F3A0}","\u{1F3A1}","\u{1F3A2}","\u{1F488}","\u{1F3AA}","\u{1F682}","\u{1F683}","\u{1F684}","\u{1F685}","\u{1F686}","\u{1F687}","\u{1F688}","\u{1F689}","\u{1F68A}","\u{1F69D}","\u{1F69E}","\u{1F68B}","\u{1F68C}","\u{1F68D}","\u{1F68E}","\u{1F690}","\u{1F691}","\u{1F692}","\u{1F693}","\u{1F694}","\u{1F695}","\u{1F696}","\u{1F697}","\u{1F698}","\u{1F699}","\u{1F6FB}","\u{1F69A}","\u{1F69B}","\u{1F69C}","\u{1F3CE}\uFE0F","\u{1F3CD}\uFE0F","\u{1F6F5}","\u{1F9BD}","\u{1F9BC}","\u{1F6FA}","\u{1F6B2}","\u{1F6F4}","\u{1F6F9}","\u{1F6FC}","\u{1F68F}","\u{1F6E3}\uFE0F","\u{1F6E4}\uFE0F","\u{1F6E2}\uFE0F","\u26FD","\u{1F6A8}","\u{1F6A5}","\u{1F6A6}","\u{1F6D1}","\u{1F6A7}","\u2693","\u26F5","\u{1F6F6}","\u{1F6A4}","\u{1F6F3}\uFE0F","\u26F4\uFE0F","\u{1F6E5}\uFE0F","\u{1F6A2}","\u2708\uFE0F","\u{1F6E9}\uFE0F","\u{1F6EB}","\u{1F6EC}","\u{1FA82}","\u{1F4BA}","\u{1F681}","\u{1F69F}","\u{1F6A0}","\u{1F6A1}","\u{1F6F0}\uFE0F","\u{1F680}","\u{1F6F8}","\u{1F6CE}\uFE0F","\u{1F9F3}","\u231B","\u23F3","\u231A","\u23F0","\u23F1\uFE0F","\u23F2\uFE0F","\u{1F570}\uFE0F","\u{1F55B}","\u{1F567}","\u{1F550}","\u{1F55C}","\u{1F551}","\u{1F55D}","\u{1F552}","\u{1F55E}","\u{1F553}","\u{1F55F}","\u{1F554}","\u{1F560}","\u{1F555}","\u{1F561}","\u{1F556}","\u{1F562}","\u{1F557}","\u{1F563}","\u{1F558}","\u{1F564}","\u{1F559}","\u{1F565}","\u{1F55A}","\u{1F566}","\u{1F311}","\u{1F312}","\u{1F313}","\u{1F314}","\u{1F315}","\u{1F316}","\u{1F317}","\u{1F318}","\u{1F319}","\u{1F31A}","\u{1F31B}","\u{1F31C}","\u{1F321}\uFE0F","\u2600\uFE0F","\u{1F31D}","\u{1F31E}","\u{1FA90}","\u2B50","\u{1F31F}","\u{1F320}","\u{1F30C}","\u2601\uFE0F","\u26C5","\u26C8\uFE0F","\u{1F324}\uFE0F","\u{1F325}\uFE0F","\u{1F326}\uFE0F","\u{1F327}\uFE0F","\u{1F328}\uFE0F","\u{1F329}\uFE0F","\u{1F32A}\uFE0F","\u{1F32B}\uFE0F","\u{1F32C}\uFE0F","\u{1F300}","\u{1F308}","\u{1F302}","\u2602\uFE0F","\u2614","\u26F1\uFE0F","\u26A1","\u2744\uFE0F","\u2603\uFE0F","\u26C4","\u2604\uFE0F","\u{1F525}","\u{1F4A7}","\u{1F30A}"],activity:["\u{1F383}","\u{1F384}","\u{1F386}","\u{1F387}","\u{1F9E8}","\u2728","\u{1F388}","\u{1F389}","\u{1F38A}","\u{1F38B}","\u{1F38D}","\u{1F38E}","\u{1F38F}","\u{1F390}","\u{1F391}","\u{1F9E7}","\u{1F380}","\u{1F381}","\u{1F397}\uFE0F","\u{1F39F}\uFE0F","\u{1F3AB}","\u{1F396}\uFE0F","\u{1F3C6}","\u{1F3C5}","\u{1F947}","\u{1F948}","\u{1F949}","\u26BD","\u26BE","\u{1F94E}","\u{1F3C0}","\u{1F3D0}","\u{1F3C8}","\u{1F3C9}","\u{1F3BE}","\u{1F94F}","\u{1F3B3}","\u{1F3CF}","\u{1F3D1}","\u{1F3D2}","\u{1F94D}","\u{1F3D3}","\u{1F3F8}","\u{1F94A}","\u{1F94B}","\u{1F945}","\u26F3","\u26F8\uFE0F","\u{1F3A3}","\u{1F93F}","\u{1F3BD}","\u{1F3BF}","\u{1F6F7}","\u{1F94C}","\u{1F3AF}","\u{1FA80}","\u{1FA81}","\u{1F3B1}","\u{1F52E}","\u{1FA84}","\u{1F9FF}","\u{1F3AE}","\u{1F579}\uFE0F","\u{1F3B0}","\u{1F3B2}","\u{1F9E9}","\u{1F9F8}","\u{1FA85}","\u{1FA86}","\u2660\uFE0F","\u2665\uFE0F","\u2666\uFE0F","\u2663\uFE0F","\u265F\uFE0F","\u{1F0CF}","\u{1F004}","\u{1F3B4}","\u{1F3AD}","\u{1F5BC}\uFE0F","\u{1F3A8}","\u{1F9F5}","\u{1FAA1}","\u{1F9F6}","\u{1FAA2}"],object:["\u{1F453}","\u{1F576}\uFE0F","\u{1F97D}","\u{1F97C}","\u{1F9BA}","\u{1F454}","\u{1F455}","\u{1F456}","\u{1F9E3}","\u{1F9E4}","\u{1F9E5}","\u{1F9E6}","\u{1F457}","\u{1F458}","\u{1F97B}","\u{1FA71}","\u{1FA72}","\u{1FA73}","\u{1F459}","\u{1F45A}","\u{1F45B}","\u{1F45C}","\u{1F45D}","\u{1F6CD}\uFE0F","\u{1F392}","\u{1FA74}","\u{1F45E}","\u{1F45F}","\u{1F97E}","\u{1F97F}","\u{1F460}","\u{1F461}","\u{1FA70}","\u{1F462}","\u{1F451}","\u{1F452}","\u{1F3A9}","\u{1F393}","\u{1F9E2}","\u{1FA96}","\u26D1\uFE0F","\u{1F4FF}","\u{1F484}","\u{1F48D}","\u{1F48E}","\u{1F507}","\u{1F508}","\u{1F509}","\u{1F50A}","\u{1F4E2}","\u{1F4E3}","\u{1F4EF}","\u{1F514}","\u{1F515}","\u{1F3BC}","\u{1F3B5}","\u{1F3B6}","\u{1F399}\uFE0F","\u{1F39A}\uFE0F","\u{1F39B}\uFE0F","\u{1F3A4}","\u{1F3A7}","\u{1F4FB}","\u{1F3B7}","\u{1FA97}","\u{1F3B8}","\u{1F3B9}","\u{1F3BA}","\u{1F3BB}","\u{1FA95}","\u{1F941}","\u{1FA98}","\u{1F4F1}","\u{1F4F2}","\u260E\uFE0F","\u{1F4DE}","\u{1F4DF}","\u{1F4E0}","\u{1F50B}","\u{1F50C}","\u{1F4BB}","\u{1F5A5}\uFE0F","\u{1F5A8}\uFE0F","\u2328\uFE0F","\u{1F5B1}\uFE0F","\u{1F5B2}\uFE0F","\u{1F4BD}","\u{1F4BE}","\u{1F4BF}","\u{1F4C0}","\u{1F9EE}","\u{1F3A5}","\u{1F39E}\uFE0F","\u{1F4FD}\uFE0F","\u{1F3AC}","\u{1F4FA}","\u{1F4F7}","\u{1F4F8}","\u{1F4F9}","\u{1F4FC}","\u{1F50D}","\u{1F50E}","\u{1F56F}\uFE0F","\u{1F4A1}","\u{1F526}","\u{1F3EE}","\u{1FA94}","\u{1F4D4}","\u{1F4D5}","\u{1F4D6}","\u{1F4D7}","\u{1F4D8}","\u{1F4D9}","\u{1F4DA}","\u{1F4D3}","\u{1F4D2}","\u{1F4C3}","\u{1F4DC}","\u{1F4C4}","\u{1F4F0}","\u{1F5DE}\uFE0F","\u{1F4D1}","\u{1F516}","\u{1F3F7}\uFE0F","\u{1F4B0}","\u{1FA99}","\u{1F4B4}","\u{1F4B5}","\u{1F4B6}","\u{1F4B7}","\u{1F4B8}","\u{1F4B3}","\u{1F9FE}","\u{1F4B9}","\u2709\uFE0F","\u{1F4E7}","\u{1F4E8}","\u{1F4E9}","\u{1F4E4}","\u{1F4E5}","\u{1F4E6}","\u{1F4EB}","\u{1F4EA}","\u{1F4EC}","\u{1F4ED}","\u{1F4EE}","\u{1F5F3}\uFE0F","\u270F\uFE0F","\u2712\uFE0F","\u{1F58B}\uFE0F","\u{1F58A}\uFE0F","\u{1F58C}\uFE0F","\u{1F58D}\uFE0F","\u{1F4DD}","\u{1F4BC}","\u{1F4C1}","\u{1F4C2}","\u{1F5C2}\uFE0F","\u{1F4C5}","\u{1F4C6}","\u{1F5D2}\uFE0F","\u{1F5D3}\uFE0F","\u{1F4C7}","\u{1F4C8}","\u{1F4C9}","\u{1F4CA}","\u{1F4CB}","\u{1F4CC}","\u{1F4CD}","\u{1F4CE}","\u{1F587}\uFE0F","\u{1F4CF}","\u{1F4D0}","\u2702\uFE0F","\u{1F5C3}\uFE0F","\u{1F5C4}\uFE0F","\u{1F5D1}\uFE0F","\u{1F512}","\u{1F513}","\u{1F50F}","\u{1F510}","\u{1F511}","\u{1F5DD}\uFE0F","\u{1F528}","\u{1FA93}","\u26CF\uFE0F","\u2692\uFE0F","\u{1F6E0}\uFE0F","\u{1F5E1}\uFE0F","\u2694\uFE0F","\u{1F52B}","\u{1FA83}","\u{1F3F9}","\u{1F6E1}\uFE0F","\u{1FA9A}","\u{1F527}","\u{1FA9B}","\u{1F529}","\u2699\uFE0F","\u{1F5DC}\uFE0F","\u2696\uFE0F","\u{1F9AF}","\u{1F517}","\u26D3\uFE0F","\u{1FA9D}","\u{1F9F0}","\u{1F9F2}","\u{1FA9C}","\u2697\uFE0F","\u{1F9EA}","\u{1F9EB}","\u{1F9EC}","\u{1F52C}","\u{1F52D}","\u{1F4E1}","\u{1F489}","\u{1FA78}","\u{1F48A}","\u{1FA79}","\u{1FA7A}","\u{1F6AA}","\u{1F6D7}","\u{1FA9E}","\u{1FA9F}","\u{1F6CF}\uFE0F","\u{1F6CB}\uFE0F","\u{1FA91}","\u{1F6BD}","\u{1FAA0}","\u{1F6BF}","\u{1F6C1}","\u{1FAA4}","\u{1FA92}","\u{1F9F4}","\u{1F9F7}","\u{1F9F9}","\u{1F9FA}","\u{1F9FB}","\u{1FAA3}","\u{1F9FC}","\u{1FAA5}","\u{1F9FD}","\u{1F9EF}","\u{1F6D2}","\u{1F6AC}","\u26B0\uFE0F","\u{1FAA6}","\u26B1\uFE0F","\u{1F5FF}","\u{1FAA7}"],symbol:["\u{1F3E7}","\u{1F6AE}","\u{1F6B0}","\u267F","\u{1F6B9}","\u{1F6BA}","\u{1F6BB}","\u{1F6BC}","\u{1F6BE}","\u{1F6C2}","\u{1F6C3}","\u{1F6C4}","\u{1F6C5}","\u26A0\uFE0F","\u{1F6B8}","\u26D4","\u{1F6AB}","\u{1F6B3}","\u{1F6AD}","\u{1F6AF}","\u{1F6B1}","\u{1F6B7}","\u{1F4F5}","\u{1F51E}","\u2622\uFE0F","\u2623\uFE0F","\u2B06\uFE0F","\u2197\uFE0F","\u27A1\uFE0F","\u2198\uFE0F","\u2B07\uFE0F","\u2199\uFE0F","\u2B05\uFE0F","\u2196\uFE0F","\u2195\uFE0F","\u2194\uFE0F","\u21A9\uFE0F","\u21AA\uFE0F","\u2934\uFE0F","\u2935\uFE0F","\u{1F503}","\u{1F504}","\u{1F519}","\u{1F51A}","\u{1F51B}","\u{1F51C}","\u{1F51D}","\u{1F6D0}","\u269B\uFE0F","\u{1F549}\uFE0F","\u2721\uFE0F","\u2638\uFE0F","\u262F\uFE0F","\u271D\uFE0F","\u2626\uFE0F","\u262A\uFE0F","\u262E\uFE0F","\u{1F54E}","\u{1F52F}","\u2648","\u2649","\u264A","\u264B","\u264C","\u264D","\u264E","\u264F","\u2650","\u2651","\u2652","\u2653","\u26CE","\u{1F500}","\u{1F501}","\u{1F502}","\u25B6\uFE0F","\u23E9","\u23ED\uFE0F","\u23EF\uFE0F","\u25C0\uFE0F","\u23EA","\u23EE\uFE0F","\u{1F53C}","\u23EB","\u{1F53D}","\u23EC","\u23F8\uFE0F","\u23F9\uFE0F","\u23FA\uFE0F","\u23CF\uFE0F","\u{1F3A6}","\u{1F505}","\u{1F506}","\u{1F4F6}","\u{1F4F3}","\u{1F4F4}","\u2640\uFE0F","\u2642\uFE0F","\u26A7\uFE0F","\u2716\uFE0F","\u2795","\u2796","\u2797","\u267E\uFE0F","\u203C\uFE0F","\u2049\uFE0F","\u2753","\u2754","\u2755","\u2757","\u3030\uFE0F","\u{1F4B1}","\u{1F4B2}","\u2695\uFE0F","\u267B\uFE0F","\u269C\uFE0F","\u{1F531}","\u{1F4DB}","\u{1F530}","\u2B55","\u2705","\u2611\uFE0F","\u2714\uFE0F","\u274C","\u274E","\u27B0","\u27BF","\u303D\uFE0F","\u2733\uFE0F","\u2734\uFE0F","\u2747\uFE0F","\xA9\uFE0F","\xAE\uFE0F","\u2122\uFE0F","#\uFE0F\u20E3","*\uFE0F\u20E3","0\uFE0F\u20E3","1\uFE0F\u20E3","2\uFE0F\u20E3","3\uFE0F\u20E3","4\uFE0F\u20E3","5\uFE0F\u20E3","6\uFE0F\u20E3","7\uFE0F\u20E3","8\uFE0F\u20E3","9\uFE0F\u20E3","\u{1F51F}","\u{1F520}","\u{1F521}","\u{1F522}","\u{1F523}","\u{1F524}","\u{1F170}\uFE0F","\u{1F18E}","\u{1F171}\uFE0F","\u{1F191}","\u{1F192}","\u{1F193}","\u2139\uFE0F","\u{1F194}","\u24C2\uFE0F","\u{1F195}","\u{1F196}","\u{1F17E}\uFE0F","\u{1F197}","\u{1F17F}\uFE0F","\u{1F198}","\u{1F199}","\u{1F19A}","\u{1F201}","\u{1F202}\uFE0F","\u{1F237}\uFE0F","\u{1F236}","\u{1F22F}","\u{1F250}","\u{1F239}","\u{1F21A}","\u{1F232}","\u{1F251}","\u{1F238}","\u{1F234}","\u{1F233}","\u3297\uFE0F","\u3299\uFE0F","\u{1F23A}","\u{1F235}","\u{1F534}","\u{1F7E0}","\u{1F7E1}","\u{1F7E2}","\u{1F535}","\u{1F7E3}","\u{1F7E4}","\u26AB","\u26AA","\u{1F7E5}","\u{1F7E7}","\u{1F7E8}","\u{1F7E9}","\u{1F7E6}","\u{1F7EA}","\u{1F7EB}","\u2B1B","\u2B1C","\u25FC\uFE0F","\u25FB\uFE0F","\u25FE","\u25FD","\u25AA\uFE0F","\u25AB\uFE0F","\u{1F536}","\u{1F537}","\u{1F538}","\u{1F539}","\u{1F53A}","\u{1F53B}","\u{1F4A0}","\u{1F518}","\u{1F533}","\u{1F532}"],flag:["\u{1F3C1}","\u{1F6A9}","\u{1F38C}","\u{1F3F4}","\u{1F3F3}\uFE0F","\u{1F3F3}\uFE0F\u200D\u{1F308}","\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F","\u{1F3F4}\u200D\u2620\uFE0F","\u{1F1E6}\u{1F1E8}","\u{1F1E6}\u{1F1E9}","\u{1F1E6}\u{1F1EA}","\u{1F1E6}\u{1F1EB}","\u{1F1E6}\u{1F1EC}","\u{1F1E6}\u{1F1EE}","\u{1F1E6}\u{1F1F1}","\u{1F1E6}\u{1F1F2}","\u{1F1E6}\u{1F1F4}","\u{1F1E6}\u{1F1F6}","\u{1F1E6}\u{1F1F7}","\u{1F1E6}\u{1F1F8}","\u{1F1E6}\u{1F1F9}","\u{1F1E6}\u{1F1FA}","\u{1F1E6}\u{1F1FC}","\u{1F1E6}\u{1F1FD}","\u{1F1E6}\u{1F1FF}","\u{1F1E7}\u{1F1E6}","\u{1F1E7}\u{1F1E7}","\u{1F1E7}\u{1F1E9}","\u{1F1E7}\u{1F1EA}","\u{1F1E7}\u{1F1EB}","\u{1F1E7}\u{1F1EC}","\u{1F1E7}\u{1F1ED}","\u{1F1E7}\u{1F1EE}","\u{1F1E7}\u{1F1EF}","\u{1F1E7}\u{1F1F1}","\u{1F1E7}\u{1F1F2}","\u{1F1E7}\u{1F1F3}","\u{1F1E7}\u{1F1F4}","\u{1F1E7}\u{1F1F6}","\u{1F1E7}\u{1F1F7}","\u{1F1E7}\u{1F1F8}","\u{1F1E7}\u{1F1F9}","\u{1F1E7}\u{1F1FB}","\u{1F1E7}\u{1F1FC}","\u{1F1E7}\u{1F1FE}","\u{1F1E7}\u{1F1FF}","\u{1F1E8}\u{1F1E6}","\u{1F1E8}\u{1F1E8}","\u{1F1E8}\u{1F1E9}","\u{1F1E8}\u{1F1EB}","\u{1F1E8}\u{1F1EC}","\u{1F1E8}\u{1F1ED}","\u{1F1E8}\u{1F1EE}","\u{1F1E8}\u{1F1F0}","\u{1F1E8}\u{1F1F1}","\u{1F1E8}\u{1F1F2}","\u{1F1E8}\u{1F1F3}","\u{1F1E8}\u{1F1F4}","\u{1F1E8}\u{1F1F5}","\u{1F1E8}\u{1F1F7}","\u{1F1E8}\u{1F1FA}","\u{1F1E8}\u{1F1FB}","\u{1F1E8}\u{1F1FC}","\u{1F1E8}\u{1F1FD}","\u{1F1E8}\u{1F1FE}","\u{1F1E8}\u{1F1FF}","\u{1F1E9}\u{1F1EA}","\u{1F1E9}\u{1F1EC}","\u{1F1E9}\u{1F1EF}","\u{1F1E9}\u{1F1F0}","\u{1F1E9}\u{1F1F2}","\u{1F1E9}\u{1F1F4}","\u{1F1E9}\u{1F1FF}","\u{1F1EA}\u{1F1E6}","\u{1F1EA}\u{1F1E8}","\u{1F1EA}\u{1F1EA}","\u{1F1EA}\u{1F1EC}","\u{1F1EA}\u{1F1ED}","\u{1F1EA}\u{1F1F7}","\u{1F1EA}\u{1F1F8}","\u{1F1EA}\u{1F1F9}","\u{1F1EA}\u{1F1FA}","\u{1F1EB}\u{1F1EE}","\u{1F1EB}\u{1F1EF}","\u{1F1EB}\u{1F1F0}","\u{1F1EB}\u{1F1F2}","\u{1F1EB}\u{1F1F4}","\u{1F1EB}\u{1F1F7}","\u{1F1EC}\u{1F1E6}","\u{1F1EC}\u{1F1E7}","\u{1F1EC}\u{1F1E9}","\u{1F1EC}\u{1F1EA}","\u{1F1EC}\u{1F1EB}","\u{1F1EC}\u{1F1EC}","\u{1F1EC}\u{1F1ED}","\u{1F1EC}\u{1F1EE}","\u{1F1EC}\u{1F1F1}","\u{1F1EC}\u{1F1F2}","\u{1F1EC}\u{1F1F3}","\u{1F1EC}\u{1F1F5}","\u{1F1EC}\u{1F1F6}","\u{1F1EC}\u{1F1F7}","\u{1F1EC}\u{1F1F8}","\u{1F1EC}\u{1F1F9}","\u{1F1EC}\u{1F1FA}","\u{1F1EC}\u{1F1FC}","\u{1F1EC}\u{1F1FE}","\u{1F1ED}\u{1F1F0}","\u{1F1ED}\u{1F1F2}","\u{1F1ED}\u{1F1F3}","\u{1F1ED}\u{1F1F7}","\u{1F1ED}\u{1F1F9}","\u{1F1ED}\u{1F1FA}","\u{1F1EE}\u{1F1E8}","\u{1F1EE}\u{1F1E9}","\u{1F1EE}\u{1F1EA}","\u{1F1EE}\u{1F1F1}","\u{1F1EE}\u{1F1F2}","\u{1F1EE}\u{1F1F3}","\u{1F1EE}\u{1F1F4}","\u{1F1EE}\u{1F1F6}","\u{1F1EE}\u{1F1F7}","\u{1F1EE}\u{1F1F8}","\u{1F1EE}\u{1F1F9}","\u{1F1EF}\u{1F1EA}","\u{1F1EF}\u{1F1F2}","\u{1F1EF}\u{1F1F4}","\u{1F1EF}\u{1F1F5}","\u{1F1F0}\u{1F1EA}","\u{1F1F0}\u{1F1EC}","\u{1F1F0}\u{1F1ED}","\u{1F1F0}\u{1F1EE}","\u{1F1F0}\u{1F1F2}","\u{1F1F0}\u{1F1F3}","\u{1F1F0}\u{1F1F5}","\u{1F1F0}\u{1F1F7}","\u{1F1F0}\u{1F1FC}","\u{1F1F0}\u{1F1FE}","\u{1F1F0}\u{1F1FF}","\u{1F1F1}\u{1F1E6}","\u{1F1F1}\u{1F1E7}","\u{1F1F1}\u{1F1E8}","\u{1F1F1}\u{1F1EE}","\u{1F1F1}\u{1F1F0}","\u{1F1F1}\u{1F1F7}","\u{1F1F1}\u{1F1F8}","\u{1F1F1}\u{1F1F9}","\u{1F1F1}\u{1F1FA}","\u{1F1F1}\u{1F1FB}","\u{1F1F1}\u{1F1FE}","\u{1F1F2}\u{1F1E6}","\u{1F1F2}\u{1F1E8}","\u{1F1F2}\u{1F1E9}","\u{1F1F2}\u{1F1EA}","\u{1F1F2}\u{1F1EB}","\u{1F1F2}\u{1F1EC}","\u{1F1F2}\u{1F1ED}","\u{1F1F2}\u{1F1F0}","\u{1F1F2}\u{1F1F1}","\u{1F1F2}\u{1F1F2}","\u{1F1F2}\u{1F1F3}","\u{1F1F2}\u{1F1F4}","\u{1F1F2}\u{1F1F5}","\u{1F1F2}\u{1F1F6}","\u{1F1F2}\u{1F1F7}","\u{1F1F2}\u{1F1F8}","\u{1F1F2}\u{1F1F9}","\u{1F1F2}\u{1F1FA}","\u{1F1F2}\u{1F1FB}","\u{1F1F2}\u{1F1FC}","\u{1F1F2}\u{1F1FD}","\u{1F1F2}\u{1F1FE}","\u{1F1F2}\u{1F1FF}","\u{1F1F3}\u{1F1E6}","\u{1F1F3}\u{1F1E8}","\u{1F1F3}\u{1F1EA}","\u{1F1F3}\u{1F1EB}","\u{1F1F3}\u{1F1EC}","\u{1F1F3}\u{1F1EE}","\u{1F1F3}\u{1F1F1}","\u{1F1F3}\u{1F1F4}","\u{1F1F3}\u{1F1F5}","\u{1F1F3}\u{1F1F7}","\u{1F1F3}\u{1F1FA}","\u{1F1F3}\u{1F1FF}","\u{1F1F4}\u{1F1F2}","\u{1F1F5}\u{1F1E6}","\u{1F1F5}\u{1F1EA}","\u{1F1F5}\u{1F1EB}","\u{1F1F5}\u{1F1EC}","\u{1F1F5}\u{1F1ED}","\u{1F1F5}\u{1F1F0}","\u{1F1F5}\u{1F1F1}","\u{1F1F5}\u{1F1F2}","\u{1F1F5}\u{1F1F3}","\u{1F1F5}\u{1F1F7}","\u{1F1F5}\u{1F1F8}","\u{1F1F5}\u{1F1F9}","\u{1F1F5}\u{1F1FC}","\u{1F1F5}\u{1F1FE}","\u{1F1F6}\u{1F1E6}","\u{1F1F7}\u{1F1EA}","\u{1F1F7}\u{1F1F4}","\u{1F1F7}\u{1F1F8}","\u{1F1F7}\u{1F1FA}","\u{1F1F7}\u{1F1FC}","\u{1F1F8}\u{1F1E6}","\u{1F1F8}\u{1F1E7}","\u{1F1F8}\u{1F1E8}","\u{1F1F8}\u{1F1E9}","\u{1F1F8}\u{1F1EA}","\u{1F1F8}\u{1F1EC}","\u{1F1F8}\u{1F1ED}","\u{1F1F8}\u{1F1EE}","\u{1F1F8}\u{1F1EF}","\u{1F1F8}\u{1F1F0}","\u{1F1F8}\u{1F1F1}","\u{1F1F8}\u{1F1F2}","\u{1F1F8}\u{1F1F3}","\u{1F1F8}\u{1F1F4}","\u{1F1F8}\u{1F1F7}","\u{1F1F8}\u{1F1F8}","\u{1F1F8}\u{1F1F9}","\u{1F1F8}\u{1F1FB}","\u{1F1F8}\u{1F1FD}","\u{1F1F8}\u{1F1FE}","\u{1F1F8}\u{1F1FF}","\u{1F1F9}\u{1F1E6}","\u{1F1F9}\u{1F1E8}","\u{1F1F9}\u{1F1E9}","\u{1F1F9}\u{1F1EB}","\u{1F1F9}\u{1F1EC}","\u{1F1F9}\u{1F1ED}","\u{1F1F9}\u{1F1EF}","\u{1F1F9}\u{1F1F0}","\u{1F1F9}\u{1F1F1}","\u{1F1F9}\u{1F1F2}","\u{1F1F9}\u{1F1F3}","\u{1F1F9}\u{1F1F4}","\u{1F1F9}\u{1F1F7}","\u{1F1F9}\u{1F1F9}","\u{1F1F9}\u{1F1FB}","\u{1F1F9}\u{1F1FC}","\u{1F1F9}\u{1F1FF}","\u{1F1FA}\u{1F1E6}","\u{1F1FA}\u{1F1EC}","\u{1F1FA}\u{1F1F2}","\u{1F1FA}\u{1F1F3}","\u{1F1FA}\u{1F1F8}","\u{1F1FA}\u{1F1FE}","\u{1F1FA}\u{1F1FF}","\u{1F1FB}\u{1F1E6}","\u{1F1FB}\u{1F1E8}","\u{1F1FB}\u{1F1EA}","\u{1F1FB}\u{1F1EC}","\u{1F1FB}\u{1F1EE}","\u{1F1FB}\u{1F1F3}","\u{1F1FB}\u{1F1FA}","\u{1F1FC}\u{1F1EB}","\u{1F1FC}\u{1F1F8}","\u{1F1FD}\u{1F1F0}","\u{1F1FE}\u{1F1EA}","\u{1F1FE}\u{1F1F9}","\u{1F1FF}\u{1F1E6}","\u{1F1FF}\u{1F1F2}","\u{1F1FF}\u{1F1FC}"]};var Ye={informational:[100,101,102,103],success:[200,201,202,203,204,205,206,207,208,226],redirection:[300,301,302,303,304,305,306,307,308],clientError:[400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,421,422,423,424,425,426,428,429,431,451],serverError:[500,501,502,503,504,505,506,507,508,510,511]};var It={emoji:ze,http_status_code:Ye},We=It;var Ze=[{alpha2:"AD",alpha3:"AND",numeric:"020"},{alpha2:"AE",alpha3:"ARE",numeric:"784"},{alpha2:"AF",alpha3:"AFG",numeric:"004"},{alpha2:"AG",alpha3:"ATG",numeric:"028"},{alpha2:"AI",alpha3:"AIA",numeric:"660"},{alpha2:"AL",alpha3:"ALB",numeric:"008"},{alpha2:"AM",alpha3:"ARM",numeric:"051"},{alpha2:"AO",alpha3:"AGO",numeric:"024"},{alpha2:"AQ",alpha3:"ATA",numeric:"010"},{alpha2:"AR",alpha3:"ARG",numeric:"032"},{alpha2:"AS",alpha3:"ASM",numeric:"016"},{alpha2:"AT",alpha3:"AUT",numeric:"040"},{alpha2:"AU",alpha3:"AUS",numeric:"036"},{alpha2:"AW",alpha3:"ABW",numeric:"533"},{alpha2:"AX",alpha3:"ALA",numeric:"248"},{alpha2:"AZ",alpha3:"AZE",numeric:"031"},{alpha2:"BA",alpha3:"BIH",numeric:"070"},{alpha2:"BB",alpha3:"BRB",numeric:"052"},{alpha2:"BD",alpha3:"BGD",numeric:"050"},{alpha2:"BE",alpha3:"BEL",numeric:"056"},{alpha2:"BF",alpha3:"BFA",numeric:"854"},{alpha2:"BG",alpha3:"BGR",numeric:"100"},{alpha2:"BH",alpha3:"BHR",numeric:"048"},{alpha2:"BI",alpha3:"BDI",numeric:"108"},{alpha2:"BJ",alpha3:"BEN",numeric:"204"},{alpha2:"BL",alpha3:"BLM",numeric:"652"},{alpha2:"BM",alpha3:"BMU",numeric:"060"},{alpha2:"BN",alpha3:"BRN",numeric:"096"},{alpha2:"BO",alpha3:"BOL",numeric:"068"},{alpha2:"BQ",alpha3:"BES",numeric:"535"},{alpha2:"BR",alpha3:"BRA",numeric:"076"},{alpha2:"BS",alpha3:"BHS",numeric:"044"},{alpha2:"BT",alpha3:"BTN",numeric:"064"},{alpha2:"BV",alpha3:"BVT",numeric:"074"},{alpha2:"BW",alpha3:"BWA",numeric:"072"},{alpha2:"BY",alpha3:"BLR",numeric:"112"},{alpha2:"BZ",alpha3:"BLZ",numeric:"084"},{alpha2:"CA",alpha3:"CAN",numeric:"124"},{alpha2:"CC",alpha3:"CCK",numeric:"166"},{alpha2:"CD",alpha3:"COD",numeric:"180"},{alpha2:"CF",alpha3:"CAF",numeric:"140"},{alpha2:"CG",alpha3:"COG",numeric:"178"},{alpha2:"CH",alpha3:"CHE",numeric:"756"},{alpha2:"CI",alpha3:"CIV",numeric:"384"},{alpha2:"CK",alpha3:"COK",numeric:"184"},{alpha2:"CL",alpha3:"CHL",numeric:"152"},{alpha2:"CM",alpha3:"CMR",numeric:"120"},{alpha2:"CN",alpha3:"CHN",numeric:"156"},{alpha2:"CO",alpha3:"COL",numeric:"170"},{alpha2:"CR",alpha3:"CRI",numeric:"188"},{alpha2:"CU",alpha3:"CUB",numeric:"192"},{alpha2:"CV",alpha3:"CPV",numeric:"132"},{alpha2:"CW",alpha3:"CUW",numeric:"531"},{alpha2:"CX",alpha3:"CXR",numeric:"162"},{alpha2:"CY",alpha3:"CYP",numeric:"196"},{alpha2:"CZ",alpha3:"CZE",numeric:"203"},{alpha2:"DE",alpha3:"DEU",numeric:"276"},{alpha2:"DJ",alpha3:"DJI",numeric:"262"},{alpha2:"DK",alpha3:"DNK",numeric:"208"},{alpha2:"DM",alpha3:"DMA",numeric:"212"},{alpha2:"DO",alpha3:"DOM",numeric:"214"},{alpha2:"DZ",alpha3:"DZA",numeric:"012"},{alpha2:"EC",alpha3:"ECU",numeric:"218"},{alpha2:"EE",alpha3:"EST",numeric:"233"},{alpha2:"EG",alpha3:"EGY",numeric:"818"},{alpha2:"EH",alpha3:"ESH",numeric:"732"},{alpha2:"ER",alpha3:"ERI",numeric:"232"},{alpha2:"ES",alpha3:"ESP",numeric:"724"},{alpha2:"ET",alpha3:"ETH",numeric:"231"},{alpha2:"FI",alpha3:"FIN",numeric:"246"},{alpha2:"FJ",alpha3:"FJI",numeric:"242"},{alpha2:"FK",alpha3:"FLK",numeric:"238"},{alpha2:"FM",alpha3:"FSM",numeric:"583"},{alpha2:"FO",alpha3:"FRO",numeric:"234"},{alpha2:"FR",alpha3:"FRA",numeric:"250"},{alpha2:"GA",alpha3:"GAB",numeric:"266"},{alpha2:"GB",alpha3:"GBR",numeric:"826"},{alpha2:"GD",alpha3:"GRD",numeric:"308"},{alpha2:"GE",alpha3:"GEO",numeric:"268"},{alpha2:"GF",alpha3:"GUF",numeric:"254"},{alpha2:"GG",alpha3:"GGY",numeric:"831"},{alpha2:"GH",alpha3:"GHA",numeric:"288"},{alpha2:"GI",alpha3:"GIB",numeric:"292"},{alpha2:"GL",alpha3:"GRL",numeric:"304"},{alpha2:"GM",alpha3:"GMB",numeric:"270"},{alpha2:"GN",alpha3:"GIN",numeric:"324"},{alpha2:"GP",alpha3:"GLP",numeric:"312"},{alpha2:"GQ",alpha3:"GNQ",numeric:"226"},{alpha2:"GR",alpha3:"GRC",numeric:"300"},{alpha2:"GS",alpha3:"SGS",numeric:"239"},{alpha2:"GT",alpha3:"GTM",numeric:"320"},{alpha2:"GU",alpha3:"GUM",numeric:"316"},{alpha2:"GW",alpha3:"GNB",numeric:"624"},{alpha2:"GY",alpha3:"GUY",numeric:"328"},{alpha2:"HK",alpha3:"HKG",numeric:"344"},{alpha2:"HM",alpha3:"HMD",numeric:"334"},{alpha2:"HN",alpha3:"HND",numeric:"340"},{alpha2:"HR",alpha3:"HRV",numeric:"191"},{alpha2:"HT",alpha3:"HTI",numeric:"332"},{alpha2:"HU",alpha3:"HUN",numeric:"348"},{alpha2:"ID",alpha3:"IDN",numeric:"360"},{alpha2:"IE",alpha3:"IRL",numeric:"372"},{alpha2:"IL",alpha3:"ISR",numeric:"376"},{alpha2:"IM",alpha3:"IMN",numeric:"833"},{alpha2:"IN",alpha3:"IND",numeric:"356"},{alpha2:"IO",alpha3:"IOT",numeric:"086"},{alpha2:"IQ",alpha3:"IRQ",numeric:"368"},{alpha2:"IR",alpha3:"IRN",numeric:"364"},{alpha2:"IS",alpha3:"ISL",numeric:"352"},{alpha2:"IT",alpha3:"ITA",numeric:"380"},{alpha2:"JE",alpha3:"JEY",numeric:"832"},{alpha2:"JM",alpha3:"JAM",numeric:"388"},{alpha2:"JO",alpha3:"JOR",numeric:"400"},{alpha2:"JP",alpha3:"JPN",numeric:"392"},{alpha2:"KE",alpha3:"KEN",numeric:"404"},{alpha2:"KG",alpha3:"KGZ",numeric:"417"},{alpha2:"KH",alpha3:"KHM",numeric:"116"},{alpha2:"KI",alpha3:"KIR",numeric:"296"},{alpha2:"KM",alpha3:"COM",numeric:"174"},{alpha2:"KN",alpha3:"KNA",numeric:"659"},{alpha2:"KP",alpha3:"PRK",numeric:"408"},{alpha2:"KR",alpha3:"KOR",numeric:"410"},{alpha2:"KW",alpha3:"KWT",numeric:"414"},{alpha2:"KY",alpha3:"CYM",numeric:"136"},{alpha2:"KZ",alpha3:"KAZ",numeric:"398"},{alpha2:"LA",alpha3:"LAO",numeric:"418"},{alpha2:"LB",alpha3:"LBN",numeric:"422"},{alpha2:"LC",alpha3:"LCA",numeric:"662"},{alpha2:"LI",alpha3:"LIE",numeric:"438"},{alpha2:"LK",alpha3:"LKA",numeric:"144"},{alpha2:"LR",alpha3:"LBR",numeric:"430"},{alpha2:"LS",alpha3:"LSO",numeric:"426"},{alpha2:"LT",alpha3:"LTU",numeric:"440"},{alpha2:"LU",alpha3:"LUX",numeric:"442"},{alpha2:"LV",alpha3:"LVA",numeric:"428"},{alpha2:"LY",alpha3:"LBY",numeric:"434"},{alpha2:"MA",alpha3:"MAR",numeric:"504"},{alpha2:"MC",alpha3:"MCO",numeric:"492"},{alpha2:"MD",alpha3:"MDA",numeric:"498"},{alpha2:"ME",alpha3:"MNE",numeric:"499"},{alpha2:"MF",alpha3:"MAF",numeric:"663"},{alpha2:"MG",alpha3:"MDG",numeric:"450"},{alpha2:"MH",alpha3:"MHL",numeric:"584"},{alpha2:"MK",alpha3:"MKD",numeric:"807"},{alpha2:"ML",alpha3:"MLI",numeric:"466"},{alpha2:"MM",alpha3:"MMR",numeric:"104"},{alpha2:"MN",alpha3:"MNG",numeric:"496"},{alpha2:"MO",alpha3:"MAC",numeric:"446"},{alpha2:"MP",alpha3:"MNP",numeric:"580"},{alpha2:"MQ",alpha3:"MTQ",numeric:"474"},{alpha2:"MR",alpha3:"MRT",numeric:"478"},{alpha2:"MS",alpha3:"MSR",numeric:"500"},{alpha2:"MT",alpha3:"MLT",numeric:"470"},{alpha2:"MU",alpha3:"MUS",numeric:"480"},{alpha2:"MV",alpha3:"MDV",numeric:"462"},{alpha2:"MW",alpha3:"MWI",numeric:"454"},{alpha2:"MX",alpha3:"MEX",numeric:"484"},{alpha2:"MY",alpha3:"MYS",numeric:"458"},{alpha2:"MZ",alpha3:"MOZ",numeric:"508"},{alpha2:"NA",alpha3:"NAM",numeric:"516"},{alpha2:"NC",alpha3:"NCL",numeric:"540"},{alpha2:"NE",alpha3:"NER",numeric:"562"},{alpha2:"NF",alpha3:"NFK",numeric:"574"},{alpha2:"NG",alpha3:"NGA",numeric:"566"},{alpha2:"NI",alpha3:"NIC",numeric:"558"},{alpha2:"NL",alpha3:"NLD",numeric:"528"},{alpha2:"NO",alpha3:"NOR",numeric:"578"},{alpha2:"NP",alpha3:"NPL",numeric:"524"},{alpha2:"NR",alpha3:"NRU",numeric:"520"},{alpha2:"NU",alpha3:"NIU",numeric:"570"},{alpha2:"NZ",alpha3:"NZL",numeric:"554"},{alpha2:"OM",alpha3:"OMN",numeric:"512"},{alpha2:"PA",alpha3:"PAN",numeric:"591"},{alpha2:"PE",alpha3:"PER",numeric:"604"},{alpha2:"PF",alpha3:"PYF",numeric:"258"},{alpha2:"PG",alpha3:"PNG",numeric:"598"},{alpha2:"PH",alpha3:"PHL",numeric:"608"},{alpha2:"PK",alpha3:"PAK",numeric:"586"},{alpha2:"PL",alpha3:"POL",numeric:"616"},{alpha2:"PM",alpha3:"SPM",numeric:"666"},{alpha2:"PN",alpha3:"PCN",numeric:"612"},{alpha2:"PR",alpha3:"PRI",numeric:"630"},{alpha2:"PS",alpha3:"PSE",numeric:"275"},{alpha2:"PT",alpha3:"PRT",numeric:"620"},{alpha2:"PW",alpha3:"PLW",numeric:"585"},{alpha2:"PY",alpha3:"PRY",numeric:"600"},{alpha2:"QA",alpha3:"QAT",numeric:"634"},{alpha2:"RE",alpha3:"REU",numeric:"638"},{alpha2:"RO",alpha3:"ROU",numeric:"642"},{alpha2:"RS",alpha3:"SRB",numeric:"688"},{alpha2:"RU",alpha3:"RUS",numeric:"643"},{alpha2:"RW",alpha3:"RWA",numeric:"646"},{alpha2:"SA",alpha3:"SAU",numeric:"682"},{alpha2:"SB",alpha3:"SLB",numeric:"090"},{alpha2:"SC",alpha3:"SYC",numeric:"690"},{alpha2:"SD",alpha3:"SDN",numeric:"729"},{alpha2:"SE",alpha3:"SWE",numeric:"752"},{alpha2:"SG",alpha3:"SGP",numeric:"702"},{alpha2:"SH",alpha3:"SHN",numeric:"654"},{alpha2:"SI",alpha3:"SVN",numeric:"705"},{alpha2:"SJ",alpha3:"SJM",numeric:"744"},{alpha2:"SK",alpha3:"SVK",numeric:"703"},{alpha2:"SL",alpha3:"SLE",numeric:"694"},{alpha2:"SM",alpha3:"SMR",numeric:"674"},{alpha2:"SN",alpha3:"SEN",numeric:"686"},{alpha2:"SO",alpha3:"SOM",numeric:"706"},{alpha2:"SR",alpha3:"SUR",numeric:"740"},{alpha2:"SS",alpha3:"SSD",numeric:"728"},{alpha2:"ST",alpha3:"STP",numeric:"678"},{alpha2:"SV",alpha3:"SLV",numeric:"222"},{alpha2:"SX",alpha3:"SXM",numeric:"534"},{alpha2:"SY",alpha3:"SYR",numeric:"760"},{alpha2:"SZ",alpha3:"SWZ",numeric:"748"},{alpha2:"TC",alpha3:"TCA",numeric:"796"},{alpha2:"TD",alpha3:"TCD",numeric:"148"},{alpha2:"TF",alpha3:"ATF",numeric:"260"},{alpha2:"TG",alpha3:"TGO",numeric:"768"},{alpha2:"TH",alpha3:"THA",numeric:"764"},{alpha2:"TJ",alpha3:"TJK",numeric:"762"},{alpha2:"TK",alpha3:"TKL",numeric:"772"},{alpha2:"TL",alpha3:"TLS",numeric:"626"},{alpha2:"TM",alpha3:"TKM",numeric:"795"},{alpha2:"TN",alpha3:"TUN",numeric:"788"},{alpha2:"TO",alpha3:"TON",numeric:"776"},{alpha2:"TR",alpha3:"TUR",numeric:"792"},{alpha2:"TT",alpha3:"TTO",numeric:"780"},{alpha2:"TV",alpha3:"TUV",numeric:"798"},{alpha2:"TW",alpha3:"TWN",numeric:"158"},{alpha2:"TZ",alpha3:"TZA",numeric:"834"},{alpha2:"UA",alpha3:"UKR",numeric:"804"},{alpha2:"UG",alpha3:"UGA",numeric:"800"},{alpha2:"UM",alpha3:"UMI",numeric:"581"},{alpha2:"US",alpha3:"USA",numeric:"840"},{alpha2:"UY",alpha3:"URY",numeric:"858"},{alpha2:"UZ",alpha3:"UZB",numeric:"860"},{alpha2:"VA",alpha3:"VAT",numeric:"336"},{alpha2:"VC",alpha3:"VCT",numeric:"670"},{alpha2:"VE",alpha3:"VEN",numeric:"862"},{alpha2:"VG",alpha3:"VGB",numeric:"092"},{alpha2:"VI",alpha3:"VIR",numeric:"850"},{alpha2:"VN",alpha3:"VNM",numeric:"704"},{alpha2:"VU",alpha3:"VUT",numeric:"548"},{alpha2:"WF",alpha3:"WLF",numeric:"876"},{alpha2:"WS",alpha3:"WSM",numeric:"882"},{alpha2:"YE",alpha3:"YEM",numeric:"887"},{alpha2:"YT",alpha3:"MYT",numeric:"175"},{alpha2:"ZA",alpha3:"ZAF",numeric:"710"},{alpha2:"ZM",alpha3:"ZMB",numeric:"894"},{alpha2:"ZW",alpha3:"ZWE",numeric:"716"}];var Je=ue;var _t={country_code:Ze,time_zone:Je},Xe=_t;var Gt={title:"Base",code:"base"},Qe=Gt;var qe=["/Applications","/bin","/boot","/boot/defaults","/dev","/etc","/etc/defaults","/etc/mail","/etc/namedb","/etc/periodic","/etc/ppp","/home","/home/user","/home/user/dir","/lib","/Library","/lost+found","/media","/mnt","/net","/Network","/opt","/opt/bin","/opt/include","/opt/lib","/opt/sbin","/opt/share","/private","/private/tmp","/private/var","/proc","/rescue","/root","/sbin","/selinux","/srv","/sys","/System","/tmp","/Users","/usr","/usr/X11R6","/usr/bin","/usr/include","/usr/lib","/usr/libdata","/usr/libexec","/usr/local/bin","/usr/local/src","/usr/obj","/usr/ports","/usr/sbin","/usr/share","/usr/src","/var","/var/log","/var/mail","/var/spool","/var/tmp","/var/yp"];var et={"application/epub+zip":{extensions:["epub"]},"application/gzip":{extensions:["gz"]},"application/java-archive":{extensions:["jar","war","ear"]},"application/json":{extensions:["json","map"]},"application/ld+json":{extensions:["jsonld"]},"application/msword":{extensions:["doc","dot"]},"application/octet-stream":{extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/ogg":{extensions:["ogx"]},"application/pdf":{extensions:["pdf"]},"application/rtf":{extensions:["rtf"]},"application/vnd.amazon.ebook":{extensions:["azw"]},"application/vnd.apple.installer+xml":{extensions:["mpkg"]},"application/vnd.mozilla.xul+xml":{extensions:["xul"]},"application/vnd.ms-excel":{extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-fontobject":{extensions:["eot"]},"application/vnd.ms-powerpoint":{extensions:["ppt","pps","pot"]},"application/vnd.oasis.opendocument.presentation":{extensions:["odp"]},"application/vnd.oasis.opendocument.spreadsheet":{extensions:["ods"]},"application/vnd.oasis.opendocument.text":{extensions:["odt"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{extensions:["docx"]},"application/vnd.rar":{extensions:["rar"]},"application/vnd.visio":{extensions:["vsd","vst","vss","vsw"]},"application/x-7z-compressed":{extensions:["7z"]},"application/x-abiword":{extensions:["abw"]},"application/x-bzip":{extensions:["bz"]},"application/x-bzip2":{extensions:["bz2","boz"]},"application/x-csh":{extensions:["csh"]},"application/x-freearc":{extensions:["arc"]},"application/x-httpd-php":{extensions:["php"]},"application/x-sh":{extensions:["sh"]},"application/x-tar":{extensions:["tar"]},"application/xhtml+xml":{extensions:["xhtml","xht"]},"application/xml":{extensions:["xml","xsl","xsd","rng"]},"application/zip":{extensions:["zip"]},"audio/3gpp":{extensions:["3gpp"]},"audio/3gpp2":{extensions:["3g2"]},"audio/aac":{extensions:["aac"]},"audio/midi":{extensions:["mid","midi","kar","rmi"]},"audio/mpeg":{extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/ogg":{extensions:["oga","ogg","spx","opus"]},"audio/opus":{extensions:["opus"]},"audio/wav":{extensions:["wav"]},"audio/webm":{extensions:["weba"]},"font/otf":{extensions:["otf"]},"font/ttf":{extensions:["ttf"]},"font/woff":{extensions:["woff"]},"font/woff2":{extensions:["woff2"]},"image/avif":{extensions:["avif"]},"image/bmp":{extensions:["bmp"]},"image/gif":{extensions:["gif"]},"image/jpeg":{extensions:["jpeg","jpg","jpe"]},"image/png":{extensions:["png"]},"image/svg+xml":{extensions:["svg","svgz"]},"image/tiff":{extensions:["tif","tiff"]},"image/vnd.microsoft.icon":{extensions:["ico"]},"image/webp":{extensions:["webp"]},"text/calendar":{extensions:["ics","ifb"]},"text/css":{extensions:["css"]},"text/csv":{extensions:["csv"]},"text/html":{extensions:["html","htm","shtml"]},"text/javascript":{extensions:["js","mjs"]},"text/plain":{extensions:["txt","text","conf","def","list","log","in","ini"]},"video/3gpp":{extensions:["3gp","3gpp"]},"video/3gpp2":{extensions:["3g2"]},"video/mp2t":{extensions:["ts"]},"video/mp4":{extensions:["mp4","mp4v","mpg4"]},"video/mpeg":{extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/ogg":{extensions:["ogv"]},"video/webm":{extensions:["webm"]},"video/x-msvideo":{extensions:["avi"]}};var Ft={directory_path:qe,mime_type:et},tt=Ft;var Ot={color:Ge,database:Ue,date:je,hacker:Ve,internet:We,location:Xe,metadata:Qe,system:tt},Qa=Ot; - - var f=new Ie({locale:[Gl,Qa]}); - - class RandomDataGenerator { - data_length = 50; - generated_data = []; - auto_proceed = true; - locale = "en_GB"; // locale implementation suspended - imgAPIs = [ - 'https://picsum.photos/500/500?random=', - 'https://avatar.iran.liara.run/public/' - ]; - constructor({ length, auto_proceed, locale }) { - length !== undefined && (this.data_length = length); - auto_proceed !== undefined && (this.auto_proceed = auto_proceed); - locale !== undefined && (this.locale = locale.replace('-', '_')); - if (this.auto_proceed) { - this.generate(); - } - } - generate() { - return this.make_data(); - } - make_data() { - for (let i = 0; i < this.data_length; i++) { - const _data = this.generate_data((i + 1).toString()); - if (i > 0) { - _data.parentId = this.get_parent_id(i); - } - this.generated_data.push(_data); - } - return this.generated_data; - } - get_parent_id(index) { - let parentId = Math.floor(Math.random() * this.generated_data.length).toString(); - parentId = parseInt(parentId) == 0 ? "1" : parentId; - if (parentId == (index + 1).toString()) { - parentId = this.get_parent_id(index); - } - return parentId; - } - generate_data(id) { - const should_add_image = Math.floor(Math.random() * 2); - const img_endpoints = this.imgAPIs[Math.floor(Math.random() * this.imgAPIs.length)] + id; - return { - id, - name: f.person.fullName(), - role: f.person.jobTitle(), - location: f.location.city() + ", " + f.location.country(), - image: should_add_image ? img_endpoints : '' - }; - } - } - - class ChartMainHelper { - tree_data = []; - handleCollapseChildren = () => { }; - center_elem = ({}) => null; - itemHierarchy = []; - tmp_tree_data = []; - tree_level_step = 2; - display_tree_in_step = true; - auto_display_tree_in_step = true; - link_point_position = { - top: (rect) => `translate(${parseInt(rect.attr('width')) / 2}, 0)`, - bottom: (rect) => `translate(${parseInt(rect.attr('width')) / 2}, ${rect.attr('height')})`, - right: (rect) => `translate(${rect.attr('width')}, ${rect.attr('height') / 2})`, - left: (rect) => `translate(0, ${rect.attr('height') / 2})`, - }; - inverse_link_point_position = { - "top": "bottom", - "bottom": "top", - "left": "right", - "right": "left", - }; - chartHeadWidth = 120; - chartHeadHeight = 130; - chartHeadLandscapeWidth = 240; - chartHeadLandscapeHeight = 80; - chartHeadRoundedWidth = 120; - chartHeadRoundedHeight = 180; - color_handler = {}; - chart_head_type = 'default'; - show_chart_head_border = true; - animation_rotation_speed = 50; - animation_rotation_interval = 1; - head_linker_thumb_circle_radius = 8; - linker_thumb_icon_color = 'bright500'; - linker_thumb_shape = 'symbolDiamond2'; - head_image_shape = 'symbolCircle'; - head_image_surface_area = 60; - chart_head_bg = '#ffffff'; - auto_set_chart_head_bg = false; - emitEvent = () => false; - tree_link_types = { - curveBumpX: bumpX, - curveBumpY: bumpY, - curveBasisClosed: basisClosed, - curveLinear: curveLinear, - curveStep: step, - curveStepAfter: stepAfter, - curveStepBefore: stepBefore - }; - tree_link_type = undefined; - rootWrapperContainer = null; - app_unique_id = ''; - app_root_unique_selector = ''; - constructor() { - setTimeout(() => { - this.app_root_unique_selector = `[data-ts-unique-id='${this.app_unique_id}']`; - }, 0); - } - createDynamicEl() { - return new TSElement(); - } - splitStringIntoBatch(text, len) { - let arr = []; - for (let i = 0; i < text?.length; i += len) { - arr.push(text.substring(i, Math.min(i + len, text.length))); - } - return arr; - } - get_user_initials(name) { - const split_name = name?.split(' '); - return split_name?.length > 1 ? split_name?.[0][0] + split_name?.at(-1)?.[0] : split_name?.[0][0]; - } - format_employee_name(name, length = 15) { - const split_name = name?.split(' '); - const make_name = split_name?.length > 2 ? split_name?.[0] + " " + split_name?.at(-1) : split_name?.join(' '); - const clip_name = this.splitStringIntoBatch(make_name, length); - return clip_name; - } - symbol_type(symbolName) { - const fillSymbols = ['circle', 'cross', 'diamond', 'square', 'star', 'triangle', 'wye']; - const strokeSymbols = ['plus', 'x', 'triangle2', 'asterisk', 'square2', 'diamond2']; - const trim_name = symbolName.replace(/symbol/, '').toLowerCase(); - return fillSymbols.includes(trim_name) ? 'fill' : strokeSymbols.includes(trim_name) ? 'stroke' : 'fill'; - } - get_page_body_bg() { - const page_style = document.body.style.getPropertyValue('background-color'); - return page_style == '' ? '#ffffff' : page_style; - } - get_chart_head_bg() { - if (this.auto_set_chart_head_bg) - return this.get_page_body_bg(); - return this.chart_head_bg; - } - get_image_shape_spacing(symbol) { - const spacings = { - symbolCircle: 10, - symbolCross: 10, - symbolDiamond: 25, - symbolDiamond2: 10, - symbolSquare: 0, - symbolSquare2: -8, - symbolStar: 20, - symbolTriangle: 20, - symbolTriangle2: 10, - symbolWye: 20 - }; - return spacings[symbol]; - } - makeHead(head_data, doubleVerticalPoints = false, pointPosition = { parent: "bottom", children: "top" }) { - if (this.chart_head_type == 'default') { - return this.defaultHead(head_data, doubleVerticalPoints, pointPosition); - } - else if (this.chart_head_type == 'landscape') { - return this.landscapeHead(head_data, doubleVerticalPoints, pointPosition); - } - else if (this.chart_head_type == 'rounded') { - return this.roundedHead(head_data, doubleVerticalPoints, pointPosition); - } - else { - return this.defaultHead(head_data, doubleVerticalPoints, pointPosition); - } - } - handleCenterHead(e) { - e.stopPropagation(); - const curr_target = e.currentTarget; - const rect = curr_target.getBoundingClientRect(); - this.center_elem(rect); - } - defaultHead(head_data, doubleVerticalPoints = false, pointPosition = { parent: "bottom", children: "top" }) { - const has_children = this.tree_data.filter(data => data.parentId === head_data.id).length > 0; - const has_parent = this.tree_data.filter(data => data.id === head_data.parentId).length > 0; - const color_set = this.color_handler.getColor(head_data.id); - let move_down = 0; - const chart_head_bg = this.get_chart_head_bg(); - const svgNode = create$1('svg') - .attr("class", "main-svg-el" + (this.getIsElRootTreeChild(head_data.id) ? ' root-svg-el' : '')) - .attr('width', this.chartHeadWidth) - .attr('height', this.chartHeadHeight) - .attr('style', 'background-color: ' + chart_head_bg) - .on('dblclick', (e) => this.handleCenterHead(e)); - // Gaussian blur - create$1('defs') - .append('filter') - .attr('id', 'blur1') - .attr('x', 0) - .attr('y', 0) - .append('feGaussianBlur') - .attr('in', 'SourceGraphic') - .attr('stdDeviation', '3'); - const all_group = svgNode.append('g'); - const rect = all_group?.append('rect') - .attr('rx', 16) - .attr('ry', 16) - .attr('width', this.chartHeadWidth) - .attr('height', this.chartHeadHeight) - .attr('stroke', this.show_chart_head_border ? color_set.color : 'none') - .attr('fill', 'none') - .attr('stroke-width', 0); - const rect_half_width = parseInt(rect.attr('width')) / 2; - const firstSection = all_group?.append('g') - .attr('y', 100); - const chart_head_image_size = Math.pow(this.head_image_surface_area - this.get_image_shape_spacing(this.head_image_shape), 2); - if (!head_data.image) { - move_down = rect_half_width - this.head_image_surface_area < 1 ? Math.abs(rect_half_width - this.head_image_surface_area) + 15 : 0; - firstSection?.append('path') - .attr('d', Symbol$1().type(d3[this.head_image_shape]).size(chart_head_image_size)) - .attr('stroke', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : 'none') - .attr('stroke-width', this.symbol_type(this.head_image_shape) == 'stroke' ? 1 : 0) - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? 'transparent' : color_set.color) - .attr('transform', `translate(${parseInt(rect.attr('width')) / 2}, 50)`); - firstSection?.append('text') - .attr('class', '') - .attr('text-anchor', 'middle') - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : color_set.bright500) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', 56) - .attr('font-size', '95%') - .text(this.get_user_initials(head_data.name)); // employee name - } - else { - let extra_y_dist = rect_half_width - this.head_image_surface_area; - extra_y_dist = extra_y_dist > 10 ? 0 : extra_y_dist - 10; - extra_y_dist = extra_y_dist > 0 ? -extra_y_dist : extra_y_dist; - extra_y_dist = (rect_half_width - this.head_image_surface_area) <= 10 && extra_y_dist == 0 ? -10 : extra_y_dist; - move_down = rect_half_width - this.head_image_surface_area < 1 ? Math.abs(rect_half_width - this.head_image_surface_area) + 15 : 0; - firstSection.append('defs') - .append('clipPath') - .attr('id', "default-head-clip-" + head_data.id) - .append('path') - .attr('d', Symbol$1().type(d3[this.head_image_shape]).size(chart_head_image_size)) - .attr('transform', `translate(${(parseInt(rect.attr('width')) / 2)}, ${this.head_image_surface_area + extra_y_dist})`) - .attr('fill', color_set.bright500); - firstSection?.append('image') - .attr('href', head_data.image) - .attr('preserveAspectRatio', 'xMaxYMax slice') - .attr('width', this.head_image_surface_area) - .attr('height', this.head_image_surface_area) - .attr('x', (parseInt(rect.attr('width')) / 2) - (this.head_image_surface_area / 2)) - .attr('y', (this.head_image_surface_area / 2) + extra_y_dist) - .attr('clip-path', `url(#default-head-clip-${head_data.id})`); - } - const employee_name_split = this.format_employee_name(head_data.name); - employee_name_split.forEach((name, i) => { - all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', i > 0 ? 95 + move_down : 80 + move_down) - .attr('font-size', '85%') - .attr('fill', color_set.darker) - .attr('style', `text-transform: ${i > 0 ? 'none' : 'capitalize'}`) - .text(name); // employee name - i > 0 && (move_down += 15); - }); - const positionTitle = all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', 100 + move_down) - .attr('font-size', '65%'); - const titles = this.splitStringIntoBatch(head_data.role, 20); // role - titles.forEach((title, index) => { - positionTitle?.append('tspan') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('dy', index > 0 ? '.6rem' : 0) - .text(title.toString()) - .attr('fill', color_set.dark100); - index > 0 && (move_down += 10); - }); - if (head_data.location !== undefined) { - const employeeLocation = all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', 115 + move_down) - .attr('font-size', '65%') - .attr('fill', color_set.dark100); - const location_title = this.splitStringIntoBatch(head_data.location, 19); // role - location_title.forEach((title, index) => { - employeeLocation?.append('tspan') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('dy', index > 0 ? '.6rem' : 0) - .text(title.toString()); - index > 0 && (move_down += 10); - }); - } - const container_height = this.chartHeadHeight + move_down; - rect?.attr('height', container_height); - svgNode?.attr('height', container_height); - this.add_linker(all_group, has_parent, has_children, pointPosition, color_set, rect, svgNode, head_data, doubleVerticalPoints); - this.emitEvent('chart_head.create', { headNode: svgNode.node() }); - return svgNode; - } - landscapeHead(head_data, doubleVerticalPoints = false, pointPosition = { parent: "bottom", children: "top" }) { - const has_children = this.tree_data.filter(data => data.parentId === head_data.id).length > 0; - const has_parent = this.tree_data.filter(data => data.id === head_data.parentId).length > 0; - const color_set = this.color_handler.getColor(head_data.id); - let move_down = 0; - const svgNode = create$1('svg') - .attr("class", "main-svg-el" + (this.getIsElRootTreeChild(head_data.id) ? ' root-svg-el' : '')) - .attr('width', this.chartHeadLandscapeWidth) - .attr('height', this.chartHeadLandscapeHeight) - .attr('style', 'background-color: ' + this.chart_head_bg) - .on('dblclick', (e) => this.handleCenterHead(e)); - const all_group = svgNode.append('g'); - const rect = all_group?.append('rect') - .attr('rx', 16) - .attr('ry', 16) - .attr('width', this.chartHeadLandscapeWidth) - .attr('height', this.chartHeadLandscapeHeight) - .attr('stroke', this.show_chart_head_border ? color_set.color : 'none') - .attr('fill', 'none') - .attr('stroke-width', 0); - const rect_half_height = parseInt(rect.attr('height')) / 2; - const employee_name_split = this.format_employee_name(head_data.name, 18); - const rightGroup = all_group.append('g') - .attr('x', 0) - .attr('y', 0); - const leftGroup = all_group.append('g'); - const locked_height = this.chartHeadLandscapeHeight + move_down; - rect.attr('height', locked_height); - svgNode.attr('height', locked_height); - if (!head_data.image) { - const chartHeadLandscapeHeight = this.head_image_surface_area > rect_half_height ? Math.abs(this.head_image_surface_area - rect_half_height) : 0; - rect.attr('height', locked_height + chartHeadLandscapeHeight); - svgNode.attr('height', locked_height + chartHeadLandscapeHeight); - svgNode.attr('width', this.chartHeadLandscapeWidth + chartHeadLandscapeHeight); - rect.attr('width', this.chartHeadLandscapeWidth + chartHeadLandscapeHeight); - leftGroup?.append('path') - .attr('d', Symbol$1().type(d3[this.head_image_shape]).size(Math.pow(this.head_image_surface_area - this.get_image_shape_spacing(this.head_image_shape), 2))) - .attr('stroke', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : 'none') - .attr('stroke-width', this.symbol_type(this.head_image_shape) == 'stroke' ? 1 : 0) - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? 'transparent' : color_set.color) - .attr('transform', `translate(${parseInt(rect.attr('height')) / 2}, 50)`); - leftGroup?.append('text') - .attr('class', '') - .attr('text-anchor', 'middle') - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : color_set.bright500) - .attr('x', parseInt(rect.attr('height')) / 2) - .attr('y', (parseInt(rect.attr('height')) / 2) + 6) - .attr('font-size', '95%') - .text(this.get_user_initials(head_data.name)); // employee initials - } - else { - let extra_y_dist = rect_half_height - this.head_image_surface_area; - extra_y_dist = extra_y_dist > 10 ? 0 : extra_y_dist - 10; - extra_y_dist = extra_y_dist > 0 ? -extra_y_dist : extra_y_dist; - extra_y_dist = (rect_half_height - this.head_image_surface_area) <= 10 && extra_y_dist == 0 ? -10 : extra_y_dist; - const chartHeadLandscapeHeight = this.head_image_surface_area > rect_half_height ? Math.abs(this.head_image_surface_area - rect_half_height) : 0; - rect.attr('height', locked_height + chartHeadLandscapeHeight); - svgNode.attr('height', locked_height + chartHeadLandscapeHeight); - svgNode.attr('width', this.chartHeadLandscapeWidth + chartHeadLandscapeHeight); - rect.attr('width', this.chartHeadLandscapeWidth + chartHeadLandscapeHeight); - leftGroup.append('defs') - .append('clipPath') - .attr('id', "landscape-clip-" + head_data.id) - .append('path') - .attr('d', Symbol$1().type(d3[this.head_image_shape]).size(Math.pow(this.head_image_surface_area - this.get_image_shape_spacing(this.head_image_shape), 2))) - .attr('transform', `translate(${(parseInt(rect.attr('height')) / 2)}, ${this.head_image_surface_area + (extra_y_dist + 20)})`) - .attr('fill', color_set.bright500); - leftGroup?.append('image') - .attr('href', head_data.image) - .attr('preserveAspectRatio', 'xMaxYMax slice') - .attr('width', this.head_image_surface_area) - .attr('height', this.head_image_surface_area) - .attr('x', (parseInt(rect.attr('height')) / 2) - (this.head_image_surface_area / 2)) - .attr('y', (this.head_image_surface_area / 2) + (extra_y_dist + 20)) - .attr('clip-path', `url(#landscape-clip-${head_data.id})`); - } - const leftStartOrigin = parseInt(rect.attr('height')); - const employeeName = rightGroup?.append('text') - .attr('x', leftStartOrigin) - .attr('y', 30) - .attr('font-size', '95%') - .attr('fill', color_set.darker); - employee_name_split.forEach((title, index) => { - employeeName?.append('tspan') - .attr('x', leftStartOrigin) - .attr('y', 30) - .attr('dy', index > 0 ? '.7rem' : 0) - .attr('font-size', '95%') - .attr('style', "z-index: +9") - .text(title.toString()); - index > 0 && (move_down += 10); - }); - const positionTitle = rightGroup?.append('text') - .attr('x', leftStartOrigin) - .attr('y', 50 + move_down) - .attr('font-size', '65%'); - const titles = this.splitStringIntoBatch(head_data.role, 30); // role - titles.forEach((title, index) => { - positionTitle?.append('tspan') - .attr('x', leftStartOrigin) - .attr('dy', index > 0 ? '.6rem' : 0) - .attr('y', 50 + move_down) - .text(title.toString()) - .attr('fill', color_set.dark100); - index > 0 && (move_down += 10); - }); - if (head_data.location !== undefined) { - const employeeLocation = rightGroup?.append('text') - .attr('x', leftStartOrigin) - .attr('y', 65 + move_down) - .attr('font-size', '65%') - .attr('fill', color_set.dark100); - const location_title = this.splitStringIntoBatch(head_data.location, 30); // role - location_title.forEach((title, index) => { - employeeLocation?.append('tspan') - .attr('x', leftStartOrigin) - .attr('dy', index > 0 ? '.6rem' : 0) - .text(title.toString()); - index > 0 && (move_down += 10); - }); - } - this.add_linker(all_group, has_parent, has_children, pointPosition, color_set, rect, svgNode, head_data, doubleVerticalPoints); - this.emitEvent('chart_head.create', { headNode: svgNode.node() }); - return svgNode; - } - roundedHead(head_data, doubleVerticalPoints = false, pointPosition = { parent: "bottom", children: "top" }) { - const has_children = this.tree_data.filter(data => data.parentId === head_data.id).length > 0; - const has_parent = this.tree_data.filter(data => data.id === head_data.parentId).length > 0; - const color_set = this.color_handler.getColor(head_data.id); - let move_down = 0; - const svgNode = create$1('svg') - .attr('class', 'main-svg-el rounded-head' + (this.getIsElRootTreeChild(head_data.id) ? ' root-svg-el' : '')) - .attr('style', 'overflow: visible;') - .attr('width', this.chartHeadRoundedWidth) - .attr('height', this.chartHeadRoundedHeight) - .attr('fill', 'none') - .on('dblclick', (e) => this.handleCenterHead(e)); - const all_group = svgNode.append('g'); - const rect = all_group?.append('rect') - .attr('rx', 16) - .attr('ry', 16) - .attr('width', this.chartHeadRoundedWidth) - .attr('height', this.chartHeadRoundedHeight) - .attr('stroke', this.show_chart_head_border ? color_set.color : 'none') - .attr('fill', 'none') - .attr('stroke-width', 0); - const rect_half_width = parseInt(rect.attr('width')) / 2; - const firstSection = all_group?.append('g'); - const symbol_size = Math.pow((this.head_image_surface_area - this.get_image_shape_spacing(this.head_image_shape)) * 2, 2); - const head_shape_type = d3[this.head_image_shape]; - if (!head_data.image) { - let extra_y_dist = rect_half_width - this.head_image_surface_area; - extra_y_dist = extra_y_dist > 10 ? 0 : extra_y_dist - 10; - extra_y_dist = extra_y_dist > 0 ? -extra_y_dist : extra_y_dist; - extra_y_dist = (rect_half_width - this.head_image_surface_area) <= 10 && extra_y_dist == 0 ? -10 : extra_y_dist; - move_down = rect_half_width - this.head_image_surface_area < 0 ? Math.abs(rect_half_width - this.head_image_surface_area) * 2 : 0; - firstSection?.append('path') - .attr('d', Symbol$1().type(head_shape_type).size(symbol_size)) - .attr('stroke', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : 'none') - .attr('stroke-width', this.symbol_type(this.head_image_shape) == 'stroke' ? 1 : 0) - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? 'transparent' : color_set.color) - .attr('transform', `translate(${(parseInt(rect.attr('width')) / 2)}, ${(this.head_image_surface_area * 2) - ((this.head_image_surface_area))})`); - firstSection?.append('text') - .attr('class', '') - .attr('text-anchor', 'middle') - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : color_set.bright500) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', this.head_image_surface_area + Math.sqrt(symbol_size) / 6) - .attr('font-size', (this.head_image_surface_area / 1.5) + 'px') - .text(this.get_user_initials(head_data.name)); // employee name - } - else { - let extra_y_dist = rect_half_width - this.head_image_surface_area; - extra_y_dist = extra_y_dist > 10 ? 0 : extra_y_dist - 10; - extra_y_dist = extra_y_dist > 0 ? -extra_y_dist : extra_y_dist; - extra_y_dist = (rect_half_width - this.head_image_surface_area) <= 10 && extra_y_dist == 0 ? -10 : extra_y_dist; - move_down = rect_half_width - this.head_image_surface_area < 0 ? Math.abs(rect_half_width - this.head_image_surface_area) * 2 : 0; - firstSection.append('defs') - .append('clipPath') - .attr('id', "rounded-corners-" + head_data.id) - .append('path') - .attr('d', Symbol$1().type(head_shape_type).size(symbol_size)) - .attr('transform', `translate(${(parseInt(rect.attr('width')) / 2)}, ${(this.head_image_surface_area * 2) - ((this.head_image_surface_area))})`) - .attr('fill', color_set.bright500); - firstSection?.append('image') - .attr('href', head_data.image) - .attr('preserveAspectRatio', 'xMaxYMax slice') - .attr('width', this.head_image_surface_area * 2) - .attr('height', this.head_image_surface_area * 2) - .attr('x', (parseInt(rect.attr('width')) / 2) - (this.head_image_surface_area)) - .attr('y', (this.head_image_surface_area) - ((this.head_image_surface_area))) - .attr('clip-path', `url(#rounded-corners-${head_data.id})`); - } - const employee_name_split = this.format_employee_name(head_data.name, 27); - employee_name_split.forEach((name, i) => { - all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', this.chartHeadRoundedWidth + 18) - .attr('dy', i > 0 ? 50 + move_down : 0 + move_down) - .attr('font-size', '105%') - .attr('fill', color_set.darker) - .attr('style', `text-transform: ${i > 0 ? 'none' : 'capitalize'}`) - .text(name); // employee name - i > 0 && (move_down += 15); - }); - const positionTitle = all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', this.chartHeadRoundedWidth + 35 + move_down) - .attr('font-size', '65%'); - const titles = this.splitStringIntoBatch(head_data.role, 20); // role - titles.forEach((title, index) => { - positionTitle?.append('tspan') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('dy', index > 0 ? '.6rem' : 0) - .text(title.toString()) - .attr('fill', color_set.dark100); - index > 0 && (move_down += 10); - }); - if (head_data.location !== undefined) { - const employeeLocation = all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', this.chartHeadRoundedWidth + 50 + move_down) - .attr('font-size', '65%') - .attr('fill', color_set.dark100); - const location_title = this.splitStringIntoBatch(head_data.location, 19); // role - location_title.forEach((title, index) => { - employeeLocation?.append('tspan') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('dy', index > 0 ? '.6rem' : 0) - .text(title.toString()); - index > 0 && (move_down += 10); - }); - } - const container_height = this.chartHeadRoundedHeight + move_down; - rect?.attr('height', container_height); - svgNode?.attr('height', container_height); - this.add_linker(all_group, has_parent, has_children, pointPosition, color_set, rect, svgNode, head_data, doubleVerticalPoints); - this.emitEvent('chart_head.create', { headNode: svgNode.node() }); - return svgNode; - } - add_linker(all_group, has_parent, has_children, pointPosition, color_set, rect, svgNode, head_data, doubleVerticalPoints) { - const ts_linker = Math.PI * this.head_linker_thumb_circle_radius * this.head_linker_thumb_circle_radius; - const add_link_icon = (type, inverse_link_point_position, class_name) => { - if (this.rootWrapperContainer?.querySelector('.' + class_name) != null) - this.rootWrapperContainer?.querySelector('.' + class_name)?.remove(); - const color = this.symbol_type(this.linker_thumb_shape) == 'stroke' ? color_set.bright100 : color_set[this.linker_thumb_icon_color]; - return all_group.append('path') - .attr('d', Symbol$1().type(type == 'cross' ? cross : times).size(Math.sqrt(ts_linker))) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', rect.attr('height')) - .attr('fill', color) - .attr('stroke', type == 'minus' ? color : 'none') - .attr('class', class_name) - .attr('style', 'pointer-events: none') - .attr('stroke-width', type == 'minus' ? 2 : 0) - .attr('transform', this.link_point_position[inverse_link_point_position](rect)); - }; - if (pointPosition != false && has_parent) { - all_group?.append('path') - .attr('d', Symbol$1().type(d3[this.linker_thumb_shape]).size(ts_linker)) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', 0) - .attr('class', 'ts-linker') - .attr('fill', this.symbol_type(this.linker_thumb_shape) == 'fill' ? color_set.color : 'none') - .attr('stroke', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? color_set.gray : 'none') - .attr('stroke-width', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? 1 : 0) - .attr('transform', this.link_point_position[pointPosition.children](rect)); - } - if (pointPosition != false && has_children) { - const _class = this; - const translate_y = pointPosition.parent == "bottom" ? 0 : rect.attr('height'); - let click_counter = 0; - all_group?.append('path') - .attr('d', Symbol$1().type(d3[this.linker_thumb_shape]).size(ts_linker)) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', rect.attr('height')) - .attr('class', 'ts-linker') - .attr('style', 'cursor: pointer;') - .attr('fill', this.symbol_type(this.linker_thumb_shape) == 'fill' ? color_set.color : 'transparent') - .attr('stroke', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? color_set.gray : 'none') - .attr('stroke-width', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? 1 : 0) - .attr('transform', this.link_point_position[this.inverse_link_point_position[pointPosition.children]](rect)) - .on('click', (e) => { - const curr_target_parent = e.currentTarget.parentElement; - click_counter % 2 == 0 ? - add_link_icon('cross', this.inverse_link_point_position[pointPosition.children], 'ts-lnk-icn-' + head_data.id + '-1') : - add_link_icon('minus', this.inverse_link_point_position[pointPosition.children], 'ts-lnk-icn-' + head_data.id + '-1'); - click_counter++; - _class.handleCollapseChildren?.(svgNode, head_data.id, translate_y); - const rect = curr_target_parent.getBoundingClientRect(); - setTimeout(() => { - click_counter % 2 == 0 && this.center_elem(rect); - }, 0); - click_counter % 2 == 0 ? this.emitEvent('chart_head.expanded', { svgNode, head_data, pointPosition }, false) : - this.emitEvent('chart_head.collapsed', { svgNode, head_data, pointPosition }, false); - }); - if (!this.el_has_children(head_data.id, true)) { - click_counter++; - } - add_link_icon(!this.el_has_children(head_data.id, true) ? 'cross' : 'minus', this.inverse_link_point_position[pointPosition.children], 'ts-lnk-icn-' + head_data.id + '-1'); - if (doubleVerticalPoints) { - const translate_y_2 = translate_y == 0 ? rect.attr('height') : 0; - let click_counter_2 = 0; - all_group?.append('path') - .attr('d', Symbol$1().type(d3[this.linker_thumb_shape]).size(ts_linker)) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', rect.attr('height')) - .attr('class', 'ts-linker') - .attr('style', 'cursor: pointer') - .attr('fill', this.symbol_type(this.linker_thumb_shape) == 'fill' ? color_set.color : 'transparent') - .attr('stroke', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? color_set.gray : 'none') - .attr('stroke-width', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? 1 : 0) - .attr('transform', this.link_point_position[this.inverse_link_point_position[pointPosition.parent]](rect)) - .on('click', (e) => { - const curr_target_parent = e.currentTarget.parentElement; - click_counter_2 % 2 == 0 ? - add_link_icon('cross', this.inverse_link_point_position[pointPosition.parent], 'ts-lnk-icn-' + head_data.id + '-2') : - add_link_icon('minus', this.inverse_link_point_position[pointPosition.parent], 'ts-lnk-icn-' + head_data.id + '-2'); - _class.handleCollapseChildren?.(svgNode, head_data.id, translate_y_2); - const rect = curr_target_parent.getBoundingClientRect(); - click_counter_2++; - setTimeout(() => { - click_counter_2 % 2 == 0 && this.center_elem(rect); - }, 0); - click_counter_2 % 2 == 0 ? this.emitEvent('chart_head.expanded', { svgNode, head_data, pointPosition }, false) : - this.emitEvent('chart_head.collapsed', { svgNode, head_data, pointPosition }, false); - }); - add_link_icon('minus', this.inverse_link_point_position[pointPosition.parent], 'ts-lnk-icn-' + head_data.id + '-2'); - } - } - } - get_tree_items_hierarchy(parentId, parent_index, action) { - const hierarchies = this.tree_data.filter(data => data.parentId == parentId); - const set_child_level = parent_index == undefined ? 1 : parent_index + 1; - const level_children_arr = []; - hierarchies.forEach(head => { - level_children_arr.push(head); - if (action != undefined && (action.item_id != undefined && action.item_id == head.id || action.level != undefined && action.level == set_child_level)) { - action.callbackFn(head, set_child_level); - } - const has_childs = this.tree_data.filter(data => data.parentId == head.id).length > 0; - if (has_childs) { - this.get_tree_items_hierarchy(head.id, set_child_level, action); - } - }); - const current_level = this.itemHierarchy.findIndex(item => item.level == set_child_level); - if (current_level == -1) { - this.itemHierarchy.push({ level: set_child_level, items: level_children_arr }); - } - else { - this.itemHierarchy[current_level].items = level_children_arr; - } - return this.itemHierarchy; - } - get_second_ancestor_item(child_id) { - const child_data = this.tree_data.find(data => data.id == child_id); - const get_parent = this.tree_data.find(data => data.id == child_data?.parentId); - const grand_parent_is_root = this.tree_data.find(data => data.id == get_parent?.parentId)?.parentId == undefined; - let second_ancestor = undefined; - if (get_parent?.parentId == undefined) { - second_ancestor = child_data; - } - else if (!grand_parent_is_root) { - second_ancestor = this.get_second_ancestor_item(get_parent?.id); - } - else { - second_ancestor = get_parent; - } - return second_ancestor; - } - getElemRelPosInTree(el_id) { - const find_el = this.tree_data.find(data => data.id == el_id); - const find_all_siblings = this.tree_data.filter(data => data.parentId == find_el.parentId); - return find_all_siblings.findIndex(data => data.id == find_el.id) + 1; - } - set_tmp_tree_data(el_id) { - if (this.display_tree_in_step || (this.tree_data.length > 500 && this.auto_display_tree_in_step)) { - const id = el_id == undefined ? '1' : el_id; - this.tmp_tree_data = this.get_children_down_to_level(id, this.tree_level_step); - if (el_id == undefined) { - this.tmp_tree_data = [this.tree_data[0], ...this.tmp_tree_data]; - } - } - else { - this.tmp_tree_data = this.tree_data; - } - } - getIsParentRootEl(parent_id) { - if (parent_id == undefined) - return false; - return this.tree_data.find(data => data.id == parent_id)?.parentId == undefined; - } - getIsElRootTreeChild(id) { - if (id == undefined) - return false; - return this.tree_data.find(data => data.id == id)?.parentId == undefined; - } - getRootTreeEl() { - return this.tree_data.find(data => data.parentId == undefined); - } - el_has_children(el_id, check_tmp_data = false) { - if (check_tmp_data) { - return this.tmp_tree_data.filter(data => data.parentId == el_id).length > 0; - } - return this.tree_data.filter(data => data.parentId == el_id).length > 0; - } - get_children_down_to_level(el_id, level_limit, current_level = 1) { - let cur_level = current_level; - let children = []; - const cur_children = this.tree_data.filter(tree => tree.parentId == el_id); - let c_levl = []; - if (cur_level < level_limit && cur_children.length > 0) { - c_levl = cur_children.map(child => this.get_children_down_to_level(child.id, level_limit, cur_level + 1)).flat(); - } - children = [...cur_children, ...c_levl]; - return children; - } - data_to_d3_format(parentId, include_stat) { - let parent_el = this.tree_data?.find(data => (parentId == undefined ? data.parentId : data.id) == parentId); - parent_el = { ...parent_el, children: [] }; - const children = this.tree_data.filter(data => data.parentId == parent_el.id); - children.forEach(child => { - include_stat && (child.stat = 1); - if (this.el_has_children(child.id)) { - parent_el.children.push(this.data_to_d3_format(child.id, include_stat)); - } - else { - parent_el.children.push(child); - } - }); - return parent_el; - } - } - - class ColorHandler { - tree_data = []; - color_range = ['#b31212', '#b34712', '#b38d12', '#9ab312', '#2fb312', '#12b362', '#12b3a8', '#1278b3', '#1712b3', '#5712b3', '#8d12b3', '#b3128d', '#b3124a', '#b31212']; - interpolated_color = (t) => ''; - pallet = { - h: 10, - s: 0.5, - l: 0.5, - darker: 0.8, - brighter: 0.8, - bright100: 0.5, - dark100: 0.5, - gray: 50, - gray85: 85 - }; - constructor({ tree_data, color_range, pallet }) { - this.tree_data = tree_data; - (color_range !== undefined && color_range.length > 0) && (this.color_range = color_range); - pallet != undefined && (this.pallet = pallet); - this.interpolateColor(); - } - getColor(index) { - const color_percentage = this.get_color_percentage(index); - const color$1 = this.interpolated_color(color_percentage); - const conv_color = color(color$1); - const to_hsl = hsl$2(conv_color); - to_hsl.h += this.pallet.h; - to_hsl.s += this.pallet.s; - const hsl_bright = hsl$2(conv_color); - hsl_bright.l += this.pallet.l; - const opac_gray80 = gray(this.pallet.gray85); - const colorSet = { - color: color$1, - darker: conv_color?.darker(this.pallet.darker).toString(), - brighter: conv_color?.brighter(this.pallet.brighter).toString(), - bright100: to_hsl.brighter(this.pallet.bright100).toString(), - dark100: to_hsl.darker(this.pallet.dark100).toString(), - bright500: hsl_bright.toString(), - gray: gray(this.pallet.gray).toString(), - gray85: opac_gray80.toString(), - }; - return colorSet; - } - get_app_gray() { - return gray(50).toString(); - } - get_color_percentage(index) { - return (index / this.tree_data.length); - } - interpolateColor() { - this.interpolated_color = rgbBasis(this.color_range); - } - } - - class DefaultTree { - chartHelper; - tree_map_arr = []; - content_wrapper = null; - tsInnerContainer = null; - current_scale = 1; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - this.chartHelper.handleCollapseChildren = this.handleCollapseChildren.bind(this); - setTimeout(() => { - this.organizeUI(); - }, 0); - } - map_children_data_to_head(parentSVGEl, parentId) { - const hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - const childElContainer = this.chartHelper.createDynamicEl(); - hierarchies.forEach(head => { - const head_UI_wrapper = this.chartHelper.createDynamicEl(); - const head_UI = this.chartHelper.makeHead(head); - head_UI_wrapper.appendChild(head_UI?.node()); - const root_el_cls = parentId == undefined ? " st-root-el" : ""; - head_UI_wrapper.className = "ts-head-node-wrapper ts-w-id-" + head.id + root_el_cls; - childElContainer.appendChild(head_UI_wrapper); - parentSVGEl != undefined && this.tree_map_arr.push({ id: head.id, svgNode: parentSVGEl, targetChild: head_UI?.node(), parentId: parentId }); - if (this.chartHelper?.el_has_children(head.id)) { - head_UI_wrapper.append(this.map_children_data_to_head(head_UI, head.id)); - } - }); - childElContainer.className = "ts-head-wrapper child-container"; - if (parentSVGEl === undefined) - this.content_wrapper?.appendChild(childElContainer); - return childElContainer; - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.content_wrapper.className = "ts-head-wrapper"; - this.chartHelper.set_tmp_tree_data(); - this.map_children_data_to_head(); - this.tsInnerContainer.appendChild(this.content_wrapper); - this.drawBranchLinkFresh(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "top"); - }, 0); - } - drawBranchLinkFresh() { - this.chartHelper.rootWrapperContainer?.querySelectorAll('.linker-line').forEach(el => el.remove()); - this.tree_map_arr.forEach(branch => this.drawBranchLink(branch.id, branch.svgNode, branch.targetChild, branch.parentId)); - } - drawBranchLink(id, svgNode, targetChild, parentId) { - const isParentChildrenHidden = this.tsInnerContainer?.querySelector('.ts-w-id-' + parentId)?.getAttribute('data-ts-head-children-hidden'); - if (isParentChildrenHidden === 'true') - return; - const color_set = this.chartHelper?.color_handler.getColor(id); - const elementBounds = targetChild.getBoundingClientRect(); - const svgSourceNodeBounds = svgNode.node().getBoundingClientRect(); - const st_linker_radius = Math.sqrt(Math.PI * this.chartHelper.head_linker_thumb_circle_radius * this.chartHelper.head_linker_thumb_circle_radius) / 2; - const lineStartX = (svgSourceNodeBounds.width / this.current_scale) / 2; - const lineStartY = (svgSourceNodeBounds.height + st_linker_radius) / this.current_scale; - const lineEndX = (elementBounds.x / this.current_scale - svgSourceNodeBounds.x / this.current_scale) + (targetChild.clientWidth / 2); - const lineEndY = (elementBounds.top / this.current_scale) - (svgSourceNodeBounds.top / this.current_scale); - const curveFactory = this.chartHelper?.tree_link_type != undefined ? this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type] : bumpY; - const link$1 = link(curveFactory); - const data = [ - { source: [lineStartX, lineStartY], target: [lineEndX, lineEndY] }, - ]; - svgNode?.append('path') - .data(data) - .attr('d', link$1) - .attr('fill', 'none') - .attr('class', 'linker-line') - .attr('stroke', color_set?.gray) - .attr('stroke-width', 1); - } - handleCollapseChildren(svgNode, id, clicked_pos) { - const nodeAncestor = svgNode.node()?.parentElement; - const nodeChildrenHidden = nodeAncestor?.getAttribute('data-ts-head-children-hidden'); - if (!nodeAncestor?.hasAttribute('data-ts-head-children-hidden') && nodeAncestor.querySelector('.child-container').innerHTML == '') { - this.chartHelper.set_tmp_tree_data(id); - nodeAncestor.querySelector('.child-container').remove(); - const remade_children_obj = this.map_children_data_to_head(svgNode, id); - nodeAncestor?.appendChild(remade_children_obj); - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else if (nodeChildrenHidden == 'true') { - const childrenContainer = nodeAncestor?.querySelector('.child-container'); - childrenContainer.style.visibility = ''; - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'false'); - setTimeout(() => { - this.drawBranchLinkFresh(); - }, 0); - } - else { - const childrenContainer = nodeAncestor?.querySelector('.child-container'); - childrenContainer.style.visibility = 'hidden'; - nodeAncestor?.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'true'); - } - } - removeNodeRecursiveFromTreeMap(node_id) { - const find_node_children = this.tree_map_arr.filter(tree => tree.parentId == node_id); - find_node_children.forEach(child => { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == child.id), 1); - this.tree_map_arr.filter(tree => tree.id == child.id).length > 0 && this.removeNodeRecursiveFromTreeMap(child.id); - }); - } - } - - class VerticalSpiderWalkTree { - content_wrapper = null; - head_child_wrapper_center = null; - head_child_wrapper_1 = null; - head_child_wrapper_2 = null; - tsInnerContainer = null; - chartHelper; - tree_map_arr = []; - current_scale = 1; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - this.chartHelper.handleCollapseChildren = this.handleCollapseChildren.bind(this); - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_1 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_2 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center.className = "ts-vs-wrapper"; - this.head_child_wrapper_1.className = "ts-vs-wrapper"; - this.head_child_wrapper_2.className = "ts-vs-wrapper"; - this.content_wrapper.appendChild(this.head_child_wrapper_1); - this.content_wrapper.appendChild(this.head_child_wrapper_center); - this.content_wrapper.appendChild(this.head_child_wrapper_2); - this.content_wrapper.className = "ts-v-spider-head-wrapper"; - this.chartHelper.set_tmp_tree_data(); - this.map_children_data_to_head(); - this.tsInnerContainer.appendChild(this.content_wrapper); - this.drawBranchLinkFresh(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "center"); - }, 0); - } - map_children_data_to_head(parentSVGEl, parentId, provided_hierarchy) { - let hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - if (!provided_hierarchy) { - hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - } - else { - hierarchies = provided_hierarchy; - } - const childElContainer = this.chartHelper.createDynamicEl(); - const isElParentRootEl = this.chartHelper.getIsParentRootEl(parentId) && parentId != undefined; - hierarchies.forEach(head => { - const head_UI_wrapper = this.chartHelper.createDynamicEl(); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(head.id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - const head_UI = this.chartHelper.makeHead(head, parentId == undefined, { parent: "bottom", children: second_ancestor_rel_pos % 2 == 0 ? "bottom" : 'top' }); - head_UI_wrapper.appendChild(head_UI?.node()); - const root_el_cls = parentId == undefined ? " st-root-el" : ""; - head_UI_wrapper.className = "ts-head-node-wrapper ts-w-id-" + head.id + root_el_cls; - second_ancestor_rel_pos % 2 == 0 && head_UI_wrapper.classList.add("top"); - if (parentSVGEl === undefined) { - this.head_child_wrapper_center?.appendChild(head_UI_wrapper); - } - else if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - this.head_child_wrapper_1?.appendChild(head_UI_wrapper); - } - else { - this.head_child_wrapper_2?.appendChild(head_UI_wrapper); - } - } - else { - childElContainer.appendChild(head_UI_wrapper); - second_ancestor_rel_pos % 2 == 0 && childElContainer.classList.add("top"); - } - parentSVGEl != undefined && this.tree_map_arr.push({ - id: head.id, - svgNode: parentSVGEl, - targetChild: head_UI?.node(), - parentId: parentId, - lineOrigin: second_ancestor_rel_pos % 2 == 0 ? "top" : "bottom" - }); - if (this.chartHelper?.el_has_children(head.id)) { - if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - head_UI_wrapper.prepend(this.map_children_data_to_head(head_UI, head.id)); - } - else { - head_UI_wrapper.append(this.map_children_data_to_head(head_UI, head.id)); - } - } - else { - const map_children = this.map_children_data_to_head(head_UI, head.id); - second_ancestor_rel_pos % 2 == 0 ? head_UI_wrapper.prepend(map_children) : head_UI_wrapper.appendChild(map_children); - } - } - }); - childElContainer.classList.add("child-container"); - return childElContainer; - } - drawBranchLinkFresh() { - this.chartHelper.rootWrapperContainer?.querySelectorAll('.linker-line').forEach(el => el.remove()); - this.tree_map_arr.forEach(branch => this.drawBranchLink(branch.id, branch.svgNode, branch.targetChild, branch.parentId, branch.lineOrigin)); - } - drawBranchLink(id, svgNode, targetChild, parentId, lineOrigin = "bottom") { - const isParentChildrenHidden = this.tsInnerContainer?.querySelector('.ts-w-id-' + parentId)?.getAttribute('data-ts-head-children-hidden'); - const isElParentRootEl = this.chartHelper.getIsParentRootEl(parentId); - if (isParentChildrenHidden === 'true' && !isElParentRootEl) - return; - const color_set = this.chartHelper?.color_handler.getColor(id); - const elementBounds = targetChild.getBoundingClientRect(); - const svgSourceNodeBounds = svgNode.node().getBoundingClientRect(); - const lineStartX = (svgSourceNodeBounds.width / this.current_scale) / 2; - const lineStartY = lineOrigin == "top" ? 0 : svgSourceNodeBounds.height / this.current_scale; - const lineEndX = (elementBounds.x / this.current_scale - svgSourceNodeBounds.x / this.current_scale) + (targetChild.clientWidth / 2); - const lineEndY = lineOrigin == "top" ? ((elementBounds.top + elementBounds.height) / this.current_scale) - (svgSourceNodeBounds.top / this.current_scale) : (elementBounds.top / this.current_scale) - (svgSourceNodeBounds.top / this.current_scale); - const curveFactory = this.chartHelper?.tree_link_type != undefined ? this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type] : bumpY; - const link$1 = link(curveFactory); - const data = [ - { source: [lineStartX, lineStartY], target: [lineEndX, lineEndY] }, - ]; - svgNode?.append('path') - .data(data) - .attr('d', link$1) - .attr('fill', 'none') - .attr('class', 'linker-line linker-' + lineOrigin) - .attr('stroke-width', 1) - .attr('stroke', color_set?.gray) - .attr('style', 'z-index: -1'); - } - handleCollapseChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const isRootTreeEl = this.chartHelper.getIsElRootTreeChild(id); - const nodeChildrenHidden = nodeParent?.getAttribute('data-ts-head-children-hidden'); - const childrenContainer = nodeParent?.querySelector('.child-container'); - if (isRootTreeEl) { - return this.handleCollapseRootElChildren(svgNode, id, clicked_pos); - } - if (!nodeParent?.hasAttribute('data-ts-head-children-hidden') && nodeParent.querySelector('.child-container').innerHTML == '') { - this.chartHelper.set_tmp_tree_data(id); - nodeParent.querySelector('.child-container').remove(); - const remade_children_obj = this.map_children_data_to_head(svgNode, id); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - if (second_ancestor_rel_pos % 2 == 0) { - nodeParent?.prepend(remade_children_obj); - } - else { - nodeParent?.appendChild(remade_children_obj); - } - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else if (nodeChildrenHidden == 'true') { - childrenContainer.style.visibility = 'visible'; - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else { - childrenContainer.style.visibility = 'hidden'; - nodeParent?.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent?.setAttribute('data-ts-head-children-hidden', 'true'); - } - } - removeNodeRecursiveFromTreeMap(node_id, inclusive) { - const find_node_children = this.tree_map_arr.filter(tree => tree.parentId == node_id); - find_node_children.forEach(child => { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == child.id), 1); - this.tree_map_arr.filter(tree => tree.id == child.id).length > 0 && this.removeNodeRecursiveFromTreeMap(child.id); - }); - if (inclusive) { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == node_id), 1); - } - } - handleCollapseRootElChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const nodeTopChildrenHidden = nodeParent?.getAttribute('data-ts-top-head-children-hidden'); - const nodeBottomChildrenHidden = nodeParent?.getAttribute('data-ts-bottom-head-children-hidden'); - if (clicked_pos == 0) { - this.chartHelper.tree_data.filter(data => data.parentId == id && this.chartHelper.getElemRelPosInTree(data.id) % 2 == 0); - } - else { - this.chartHelper.tree_data.filter(data => data.parentId == id && this.chartHelper.getElemRelPosInTree(data.id) % 2 != 0); - } - if (((!nodeTopChildrenHidden || nodeTopChildrenHidden == "false") && clicked_pos == 0) || ((!nodeBottomChildrenHidden || nodeBottomChildrenHidden == "false") && clicked_pos != 0)) { - const section = clicked_pos == 0 ? nodeParent.parentElement.nextElementSibling : nodeParent.parentElement.previousElementSibling; - section.style.visibility = 'hidden'; - nodeParent.querySelector('svg').querySelectorAll('.linker-' + (clicked_pos == 0 ? 'bottom' : 'top')).forEach((node) => node.remove()); - clicked_pos == 0 ? nodeParent?.setAttribute('data-ts-top-head-children-hidden', 'true') : - nodeParent?.setAttribute('data-ts-bottom-head-children-hidden', 'true'); - } - else { - const section = clicked_pos == 0 ? nodeParent.parentElement.nextElementSibling : nodeParent.parentElement.previousElementSibling; - section.style.visibility = ''; - setTimeout(() => { - this.drawBranchLinkFresh(); - const inverse_link_hidden = (clicked_pos == 0 ? nodeParent?.getAttribute('data-ts-bottom-head-children-hidden') : - nodeParent?.getAttribute('data-ts-top-head-children-hidden')) == 'true'; - if (inverse_link_hidden) { - nodeParent.querySelectorAll('.linker-' + (clicked_pos == 0 ? 'top' : 'bottom')).forEach((node) => node.remove()); - } - }, 0); - clicked_pos == 0 ? nodeParent?.setAttribute('data-ts-top-head-children-hidden', 'false') : - nodeParent?.setAttribute('data-ts-bottom-head-children-hidden', 'false'); - } - } - } - - class HorizontalTreeSpider { - chartHelper; - tree_map_arr = []; - content_wrapper = null; - tsInnerContainer = null; - current_scale = 1; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - this.chartHelper.handleCollapseChildren = this.handleCollapseChildren.bind(this); - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.content_wrapper.className = "ts-head-wrapper"; - this.chartHelper.set_tmp_tree_data(); - this.map_children_data_to_head(); - this.tsInnerContainer.appendChild(this.content_wrapper); - this.drawBranchLinkFresh(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "left"); - }, 0); - } - map_children_data_to_head(parentSVGEl, parentId) { - const hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - const childElContainer = this.chartHelper.createDynamicEl(); - hierarchies.forEach(head => { - const head_UI_wrapper = this.chartHelper.createDynamicEl(); - const head_UI_inner = this.chartHelper.createDynamicEl(); - const head_UI = this.chartHelper.makeHead(head, false, { parent: "right", children: "left" }); - head_UI_inner.append(head_UI?.node()); - head_UI_wrapper.appendChild(head_UI_inner); - const root_el_cls = parentId == undefined ? " st-root-el" : ""; - head_UI_wrapper.className = "ts-head-node-wrapper st-single-h ts-w-id-" + head.id + root_el_cls; - childElContainer.appendChild(head_UI_wrapper); - parentSVGEl != undefined && this.tree_map_arr.push({ id: head.id, svgNode: parentSVGEl, targetChild: head_UI?.node(), parentId: parentId }); - if (this.chartHelper?.el_has_children(head.id)) { - head_UI_wrapper.append(this.map_children_data_to_head(head_UI, head.id)); - } - }); - childElContainer.className = "ts-head-wrapper st-single-h-child-container"; - if (parentSVGEl === undefined) - this.content_wrapper?.appendChild(childElContainer); - return childElContainer; - } - drawBranchLinkFresh() { - this.chartHelper.rootWrapperContainer?.querySelectorAll('.linker-line').forEach(el => el.remove()); - this.tree_map_arr.forEach(branch => this.drawBranchLink(branch.id, branch.svgNode, branch.targetChild, branch.parentId)); - } - drawBranchLink(id, svgNode, targetChild, parentId) { - const isParentChildrenHidden = this.tsInnerContainer?.querySelector('.ts-w-id-' + parentId)?.getAttribute('data-ts-head-children-hidden'); - if (isParentChildrenHidden === 'true') - return; - const color_set = this.chartHelper?.color_handler.getColor(id); - const elementBounds = targetChild.getBoundingClientRect(); - const svgSourceNodeBounds = svgNode.node().getBoundingClientRect(); - const lineStartX = (svgSourceNodeBounds.width / this.current_scale); - const lineStartY = (svgSourceNodeBounds.height / this.current_scale) / 2; - const lineEndX = ((elementBounds.x) / this.current_scale) - ((svgSourceNodeBounds.x) / this.current_scale) + 0; - const lineEndY = (((elementBounds.top + (elementBounds.height / 2)) / this.current_scale) - ((svgSourceNodeBounds.top) / this.current_scale)); - const curveFactory = this.chartHelper?.tree_link_type != undefined ? this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type] : bumpX; - const link$1 = link(curveFactory); - const data = [ - { source: [lineStartX, lineStartY], target: [lineEndX, lineEndY] }, - ]; - svgNode?.append('path') - .data(data) - .attr('d', link$1) - .attr('fill', 'none') - .attr('class', 'linker-line') - .attr('stroke-width', 1) - .attr('stroke', color_set?.gray) - .attr('style', 'z-index: -1'); - } - handleCollapseChildren(svgNode, id, clicked_pos) { - const nodeAncestor = svgNode.node()?.parentElement.parentElement; - const nodeChildrenHidden = nodeAncestor?.getAttribute('data-ts-head-children-hidden'); - const childrenContainer = nodeAncestor?.querySelector("[class*='child-container']"); - if (!nodeAncestor?.hasAttribute('data-ts-head-children-hidden') && nodeAncestor.querySelector('.st-single-h-child-container').innerHTML == '') { - this.chartHelper.set_tmp_tree_data(id); - nodeAncestor.querySelector('.st-single-h-child-container').remove(); - const remade_children_obj = this.map_children_data_to_head(svgNode, id); - nodeAncestor?.appendChild(remade_children_obj); - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else if (nodeChildrenHidden == 'true') { - childrenContainer.style.visibility = ''; - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else { - childrenContainer.style.visibility = 'hidden'; - nodeAncestor?.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'true'); - } - } - removeNodeRecursiveFromTreeMap(node_id) { - const find_node_children = this.tree_map_arr.filter(tree => tree.parentId == node_id); - find_node_children.forEach(child => { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == child.id), 1); - this.tree_map_arr.filter(tree => tree.id == child.id).length > 0 && this.removeNodeRecursiveFromTreeMap(child.id); - }); - } - } - - class HorizontalSpiderWalkTree { - content_wrapper = null; - head_child_wrapper_center = null; - head_child_wrapper_1 = null; - head_child_wrapper_2 = null; - tsInnerContainer = null; - chartHelper; - tree_map_arr = []; - current_scale = 1; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - this.chartHelper.handleCollapseChildren = this.handleCollapseChildren.bind(this); - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_1 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_2 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center.className = "st-child-wrapper"; - this.head_child_wrapper_1.className = "st-child-wrapper"; - this.head_child_wrapper_2.className = "st-child-wrapper"; - this.content_wrapper.className = "st-hsw-content-wrapper"; - this.content_wrapper.appendChild(this.head_child_wrapper_1); - this.content_wrapper.appendChild(this.head_child_wrapper_center); - this.content_wrapper.appendChild(this.head_child_wrapper_2); - this.tsInnerContainer?.append(this.content_wrapper); - this.chartHelper.set_tmp_tree_data(); - this.map_children_data_to_head(); - this.drawBranchLinkFresh(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "center"); - }, 0); - } - map_children_data_to_head(parentSVGEl, parentId, provided_hierarchy) { - let hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - if (!provided_hierarchy) { - hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - } - else { - hierarchies = provided_hierarchy; - } - const childElContainer = this.chartHelper.createDynamicEl(); - const isElParentRootEl = this.chartHelper.getIsParentRootEl(parentId) && parentId != undefined; - hierarchies.forEach(head => { - const head_UI_wrapper = this.chartHelper.createDynamicEl(); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(head.id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - const head_UI = this.chartHelper.makeHead(head, parentId == undefined, { parent: "right", children: second_ancestor_rel_pos % 2 == 0 ? "right" : 'left' }); - head_UI_wrapper.appendChild(head_UI?.node()); - const root_el_cls = parentId == undefined ? " st-root-el" : ""; - head_UI_wrapper.className = "ts-head-node-wrapper ts-w-id-" + head.id + root_el_cls; - second_ancestor_rel_pos % 2 == 0 && head_UI_wrapper.classList.add("top"); - if (parentSVGEl === undefined) { - this.head_child_wrapper_center?.appendChild(head_UI_wrapper); - } - else if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - this.head_child_wrapper_1?.appendChild(head_UI_wrapper); - } - else { - this.head_child_wrapper_2?.appendChild(head_UI_wrapper); - } - } - else { - childElContainer.appendChild(head_UI_wrapper); - second_ancestor_rel_pos % 2 == 0 && childElContainer.classList.add("top"); - } - parentSVGEl != undefined && this.tree_map_arr.push({ - id: head.id, - svgNode: parentSVGEl, - targetChild: head_UI?.node(), - parentId: parentId, - lineOrigin: second_ancestor_rel_pos % 2 == 0 ? "right" : "left" - }); - if (this.chartHelper?.el_has_children(head.id)) { - if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - head_UI_wrapper.prepend(this.map_children_data_to_head(head_UI, head.id)); - } - else { - head_UI_wrapper.append(this.map_children_data_to_head(head_UI, head.id)); - } - } - else { - const map_children = this.map_children_data_to_head(head_UI, head.id); - second_ancestor_rel_pos % 2 == 0 ? head_UI_wrapper.prepend(map_children) : head_UI_wrapper.appendChild(map_children); - } - } - }); - childElContainer.classList.add("child-container"); - return childElContainer; - } - drawBranchLinkFresh() { - this.chartHelper.rootWrapperContainer?.querySelectorAll('.linker-line').forEach(el => el.remove()); - this.tree_map_arr.forEach(branch => this.drawBranchLink(branch.id, branch.svgNode, branch.targetChild, branch.parentId, branch.lineOrigin)); - } - drawBranchLink(id, svgNode, targetChild, parentId, lineOrigin = "bottom") { - const isParentChildrenHidden = this.tsInnerContainer?.querySelector('.ts-w-id-' + parentId)?.getAttribute('data-ts-head-children-hidden'); - if (isParentChildrenHidden === 'true') - return; - const color_set = this.chartHelper?.color_handler.getColor(id); - const elementBounds = targetChild.getBoundingClientRect(); - const svgSourceNodeBounds = svgNode.node().getBoundingClientRect(); - const st_linker_radius = Math.sqrt(Math.PI * this.chartHelper.head_linker_thumb_circle_radius * this.chartHelper.head_linker_thumb_circle_radius) / 2; - const lineStartX = lineOrigin == "right" ? (0 - st_linker_radius) : ((svgSourceNodeBounds.width + st_linker_radius) / this.current_scale); - const lineStartY = (svgSourceNodeBounds.height / this.current_scale) / 2; - const lineEndX = ((elementBounds.x + (lineOrigin == "right" ? elementBounds.width : 0)) / this.current_scale) - ((svgSourceNodeBounds.x) / this.current_scale) + 0; - const lineEndY = (((elementBounds.top + (elementBounds.height / 2)) / this.current_scale) - ((svgSourceNodeBounds.top) / this.current_scale)); - const curveFactory = this.chartHelper?.tree_link_type != undefined ? this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type] : bumpX; - const link$1 = link(curveFactory); - const data = [ - { source: [lineStartX, lineStartY], target: [lineEndX, lineEndY] }, - ]; - svgNode?.append('path') - .data(data) - .attr('d', link$1) - .attr('fill', 'none') - .attr('class', 'linker-line linker-' + lineOrigin) - .attr('stroke-width', 1) - .attr('stroke', color_set?.gray) - .attr('style', 'z-index: -1'); - } - handleCollapseChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const isRootTreeEl = this.chartHelper.getIsElRootTreeChild(id); - const nodeChildrenHidden = nodeParent?.getAttribute('data-ts-head-children-hidden'); - if (isRootTreeEl) { - return this.handleCollapseRootElChildren(svgNode, id, clicked_pos); - } - if (!nodeParent?.hasAttribute('data-ts-head-children-hidden') && nodeParent.querySelector('.child-container').innerHTML == '') { - this.chartHelper.set_tmp_tree_data(id); - nodeParent.querySelector('.child-container').remove(); - const remade_children_obj = this.map_children_data_to_head(svgNode, id); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - if (second_ancestor_rel_pos % 2 == 0) { - nodeParent?.prepend(remade_children_obj); - } - else { - nodeParent?.appendChild(remade_children_obj); - } - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - setTimeout(() => { - this.drawBranchLinkFresh(); - }, 0); - } - else if (nodeChildrenHidden == 'true') { - nodeParent.querySelector('.child-container').style.visibility = ''; - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else { - nodeParent?.setAttribute('data-ts-head-children-hidden', 'true'); - nodeParent?.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent.querySelector('.child-container').style.visibility = 'hidden'; - } - } - removeNodeRecursiveFromTreeMap(node_id, inclusive) { - const find_node_children = this.tree_map_arr.filter(tree => tree.parentId == node_id); - find_node_children.forEach(child => { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == child.id), 1); - this.tree_map_arr.filter(tree => tree.id == child.id).length > 0 && this.removeNodeRecursiveFromTreeMap(child.id); - }); - if (inclusive) { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == node_id), 1); - } - } - handleCollapseRootElChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const nodeTopChildrenHidden = nodeParent?.getAttribute('data-ts-top-head-children-hidden'); - const nodeBottomChildrenHidden = nodeParent?.getAttribute('data-ts-bottom-head-children-hidden'); - if (clicked_pos == 0) { - this.chartHelper.tree_data.filter(data => data.parentId == id && this.chartHelper.getElemRelPosInTree(data.id) % 2 == 0); - } - else { - this.chartHelper.tree_data.filter(data => data.parentId == id && this.chartHelper.getElemRelPosInTree(data.id) % 2 != 0); - } - if (((!nodeTopChildrenHidden || nodeTopChildrenHidden == "false") && clicked_pos == 0) || ((!nodeBottomChildrenHidden || nodeBottomChildrenHidden == "false") && clicked_pos != 0)) { - const section = clicked_pos == 0 ? nodeParent.parentElement.previousElementSibling : nodeParent.parentElement.nextElementSibling; - section.style.visibility = 'hidden'; - section.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent.querySelectorAll('.linker-' + (clicked_pos == 0 ? 'right' : 'left')).forEach((node) => node.remove()); - clicked_pos == 0 ? nodeParent?.setAttribute('data-ts-top-head-children-hidden', 'true') : - nodeParent?.setAttribute('data-ts-bottom-head-children-hidden', 'true'); - } - else { - const section = clicked_pos == 0 ? nodeParent.parentElement.previousElementSibling : nodeParent.parentElement.nextElementSibling; - section.style.visibility = 'visible'; - setTimeout(() => { - this.drawBranchLinkFresh(); - const inverse_link_hidden = (clicked_pos == 0 ? nodeParent?.getAttribute('data-ts-bottom-head-children-hidden') : - nodeParent?.getAttribute('data-ts-top-head-children-hidden')) == 'true'; - if (inverse_link_hidden) { - nodeParent.querySelectorAll('.linker-' + (clicked_pos == 0 ? 'left' : 'right')).forEach((node) => node.remove()); - } - }, 0); - clicked_pos == 0 ? nodeParent?.setAttribute('data-ts-top-head-children-hidden', 'false') : - nodeParent?.setAttribute('data-ts-bottom-head-children-hidden', 'false'); - } - } - } - - class CellarTreeSpider { - content_wrapper = null; - head_child_wrapper_center = null; - head_child_wrapper_1 = null; - head_child_wrapper_2 = null; - tsInnerContainer = null; - chartHelper; - tree_map_arr = []; - current_scale = 1; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - this.chartHelper.handleCollapseChildren = this.handleCollapseChildren.bind(this); - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_1 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_2 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center.className = "st-child-wrapper"; - this.head_child_wrapper_1.className = "st-child-wrapper"; - this.head_child_wrapper_2.className = "st-child-wrapper"; - this.content_wrapper.className = "st-cs-content-wrapper"; - this.content_wrapper.appendChild(this.head_child_wrapper_1); - this.content_wrapper.appendChild(this.head_child_wrapper_2); - this.content_wrapper.appendChild(this.head_child_wrapper_center); - this.tsInnerContainer?.append(this.content_wrapper); - this.chartHelper.set_tmp_tree_data(); - this.map_children_data_to_head(); - this.drawBranchLinkFresh(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "bottom"); - }, 0); - } - map_children_data_to_head(parentSVGEl, parentId, provided_hierarchy) { - let hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - if (!provided_hierarchy) { - hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - } - else { - hierarchies = provided_hierarchy; - } - const childElContainer = this.chartHelper.createDynamicEl(); - const isElParentRootEl = this.chartHelper.getIsParentRootEl(parentId) && parentId != undefined; - hierarchies.forEach(head => { - const head_UI_wrapper = this.chartHelper.createDynamicEl(); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(head.id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - const head_UI = this.chartHelper.makeHead(head, false, { parent: "right", children: parentId == undefined ? "bottom" : second_ancestor_rel_pos % 2 == 0 ? "right" : 'left' }); - head_UI_wrapper.appendChild(head_UI?.node()); - const root_el_cls = parentId == undefined ? " st-root-el" : ""; - head_UI_wrapper.className = "ts-head-node-wrapper ts-w-id-" + head.id + root_el_cls; - second_ancestor_rel_pos % 2 == 0 && head_UI_wrapper.classList.add("top"); - if (parentSVGEl === undefined) { - this.head_child_wrapper_center?.appendChild(head_UI_wrapper); - } - else if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - this.head_child_wrapper_1?.appendChild(head_UI_wrapper); - } - else { - this.head_child_wrapper_2?.appendChild(head_UI_wrapper); - } - } - else { - childElContainer.appendChild(head_UI_wrapper); - second_ancestor_rel_pos % 2 == 0 && childElContainer.classList.add("top"); - } - parentSVGEl != undefined && this.tree_map_arr.push({ - id: head.id, - svgNode: parentSVGEl, - targetChild: head_UI?.node(), - parentId: parentId, - lineOrigin: second_ancestor_rel_pos % 2 == 0 ? "right" : "left" - }); - if (this.chartHelper?.el_has_children(head.id)) { - if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - head_UI_wrapper.prepend(this.map_children_data_to_head(head_UI, head.id)); - } - else { - head_UI_wrapper.append(this.map_children_data_to_head(head_UI, head.id)); - } - } - else { - const map_children = this.map_children_data_to_head(head_UI, head.id); - second_ancestor_rel_pos % 2 == 0 ? head_UI_wrapper.prepend(map_children) : head_UI_wrapper.appendChild(map_children); - } - } - }); - childElContainer.classList.add("child-container"); - return childElContainer; - } - drawBranchLinkFresh() { - this.chartHelper.rootWrapperContainer?.querySelectorAll('.linker-line').forEach(el => el.remove()); - this.tree_map_arr.forEach(branch => this.drawBranchLink(branch.id, branch.svgNode, branch.targetChild, branch.parentId, branch.lineOrigin)); - } - drawBranchLink(id, svgNode, targetChild, parentId, lineOrigin = "bottom") { - const isParentChildrenHidden = this.tsInnerContainer?.querySelector('.ts-w-id-' + parentId)?.getAttribute('data-ts-head-children-hidden'); - if (isParentChildrenHidden === 'true') - return; - const color_set = this.chartHelper?.color_handler.getColor(id); - const parentIsRoot = this.chartHelper.getIsParentRootEl(parentId); - const elementBounds = targetChild.getBoundingClientRect(); - const svgSourceNodeBounds = svgNode.node().getBoundingClientRect(); - let lineStartX, lineStartY; - if (parentIsRoot) { - lineStartX = (svgSourceNodeBounds.width / this.current_scale) / 2; - lineStartY = 0; - } - else { - lineStartX = lineOrigin == "right" ? 0 : (svgSourceNodeBounds.width / this.current_scale); - lineStartY = (svgSourceNodeBounds.height / this.current_scale) / 2; - } - const lineEndX = ((elementBounds.x + (lineOrigin == "right" ? elementBounds.width : 0)) / this.current_scale) - ((svgSourceNodeBounds.x) / this.current_scale) + 0; - const lineEndY = (((elementBounds.top + (elementBounds.height / 2)) / this.current_scale) - ((svgSourceNodeBounds.top) / this.current_scale)); - const curveFactory = this.chartHelper?.tree_link_type != undefined ? this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type] : bumpX; - const link$1 = link(curveFactory); - const data = [ - { source: [lineStartX, lineStartY], target: [lineEndX, lineEndY] }, - ]; - svgNode?.append('path') - .data(data) - .attr('d', link$1) - .attr('fill', 'none') - .attr('class', 'linker-line') - .attr('stroke-width', 1) - .attr('stroke', color_set?.gray) - .attr('style', 'z-index: -1'); - } - handleCollapseChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const isRootTreeEl = this.chartHelper.getIsElRootTreeChild(id); - const nodeChildrenHidden = nodeParent?.getAttribute('data-ts-head-children-hidden'); - if (isRootTreeEl) { - return this.handleCollapseRootElChildren(svgNode, id, clicked_pos); - } - if (!nodeParent?.hasAttribute('data-ts-head-children-hidden') && nodeParent.querySelector('.child-container').innerHTML == '') { - this.chartHelper.set_tmp_tree_data(id); - nodeParent.querySelector('.child-container').remove(); - const remade_children_obj = this.map_children_data_to_head(svgNode, id); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - if (second_ancestor_rel_pos % 2 == 0) { - nodeParent?.prepend(remade_children_obj); - } - else { - nodeParent?.appendChild(remade_children_obj); - } - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else if (nodeChildrenHidden == 'true') { - const childrenContainer = nodeParent?.querySelector('.child-container'); - childrenContainer.style.visibility = ''; - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else { - const childrenContainer = nodeParent?.querySelector('.child-container'); - childrenContainer.style.visibility = 'hidden'; - nodeParent?.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent?.setAttribute('data-ts-head-children-hidden', 'true'); - } - } - removeNodeRecursiveFromTreeMap(node_id, inclusive) { - const find_node_children = this.tree_map_arr.filter(tree => tree.parentId == node_id); - find_node_children.forEach(child => { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == child.id), 1); - this.tree_map_arr.filter(tree => tree.id == child.id).length > 0 && this.removeNodeRecursiveFromTreeMap(child.id); - }); - if (inclusive) { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == node_id), 1); - } - } - handleCollapseRootElChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const nodeTopChildrenHidden = nodeParent?.getAttribute('data-ts-head-children-hidden'); - if (!nodeTopChildrenHidden || nodeTopChildrenHidden == "false") { - nodeParent.parentElement.previousElementSibling.style.visibility = 'hidden'; - nodeParent.parentElement.previousElementSibling.previousElementSibling.style.visibility = 'hidden'; - nodeParent.parentElement.previousElementSibling.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent.parentElement.previousElementSibling.previousElementSibling.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent?.setAttribute('data-ts-head-children-hidden', 'true'); - } - else { - nodeParent.parentElement.previousElementSibling.style.visibility = ''; - nodeParent.parentElement.previousElementSibling.previousElementSibling.style.visibility = ''; - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - } - this.drawBranchLinkFresh(); - } - } - - class GoldenRodSpider { - content_wrapper = null; - head_child_wrapper = null; - tsInnerContainer = null; - chartHelper; - current_scale = 1; - nodes_group = undefined; - links_group = undefined; - rotate_deg = 0; - animation_interval = undefined; - start_animation = false; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper.className = "st-child-wrapper"; - this.content_wrapper.className = "st-grs-content-wrapper"; - this.content_wrapper.appendChild(this.head_child_wrapper); - this.tsInnerContainer?.append(this.content_wrapper); - this.map_children_data_to_head(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .root-svg-el > g`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "center"); - }, 0); - } - animate_chat(once = false, anti = false) { - if (once) { - this.rotate_deg += this.chartHelper?.animation_rotation_interval * (anti ? -1 : 1); - this.nodes_group.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - return this.links_group.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - } - this.start_animation = !this.start_animation; - if (this.start_animation) { - this.animation_interval = setInterval(() => { - this.rotate_deg += this.chartHelper?.animation_rotation_interval * (anti ? -1 : 1); - this.nodes_group.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - this.links_group.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - }, this.chartHelper?.animation_rotation_speed); - } - else { - this.animation_interval != undefined && clearInterval(this.animation_interval); - this.animation_interval = undefined; - } - } - map_children_data_to_head() { - const data = this.chartHelper.data_to_d3_format(); - const root = hierarchy(data) - .sort((a, b) => b.height - a.height || a.data.name.localeCompare(b.data.name)); - const radius = 540 * Math.sqrt(this.chartHelper.tree_data.length / 3); - const treeLayout = cluster() - .size([360, radius]) - .separation((a, b) => 50); - treeLayout(root); - const svgNode = create$1('svg'); - svgNode.attr('width', 580); - svgNode.attr('height', 250); - svgNode.attr('style', 'overflow: visible'); - const root_g = svgNode.append('g') - .attr('transform', `translate(${svgNode.attr('width') / 2},${svgNode.attr('height') / 2})`); - root_g.append('g') - .attr('class', 'links'); - root_g.append('g') - .attr('class', 'nodes'); - root.each((node) => { - const chartHead = this.chartHelper?.makeHead(node.data, false, false); - node['head'] = chartHead.node(); - node['head'].removeEventListener('dblclick', this.chartHelper.handleCenterHead); - node['head'].ondblclick = (e) => { - e.stopPropagation(); - e.preventDefault(); - const el_rect = e.currentTarget.querySelector('g').getBoundingClientRect(); - this.chartHelper?.center_elem(el_rect); - }; - node['color_set'] = this.chartHelper?.color_handler.getColor(node.data.id); - }); - // draw nodes - svgNode.select('g.nodes') - .selectAll('svg.node') - .data(root.descendants()) - .enter() - .append((d) => { - if (this.chartHelper?.chart_head_type != 'rounded' && this.chartHelper?.show_chart_head_border) { - d.head.querySelector('rect').style.fill = "white"; - d.head.querySelector('rect').style.strokeWidth = "1"; - } - return d.head; - }) - .classed('node', true) - .select('g') - .attr("transform", (d) => `rotate(${d.x}, 0, 0) translate(0, ${-d.y})`); - svgNode.select('g.nodes') - .selectAll('circle.node') - .data(root.descendants()) - .enter() - .append('circle') - .classed('node', true) - .attr('cx', 0) - .attr('cy', (d) => -d.y) - .attr('r', 5) - .attr("fill", (d) => d.color_set.color) - .attr('stroke', (d) => d.color_set.gray) - .attr('stroke-width', 1) - .attr("transform", (d) => `rotate(${d.x}, 0, 0)`); - const lineGen = lineRadial$1() - .angle((d) => d.x * Math.PI / 180) - .radius((d) => d.y); - // draw links - svgNode.select('g.links') - .selectAll('path.link') - .data(root.links()) - .enter() - .append("path") - .classed('link', true) - .attr('stroke', (d) => d.target.color_set.gray) - .attr('fill', "none") - .attr('stroke-width', 1.5) - .attr("d", (d) => lineGen([d.target, d.source])); - this.nodes_group = svgNode.select('g.nodes'); - this.links_group = svgNode.select('g.links'); - this.head_child_wrapper?.append(svgNode.node()); - } - } - - class RadialSpiderLeg { - content_wrapper = null; - head_child_wrapper = null; - tsInnerContainer = null; - chartHelper; - current_scale = 1; - root_svg = undefined; - rotate_deg = 0; - animation_interval = undefined; - start_animation = false; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper.className = "st-child-wrapper"; - this.content_wrapper.className = "st-grs-content-wrapper"; - this.content_wrapper.appendChild(this.head_child_wrapper); - this.tsInnerContainer?.append(this.content_wrapper); - this.map_children_data_to_head(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "center"); - }, 0); - } - animate_chat(once = false, anti = false) { - if (once) { - this.rotate_deg += this.chartHelper?.animation_rotation_interval * (anti ? -1 : 1); - return this.root_svg.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - } - this.start_animation = !this.start_animation; - if (this.start_animation) { - this.animation_interval = setInterval(() => { - this.rotate_deg += this.chartHelper?.animation_rotation_interval * (anti ? -1 : 1); - this.root_svg.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - }, this.chartHelper?.animation_rotation_speed); - } - else { - this.animation_interval != undefined && clearInterval(this.animation_interval); - this.animation_interval = undefined; - } - } - map_children_data_to_head() { - const data = this.chartHelper.data_to_d3_format(); - const root = hierarchy(data) - .sort((a, b) => b.height - a.height || a.data.name.localeCompare(b.data.name)); - const radius = 540 * Math.sqrt(this.chartHelper.tree_data.length / 3); - const width = radius * 2; - const height = radius * 2; - const marginLeft = 110; - const marginTop = 110; - root.each((node) => { - const chartHead = this.chartHelper?.makeHead(node.data, false, false); - node['head'] = chartHead.node(); - node['color_set'] = this.chartHelper?.color_handler.getColor(node.data.id); - }); - const tree$1 = tree; - const strokeWidth = 1.5; // stroke width for links - const strokeOpacity = 1; // stroke opacity for links - const separation = (a, b) => 100; - // Compute the layout. - tree$1().size([2 * Math.PI, radius]).separation(separation)(root); - const svg = create$1("svg") - .attr("viewBox", [-marginLeft - radius, -marginTop - radius, width, height]) - .attr("width", width) - .attr("height", height) - .attr("style", "background-color: none; max-width: 100%; height: auto; overflow: visible;"); - svg.append("g") - .attr("fill", "none") - .attr("stroke", this.chartHelper?.color_handler.get_app_gray()) - .attr("stroke-opacity", strokeOpacity) - .attr("stroke-width", strokeWidth) - .selectAll("path") - .data(root.links()) - .join("path") - .attr("d", linkRadial() - .angle((d) => d.x) - .radius((d) => d.y)); - const mainNode = svg.append("g") - .selectAll("g") - .data(root.descendants()) - .join("g") - .attr("transform", (d) => `rotate(${d.x * 180 / Math.PI - 90}) translate(${d.y},0)`); - const r = 3; - mainNode.append("circle") - .attr("fill", (d) => d.color_set.color) - .attr("r", r); - mainNode.append((d) => { - if (this.chartHelper?.chart_head_type != 'rounded' && this.chartHelper?.show_chart_head_border) { - d.head.querySelector('rect').style.fill = "white"; - d.head.querySelector('rect').style.strokeWidth = "1"; - } - return d.head; - }); - mainNode.append("title") - .text(d => d.data.name + " - " + d.data.role); - this.root_svg = svg; - this.head_child_wrapper?.append(svg.node()); - } - } - - /** - * SVG icons gotten from https://svgrepo.com - */ - var icons = { - zoomIn: ` `, - zoomOut: ` zoom-out Created with Sketch Beta. `, - resetZoom: ` `, - rotate: ``, - rotate_once: ` `, - rotate_once_anti_clockwise: ` `, - rotate_anticlockwise: `` - }; - - class UITools { - root_ui_element = undefined; - zoomInOut = () => null; - resetZoom = () => null; - animate_chat = () => null; - tree_type = undefined; - animatable_trees = ['goldenRod', 'radialSpiderLeg']; - constructor({ root_ui_element, zoomInOut, resetZoom, animate_chat }) { - this.root_ui_element = root_ui_element; - this.zoomInOut = zoomInOut; - this.resetZoom = resetZoom; - this.animate_chat = animate_chat; - setTimeout(() => { - this.make_tools(); - }, 0); - } - make_tools() { - const toolWrapperEl = new TSElement(); - toolWrapperEl.className = "tools-container"; - this.root_ui_element?.appendChild(toolWrapperEl); - const zoomInIcon = document.createElement('div'); - zoomInIcon.className = "tool-item"; - zoomInIcon.innerHTML = icons.zoomIn; - zoomInIcon.title = "Zoom in"; - zoomInIcon.onclick = (e) => this.zoomInOut(); - const zoomOutIcon = document.createElement('div'); - zoomOutIcon.className = "tool-item"; - zoomOutIcon.innerHTML = icons.zoomOut; - zoomOutIcon.title = "Zoom out"; - zoomOutIcon.onclick = (e) => this.zoomInOut('out'); - const zoomResetIcon = document.createElement('div'); - zoomResetIcon.className = "tool-item"; - zoomResetIcon.innerHTML = icons.resetZoom; - zoomResetIcon.title = "Reset zoom & position"; - zoomResetIcon.onclick = (e) => this.resetZoom(); - const rotateIcon = document.createElement('div'); - rotateIcon.className = "tool-item"; - rotateIcon.innerHTML = icons.rotate; - rotateIcon.title = "Start/Stop Clockwise Rotation"; - const rotateAnticlockwiseIcon = document.createElement('div'); - rotateAnticlockwiseIcon.className = "tool-item"; - rotateAnticlockwiseIcon.innerHTML = icons.rotate_anticlockwise; - rotateAnticlockwiseIcon.title = "Start/Stop Anticlockwise Rotation"; - const rotateOnceIcon = document.createElement('div'); - rotateOnceIcon.className = "tool-item"; - rotateOnceIcon.innerHTML = icons.rotate_once; - rotateOnceIcon.title = "Rotate Clockwise Once"; - const rotateOnceAnticlockwiseIcon = document.createElement('div'); - rotateOnceAnticlockwiseIcon.className = "tool-item"; - rotateOnceAnticlockwiseIcon.innerHTML = icons.rotate_once_anti_clockwise; - rotateOnceAnticlockwiseIcon.title = "Rotate Anticlockwise Once"; - toolWrapperEl.append(zoomInIcon); - toolWrapperEl.append(zoomOutIcon); - toolWrapperEl.append(zoomResetIcon); - if (this.animatable_trees.includes(this.tree_type)) { - toolWrapperEl.append(rotateIcon); - toolWrapperEl.append(rotateAnticlockwiseIcon); - toolWrapperEl.append(rotateOnceIcon); - toolWrapperEl.append(rotateOnceAnticlockwiseIcon); - rotateIcon.onclick = (e) => this.animate_chat(); - rotateAnticlockwiseIcon.onclick = (e) => this.animate_chat(false, true); - rotateOnceIcon.onclick = (e) => this.animate_chat(true); - rotateOnceAnticlockwiseIcon.onclick = (e) => this.animate_chat(true, true); - } - } - } - - class TreeSpider extends EventTarget { - /** - * The library name - */ - libraryName = "TreeSpider"; - targetRootContainer = null; - rootWrapperContainer = null; - tsInnerContainer = null; - rootCanvasEl = null; - chartHelper = {}; - currentChartUI; - zoom_instace; - colorHandler = {}; - tree_default_point_position = ''; - instance_unique_id = ''; - /** - * TreeSpider options - */ - options = { - targetContainer: '', - width: '900px', - height: '500px', - placeEl: 'override', - tree_data: undefined, - color_range: [], - tree_type: 'default', - chart_head_type: 'default', - show_tools: true, - show_chart_head_border: false, - animation_rotation_speed: 10, - animation_rotation_interval: 1, - backgroundPattern: 'default', - backgroundSize: undefined, - customBackground: undefined, - backgroundPosition: undefined, - head_linker_thumb_circle_radius: 8, - linker_thumb_icon_color: 'bright500', - linker_thumb_shape: 'symbolCircle', - head_image_shape: 'symbolCircle', - chart_head_bg: '#ffffff', - auto_set_chart_head_bg: false, - display_tree_in_step: false, - auto_display_tree_in_step: true, - tree_level_step: 2, - pallet: { - h: 10, - s: 0.5, - l: 0.5, - darker: 3, - brighter: 0.8, - bright100: 0.5, - dark100: 0.5, - gray: 50, - gray85: 85 - }, - tree_link_type: undefined, - random_data_length: 200, - // random_data_locale: window.navigator.language, // Suspended - the user's device's locale - autoInitialize: true, - zoom_in_distance: 1.5, - zoom_out_distance: 0.5, - verticalSpace: '120px', - font_link: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap", - font_name: "Lato", - }; - constructor(options) { - super(); - if (options.targetContainer == undefined) { - throw new Error(this.libraryName + ": The target container is required"); - } - if (options.tree_data != undefined) { - this.options.tree_data = options.tree_data; - } - else { - const randData = new RandomDataGenerator({ - length: options.random_data_length || this.options.random_data_length, - }); - this.options.tree_data = randData.generated_data; - } - this.setOptions(options); - this.instance_unique_id = 'tree_spider_' + this.options.targetContainer.replace(/[\W\D]/, '_'); - this.loadFont(); - console.info(this.libraryName + ' ready!'); - this.options.autoInitialize && this.initialize(); - } - /** - * Method to programatically initialize TreeSpider - */ - initialize() { - this.targetRootContainer = document.querySelector(this.options.targetContainer); - if (this.targetRootContainer === null) - throw new Error(this.libraryName + ": target container not found"); - this.targetRootContainer.setAttribute('data-tree-spider-initialized', this.instance_unique_id); - this.createUI(); - setTimeout(() => { - this.emitEvent('library.init', { rootContainer: this.rootWrapperContainer }); - }, 0); - console.info(this.libraryName + ' initialized!'); - } - initialize_root_container() { - this.rootWrapperContainer = new TSRootContainer(); - this.rootWrapperContainer.setAttribute('data-ts-unique-id', this.instance_unique_id); - this.setCSSPropertyVar('--vertical-space-var', this.options.verticalSpace); - this.setCSSPropertyVar('--font-family', this.options.font_name); - this.setCSSPropertyVar('--root-cont-width', this.options.width); - this.setCSSPropertyVar('--root-cont-height', this.options.height); - this.rootWrapperContainer.setAttribute('backgroundPattern', this.options.backgroundPattern); - this.rootWrapperContainer.setAttribute('backgroundSize', this.options.backgroundSize); - this.rootWrapperContainer.setAttribute('customBackground', this.options.customBackground); - this.rootWrapperContainer.setAttribute('backgroundPosition', this.options.backgroundPosition); - } - setCSSPropertyVar(prop, value) { - this.rootWrapperContainer?.style.setProperty(prop, value); - } - loadFont() { - let fontLink, preconnect, crossorgin_preconnect; - if (select(`[href="https://fonts.googleapis.com"]`).node() == null) { - preconnect = create$1('link') - .attr("rel", "preconnect") - .attr("href", "https://fonts.googleapis.com"); - } - if (select(`[href="https://fonts.gstatic.com"]`).node() == null) { - crossorgin_preconnect = create$1('link') - .attr("rel", "preconnect") - .attr("href", "https://fonts.gstatic.com") - .attr("crossOrigin", ""); - } - if (this.options.font_link) { - fontLink = create$1('link') - .attr("href", this.options.font_link) - .attr("rel", "stylesheet"); - } - preconnect != undefined && document.head.appendChild(preconnect.node()); - crossorgin_preconnect != undefined && document.head.appendChild(crossorgin_preconnect.node()); - fontLink != undefined && document.head.appendChild(fontLink.node()); - } - setObjectValue(objectParent, value) { - const setObj = objectParent; - if (Object.keys(setObj).length == 0) - return value; - for (const keyx in setObj) { - if (!Object.keys(value).includes(keyx)) - continue; - if (Object.hasOwnProperty.call(setObj, keyx)) { - if (typeof setObj[keyx] == 'object' && !Array.isArray(setObj[keyx])) { - const xc = this.setObjectValue(setObj[keyx], value[keyx]); - setObj[keyx] = { ...setObj[keyx], ...xc }; - } - else { - setObj[keyx] = value[keyx]; - } - } - } - return setObj; - } - createUI() { - this.initialize_root_container(); - this.chartHelper = new ChartMainHelper(); - this.chartHelper.rootWrapperContainer = this.rootWrapperContainer; - this.chartHelper.app_unique_id = this.instance_unique_id; - this.chartHelper.tree_data = this.options.tree_data; - this.chartHelper.center_elem = this.center_elem.bind(this); - this.chartHelper.chart_head_type = this.options.chart_head_type; - this.chartHelper.animation_rotation_speed = this.options.animation_rotation_speed; - this.chartHelper.animation_rotation_interval = this.options.animation_rotation_interval; - this.chartHelper.head_linker_thumb_circle_radius = this.options.head_linker_thumb_circle_radius; - this.chartHelper.linker_thumb_icon_color = this.options.linker_thumb_icon_color; - this.chartHelper.linker_thumb_shape = this.options.linker_thumb_shape; - this.chartHelper.head_image_shape = this.options.head_image_shape; - this.chartHelper.chart_head_bg = this.options.chart_head_bg; - this.chartHelper.auto_set_chart_head_bg = this.options.auto_set_chart_head_bg; - this.chartHelper.display_tree_in_step = this.options.display_tree_in_step; - this.chartHelper.auto_display_tree_in_step = this.options.auto_display_tree_in_step; - this.chartHelper.tree_level_step = this.options.tree_level_step; - this.chartHelper.tree_link_type = this.options.tree_link_type; - this.chartHelper.emitEvent = this.emitEvent.bind(this); - this.colorHandler = new ColorHandler({ - tree_data: this.options.tree_data, - color_range: this.options.color_range, - pallet: this.options.pallet - }); - this.chartHelper.color_handler = this.colorHandler; - this.placeRootContainer(); - } - zoomInOut(dir = 'in') { - const zoom_level = (dir == 'in' ? this.options.zoom_in_distance : this.options.zoom_out_distance); - this.zoom_instace?.scaleBy(select(`[data-ts-unique-id='${this.instance_unique_id}']`), zoom_level); - } - /** - * The method to reset the zoom to the default zoom state - */ - resetZoom() { - const first_svg_el = select(`[data-ts-unique-id='${this.instance_unique_id}'] .root-svg-el > g`).node().getBoundingClientRect(); - this.center_elem(first_svg_el, this.tree_default_point_position); - } - placeRootContainer() { - this.tsInnerContainer = this.chartHelper.createDynamicEl(); - this.tsInnerContainer.className = "ts-inner-container"; - if (this.options.tree_data?.length == 0) { - const empty_content_container = new TSElement(); - empty_content_container.innerText = "No data provided!"; - this.tsInnerContainer.appendChild(empty_content_container); - } - this.rootWrapperContainer?.appendChild(this.tsInnerContainer); - if (this.options.placeEl == 'start') { - this.targetRootContainer?.prepend(this.rootWrapperContainer); - } - else if (this.options.placeEl == 'end') { - this.targetRootContainer?.append(this.rootWrapperContainer); - } - else if (typeof this.options.placeEl === 'object' && Object.keys(this.options.placeEl).length > 0) { - this.targetRootContainer?.insertBefore(this.rootWrapperContainer, this.targetRootContainer.querySelector(this.options.placeEl.beforeEl)); - } - else { - this.targetRootContainer.innerHTML = ''; - this.targetRootContainer.appendChild(this.rootWrapperContainer); - } - this.bindPanning(); - if (this.options.tree_type == 'default') { - this.currentChartUI = new DefaultTree({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'vSpiderWalk') { - this.currentChartUI = new VerticalSpiderWalkTree({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'hSpider') { - this.currentChartUI = new HorizontalTreeSpider({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'hSpiderWalk') { - this.currentChartUI = new HorizontalSpiderWalkTree({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'cellar') { - this.currentChartUI = new CellarTreeSpider({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'goldenRod') { - this.currentChartUI = new GoldenRodSpider({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'radialSpiderLeg') { - this.currentChartUI = new RadialSpiderLeg({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else { - throw new Error('Not implemented and you are welcome to implement it :)'); - } - if (this.options.tree_data.length > 0 && this.options.show_tools) { - const uitool = new UITools({ - root_ui_element: this.rootWrapperContainer, - zoomInOut: this.zoomInOut.bind(this), - resetZoom: this.resetZoom.bind(this), - animate_chat: this.currentChartUI?.animate_chat?.bind(this.currentChartUI) - }); - uitool.tree_type = this.options.tree_type; - } - } - bindPanning() { - const root_cont_rect = this.rootWrapperContainer?.getBoundingClientRect(); - const zoomFilter = (event) => { - event.preventDefault(); - return (!event.ctrlKey || event.type === 'wheel') && !event.button; - }; - const root_container_el = select(`[data-ts-unique-id='${this.instance_unique_id}']`); - const zoomed = (e) => { - const emitedEvent = this.emitEvent('zooming', { e }); - if (!emitedEvent) - return; - this.tsInnerContainer.style.transform = `translate(${e.transform.x}px, ${e.transform.y}px) scale(${e.transform.k})`; - this.rootWrapperContainer.style.setProperty('--ts-root-container-cursor', 'grabbing'); - this.currentChartUI.current_scale = e.transform.k; - }; - this.zoom_instace = zoom() - .filter(zoomFilter) - .extent([[0, 0], [root_cont_rect.width, root_cont_rect.height]]) - .on("zoom", zoomed) - .on('end', (e) => { - this.rootWrapperContainer.style.setProperty('--ts-root-container-cursor', 'grab'); - }); - root_container_el.call(this.zoom_instace).on("dblclick.zoom", (e) => null); - } - center_elem(rect, position = 'center') { - const root_container_el = select(`[data-ts-unique-id='${this.instance_unique_id}']`); - this.tree_default_point_position == '' && (this.tree_default_point_position = position); - const root_cont_rect = root_container_el.node()?.getBoundingClientRect(); - const inner_cont_rect = this.tsInnerContainer?.getBoundingClientRect(); - const rel_posX = ((rect.left - (inner_cont_rect.left)) / this.currentChartUI.current_scale); - const rel_posY = ((rect.top - (inner_cont_rect.top)) / this.currentChartUI.current_scale); - const offsetMoveX = (root_cont_rect.width / 2) - ((rect.width / 2) / this.currentChartUI.current_scale); - const offsetMoveY = (root_cont_rect.height / 2) - (rect.height / 2) / this.currentChartUI.current_scale; - let moveX = 0; - let moveY = 0; - if (position == 'center') { - moveX = rel_posX - offsetMoveX; - moveY = rel_posY - offsetMoveY; - } - else if (position == 'top') { - moveX = rel_posX - offsetMoveX; - moveY = rel_posY - 10; - } - else if (position == 'bottom') { - moveX = rel_posX - offsetMoveX; - const el_chunk_sizes_y = (root_cont_rect.height / 2) - (rect.height / 2); - moveY = (rel_posY - (offsetMoveY + el_chunk_sizes_y)) + 10; - } - else if (position == 'left') { - moveX = rel_posX - 10; - moveY = rel_posY - offsetMoveY; - } - else if (position == 'right') { - const el_chunk_sizes_x = (root_cont_rect.width / 2) - (rect.width / 2); - moveX = (rel_posX - (offsetMoveX + el_chunk_sizes_x)) + 10; - moveY = rel_posY - offsetMoveY; - } - root_container_el.transition().duration(2500).call(this.zoom_instace?.transform, identity.translate(-moveX, -moveY)); - } - emitEvent(eventName, data, cancelable = true) { - const customEv = new CustomEvent(eventName, { detail: data, bubbles: true, cancelable }); - return this.dispatchEvent(customEv); - } - /** - * @public @method updateChartHeadBg - Method for programmatically updating all chat head's background color - * @param color - The color value to set the chart heads to, you can pass any CSS color values to it - */ - updateChartHeadBg(color) { - if (this.options.tree_type == 'goldenRod' || this.options.tree_type == 'radialSpiderLeg') { - this.rootWrapperContainer?.querySelectorAll('.main-svg-el').forEach(el => el.querySelector('rect').style.fill = color); - this.addEventListener('chart_head.expanded', () => this.rootWrapperContainer?.querySelectorAll('.main-svg-el').forEach(el => el.querySelector('rect').style.fill = color)); - } - else { - this.rootWrapperContainer?.querySelectorAll('.main-svg-el').forEach(el => el.style.backgroundColor = color); - this.addEventListener('chart_head.expanded', () => this.rootWrapperContainer?.querySelectorAll('.main-svg-el').forEach(el => el.style.backgroundColor = color)); - } - } - /** - * The short form for addEventListener - * @param eventName - The event you want to subscribe to - * @param callbackFn - The callback function - */ - on(eventName, callbackFn) { - this.addEventListener(eventName, callbackFn); - } - /** - * The method to programatically update parameters - * @param options_to_set - The parameter to update - */ - setOptions(options_to_set) { - this.setObjectValue(this.options, options_to_set); - } - /** - * The method for programatically zooming in and out - * @param dir - The direction of the zoom, in or out - */ - zoom(dir) { - this.zoomInOut(dir); - } - /** - * The method to start rotating the chart clockwisely - */ - startStopRotateCW() { - // once=false, anti=false - this.currentChartUI?.animate_chat(); - } - /** - * The method to start rotating the chart anti-clockwisely - */ - startStopRotateACW() { - // once=false, anti=false - this.currentChartUI?.animate_chat(false, true); - } - /** - * The method to rotate the chart once clockwisely - */ - rotateOnceCW() { - // once=false, anti=false - this.currentChartUI?.animate_chat(true); - } - /** - * The method to rotate the chart once clockwisely - */ - rotateOnceACW() { - // once=false, anti=false - this.currentChartUI?.animate_chat(true, true); - } - } - - return TreeSpider; - -})(); diff --git a/dist/browser/treeSpider.bundle.min.js b/dist/browser/treeSpider.bundle.min.js deleted file mode 100644 index fe81e85..0000000 --- a/dist/browser/treeSpider.bundle.min.js +++ /dev/null @@ -1 +0,0 @@ -var TreeSpider=function(){"use strict";var e={flux:'\n \n \n \n \n \n \n\n ',quad:'',blurry:'\n ',chaos:'',spiral:'',flurry:'',whirling:'',replicate:'\n \n \n \n \n \n ',scribble:'',squiggly:'',gyrate:'',leaves:'',reflection:'',spot:'\n \n \n \n '};function t(e,t){return null==e||null==t?NaN:et?1:e>=t?0:NaN}function r(e,t){return null==e||null==t?NaN:te?1:t>=e?0:NaN}function a(e){let a,n,o;function c(e,t,r=0,i=e.length){if(r>>1;n(e[a],t)<0?r=a+1:i=a}while(rt(e(r),a),o=(t,r)=>e(t)-r):(a=e===t||e===r?e:i,n=e,o=e),{left:c,center:function(e,t,r=0,a=e.length){const i=c(e,t,r,a-1);return i>r&&o(e[i-1],t)>-o(e[i],t)?i-1:i},right:function(e,t,r=0,i=e.length){if(r>>1;n(e[a],t)<=0?r=a+1:i=a}while(r{t(e,r,(a<<=2)+0,(i<<=2)+0,n<<=2),t(e,r,a+1,i+1,n),t(e,r,a+2,i+2,n),t(e,r,a+3,i+3,n)}}));function d(e){return function(t,r,a=r){if(!((r=+r)>=0))throw new RangeError("invalid rx");if(!((a=+a)>=0))throw new RangeError("invalid ry");let{data:i,width:n,height:o}=t;if(!((n=Math.floor(n))>=0))throw new RangeError("invalid width");if(!((o=Math.floor(void 0!==o?o:i.length/n))>=0))throw new RangeError("invalid height");if(!n||!o||!r&&!a)return t;const c=r&&e(r),l=a&&e(a),s=i.slice();return c&&l?(p(c,s,i,n,o),p(c,i,s,n,o),p(c,s,i,n,o),y(l,i,s,n,o),y(l,s,i,n,o),y(l,i,s,n,o)):c?(p(c,i,s,n,o),p(c,s,i,n,o),p(c,i,s,n,o)):l&&(y(l,i,s,n,o),y(l,s,i,n,o),y(l,i,s,n,o)),t}}function p(e,t,r,a,i){for(let n=0,o=a*i;n{if(!((n-=o)>=i))return;let c=e*a[i];const l=o*e;for(let e=i,t=i+l;e{if(!((o-=c)>=n))return;let l=t*i[n];const s=c*t,u=s+c;for(let e=n,t=n+s;e=t&&++r;else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(i=+i)>=i&&++r}return r}function g(e){return 0|e.length}function b(e){return!(e>0)}function v(e){return"object"!=typeof e||"length"in e?e:Array.from(e)}function x(e,t){let r,a=0,i=0,n=0;if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(r=t-i,i+=r/++a,n+=r*(t-i));else{let o=-1;for(let c of e)null!=(c=t(c,++o,e))&&(c=+c)>=c&&(r=c-i,i+=r/++a,n+=r*(c-i))}if(a>1)return n/(a-1)}function k(e,t){const r=x(e,t);return r?Math.sqrt(r):r}function w(e,t){let r,a;if(void 0===t)for(const t of e)null!=t&&(void 0===r?t>=t&&(r=a=t):(r>t&&(r=t),a=n&&(r=a=n):(r>n&&(r=n),a0){for(n=e[--i];i>0&&(t=n,r=e[--i],n=t+r,a=r-(n-t),!a););i>0&&(a<0&&e[i-1]<0||a>0&&e[i-1]>0)&&(r=2*a,t=n+r,r==t-n&&(n=t))}return n}}class _ extends Map{constructor(e,t=B){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const[t,r]of e)this.set(t,r)}get(e){return super.get(A(this,e))}has(e){return super.has(A(this,e))}set(e,t){return super.set(M(this,e),t)}delete(e){return super.delete(T(this,e))}}class S extends Set{constructor(e,t=B){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const t of e)this.add(t)}has(e){return super.has(A(this,e))}add(e){return super.add(M(this,e))}delete(e){return super.delete(T(this,e))}}function A({_intern:e,_key:t},r){const a=t(r);return e.has(a)?e.get(a):r}function M({_intern:e,_key:t},r){const a=t(r);return e.has(a)?e.get(a):(e.set(a,r),r)}function T({_intern:e,_key:t},r){const a=t(r);return e.has(a)&&(r=e.get(a),e.delete(a)),r}function B(e){return null!==e&&"object"==typeof e?e.valueOf():e}function L(e){return e}function E(e,...t){return G(e,L,L,t)}function R(e,...t){return G(e,Array.from,L,t)}function H(e,t){for(let r=1,a=t.length;re.pop().map((([t,r])=>[...e,t,r]))));return e}function D(e,t,...r){return G(e,L,t,r)}function P(e,t,...r){return G(e,Array.from,t,r)}function N(e){if(1!==e.length)throw new Error("duplicate key");return e[0]}function G(e,t,r,a){return function e(i,n){if(n>=a.length)return r(i);const o=new _,c=a[n++];let l=-1;for(const e of i){const t=c(e,++l,i),r=o.get(t);r?r.push(e):o.set(t,[e])}for(const[t,r]of o)o.set(t,e(r,n));return t(o)}(e,0)}function I(e,t){return Array.from(t,(t=>e[t]))}function W(e,...t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");e=Array.from(e);let[r]=t;if(r&&2!==r.length||t.length>1){const a=Uint32Array.from(e,((e,t)=>t));return t.length>1?(t=t.map((t=>e.map(t))),a.sort(((e,r)=>{for(const a of t){const t=z(a[e],a[r]);if(t)return t}}))):(r=e.map(r),a.sort(((e,t)=>z(r[e],r[t])))),I(e,a)}return e.sort(F(r))}function F(e=t){if(e===t)return z;if("function"!=typeof e)throw new TypeError("compare is not a function");return(t,r)=>{const a=e(t,r);return a||0===a?a:(0===e(r,r))-(0===e(t,t))}}function z(e,t){return(null==e||!(e>=e))-(null==t||!(t>=t))||(et?1:0)}var O=Array.prototype.slice;function K(e){return()=>e}const J=Math.sqrt(50),V=Math.sqrt(10),j=Math.sqrt(2);function Y(e,t,r){const a=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(a)),n=a/Math.pow(10,i),o=n>=J?10:n>=V?5:n>=j?2:1;let c,l,s;return i<0?(s=Math.pow(10,-i)/o,c=Math.round(e*s),l=Math.round(t*s),c/st&&--l,s=-s):(s=Math.pow(10,i)*o,c=Math.round(e/s),l=Math.round(t/s),c*st&&--l),l0))return[];if((e=+e)===(t=+t))return[e];const a=t=i))return[];const c=n-i+1,l=new Array(c);if(a)if(o<0)for(let e=0;e0?(e=Math.floor(e/i)*i,t=Math.ceil(t/i)*i):i<0&&(e=Math.ceil(e*i)/i,t=Math.floor(t*i)/i),a=i}}function Q(e){return Math.max(1,Math.ceil(Math.log(m(e))/Math.LN2)+1)}function X(){var e=L,t=w,r=Q;function a(a){Array.isArray(a)||(a=Array.from(a));var i,n,o,l=a.length,s=new Array(l);for(i=0;i=d)if(e>=d&&t===w){const e=U(h,d,r);isFinite(e)&&(e>0?d=(Math.floor(d/e)+1)*e:e<0&&(d=(Math.ceil(d*-e)+1)/-e))}else p.pop()}for(var y=p.length,f=0,m=y;p[f]<=h;)++f;for(;p[m-1]>d;)--m;(f||m0?p[i-1]:h,g.x1=i0)for(i=0;i=t)&&(r=t);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(r=i)&&(r=i)}return r}function te(e,t){let r,a=-1,i=-1;if(void 0===t)for(const t of e)++i,null!=t&&(r=t)&&(r=t,a=i);else for(let n of e)null!=(n=t(n,++i,e))&&(r=n)&&(r=n,a=i);return a}function re(e,t){let r;if(void 0===t)for(const t of e)null!=t&&(r>t||void 0===r&&t>=t)&&(r=t);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(r>i||void 0===r&&i>=i)&&(r=i)}return r}function ae(e,t){let r,a=-1,i=-1;if(void 0===t)for(const t of e)++i,null!=t&&(r>t||void 0===r&&t>=t)&&(r=t,a=i);else for(let n of e)null!=(n=t(n,++i,e))&&(r>n||void 0===r&&n>=n)&&(r=n,a=i);return a}function ie(e,t,r=0,a=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),a=Math.floor(Math.min(e.length-1,a)),!(r<=t&&t<=a))return e;for(i=void 0===i?z:F(i);a>r;){if(a-r>600){const n=a-r+1,o=t-r+1,c=Math.log(n),l=.5*Math.exp(2*c/3),s=.5*Math.sqrt(c*l*(n-l)/n)*(o-n/2<0?-1:1);ie(e,t,Math.max(r,Math.floor(t-o*l/n+s)),Math.min(a,Math.floor(t+(n-o)*l/n+s)),i)}const n=e[t];let o=r,c=a;for(ne(e,r,t),i(e[a],n)>0&&ne(e,r,a);o0;)--c}0===i(e[r],n)?ne(e,r,c):(++c,ne(e,c,a)),c<=t&&(r=c+1),t<=c&&(a=c-1)}return e}function ne(e,t,r){const a=e[t];e[t]=e[r],e[r]=a}function oe(e,r=t){let a,i=!1;if(1===r.length){let n;for(const o of e){const e=r(o);(i?t(e,n)>0:0===t(e,e))&&(a=o,n=e,i=!0)}}else for(const t of e)(i?r(t,a)>0:0===r(t,t))&&(a=t,i=!0);return a}function ce(e,t,r){if(e=Float64Array.from(function*(e,t){if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(yield t);else{let r=-1;for(let a of e)null!=(a=t(a,++r,e))&&(a=+a)>=a&&(yield a)}}(e,r)),(a=e.length)&&!isNaN(t=+t)){if(t<=0||a<2)return re(e);if(t>=1)return ee(e);var a,i=(a-1)*t,n=Math.floor(i),o=ee(ie(e,n).subarray(0,n+1));return o+(re(e.subarray(n+1))-o)*(i-n)}}function le(e,t,r=n){if((a=e.length)&&!isNaN(t=+t)){if(t<=0||a<2)return+r(e[0],0,e);if(t>=1)return+r(e[a-1],a-1,e);var a,i=(a-1)*t,o=Math.floor(i),c=+r(e[o],o,e);return c+(+r(e[o+1],o+1,e)-c)*(i-o)}}function se(e,t,r=n){if(!isNaN(t=+t)){if(a=Float64Array.from(e,((t,a)=>n(r(e[a],a,e)))),t<=0)return ae(a);if(t>=1)return te(a);var a,i=Uint32Array.from(e,((e,t)=>t)),o=a.length-1,c=Math.floor(o*t);return ie(i,c,0,o,((e,t)=>z(a[e],a[t]))),(c=oe(i.subarray(0,c+1),(e=>a[e])))>=0?c:-1}}function ue(e){return Array.from(function*(e){for(const t of e)yield*t}(e))}function he(e,t){return[e,t]}function de(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var a=-1,i=0|Math.max(0,Math.ceil((t-e)/r)),n=new Array(i);++a+e(t)}function Ae(e,t){return t=Math.max(0,e.bandwidth()-2*t)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function Me(){return!this.__axis}function Te(e,t){var r=[],a=null,i=null,n=6,o=6,c=3,l="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,s=1===e||4===e?-1:1,u=4===e||2===e?"x":"y",h=1===e||3===e?Ce:_e;function d(d){var p=null==a?t.ticks?t.ticks.apply(t,r):t.domain():a,y=null==i?t.tickFormat?t.tickFormat.apply(t,r):ke:i,f=Math.max(n,0)+c,m=t.range(),g=+m[0]+l,b=+m[m.length-1]+l,v=(t.bandwidth?Ae:Se)(t.copy(),l),x=d.selection?d.selection():d,k=x.selectAll(".domain").data([null]),w=x.selectAll(".tick").data(p,t).order(),C=w.exit(),_=w.enter().append("g").attr("class","tick"),S=w.select("line"),A=w.select("text");k=k.merge(k.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(_),S=S.merge(_.append("line").attr("stroke","currentColor").attr(u+"2",s*n)),A=A.merge(_.append("text").attr("fill","currentColor").attr(u,s*f).attr("dy",1===e?"0em":3===e?"0.71em":"0.32em")),d!==x&&(k=k.transition(d),w=w.transition(d),S=S.transition(d),A=A.transition(d),C=C.transition(d).attr("opacity",we).attr("transform",(function(e){return isFinite(e=v(e))?h(e+l):this.getAttribute("transform")})),_.attr("opacity",we).attr("transform",(function(e){var t=this.parentNode.__axis;return h((t&&isFinite(t=t(e))?t:v(e))+l)}))),C.remove(),k.attr("d",4===e||2===e?o?"M"+s*o+","+g+"H"+l+"V"+b+"H"+s*o:"M"+l+","+g+"V"+b:o?"M"+g+","+s*o+"V"+l+"H"+b+"V"+s*o:"M"+g+","+l+"H"+b),w.attr("opacity",1).attr("transform",(function(e){return h(v(e)+l)})),S.attr(u+"2",s*n),A.attr(u,s*f).text(y),x.filter(Me).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===e?"start":4===e?"end":"middle"),x.each((function(){this.__axis=v}))}return d.scale=function(e){return arguments.length?(t=e,d):t},d.ticks=function(){return r=Array.from(arguments),d},d.tickArguments=function(e){return arguments.length?(r=null==e?[]:Array.from(e),d):r.slice()},d.tickValues=function(e){return arguments.length?(a=null==e?null:Array.from(e),d):a&&a.slice()},d.tickFormat=function(e){return arguments.length?(i=e,d):i},d.tickSize=function(e){return arguments.length?(n=o=+e,d):n},d.tickSizeInner=function(e){return arguments.length?(n=+e,d):n},d.tickSizeOuter=function(e){return arguments.length?(o=+e,d):o},d.tickPadding=function(e){return arguments.length?(c=+e,d):c},d.offset=function(e){return arguments.length?(l=+e,d):l},d}var Be={value:()=>{}};function Le(){for(var e,t=0,r=arguments.length,a={};t=0&&(t=e.slice(r+1),e=e.slice(0,r)),e&&!a.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:t}}))),o=-1,c=n.length;if(!(arguments.length<2)){if(null!=t&&"function"!=typeof t)throw new Error("invalid callback: "+t);for(;++o0)for(var r,a,i=new Array(r),n=0;n=0&&"xmlns"!==(t=e.slice(0,r))&&(e=e.slice(r+1)),Pe.hasOwnProperty(t)?{space:Pe[t],local:e}:e}function Ge(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===De&&t.documentElement.namespaceURI===De?t.createElement(e):t.createElementNS(r,e)}}function Ie(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function We(e){var t=Ne(e);return(t.local?Ie:Ge)(t)}function Fe(){}function ze(e){return null==e?Fe:function(){return this.querySelector(e)}}function Oe(e){return null==e?[]:Array.isArray(e)?e:Array.from(e)}function Ke(){return[]}function Je(e){return null==e?Ke:function(){return this.querySelectorAll(e)}}function Ve(e){return function(){return this.matches(e)}}function je(e){return function(t){return t.matches(e)}}var Ye=Array.prototype.find;function $e(){return this.firstElementChild}var Ue=Array.prototype.filter;function qe(){return Array.from(this.children)}function Ze(e){return new Array(e.length)}function Qe(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function Xe(e,t,r,a,i,n){for(var o,c=0,l=t.length,s=n.length;ct?1:e>=t?0:NaN}function it(e){return function(){this.removeAttribute(e)}}function nt(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ot(e,t){return function(){this.setAttribute(e,t)}}function ct(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function lt(e,t){return function(){var r=t.apply(this,arguments);null==r?this.removeAttribute(e):this.setAttribute(e,r)}}function st(e,t){return function(){var r=t.apply(this,arguments);null==r?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function ut(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function ht(e){return function(){this.style.removeProperty(e)}}function dt(e,t,r){return function(){this.style.setProperty(e,t,r)}}function pt(e,t,r){return function(){var a=t.apply(this,arguments);null==a?this.style.removeProperty(e):this.style.setProperty(e,a,r)}}function yt(e,t){return e.style.getPropertyValue(t)||ut(e).getComputedStyle(e,null).getPropertyValue(t)}function ft(e){return function(){delete this[e]}}function mt(e,t){return function(){this[e]=t}}function gt(e,t){return function(){var r=t.apply(this,arguments);null==r?delete this[e]:this[e]=r}}function bt(e){return e.trim().split(/^|\s+/)}function vt(e){return e.classList||new xt(e)}function xt(e){this._node=e,this._names=bt(e.getAttribute("class")||"")}function kt(e,t){for(var r=vt(e),a=-1,i=t.length;++a=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var Kt=[null];function Jt(e,t){this._groups=e,this._parents=t}function Vt(){return new Jt([[document.documentElement]],Kt)}function jt(e){return"string"==typeof e?new Jt([[document.querySelector(e)]],[document.documentElement]):new Jt([[e]],Kt)}function Yt(e){return jt(We(e).call(document.documentElement))}Jt.prototype=Vt.prototype={constructor:Jt,select:function(e){"function"!=typeof e&&(e=ze(e));for(var t=this._groups,r=t.length,a=new Array(r),i=0;i=x&&(x=v+1);!(b=m[x])&&++x=0;)(a=i[n])&&(o&&4^a.compareDocumentPosition(o)&&o.parentNode.insertBefore(a,o),o=a);return this},sort:function(e){function t(t,r){return t&&r?e(t.__data__,r.__data__):!t-!r}e||(e=at);for(var r=this._groups,a=r.length,i=new Array(a),n=0;n1?this.each((null==t?ht:"function"==typeof t?pt:dt)(e,t,null==r?"":r)):yt(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?ft:"function"==typeof t?gt:mt)(e,t)):this.node()[e]},classed:function(e,t){var r=bt(e+"");if(arguments.length<2){for(var a=vt(this.node()),i=-1,n=r.length;++i=0&&(t=e.slice(r+1),e=e.slice(0,r)),{type:e,name:t}}))}(e+""),o=n.length;if(!(arguments.length<2)){for(c=t?Wt:It,a=0;a()=>e;function or(e,{sourceEvent:t,subject:r,target:a,identifier:i,active:n,x:o,y:c,dx:l,dy:s,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:a,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:n,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:c,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:s,enumerable:!0,configurable:!0},_:{value:u}})}function cr(e){return!e.ctrlKey&&!e.button}function lr(){return this.parentNode}function sr(e,t){return null==t?{x:e.x,y:e.y}:t}function ur(){return navigator.maxTouchPoints||"ontouchstart"in this}function hr(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function dr(e,t){var r=Object.create(e.prototype);for(var a in t)r[a]=t[a];return r}function pr(){}or.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};var yr=.7,fr=1/yr,mr="\\s*([+-]?\\d+)\\s*",gr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",br="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",vr=/^#([0-9a-f]{3,8})$/,xr=new RegExp(`^rgb\\(${mr},${mr},${mr}\\)$`),kr=new RegExp(`^rgb\\(${br},${br},${br}\\)$`),wr=new RegExp(`^rgba\\(${mr},${mr},${mr},${gr}\\)$`),Cr=new RegExp(`^rgba\\(${br},${br},${br},${gr}\\)$`),_r=new RegExp(`^hsl\\(${gr},${br},${br}\\)$`),Sr=new RegExp(`^hsla\\(${gr},${br},${br},${gr}\\)$`),Ar={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Mr(){return this.rgb().formatHex()}function Tr(){return this.rgb().formatRgb()}function Br(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=vr.exec(e))?(r=t[1].length,t=parseInt(t[1],16),6===r?Lr(t):3===r?new Dr(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?Er(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?Er(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=xr.exec(e))?new Dr(t[1],t[2],t[3],1):(t=kr.exec(e))?new Dr(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=wr.exec(e))?Er(t[1],t[2],t[3],t[4]):(t=Cr.exec(e))?Er(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=_r.exec(e))?Fr(t[1],t[2]/100,t[3]/100,1):(t=Sr.exec(e))?Fr(t[1],t[2]/100,t[3]/100,t[4]):Ar.hasOwnProperty(e)?Lr(Ar[e]):"transparent"===e?new Dr(NaN,NaN,NaN,0):null}function Lr(e){return new Dr(e>>16&255,e>>8&255,255&e,1)}function Er(e,t,r,a){return a<=0&&(e=t=r=NaN),new Dr(e,t,r,a)}function Rr(e){return e instanceof pr||(e=Br(e)),e?new Dr((e=e.rgb()).r,e.g,e.b,e.opacity):new Dr}function Hr(e,t,r,a){return 1===arguments.length?Rr(e):new Dr(e,t,r,null==a?1:a)}function Dr(e,t,r,a){this.r=+e,this.g=+t,this.b=+r,this.opacity=+a}function Pr(){return`#${Wr(this.r)}${Wr(this.g)}${Wr(this.b)}`}function Nr(){const e=Gr(this.opacity);return`${1===e?"rgb(":"rgba("}${Ir(this.r)}, ${Ir(this.g)}, ${Ir(this.b)}${1===e?")":`, ${e})`}`}function Gr(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ir(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Wr(e){return((e=Ir(e))<16?"0":"")+e.toString(16)}function Fr(e,t,r,a){return a<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Kr(e,t,r,a)}function zr(e){if(e instanceof Kr)return new Kr(e.h,e.s,e.l,e.opacity);if(e instanceof pr||(e=Br(e)),!e)return new Kr;if(e instanceof Kr)return e;var t=(e=e.rgb()).r/255,r=e.g/255,a=e.b/255,i=Math.min(t,r,a),n=Math.max(t,r,a),o=NaN,c=n-i,l=(n+i)/2;return c?(o=t===n?(r-a)/c+6*(r0&&l<1?0:o,new Kr(o,c,l,e.opacity)}function Or(e,t,r,a){return 1===arguments.length?zr(e):new Kr(e,t,r,null==a?1:a)}function Kr(e,t,r,a){this.h=+e,this.s=+t,this.l=+r,this.opacity=+a}function Jr(e){return(e=(e||0)%360)<0?e+360:e}function Vr(e){return Math.max(0,Math.min(1,e||0))}function jr(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}hr(pr,Br,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Mr,formatHex:Mr,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return zr(this).formatHsl()},formatRgb:Tr,toString:Tr}),hr(Dr,Hr,dr(pr,{brighter(e){return e=null==e?fr:Math.pow(fr,e),new Dr(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?yr:Math.pow(yr,e),new Dr(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Dr(Ir(this.r),Ir(this.g),Ir(this.b),Gr(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Pr,formatHex:Pr,formatHex8:function(){return`#${Wr(this.r)}${Wr(this.g)}${Wr(this.b)}${Wr(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Nr,toString:Nr})),hr(Kr,Or,dr(pr,{brighter(e){return e=null==e?fr:Math.pow(fr,e),new Kr(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?yr:Math.pow(yr,e),new Kr(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,a=r+(r<.5?r:1-r)*t,i=2*r-a;return new Dr(jr(e>=240?e-240:e+120,i,a),jr(e,i,a),jr(e<120?e+240:e-120,i,a),this.opacity)},clamp(){return new Kr(Jr(this.h),Vr(this.s),Vr(this.l),Gr(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Gr(this.opacity);return`${1===e?"hsl(":"hsla("}${Jr(this.h)}, ${100*Vr(this.s)}%, ${100*Vr(this.l)}%${1===e?")":`, ${e})`}`}}));const Yr=Math.PI/180,$r=180/Math.PI,Ur=.96422,qr=.82521,Zr=4/29,Qr=6/29,Xr=3*Qr*Qr,ea=Qr*Qr*Qr;function ta(e){if(e instanceof ia)return new ia(e.l,e.a,e.b,e.opacity);if(e instanceof ha)return da(e);e instanceof Dr||(e=Rr(e));var t,r,a=la(e.r),i=la(e.g),n=la(e.b),o=na((.2225045*a+.7168786*i+.0606169*n)/1);return a===i&&i===n?t=r=o:(t=na((.4360747*a+.3850649*i+.1430804*n)/Ur),r=na((.0139322*a+.0971045*i+.7141733*n)/qr)),new ia(116*o-16,500*(t-o),200*(o-r),e.opacity)}function ra(e,t){return new ia(e,0,0,null==t?1:t)}function aa(e,t,r,a){return 1===arguments.length?ta(e):new ia(e,t,r,null==a?1:a)}function ia(e,t,r,a){this.l=+e,this.a=+t,this.b=+r,this.opacity=+a}function na(e){return e>ea?Math.pow(e,1/3):e/Xr+Zr}function oa(e){return e>Qr?e*e*e:Xr*(e-Zr)}function ca(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function la(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function sa(e){if(e instanceof ha)return new ha(e.h,e.c,e.l,e.opacity);if(e instanceof ia||(e=ta(e)),0===e.a&&0===e.b)return new ha(NaN,0=1?(r=1,t-1):Math.floor(r*t),i=e[a],n=e[a+1],o=a>0?e[a-1]:2*i-n,c=a()=>e;function Ma(e,t){return function(r){return e+r*t}}function Ta(e,t){var r=t-e;return r?Ma(e,r>180||r<-180?r-360*Math.round(r/360):r):Aa(isNaN(e)?t:e)}function Ba(e){return 1==(e=+e)?La:function(t,r){return r-t?function(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(a){return Math.pow(e+a*t,r)}}(t,r,e):Aa(isNaN(t)?r:t)}}function La(e,t){var r=t-e;return r?Ma(e,r):Aa(isNaN(e)?t:e)}var Ea=function e(t){var r=Ba(t);function a(e,t){var a=r((e=Hr(e)).r,(t=Hr(t)).r),i=r(e.g,t.g),n=r(e.b,t.b),o=La(e.opacity,t.opacity);return function(t){return e.r=a(t),e.g=i(t),e.b=n(t),e.opacity=o(t),e+""}}return a.gamma=e,a}(1);function Ra(e){return function(t){var r,a,i=t.length,n=new Array(i),o=new Array(i),c=new Array(i);for(r=0;rn&&(i=t.slice(n,i),c[o]?c[o]+=i:c[++o]=i),(r=r[0])===(a=a[0])?c[o]?c[o]+=a:c[++o]=a:(c[++o]=null,l.push({i:o,x:Wa(r,a)})),n=Oa.lastIndex;return n180?t+=360:t-e>180&&(e+=360),n.push({i:r.push(i(r)+"rotate(",null,a)-2,x:Wa(e,t)})):t&&r.push(i(r)+"rotate("+t+a)}(n.rotate,o.rotate,c,l),function(e,t,r,n){e!==t?n.push({i:r.push(i(r)+"skewX(",null,a)-2,x:Wa(e,t)}):t&&r.push(i(r)+"skewX("+t+a)}(n.skewX,o.skewX,c,l),function(e,t,r,a,n,o){if(e!==r||t!==a){var c=n.push(i(n)+"scale(",null,",",null,")");o.push({i:c-4,x:Wa(e,r)},{i:c-2,x:Wa(t,a)})}else 1===r&&1===a||n.push(i(n)+"scale("+r+","+a+")")}(n.scaleX,n.scaleY,o.scaleX,o.scaleY,c,l),n=o=null,function(e){for(var t,r=-1,a=l.length;++r=0&&t._call.call(void 0,e),t=t._next;--pi}function Ai(){gi=(mi=vi.now())+bi,pi=yi=0;try{Si()}finally{pi=0,function(){var e,t,r=hi,a=1/0;for(;r;)r._call?(a>r._time&&(a=r._time),e=r,r=r._next):(t=r._next,r._next=null,r=e?e._next=t:hi=t);di=e,Ti(a)}(),gi=0}}function Mi(){var e=vi.now(),t=e-mi;t>1e3&&(bi-=t,mi=e)}function Ti(e){pi||(yi&&(yi=clearTimeout(yi)),e-gi>24?(e<1/0&&(yi=setTimeout(Ai,e-vi.now()-bi)),fi&&(fi=clearInterval(fi))):(fi||(mi=vi.now(),fi=setInterval(Mi,1e3)),pi=1,xi(Ai)))}function Bi(e,t,r){var a=new Ci;return t=null==t?0:+t,a.restart((r=>{a.stop(),e(r+t)}),t,r),a}Ci.prototype=_i.prototype={constructor:Ci,restart:function(e,t,r){if("function"!=typeof e)throw new TypeError("callback is not a function");r=(null==r?ki():+r)+(null==t?0:+t),this._next||di===this||(di?di._next=this:hi=this,di=this),this._call=e,this._time=r,Ti()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ti())}};var Li=Le("start","end","cancel","interrupt"),Ei=[];function Ri(e,t,r,a,i,n){var o=e.__transition;if(o){if(r in o)return}else e.__transition={};!function(e,t,r){var a,i=e.__transition;function n(e){r.state=1,r.timer.restart(o,r.delay,r.time),r.delay<=e&&o(e-r.delay)}function o(n){var s,u,h,d;if(1!==r.state)return l();for(s in i)if((d=i[s]).name===r.name){if(3===d.state)return Bi(o);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",e,e.__data__,d.index,d.group),delete i[s]):+s0)throw new Error("too late; already scheduled");return r}function Di(e,t){var r=Pi(e,t);if(r.state>3)throw new Error("too late; already running");return r}function Pi(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function Ni(e,t){var r,a,i,n=e.__transition,o=!0;if(n){for(i in t=null==t?null:t+"",n)(r=n[i]).name===t?(a=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(a?"interrupt":"cancel",e,e.__data__,r.index,r.group),delete n[i]):o=!1;o&&delete e.__transition}}function Gi(e,t){var r,a;return function(){var i=Di(this,e),n=i.tween;if(n!==r)for(var o=0,c=(a=r=n).length;o=0&&(e=e.slice(0,t)),!e||"start"===e}))}(t)?Hi:Di;return function(){var o=n(this,e),c=o.on;c!==a&&(i=(a=c).copy()).on(t,r),o.on=i}}(r,e,t))},attr:function(e,t){var r=Ne(e),a="transform"===r?Qa:Fi;return this.attrTween(e,"function"==typeof t?(r.local?ji:Vi)(r,a,Wi(this,"attr."+e,t)):null==t?(r.local?Oi:zi)(r):(r.local?Ji:Ki)(r,a,t))},attrTween:function(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==t)return this.tween(r,null);if("function"!=typeof t)throw new Error;var a=Ne(e);return this.tween(r,(a.local?Yi:$i)(a,t))},style:function(e,t,r){var a="transform"==(e+="")?Za:Fi;return null==t?this.styleTween(e,function(e,t){var r,a,i;return function(){var n=yt(this,e),o=(this.style.removeProperty(e),yt(this,e));return n===o?null:n===r&&o===a?i:i=t(r=n,a=o)}}(e,a)).on("end.style."+e,en(e)):"function"==typeof t?this.styleTween(e,function(e,t,r){var a,i,n;return function(){var o=yt(this,e),c=r(this),l=c+"";return null==c&&(this.style.removeProperty(e),l=c=yt(this,e)),o===l?null:o===a&&l===i?n:(i=l,n=t(a=o,c))}}(e,a,Wi(this,"style."+e,t))).each(function(e,t){var r,a,i,n,o="style."+t,c="end."+o;return function(){var l=Di(this,e),s=l.on,u=null==l.value[o]?n||(n=en(t)):void 0;s===r&&i===u||(a=(r=s).copy()).on(c,i=u),l.on=a}}(this._id,e)):this.styleTween(e,function(e,t,r){var a,i,n=r+"";return function(){var o=yt(this,e);return o===n?null:o===a?i:i=t(a=o,r)}}(e,a,t),r).on("end.style."+e,null)},styleTween:function(e,t,r){var a="style."+(e+="");if(arguments.length<2)return(a=this.tween(a))&&a._value;if(null==t)return this.tween(a,null);if("function"!=typeof t)throw new Error;return this.tween(a,function(e,t,r){var a,i;function n(){var n=t.apply(this,arguments);return n!==i&&(a=(i=n)&&function(e,t,r){return function(a){this.style.setProperty(e,t.call(this,a),r)}}(e,n,r)),a}return n._value=t,n}(e,t,null==r?"":r))},text:function(e){return this.tween("text","function"==typeof e?function(e){return function(){var t=e(this);this.textContent=null==t?"":t}}(Wi(this,"text",e)):function(e){return function(){this.textContent=e}}(null==e?"":e+""))},textTween:function(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(null==e)return this.tween(t,null);if("function"!=typeof e)throw new Error;return this.tween(t,function(e){var t,r;function a(){var a=e.apply(this,arguments);return a!==r&&(t=(r=a)&&function(e){return function(t){this.textContent=e.call(this,t)}}(a)),t}return a._value=e,a}(e))},remove:function(){return this.on("end.remove",function(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}(this._id))},tween:function(e,t){var r=this._id;if(e+="",arguments.length<2){for(var a,i=Pi(this.node(),r).tween,n=0,o=i.length;n()=>e;function In(e,{sourceEvent:t,target:r,selection:a,mode:i,dispatch:n}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},selection:{value:a,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:n}})}function Wn(e){e.preventDefault(),e.stopImmediatePropagation()}var Fn={name:"drag"},zn={name:"space"},On={name:"handle"},Kn={name:"center"};const{abs:Jn,max:Vn,min:jn}=Math;function Yn(e){return[+e[0],+e[1]]}function $n(e){return[Yn(e[0]),Yn(e[1])]}var Un={name:"x",handles:["w","e"].map(ao),input:function(e,t){return null==e?null:[[+e[0],t[0][1]],[+e[1],t[1][1]]]},output:function(e){return e&&[e[0][0],e[1][0]]}},qn={name:"y",handles:["n","s"].map(ao),input:function(e,t){return null==e?null:[[t[0][0],+e[0]],[t[1][0],+e[1]]]},output:function(e){return e&&[e[0][1],e[1][1]]}},Zn={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(ao),input:function(e){return null==e?null:$n(e)},output:function(e){return e}},Qn={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Xn={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},eo={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},to={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ro={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function ao(e){return{type:e}}function io(e){return!e.ctrlKey&&!e.button}function no(){var e=this.ownerSVGElement||this;return e.hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]}function oo(){return navigator.maxTouchPoints||"ontouchstart"in this}function co(e){for(;!e.__brush;)if(!(e=e.parentNode))return;return e.__brush}function lo(e){var t,r=no,a=io,i=oo,n=!0,o=Le("start","brush","end"),c=6;function l(t){var r=t.property("__brush",f).selectAll(".overlay").data([ao("overlay")]);r.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Qn.overlay).merge(r).each((function(){var e=co(this).extent;jt(this).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1])})),t.selectAll(".selection").data([ao("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Qn.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var a=t.selectAll(".handle").data(e.handles,(function(e){return e.type}));a.exit().remove(),a.enter().append("rect").attr("class",(function(e){return"handle handle--"+e.type})).attr("cursor",(function(e){return Qn[e.type]})),t.each(s).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",d).filter(i).on("touchstart.brush",d).on("touchmove.brush",p).on("touchend.brush touchcancel.brush",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function s(){var e=jt(this),t=co(this).selection;t?(e.selectAll(".selection").style("display",null).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1]),e.selectAll(".handle").style("display",null).attr("x",(function(e){return"e"===e.type[e.type.length-1]?t[1][0]-c/2:t[0][0]-c/2})).attr("y",(function(e){return"s"===e.type[0]?t[1][1]-c/2:t[0][1]-c/2})).attr("width",(function(e){return"n"===e.type||"s"===e.type?t[1][0]-t[0][0]+c:c})).attr("height",(function(e){return"e"===e.type||"w"===e.type?t[1][1]-t[0][1]+c:c}))):e.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function u(e,t,r){var a=e.__brush.emitter;return!a||r&&a.clean?new h(e,t,r):a}function h(e,t,r){this.that=e,this.args=t,this.state=e.__brush,this.active=0,this.clean=r}function d(r){if((!t||r.touches)&&a.apply(this,arguments)){var i,o,c,l,h,d,p,y,f,m,g,b=this,v=r.target.__data__.type,x="selection"===(n&&r.metaKey?v="overlay":v)?Fn:n&&r.altKey?Kn:On,k=e===qn?null:to[v],w=e===Un?null:ro[v],C=co(b),_=C.extent,S=C.selection,A=_[0][0],M=_[0][1],T=_[1][0],B=_[1][1],L=0,E=0,R=k&&w&&n&&r.shiftKey,H=Array.from(r.touches||[r],(e=>{const t=e.identifier;return(e=Qt(e,b)).point0=e.slice(),e.identifier=t,e}));Ni(b);var D=u(b,arguments,!0).beforestart();if("overlay"===v){S&&(f=!0);const t=[H[0],H[1]||H[0]];C.selection=S=[[i=e===qn?A:jn(t[0][0],t[1][0]),c=e===Un?M:jn(t[0][1],t[1][1])],[h=e===qn?T:Vn(t[0][0],t[1][0]),p=e===Un?B:Vn(t[0][1],t[1][1])]],H.length>1&&W(r)}else i=S[0][0],c=S[0][1],h=S[1][0],p=S[1][1];o=i,l=c,d=h,y=p;var P=jt(b).attr("pointer-events","none"),N=P.selectAll(".overlay").attr("cursor",Qn[v]);if(r.touches)D.moved=I,D.ended=F;else{var G=jt(r.view).on("mousemove.brush",I,!0).on("mouseup.brush",F,!0);n&&G.on("keydown.brush",(function(e){switch(e.keyCode){case 16:R=k&&w;break;case 18:x===On&&(k&&(h=d-L*k,i=o+L*k),w&&(p=y-E*w,c=l+E*w),x=Kn,W(e));break;case 32:x!==On&&x!==Kn||(k<0?h=d-L:k>0&&(i=o-L),w<0?p=y-E:w>0&&(c=l-E),x=zn,N.attr("cursor",Qn.selection),W(e));break;default:return}Wn(e)}),!0).on("keyup.brush",(function(e){switch(e.keyCode){case 16:R&&(m=g=R=!1,W(e));break;case 18:x===Kn&&(k<0?h=d:k>0&&(i=o),w<0?p=y:w>0&&(c=l),x=On,W(e));break;case 32:x===zn&&(e.altKey?(k&&(h=d-L*k,i=o+L*k),w&&(p=y-E*w,c=l+E*w),x=Kn):(k<0?h=d:k>0&&(i=o),w<0?p=y:w>0&&(c=l),x=On),N.attr("cursor",Qn[v]),W(e));break;default:return}Wn(e)}),!0),ar(r.view)}s.call(b),D.start(r,x.name)}function I(e){for(const t of e.changedTouches||[e])for(const e of H)e.identifier===t.identifier&&(e.cur=Qt(t,b));if(R&&!m&&!g&&1===H.length){const e=H[0];Jn(e.cur[0]-e[0])>Jn(e.cur[1]-e[1])?g=!0:m=!0}for(const e of H)e.cur&&(e[0]=e.cur[0],e[1]=e.cur[1]);f=!0,Wn(e),W(e)}function W(e){const t=H[0],r=t.point0;var a;switch(L=t[0]-r[0],E=t[1]-r[1],x){case zn:case Fn:k&&(L=Vn(A-i,jn(T-h,L)),o=i+L,d=h+L),w&&(E=Vn(M-c,jn(B-p,E)),l=c+E,y=p+E);break;case On:H[1]?(k&&(o=Vn(A,jn(T,H[0][0])),d=Vn(A,jn(T,H[1][0])),k=1),w&&(l=Vn(M,jn(B,H[0][1])),y=Vn(M,jn(B,H[1][1])),w=1)):(k<0?(L=Vn(A-i,jn(T-i,L)),o=i+L,d=h):k>0&&(L=Vn(A-h,jn(T-h,L)),o=i,d=h+L),w<0?(E=Vn(M-c,jn(B-c,E)),l=c+E,y=p):w>0&&(E=Vn(M-p,jn(B-p,E)),l=c,y=p+E));break;case Kn:k&&(o=Vn(A,jn(T,i-L*k)),d=Vn(A,jn(T,h+L*k))),w&&(l=Vn(M,jn(B,c-E*w)),y=Vn(M,jn(B,p+E*w)))}de+r))}function vo(e,t){var r=0,a=null,i=null,n=null;function o(o){var c,l=o.length,s=new Array(l),u=bo(0,l),h=new Array(l*l),d=new Array(l),p=0;o=Float64Array.from({length:l*l},t?(e,t)=>o[t%l][t/l|0]:(e,t)=>o[t/l|0][t%l]);for(let t=0;ta(s[e],s[t])));for(const r of u){const a=t;if(e){const e=bo(1+~l,l).filter((e=>e<0?o[~e*l+r]:o[r*l+e]));i&&e.sort(((e,t)=>i(e<0?-o[~e*l+r]:o[r*l+e],t<0?-o[~t*l+r]:o[r*l+t])));for(const a of e)if(a<0){(h[~a*l+r]||(h[~a*l+r]={source:null,target:null})).target={index:r,startAngle:t,endAngle:t+=o[~a*l+r]*p,value:o[~a*l+r]}}else{(h[r*l+a]||(h[r*l+a]={source:null,target:null})).source={index:r,startAngle:t,endAngle:t+=o[r*l+a]*p,value:o[r*l+a]}}d[r]={index:r,startAngle:a,endAngle:t,value:s[r]}}else{const e=bo(0,l).filter((e=>o[r*l+e]||o[e*l+r]));i&&e.sort(((e,t)=>i(o[r*l+e],o[r*l+t])));for(const a of e){let e;if(r=0))throw new Error(`invalid digits: ${e}`);if(t>15)return _o;const r=10**t;return function(e){this._+=e[0];for(let t=1,a=e.length;two)if(Math.abs(u*c-l*s)>wo&&i){let d=r-n,p=a-o,y=c*c+l*l,f=d*d+p*p,m=Math.sqrt(y),g=Math.sqrt(h),b=i*Math.tan((xo-Math.acos((y+h-f)/(2*m*g)))/2),v=b/g,x=b/m;Math.abs(v-1)>wo&&this._append`L${e+v*s},${t+v*u}`,this._append`A${i},${i},0,0,${+(u*d>s*p)},${this._x1=e+x*c},${this._y1=t+x*l}`}else this._append`L${this._x1=e},${this._y1=t}`;else;}arc(e,t,r,a,i,n){if(e=+e,t=+t,n=!!n,(r=+r)<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(a),c=r*Math.sin(a),l=e+o,s=t+c,u=1^n,h=n?a-i:i-a;null===this._x1?this._append`M${l},${s}`:(Math.abs(this._x1-l)>wo||Math.abs(this._y1-s)>wo)&&this._append`L${l},${s}`,r&&(h<0&&(h=h%ko+ko),h>Co?this._append`A${r},${r},0,1,${u},${e-o},${t-c}A${r},${r},0,1,${u},${this._x1=l},${this._y1=s}`:h>wo&&this._append`A${r},${r},0,${+(h>=xo)},${u},${this._x1=e+r*Math.cos(i)},${this._y1=t+r*Math.sin(i)}`)}rect(e,t,r,a){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${r=+r}v${+a}h${-r}Z`}toString(){return this._}};function Ao(){return new So}Ao.prototype=So.prototype;var Mo=Array.prototype.slice;function To(e){return function(){return e}}function Bo(e){return e.source}function Lo(e){return e.target}function Eo(e){return e.radius}function Ro(e){return e.startAngle}function Ho(e){return e.endAngle}function Do(){return 0}function Po(){return 10}function No(e){var t=Bo,r=Lo,a=Eo,i=Eo,n=Ro,o=Ho,c=Do,l=null;function s(){var s,u=t.apply(this,arguments),h=r.apply(this,arguments),d=c.apply(this,arguments)/2,p=Mo.call(arguments),y=+a.apply(this,(p[0]=u,p)),f=n.apply(this,p)-yo,m=o.apply(this,p)-yo,g=+i.apply(this,(p[0]=h,p)),b=n.apply(this,p)-yo,v=o.apply(this,p)-yo;if(l||(l=s=Ao()),d>go&&(so(m-f)>2*d+go?m>f?(f+=d,m-=d):(f-=d,m+=d):f=m=(f+m)/2,so(v-b)>2*d+go?v>b?(b+=d,v-=d):(b-=d,v+=d):b=v=(b+v)/2),l.moveTo(y*uo(f),y*ho(f)),l.arc(0,0,y,f,m),f!==b||m!==v)if(e){var x=g-+e.apply(this,arguments),k=(b+v)/2;l.quadraticCurveTo(0,0,x*uo(b),x*ho(b)),l.lineTo(g*uo(k),g*ho(k)),l.lineTo(x*uo(v),x*ho(v))}else l.quadraticCurveTo(0,0,g*uo(b),g*ho(b)),l.arc(0,0,g,b,v);if(l.quadraticCurveTo(0,0,y*uo(f),y*ho(f)),l.closePath(),s)return l=null,s+""||null}return e&&(s.headRadius=function(t){return arguments.length?(e="function"==typeof t?t:To(+t),s):e}),s.radius=function(e){return arguments.length?(a=i="function"==typeof e?e:To(+e),s):a},s.sourceRadius=function(e){return arguments.length?(a="function"==typeof e?e:To(+e),s):a},s.targetRadius=function(e){return arguments.length?(i="function"==typeof e?e:To(+e),s):i},s.startAngle=function(e){return arguments.length?(n="function"==typeof e?e:To(+e),s):n},s.endAngle=function(e){return arguments.length?(o="function"==typeof e?e:To(+e),s):o},s.padAngle=function(e){return arguments.length?(c="function"==typeof e?e:To(+e),s):c},s.source=function(e){return arguments.length?(t=e,s):t},s.target=function(e){return arguments.length?(r=e,s):r},s.context=function(e){return arguments.length?(l=null==e?null:e,s):l},s}var Go=Array.prototype.slice;function Io(e,t){return e-t}var Wo=e=>()=>e;function Fo(e,t){for(var r,a=-1,i=t.length;++aa!=p>a&&r<(d-s)*(a-u)/(p-u)+s&&(i=-i)}return i}function Oo(e,t,r){var a;return function(e,t,r){return(t[0]-e[0])*(r[1]-e[1])==(r[0]-e[0])*(t[1]-e[1])}(e,t,r)&&function(e,t,r){return e<=t&&t<=r||r<=t&&t<=e}(e[a=+(e[0]===t[0])],r[a],t[a])}function Ko(){}var Jo=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Vo(){var e=1,t=1,r=Q,a=c;function i(e){var t=r(e);if(Array.isArray(t))t=t.slice().sort(Io);else{const r=w(e,jo);for(t=$(...Z(r[0],r[1],t),t);t[t.length-1]>=r[1];)t.pop();for(;t[1]n(e,t)))}function n(r,i){const n=null==i?NaN:+i;if(isNaN(n))throw new Error(`invalid value: ${i}`);var c=[],l=[];return function(r,a,i){var n,c,l,s,u,h,d=new Array,p=new Array;n=c=-1,s=Yo(r[0],a),Jo[s<<1].forEach(y);for(;++n=a,Jo[u<<2].forEach(y);for(;++n0?c.push([e]):l.push(e)})),l.forEach((function(e){for(var t,r=0,a=c.length;r0&&n0&&o=0&&n>=0))throw new Error("invalid size");return e=a,t=n,i},i.thresholds=function(e){return arguments.length?(r="function"==typeof e?e:Array.isArray(e)?Wo(Go.call(e)):Wo(e),i):r},i.smooth=function(e){return arguments.length?(a=e?c:Ko,i):a===c},i}function jo(e){return isFinite(e)?e:NaN}function Yo(e,t){return null!=e&&+e>=t}function $o(e){return null==e||isNaN(e=+e)?-1/0:e}function Uo(e,t,r,a){const i=a-t,n=r-t,o=isFinite(i)||isFinite(n)?i/n:Math.sign(i)/Math.sign(n);return isNaN(o)?e:e+o-.5}function qo(e){return e[0]}function Zo(e){return e[1]}function Qo(){return 1}const Xo=134217729;function ec(e,t,r,a,i){let n,o,c,l,s=t[0],u=a[0],h=0,d=0;u>s==u>-s?(n=s,s=t[++h]):(n=u,u=a[++d]);let p=0;if(hs==u>-s?(o=s+n,c=n-(o-s),s=t[++h]):(o=u+n,c=n-(o-u),u=a[++d]),n=o,0!==c&&(i[p++]=c);hs==u>-s?(o=n+s,l=o-n,c=n-(o-l)+(s-l),s=t[++h]):(o=n+u,l=o-n,c=n-(o-l)+(u-l),u=a[++d]),n=o,0!==c&&(i[p++]=c);for(;h=33306690738754716e-32*s?l:-function(e,t,r,a,i,n,o){let c,l,s,u,h,d,p,y,f,m,g,b,v,x,k,w,C,_;const S=e-i,A=r-i,M=t-n,T=a-n;x=S*T,d=Xo*S,p=d-(d-S),y=S-p,d=Xo*T,f=d-(d-T),m=T-f,k=y*m-(x-p*f-y*f-p*m),w=M*A,d=Xo*M,p=d-(d-M),y=M-p,d=Xo*A,f=d-(d-A),m=A-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,rc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,rc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,rc[2]=b-(_-h)+(g-h),rc[3]=_;let B=function(e,t){let r=t[0];for(let a=1;a=L||-B>=L)return B;if(h=e-S,c=e-(S+h)+(h-i),h=r-A,s=r-(A+h)+(h-i),h=t-M,l=t-(M+h)+(h-n),h=a-T,u=a-(T+h)+(h-n),0===c&&0===l&&0===s&&0===u)return B;if(L=11093356479670487e-47*o+33306690738754706e-32*Math.abs(B),B+=S*u+T*c-(M*s+A*l),B>=L||-B>=L)return B;x=c*T,d=Xo*c,p=d-(d-c),y=c-p,d=Xo*T,f=d-(d-T),m=T-f,k=y*m-(x-p*f-y*f-p*m),w=l*A,d=Xo*l,p=d-(d-l),y=l-p,d=Xo*A,f=d-(d-A),m=A-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,oc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,oc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,oc[2]=b-(_-h)+(g-h),oc[3]=_;const E=ec(4,rc,4,oc,ac);x=S*u,d=Xo*S,p=d-(d-S),y=S-p,d=Xo*u,f=d-(d-u),m=u-f,k=y*m-(x-p*f-y*f-p*m),w=M*s,d=Xo*M,p=d-(d-M),y=M-p,d=Xo*s,f=d-(d-s),m=s-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,oc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,oc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,oc[2]=b-(_-h)+(g-h),oc[3]=_;const R=ec(E,ac,4,oc,ic);x=c*u,d=Xo*c,p=d-(d-c),y=c-p,d=Xo*u,f=d-(d-u),m=u-f,k=y*m-(x-p*f-y*f-p*m),w=l*s,d=Xo*l,p=d-(d-l),y=l-p,d=Xo*s,f=d-(d-s),m=s-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,oc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,oc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,oc[2]=b-(_-h)+(g-h),oc[3]=_;const H=ec(R,ic,4,oc,nc);return nc[H-1]}(e,t,r,a,i,n,s)}const lc=Math.pow(2,-52),sc=new Uint32Array(512);class uc{static from(e,t=mc,r=gc){const a=e.length,i=new Float64Array(2*a);for(let n=0;n>1;if(t>0&&"number"!=typeof e[0])throw new Error("Expected coords to contain numbers.");this.coords=e;const r=Math.max(2*t-5,0);this._triangles=new Uint32Array(3*r),this._halfedges=new Int32Array(3*r),this._hashSize=Math.ceil(Math.sqrt(t)),this._hullPrev=new Uint32Array(t),this._hullNext=new Uint32Array(t),this._hullTri=new Uint32Array(t),this._hullHash=new Int32Array(this._hashSize),this._ids=new Uint32Array(t),this._dists=new Float64Array(t),this.update()}update(){const{coords:e,_hullPrev:t,_hullNext:r,_hullTri:a,_hullHash:i}=this,n=e.length>>1;let o=1/0,c=1/0,l=-1/0,s=-1/0;for(let t=0;tl&&(l=r),a>s&&(s=a),this._ids[t]=t}const u=(o+l)/2,h=(c+s)/2;let d,p,y;for(let t=0,r=1/0;t0&&(p=t,r=a)}let g=e[2*p],b=e[2*p+1],v=1/0;for(let t=0;ta&&(t[r++]=i,a=n)}return this.hull=t.subarray(0,r),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(cc(f,m,g,b,x,k)<0){const e=p,t=g,r=b;p=y,g=x,b=k,y=e,x=t,k=r}const w=function(e,t,r,a,i,n){const o=r-e,c=a-t,l=i-e,s=n-t,u=o*o+c*c,h=l*l+s*s,d=.5/(o*s-c*l),p=e+(s*u-c*h)*d,y=t+(o*h-l*u)*d;return{x:p,y:y}}(f,m,g,b,x,k);this._cx=w.x,this._cy=w.y;for(let t=0;t0&&Math.abs(s-n)<=lc&&Math.abs(u-o)<=lc)continue;if(n=s,o=u,l===d||l===p||l===y)continue;let h=0;for(let e=0,t=this._hashKey(s,u);e=0;)if(m=f,m===h){m=-1;break}if(-1===m)continue;let g=this._addTriangle(m,l,r[m],-1,-1,a[m]);a[l]=this._legalize(g+2),a[m]=g,C++;let b=r[m];for(;f=r[b],cc(s,u,e[2*b],e[2*b+1],e[2*f],e[2*f+1])<0;)g=this._addTriangle(b,l,f,a[l],-1,a[b]),a[l]=this._legalize(g+2),r[b]=b,C--,b=f;if(m===h)for(;f=t[m],cc(s,u,e[2*f],e[2*f+1],e[2*m],e[2*m+1])<0;)g=this._addTriangle(f,l,m,-1,a[m],a[f]),this._legalize(g+2),a[f]=g,r[m]=m,C--,m=f;this._hullStart=t[l]=m,r[m]=t[b]=l,r[l]=b,i[this._hashKey(s,u)]=l,i[this._hashKey(e[2*m],e[2*m+1])]=m}this.hull=new Uint32Array(C);for(let e=0,t=this._hullStart;e0?3-r:1+r)/4}(e-this._cx,t-this._cy)*this._hashSize)%this._hashSize}_legalize(e){const{_triangles:t,_halfedges:r,coords:a}=this;let i=0,n=0;for(;;){const o=r[e],c=e-e%3;if(n=c+(e+2)%3,-1===o){if(0===i)break;e=sc[--i];continue}const l=o-o%3,s=c+(e+1)%3,u=l+(o+2)%3,h=t[n],d=t[e],p=t[s],y=t[u];if(dc(a[2*h],a[2*h+1],a[2*d],a[2*d+1],a[2*p],a[2*p+1],a[2*y],a[2*y+1])){t[e]=y,t[o]=h;const a=r[u];if(-1===a){let t=this._hullStart;do{if(this._hullTri[t]===u){this._hullTri[t]=e;break}t=this._hullPrev[t]}while(t!==this._hullStart)}this._link(e,a),this._link(o,r[n]),this._link(n,u);const c=l+(o+1)%3;i=r&&t[e[o]]>n;)e[o+1]=e[o--];e[o+1]=a}else{let i=r+1,n=a;fc(e,r+a>>1,i),t[e[r]]>t[e[a]]&&fc(e,r,a),t[e[i]]>t[e[a]]&&fc(e,i,a),t[e[r]]>t[e[i]]&&fc(e,r,i);const o=e[i],c=t[o];for(;;){do{i++}while(t[e[i]]c);if(n=n-r?(yc(e,t,i,a),yc(e,t,r,n-1)):(yc(e,t,r,n-1),yc(e,t,i,a))}}function fc(e,t,r){const a=e[t];e[t]=e[r],e[r]=a}function mc(e){return e[0]}function gc(e){return e[1]}const bc=1e-6;class vc{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(e,t){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(e,t){this._+=`L${this._x1=+e},${this._y1=+t}`}arc(e,t,r){const a=(e=+e)+(r=+r),i=t=+t;if(r<0)throw new Error("negative radius");null===this._x1?this._+=`M${a},${i}`:(Math.abs(this._x1-a)>bc||Math.abs(this._y1-i)>bc)&&(this._+="L"+a+","+i),r&&(this._+=`A${r},${r},0,1,1,${e-r},${t}A${r},${r},0,1,1,${this._x1=a},${this._y1=i}`)}rect(e,t,r,a){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${+r}v${+a}h${-r}Z`}value(){return this._||null}}class xc{constructor(){this._=[]}moveTo(e,t){this._.push([e,t])}closePath(){this._.push(this._[0].slice())}lineTo(e,t){this._.push([e,t])}value(){return this._.length?this._:null}}class kc{constructor(e,[t,r,a,i]=[0,0,960,500]){if(!((a=+a)>=(t=+t)&&(i=+i)>=(r=+r)))throw new Error("invalid bounds");this.delaunay=e,this._circumcenters=new Float64Array(2*e.points.length),this.vectors=new Float64Array(2*e.points.length),this.xmax=a,this.xmin=t,this.ymax=i,this.ymin=r,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:e,hull:t,triangles:r},vectors:a}=this;let i,n;const o=this.circumcenters=this._circumcenters.subarray(0,r.length/3*2);for(let a,c,l=0,s=0,u=r.length;l1;)i-=2;for(let e=2;e0){if(t>=this.ymax)return null;(i=(this.ymax-t)/a)0){if(e>=this.xmax)return null;(i=(this.xmax-e)/r)this.xmax?2:0)|(tthis.ymax?8:0)}_simplify(e){if(e&&e.length>4){for(let t=0;t2&&function(e){const{triangles:t,coords:r}=e;for(let e=0;e1e-10)return!1}return!0}(e)){this.collinear=Int32Array.from({length:t.length/2},((e,t)=>t)).sort(((e,r)=>t[2*e]-t[2*r]||t[2*e+1]-t[2*r+1]));const e=this.collinear[0],r=this.collinear[this.collinear.length-1],a=[t[2*e],t[2*e+1],t[2*r],t[2*r+1]],i=1e-8*Math.hypot(a[3]-a[1],a[2]-a[0]);for(let e=0,r=t.length/2;e0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=a[0],n[a[0]]=1,2===a.length&&(n[a[1]]=0,this.triangles[1]=a[1],this.triangles[2]=a[1]))}voronoi(e){return new kc(this,e)}*neighbors(e){const{inedges:t,hull:r,_hullIndex:a,halfedges:i,triangles:n,collinear:o}=this;if(o){const t=o.indexOf(e);return t>0&&(yield o[t-1]),void(t=0&&i!==r&&i!==a;)r=i;return i}_step(e,t,r){const{inedges:a,hull:i,_hullIndex:n,halfedges:o,triangles:c,points:l}=this;if(-1===a[e]||!l.length)return(e+1)%(l.length>>1);let s=e,u=Cc(t-l[2*e],2)+Cc(r-l[2*e+1],2);const h=a[e];let d=h;do{let a=c[d];const h=Cc(t-l[2*a],2)+Cc(r-l[2*a+1],2);if(h9999?"+"+Rc(t,6):Rc(t,4))+"-"+Rc(e.getUTCMonth()+1,2)+"-"+Rc(e.getUTCDate(),2)+(n?"T"+Rc(r,2)+":"+Rc(a,2)+":"+Rc(i,2)+"."+Rc(n,3)+"Z":i?"T"+Rc(r,2)+":"+Rc(a,2)+":"+Rc(i,2)+"Z":a||r?"T"+Rc(r,2)+":"+Rc(a,2)+"Z":"")}function Dc(e){var t=new RegExp('["'+e+"\n\r]"),r=e.charCodeAt(0);function a(e,t){var a,i=[],n=e.length,o=0,c=0,l=n<=0,s=!1;function u(){if(l)return Bc;if(s)return s=!1,Tc;var t,a,i=o;if(34===e.charCodeAt(i)){for(;o++=n?l=!0:10===(a=e.charCodeAt(o++))?s=!0:13===a&&(s=!0,10===e.charCodeAt(o)&&++o),e.slice(i+1,t-1).replace(/""/g,'"')}for(;otl(t,r).then((t=>(new DOMParser).parseFromString(t,e)))}var cl=ol("application/xml"),ll=ol("text/html"),sl=ol("image/svg+xml");function ul(e,t,r,a){if(isNaN(t)||isNaN(r))return e;var i,n,o,c,l,s,u,h,d,p=e._root,y={data:a},f=e._x0,m=e._y0,g=e._x1,b=e._y1;if(!p)return e._root=y,e;for(;p.length;)if((s=t>=(n=(f+g)/2))?f=n:g=n,(u=r>=(o=(m+b)/2))?m=o:b=o,i=p,!(p=p[h=u<<1|s]))return i[h]=y,e;if(c=+e._x.call(null,p.data),l=+e._y.call(null,p.data),t===c&&r===l)return y.next=p,i?i[h]=y:e._root=y,e;do{i=i?i[h]=new Array(4):e._root=new Array(4),(s=t>=(n=(f+g)/2))?f=n:g=n,(u=r>=(o=(m+b)/2))?m=o:b=o}while((h=u<<1|s)==(d=(l>=o)<<1|c>=n));return i[d]=p,i[h]=y,e}function hl(e,t,r,a,i){this.node=e,this.x0=t,this.y0=r,this.x1=a,this.y1=i}function dl(e){return e[0]}function pl(e){return e[1]}function yl(e,t,r){var a=new fl(null==t?dl:t,null==r?pl:r,NaN,NaN,NaN,NaN);return null==e?a:a.addAll(e)}function fl(e,t,r,a,i,n){this._x=e,this._y=t,this._x0=r,this._y0=a,this._x1=i,this._y1=n,this._root=void 0}function ml(e){for(var t={data:e.data},r=t;e=e.next;)r=r.next={data:e.data};return t}var gl=yl.prototype=fl.prototype;function bl(e){return function(){return e}}function vl(e){return 1e-6*(e()-.5)}function xl(e){return e.x+e.vx}function kl(e){return e.y+e.vy}function wl(e){return e.index}function Cl(e,t){var r=e.get(t);if(!r)throw new Error("node not found: "+t);return r}gl.copy=function(){var e,t,r=new fl(this._x,this._y,this._x0,this._y0,this._x1,this._y1),a=this._root;if(!a)return r;if(!a.length)return r._root=ml(a),r;for(e=[{source:a,target:r._root=new Array(4)}];a=e.pop();)for(var i=0;i<4;++i)(t=a.source[i])&&(t.length?e.push({source:t,target:a.target[i]=new Array(4)}):a.target[i]=ml(t));return r},gl.add=function(e){const t=+this._x.call(null,e),r=+this._y.call(null,e);return ul(this.cover(t,r),t,r,e)},gl.addAll=function(e){var t,r,a,i,n=e.length,o=new Array(n),c=new Array(n),l=1/0,s=1/0,u=-1/0,h=-1/0;for(r=0;ru&&(u=a),ih&&(h=i));if(l>u||s>h)return this;for(this.cover(l,s).cover(u,h),r=0;re||e>=i||a>t||t>=n;)switch(c=(td||(n=l.y0)>p||(o=l.x1)=g)<<1|e>=m)&&(l=y[y.length-1],y[y.length-1]=y[y.length-1-s],y[y.length-1-s]=l)}else{var b=e-+this._x.call(null,f.data),v=t-+this._y.call(null,f.data),x=b*b+v*v;if(x=(c=(y+m)/2))?y=c:m=c,(u=o>=(l=(f+g)/2))?f=l:g=l,t=p,!(p=p[h=u<<1|s]))return this;if(!p.length)break;(t[h+1&3]||t[h+2&3]||t[h+3&3])&&(r=t,d=h)}for(;p.data!==e;)if(a=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,a?(i?a.next=i:delete a.next,this):t?(i?t[h]=i:delete t[h],(p=t[0]||t[1]||t[2]||t[3])&&p===(t[3]||t[2]||t[1]||t[0])&&!p.length&&(r?r[d]=p:this._root=p),this):(this._root=i,this)},gl.removeAll=function(e){for(var t=0,r=e.length;t1?a[0]+a.slice(2):a,+e.slice(r+1)]}function Bl(e){return(e=Tl(Math.abs(e)))?e[1]:NaN}var Ll,El=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Rl(e){if(!(t=El.exec(e)))throw new Error("invalid format: "+e);var t;return new Hl({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function Hl(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function Dl(e,t){var r=Tl(e,t);if(!r)return e+"";var a=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+a:a.length>i+1?a.slice(0,i+1)+"."+a.slice(i+1):a+new Array(i-a.length+2).join("0")}Rl.prototype=Hl.prototype,Hl.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Pl={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Dl(100*e,t),r:Dl,s:function(e,t){var r=Tl(e,t);if(!r)return e+"";var a=r[0],i=r[1],n=i-(Ll=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=a.length;return n===o?a:n>o?a+new Array(n-o+1).join("0"):n>0?a.slice(0,n)+"."+a.slice(n):"0."+new Array(1-n).join("0")+Tl(e,Math.max(0,t+n-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Nl(e){return e}var Gl,Il,Wl,Fl=Array.prototype.map,zl=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Ol(e){var t,r,a=void 0===e.grouping||void 0===e.thousands?Nl:(t=Fl.call(e.grouping,Number),r=e.thousands+"",function(e,a){for(var i=e.length,n=[],o=0,c=t[0],l=0;i>0&&c>0&&(l+c+1>a&&(c=Math.max(1,a-l)),n.push(e.substring(i-=c,i+c)),!((l+=c+1)>a));)c=t[o=(o+1)%t.length];return n.reverse().join(r)}),i=void 0===e.currency?"":e.currency[0]+"",n=void 0===e.currency?"":e.currency[1]+"",o=void 0===e.decimal?".":e.decimal+"",c=void 0===e.numerals?Nl:function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(Fl.call(e.numerals,String)),l=void 0===e.percent?"%":e.percent+"",s=void 0===e.minus?"−":e.minus+"",u=void 0===e.nan?"NaN":e.nan+"";function h(e){var t=(e=Rl(e)).fill,r=e.align,h=e.sign,d=e.symbol,p=e.zero,y=e.width,f=e.comma,m=e.precision,g=e.trim,b=e.type;"n"===b?(f=!0,b="g"):Pl[b]||(void 0===m&&(m=12),g=!0,b="g"),(p||"0"===t&&"="===r)&&(p=!0,t="0",r="=");var v="$"===d?i:"#"===d&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x="$"===d?n:/[%p]/.test(b)?l:"",k=Pl[b],w=/[defgprs%]/.test(b);function C(e){var i,n,l,d=v,C=x;if("c"===b)C=k(e)+C,e="";else{var _=(e=+e)<0||1/e<0;if(e=isNaN(e)?u:k(Math.abs(e),m),g&&(e=function(e){e:for(var t,r=e.length,a=1,i=-1;a0&&(i=0)}return i>0?e.slice(0,i)+e.slice(t+1):e}(e)),_&&0==+e&&"+"!==h&&(_=!1),d=(_?"("===h?h:s:"-"===h||"("===h?"":h)+d,C=("s"===b?zl[8+Ll/3]:"")+C+(_&&"("===h?")":""),w)for(i=-1,n=e.length;++i(l=e.charCodeAt(i))||l>57){C=(46===l?o+e.slice(i+1):e.slice(i))+C,e=e.slice(0,i);break}}f&&!p&&(e=a(e,1/0));var S=d.length+e.length+C.length,A=S>1)+d+e+C+A.slice(S);break;default:e=A+d+e+C}return c(e)}return m=void 0===m?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),C.toString=function(){return e+""},C}return{format:h,formatPrefix:function(e,t){var r=h(((e=Rl(e)).type="f",e)),a=3*Math.max(-8,Math.min(8,Math.floor(Bl(t)/3))),i=Math.pow(10,-a),n=zl[8+a/3];return function(e){return r(i*e)+n}}}}function Kl(e){return Gl=Ol(e),Il=Gl.format,Wl=Gl.formatPrefix,Gl}function Jl(e){return Math.max(0,-Bl(Math.abs(e)))}function Vl(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Bl(t)/3)))-Bl(Math.abs(e)))}function jl(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Bl(t)-Bl(e))+1}Kl({thousands:",",grouping:[3],currency:["$",""]});var Yl=1e-6,$l=1e-12,Ul=Math.PI,ql=Ul/2,Zl=Ul/4,Ql=2*Ul,Xl=180/Ul,es=Ul/180,ts=Math.abs,rs=Math.atan,as=Math.atan2,is=Math.cos,ns=Math.ceil,os=Math.exp,cs=Math.hypot,ls=Math.log,ss=Math.pow,us=Math.sin,hs=Math.sign||function(e){return e>0?1:e<0?-1:0},ds=Math.sqrt,ps=Math.tan;function ys(e){return e>1?0:e<-1?Ul:Math.acos(e)}function fs(e){return e>1?ql:e<-1?-ql:Math.asin(e)}function ms(e){return(e=us(e/2))*e}function gs(){}function bs(e,t){e&&xs.hasOwnProperty(e.type)&&xs[e.type](e,t)}var vs={Feature:function(e,t){bs(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,a=-1,i=r.length;++a=0?1:-1,i=a*r,n=is(t=(t*=es)/2+Zl),o=us(t),c=Ts*o,l=Ms*n+c*is(i),s=c*a*us(i);Fs.add(as(s,l)),As=e,Ms=n,Ts=o}function Ys(e){return[as(e[1],e[0]),fs(e[2])]}function $s(e){var t=e[0],r=e[1],a=is(r);return[a*is(t),a*us(t),us(r)]}function Us(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function qs(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function Zs(e,t){e[0]+=t[0],e[1]+=t[1],e[2]+=t[2]}function Qs(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function Xs(e){var t=ds(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}var eu,tu,ru,au,iu,nu,ou,cu,lu,su,uu,hu,du,pu,yu,fu,mu={point:gu,lineStart:vu,lineEnd:xu,polygonStart:function(){mu.point=ku,mu.lineStart=wu,mu.lineEnd=Cu,Gs=new C,Os.polygonStart()},polygonEnd:function(){Os.polygonEnd(),mu.point=gu,mu.lineStart=vu,mu.lineEnd=xu,Fs<0?(Bs=-(Es=180),Ls=-(Rs=90)):Gs>Yl?Rs=90:Gs<-1e-6&&(Ls=-90),Ws[0]=Bs,Ws[1]=Es},sphere:function(){Bs=-(Es=180),Ls=-(Rs=90)}};function gu(e,t){Is.push(Ws=[Bs=e,Es=e]),tRs&&(Rs=t)}function bu(e,t){var r=$s([e*es,t*es]);if(Ns){var a=qs(Ns,r),i=qs([a[1],-a[0],0],a);Xs(i),i=Ys(i);var n,o=e-Hs,c=o>0?1:-1,l=i[0]*Xl*c,s=ts(o)>180;s^(c*HsRs&&(Rs=n):s^(c*Hs<(l=(l+360)%360-180)&&lRs&&(Rs=t)),s?e_u(Bs,Es)&&(Es=e):_u(e,Es)>_u(Bs,Es)&&(Bs=e):Es>=Bs?(eEs&&(Es=e)):e>Hs?_u(Bs,e)>_u(Bs,Es)&&(Es=e):_u(e,Es)>_u(Bs,Es)&&(Bs=e)}else Is.push(Ws=[Bs=e,Es=e]);tRs&&(Rs=t),Ns=r,Hs=e}function vu(){mu.point=bu}function xu(){Ws[0]=Bs,Ws[1]=Es,mu.point=gu,Ns=null}function ku(e,t){if(Ns){var r=e-Hs;Gs.add(ts(r)>180?r+(r>0?360:-360):r)}else Ds=e,Ps=t;Os.point(e,t),bu(e,t)}function wu(){Os.lineStart()}function Cu(){ku(Ds,Ps),Os.lineEnd(),ts(Gs)>Yl&&(Bs=-(Es=180)),Ws[0]=Bs,Ws[1]=Es,Ns=null}function _u(e,t){return(t-=e)<0?t+360:t}function Su(e,t){return e[0]-t[0]}function Au(e,t){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:tUl&&(e-=Math.round(e/Ql)*Ql),[e,t]}function zu(e,t,r){return(e%=Ql)?t||r?Wu(Ku(e),Ju(t,r)):Ku(e):t||r?Ju(t,r):Fu}function Ou(e){return function(t,r){return ts(t+=e)>Ul&&(t-=Math.round(t/Ql)*Ql),[t,r]}}function Ku(e){var t=Ou(e);return t.invert=Ou(-e),t}function Ju(e,t){var r=is(e),a=us(e),i=is(t),n=us(t);function o(e,t){var o=is(t),c=is(e)*o,l=us(e)*o,s=us(t),u=s*r+c*a;return[as(l*i-u*n,c*r-s*a),fs(u*i+l*n)]}return o.invert=function(e,t){var o=is(t),c=is(e)*o,l=us(e)*o,s=us(t),u=s*i-l*n;return[as(l*i+s*n,c*r+u*a),fs(u*r-c*a)]},o}function Vu(e){function t(t){return(t=e(t[0]*es,t[1]*es))[0]*=Xl,t[1]*=Xl,t}return e=zu(e[0]*es,e[1]*es,e.length>2?e[2]*es:0),t.invert=function(t){return(t=e.invert(t[0]*es,t[1]*es))[0]*=Xl,t[1]*=Xl,t},t}function ju(e,t,r,a,i,n){if(r){var o=is(t),c=us(t),l=a*r;null==i?(i=t+a*Ql,n=t-l/2):(i=Yu(o,i),n=Yu(o,n),(a>0?in)&&(i+=a*Ql));for(var s,u=i;a>0?u>n:u1&&t.push(t.pop().concat(t.shift()))},result:function(){var r=t;return t=[],e=null,r}}}function Uu(e,t){return ts(e[0]-t[0])=0;--n)i.point((u=s[n])[0],u[1]);else a(d.x,d.p.x,-1,i);d=d.p}s=(d=d.o).z,p=!p}while(!d.v);i.lineEnd()}}}function Qu(e){if(t=e.length){for(var t,r,a=0,i=e[0];++a=0?1:-1,M=A*S,T=M>Ul,B=m*w;if(l.add(as(B*A*us(M),g*_+B*is(M))),o+=T?S+A*Ql:S,T^y>=r^x>=r){var L=qs($s(p),$s(v));Xs(L);var E=qs(n,L);Xs(E);var R=(T^S>=0?-1:1)*fs(E[2]);(a>R||a===R&&(L[0]||L[1]))&&(c+=T^S>=0?1:-1)}}return(o<-1e-6||o0){for(h||(i.polygonStart(),h=!0),i.lineStart(),e=0;e1&&2&l&&d.push(d.pop().concat(d.shift())),o.push(d.filter(rh))}return d}}function rh(e){return e.length>1}function ah(e,t){return((e=e.x)[0]<0?e[1]-ql-Yl:ql-e[1])-((t=t.x)[0]<0?t[1]-ql-Yl:ql-t[1])}Fu.invert=Fu;var ih=th((function(){return!0}),(function(e){var t,r=NaN,a=NaN,i=NaN;return{lineStart:function(){e.lineStart(),t=1},point:function(n,o){var c=n>0?Ul:-Ul,l=ts(n-r);ts(l-Ul)0?ql:-ql),e.point(i,a),e.lineEnd(),e.lineStart(),e.point(c,a),e.point(n,a),t=0):i!==c&&l>=Ul&&(ts(r-i)Yl?rs((us(t)*(n=is(a))*us(r)-us(a)*(i=is(t))*us(e))/(i*n*o)):(t+a)/2}(r,a,n,o),e.point(i,a),e.lineEnd(),e.lineStart(),e.point(c,a),t=0),e.point(r=n,a=o),i=c},lineEnd:function(){e.lineEnd(),r=a=NaN},clean:function(){return 2-t}}}),(function(e,t,r,a){var i;if(null==e)i=r*ql,a.point(-Ul,i),a.point(0,i),a.point(Ul,i),a.point(Ul,0),a.point(Ul,-i),a.point(0,-i),a.point(-Ul,-i),a.point(-Ul,0),a.point(-Ul,i);else if(ts(e[0]-t[0])>Yl){var n=e[0]0,i=ts(t)>Yl;function n(e,r){return is(e)*is(r)>t}function o(e,r,a){var i=[1,0,0],n=qs($s(e),$s(r)),o=Us(n,n),c=n[0],l=o-c*c;if(!l)return!a&&e;var s=t*o/l,u=-t*c/l,h=qs(i,n),d=Qs(i,s);Zs(d,Qs(n,u));var p=h,y=Us(d,p),f=Us(p,p),m=y*y-f*(Us(d,d)-1);if(!(m<0)){var g=ds(m),b=Qs(p,(-y-g)/f);if(Zs(b,d),b=Ys(b),!a)return b;var v,x=e[0],k=r[0],w=e[1],C=r[1];k0^b[1]<(ts(b[0]-x)Ul^(x<=b[0]&&b[0]<=k)){var A=Qs(p,(-y+g)/f);return Zs(A,d),[b,Ys(A)]}}}function c(t,r){var i=a?e:Ul-e,n=0;return t<-i?n|=1:t>i&&(n|=2),r<-i?n|=4:r>i&&(n|=8),n}return th(n,(function(e){var t,r,l,s,u;return{lineStart:function(){s=l=!1,u=1},point:function(h,d){var p,y=[h,d],f=n(h,d),m=a?f?0:c(h,d):f?c(h+(h<0?Ul:-Ul),d):0;if(!t&&(s=l=f)&&e.lineStart(),f!==l&&(!(p=o(t,y))||Uu(t,p)||Uu(y,p))&&(y[2]=1),f!==l)u=0,f?(e.lineStart(),p=o(y,t),e.point(p[0],p[1])):(p=o(t,y),e.point(p[0],p[1],2),e.lineEnd()),t=p;else if(i&&t&&a^f){var g;m&r||!(g=o(y,t,!0))||(u=0,a?(e.lineStart(),e.point(g[0][0],g[0][1]),e.point(g[1][0],g[1][1]),e.lineEnd()):(e.point(g[1][0],g[1][1]),e.lineEnd(),e.lineStart(),e.point(g[0][0],g[0][1],3)))}!f||t&&Uu(t,y)||e.point(y[0],y[1]),t=y,l=f,r=m},lineEnd:function(){l&&e.lineEnd(),t=null},clean:function(){return u|(s&&l)<<1}}}),(function(t,a,i,n){ju(n,e,r,i,t,a)}),a?[0,-e]:[-Ul,e-Ul])}var oh,ch,lh,sh,uh=1e9,hh=-uh;function dh(e,t,r,a){function i(i,n){return e<=i&&i<=r&&t<=n&&n<=a}function n(i,n,c,s){var u=0,h=0;if(null==i||(u=o(i,c))!==(h=o(n,c))||l(i,n)<0^c>0)do{s.point(0===u||3===u?e:r,u>1?a:t)}while((u=(u+c+4)%4)!==h);else s.point(n[0],n[1])}function o(a,i){return ts(a[0]-e)0?0:3:ts(a[0]-r)0?2:1:ts(a[1]-t)0?1:0:i>0?3:2}function c(e,t){return l(e.x,t.x)}function l(e,t){var r=o(e,1),a=o(t,1);return r!==a?r-a:0===r?t[1]-e[1]:1===r?e[0]-t[0]:2===r?e[1]-t[1]:t[0]-e[0]}return function(o){var l,s,u,h,d,p,y,f,m,g,b,v=o,x=$u(),k={point:w,lineStart:function(){k.point=C,s&&s.push(u=[]);g=!0,m=!1,y=f=NaN},lineEnd:function(){l&&(C(h,d),p&&m&&x.rejoin(),l.push(x.result()));k.point=w,m&&v.lineEnd()},polygonStart:function(){v=x,l=[],s=[],b=!0},polygonEnd:function(){var t=function(){for(var t=0,r=0,i=s.length;ra&&(d-n)*(a-o)>(p-o)*(e-n)&&++t:p<=a&&(d-n)*(a-o)<(p-o)*(e-n)&&--t;return t}(),r=b&&t,i=(l=ue(l)).length;(r||i)&&(o.polygonStart(),r&&(o.lineStart(),n(null,null,1,o),o.lineEnd()),i&&Zu(l,c,t,n,o),o.polygonEnd());v=o,l=s=u=null}};function w(e,t){i(e,t)&&v.point(e,t)}function C(n,o){var c=i(n,o);if(s&&u.push([n,o]),g)h=n,d=o,p=c,g=!1,c&&(v.lineStart(),v.point(n,o));else if(c&&m)v.point(n,o);else{var l=[y=Math.max(hh,Math.min(uh,y)),f=Math.max(hh,Math.min(uh,f))],x=[n=Math.max(hh,Math.min(uh,n)),o=Math.max(hh,Math.min(uh,o))];!function(e,t,r,a,i,n){var o,c=e[0],l=e[1],s=0,u=1,h=t[0]-c,d=t[1]-l;if(o=r-c,h||!(o>0)){if(o/=h,h<0){if(o0){if(o>u)return;o>s&&(s=o)}if(o=i-c,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>s&&(s=o)}else if(h>0){if(o0)){if(o/=d,d<0){if(o0){if(o>u)return;o>s&&(s=o)}if(o=n-l,d||!(o<0)){if(o/=d,d<0){if(o>u)return;o>s&&(s=o)}else if(d>0){if(o0&&(e[0]=c+s*h,e[1]=l+s*d),u<1&&(t[0]=c+u*h,t[1]=l+u*d),!0}}}}}(l,x,e,t,r,a)?c&&(v.lineStart(),v.point(n,o),b=!1):(m||(v.lineStart(),v.point(l[0],l[1])),v.point(x[0],x[1]),c||v.lineEnd(),b=!1)}y=n,f=o,m=c}return k}}var ph={sphere:gs,point:gs,lineStart:function(){ph.point=fh,ph.lineEnd=yh},lineEnd:gs,polygonStart:gs,polygonEnd:gs};function yh(){ph.point=ph.lineEnd=gs}function fh(e,t){ch=e*=es,lh=us(t*=es),sh=is(t),ph.point=mh}function mh(e,t){e*=es;var r=us(t*=es),a=is(t),i=ts(e-ch),n=is(i),o=a*us(i),c=sh*r-lh*a*n,l=lh*r+sh*a*n;oh.add(as(ds(o*o+c*c),l)),ch=e,lh=r,sh=a}function gh(e){return oh=new C,Cs(e,ph),+oh}var bh=[null,null],vh={type:"LineString",coordinates:bh};function xh(e,t){return bh[0]=e,bh[1]=t,gh(vh)}var kh={Feature:function(e,t){return Ch(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,a=-1,i=r.length;++a0&&(i=xh(e[n],e[n-1]))>0&&r<=i&&a<=i&&(r+a-i)*(1-Math.pow((r-a)/i,2))<$l*i)return!0;r=a}return!1}function Ah(e,t){return!!eh(e.map(Mh),Th(t))}function Mh(e){return(e=e.map(Th)).pop(),e}function Th(e){return[e[0]*es,e[1]*es]}function Bh(e,t,r){var a=de(e,t-Yl,r).concat(t);return function(e){return a.map((function(t){return[e,t]}))}}function Lh(e,t,r){var a=de(e,t-Yl,r).concat(t);return function(e){return a.map((function(t){return[t,e]}))}}function Eh(){var e,t,r,a,i,n,o,c,l,s,u,h,d=10,p=d,y=90,f=360,m=2.5;function g(){return{type:"MultiLineString",coordinates:b()}}function b(){return de(ns(a/y)*y,r,y).map(u).concat(de(ns(c/f)*f,o,f).map(h)).concat(de(ns(t/d)*d,e,d).filter((function(e){return ts(e%y)>Yl})).map(l)).concat(de(ns(n/p)*p,i,p).filter((function(e){return ts(e%f)>Yl})).map(s))}return g.lines=function(){return b().map((function(e){return{type:"LineString",coordinates:e}}))},g.outline=function(){return{type:"Polygon",coordinates:[u(a).concat(h(o).slice(1),u(r).reverse().slice(1),h(c).reverse().slice(1))]}},g.extent=function(e){return arguments.length?g.extentMajor(e).extentMinor(e):g.extentMinor()},g.extentMajor=function(e){return arguments.length?(a=+e[0][0],r=+e[1][0],c=+e[0][1],o=+e[1][1],a>r&&(e=a,a=r,r=e),c>o&&(e=c,c=o,o=e),g.precision(m)):[[a,c],[r,o]]},g.extentMinor=function(r){return arguments.length?(t=+r[0][0],e=+r[1][0],n=+r[0][1],i=+r[1][1],t>e&&(r=t,t=e,e=r),n>i&&(r=n,n=i,i=r),g.precision(m)):[[t,n],[e,i]]},g.step=function(e){return arguments.length?g.stepMajor(e).stepMinor(e):g.stepMinor()},g.stepMajor=function(e){return arguments.length?(y=+e[0],f=+e[1],g):[y,f]},g.stepMinor=function(e){return arguments.length?(d=+e[0],p=+e[1],g):[d,p]},g.precision=function(d){return arguments.length?(m=+d,l=Bh(n,i,90),s=Lh(t,e,m),u=Bh(c,o,90),h=Lh(a,r,m),g):m},g.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}var Rh,Hh,Dh,Ph,Nh=e=>e,Gh=new C,Ih=new C,Wh={point:gs,lineStart:gs,lineEnd:gs,polygonStart:function(){Wh.lineStart=Fh,Wh.lineEnd=Kh},polygonEnd:function(){Wh.lineStart=Wh.lineEnd=Wh.point=gs,Gh.add(ts(Ih)),Ih=new C},result:function(){var e=Gh/2;return Gh=new C,e}};function Fh(){Wh.point=zh}function zh(e,t){Wh.point=Oh,Rh=Dh=e,Hh=Ph=t}function Oh(e,t){Ih.add(Ph*e-Dh*t),Dh=e,Ph=t}function Kh(){Oh(Rh,Hh)}var Jh=1/0,Vh=Jh,jh=-Jh,Yh=jh,$h={point:function(e,t){ejh&&(jh=e);tYh&&(Yh=t)},lineStart:gs,lineEnd:gs,polygonStart:gs,polygonEnd:gs,result:function(){var e=[[Jh,Vh],[jh,Yh]];return jh=Yh=-(Vh=Jh=1/0),e}};var Uh,qh,Zh,Qh,Xh=0,ed=0,td=0,rd=0,ad=0,id=0,nd=0,od=0,cd=0,ld={point:sd,lineStart:ud,lineEnd:pd,polygonStart:function(){ld.lineStart=yd,ld.lineEnd=fd},polygonEnd:function(){ld.point=sd,ld.lineStart=ud,ld.lineEnd=pd},result:function(){var e=cd?[nd/cd,od/cd]:id?[rd/id,ad/id]:td?[Xh/td,ed/td]:[NaN,NaN];return Xh=ed=td=rd=ad=id=nd=od=cd=0,e}};function sd(e,t){Xh+=e,ed+=t,++td}function ud(){ld.point=hd}function hd(e,t){ld.point=dd,sd(Zh=e,Qh=t)}function dd(e,t){var r=e-Zh,a=t-Qh,i=ds(r*r+a*a);rd+=i*(Zh+e)/2,ad+=i*(Qh+t)/2,id+=i,sd(Zh=e,Qh=t)}function pd(){ld.point=sd}function yd(){ld.point=md}function fd(){gd(Uh,qh)}function md(e,t){ld.point=gd,sd(Uh=Zh=e,qh=Qh=t)}function gd(e,t){var r=e-Zh,a=t-Qh,i=ds(r*r+a*a);rd+=i*(Zh+e)/2,ad+=i*(Qh+t)/2,id+=i,nd+=(i=Qh*e-Zh*t)*(Zh+e),od+=i*(Qh+t),cd+=3*i,sd(Zh=e,Qh=t)}function bd(e){this._context=e}bd.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:this._context.moveTo(e,t),this._point=1;break;case 1:this._context.lineTo(e,t);break;default:this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,Ql)}},result:gs};var vd,xd,kd,wd,Cd,_d=new C,Sd={point:gs,lineStart:function(){Sd.point=Ad},lineEnd:function(){vd&&Md(xd,kd),Sd.point=gs},polygonStart:function(){vd=!0},polygonEnd:function(){vd=null},result:function(){var e=+_d;return _d=new C,e}};function Ad(e,t){Sd.point=Md,xd=wd=e,kd=Cd=t}function Md(e,t){wd-=e,Cd-=t,_d.add(ds(wd*wd+Cd*Cd)),wd=e,Cd=t}let Td,Bd,Ld,Ed;class Rd{constructor(e){this._append=null==e?Hd:function(e){const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);if(t>15)return Hd;if(t!==Td){const e=10**t;Td=t,Bd=function(t){let r=1;this._+=t[0];for(const a=t.length;r4*t&&f--){var x=o+d,k=c+p,w=l+y,C=ds(x*x+k*k+w*w),_=fs(w/=C),S=ts(ts(w)-1)t||ts((g*B+b*L)/v-.5)>.3||o*d+c*p+l*y2?e[2]%360*es:0,B()):[m*Xl,g*Xl,b*Xl]},M.angle=function(e){return arguments.length?(v=e%360*es,B()):v*Xl},M.reflectX=function(e){return arguments.length?(x=e?-1:1,B()):x<0},M.reflectY=function(e){return arguments.length?(k=e?-1:1,B()):k<0},M.precision=function(e){return arguments.length?(o=Od(c,A=e*e),L()):ds(A)},M.fitExtent=function(e,t){return Gd(M,e,t)},M.fitSize=function(e,t){return Id(M,e,t)},M.fitWidth=function(e,t){return Wd(M,e,t)},M.fitHeight=function(e,t){return Fd(M,e,t)},function(){return t=e.apply(this,arguments),M.invert=t.invert&&T,B()}}function Yd(e){var t=0,r=Ul/3,a=jd(e),i=a(t,r);return i.parallels=function(e){return arguments.length?a(t=e[0]*es,r=e[1]*es):[t*Xl,r*Xl]},i}function $d(e,t){var r=us(e),a=(r+us(t))/2;if(ts(a)0?t<-ql+Yl&&(t=-ql+Yl):t>ql-Yl&&(t=ql-Yl);var r=i/ss(ap(t),a);return[r*us(a*e),i-r*is(a*e)]}return n.invert=function(e,t){var r=i-t,n=hs(a)*ds(e*e+r*r),o=as(e,ts(r))*hs(r);return r*a<0&&(o-=Ul*hs(e)*hs(r)),[o/a,2*rs(ss(i/n,1/a))-ql]},n}function np(e,t){return[e,t]}function op(e,t){var r=is(e),a=e===t?us(e):(r-is(t))/(t-e),i=r/a+e;if(ts(a)=0;)t+=r[a].value;else t=1;e.value=t}function Cp(e,t){e instanceof Map?(e=[void 0,e],void 0===t&&(t=Sp)):void 0===t&&(t=_p);for(var r,a,i,n,o,c=new Tp(e),l=[c];r=l.pop();)if((i=t(r.data))&&(o=(i=Array.from(i)).length))for(r.children=i,n=o-1;n>=0;--n)l.push(a=i[n]=new Tp(i[n])),a.parent=r,a.depth=r.depth+1;return c.eachBefore(Mp)}function _p(e){return e.children}function Sp(e){return Array.isArray(e)?e[1]:null}function Ap(e){void 0!==e.data.value&&(e.value=e.data.value),e.data=e.data.data}function Mp(e){var t=0;do{e.height=t}while((e=e.parent)&&e.height<++t)}function Tp(e){this.data=e,this.depth=this.height=0,this.parent=null}function Bp(e){return null==e?null:Lp(e)}function Lp(e){if("function"!=typeof e)throw new Error;return e}function Ep(){return 0}function Rp(e){return function(){return e}}dp.invert=function(e,t){for(var r,a=t,i=a*a,n=i*i*i,o=0;o<12&&(n=(i=(a-=r=(a*(cp+lp*i+n*(sp+up*i))-t)/(cp+3*lp*i+n*(7*sp+9*up*i)))*a)*i*i,!(ts(r)<$l));++o);return[hp*e*(cp+3*lp*i+n*(7*sp+9*up*i))/is(a),fs(us(a)/hp)]},pp.invert=Qd(rs),yp.invert=function(e,t){var r,a=t,i=25;do{var n=a*a,o=n*n;a-=r=(a*(1.007226+n*(.015085+o*(.028874*n-.044475-.005916*o)))-t)/(1.007226+n*(.045255+o*(.259866*n-.311325-.005916*11*o)))}while(ts(r)>Yl&&--i>0);return[e/(.8707+(n=a*a)*(n*(n*n*n*(.003971-.001529*n)-.013791)-.131979)),a]},fp.invert=Qd(fs),mp.invert=Qd((function(e){return 2*rs(e)})),gp.invert=function(e,t){return[-t,2*rs(os(e))-ql]},Tp.prototype=Cp.prototype={constructor:Tp,count:function(){return this.eachAfter(wp)},each:function(e,t){let r=-1;for(const a of this)e.call(t,a,++r,this);return this},eachAfter:function(e,t){for(var r,a,i,n=this,o=[n],c=[],l=-1;n=o.pop();)if(c.push(n),r=n.children)for(a=0,i=r.length;a=0;--a)n.push(r[a]);return this},find:function(e,t){let r=-1;for(const a of this)if(e.call(t,a,++r,this))return a},sum:function(e){return this.eachAfter((function(t){for(var r=+e(t.data)||0,a=t.children,i=a&&a.length;--i>=0;)r+=a[i].value;t.value=r}))},sort:function(e){return this.eachBefore((function(t){t.children&&t.children.sort(e)}))},path:function(e){for(var t=this,r=function(e,t){if(e===t)return e;var r=e.ancestors(),a=t.ancestors(),i=null;e=r.pop(),t=a.pop();for(;e===t;)i=e,e=r.pop(),t=a.pop();return i}(t,e),a=[t];t!==r;)t=t.parent,a.push(t);for(var i=a.length;e!==r;)a.splice(i,0,e),e=e.parent;return a},ancestors:function(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t},descendants:function(){return Array.from(this)},leaves:function(){var e=[];return this.eachBefore((function(t){t.children||e.push(t)})),e},links:function(){var e=this,t=[];return e.each((function(r){r!==e&&t.push({source:r.parent,target:r})})),t},copy:function(){return Cp(this).eachBefore(Ap)},[Symbol.iterator]:function*(){var e,t,r,a,i=this,n=[i];do{for(e=n.reverse(),n=[];i=e.pop();)if(yield i,t=i.children)for(r=0,a=t.length;r(e=(1664525*e+1013904223)%Hp)/Hp}function Pp(e,t){for(var r,a,i=0,n=(e=function(e,t){let r,a,i=e.length;for(;i;)a=t()*i--|0,r=e[i],e[i]=e[a],e[a]=r;return e}(Array.from(e),t)).length,o=[];i0&&r*r>a*a+i*i}function Wp(e,t){for(var r=0;r1e-6?(M+Math.sqrt(M*M-4*A*T))/(2*A):T/M);return{x:a+w+C*B,y:i+_+S*B,r:B}}function Kp(e,t,r){var a,i,n,o,c=e.x-t.x,l=e.y-t.y,s=c*c+l*l;s?(i=t.r+r.r,i*=i,o=e.r+r.r,i>(o*=o)?(a=(s+o-i)/(2*s),n=Math.sqrt(Math.max(0,o/s-a*a)),r.x=e.x-a*c-n*l,r.y=e.y-a*l+n*c):(a=(s+i-o)/(2*s),n=Math.sqrt(Math.max(0,i/s-a*a)),r.x=t.x+a*c-n*l,r.y=t.y+a*l+n*c)):(r.x=t.x+r.r,r.y=t.y)}function Jp(e,t){var r=e.r+t.r-1e-6,a=t.x-e.x,i=t.y-e.y;return r>0&&r*r>a*a+i*i}function Vp(e){var t=e._,r=e.next._,a=t.r+r.r,i=(t.x*r.r+r.x*t.r)/a,n=(t.y*r.r+r.y*t.r)/a;return i*i+n*n}function jp(e){this._=e,this.next=null,this.previous=null}function Yp(e,t){if(!(n=(e=function(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}(e)).length))return 0;var r,a,i,n,o,c,l,s,u,h,d;if((r=e[0]).x=0,r.y=0,!(n>1))return r.r;if(a=e[1],r.x=-a.r,a.x=r.r,a.y=0,!(n>2))return r.r+a.r;Kp(a,r,i=e[2]),r=new jp(r),a=new jp(a),i=new jp(i),r.next=i.previous=a,a.next=r.previous=i,i.next=a.previous=r;e:for(l=3;l1&&!oy(e,t););return e.slice(0,t)}function oy(e,t){if("/"===e[t]){let r=0;for(;t>0&&"\\"===e[--t];)++r;if(!(1&r))return!0}return!1}function cy(e,t){return e.parent===t.parent?1:2}function ly(e){var t=e.children;return t?t[0]:e.t}function sy(e){var t=e.children;return t?t[t.length-1]:e.t}function uy(e,t,r){var a=r/(t.i-e.i);t.c-=a,t.s+=r,e.c+=a,t.z+=r,t.m+=r}function hy(e,t,r){return e.a.parent===t.parent?e.a:r}function dy(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}function py(){var e=cy,t=1,r=1,a=null;function i(i){var l=function(e){for(var t,r,a,i,n,o=new dy(e,0),c=[o];t=c.pop();)if(a=t._.children)for(t.children=new Array(n=a.length),i=n-1;i>=0;--i)c.push(r=t.children[i]=new dy(a[i],i)),r.parent=t;return(o.parent=new dy(null,0)).children=[o],o}(i);if(l.eachAfter(n),l.parent.m=-l.z,l.eachBefore(o),a)i.eachBefore(c);else{var s=i,u=i,h=i;i.eachBefore((function(e){e.xu.x&&(u=e),e.depth>h.depth&&(h=e)}));var d=s===u?1:e(s,u)/2,p=d-s.x,y=t/(u.x+d+p),f=r/(h.depth||1);i.eachBefore((function(e){e.x=(e.x+p)*y,e.y=e.depth*f}))}return i}function n(t){var r=t.children,a=t.parent.children,i=t.i?a[t.i-1]:null;if(r){!function(e){for(var t,r=0,a=0,i=e.children,n=i.length;--n>=0;)(t=i[n]).z+=r,t.m+=r,r+=t.s+(a+=t.c)}(t);var n=(r[0].z+r[r.length-1].z)/2;i?(t.z=i.z+e(t._,i._),t.m=t.z-n):t.z=n}else i&&(t.z=i.z+e(t._,i._));t.parent.A=function(t,r,a){if(r){for(var i,n=t,o=t,c=r,l=n.parent.children[0],s=n.m,u=o.m,h=c.m,d=l.m;c=sy(c),n=ly(n),c&&n;)l=ly(l),(o=sy(o)).a=t,(i=c.z+h-n.z-s+e(c._,n._))>0&&(uy(hy(c,t,a),t,i),s+=i,u+=i),h+=c.m,s+=n.m,d+=l.m,u+=o.m;c&&!sy(o)&&(o.t=c,o.m+=h-u),n&&!ly(l)&&(l.t=n,l.m+=s-d,a=t)}return a}(t,i,t.parent.A||a[0])}function o(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function c(e){e.x*=t,e.y=e.depth*r}return i.separation=function(t){return arguments.length?(e=t,i):e},i.size=function(e){return arguments.length?(a=!1,t=+e[0],r=+e[1],i):a?null:[t,r]},i.nodeSize=function(e){return arguments.length?(a=!0,t=+e[0],r=+e[1],i):a?[t,r]:null},i}function yy(e,t,r,a,i){for(var n,o=e.children,c=-1,l=o.length,s=e.value&&(i-r)/e.value;++cd&&(d=c),m=u*u*f,(p=Math.max(d/m,m/h))>y){u-=c;break}y=p}g.push(o={value:u,dice:l1?t:1)},r}(fy);var by=function e(t){function r(e,r,a,i,n){if((o=e._squarify)&&o.ratio===t)for(var o,c,l,s,u,h=-1,d=o.length,p=e.value;++h1?t:1)},r}(fy);function vy(e,t,r){return(t[0]-e[0])*(r[1]-e[1])-(t[1]-e[1])*(r[0]-e[0])}function xy(e,t){return e[0]-t[0]||e[1]-t[1]}function ky(e){const t=e.length,r=[0,1];let a,i=2;for(a=2;a1&&vy(e[r[i-2]],e[r[i-1]],e[a])<=0;)--i;r[i++]=a}return r.slice(0,i)}var wy=Math.random,Cy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,1===arguments.length?(r=e,e=0):r-=e,function(){return t()*r+e}}return r.source=e,r}(wy),_y=function e(t){function r(e,r){return arguments.length<2&&(r=e,e=0),e=Math.floor(e),r=Math.floor(r)-e,function(){return Math.floor(t()*r+e)}}return r.source=e,r}(wy),Sy=function e(t){function r(e,r){var a,i;return e=null==e?0:+e,r=null==r?1:+r,function(){var n;if(null!=a)n=a,a=null;else do{a=2*t()-1,n=2*t()-1,i=a*a+n*n}while(!i||i>1);return e+r*n*Math.sqrt(-2*Math.log(i)/i)}}return r.source=e,r}(wy),Ay=function e(t){var r=Sy.source(t);function a(){var e=r.apply(this,arguments);return function(){return Math.exp(e())}}return a.source=e,a}(wy),My=function e(t){function r(e){return(e=+e)<=0?()=>0:function(){for(var r=0,a=e;a>1;--a)r+=t();return r+a*t()}}return r.source=e,r}(wy),Ty=function e(t){var r=My.source(t);function a(e){if(0==(e=+e))return t;var a=r(e);return function(){return a()/e}}return a.source=e,a}(wy),By=function e(t){function r(e){return function(){return-Math.log1p(-t())/e}}return r.source=e,r}(wy),Ly=function e(t){function r(e){if((e=+e)<0)throw new RangeError("invalid alpha");return e=1/-e,function(){return Math.pow(1-t(),e)}}return r.source=e,r}(wy),Ey=function e(t){function r(e){if((e=+e)<0||e>1)throw new RangeError("invalid p");return function(){return Math.floor(t()+e)}}return r.source=e,r}(wy),Ry=function e(t){function r(e){if((e=+e)<0||e>1)throw new RangeError("invalid p");return 0===e?()=>1/0:1===e?()=>1:(e=Math.log1p(-e),function(){return 1+Math.floor(Math.log1p(-t())/e)})}return r.source=e,r}(wy),Hy=function e(t){var r=Sy.source(t)();function a(e,a){if((e=+e)<0)throw new RangeError("invalid k");if(0===e)return()=>0;if(a=null==a?1:+a,1===e)return()=>-Math.log1p(-t())*a;var i=(e<1?e+1:e)-1/3,n=1/(3*Math.sqrt(i)),o=e<1?()=>Math.pow(t(),1/e):()=>1;return function(){do{do{var e=r(),c=1+n*e}while(c<=0);c*=c*c;var l=1-t()}while(l>=1-.0331*e*e*e*e&&Math.log(l)>=.5*e*e+i*(1-c+Math.log(c)));return i*c*o()*a}}return a.source=e,a}(wy),Dy=function e(t){var r=Hy.source(t);function a(e,t){var a=r(e),i=r(t);return function(){var e=a();return 0===e?0:e/(e+i())}}return a.source=e,a}(wy),Py=function e(t){var r=Ry.source(t),a=Dy.source(t);function i(e,t){return e=+e,(t=+t)>=1?()=>e:t<=0?()=>0:function(){for(var i=0,n=e,o=t;n*o>16&&n*(1-o)>16;){var c=Math.floor((n+1)*o),l=a(c,n-c+1)();l<=o?(i+=c,n-=c,o=(o-l)/(1-l)):(n=c-1,o/=l)}for(var s=o<.5,u=r(s?o:1-o),h=u(),d=0;h<=n;++d)h+=u();return i+(s?d:n-d)}}return i.source=e,i}(wy),Ny=function e(t){function r(e,r,a){var i;return 0==(e=+e)?i=e=>-Math.log(e):(e=1/e,i=t=>Math.pow(t,e)),r=null==r?0:+r,a=null==a?1:+a,function(){return r+a*i(-Math.log1p(-t()))}}return r.source=e,r}(wy),Gy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*Math.tan(Math.PI*t())}}return r.source=e,r}(wy),Iy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,function(){var a=t();return e+r*Math.log(a/(1-a))}}return r.source=e,r}(wy),Wy=function e(t){var r=Hy.source(t),a=Py.source(t);function i(e){return function(){for(var i=0,n=e;n>16;){var o=Math.floor(.875*n),c=r(o)();if(c>n)return i+a(o-1,n/c)();i+=o,n-=c}for(var l=-Math.log1p(-t()),s=0;l<=n;++s)l-=Math.log1p(-t());return i+s}}return i.source=e,i}(wy);const Fy=1/4294967296;function zy(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function Oy(e,t){switch(arguments.length){case 0:break;case 1:"function"==typeof e?this.interpolator(e):this.range(e);break;default:this.domain(e),"function"==typeof t?this.interpolator(t):this.range(t)}return this}const Ky=Symbol("implicit");function Jy(){var e=new _,t=[],r=[],a=Ky;function i(i){let n=e.get(i);if(void 0===n){if(a!==Ky)return a;e.set(i,n=t.push(i)-1)}return r[n%r.length]}return i.domain=function(r){if(!arguments.length)return t.slice();t=[],e=new _;for(const a of r)e.has(a)||e.set(a,t.push(a)-1);return i},i.range=function(e){return arguments.length?(r=Array.from(e),i):r.slice()},i.unknown=function(e){return arguments.length?(a=e,i):a},i.copy=function(){return Jy(t,r).unknown(a)},zy.apply(i,arguments),i}function Vy(){var e,t,r=Jy().unknown(void 0),a=r.domain,i=r.range,n=0,o=1,c=!1,l=0,s=0,u=.5;function h(){var r=a().length,h=ot&&(r=e,e=t,t=r),function(r){return Math.max(e,Math.min(t,r))}}(o[0],o[e-1])),a=e>2?Qy:Zy,i=n=null,h}function h(t){return null==t||isNaN(t=+t)?r:(i||(i=a(o.map(e),c,l)))(e(s(t)))}return h.invert=function(r){return s(t((n||(n=a(c,o.map(e),Wa)))(r)))},h.domain=function(e){return arguments.length?(o=Array.from(e,Yy),u()):o.slice()},h.range=function(e){return arguments.length?(c=Array.from(e),u()):c.slice()},h.rangeRound=function(e){return c=Array.from(e),l=Va,u()},h.clamp=function(e){return arguments.length?(s=!!e||Uy,u()):s!==Uy},h.interpolate=function(e){return arguments.length?(l=e,u()):l},h.unknown=function(e){return arguments.length?(r=e,h):r},function(r,a){return e=r,t=a,u()}}function tf(){return ef()(Uy,Uy)}function rf(e,t,r,a){var i,n=q(e,t,r);switch((a=Rl(null==a?",f":a)).type){case"s":var o=Math.max(Math.abs(e),Math.abs(t));return null!=a.precision||isNaN(i=Vl(n,o))||(a.precision=i),Wl(a,o);case"":case"e":case"g":case"p":case"r":null!=a.precision||isNaN(i=jl(n,Math.max(Math.abs(e),Math.abs(t))))||(a.precision=i-("e"===a.type));break;case"f":case"%":null!=a.precision||isNaN(i=Jl(n))||(a.precision=i-2*("%"===a.type))}return Il(a)}function af(e){var t=e.domain;return e.ticks=function(e){var r=t();return $(r[0],r[r.length-1],null==e?10:e)},e.tickFormat=function(e,r){var a=t();return rf(a[0],a[a.length-1],null==e?10:e,r)},e.nice=function(r){null==r&&(r=10);var a,i,n=t(),o=0,c=n.length-1,l=n[o],s=n[c],u=10;for(s0;){if((i=U(l,s,r))===a)return n[o]=l,n[c]=s,t(n);if(i>0)l=Math.floor(l/i)*i,s=Math.ceil(s/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,s=Math.floor(s*i)/i}a=i}return e},e}function nf(e,t){var r,a=0,i=(e=e.slice()).length-1,n=e[a],o=e[i];return o-e(-t,r)}function df(e){const t=e(of,cf),r=t.domain;let a,i,n=10;function o(){return a=function(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}(n),i=function(e){return 10===e?uf:e===Math.E?Math.exp:t=>Math.pow(e,t)}(n),r()[0]<0?(a=hf(a),i=hf(i),e(lf,sf)):e(of,cf),t}return t.base=function(e){return arguments.length?(n=+e,o()):n},t.domain=function(e){return arguments.length?(r(e),o()):r()},t.ticks=e=>{const t=r();let o=t[0],c=t[t.length-1];const l=c0){for(;h<=d;++h)for(s=1;sc)break;y.push(u)}}else for(;h<=d;++h)for(s=n-1;s>=1;--s)if(u=h>0?s/i(-h):s*i(h),!(uc)break;y.push(u)}2*y.length{if(null==e&&(e=10),null==r&&(r=10===n?"s":","),"function"!=typeof r&&(n%1||null!=(r=Rl(r)).precision||(r.trim=!0),r=Il(r)),e===1/0)return r;const o=Math.max(1,n*e/t.ticks().length);return e=>{let t=e/i(Math.round(a(e)));return t*nr(nf(r(),{floor:e=>i(Math.floor(a(e))),ceil:e=>i(Math.ceil(a(e)))})),t}function pf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function yf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function ff(e){var t=1,r=e(pf(t),yf(t));return r.constant=function(r){return arguments.length?e(pf(t=+r),yf(t)):t},af(r)}function mf(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function gf(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function bf(e){return e<0?-e*e:e*e}function vf(e){var t=e(Uy,Uy),r=1;return t.exponent=function(t){return arguments.length?1===(r=+t)?e(Uy,Uy):.5===r?e(gf,bf):e(mf(r),mf(1/r)):r},af(t)}function xf(){var e=vf(ef());return e.copy=function(){return Xy(e,xf()).exponent(e.exponent())},zy.apply(e,arguments),e}function kf(e){return Math.sign(e)*e*e}const wf=new Date,Cf=new Date;function _f(e,t,r,a){function i(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=r=>(e(r=new Date(r-1)),t(r,1),e(r),r),i.round=e=>{const t=i(e),r=i.ceil(e);return e-t(t(e=new Date(+e),null==r?1:Math.floor(r)),e),i.range=(r,a,n)=>{const o=[];if(r=i.ceil(r),n=null==n?1:Math.floor(n),!(r0))return o;let c;do{o.push(c=new Date(+r)),t(r,n),e(r)}while(c_f((t=>{if(t>=t)for(;e(t),!r(t);)t.setTime(t-1)}),((e,a)=>{if(e>=e)if(a<0)for(;++a<=0;)for(;t(e,-1),!r(e););else for(;--a>=0;)for(;t(e,1),!r(e););})),r&&(i.count=(t,a)=>(wf.setTime(+t),Cf.setTime(+a),e(wf),e(Cf),Math.floor(r(wf,Cf))),i.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?i.filter(a?t=>a(t)%e==0:t=>i.count(0,t)%e==0):i:null)),i}const Sf=_f((()=>{}),((e,t)=>{e.setTime(+e+t)}),((e,t)=>t-e));Sf.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?_f((t=>{t.setTime(Math.floor(t/e)*e)}),((t,r)=>{t.setTime(+t+r*e)}),((t,r)=>(r-t)/e)):Sf:null);const Af=Sf.range,Mf=1e3,Tf=6e4,Bf=36e5,Lf=864e5,Ef=6048e5,Rf=2592e6,Hf=31536e6,Df=_f((e=>{e.setTime(e-e.getMilliseconds())}),((e,t)=>{e.setTime(+e+t*Mf)}),((e,t)=>(t-e)/Mf),(e=>e.getUTCSeconds())),Pf=Df.range,Nf=_f((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Mf)}),((e,t)=>{e.setTime(+e+t*Tf)}),((e,t)=>(t-e)/Tf),(e=>e.getMinutes())),Gf=Nf.range,If=_f((e=>{e.setUTCSeconds(0,0)}),((e,t)=>{e.setTime(+e+t*Tf)}),((e,t)=>(t-e)/Tf),(e=>e.getUTCMinutes())),Wf=If.range,Ff=_f((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Mf-e.getMinutes()*Tf)}),((e,t)=>{e.setTime(+e+t*Bf)}),((e,t)=>(t-e)/Bf),(e=>e.getHours())),zf=Ff.range,Of=_f((e=>{e.setUTCMinutes(0,0,0)}),((e,t)=>{e.setTime(+e+t*Bf)}),((e,t)=>(t-e)/Bf),(e=>e.getUTCHours())),Kf=Of.range,Jf=_f((e=>e.setHours(0,0,0,0)),((e,t)=>e.setDate(e.getDate()+t)),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Tf)/Lf),(e=>e.getDate()-1)),Vf=Jf.range,jf=_f((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/Lf),(e=>e.getUTCDate()-1)),Yf=jf.range,$f=_f((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/Lf),(e=>Math.floor(e/Lf))),Uf=$f.range;function qf(e){return _f((t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),((e,t)=>{e.setDate(e.getDate()+7*t)}),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Tf)/Ef))}const Zf=qf(0),Qf=qf(1),Xf=qf(2),em=qf(3),tm=qf(4),rm=qf(5),am=qf(6),im=Zf.range,nm=Qf.range,om=Xf.range,cm=em.range,lm=tm.range,sm=rm.range,um=am.range;function hm(e){return _f((t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)}),((e,t)=>(t-e)/Ef))}const dm=hm(0),pm=hm(1),ym=hm(2),fm=hm(3),mm=hm(4),gm=hm(5),bm=hm(6),vm=dm.range,xm=pm.range,km=ym.range,wm=fm.range,Cm=mm.range,_m=gm.range,Sm=bm.range,Am=_f((e=>{e.setDate(1),e.setHours(0,0,0,0)}),((e,t)=>{e.setMonth(e.getMonth()+t)}),((e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())),(e=>e.getMonth())),Mm=Am.range,Tm=_f((e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)}),((e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())),(e=>e.getUTCMonth())),Bm=Tm.range,Lm=_f((e=>{e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,t)=>{e.setFullYear(e.getFullYear()+t)}),((e,t)=>t.getFullYear()-e.getFullYear()),(e=>e.getFullYear()));Lm.every=e=>isFinite(e=Math.floor(e))&&e>0?_f((t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,r)=>{t.setFullYear(t.getFullYear()+r*e)})):null;const Em=Lm.range,Rm=_f((e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)}),((e,t)=>t.getUTCFullYear()-e.getUTCFullYear()),(e=>e.getUTCFullYear()));Rm.every=e=>isFinite(e=Math.floor(e))&&e>0?_f((t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)})):null;const Hm=Rm.range;function Dm(e,t,r,i,n,o){const c=[[Df,1,Mf],[Df,5,5e3],[Df,15,15e3],[Df,30,3e4],[o,1,Tf],[o,5,3e5],[o,15,9e5],[o,30,18e5],[n,1,Bf],[n,3,108e5],[n,6,216e5],[n,12,432e5],[i,1,Lf],[i,2,1728e5],[r,1,Ef],[t,1,Rf],[t,3,7776e6],[e,1,Hf]];function l(t,r,i){const n=Math.abs(r-t)/i,o=a((([,,e])=>e)).right(c,n);if(o===c.length)return e.every(q(t/Hf,r/Hf,i));if(0===o)return Sf.every(Math.max(q(t,r,i),1));const[l,s]=c[n/c[o-1][2]=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:sb,s:ub,S:Lg,u:Eg,U:Rg,V:Dg,w:Pg,W:Ng,x:null,X:null,y:Gg,Y:Wg,Z:zg,"%":lb},x={a:function(e){return o[e.getUTCDay()]},A:function(e){return n[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return c[e.getUTCMonth()]},c:null,d:Og,e:Og,f:Yg,g:ib,G:ob,H:Kg,I:Jg,j:Vg,L:jg,m:$g,M:Ug,p:function(e){return i[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:sb,s:ub,S:qg,u:Zg,U:Qg,V:eb,w:tb,W:rb,x:null,X:null,y:ab,Y:nb,Z:cb,"%":lb},k={a:function(e,t,r){var a=p.exec(t.slice(r));return a?(e.w=y.get(a[0].toLowerCase()),r+a[0].length):-1},A:function(e,t,r){var a=h.exec(t.slice(r));return a?(e.w=d.get(a[0].toLowerCase()),r+a[0].length):-1},b:function(e,t,r){var a=g.exec(t.slice(r));return a?(e.m=b.get(a[0].toLowerCase()),r+a[0].length):-1},B:function(e,t,r){var a=f.exec(t.slice(r));return a?(e.m=m.get(a[0].toLowerCase()),r+a[0].length):-1},c:function(e,r,a){return _(e,t,r,a)},d:dg,e:dg,f:bg,g:lg,G:cg,H:yg,I:yg,j:pg,L:gg,m:hg,M:fg,p:function(e,t,r){var a=s.exec(t.slice(r));return a?(e.p=u.get(a[0].toLowerCase()),r+a[0].length):-1},q:ug,Q:xg,s:kg,S:mg,u:ag,U:ig,V:ng,w:rg,W:og,x:function(e,t,a){return _(e,r,t,a)},X:function(e,t,r){return _(e,a,t,r)},y:lg,Y:cg,Z:sg,"%":vg};function w(e,t){return function(r){var a,i,n,o=[],c=-1,l=0,s=e.length;for(r instanceof Date||(r=new Date(+r));++c53)return null;"w"in n||(n.w=1),"Z"in n?(i=(a=Fm(zm(n.y,0,1))).getUTCDay(),a=i>4||0===i?pm.ceil(a):pm(a),a=jf.offset(a,7*(n.V-1)),n.y=a.getUTCFullYear(),n.m=a.getUTCMonth(),n.d=a.getUTCDate()+(n.w+6)%7):(i=(a=Wm(zm(n.y,0,1))).getDay(),a=i>4||0===i?Qf.ceil(a):Qf(a),a=Jf.offset(a,7*(n.V-1)),n.y=a.getFullYear(),n.m=a.getMonth(),n.d=a.getDate()+(n.w+6)%7)}else("W"in n||"U"in n)&&("w"in n||(n.w="u"in n?n.u%7:"W"in n?1:0),i="Z"in n?Fm(zm(n.y,0,1)).getUTCDay():Wm(zm(n.y,0,1)).getDay(),n.m=0,n.d="W"in n?(n.w+6)%7+7*n.W-(i+5)%7:n.w+7*n.U-(i+6)%7);return"Z"in n?(n.H+=n.Z/100|0,n.M+=n.Z%100,Fm(n)):Wm(n)}}function _(e,t,r,a){for(var i,n,o=0,c=t.length,l=r.length;o=l)return-1;if(37===(i=t.charCodeAt(o++))){if(i=t.charAt(o++),!(n=k[i in $m?t.charAt(o++):i])||(a=n(e,r,a))<0)return-1}else if(i!=r.charCodeAt(a++))return-1}return a}return v.x=w(r,v),v.X=w(a,v),v.c=w(t,v),x.x=w(r,x),x.X=w(a,x),x.c=w(t,x),{format:function(e){var t=w(e+="",v);return t.toString=function(){return e},t},parse:function(e){var t=C(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=w(e+="",x);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+="",!0);return t.toString=function(){return e},t}}}var Km,Jm,Vm,jm,Ym,$m={"-":"",_:" ",0:"0"},Um=/^\s*\d+/,qm=/^%/,Zm=/[\\^$*+?|[\]().{}]/g;function Qm(e,t,r){var a=e<0?"-":"",i=(a?-e:e)+"",n=i.length;return a+(n[e.toLowerCase(),t])))}function rg(e,t,r){var a=Um.exec(t.slice(r,r+1));return a?(e.w=+a[0],r+a[0].length):-1}function ag(e,t,r){var a=Um.exec(t.slice(r,r+1));return a?(e.u=+a[0],r+a[0].length):-1}function ig(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.U=+a[0],r+a[0].length):-1}function ng(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.V=+a[0],r+a[0].length):-1}function og(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.W=+a[0],r+a[0].length):-1}function cg(e,t,r){var a=Um.exec(t.slice(r,r+4));return a?(e.y=+a[0],r+a[0].length):-1}function lg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.y=+a[0]+(+a[0]>68?1900:2e3),r+a[0].length):-1}function sg(e,t,r){var a=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return a?(e.Z=a[1]?0:-(a[2]+(a[3]||"00")),r+a[0].length):-1}function ug(e,t,r){var a=Um.exec(t.slice(r,r+1));return a?(e.q=3*a[0]-3,r+a[0].length):-1}function hg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.m=a[0]-1,r+a[0].length):-1}function dg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.d=+a[0],r+a[0].length):-1}function pg(e,t,r){var a=Um.exec(t.slice(r,r+3));return a?(e.m=0,e.d=+a[0],r+a[0].length):-1}function yg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.H=+a[0],r+a[0].length):-1}function fg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.M=+a[0],r+a[0].length):-1}function mg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.S=+a[0],r+a[0].length):-1}function gg(e,t,r){var a=Um.exec(t.slice(r,r+3));return a?(e.L=+a[0],r+a[0].length):-1}function bg(e,t,r){var a=Um.exec(t.slice(r,r+6));return a?(e.L=Math.floor(a[0]/1e3),r+a[0].length):-1}function vg(e,t,r){var a=qm.exec(t.slice(r,r+1));return a?r+a[0].length:-1}function xg(e,t,r){var a=Um.exec(t.slice(r));return a?(e.Q=+a[0],r+a[0].length):-1}function kg(e,t,r){var a=Um.exec(t.slice(r));return a?(e.s=+a[0],r+a[0].length):-1}function wg(e,t){return Qm(e.getDate(),t,2)}function Cg(e,t){return Qm(e.getHours(),t,2)}function _g(e,t){return Qm(e.getHours()%12||12,t,2)}function Sg(e,t){return Qm(1+Jf.count(Lm(e),e),t,3)}function Ag(e,t){return Qm(e.getMilliseconds(),t,3)}function Mg(e,t){return Ag(e,t)+"000"}function Tg(e,t){return Qm(e.getMonth()+1,t,2)}function Bg(e,t){return Qm(e.getMinutes(),t,2)}function Lg(e,t){return Qm(e.getSeconds(),t,2)}function Eg(e){var t=e.getDay();return 0===t?7:t}function Rg(e,t){return Qm(Zf.count(Lm(e)-1,e),t,2)}function Hg(e){var t=e.getDay();return t>=4||0===t?tm(e):tm.ceil(e)}function Dg(e,t){return e=Hg(e),Qm(tm.count(Lm(e),e)+(4===Lm(e).getDay()),t,2)}function Pg(e){return e.getDay()}function Ng(e,t){return Qm(Qf.count(Lm(e)-1,e),t,2)}function Gg(e,t){return Qm(e.getFullYear()%100,t,2)}function Ig(e,t){return Qm((e=Hg(e)).getFullYear()%100,t,2)}function Wg(e,t){return Qm(e.getFullYear()%1e4,t,4)}function Fg(e,t){var r=e.getDay();return Qm((e=r>=4||0===r?tm(e):tm.ceil(e)).getFullYear()%1e4,t,4)}function zg(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Qm(t/60|0,"0",2)+Qm(t%60,"0",2)}function Og(e,t){return Qm(e.getUTCDate(),t,2)}function Kg(e,t){return Qm(e.getUTCHours(),t,2)}function Jg(e,t){return Qm(e.getUTCHours()%12||12,t,2)}function Vg(e,t){return Qm(1+jf.count(Rm(e),e),t,3)}function jg(e,t){return Qm(e.getUTCMilliseconds(),t,3)}function Yg(e,t){return jg(e,t)+"000"}function $g(e,t){return Qm(e.getUTCMonth()+1,t,2)}function Ug(e,t){return Qm(e.getUTCMinutes(),t,2)}function qg(e,t){return Qm(e.getUTCSeconds(),t,2)}function Zg(e){var t=e.getUTCDay();return 0===t?7:t}function Qg(e,t){return Qm(dm.count(Rm(e)-1,e),t,2)}function Xg(e){var t=e.getUTCDay();return t>=4||0===t?mm(e):mm.ceil(e)}function eb(e,t){return e=Xg(e),Qm(mm.count(Rm(e),e)+(4===Rm(e).getUTCDay()),t,2)}function tb(e){return e.getUTCDay()}function rb(e,t){return Qm(pm.count(Rm(e)-1,e),t,2)}function ab(e,t){return Qm(e.getUTCFullYear()%100,t,2)}function ib(e,t){return Qm((e=Xg(e)).getUTCFullYear()%100,t,2)}function nb(e,t){return Qm(e.getUTCFullYear()%1e4,t,4)}function ob(e,t){var r=e.getUTCDay();return Qm((e=r>=4||0===r?mm(e):mm.ceil(e)).getUTCFullYear()%1e4,t,4)}function cb(){return"+0000"}function lb(){return"%"}function sb(e){return+e}function ub(e){return Math.floor(+e/1e3)}function hb(e){return Km=Om(e),Jm=Km.format,Vm=Km.parse,jm=Km.utcFormat,Ym=Km.utcParse,Km}hb({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var db="%Y-%m-%dT%H:%M:%S.%LZ";var pb=Date.prototype.toISOString?function(e){return e.toISOString()}:jm(db);var yb=+new Date("2000-01-01T00:00:00.000Z")?function(e){var t=new Date(e);return isNaN(t)?null:t}:Ym(db);function fb(e){return new Date(e)}function mb(e){return e instanceof Date?+e:+new Date(+e)}function gb(e,t,r,a,i,n,o,c,l,s){var u=tf(),h=u.invert,d=u.domain,p=s(".%L"),y=s(":%S"),f=s("%I:%M"),m=s("%I %p"),g=s("%a %d"),b=s("%b %d"),v=s("%B"),x=s("%Y");function k(e){return(l(e)Ha(e[e.length-1]),Nb=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Cb),Gb=Pb(Nb),Ib=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Cb),Wb=Pb(Ib),Fb=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Cb),zb=Pb(Fb),Ob=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Cb),Kb=Pb(Ob),Jb=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Cb),Vb=Pb(Jb),jb=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Cb),Yb=Pb(jb),$b=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Cb),Ub=Pb($b),qb=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Cb),Zb=Pb(qb),Qb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Cb),Xb=Pb(Qb),ev=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Cb),tv=Pb(ev),rv=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Cb),av=Pb(rv),iv=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Cb),nv=Pb(iv),ov=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Cb),cv=Pb(ov),lv=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Cb),sv=Pb(lv),uv=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Cb),hv=Pb(uv),dv=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Cb),pv=Pb(dv),yv=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Cb),fv=Pb(yv),mv=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Cb),gv=Pb(mv),bv=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Cb),vv=Pb(bv),xv=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Cb),kv=Pb(xv),wv=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Cb),Cv=Pb(wv),_v=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Cb),Sv=Pb(_v),Av=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Cb),Mv=Pb(Av),Tv=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Cb),Bv=Pb(Tv),Lv=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Cb),Ev=Pb(Lv),Rv=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Cb),Hv=Pb(Rv),Dv=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Cb),Pv=Pb(Dv);var Nv=si(ka(300,.5,0),ka(-240,.5,1)),Gv=si(ka(-100,.75,.35),ka(80,1.5,.8)),Iv=si(ka(260,.75,.35),ka(80,1.5,.8)),Wv=ka();var Fv=Hr(),zv=Math.PI/3,Ov=2*Math.PI/3;function Kv(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var Jv=Kv(Cb("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),Vv=Kv(Cb("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),jv=Kv(Cb("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),Yv=Kv(Cb("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function $v(e){return function(){return e}}const Uv=Math.abs,qv=Math.atan2,Zv=Math.cos,Qv=Math.max,Xv=Math.min,ex=Math.sin,tx=Math.sqrt,rx=1e-12,ax=Math.PI,ix=ax/2,nx=2*ax;function ox(e){return e>=1?ix:e<=-1?-ix:Math.asin(e)}function cx(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(null==r)t=null;else{const e=Math.floor(r);if(!(e>=0))throw new RangeError(`invalid digits: ${r}`);t=e}return e},()=>new So(t)}function lx(e){return e.innerRadius}function sx(e){return e.outerRadius}function ux(e){return e.startAngle}function hx(e){return e.endAngle}function dx(e){return e&&e.padAngle}function px(e,t,r,a,i,n,o){var c=e-r,l=t-a,s=(o?n:-n)/tx(c*c+l*l),u=s*l,h=-s*c,d=e+u,p=t+h,y=r+u,f=a+h,m=(d+y)/2,g=(p+f)/2,b=y-d,v=f-p,x=b*b+v*v,k=i-n,w=d*f-y*p,C=(v<0?-1:1)*tx(Qv(0,k*k*x-w*w)),_=(w*v-b*C)/x,S=(-w*b-v*C)/x,A=(w*v+b*C)/x,M=(-w*b+v*C)/x,T=_-m,B=S-g,L=A-m,E=M-g;return T*T+B*B>L*L+E*E&&(_=A,S=M),{cx:_,cy:S,x01:-u,y01:-h,x11:_*(i/k-1),y11:S*(i/k-1)}}var yx=Array.prototype.slice;function fx(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function mx(e){this._context=e}function gx(e){return new mx(e)}function bx(e){return e[0]}function vx(e){return e[1]}function xx(e,t){var r=$v(!0),a=null,i=gx,n=null,o=cx(c);function c(c){var l,s,u,h=(c=fx(c)).length,d=!1;for(null==a&&(n=i(u=o())),l=0;l<=h;++l)!(l=h;--d)c.point(g[d],b[d]);c.lineEnd(),c.areaEnd()}m&&(g[u]=+e(p,u,s),b[u]=+t(p,u,s),c.point(a?+a(p,u,s):g[u],r?+r(p,u,s):b[u]))}if(y)return c=null,y+""||null}function u(){return xx().defined(i).curve(o).context(n)}return e="function"==typeof e?e:void 0===e?bx:$v(+e),t="function"==typeof t?t:$v(void 0===t?0:+t),r="function"==typeof r?r:void 0===r?vx:$v(+r),s.x=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),a=null,s):e},s.x0=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),s):e},s.x1=function(e){return arguments.length?(a=null==e?null:"function"==typeof e?e:$v(+e),s):a},s.y=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),r=null,s):t},s.y0=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),s):t},s.y1=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:$v(+e),s):r},s.lineX0=s.lineY0=function(){return u().x(e).y(t)},s.lineY1=function(){return u().x(e).y(r)},s.lineX1=function(){return u().x(a).y(t)},s.defined=function(e){return arguments.length?(i="function"==typeof e?e:$v(!!e),s):i},s.curve=function(e){return arguments.length?(o=e,null!=n&&(c=o(n)),s):o},s.context=function(e){return arguments.length?(null==e?n=c=null:c=o(n=e),s):n},s}function wx(e,t){return te?1:t>=e?0:NaN}function Cx(e){return e}mx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};var _x=Ax(gx);function Sx(e){this._curve=e}function Ax(e){function t(t){return new Sx(e(t))}return t._curve=e,t}function Mx(e){var t=e.curve;return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e.curve=function(e){return arguments.length?t(Ax(e)):t()._curve},e}function Tx(){return Mx(xx().curve(_x))}function Bx(){var e=kx().curve(_x),t=e.curve,r=e.lineX0,a=e.lineX1,i=e.lineY0,n=e.lineY1;return e.angle=e.x,delete e.x,e.startAngle=e.x0,delete e.x0,e.endAngle=e.x1,delete e.x1,e.radius=e.y,delete e.y,e.innerRadius=e.y0,delete e.y0,e.outerRadius=e.y1,delete e.y1,e.lineStartAngle=function(){return Mx(r())},delete e.lineX0,e.lineEndAngle=function(){return Mx(a())},delete e.lineX1,e.lineInnerRadius=function(){return Mx(i())},delete e.lineY0,e.lineOuterRadius=function(){return Mx(n())},delete e.lineY1,e.curve=function(e){return arguments.length?t(Ax(e)):t()._curve},e}function Lx(e,t){return[(t=+t)*Math.cos(e-=Math.PI/2),t*Math.sin(e)]}Sx.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(e,t){this._curve.point(t*Math.sin(e),t*-Math.cos(e))}};class Ex{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t)}this._x0=e,this._y0=t}}class Rx{constructor(e){this._context=e}lineStart(){this._point=0}lineEnd(){}point(e,t){if(e=+e,t=+t,0===this._point)this._point=1;else{const r=Lx(this._x0,this._y0),a=Lx(this._x0,this._y0=(this._y0+t)/2),i=Lx(e,this._y0),n=Lx(e,t);this._context.moveTo(...r),this._context.bezierCurveTo(...a,...i,...n)}this._x0=e,this._y0=t}}function Hx(e){return new Ex(e,!0)}function Dx(e){return new Ex(e,!1)}function Px(e){return new Rx(e)}function Nx(e){return e.source}function Gx(e){return e.target}function Ix(e){let t=Nx,r=Gx,a=bx,i=vx,n=null,o=null,c=cx(l);function l(){let l;const s=yx.call(arguments),u=t.apply(this,s),h=r.apply(this,s);if(null==n&&(o=e(l=c())),o.lineStart(),s[0]=u,o.point(+a.apply(this,s),+i.apply(this,s)),s[0]=h,o.point(+a.apply(this,s),+i.apply(this,s)),o.lineEnd(),l)return o=null,l+""||null}return l.source=function(e){return arguments.length?(t=e,l):t},l.target=function(e){return arguments.length?(r=e,l):r},l.x=function(e){return arguments.length?(a="function"==typeof e?e:$v(+e),l):a},l.y=function(e){return arguments.length?(i="function"==typeof e?e:$v(+e),l):i},l.context=function(t){return arguments.length?(null==t?n=o=null:o=e(n=t),l):n},l}function Wx(){const e=Ix(Px);return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e}const Fx=tx(3);var zx={draw(e,t){const r=.59436*tx(t+Xv(t/28,.75)),a=r/2,i=a*Fx;e.moveTo(0,r),e.lineTo(0,-r),e.moveTo(-i,-a),e.lineTo(i,a),e.moveTo(-i,a),e.lineTo(i,-a)}},Ox={draw(e,t){const r=tx(t/ax);e.moveTo(r,0),e.arc(0,0,r,0,nx)}},Kx={draw(e,t){const r=tx(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}};const Jx=tx(1/3),Vx=2*Jx;var jx={draw(e,t){const r=tx(t/Vx),a=r*Jx;e.moveTo(0,-r),e.lineTo(a,0),e.lineTo(0,r),e.lineTo(-a,0),e.closePath()}},Yx={draw(e,t){const r=.62625*tx(t);e.moveTo(0,-r),e.lineTo(r,0),e.lineTo(0,r),e.lineTo(-r,0),e.closePath()}},$x={draw(e,t){const r=.87559*tx(t-Xv(t/7,2));e.moveTo(-r,0),e.lineTo(r,0),e.moveTo(0,r),e.lineTo(0,-r)}},Ux={draw(e,t){const r=tx(t),a=-r/2;e.rect(a,a,r,r)}},qx={draw(e,t){const r=.4431*tx(t);e.moveTo(r,r),e.lineTo(r,-r),e.lineTo(-r,-r),e.lineTo(-r,r),e.closePath()}};const Zx=ex(ax/10)/ex(7*ax/10),Qx=ex(nx/10)*Zx,Xx=-Zv(nx/10)*Zx;var ek={draw(e,t){const r=tx(.8908130915292852*t),a=Qx*r,i=Xx*r;e.moveTo(0,-r),e.lineTo(a,i);for(let t=1;t<5;++t){const n=nx*t/5,o=Zv(n),c=ex(n);e.lineTo(c*r,-o*r),e.lineTo(o*a-c*i,c*a+o*i)}e.closePath()}};const tk=tx(3);var rk={draw(e,t){const r=-tx(t/(3*tk));e.moveTo(0,2*r),e.lineTo(-tk*r,-r),e.lineTo(tk*r,-r),e.closePath()}};const ak=tx(3);var ik={draw(e,t){const r=.6824*tx(t),a=r/2,i=r*ak/2;e.moveTo(0,-r),e.lineTo(i,a),e.lineTo(-i,a),e.closePath()}};const nk=-.5,ok=tx(3)/2,ck=1/tx(12),lk=3*(ck/2+1);var sk={draw(e,t){const r=tx(t/lk),a=r/2,i=r*ck,n=a,o=r*ck+r,c=-n,l=o;e.moveTo(a,i),e.lineTo(n,o),e.lineTo(c,l),e.lineTo(nk*a-ok*i,ok*a+nk*i),e.lineTo(nk*n-ok*o,ok*n+nk*o),e.lineTo(nk*c-ok*l,ok*c+nk*l),e.lineTo(nk*a+ok*i,nk*i-ok*a),e.lineTo(nk*n+ok*o,nk*o-ok*n),e.lineTo(nk*c+ok*l,nk*l-ok*c),e.closePath()}},uk={draw(e,t){const r=.6189*tx(t-Xv(t/6,1.7));e.moveTo(-r,-r),e.lineTo(r,r),e.moveTo(-r,r),e.lineTo(r,-r)}};const hk=[Ox,Kx,jx,Ux,ek,rk,sk],dk=[Ox,$x,uk,ik,zx,qx,Yx];function pk(e,t){let r=null,a=cx(i);function i(){let i;if(r||(r=i=a()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),i)return r=null,i+""||null}return e="function"==typeof e?e:$v(e||Ox),t="function"==typeof t?t:$v(void 0===t?64:+t),i.type=function(t){return arguments.length?(e="function"==typeof t?t:$v(t),i):e},i.size=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),i):t},i.context=function(e){return arguments.length?(r=null==e?null:e,i):r},i}function yk(){}function fk(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function mk(e){this._context=e}function gk(e){this._context=e}function bk(e){return new gk(e)}function vk(e){this._context=e}function xk(e,t){this._basis=new mk(e),this._beta=t}mk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:fk(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:fk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},gk.prototype={areaStart:yk,areaEnd:yk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:fk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},vk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,a=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,a):this._context.moveTo(r,a);break;case 3:this._point=4;default:fk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},xk.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var a,i=e[0],n=t[0],o=e[r]-i,c=t[r]-n,l=-1;++l<=r;)a=l/r,this._basis.point(this._beta*e[l]+(1-this._beta)*(i+a*o),this._beta*t[l]+(1-this._beta)*(n+a*c));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var kk=function e(t){function r(e){return 1===t?new mk(e):new xk(e,t)}return r.beta=function(t){return e(+t)},r}(.85);function wk(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function Ck(e,t){this._context=e,this._k=(1-t)/6}Ck.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:wk(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:wk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var _k=function e(t){function r(e){return new Ck(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Sk(e,t){this._context=e,this._k=(1-t)/6}Sk.prototype={areaStart:yk,areaEnd:yk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:wk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ak=function e(t){function r(e){return new Sk(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Mk(e,t){this._context=e,this._k=(1-t)/6}Mk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:wk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Tk=function e(t){function r(e){return new Mk(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Bk(e,t,r){var a=e._x1,i=e._y1,n=e._x2,o=e._y2;if(e._l01_a>rx){var c=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,l=3*e._l01_a*(e._l01_a+e._l12_a);a=(a*c-e._x0*e._l12_2a+e._x2*e._l01_2a)/l,i=(i*c-e._y0*e._l12_2a+e._y2*e._l01_2a)/l}if(e._l23_a>rx){var s=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,u=3*e._l23_a*(e._l23_a+e._l12_a);n=(n*s+e._x1*e._l23_2a-t*e._l12_2a)/u,o=(o*s+e._y1*e._l23_2a-r*e._l12_2a)/u}e._context.bezierCurveTo(a,i,n,o,e._x2,e._y2)}function Lk(e,t){this._context=e,this._alpha=t}Lk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:Bk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ek=function e(t){function r(e){return t?new Lk(e,t):new Ck(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Rk(e,t){this._context=e,this._alpha=t}Rk.prototype={areaStart:yk,areaEnd:yk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Bk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Hk=function e(t){function r(e){return t?new Rk(e,t):new Sk(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Dk(e,t){this._context=e,this._alpha=t}Dk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Bk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Pk=function e(t){function r(e){return t?new Dk(e,t):new Mk(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Nk(e){this._context=e}function Gk(e){return e<0?-1:1}function Ik(e,t,r){var a=e._x1-e._x0,i=t-e._x1,n=(e._y1-e._y0)/(a||i<0&&-0),o=(r-e._y1)/(i||a<0&&-0),c=(n*i+o*a)/(a+i);return(Gk(n)+Gk(o))*Math.min(Math.abs(n),Math.abs(o),.5*Math.abs(c))||0}function Wk(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Fk(e,t,r){var a=e._x0,i=e._y0,n=e._x1,o=e._y1,c=(n-a)/3;e._context.bezierCurveTo(a+c,i+c*t,n-c,o-c*r,n,o)}function zk(e){this._context=e}function Ok(e){this._context=new Kk(e)}function Kk(e){this._context=e}function Jk(e){this._context=e}function Vk(e){var t,r,a=e.length-1,i=new Array(a),n=new Array(a),o=new Array(a);for(i[0]=0,n[0]=2,o[0]=e[0]+2*e[1],t=1;t=0;--t)i[t]=(o[t]-i[t+1])/n[t];for(n[a-1]=(e[a]+i[a-1])/2,t=0;t1)for(var r,a,i,n=1,o=e[t[0]],c=o.length;n=0;)r[t]=t;return r}function Qk(e,t){return e[t]}function Xk(e){const t=[];return t.key=e,t}function ew(e){var t=e.map(tw);return Zk(e).sort((function(e,r){return t[e]-t[r]}))}function tw(e){for(var t,r=-1,a=0,i=e.length,n=-1/0;++rn&&(n=t,a=r);return a}function rw(e){var t=e.map(aw);return Zk(e).sort((function(e,r){return t[e]-t[r]}))}function aw(e){for(var t,r=0,a=-1,i=e.length;++a=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}}this._x=e,this._y=t}};var iw=e=>()=>e;function nw(e,{sourceEvent:t,target:r,transform:a,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:a,enumerable:!0,configurable:!0},_:{value:i}})}function ow(e,t,r){this.k=e,this.x=t,this.y=r}ow.prototype={constructor:ow,scale:function(e){return 1===e?this:new ow(this.k*e,this.x,this.y)},translate:function(e,t){return 0===e&0===t?this:new ow(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var cw=new ow(1,0,0);function lw(e){for(;!e.__zoom;)if(!(e=e.parentNode))return cw;return e.__zoom}function sw(e){e.stopImmediatePropagation()}function uw(e){e.preventDefault(),e.stopImmediatePropagation()}function hw(e){return!(e.ctrlKey&&"wheel"!==e.type||e.button)}function dw(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e).hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]:[[0,0],[e.clientWidth,e.clientHeight]]}function pw(){return this.__zoom||cw}function yw(e){return-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function fw(){return navigator.maxTouchPoints||"ontouchstart"in this}function mw(e,t,r){var a=e.invertX(t[0][0])-r[0][0],i=e.invertX(t[1][0])-r[1][0],n=e.invertY(t[0][1])-r[0][1],o=e.invertY(t[1][1])-r[1][1];return e.translate(i>a?(a+i)/2:Math.min(0,a)||Math.max(0,i),o>n?(n+o)/2:Math.min(0,n)||Math.max(0,o))}function gw(){var e,t,r,a=hw,i=dw,n=mw,o=yw,c=fw,l=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],u=250,h=ei,d=Le("start","zoom","end"),p=0,y=10;function f(e){e.property("__zoom",pw).on("wheel.zoom",w,{passive:!1}).on("mousedown.zoom",C).on("dblclick.zoom",_).filter(c).on("touchstart.zoom",S).on("touchmove.zoom",A).on("touchend.zoom touchcancel.zoom",M).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(e,t){return(t=Math.max(l[0],Math.min(l[1],t)))===e.k?e:new ow(t,e.x,e.y)}function g(e,t,r){var a=t[0]-r[0]*e.k,i=t[1]-r[1]*e.k;return a===e.x&&i===e.y?e:new ow(e.k,a,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function v(e,t,r,a){e.on("start.zoom",(function(){x(this,arguments).event(a).start()})).on("interrupt.zoom end.zoom",(function(){x(this,arguments).event(a).end()})).tween("zoom",(function(){var e=this,n=arguments,o=x(e,n).event(a),c=i.apply(e,n),l=null==r?b(c):"function"==typeof r?r.apply(e,n):r,s=Math.max(c[1][0]-c[0][0],c[1][1]-c[0][1]),u=e.__zoom,d="function"==typeof t?t.apply(e,n):t,p=h(u.invert(l).concat(s/u.k),d.invert(l).concat(s/d.k));return function(e){if(1===e)e=d;else{var t=p(e),r=s/t[2];e=new ow(r,l[0]-t[0]*r,l[1]-t[1]*r)}o.zoom(null,e)}}))}function x(e,t,r){return!r&&e.__zooming||new k(e,t)}function k(e,t){this.that=e,this.args=t,this.active=0,this.sourceEvent=null,this.extent=i.apply(e,t),this.taps=0}function w(e,...t){if(a.apply(this,arguments)){var r=x(this,t).event(e),i=this.__zoom,c=Math.max(l[0],Math.min(l[1],i.k*Math.pow(2,o.apply(this,arguments)))),u=Qt(e);if(r.wheel)r.mouse[0][0]===u[0]&&r.mouse[0][1]===u[1]||(r.mouse[1]=i.invert(r.mouse[0]=u)),clearTimeout(r.wheel);else{if(i.k===c)return;r.mouse=[u,i.invert(u)],Ni(this),r.start()}uw(e),r.wheel=setTimeout((function(){r.wheel=null,r.end()}),150),r.zoom("mouse",n(g(m(i,c),r.mouse[0],r.mouse[1]),r.extent,s))}}function C(e,...t){if(!r&&a.apply(this,arguments)){var i=e.currentTarget,o=x(this,t,!0).event(e),c=jt(e.view).on("mousemove.zoom",(function(e){if(uw(e),!o.moved){var t=e.clientX-u,r=e.clientY-h;o.moved=t*t+r*r>p}o.event(e).zoom("mouse",n(g(o.that.__zoom,o.mouse[0]=Qt(e,i),o.mouse[1]),o.extent,s))}),!0).on("mouseup.zoom",(function(e){c.on("mousemove.zoom mouseup.zoom",null),ir(e.view,o.moved),uw(e),o.event(e).end()}),!0),l=Qt(e,i),u=e.clientX,h=e.clientY;ar(e.view),sw(e),o.mouse=[l,this.__zoom.invert(l)],Ni(this),o.start()}}function _(e,...t){if(a.apply(this,arguments)){var r=this.__zoom,o=Qt(e.changedTouches?e.changedTouches[0]:e,this),c=r.invert(o),l=r.k*(e.shiftKey?.5:2),h=n(g(m(r,l),o,c),i.apply(this,t),s);uw(e),u>0?jt(this).transition().duration(u).call(v,h,o,e):jt(this).call(f.transform,h,o,e)}}function S(r,...i){if(a.apply(this,arguments)){var n,o,c,l,s=r.touches,u=s.length,h=x(this,i,r.changedTouches.length===u).event(r);for(sw(r),o=0;o1&&r.name===t)return new rn([[e]],Nn,t,+a);return null},arc:function(){var e=lx,t=sx,r=$v(0),a=null,i=ux,n=hx,o=dx,c=null,l=cx(s);function s(){var s,u,h=+e.apply(this,arguments),d=+t.apply(this,arguments),p=i.apply(this,arguments)-ix,y=n.apply(this,arguments)-ix,f=Uv(y-p),m=y>p;if(c||(c=s=l()),drx)if(f>nx-rx)c.moveTo(d*Zv(p),d*ex(p)),c.arc(0,0,d,p,y,!m),h>rx&&(c.moveTo(h*Zv(y),h*ex(y)),c.arc(0,0,h,y,p,m));else{var g,b,v=p,x=y,k=p,w=y,C=f,_=f,S=o.apply(this,arguments)/2,A=S>rx&&(a?+a.apply(this,arguments):tx(h*h+d*d)),M=Xv(Uv(d-h)/2,+r.apply(this,arguments)),T=M,B=M;if(A>rx){var L=ox(A/h*ex(S)),E=ox(A/d*ex(S));(C-=2*L)>rx?(k+=L*=m?1:-1,w-=L):(C=0,k=w=(p+y)/2),(_-=2*E)>rx?(v+=E*=m?1:-1,x-=E):(_=0,v=x=(p+y)/2)}var R=d*Zv(v),H=d*ex(v),D=h*Zv(w),P=h*ex(w);if(M>rx){var N,G=d*Zv(x),I=d*ex(x),W=h*Zv(k),F=h*ex(k);if(f1?0:e<-1?ax:Math.acos(e)}((z*K+O*J)/(tx(z*z+O*O)*tx(K*K+J*J)))/2),j=tx(N[0]*N[0]+N[1]*N[1]);T=Xv(M,(h-j)/(V-1)),B=Xv(M,(d-j)/(V+1))}else T=B=0}_>rx?B>rx?(g=px(W,F,R,H,d,B,m),b=px(G,I,D,P,d,B,m),c.moveTo(g.cx+g.x01,g.cy+g.y01),Brx&&C>rx?T>rx?(g=px(D,P,G,I,h,-T,m),b=px(R,H,W,F,h,-T,m),c.lineTo(g.cx+g.x01,g.cy+g.y01),T=0))throw new RangeError("invalid r");let r=e.length;if(!((r=Math.floor(r))>=0))throw new RangeError("invalid length");if(!r||!t)return e;const a=f(t),i=e.slice();return a(e,i,0,r,1),a(i,e,0,r,1),a(e,i,0,r,1),e},blur2:u,blurImage:h,brush:function(){return lo(Zn)},brushSelection:function(e){var t=e.__brush;return t?t.dim.output(t.selection):null},brushX:function(){return lo(Un)},brushY:function(){return lo(qn)},buffer:function(e,t){return fetch(e,t).then(Xc)},chord:function(){return vo(!1,!1)},chordDirected:function(){return vo(!0,!1)},chordTranspose:function(){return vo(!1,!0)},cluster:kp,color:Br,contourDensity:function(){var e=qo,t=Zo,r=Qo,a=960,i=500,n=20,o=2,c=3*n,l=a+2*c>>o,s=i+2*c>>o,h=Wo(20);function d(a){var i=new Float32Array(l*s),h=Math.pow(2,-o),d=-1;for(const n of a){var p=(e(n,++d,a)+c)*h,y=(t(n,d,a)+c)*h,f=+r(n,d,a);if(f&&p>=0&&p=0&&ye*a)))(t).map(((e,t)=>(e.value=+r[t],y(e))))}function y(e){return e.coordinates.forEach(f),e}function f(e){e.forEach(m)}function m(e){e.forEach(g)}function g(e){e[0]=e[0]*Math.pow(2,o)-c,e[1]=e[1]*Math.pow(2,o)-c}function b(){return l=a+2*(c=3*n)>>o,s=i+2*c>>o,p}return p.contours=function(e){var t=d(e),r=Vo().size([l,s]),a=Math.pow(2,2*o),i=e=>{e=+e;var i=y(r.contour(t,e*a));return i.value=e,i};return Object.defineProperty(i,"max",{get:()=>ee(t)/a}),i},p.x=function(t){return arguments.length?(e="function"==typeof t?t:Wo(+t),p):e},p.y=function(e){return arguments.length?(t="function"==typeof e?e:Wo(+e),p):t},p.weight=function(e){return arguments.length?(r="function"==typeof e?e:Wo(+e),p):r},p.size=function(e){if(!arguments.length)return[a,i];var t=+e[0],r=+e[1];if(!(t>=0&&r>=0))throw new Error("invalid size");return a=t,i=r,b()},p.cellSize=function(e){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(e)/Math.LN2),b()},p.thresholds=function(e){return arguments.length?(h="function"==typeof e?e:Array.isArray(e)?Wo(Go.call(e)):Wo(e),p):h},p.bandwidth=function(e){if(!arguments.length)return Math.sqrt(n*(n+1));if(!((e=+e)>=0))throw new Error("invalid bandwidth");return n=(Math.sqrt(4*e*e+1)-1)/2,b()},p},contours:Vo,count:m,create:Yt,creator:We,cross:function(...e){const t="function"==typeof e[e.length-1]&&function(e){return t=>e(...t)}(e.pop()),r=(e=e.map(v)).map(g),a=e.length-1,i=new Array(a+1).fill(0),n=[];if(a<0||r.some(b))return n;for(;;){n.push(i.map(((t,r)=>e[r][t])));let o=a;for(;++i[o]===r[o];){if(0===o)return t?n.map(t):n;i[o--]=0}}},csv:al,csvFormat:Ic,csvFormatBody:Wc,csvFormatRow:zc,csvFormatRows:Fc,csvFormatValue:Oc,csvParse:Nc,csvParseRows:Gc,cubehelix:ka,cumsum:function(e,t){var r=0,a=0;return Float64Array.from(e,void 0===t?e=>r+=+e||0:i=>r+=+t(i,a++,e)||0)},curveBasis:function(e){return new mk(e)},curveBasisClosed:bk,curveBasisOpen:function(e){return new vk(e)},curveBumpX:Hx,curveBumpY:Dx,curveBundle:kk,curveCardinal:_k,curveCardinalClosed:Ak,curveCardinalOpen:Tk,curveCatmullRom:Ek,curveCatmullRomClosed:Hk,curveCatmullRomOpen:Pk,curveLinear:gx,curveLinearClosed:function(e){return new Nk(e)},curveMonotoneX:function(e){return new zk(e)},curveMonotoneY:function(e){return new Ok(e)},curveNatural:function(e){return new Jk(e)},curveStep:Yk,curveStepAfter:Uk,curveStepBefore:$k,descending:r,deviation:k,difference:function(e,...t){e=new S(e);for(const r of t)for(const t of r)e.delete(t);return e},disjoint:function(e,t){const r=t[Symbol.iterator](),a=new S;for(const t of e){if(a.has(t))return!1;let e,i;for(;({value:e,done:i}=r.next())&&!i;){if(Object.is(t,e))return!1;a.add(e)}}return!0},dispatch:Le,drag:function(){var e,t,r,a,i=cr,n=lr,o=sr,c=ur,l={},s=Le("start","drag","end"),u=0,h=0;function d(e){e.on("mousedown.drag",p).filter(c).on("touchstart.drag",m).on("touchmove.drag",g,Xt).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(o,c){if(!a&&i.call(this,o,c)){var l=v(this,n.call(this,o,c),o,c,"mouse");l&&(jt(o.view).on("mousemove.drag",y,er).on("mouseup.drag",f,er),ar(o.view),tr(o),r=!1,e=o.clientX,t=o.clientY,l("start",o))}}function y(a){if(rr(a),!r){var i=a.clientX-e,n=a.clientY-t;r=i*i+n*n>h}l.mouse("drag",a)}function f(e){jt(e.view).on("mousemove.drag mouseup.drag",null),ir(e.view,r),rr(e),l.mouse("end",e)}function m(e,t){if(i.call(this,e,t)){var r,a,o=e.changedTouches,c=n.call(this,e,t),l=o.length;for(r=0;r+e,easePoly:hn,easePolyIn:sn,easePolyInOut:hn,easePolyOut:un,easeQuad:cn,easeQuadIn:function(e){return e*e},easeQuadInOut:cn,easeQuadOut:function(e){return e*(2-e)},easeSin:yn,easeSinIn:function(e){return 1==+e?1:1-Math.cos(e*pn)},easeSinInOut:yn,easeSinOut:function(e){return Math.sin(e*pn)},every:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");let r=-1;for(const a of e)if(!t(a,++r,e))return!1;return!0},extent:w,fcumsum:function(e,t){const r=new C;let a=-1;return Float64Array.from(e,void 0===t?e=>r.add(+e||0):i=>r.add(+t(i,++a,e)||0))},filter:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");const r=[];let a=-1;for(const i of e)t(i,++a,e)&&r.push(i);return r},flatGroup:function(e,...t){return H(R(e,...t),t)},flatRollup:function(e,t,...r){return H(P(e,t,...r),r)},forceCenter:function(e,t){var r,a=1;function i(){var i,n,o=r.length,c=0,l=0;for(i=0;is+y||nu+y||ol.index){var f=s-c.x-c.vx,m=u-c.y-c.vy,g=f*f+m*m;ge.r&&(e.r=e[t].r)}function l(){if(t){var a,i,n=t.length;for(r=new Array(n),a=0;a[c(e,t,a),e])));for(o=0,i=new Array(s);o=c)){(e.data!==t||e.next)&&(0===h&&(y+=(h=vl(r))*h),0===d&&(y+=(d=vl(r))*d),y(e=(1664525*e+1013904223)%_l)/_l}();function h(){d(),s.call("tick",t),r1?(null==r?c.delete(e):c.set(e,y(r)),t):c.get(e)},find:function(t,r,a){var i,n,o,c,l,s=0,u=e.length;for(null==a?a=1/0:a*=a,s=0;s1?(s.on(e,r),t):s.on(e)}}},forceX:function(e){var t,r,a,i=bl(.1);function n(e){for(var i,n=0,o=t.length;n=.12&&i<.234&&a>=-.425&&a<-.214?c:i>=.166&&i<.234&&a>=-.214&&a<-.115?l:o).invert(e)},u.stream=function(r){return e&&t===r?e:e=function(e){var t=e.length;return{point:function(r,a){for(var i=-1;++i_u(a[0],a[1])&&(a[1]=i[1]),_u(i[0],a[1])>_u(a[0],a[1])&&(a[0]=i[0])):n.push(a=i);for(o=-1/0,t=0,a=n[r=n.length-1];t<=r;a=i,++t)i=n[t],(c=_u(a[1],i[0]))>o&&(o=c,Bs=i[0],Es=a[1])}return Is=Ws=null,Bs===1/0||Ls===1/0?[[NaN,NaN],[NaN,NaN]]:[[Bs,Ls],[Es,Rs]]},geoCentroid:function(e){eu=tu=ru=au=iu=nu=ou=cu=0,lu=new C,su=new C,uu=new C,Cs(e,Mu);var t=+lu,r=+su,a=+uu,i=cs(t,r,a);return i<$l&&(t=nu,r=ou,a=cu,tu=0))throw new RangeError(`invalid digits: ${e}`);i=t}return null===t&&(a=new Rd(i)),o},o.projection(e).digits(i).context(t)},geoProjection:Vd,geoProjectionMutator:jd,geoRotation:Vu,geoStereographic:function(){return Vd(mp).scale(250).clipAngle(142)},geoStereographicRaw:mp,geoStream:Cs,geoTransform:function(e){return{stream:Dd(e)}},geoTransverseMercator:function(){var e=rp(gp),t=e.center,r=e.rotate;return e.center=function(e){return arguments.length?t([-e[1],e[0]]):[(e=t())[1],-e[0]]},e.rotate=function(e){return arguments.length?r([e[0],e[1],e.length>2?e[2]+90:90]):[(e=r())[0],e[1],e[2]-90]},r([0,0,90]).scale(159.155)},geoTransverseMercatorRaw:gp,gray:ra,greatest:oe,greatestIndex:function(e,r=t){if(1===r.length)return te(e,r);let a,i=-1,n=-1;for(const t of e)++n,(i<0?0===r(t,t):r(t,a)>0)&&(a=t,i=n);return i},group:E,groupSort:function(e,r,a){return(2!==r.length?W(D(e,r,a),(([e,r],[a,i])=>t(r,i)||t(e,a))):W(E(e,a),(([e,a],[i,n])=>r(a,n)||t(e,i)))).map((([e])=>e))},groups:R,hcl:ua,hierarchy:Cp,histogram:X,hsl:Or,html:ll,image:function(e,t){return new Promise((function(r,a){var i=new Image;for(var n in t)i[n]=t[n];i.onerror=a,i.onload=function(){r(i)},i.src=e}))},index:function(e,...t){return G(e,L,N,t)},indexes:function(e,...t){return G(e,Array.from,N,t)},interpolate:Ja,interpolateArray:function(e,t){return(Na(t)?Pa:Ga)(e,t)},interpolateBasis:_a,interpolateBasisClosed:Sa,interpolateBlues:Sv,interpolateBrBG:Gb,interpolateBuGn:tv,interpolateBuPu:av,interpolateCividis:function(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-2710.57*e)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-67.37*e)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-2475.67*e)))))))+")"},interpolateCool:Iv,interpolateCubehelix:li,interpolateCubehelixDefault:Nv,interpolateCubehelixLong:si,interpolateDate:Ia,interpolateDiscrete:function(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}},interpolateGnBu:nv,interpolateGreens:Mv,interpolateGreys:Bv,interpolateHcl:ni,interpolateHclLong:oi,interpolateHsl:ri,interpolateHslLong:ai,interpolateHue:function(e,t){var r=Ta(+e,+t);return function(e){var t=r(e);return t-360*Math.floor(t/360)}},interpolateInferno:jv,interpolateLab:function(e,t){var r=La((e=aa(e)).l,(t=aa(t)).l),a=La(e.a,t.a),i=La(e.b,t.b),n=La(e.opacity,t.opacity);return function(t){return e.l=r(t),e.a=a(t),e.b=i(t),e.opacity=n(t),e+""}},interpolateMagma:Vv,interpolateNumber:Wa,interpolateNumberArray:Pa,interpolateObject:Fa,interpolateOrRd:cv,interpolateOranges:Pv,interpolatePRGn:Wb,interpolatePiYG:zb,interpolatePlasma:Yv,interpolatePuBu:hv,interpolatePuBuGn:sv,interpolatePuOr:Kb,interpolatePuRd:pv,interpolatePurples:Ev,interpolateRainbow:function(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return Wv.h=360*e-100,Wv.s=1.5-1.5*t,Wv.l=.8-.9*t,Wv+""},interpolateRdBu:Vb,interpolateRdGy:Yb,interpolateRdPu:fv,interpolateRdYlBu:Ub,interpolateRdYlGn:Zb,interpolateReds:Hv,interpolateRgb:Ea,interpolateRgbBasis:Ha,interpolateRgbBasisClosed:Da,interpolateRound:Va,interpolateSinebow:function(e){var t;return e=(.5-e)*Math.PI,Fv.r=255*(t=Math.sin(e))*t,Fv.g=255*(t=Math.sin(e+zv))*t,Fv.b=255*(t=Math.sin(e+Ov))*t,Fv+""},interpolateSpectral:Xb,interpolateString:Ka,interpolateTransformCss:Za,interpolateTransformSvg:Qa,interpolateTurbo:function(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-14825.05*e)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+707.56*e)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-6838.66*e)))))))+")"},interpolateViridis:Jv,interpolateWarm:Gv,interpolateYlGn:vv,interpolateYlGnBu:gv,interpolateYlOrBr:kv,interpolateYlOrRd:Cv,interpolateZoom:ei,interrupt:Ni,intersection:function(e,...t){e=new S(e),t=t.map(be);e:for(const r of e)for(const a of t)if(!a.has(r)){e.delete(r);continue e}return e},interval:function(e,t,r){var a=new Ci,i=t;return null==t?(a.restart(e,t,r),a):(a._restart=a.restart,a.restart=function(e,t,r){t=+t,r=null==r?ki():+r,a._restart((function n(o){o+=i,a._restart(n,i+=t,r),e(o)}),t,r)},a.restart(e,t,r),a)},isoFormat:pb,isoParse:yb,json:function(e,t){return fetch(e,t).then(nl)},lab:aa,lch:function(e,t,r,a){return 1===arguments.length?sa(e):new ha(r,t,e,null==a?1:a)},least:function(e,r=t){let a,i=!1;if(1===r.length){let n;for(const o of e){const e=r(o);(i?t(e,n)<0:0===t(e,e))&&(a=o,n=e,i=!0)}}else for(const t of e)(i?r(t,a)<0:0===r(t,t))&&(a=t,i=!0);return a},leastIndex:pe,line:xx,lineRadial:Tx,link:Ix,linkHorizontal:function(){return Ix(Hx)},linkRadial:Wx,linkVertical:function(){return Ix(Dx)},local:Ut,map:function(e,t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof t)throw new TypeError("mapper is not a function");return Array.from(e,((r,a)=>t(r,a,e)))},matcher:Ve,max:ee,maxIndex:te,mean:function(e,t){let r=0,a=0;if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(++r,a+=t);else{let i=-1;for(let n of e)null!=(n=t(n,++i,e))&&(n=+n)>=n&&(++r,a+=n)}if(r)return a/r},median:function(e,t){return ce(e,.5,t)},medianIndex:function(e,t){return se(e,.5,t)},merge:ue,min:re,minIndex:ae,mode:function(e,t){const r=new _;if(void 0===t)for(let t of e)null!=t&&t>=t&&r.set(t,(r.get(t)||0)+1);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&i>=i&&r.set(i,(r.get(i)||0)+1)}let a,i=0;for(const[e,t]of r)t>i&&(i=t,a=e);return a},namespace:Ne,namespaces:Pe,nice:Z,now:ki,pack:function(){var e=null,t=1,r=1,a=Ep;function i(i){const n=Dp();return i.x=t/2,i.y=r/2,e?i.eachBefore(Up(e)).eachAfter(qp(a,.5,n)).eachBefore(Zp(1)):i.eachBefore(Up($p)).eachAfter(qp(Ep,1,n)).eachAfter(qp(a,i.r/Math.min(t,r),n)).eachBefore(Zp(Math.min(t,r)/(2*i.r))),i}return i.radius=function(t){return arguments.length?(e=Bp(t),i):e},i.size=function(e){return arguments.length?(t=+e[0],r=+e[1],i):[t,r]},i.padding=function(e){return arguments.length?(a="function"==typeof e?e:Rp(+e),i):a},i},packEnclose:function(e){return Pp(e,Dp())},packSiblings:function(e){return Yp(e,Dp()),e},pairs:function(e,t=he){const r=[];let a,i=!1;for(const n of e)i&&r.push(t(a,n)),a=n,i=!0;return r},partition:function(){var e=1,t=1,r=0,a=!1;function i(i){var n=i.height+1;return i.x0=i.y0=r,i.x1=e,i.y1=t/n,i.eachBefore(function(e,t){return function(a){a.children&&Xp(a,a.x0,e*(a.depth+1)/t,a.x1,e*(a.depth+2)/t);var i=a.x0,n=a.y0,o=a.x1-r,c=a.y1-r;o0&&(p+=h);for(null!=t?y.sort((function(e,r){return t(f[e],f[r])})):null!=r&&y.sort((function(e,t){return r(o[e],o[t])})),c=0,s=p?(g-d*v)/p:0;c0?h*s:0)+v,f[l]={data:o[l],index:c,value:h,startAngle:m,endAngle:u,padAngle:b};return f}return o.value=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),o):e},o.sortValues=function(e){return arguments.length?(t=e,r=null,o):t},o.sort=function(e){return arguments.length?(r=e,t=null,o):r},o.startAngle=function(e){return arguments.length?(a="function"==typeof e?e:$v(+e),o):a},o.endAngle=function(e){return arguments.length?(i="function"==typeof e?e:$v(+e),o):i},o.padAngle=function(e){return arguments.length?(n="function"==typeof e?e:$v(+e),o):n},o},piecewise:ui,pointRadial:Lx,pointer:Qt,pointers:function(e,t){return e.target&&(e=Zt(e),void 0===t&&(t=e.currentTarget),e=e.touches||[e]),Array.from(e,(e=>Qt(e,t)))},polygonArea:function(e){for(var t,r=-1,a=e.length,i=e[a-1],n=0;++rc!=s>c&&o<(l-r)*(c-a)/(s-a)+r&&(u=!u),l=r,s=a;return u},polygonHull:function(e){if((r=e.length)<3)return null;var t,r,a=new Array(r),i=new Array(r);for(t=0;t=0;--t)s.push(e[a[n[t]][2]]);for(t=+c;t(t=1664525*t+1013904223|0,Fy*(t>>>0))},randomLogNormal:Ay,randomLogistic:Iy,randomNormal:Sy,randomPareto:Ly,randomPoisson:Wy,randomUniform:Cy,randomWeibull:Ny,range:de,rank:function(e,r=t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");let a=Array.from(e);const i=new Float64Array(a.length);2!==r.length&&(a=a.map(r),r=t);const n=(e,t)=>r(a[e],a[t]);let o,c;return e=Uint32Array.from(a,((e,t)=>t)),e.sort(r===t?(e,t)=>z(a[e],a[t]):F(n)),e.forEach(((e,t)=>{const r=n(e,void 0===o?e:o);r>=0?((void 0===o||r>0)&&(o=e,c=t),i[e]=c):i[e]=NaN})),i},reduce:function(e,t,r){if("function"!=typeof t)throw new TypeError("reducer is not a function");const a=e[Symbol.iterator]();let i,n,o=-1;if(arguments.length<3){if(({done:i,value:r}=a.next()),i)return;++o}for(;({done:i,value:n}=a.next()),!i;)r=t(r,n,++o,e);return r},reverse:function(e){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(e).reverse()},rgb:Hr,ribbon:function(){return No()},ribbonArrow:function(){return No(Po)},rollup:D,rollups:P,scaleBand:Vy,scaleDiverging:function e(){var t=af(kb()(Uy));return t.copy=function(){return vb(t,e())},Oy.apply(t,arguments)},scaleDivergingLog:function e(){var t=df(kb()).domain([.1,1,10]);return t.copy=function(){return vb(t,e()).base(t.base())},Oy.apply(t,arguments)},scaleDivergingPow:wb,scaleDivergingSqrt:function(){return wb.apply(null,arguments).exponent(.5)},scaleDivergingSymlog:function e(){var t=ff(kb());return t.copy=function(){return vb(t,e()).constant(t.constant())},Oy.apply(t,arguments)},scaleIdentity:function e(t){var r;function a(e){return null==e||isNaN(e=+e)?r:e}return a.invert=a,a.domain=a.range=function(e){return arguments.length?(t=Array.from(e,Yy),a):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.copy=function(){return e(t).unknown(r)},t=arguments.length?Array.from(t,Yy):[0,1],af(a)},scaleImplicit:Ky,scaleLinear:function e(){var t=tf();return t.copy=function(){return Xy(t,e())},zy.apply(t,arguments),af(t)},scaleLog:function e(){const t=df(ef()).domain([1,10]);return t.copy=()=>Xy(t,e()).base(t.base()),zy.apply(t,arguments),t},scaleOrdinal:Jy,scalePoint:function(){return jy(Vy.apply(null,arguments).paddingInner(1))},scalePow:xf,scaleQuantile:function e(){var r,a=[],i=[],n=[];function o(){var e=0,t=Math.max(1,i.length);for(n=new Array(t-1);++e0?n[t-1]:a[0],t=i?[n[i-1],a]:[n[t-1],n[t]]},l.unknown=function(e){return arguments.length?(t=e,l):l},l.thresholds=function(){return n.slice()},l.copy=function(){return e().domain([r,a]).range(o).unknown(t)},zy.apply(af(l),arguments)},scaleRadial:function e(){var t,r=tf(),a=[0,1],i=!1;function n(e){var a=function(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}(r(e));return isNaN(a)?t:i?Math.round(a):a}return n.invert=function(e){return r.invert(kf(e))},n.domain=function(e){return arguments.length?(r.domain(e),n):r.domain()},n.range=function(e){return arguments.length?(r.range((a=Array.from(e,Yy)).map(kf)),n):a.slice()},n.rangeRound=function(e){return n.range(e).round(!0)},n.round=function(e){return arguments.length?(i=!!e,n):i},n.clamp=function(e){return arguments.length?(r.clamp(e),n):r.clamp()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return e(r.domain(),a).round(i).clamp(r.clamp()).unknown(t)},zy.apply(n,arguments),af(n)},scaleSequential:function e(){var t=af(bb()(Uy));return t.copy=function(){return vb(t,e())},Oy.apply(t,arguments)},scaleSequentialLog:function e(){var t=df(bb()).domain([1,10]);return t.copy=function(){return vb(t,e()).base(t.base())},Oy.apply(t,arguments)},scaleSequentialPow:xb,scaleSequentialQuantile:function e(){var r=[],a=Uy;function i(e){if(null!=e&&!isNaN(e=+e))return a((c(r,e,1)-1)/(r.length-1))}return i.domain=function(e){if(!arguments.length)return r.slice();r=[];for(let t of e)null==t||isNaN(t=+t)||r.push(t);return r.sort(t),i},i.interpolator=function(e){return arguments.length?(a=e,i):a},i.range=function(){return r.map(((e,t)=>a(t/(r.length-1))))},i.quantiles=function(e){return Array.from({length:e+1},((t,a)=>ce(r,a/e)))},i.copy=function(){return e(a).domain(r)},Oy.apply(i,arguments)},scaleSequentialSqrt:function(){return xb.apply(null,arguments).exponent(.5)},scaleSequentialSymlog:function e(){var t=ff(bb());return t.copy=function(){return vb(t,e()).constant(t.constant())},Oy.apply(t,arguments)},scaleSqrt:function(){return xf.apply(null,arguments).exponent(.5)},scaleSymlog:function e(){var t=ff(ef());return t.copy=function(){return Xy(t,e()).constant(t.constant())},zy.apply(t,arguments)},scaleThreshold:function e(){var t,r=[.5],a=[0,1],i=1;function n(e){return null!=e&&e<=e?a[c(r,e,0,i)]:t}return n.domain=function(e){return arguments.length?(r=Array.from(e),i=Math.min(r.length,a.length-1),n):r.slice()},n.range=function(e){return arguments.length?(a=Array.from(e),i=Math.min(r.length,a.length-1),n):a.slice()},n.invertExtent=function(e){var t=a.indexOf(e);return[r[t-1],r[t]]},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return e().domain(r).range(a).unknown(t)},zy.apply(n,arguments)},scaleTime:function(){return zy.apply(gb(Gm,Im,Lm,Am,Zf,Jf,Ff,Nf,Df,Jm).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},scaleUtc:function(){return zy.apply(gb(Pm,Nm,Rm,Tm,dm,jf,Of,If,Df,jm).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},scan:function(e,t){const r=pe(e,t);return r<0?void 0:r},schemeAccent:Sb,schemeBlues:_v,schemeBrBG:Nb,schemeBuGn:ev,schemeBuPu:rv,schemeCategory10:_b,schemeDark2:Ab,schemeGnBu:iv,schemeGreens:Av,schemeGreys:Tv,schemeObservable10:Mb,schemeOrRd:ov,schemeOranges:Dv,schemePRGn:Ib,schemePaired:Tb,schemePastel1:Bb,schemePastel2:Lb,schemePiYG:Fb,schemePuBu:uv,schemePuBuGn:lv,schemePuOr:Ob,schemePuRd:dv,schemePurples:Lv,schemeRdBu:Jb,schemeRdGy:jb,schemeRdPu:yv,schemeRdYlBu:$b,schemeRdYlGn:qb,schemeReds:Rv,schemeSet1:Eb,schemeSet2:Rb,schemeSet3:Hb,schemeSpectral:Qb,schemeTableau10:Db,schemeYlGn:bv,schemeYlGnBu:mv,schemeYlOrBr:xv,schemeYlOrRd:wv,select:jt,selectAll:function(e){return"string"==typeof e?new Jt([document.querySelectorAll(e)],[document.documentElement]):new Jt([Oe(e)],Kt)},selection:Vt,selector:ze,selectorAll:Je,shuffle:ye,shuffler:fe,some:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");let r=-1;for(const a of e)if(t(a,++r,e))return!0;return!1},sort:W,stack:function(){var e=$v([]),t=Zk,r=qk,a=Qk;function i(i){var n,o,c=Array.from(e.apply(this,arguments),Xk),l=c.length,s=-1;for(const e of i)for(n=0,++s;n0)for(var r,a,i,n,o,c,l=0,s=e[t[0]].length;l0?(a[0]=n,a[1]=n+=i):i<0?(a[1]=o,a[0]=o+=i):(a[0]=0,a[1]=i)},stackOffsetExpand:function(e,t){if((a=e.length)>0){for(var r,a,i,n=0,o=e[0].length;n0){for(var r,a=0,i=e[t[0]],n=i.length;a0&&(a=(r=e[t[0]]).length)>0){for(var r,a,i,n=0,o=1;ofunction(e){e=`${e}`;let t=e.length;oy(e,t-1)&&!oy(e,t-2)&&(e=e.slice(0,-1));return"/"===e[0]?e:`/${e}`}(e(t,r,a)))),r=t.map(ny),i=new Set(t).add("");for(const e of r)i.has(e)||(i.add(e),t.push(e),r.push(ny(e)),d.push(ry));p=(e,r)=>t[r],y=(e,t)=>r[t]}for(o=0,i=d.length;o=0&&(s=d[e]).data===ry;--e)s.data=null}if(c.parent=ey,c.eachBefore((function(e){e.depth=e.parent.depth+1,--i})).eachBefore(Mp),c.parent=null,i>0)throw new Error("cycle");return c}return a.id=function(e){return arguments.length?(t=Bp(e),a):t},a.parentId=function(e){return arguments.length?(r=Bp(e),a):r},a.path=function(t){return arguments.length?(e=Bp(t),a):e},a},style:yt,subset:function(e,t){return ve(t,e)},sum:function(e,t){let r=0;if(void 0===t)for(let t of e)(t=+t)&&(r+=t);else{let a=-1;for(let i of e)(i=+t(i,++a,e))&&(r+=i)}return r},superset:ve,svg:sl,symbol:pk,symbolAsterisk:zx,symbolCircle:Ox,symbolCross:Kx,symbolDiamond:jx,symbolDiamond2:Yx,symbolPlus:$x,symbolSquare:Ux,symbolSquare2:qx,symbolStar:ek,symbolTimes:uk,symbolTriangle:rk,symbolTriangle2:ik,symbolWye:sk,symbolX:uk,symbols:hk,symbolsFill:hk,symbolsStroke:dk,text:tl,thresholdFreedmanDiaconis:function(e,t,r){const a=m(e),i=ce(e,.75)-ce(e,.25);return a&&i?Math.ceil((r-t)/(2*i*Math.pow(a,-1/3))):1},thresholdScott:function(e,t,r){const a=m(e),i=k(e);return a&&i?Math.ceil((r-t)*Math.cbrt(a)/(3.49*i)):1},thresholdSturges:Q,tickFormat:rf,tickIncrement:U,tickStep:q,ticks:$,timeDay:Jf,timeDays:Vf,get timeFormat(){return Jm},timeFormatDefaultLocale:hb,timeFormatLocale:Om,timeFriday:rm,timeFridays:sm,timeHour:Ff,timeHours:zf,timeInterval:_f,timeMillisecond:Sf,timeMilliseconds:Af,timeMinute:Nf,timeMinutes:Gf,timeMonday:Qf,timeMondays:nm,timeMonth:Am,timeMonths:Mm,get timeParse(){return Vm},timeSaturday:am,timeSaturdays:um,timeSecond:Df,timeSeconds:Pf,timeSunday:Zf,timeSundays:im,timeThursday:tm,timeThursdays:lm,timeTickInterval:Im,timeTicks:Gm,timeTuesday:Xf,timeTuesdays:om,timeWednesday:em,timeWednesdays:cm,timeWeek:Zf,timeWeeks:im,timeYear:Lm,timeYears:Em,timeout:Bi,timer:_i,timerFlush:Si,transition:an,transpose:me,tree:py,treemap:function(){var e=gy,t=!1,r=1,a=1,i=[0],n=Ep,o=Ep,c=Ep,l=Ep,s=Ep;function u(e){return e.x0=e.y0=0,e.x1=r,e.y1=a,e.eachBefore(h),i=[0],t&&e.eachBefore(Qp),e}function h(t){var r=i[t.depth],a=t.x0+r,u=t.y0+r,h=t.x1-r,d=t.y1-r;h=r-1){var u=c[t];return u.x0=i,u.y0=n,u.x1=o,void(u.y1=l)}var h=s[t],d=a/2+h,p=t+1,y=r-1;for(;p>>1;s[f]l-n){var b=a?(i*g+o*m)/a:o;e(t,p,m,i,n,b,l),e(p,r,g,b,n,o,l)}else{var v=a?(n*g+l*m)/a:l;e(t,p,m,i,n,o,v),e(p,r,g,i,v,o,l)}}(0,l,e.value,t,r,a,i)},treemapDice:Xp,treemapResquarify:by,treemapSlice:yy,treemapSliceDice:function(e,t,r,a,i){(1&e.depth?yy:Xp)(e,t,r,a,i)},treemapSquarify:gy,tsv:il,tsvFormat:jc,tsvFormatBody:Yc,tsvFormatRow:Uc,tsvFormatRows:$c,tsvFormatValue:qc,tsvParse:Jc,tsvParseRows:Vc,union:function(...e){const t=new S;for(const r of e)for(const e of r)t.add(e);return t},unixDay:$f,unixDays:Uf,utcDay:jf,utcDays:Yf,get utcFormat(){return jm},utcFriday:gm,utcFridays:_m,utcHour:Of,utcHours:Kf,utcMillisecond:Sf,utcMilliseconds:Af,utcMinute:If,utcMinutes:Wf,utcMonday:pm,utcMondays:xm,utcMonth:Tm,utcMonths:Bm,get utcParse(){return Ym},utcSaturday:bm,utcSaturdays:Sm,utcSecond:Df,utcSeconds:Pf,utcSunday:dm,utcSundays:vm,utcThursday:mm,utcThursdays:Cm,utcTickInterval:Nm,utcTicks:Pm,utcTuesday:ym,utcTuesdays:km,utcWednesday:fm,utcWednesdays:wm,utcWeek:dm,utcWeeks:vm,utcYear:Rm,utcYears:Hm,variance:x,window:ut,xml:cl,zip:function(){return me(arguments)},zoom:gw,zoomIdentity:cw,zoomTransform:lw});class vw extends HTMLDivElement{main_svg=null;tree_data={};static observeAttributes=["backgroundPattern","backgroundSize","customBackground"];backgroundPattern=null;backgroundSize=void 0;customBackground=void 0;backgroundPosition="center";constructor(){super()}connectedCallback(){this.className="ts-root-wrapper-element tree-spider",this.backgroundPattern=this.getAttribute("backgroundPattern")||"default",this.backgroundSize=this.getAttribute("backgroundSize"),this.backgroundSize="undefined"==this.backgroundSize?void 0:this.backgroundSize,this.customBackground=this.getAttribute("customBackground"),this.customBackground="undefined"==this.customBackground?void 0:this.customBackground,this.backgroundPosition=this.getAttribute("backgroundPosition"),this.backgroundPosition="undefined"==this.backgroundPosition?void 0:this.backgroundPosition,this.setCanvasBg()}setCanvasBg(){const e={default:()=>this.defaultDotsPatternBg(),flux:()=>this.fluxPatternBg(),quad:()=>this.quadPatternBg(),blurry:()=>this.blurryBg(),chaos:()=>this.chaosPatternBg(),flurry:()=>this.flurryPatternBg(),spiral:()=>this.spiralPatternBg(),whirling:()=>this.whirlingPatternBg(),replicate:()=>this.replicatePatternBg(),scribble:()=>this.scribblePatternBg(),squiggly:()=>this.squigglyPatternBg(),gyrrate:()=>this.gyrratePatternBg(),leaves:()=>this.leavesPatternBg(),spot:()=>this.spotPatternBg()};if("none"==this.backgroundPattern)return;const t=this.customBackground||e[this.backgroundPattern]();let r;r="object"==typeof t?(new XMLSerializer).serializeToString(t.node()):t;const a=encodeURIComponent(r).replace(/\(/g,"%28").replace(/\)/g,"%29");null!=this.backgroundSize&&(this.style.backgroundSize=this.backgroundSize||"40%"),null!=this.backgroundPosition&&(this.style.backgroundPosition=this.backgroundPosition||"center");const i="data:image/svg+xml;charset=utf-8,"+a;this.style.setProperty("--ts-root-el-bg-image","url("+i+")")}defaultDotsPatternBg(){const e=Yt("svg").attr("width","20").attr("height","20");return e.append("rect").attr("width","20").attr("height","20").attr("fill","transparent"),e.append("circle").attr("cx","10").attr("cy","10").attr("r","1").attr("fill","rgb(150,150,150)"),this.style.backgroundSize=this.backgroundSize||"2%",e}fluxPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",e.flux}quadPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",e.quad}blurryBg(){return this.style.backgroundSize="20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.blurry}chaosPatternBg(){return this.style.backgroundSize=this.backgroundSize||"50%",this.style.backgroundPosition=this.backgroundPosition||"center",e.chaos}spiralPatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",e.spiral}flurryPatternBg(){return this.style.backgroundSize=this.backgroundSize||"30%",this.style.backgroundPosition=this.backgroundPosition||"center",e.flurry}whirlingPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.whirling}replicatePatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",e.replicate}scribblePatternBg(){return this.style.backgroundSize=this.backgroundSize||"30%",this.style.backgroundPosition=this.backgroundPosition||"center",e.scribble}squigglyPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.squiggly}gyrratePatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",e.gyrate}leavesPatternBg(){return this.style.backgroundSize=this.backgroundSize||"40%",this.style.backgroundPosition=this.backgroundPosition||"center",e.leaves}reflectionPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.reflection}spotPatternBg(){return this.style.backgroundSize=this.backgroundSize||"40%",this.style.backgroundPosition=this.backgroundPosition||"center",e.spot}}window.customElements.define("ts-root-container",vw,{extends:"div"});class xw extends HTMLDivElement{constructor(){super()}connectedCallback(){}}window.customElements.define("ts-element",xw,{extends:"div"});var kw={airline:{airline:[{name:"Aegean Airlines",iataCode:"A3"},{name:"Aeroflot",iataCode:"SU"},{name:"Aerolineas Argentinas",iataCode:"AR"},{name:"Aeromexico",iataCode:"AM"},{name:"Air Algerie",iataCode:"AH"},{name:"Air Arabia",iataCode:"G9"},{name:"Air Canada",iataCode:"AC"},{name:"Air China",iataCode:"CA"},{name:"Air Europa",iataCode:"UX"},{name:"Air France-KLM",iataCode:"AF"},{name:"Air India",iataCode:"AI"},{name:"Air Mauritius",iataCode:"MK"},{name:"Air New Zealand",iataCode:"NZ"},{name:"Air Niugini",iataCode:"PX"},{name:"Air Tahiti",iataCode:"VT"},{name:"Air Tahiti Nui",iataCode:"TN"},{name:"Air Transat",iataCode:"TS"},{name:"AirAsia X",iataCode:"D7"},{name:"AirAsia",iataCode:"AK"},{name:"Aircalin",iataCode:"SB"},{name:"Alaska Airlines",iataCode:"AS"},{name:"Alitalia",iataCode:"AZ"},{name:"All Nippon Airways",iataCode:"NH"},{name:"Allegiant Air",iataCode:"G4"},{name:"American Airlines",iataCode:"AA"},{name:"Asiana Airlines",iataCode:"OZ"},{name:"Avianca",iataCode:"AV"},{name:"Azul Linhas Aereas Brasileiras",iataCode:"AD"},{name:"Azur Air",iataCode:"ZF"},{name:"Beijing Capital Airlines",iataCode:"JD"},{name:"Boliviana de Aviacion",iataCode:"OB"},{name:"British Airways",iataCode:"BA"},{name:"Cathay Pacific",iataCode:"CX"},{name:"Cebu Pacific Air",iataCode:"5J"},{name:"China Airlines",iataCode:"CI"},{name:"China Eastern Airlines",iataCode:"MU"},{name:"China Southern Airlines",iataCode:"CZ"},{name:"Condor",iataCode:"DE"},{name:"Copa Airlines",iataCode:"CM"},{name:"Delta Air Lines",iataCode:"DL"},{name:"Easyfly",iataCode:"VE"},{name:"EasyJet",iataCode:"U2"},{name:"EcoJet",iataCode:"8J"},{name:"Egyptair",iataCode:"MS"},{name:"El Al",iataCode:"LY"},{name:"Emirates Airlines",iataCode:"EK"},{name:"Ethiopian Airlines",iataCode:"ET"},{name:"Etihad Airways",iataCode:"EY"},{name:"EVA Air",iataCode:"BR"},{name:"Fiji Airways",iataCode:"FJ"},{name:"Finnair",iataCode:"AY"},{name:"Flybondi",iataCode:"FO"},{name:"Flydubai",iataCode:"FZ"},{name:"FlySafair",iataCode:"FA"},{name:"Frontier Airlines",iataCode:"F9"},{name:"Garuda Indonesia",iataCode:"GA"},{name:"Go First",iataCode:"G8"},{name:"Gol Linhas Aereas Inteligentes",iataCode:"G3"},{name:"Hainan Airlines",iataCode:"HU"},{name:"Hawaiian Airlines",iataCode:"HA"},{name:"IndiGo Airlines",iataCode:"6E"},{name:"Japan Airlines",iataCode:"JL"},{name:"Jeju Air",iataCode:"7C"},{name:"Jet2",iataCode:"LS"},{name:"JetBlue Airways",iataCode:"B6"},{name:"JetSMART",iataCode:"JA"},{name:"Juneyao Airlines",iataCode:"HO"},{name:"Kenya Airways",iataCode:"KQ"},{name:"Korean Air",iataCode:"KE"},{name:"Kulula.com",iataCode:"MN"},{name:"LATAM Airlines",iataCode:"LA"},{name:"Lion Air",iataCode:"JT"},{name:"LOT Polish Airlines",iataCode:"LO"},{name:"Lufthansa",iataCode:"LH"},{name:"Libyan Airlines",iataCode:"LN"},{name:"Linea Aerea Amaszonas",iataCode:"Z8"},{name:"Malaysia Airlines",iataCode:"MH"},{name:"Nordwind Airlines",iataCode:"N4"},{name:"Norwegian Air Shuttle",iataCode:"DY"},{name:"Oman Air",iataCode:"WY"},{name:"Pakistan International Airlines",iataCode:"PK"},{name:"Pegasus Airlines",iataCode:"PC"},{name:"Philippine Airlines",iataCode:"PR"},{name:"Qantas Group",iataCode:"QF"},{name:"Qatar Airways",iataCode:"QR"},{name:"Republic Airways",iataCode:"YX"},{name:"Royal Air Maroc",iataCode:"AT"},{name:"Ryanair",iataCode:"FR"},{name:"S7 Airlines",iataCode:"S7"},{name:"SAS",iataCode:"SK"},{name:"Satena",iataCode:"9R"},{name:"Saudia",iataCode:"SV"},{name:"Shandong Airlines",iataCode:"SC"},{name:"Sichuan Airlines",iataCode:"3U"},{name:"Singapore Airlines",iataCode:"SQ"},{name:"Sky Airline",iataCode:"H2"},{name:"SkyWest Airlines",iataCode:"OO"},{name:"South African Airways",iataCode:"SA"},{name:"Southwest Airlines",iataCode:"WN"},{name:"SpiceJet",iataCode:"SG"},{name:"Spirit Airlines",iataCode:"NK"},{name:"Spring Airlines",iataCode:"9S"},{name:"SriLankan Airlines",iataCode:"UL"},{name:"Star Peru",iataCode:"2I"},{name:"Sun Country Airlines",iataCode:"SY"},{name:"SunExpress",iataCode:"XQ"},{name:"TAP Air Portugal",iataCode:"TP"},{name:"Thai AirAsia",iataCode:"FD"},{name:"Thai Airways",iataCode:"TG"},{name:"TUI Airways",iataCode:"BY"},{name:"Tunisair",iataCode:"TU"},{name:"Turkish Airlines",iataCode:"TK"},{name:"Ukraine International",iataCode:"PS"},{name:"United Airlines",iataCode:"UA"},{name:"Ural Airlines",iataCode:"U6"},{name:"VietJet Air",iataCode:"VJ"},{name:"Vietnam Airlines",iataCode:"VN"},{name:"Virgin Atlantic Airways",iataCode:"VS"},{name:"Virgin Australia",iataCode:"VA"},{name:"VivaAerobus",iataCode:"VB"},{name:"VOEPASS Linhas Aereas",iataCode:"2Z"},{name:"Volaris",iataCode:"Y4"},{name:"WestJet",iataCode:"WS"},{name:"Wingo",iataCode:"P5"},{name:"Wizz Air",iataCode:"W6"}],airplane:[{name:"Aerospatiale/BAC Concorde",iataTypeCode:"SSC"},{name:"Airbus A300",iataTypeCode:"AB3"},{name:"Airbus A310",iataTypeCode:"310"},{name:"Airbus A310-200",iataTypeCode:"312"},{name:"Airbus A310-300",iataTypeCode:"313"},{name:"Airbus A318",iataTypeCode:"318"},{name:"Airbus A319",iataTypeCode:"319"},{name:"Airbus A319neo",iataTypeCode:"31N"},{name:"Airbus A320",iataTypeCode:"320"},{name:"Airbus A320neo",iataTypeCode:"32N"},{name:"Airbus A321",iataTypeCode:"321"},{name:"Airbus A321neo",iataTypeCode:"32Q"},{name:"Airbus A330",iataTypeCode:"330"},{name:"Airbus A330-200",iataTypeCode:"332"},{name:"Airbus A330-300",iataTypeCode:"333"},{name:"Airbus A330-800neo",iataTypeCode:"338"},{name:"Airbus A330-900neo",iataTypeCode:"339"},{name:"Airbus A340",iataTypeCode:"340"},{name:"Airbus A340-200",iataTypeCode:"342"},{name:"Airbus A340-300",iataTypeCode:"343"},{name:"Airbus A340-500",iataTypeCode:"345"},{name:"Airbus A340-600",iataTypeCode:"346"},{name:"Airbus A350",iataTypeCode:"350"},{name:"Airbus A350-900",iataTypeCode:"359"},{name:"Airbus A350-1000",iataTypeCode:"351"},{name:"Airbus A380",iataTypeCode:"380"},{name:"Airbus A380-800",iataTypeCode:"388"},{name:"Antonov An-12",iataTypeCode:"ANF"},{name:"Antonov An-24",iataTypeCode:"AN4"},{name:"Antonov An-26",iataTypeCode:"A26"},{name:"Antonov An-28",iataTypeCode:"A28"},{name:"Antonov An-30",iataTypeCode:"A30"},{name:"Antonov An-32",iataTypeCode:"A32"},{name:"Antonov An-72",iataTypeCode:"AN7"},{name:"Antonov An-124 Ruslan",iataTypeCode:"A4F"},{name:"Antonov An-140",iataTypeCode:"A40"},{name:"Antonov An-148",iataTypeCode:"A81"},{name:"Antonov An-158",iataTypeCode:"A58"},{name:"Antonov An-225 Mriya",iataTypeCode:"A5F"},{name:"Boeing 707",iataTypeCode:"703"},{name:"Boeing 717",iataTypeCode:"717"},{name:"Boeing 720B",iataTypeCode:"B72"},{name:"Boeing 727",iataTypeCode:"727"},{name:"Boeing 727-100",iataTypeCode:"721"},{name:"Boeing 727-200",iataTypeCode:"722"},{name:"Boeing 737 MAX 7",iataTypeCode:"7M7"},{name:"Boeing 737 MAX 8",iataTypeCode:"7M8"},{name:"Boeing 737 MAX 9",iataTypeCode:"7M9"},{name:"Boeing 737 MAX 10",iataTypeCode:"7MJ"},{name:"Boeing 737",iataTypeCode:"737"},{name:"Boeing 737-100",iataTypeCode:"731"},{name:"Boeing 737-200",iataTypeCode:"732"},{name:"Boeing 737-300",iataTypeCode:"733"},{name:"Boeing 737-400",iataTypeCode:"734"},{name:"Boeing 737-500",iataTypeCode:"735"},{name:"Boeing 737-600",iataTypeCode:"736"},{name:"Boeing 737-700",iataTypeCode:"73G"},{name:"Boeing 737-800",iataTypeCode:"738"},{name:"Boeing 737-900",iataTypeCode:"739"},{name:"Boeing 747",iataTypeCode:"747"},{name:"Boeing 747-100",iataTypeCode:"741"},{name:"Boeing 747-200",iataTypeCode:"742"},{name:"Boeing 747-300",iataTypeCode:"743"},{name:"Boeing 747-400",iataTypeCode:"744"},{name:"Boeing 747-400D",iataTypeCode:"74J"},{name:"Boeing 747-8",iataTypeCode:"748"},{name:"Boeing 747SP",iataTypeCode:"74L"},{name:"Boeing 747SR",iataTypeCode:"74R"},{name:"Boeing 757",iataTypeCode:"757"},{name:"Boeing 757-200",iataTypeCode:"752"},{name:"Boeing 757-300",iataTypeCode:"753"},{name:"Boeing 767",iataTypeCode:"767"},{name:"Boeing 767-200",iataTypeCode:"762"},{name:"Boeing 767-300",iataTypeCode:"763"},{name:"Boeing 767-400",iataTypeCode:"764"},{name:"Boeing 777",iataTypeCode:"777"},{name:"Boeing 777-200",iataTypeCode:"772"},{name:"Boeing 777-200LR",iataTypeCode:"77L"},{name:"Boeing 777-300",iataTypeCode:"773"},{name:"Boeing 777-300ER",iataTypeCode:"77W"},{name:"Boeing 787",iataTypeCode:"787"},{name:"Boeing 787-8",iataTypeCode:"788"},{name:"Boeing 787-9",iataTypeCode:"789"},{name:"Boeing 787-10",iataTypeCode:"781"},{name:"Canadair Challenger",iataTypeCode:"CCJ"},{name:"Canadair CL-44",iataTypeCode:"CL4"},{name:"Canadair Regional Jet 100",iataTypeCode:"CR1"},{name:"Canadair Regional Jet 200",iataTypeCode:"CR2"},{name:"Canadair Regional Jet 700",iataTypeCode:"CR7"},{name:"Canadair Regional Jet 705",iataTypeCode:"CRA"},{name:"Canadair Regional Jet 900",iataTypeCode:"CR9"},{name:"Canadair Regional Jet 1000",iataTypeCode:"CRK"},{name:"De Havilland Canada DHC-2 Beaver",iataTypeCode:"DHP"},{name:"De Havilland Canada DHC-2 Turbo-Beaver",iataTypeCode:"DHR"},{name:"De Havilland Canada DHC-3 Otter",iataTypeCode:"DHL"},{name:"De Havilland Canada DHC-4 Caribou",iataTypeCode:"DHC"},{name:"De Havilland Canada DHC-6 Twin Otter",iataTypeCode:"DHT"},{name:"De Havilland Canada DHC-7 Dash 7",iataTypeCode:"DH7"},{name:"De Havilland Canada DHC-8-100 Dash 8 / 8Q",iataTypeCode:"DH1"},{name:"De Havilland Canada DHC-8-200 Dash 8 / 8Q",iataTypeCode:"DH2"},{name:"De Havilland Canada DHC-8-300 Dash 8 / 8Q",iataTypeCode:"DH3"},{name:"De Havilland Canada DHC-8-400 Dash 8Q",iataTypeCode:"DH4"},{name:"De Havilland DH.104 Dove",iataTypeCode:"DHD"},{name:"De Havilland DH.114 Heron",iataTypeCode:"DHH"},{name:"Douglas DC-3",iataTypeCode:"D3F"},{name:"Douglas DC-6",iataTypeCode:"D6F"},{name:"Douglas DC-8-50",iataTypeCode:"D8T"},{name:"Douglas DC-8-62",iataTypeCode:"D8L"},{name:"Douglas DC-8-72",iataTypeCode:"D8Q"},{name:"Douglas DC-9-10",iataTypeCode:"D91"},{name:"Douglas DC-9-20",iataTypeCode:"D92"},{name:"Douglas DC-9-30",iataTypeCode:"D93"},{name:"Douglas DC-9-40",iataTypeCode:"D94"},{name:"Douglas DC-9-50",iataTypeCode:"D95"},{name:"Douglas DC-10",iataTypeCode:"D10"},{name:"Douglas DC-10-10",iataTypeCode:"D1X"},{name:"Douglas DC-10-30",iataTypeCode:"D1Y"},{name:"Embraer 170",iataTypeCode:"E70"},{name:"Embraer 175",iataTypeCode:"E75"},{name:"Embraer 190",iataTypeCode:"E90"},{name:"Embraer 195",iataTypeCode:"E95"},{name:"Embraer E190-E2",iataTypeCode:"290"},{name:"Embraer E195-E2",iataTypeCode:"295"},{name:"Embraer EMB.110 Bandeirante",iataTypeCode:"EMB"},{name:"Embraer EMB.120 Brasilia",iataTypeCode:"EM2"},{name:"Embraer Legacy 600",iataTypeCode:"ER3"},{name:"Embraer Phenom 100",iataTypeCode:"EP1"},{name:"Embraer Phenom 300",iataTypeCode:"EP3"},{name:"Embraer RJ135",iataTypeCode:"ER3"},{name:"Embraer RJ140",iataTypeCode:"ERD"},{name:"Embraer RJ145 Amazon",iataTypeCode:"ER4"},{name:"Ilyushin IL18",iataTypeCode:"IL8"},{name:"Ilyushin IL62",iataTypeCode:"IL6"},{name:"Ilyushin IL76",iataTypeCode:"IL7"},{name:"Ilyushin IL86",iataTypeCode:"ILW"},{name:"Ilyushin IL96-300",iataTypeCode:"I93"},{name:"Ilyushin IL114",iataTypeCode:"I14"},{name:"Lockheed L-182 / 282 / 382 (L-100) Hercules",iataTypeCode:"LOH"},{name:"Lockheed L-188 Electra",iataTypeCode:"LOE"},{name:"Lockheed L-1011 Tristar",iataTypeCode:"L10"},{name:"Lockheed L-1049 Super Constellation",iataTypeCode:"L49"},{name:"McDonnell Douglas MD11",iataTypeCode:"M11"},{name:"McDonnell Douglas MD80",iataTypeCode:"M80"},{name:"McDonnell Douglas MD81",iataTypeCode:"M81"},{name:"McDonnell Douglas MD82",iataTypeCode:"M82"},{name:"McDonnell Douglas MD83",iataTypeCode:"M83"},{name:"McDonnell Douglas MD87",iataTypeCode:"M87"},{name:"McDonnell Douglas MD88",iataTypeCode:"M88"},{name:"McDonnell Douglas MD90",iataTypeCode:"M90"},{name:"Sukhoi Superjet 100-95",iataTypeCode:"SU9"},{name:"Tupolev Tu-134",iataTypeCode:"TU3"},{name:"Tupolev Tu-154",iataTypeCode:"TU5"},{name:"Tupolev Tu-204",iataTypeCode:"T20"},{name:"Yakovlev Yak-40",iataTypeCode:"YK4"},{name:"Yakovlev Yak-42",iataTypeCode:"YK2"}],airport:[{name:"Adelaide International Airport",iataCode:"ADL"},{name:"Adolfo Suarez Madrid-Barajas Airport",iataCode:"MAD"},{name:"Aeroparque Jorge Newbery Airport",iataCode:"AEP"},{name:"Afonso Pena International Airport",iataCode:"CWB"},{name:"Alfonso Bonilla Aragon International Airport",iataCode:"CLO"},{name:"Amsterdam Airport Schiphol",iataCode:"AMS"},{name:"Arturo Merino Benitez International Airport",iataCode:"SCL"},{name:"Auckland International Airport",iataCode:"AKL"},{name:"Beijing Capital International Airport",iataCode:"PEK"},{name:"Belem Val de Cans International Airport",iataCode:"BEL"},{name:"Belo Horizonte Tancredo Neves International Airport",iataCode:"CNF"},{name:"Berlin-Tegel Airport",iataCode:"TXL"},{name:"Bole International Airport",iataCode:"ADD"},{name:"Brasilia-Presidente Juscelino Kubitschek International Airport",iataCode:"BSB"},{name:"Brisbane International Airport",iataCode:"BNE"},{name:"Brussels Airport",iataCode:"BRU"},{name:"Cairns Airport",iataCode:"CNS"},{name:"Cairo International Airport",iataCode:"CAI"},{name:"Canberra Airport",iataCode:"CBR"},{name:"Capetown International Airport",iataCode:"CPT"},{name:"Charles de Gaulle International Airport",iataCode:"CDG"},{name:"Charlotte Douglas International Airport",iataCode:"CLT"},{name:"Chengdu Shuangliu International Airport",iataCode:"CTU"},{name:"Chhatrapati Shivaji International Airport",iataCode:"BOM"},{name:"Chicago O'Hare International Airport",iataCode:"ORD"},{name:"Chongqing Jiangbei International Airport",iataCode:"CKG"},{name:"Christchurch International Airport",iataCode:"CHC"},{name:"Copenhagen Kastrup Airport",iataCode:"CPH"},{name:"Dallas Fort Worth International Airport",iataCode:"DFW"},{name:"Daniel K. Inouye International Airport",iataCode:"HNL"},{name:"Denver International Airport",iataCode:"DEN"},{name:"Don Mueang International Airport",iataCode:"DMK"},{name:"Dubai International Airport",iataCode:"DXB"},{name:"Dublin Airport",iataCode:"DUB"},{name:"Dusseldorf Airport",iataCode:"DUS"},{name:"El Dorado International Airport",iataCode:"BOG"},{name:"Eleftherios Venizelos International Airport",iataCode:"ATH"},{name:"Faa'a International Airport",iataCode:"PPT"},{name:"Fort Lauderdale Hollywood International Airport",iataCode:"FLL"},{name:"Fortaleza Pinto Martins International Airport",iataCode:"FOR"},{name:"Frankfurt am Main Airport",iataCode:"FRA"},{name:"George Bush Intercontinental Houston Airport",iataCode:"IAH"},{name:"Gold Coast Airport",iataCode:"OOL"},{name:"Guarulhos - Governador Andre Franco Montoro International Airport",iataCode:"GRU"},{name:"Hartsfield-Jackson Atlanta International Airport",iataCode:"ATL"},{name:"Helsinki Vantaa Airport",iataCode:"HEL"},{name:"Hobart International Airport",iataCode:"HBA"},{name:"Hong Kong International Airport",iataCode:"HKG"},{name:"Houari Boumediene Airport",iataCode:"ALG"},{name:"Hurgada International Airport",iataCode:"HRG"},{name:"Incheon International Airport",iataCode:"ICN"},{name:"Indira Gandhi International Airport",iataCode:"DEL"},{name:"Istanbul Airport",iataCode:"IST"},{name:"Jacksons International Airport",iataCode:"POM"},{name:"Jeju International Airport",iataCode:"CJU"},{name:"John F Kennedy International Airport",iataCode:"JFK"},{name:"Jorge Chavez International Airport",iataCode:"LIM"},{name:"Jose Maria Cordova International Airport",iataCode:"MDE"},{name:"Josep Tarradellas Barcelona-El Prat Airport",iataCode:"BCN"},{name:"Kahului Airport",iataCode:"OGG"},{name:"King Abdulaziz International Airport",iataCode:"JED"},{name:"Kuala Lumpur International Airport",iataCode:"KUL"},{name:"Kunming Changshui International Airport",iataCode:"KMG"},{name:"La Tontouta International Airport",iataCode:"NOU"},{name:"Leonardo da Vinci-Fiumicino Airport",iataCode:"FCO"},{name:"London Heathrow Airport",iataCode:"LHR"},{name:"Los Angeles International Airport",iataCode:"LAX"},{name:"McCarran International Airport",iataCode:"LAS"},{name:"Melbourne International Airport",iataCode:"MEL"},{name:"Mexico City International Airport",iataCode:"MEX"},{name:"Miami International Airport",iataCode:"MIA"},{name:"Ministro Pistarini International Airport",iataCode:"EZE"},{name:"Minneapolis-St Paul International/Wold-Chamberlain Airport",iataCode:"MSP"},{name:"Mohammed V International Airport",iataCode:"CMN"},{name:"Moscow Domodedovo Airport",iataCode:"DME"},{name:"Munich Airport",iataCode:"MUC"},{name:"Murtala Muhammed International Airport",iataCode:"LOS"},{name:"Nadi International Airport",iataCode:"NAN"},{name:"Nairobi Jomo Kenyatta International Airport",iataCode:"NBO"},{name:"Narita International Airport",iataCode:"NRT"},{name:"Newark Liberty International Airport",iataCode:"EWR"},{name:"Ninoy Aquino International Airport",iataCode:"MNL"},{name:"Noumea Magenta Airport",iataCode:"GEA"},{name:"O. R. Tambo International Airport",iataCode:"JNB"},{name:"Orlando International Airport",iataCode:"MCO"},{name:"Oslo Lufthavn",iataCode:"OSL"},{name:"Perth Airport",iataCode:"PER"},{name:"Phoenix Sky Harbor International Airport",iataCode:"PHX"},{name:"Recife Guararapes-Gilberto Freyre International Airport",iataCode:"REC"},{name:"Rio de Janeiro Galeao International Airport",iataCode:"GIG"},{name:"Salgado Filho International Airport",iataCode:"POA"},{name:"Salvador Deputado Luis Eduardo Magalhaes International Airport",iataCode:"SSA"},{name:"San Francisco International Airport",iataCode:"SFO"},{name:"Santos Dumont Airport",iataCode:"SDU"},{name:"Sao Paulo-Congonhas Airport",iataCode:"CGH"},{name:"Seattle Tacoma International Airport",iataCode:"SEA"},{name:"Shanghai Hongqiao International Airport",iataCode:"SHA"},{name:"Shanghai Pudong International Airport",iataCode:"PVG"},{name:"Shenzhen Bao'an International Airport",iataCode:"SZX"},{name:"Sheremetyevo International Airport",iataCode:"SVO"},{name:"Singapore Changi Airport",iataCode:"SIN"},{name:"Soekarno-Hatta International Airport",iataCode:"CGK"},{name:'Stockholm-Arlanda Airport"',iataCode:"ARN"},{name:"Suvarnabhumi Airport",iataCode:"BKK"},{name:"Sydney Kingsford Smith International Airport",iataCode:"SYD"},{name:"Taiwan Taoyuan International Airport",iataCode:"TPE"},{name:"Tan Son Nhat International Airport",iataCode:"SGN"},{name:"Tokyo Haneda International Airport",iataCode:"HND"},{name:"Toronto Pearson International Airport",iataCode:"YYZ"},{name:"Tunis Carthage International Airport",iataCode:"TUN"},{name:"Vancouver International Airport",iataCode:"YVR"},{name:"Vienna International Airport",iataCode:"VIE"},{name:"Viracopos International Airport",iataCode:"VCP"},{name:"Vnukovo International Airport",iataCode:"VKO"},{name:"Wellington International Airport",iataCode:"WLG"},{name:"Xi'an Xianyang International Airport",iataCode:"XIY"},{name:"Zhukovsky International Airport",iataCode:"ZIA"},{name:"Zurich Airport",iataCode:"ZRH"}]},animal:{bear:["American black bear","Asian black bear","Brown bear","Giant panda","Polar bear","Sloth bear","Spectacled bear","Sun bear"],bird:["Abert's Towhee","Acadian Flycatcher","Acorn Woodpecker","Alder Flycatcher","Aleutian Tern","Allen's Hummingbird","Altamira Oriole","American Avocet","American Bittern","American Black Duck","American Coot","American Crow","American Dipper","American Golden-Plover","American Goldfinch","American Kestrel","American Oystercatcher","American Pipit","American Redstart","American Robin","American Tree Sparrow","American White Pelican","American Wigeon","American Woodcock","Ancient Murrelet","Anhinga","Anna's Hummingbird","Antillean Nighthawk","Antillean Palm Swift","Aplomado Falcon","Arctic Loon","Arctic Tern","Arctic Warbler","Ash-throated Flycatcher","Ashy Storm-Petrel","Asian Brown Flycatcher","Atlantic Puffin","Audubon's Oriole","Audubon's Shearwater","Aztec Thrush","Azure Gallinule","Bachman's Sparrow","Bachman's Warbler","Bahama Mockingbird","Bahama Swallow","Bahama Woodstar","Baikal Teal","Baird's Sandpiper","Baird's Sparrow","Bald Eagle","Baltimore Oriole","Bananaquit","Band-rumped Storm-Petrel","Band-tailed Gull","Band-tailed Pigeon","Bank Swallow","Bar-tailed Godwit","Barn Owl","Barn Swallow","Barnacle Goose","Barred Owl","Barrow's Goldeneye","Bay-breasted Warbler","Bean Goose","Bell's Vireo","Belted Kingfisher","Bendire's Thrasher","Berylline Hummingbird","Bewick's Wren","Bicknell's Thrush","Black Catbird","Black Guillemot","Black Noddy","Black Oystercatcher","Black Phoebe","Black Rail","Black Rosy-Finch","Black Scoter","Black Skimmer","Black Storm-Petrel","Black Swift","Black Tern","Black Turnstone","Black Vulture","Black-and-white Warbler","Black-backed Wagtail","Black-backed Woodpecker","Black-bellied Plover","Black-bellied Whistling-Duck","Black-billed Cuckoo","Black-billed Magpie","Black-browed Albatross","Black-capped Chickadee","Black-capped Gnatcatcher","Black-capped Petrel","Black-capped Vireo","Black-chinned Hummingbird","Black-chinned Sparrow","Black-crowned Night-Heron","Black-faced Grassquit","Black-footed Albatross","Black-headed Grosbeak","Black-headed Gull","Black-legged Kittiwake","Black-necked Stilt","Black-tailed Gnatcatcher","Black-tailed Godwit","Black-tailed Gull","Black-throated Blue Warbler","Black-throated Gray Warbler","Black-throated Green Warbler","Black-throated Sparrow","Black-vented Oriole","Black-vented Shearwater","Black-whiskered Vireo","Black-winged Stilt","Blackburnian Warbler","Blackpoll Warbler","Blue Bunting","Blue Grosbeak","Blue Grouse","Blue Jay","Blue Mockingbird","Blue-footed Booby","Blue-gray Gnatcatcher","Blue-headed Vireo","Blue-throated Hummingbird","Blue-winged Teal","Blue-winged Warbler","Bluethroat","Boat-tailed Grackle","Bobolink","Bohemian Waxwing","Bonaparte's Gull","Boreal Chickadee","Boreal Owl","Botteri's Sparrow","Brambling","Brandt's Cormorant","Brant","Brewer's Blackbird","Brewer's Sparrow","Bridled Tern","Bridled Titmouse","Bristle-thighed Curlew","Broad-billed Hummingbird","Broad-billed Sandpiper","Broad-tailed Hummingbird","Broad-winged Hawk","Bronzed Cowbird","Brown Booby","Brown Creeper","Brown Jay","Brown Noddy","Brown Pelican","Brown Shrike","Brown Thrasher","Brown-capped Rosy-Finch","Brown-chested Martin","Brown-crested Flycatcher","Brown-headed Cowbird","Brown-headed Nuthatch","Budgerigar","Buff-bellied Hummingbird","Buff-breasted Flycatcher","Buff-breasted Sandpiper","Buff-collared Nightjar","Bufflehead","Buller's Shearwater","Bullock's Oriole","Bumblebee Hummingbird","Burrowing Owl","Bushtit","Cactus Wren","California Condor","California Gnatcatcher","California Gull","California Quail","California Thrasher","California Towhee","Calliope Hummingbird","Canada Goose","Canada Warbler","Canvasback","Canyon Towhee","Canyon Wren","Cape May Warbler","Caribbean Elaenia","Carolina Chickadee","Carolina Parakeet","Carolina Wren","Caspian Tern","Cassin's Auklet","Cassin's Finch","Cassin's Kingbird","Cassin's Sparrow","Cassin's Vireo","Cattle Egret","Cave Swallow","Cedar Waxwing","Cerulean Warbler","Chestnut-backed Chickadee","Chestnut-collared Longspur","Chestnut-sided Warbler","Chihuahuan Raven","Chimney Swift","Chinese Egret","Chipping Sparrow","Chuck-will's-widow","Chukar","Cinnamon Hummingbird","Cinnamon Teal","Citrine Wagtail","Clapper Rail","Clark's Grebe","Clark's Nutcracker","Clay-colored Robin","Clay-colored Sparrow","Cliff Swallow","Colima Warbler","Collared Forest-Falcon","Collared Plover","Common Black-Hawk","Common Chaffinch","Common Crane","Common Cuckoo","Common Eider","Common Goldeneye","Common Grackle","Common Greenshank","Common Ground-Dove","Common House-Martin","Common Loon","Common Merganser","Common Moorhen","Common Murre","Common Nighthawk","Common Pauraque","Common Pochard","Common Poorwill","Common Raven","Common Redpoll","Common Ringed Plover","Common Rosefinch","Common Sandpiper","Common Snipe","Common Swift","Common Tern","Common Yellowthroat","Connecticut Warbler","Cook's Petrel","Cooper's Hawk","Cordilleran Flycatcher","Corn Crake","Cory's Shearwater","Costa's Hummingbird","Couch's Kingbird","Crane Hawk","Craveri's Murrelet","Crescent-chested Warbler","Crested Auklet","Crested Caracara","Crested Myna","Crimson-collared Grosbeak","Crissal Thrasher","Cuban Martin","Curlew Sandpiper","Curve-billed Thrasher","Dark-eyed Junco","Dickcissel","Double-crested Cormorant","Double-striped Thick-knee","Dovekie","Downy Woodpecker","Dunlin","Dusky Flycatcher","Dusky Thrush","Dusky Warbler","Dusky-capped Flycatcher","Eared Grebe","Eared Trogon","Eastern Bluebird","Eastern Kingbird","Eastern Meadowlark","Eastern Phoebe","Eastern Screech-Owl","Eastern Towhee","Eastern Wood-Pewee","Elegant Tern","Elegant Trogon","Elf Owl","Emperor Goose","Eskimo Curlew","Eurasian Blackbird","Eurasian Bullfinch","Eurasian Collared-Dove","Eurasian Coot","Eurasian Curlew","Eurasian Dotterel","Eurasian Hobby","Eurasian Jackdaw","Eurasian Kestrel","Eurasian Oystercatcher","Eurasian Siskin","Eurasian Tree Sparrow","Eurasian Wigeon","Eurasian Woodcock","Eurasian Wryneck","European Golden-Plover","European Starling","European Storm-Petrel","European Turtle-Dove","Evening Grosbeak","Eyebrowed Thrush","Falcated Duck","Fan-tailed Warbler","Far Eastern Curlew","Ferruginous Hawk","Ferruginous Pygmy-Owl","Field Sparrow","Fieldfare","Fish Crow","Five-striped Sparrow","Flame-colored Tanager","Flammulated Owl","Flesh-footed Shearwater","Florida Scrub-Jay","Fork-tailed Flycatcher","Fork-tailed Storm-Petrel","Fork-tailed Swift","Forster's Tern","Fox Sparrow","Franklin's Gull","Fulvous Whistling-Duck","Gadwall","Gambel's Quail","Garganey","Gila Woodpecker","Gilded Flicker","Glaucous Gull","Glaucous-winged Gull","Glossy Ibis","Golden Eagle","Golden-cheeked Warbler","Golden-crowned Kinglet","Golden-crowned Sparrow","Golden-crowned Warbler","Golden-fronted Woodpecker","Golden-winged Warbler","Grace's Warbler","Grasshopper Sparrow","Gray Bunting","Gray Catbird","Gray Flycatcher","Gray Hawk","Gray Jay","Gray Kingbird","Gray Partridge","Gray Silky-flycatcher","Gray Vireo","Gray Wagtail","Gray-breasted Martin","Gray-cheeked Thrush","Gray-crowned Rosy-Finch","Gray-crowned Yellowthroat","Gray-headed Chickadee","Gray-spotted Flycatcher","Gray-tailed Tattler","Great Auk","Great Black-backed Gull","Great Blue Heron","Great Cormorant","Great Crested Flycatcher","Great Egret","Great Frigatebird","Great Gray Owl","Great Horned Owl","Great Kiskadee","Great Knot","Great Skua","Great Spotted Woodpecker","Great-tailed Grackle","Greater Flamingo","Greater Pewee","Greater Prairie-chicken","Greater Roadrunner","Greater Scaup","Greater Shearwater","Greater White-fronted Goose","Greater Yellowlegs","Green Heron","Green Jay","Green Kingfisher","Green Sandpiper","Green Violet-ear","Green-breasted Mango","Green-tailed Towhee","Green-winged Teal","Greenish Elaenia","Groove-billed Ani","Gull-billed Tern","Gyrfalcon","Hairy Woodpecker","Hammond's Flycatcher","Harlequin Duck","Harris's Hawk","Harris's Sparrow","Hawfinch","Heermann's Gull","Henslow's Sparrow","Hepatic Tanager","Herald Petrel","Hermit Thrush","Hermit Warbler","Herring Gull","Himalayan Snowcock","Hoary Redpoll","Hooded Merganser","Hooded Oriole","Hooded Warbler","Hook-billed Kite","Hoopoe","Horned Grebe","Horned Lark","Horned Puffin","House Finch","House Sparrow","House Wren","Hudsonian Godwit","Hutton's Vireo","Iceland Gull","Inca Dove","Indigo Bunting","Island Scrub-Jay","Ivory Gull","Ivory-billed Woodpecker","Jabiru","Jack Snipe","Jungle Nightjar","Juniper Titmouse","Kentucky Warbler","Key West Quail-Dove","Killdeer","King Eider","King Rail","Kirtland's Warbler","Kittlitz's Murrelet","La Sagra's Flycatcher","Labrador Duck","Ladder-backed Woodpecker","Lanceolated Warbler","Lapland Longspur","Large-billed Tern","Lark Bunting","Lark Sparrow","Laughing Gull","Lawrence's Goldfinch","Laysan Albatross","Lazuli Bunting","Le Conte's Sparrow","Le Conte's Thrasher","Leach's Storm-Petrel","Least Auklet","Least Bittern","Least Flycatcher","Least Grebe","Least Sandpiper","Least Storm-Petrel","Least Tern","Lesser Black-backed Gull","Lesser Frigatebird","Lesser Goldfinch","Lesser Nighthawk","Lesser Prairie-chicken","Lesser Scaup","Lesser White-fronted Goose","Lesser Yellowlegs","Lewis's Woodpecker","Limpkin","Lincoln's Sparrow","Little Blue Heron","Little Bunting","Little Curlew","Little Egret","Little Gull","Little Ringed Plover","Little Shearwater","Little Stint","Loggerhead Kingbird","Loggerhead Shrike","Long-billed Curlew","Long-billed Dowitcher","Long-billed Murrelet","Long-billed Thrasher","Long-eared Owl","Long-tailed Jaeger","Long-toed Stint","Louisiana Waterthrush","Lucifer Hummingbird","Lucy's Warbler","MacGillivray's Warbler","Magnificent Frigatebird","Magnificent Hummingbird","Magnolia Warbler","Mallard","Mangrove Cuckoo","Manx Shearwater","Marbled Godwit","Marbled Murrelet","Marsh Sandpiper","Marsh Wren","Masked Booby","Masked Duck","Masked Tityra","McCown's Longspur","McKay's Bunting","Merlin","Mew Gull","Mexican Chickadee","Mexican Jay","Middendorff's Grasshopper-Warbler","Mississippi Kite","Mongolian Plover","Monk Parakeet","Montezuma Quail","Mottled Duck","Mottled Owl","Mottled Petrel","Mountain Bluebird","Mountain Chickadee","Mountain Plover","Mountain Quail","Mourning Dove","Mourning Warbler","Mugimaki Flycatcher","Murphy's Petrel","Muscovy Duck","Mute Swan","Narcissus Flycatcher","Nashville Warbler","Nelson's Sharp-tailed Sparrow","Neotropic Cormorant","Northern Beardless-Tyrannulet","Northern Bobwhite","Northern Cardinal","Northern Flicker","Northern Fulmar","Northern Gannet","Northern Goshawk","Northern Harrier","Northern Hawk Owl","Northern Jacana","Northern Lapwing","Northern Mockingbird","Northern Parula","Northern Pintail","Northern Pygmy-Owl","Northern Rough-winged Swallow","Northern Saw-whet Owl","Northern Shoveler","Northern Shrike","Northern Waterthrush","Northern Wheatear","Northwestern Crow","Nuttall's Woodpecker","Nutting's Flycatcher","Oak Titmouse","Oldsquaw","Olive Sparrow","Olive Warbler","Olive-backed Pipit","Olive-sided Flycatcher","Orange-crowned Warbler","Orchard Oriole","Oriental Cuckoo","Oriental Greenfinch","Oriental Pratincole","Oriental Scops-Owl","Oriental Turtle-Dove","Osprey","Ovenbird","Pacific Golden-Plover","Pacific Loon","Pacific-slope Flycatcher","Paint-billed Crake","Painted Bunting","Painted Redstart","Pallas's Bunting","Palm Warbler","Parakeet Auklet","Parasitic Jaeger","Passenger Pigeon","Pechora Pipit","Pectoral Sandpiper","Pelagic Cormorant","Peregrine Falcon","Phainopepla","Philadelphia Vireo","Pied-billed Grebe","Pigeon Guillemot","Pileated Woodpecker","Pin-tailed Snipe","Pine Bunting","Pine Grosbeak","Pine Siskin","Pine Warbler","Pink-footed Goose","Pink-footed Shearwater","Pinyon Jay","Piping Plover","Plain Chachalaca","Plain-capped Starthroat","Plumbeous Vireo","Pomarine Jaeger","Prairie Falcon","Prairie Warbler","Prothonotary Warbler","Purple Finch","Purple Gallinule","Purple Martin","Purple Sandpiper","Pygmy Nuthatch","Pyrrhuloxia","Razorbill","Red Crossbill","Red Knot","Red Phalarope","Red-bellied Woodpecker","Red-billed Pigeon","Red-billed Tropicbird","Red-breasted Flycatcher","Red-breasted Merganser","Red-breasted Nuthatch","Red-breasted Sapsucker","Red-cockaded Woodpecker","Red-crowned Parrot","Red-eyed Vireo","Red-faced Cormorant","Red-faced Warbler","Red-flanked Bluetail","Red-footed Booby","Red-headed Woodpecker","Red-legged Kittiwake","Red-naped Sapsucker","Red-necked Grebe","Red-necked Phalarope","Red-necked Stint","Red-shouldered Hawk","Red-tailed Hawk","Red-tailed Tropicbird","Red-throated Loon","Red-throated Pipit","Red-whiskered Bulbul","Red-winged Blackbird","Reddish Egret","Redhead","Redwing","Reed Bunting","Rhinoceros Auklet","Ring-billed Gull","Ring-necked Duck","Ring-necked Pheasant","Ringed Kingfisher","Roadside Hawk","Rock Dove","Rock Ptarmigan","Rock Sandpiper","Rock Wren","Rose-breasted Grosbeak","Rose-throated Becard","Roseate Spoonbill","Roseate Tern","Ross's Goose","Ross's Gull","Rough-legged Hawk","Royal Tern","Ruby-crowned Kinglet","Ruby-throated Hummingbird","Ruddy Duck","Ruddy Ground-Dove","Ruddy Quail-Dove","Ruddy Turnstone","Ruff","Ruffed Grouse","Rufous Hummingbird","Rufous-backed Robin","Rufous-capped Warbler","Rufous-crowned Sparrow","Rufous-winged Sparrow","Rustic Bunting","Rusty Blackbird","Sabine's Gull","Sage Grouse","Sage Sparrow","Sage Thrasher","Saltmarsh Sharp-tailed Sparrow","Sanderling","Sandhill Crane","Sandwich Tern","Savannah Sparrow","Say's Phoebe","Scaled Quail","Scaly-naped Pigeon","Scarlet Ibis","Scarlet Tanager","Scissor-tailed Flycatcher","Scott's Oriole","Seaside Sparrow","Sedge Wren","Semipalmated Plover","Semipalmated Sandpiper","Sharp-shinned Hawk","Sharp-tailed Grouse","Sharp-tailed Sandpiper","Shiny Cowbird","Short-billed Dowitcher","Short-eared Owl","Short-tailed Albatross","Short-tailed Hawk","Short-tailed Shearwater","Shy Albatross","Siberian Accentor","Siberian Blue Robin","Siberian Flycatcher","Siberian Rubythroat","Sky Lark","Slate-throated Redstart","Slaty-backed Gull","Slender-billed Curlew","Smew","Smith's Longspur","Smooth-billed Ani","Snail Kite","Snow Bunting","Snow Goose","Snowy Egret","Snowy Owl","Snowy Plover","Solitary Sandpiper","Song Sparrow","Sooty Shearwater","Sooty Tern","Sora","South Polar Skua","Southern Martin","Spectacled Eider","Spoonbill Sandpiper","Spot-billed Duck","Spot-breasted Oriole","Spotted Dove","Spotted Owl","Spotted Rail","Spotted Redshank","Spotted Sandpiper","Spotted Towhee","Sprague's Pipit","Spruce Grouse","Stejneger's Petrel","Steller's Eider","Steller's Jay","Steller's Sea-Eagle","Stilt Sandpiper","Stonechat","Streak-backed Oriole","Streaked Shearwater","Strickland's Woodpecker","Stripe-headed Tanager","Sulphur-bellied Flycatcher","Summer Tanager","Surf Scoter","Surfbird","Swainson's Hawk","Swainson's Thrush","Swainson's Warbler","Swallow-tailed Kite","Swamp Sparrow","Tamaulipas Crow","Tawny-shouldered Blackbird","Temminck's Stint","Tennessee Warbler","Terek Sandpiper","Thayer's Gull","Thick-billed Kingbird","Thick-billed Murre","Thick-billed Parrot","Thick-billed Vireo","Three-toed Woodpecker","Townsend's Solitaire","Townsend's Warbler","Tree Pipit","Tree Swallow","Tricolored Blackbird","Tricolored Heron","Tropical Kingbird","Tropical Parula","Trumpeter Swan","Tufted Duck","Tufted Flycatcher","Tufted Puffin","Tufted Titmouse","Tundra Swan","Turkey Vulture","Upland Sandpiper","Varied Bunting","Varied Thrush","Variegated Flycatcher","Vaux's Swift","Veery","Verdin","Vermilion Flycatcher","Vesper Sparrow","Violet-crowned Hummingbird","Violet-green Swallow","Virginia Rail","Virginia's Warbler","Wandering Albatross","Wandering Tattler","Warbling Vireo","Wedge-rumped Storm-Petrel","Wedge-tailed Shearwater","Western Bluebird","Western Grebe","Western Gull","Western Kingbird","Western Meadowlark","Western Reef-Heron","Western Sandpiper","Western Screech-Owl","Western Scrub-Jay","Western Tanager","Western Wood-Pewee","Whimbrel","Whip-poor-will","Whiskered Auklet","Whiskered Screech-Owl","Whiskered Tern","White Ibis","White Wagtail","White-breasted Nuthatch","White-cheeked Pintail","White-chinned Petrel","White-collared Seedeater","White-collared Swift","White-crowned Pigeon","White-crowned Sparrow","White-eared Hummingbird","White-eyed Vireo","White-faced Ibis","White-faced Storm-Petrel","White-headed Woodpecker","White-rumped Sandpiper","White-tailed Eagle","White-tailed Hawk","White-tailed Kite","White-tailed Ptarmigan","White-tailed Tropicbird","White-throated Needletail","White-throated Robin","White-throated Sparrow","White-throated Swift","White-tipped Dove","White-winged Crossbill","White-winged Dove","White-winged Parakeet","White-winged Scoter","White-winged Tern","Whooper Swan","Whooping Crane","Wild Turkey","Willet","Williamson's Sapsucker","Willow Flycatcher","Willow Ptarmigan","Wilson's Phalarope","Wilson's Plover","Wilson's Storm-Petrel","Wilson's Warbler","Winter Wren","Wood Duck","Wood Sandpiper","Wood Stork","Wood Thrush","Wood Warbler","Worm-eating Warbler","Worthen's Sparrow","Wrentit","Xantus's Hummingbird","Xantus's Murrelet","Yellow Bittern","Yellow Grosbeak","Yellow Rail","Yellow Wagtail","Yellow Warbler","Yellow-bellied Flycatcher","Yellow-bellied Sapsucker","Yellow-billed Cuckoo","Yellow-billed Loon","Yellow-billed Magpie","Yellow-breasted Bunting","Yellow-breasted Chat","Yellow-crowned Night-Heron","Yellow-eyed Junco","Yellow-faced Grassquit","Yellow-footed Gull","Yellow-green Vireo","Yellow-headed Blackbird","Yellow-legged Gull","Yellow-nosed Albatross","Yellow-rumped Warbler","Yellow-throated Vireo","Yellow-throated Warbler","Yucatan Vireo","Zenaida Dove","Zone-tailed Hawk"],cat:["Abyssinian","American Bobtail","American Curl","American Shorthair","American Wirehair","Balinese","Bengal","Birman","Bombay","British Shorthair","Burmese","Chartreux","Chausie","Cornish Rex","Devon Rex","Donskoy","Egyptian Mau","Exotic Shorthair","Havana","Highlander","Himalayan","Japanese Bobtail","Korat","Kurilian Bobtail","LaPerm","Maine Coon","Manx","Minskin","Munchkin","Nebelung","Norwegian Forest Cat","Ocicat","Ojos Azules","Oriental","Persian","Peterbald","Pixiebob","Ragdoll","Russian Blue","Savannah","Scottish Fold","Selkirk Rex","Serengeti","Siamese","Siberian","Singapura","Snowshoe","Sokoke","Somali","Sphynx","Thai","Tonkinese","Toyger","Turkish Angora","Turkish Van"],cetacean:["Amazon River Dolphin","Arnoux's Beaked Whale","Atlantic Humpbacked Dolphin","Atlantic Spotted Dolphin","Atlantic White-Sided Dolphin","Australian Snubfin Dolphin","Australian humpback Dolphin","Blue Whale","Bottlenose Dolphin","Bryde’s whale","Burrunan Dolphin","Chilean Dolphin","Chinese River Dolphin","Chinese White Dolphin","Clymene Dolphin","Commerson’s Dolphin","Costero","Dusky Dolphin","False Killer Whale","Fin Whale","Fraser’s Dolphin","Ganges River Dolphin","Guiana Dolphin","Heaviside’s Dolphin","Hector’s Dolphin","Hourglass Dolphin","Humpback whale","Indo-Pacific Bottlenose Dolphin","Indo-Pacific Hump-backed Dolphin","Irrawaddy Dolphin","Killer Whale (Orca)","La Plata Dolphin","Long-Beaked Common Dolphin","Long-finned Pilot Whale","Longman's Beaked Whale","Melon-headed Whale","Northern Rightwhale Dolphin","Omura’s whale","Pacific White-Sided Dolphin","Pantropical Spotted Dolphin","Peale’s Dolphin","Pygmy Killer Whale","Risso’s Dolphin","Rough-Toothed Dolphin","Sei Whale","Short-Beaked Common Dolphin","Short-finned Pilot Whale","Southern Bottlenose Whale","Southern Rightwhale Dolphin","Sperm Whale","Spinner Dolphin","Striped Dolphin","Tucuxi","White-Beaked Dolphin"],cow:["Aberdeen Angus","Abergele","Abigar","Abondance","Abyssinian Shorthorned Zebu","Aceh","Achham","Adamawa","Adaptaur","Afar","Africangus","Afrikaner","Agerolese","Alambadi","Alatau","Albanian","Albera","Alderney","Alentejana","Aleutian wild cattle","Aliad Dinka","Alistana-Sanabresa","Allmogekor","Alur","American","American Angus","American Beef Friesian","American Brown Swiss","American Milking Devon","American White Park","Amerifax","Amrit Mahal","Amsterdam Island cattle","Anatolian Black","Andalusian Black","Andalusian Blond","Andalusian Grey","Angeln","Angoni","Ankina","Ankole","Ankole-Watusi","Aracena","Arado","Argentine Criollo","Argentine Friesian","Armorican","Arouquesa","Arsi","Asturian Mountain","Asturian Valley","Aubrac","Aulie-Ata","Aure et Saint-Girons","Australian Braford","Australian Brangus","Australian Charbray","Australian Friesian Sahiwal","Australian Lowline","Australian Milking Zebu","Australian Shorthorn","Austrian Simmental","Austrian Yellow","Avileña-Negra Ibérica","Avétonou","Aweil Dinka","Ayrshire","Azaouak","Azebuado","Azerbaijan Zebu","Azores","Bachaur cattle","Baherie cattle","Bakosi cattle","Balancer","Baoule","Bargur cattle","Barrosã","Barzona","Bazadaise","Bedit","Beef Freisian","Beefalo","Beefmaker","Beefmaster","Begayt","Belgian Blue","Belgian Red","Belgian Red Pied","Belgian White-and-Red","Belmont Red","Belted Galloway","Bernese","Berrenda cattle","Betizu","Bianca Modenese","Blaarkop","Black Angus","Black Baldy","Black Hereford","Blanca Cacereña","Blanco Orejinegro BON","Blonde d'Aquitaine","Blue Albion","Blue Grey","Bohuskulla","Bonsmara","Boran","Boškarin","Braford","Brahman","Brahmousin","Brangus","Braunvieh","Brava","Breed","British Friesian","British White","Brown Carpathian","Brown Caucasian","Brown Swiss","Bue Lingo","Burlina","Bushuyev","Butana cattle","Buša cattle","Cachena","Caldelana","Camargue","Campbell Island cattle","Canadian Speckle Park","Canadienne","Canaria","Canchim","Caracu","Carinthian Blondvieh","Carora","Cedit","Charbray","Charolais","Chateaubriand","Chiangus","Chianina","Chillingham cattle","Chinese Black Pied","Cholistani","Coloursided White Back","Commercial","Corriente","Corsican cattle","Costeño con Cuernos","Crioulo Lageano","Cárdena Andaluza","Dajal","Dangi cattle","Danish Black-Pied","Danish Jersey","Danish Red","Dedit","Deep Red cattle","Deoni","Devon","Dexter cattle","Dhanni","Doayo cattle","Doela","Drakensberger","Droughtmaster","Dulong'","Dutch Belted","Dutch Friesian","Dwarf Lulu","Dølafe","East Anatolian Red","Eastern Finncattle","Eastern Red Polled","Eedit","Enderby Island cattle","English Longhorn","Ennstaler Bergscheck","Estonian Holstein","Estonian Native","Estonian Red cattle","Fedit","Finncattle","Finnish Ayrshire","Finnish Holstein-Friesian","Fjäll","Fleckvieh","Florida Cracker cattle","Fogera","French Simmental","Fribourgeoise","Friesian Red and White","Fulani Sudanese","Fēng Cattle","Galician Blond","Galloway cattle","Gangatiri","Gaolao","Garvonesa","Gascon cattle","Gedit","Gelbvieh","Georgian Mountain cattle","German Angus","German Black Pied Dairy","German Black Pied cattle","German Red Pied","Gir","Glan cattle","Gloucester","Gobra","Greek Shorthorn","Greek Steppe","Greyman cattle","Gudali","Guernsey cattle","Guzerá","Hallikar4","Hanwoo","Hariana cattle","Hartón del Valle","Harzer Rotvieh","Hays Converter","Heck cattle","Hedit","Hereford","Herens","Highland cattle","Hinterwald","Holando-Argentino","Holstein Friesian cattle","Horro","Hungarian Grey","Huáng Cattle","Hybridmaster","Iberian cattle","Icelandic","Iedit","Illawarra cattle","Improved Red and White","Indo-Brazilian","Irish Moiled","Israeli Holstein","Israeli Red","Istoben cattle","Istrian cattle","Jamaica Black","Jamaica Hope","Jamaica Red","Japanese Brown","Jarmelista","Javari cattle","Jedit","Jersey cattle","Jutland cattle","Kabin Buri cattle","Kalmyk cattle","Kamphaeng Saen cattle","Kangayam","Kankrej","Karan Swiss","Kasaragod Dwarf cattle","Kathiawadi","Kazakh Whiteheaded","Kedit","Kenana cattle","Kenkatha cattle","Kerry cattle","Kherigarh","Khillari cattle","Kholomogory","Korat Wagyu","Kostroma cattle","Krishna Valley cattle","Kurgan cattle","Kuri","La Reina cattle","Lakenvelder cattle","Lampurger","Latvian Blue","Latvian Brown","Latvian Danish Red","Lebedyn","Ledit","Levantina","Limia cattle","Limousin","Limpurger","Lincoln Red","Lineback","Lithuanian Black-and-White","Lithuanian Light Grey","Lithuanian Red","Lithuanian White-Backed","Lohani cattle","Lourdais","Lucerna cattle","Luing","Madagascar Zebu","Madura","Maine-Anjou","Malnad Gidda","Malvi","Mandalong Special","Mantequera Leonesa","Maramureş Brown","Marchigiana","Maremmana","Marinhoa","Maronesa","Masai","Mashona","Medit","Menorquina","Mertolenga","Meuse-Rhine-Issel","Mewati","Milking Shorthorn","Minhota","Mirandesa","Mirkadim","Mocăniţă","Mollie","Monchina","Mongolian","Montbéliarde","Morucha","Murboden","Murnau-Werdenfels","Murray Grey","Muturu","N'Dama","Nagori","Nedit","Negra Andaluza","Nelore","Nguni","Nimari","Normande","North Bengal Grey","Northern Finncattle","Northern Shorthorn","Norwegian Red","Oedit]","Ongole","Original Simmental","Pajuna","Palmera","Pantaneiro","Parda Alpina","Parthenaise","Pasiega","Pedit","Pembroke","Philippine Native","Pie Rouge des Plaines","Piedmontese cattle","Pineywoods","Pinzgauer","Pirenaica","Podolac","Podolica","Polish Black-and-White","Polish Red","Poll Shorthorn","Polled Hereford","Polled Shorthorn","Ponwar","Preta","Pulikulam","Punganur","Pustertaler Sprinzen","Qedit","Qinchaun","Queensland Miniature Boran","RX3","Ramo Grande","Randall","Raramuri Criollo","Rathi","Raya","Red Angus","Red Brangus","Red Chittagong","Red Fulani","Red Gorbatov","Red Holstein","Red Kandhari","Red Mingrelian","Red Poll","Red Polled Østland","Red Sindhi","Redit","Retinta","Riggit Galloway","Ringamåla","Rohjan","Romagnola","Romanian Bălţata","Romanian Steppe Gray","Romosinuano","Russian Black Pied","Rätisches Grauvieh","Sahiwal","Salers","Salorn","Sanga","Sanhe","Santa Cruz","Santa Gertrudis","Sayaguesa","Schwyz","Sedit","Selembu","Senepol","Serbian Pied","Serbian Steppe","Sheko","Shetland","Shorthorn","Siboney de Cuba","Simbrah","Simford","Simmental","Siri","South Devon","Spanish Fighting Bull","Speckle Park","Square Meater","Sussex","Swedish Friesian","Swedish Polled","Swedish Red Pied","Swedish Red Polled","Swedish Red-and-White","Tabapuã","Tarentaise","Tasmanian Grey","Tauros","Tedit","Telemark","Texas Longhorn","Texon","Thai Black","Thai Fighting Bull","Thai Friesian","Thai Milking Zebu","Tharparkar","Tswana","Tudanca","Tuli","Tulim","Turkish Grey Steppe","Tux-Zillertal","Tyrol Grey","Uedit","Ukrainian Grey","Umblachery","Valdostana Castana","Valdostana Pezzata Nera","Valdostana Pezzata Rossa","Vaynol","Vechur8","Vedit","Vestland Fjord","Vestland Red Polled","Vianesa","Volinian Beef","Vorderwald","Vosgienne","Väneko","Waguli","Wagyu","Wangus","Wedit","Welsh Black","Western Finncattle","White Cáceres","White Fulani","White Lamphun","White Park","Whitebred Shorthorn","Xedit","Xingjiang Brown","Yakutian","Yanbian","Yanhuang","Yedit","Yurino","Zebu","Zedit","Évolène cattle","Żubroń"],crocodilia:["African Slender-snouted Crocodile","Alligator mississippiensis","American Crocodile","Australian Freshwater Crocodile","Black Caiman","Broad-snouted Caiman","Chinese Alligator","Cuban Crocodile","Cuvier’s Dwarf Caiman","Dwarf Crocodile","Gharial","Morelet’s Crocodile","Mugger Crocodile","New Guinea Freshwater Crocodile","Nile Crocodile","Orinoco Crocodile","Philippine Crocodile","Saltwater Crocodile","Schneider’s Smooth-fronted Caiman","Siamese Crocodile","Spectacled Caiman","Tomistoma","West African Crocodile","Yacare Caiman"],dog:["Affenpinscher","Afghan Hound","Aidi","Airedale Terrier","Akbash","Akita","Alano Español","Alapaha Blue Blood Bulldog","Alaskan Husky","Alaskan Klee Kai","Alaskan Malamute","Alopekis","Alpine Dachsbracke","American Bulldog","American Bully","American Cocker Spaniel","American English Coonhound","American Foxhound","American Hairless Terrier","American Pit Bull Terrier","American Staffordshire Terrier","American Water Spaniel","Andalusian Hound","Anglo-Français de Petite Vénerie","Appenzeller Sennenhund","Ariegeois","Armant","Armenian Gampr dog","Artois Hound","Australian Cattle Dog","Australian Kelpie","Australian Shepherd","Australian Stumpy Tail Cattle Dog","Australian Terrier","Austrian Black and Tan Hound","Austrian Pinscher","Azawakh","Bakharwal dog","Banjara Hound","Barbado da Terceira","Barbet","Basenji","Basque Shepherd Dog","Basset Artésien Normand","Basset Bleu de Gascogne","Basset Fauve de Bretagne","Basset Hound","Bavarian Mountain Hound","Beagle","Beagle-Harrier","Bearded Collie","Beauceron","Bedlington Terrier","Belgian Shepherd","Bergamasco Shepherd","Berger Picard","Bernese Mountain Dog","Bhotia","Bichon Frisé","Billy","Black Mouth Cur","Black Norwegian Elkhound","Black Russian Terrier","Black and Tan Coonhound","Bloodhound","Blue Lacy","Blue Picardy Spaniel","Bluetick Coonhound","Boerboel","Bohemian Shepherd","Bolognese","Border Collie","Border Terrier","Borzoi","Bosnian Coarse-haired Hound","Boston Terrier","Bouvier des Ardennes","Bouvier des Flandres","Boxer","Boykin Spaniel","Bracco Italiano","Braque Francais","Braque Saint-Germain","Braque d'Auvergne","Braque de l'Ariège","Braque du Bourbonnais","Briard","Briquet Griffon Vendéen","Brittany","Broholmer","Bruno Jura Hound","Brussels Griffon","Bucovina Shepherd Dog","Bull Arab","Bull Terrier","Bulldog","Bullmastiff","Bully Kutta","Burgos Pointer","Cairn Terrier","Campeiro Bulldog","Can de Chira","Canaan Dog","Canadian Eskimo Dog","Cane Corso","Cane Paratore","Cane di Oropa","Cantabrian Water Dog","Cardigan Welsh Corgi","Carea Castellano Manchego","Carolina Dog","Carpathian Shepherd Dog","Catahoula Leopard Dog","Catalan Sheepdog","Caucasian Shepherd Dog","Cavalier King Charles Spaniel","Central Asian Shepherd Dog","Cesky Fousek","Cesky Terrier","Chesapeake Bay Retriever","Chien Français Blanc et Noir","Chien Français Blanc et Orange","Chien Français Tricolore","Chihuahua","Chilean Terrier","Chinese Chongqing Dog","Chinese Crested Dog","Chinook","Chippiparai","Chongqing dog","Chortai","Chow Chow","Cimarrón Uruguayo","Cirneco dell'Etna","Clumber Spaniel","Colombian fino hound","Coton de Tulear","Cretan Hound","Croatian Sheepdog","Curly-Coated Retriever","Cursinu","Czechoslovakian Wolfdog","Cão Fila de São Miguel","Cão da Serra de Aires","Cão de Castro Laboreiro","Cão de Gado Transmontano","Dachshund","Dalmatian","Dandie Dinmont Terrier","Danish-Swedish Farmdog","Denmark Feist","Dingo","Doberman Pinscher","Dogo Argentino","Dogo Guatemalteco","Dogo Sardesco","Dogue Brasileiro","Dogue de Bordeaux","Drentse Patrijshond","Drever","Dunker","Dutch Shepherd","Dutch Smoushond","East European Shepherd","East Siberian Laika","English Cocker Spaniel","English Foxhound","English Mastiff","English Setter","English Shepherd","English Springer Spaniel","English Toy Terrier","Entlebucher Mountain Dog","Estonian Hound","Estrela Mountain Dog","Eurasier","Field Spaniel","Fila Brasileiro","Finnish Hound","Finnish Lapphund","Finnish Spitz","Flat-Coated Retriever","French Bulldog","French Spaniel","Galgo Español","Galician Shepherd Dog","Garafian Shepherd","Gascon Saintongeois","Georgian Shepherd","German Hound","German Longhaired Pointer","German Pinscher","German Roughhaired Pointer","German Shepherd Dog","German Shorthaired Pointer","German Spaniel","German Spitz","German Wirehaired Pointer","Giant Schnauzer","Glen of Imaal Terrier","Golden Retriever","Gordon Setter","Gończy Polski","Grand Anglo-Français Blanc et Noir","Grand Anglo-Français Blanc et Orange","Grand Anglo-Français Tricolore","Grand Basset Griffon Vendéen","Grand Bleu de Gascogne","Grand Griffon Vendéen","Great Dane","Greater Swiss Mountain Dog","Greek Harehound","Greek Shepherd","Greenland Dog","Greyhound","Griffon Bleu de Gascogne","Griffon Fauve de Bretagne","Griffon Nivernais","Gull Dong","Gull Terrier","Hamiltonstövare","Hanover Hound","Harrier","Havanese","Hierran Wolfdog","Hokkaido","Hovawart","Huntaway","Hygen Hound","Hällefors Elkhound","Ibizan Hound","Icelandic Sheepdog","Indian Spitz","Indian pariah dog","Irish Red and White Setter","Irish Setter","Irish Terrier","Irish Water Spaniel","Irish Wolfhound","Istrian Coarse-haired Hound","Istrian Shorthaired Hound","Italian Greyhound","Jack Russell Terrier","Jagdterrier","Japanese Chin","Japanese Spitz","Japanese Terrier","Jindo","Jonangi","Kai Ken","Kaikadi","Kangal Shepherd Dog","Kanni","Karakachan dog","Karelian Bear Dog","Kars","Karst Shepherd","Keeshond","Kerry Beagle","Kerry Blue Terrier","King Charles Spaniel","King Shepherd","Kintamani","Kishu","Kokoni","Kombai","Komondor","Kooikerhondje","Koolie","Koyun dog","Kromfohrländer","Kuchi","Kuvasz","Labrador Retriever","Lagotto Romagnolo","Lakeland Terrier","Lancashire Heeler","Landseer","Lapponian Herder","Large Münsterländer","Leonberger","Levriero Sardo","Lhasa Apso","Lithuanian Hound","Lupo Italiano","Löwchen","Mackenzie River Husky","Magyar agár","Mahratta Greyhound","Maltese","Manchester Terrier","Maremmano-Abruzzese Sheepdog","McNab dog","Miniature American Shepherd","Miniature Bull Terrier","Miniature Fox Terrier","Miniature Pinscher","Miniature Schnauzer","Molossus of Epirus","Montenegrin Mountain Hound","Mountain Cur","Mountain Feist","Mucuchies","Mudhol Hound","Mudi","Neapolitan Mastiff","New Guinea Singing Dog","New Zealand Heading Dog","Newfoundland","Norfolk Terrier","Norrbottenspets","Northern Inuit Dog","Norwegian Buhund","Norwegian Elkhound","Norwegian Lundehund","Norwich Terrier","Nova Scotia Duck Tolling Retriever","Old Croatian Sighthound","Old Danish Pointer","Old English Sheepdog","Old English Terrier","Olde English Bulldogge","Otterhound","Pachon Navarro","Paisley Terrier","Pampas Deerhound","Papillon","Parson Russell Terrier","Pastore della Lessinia e del Lagorai","Patagonian Sheepdog","Patterdale Terrier","Pekingese","Pembroke Welsh Corgi","Perro Majorero","Perro de Pastor Mallorquin","Perro de Presa Canario","Perro de Presa Mallorquin","Peruvian Inca Orchid","Petit Basset Griffon Vendéen","Petit Bleu de Gascogne","Phalène","Pharaoh Hound","Phu Quoc Ridgeback","Picardy Spaniel","Plott Hound","Plummer Terrier","Podenco Canario","Podenco Valenciano","Pointer","Poitevin","Polish Greyhound","Polish Hound","Polish Lowland Sheepdog","Polish Tatra Sheepdog","Pomeranian","Pont-Audemer Spaniel","Poodle","Porcelaine","Portuguese Podengo","Portuguese Pointer","Portuguese Water Dog","Posavac Hound","Pražský Krysařík","Pshdar Dog","Pudelpointer","Pug","Puli","Pumi","Pungsan Dog","Pyrenean Mastiff","Pyrenean Mountain Dog","Pyrenean Sheepdog","Rafeiro do Alentejo","Rajapalayam","Rampur Greyhound","Rat Terrier","Ratonero Bodeguero Andaluz","Ratonero Mallorquin","Ratonero Murciano de Huerta","Ratonero Valenciano","Redbone Coonhound","Rhodesian Ridgeback","Romanian Mioritic Shepherd Dog","Romanian Raven Shepherd Dog","Rottweiler","Rough Collie","Russian Spaniel","Russian Toy","Russo-European Laika","Saarloos Wolfdog","Sabueso Español","Saint Bernard","Saint Hubert Jura Hound","Saint-Usuge Spaniel","Saluki","Samoyed","Sapsali","Sarabi dog","Sardinian Shepherd Dog","Schapendoes","Schillerstövare","Schipperke","Schweizer Laufhund","Schweizerischer Niederlaufhund","Scottish Deerhound","Scottish Terrier","Sealyham Terrier","Segugio Italiano","Segugio Maremmano","Segugio dell'Appennino","Seppala Siberian Sleddog","Serbian Hound","Serbian Tricolour Hound","Serrano Bulldog","Shar Pei","Shetland Sheepdog","Shiba Inu","Shih Tzu","Shikoku","Shiloh Shepherd","Siberian Husky","Silken Windhound","Silky Terrier","Sinhala Hound","Skye Terrier","Sloughi","Slovakian Wirehaired Pointer","Slovenský Cuvac","Slovenský Kopov","Smalandstövare","Small Greek domestic dog","Small Münsterländer","Smooth Collie","Smooth Fox Terrier","Soft-Coated Wheaten Terrier","South Russian Ovcharka","Spanish Mastiff","Spanish Water Dog","Spinone Italiano","Sporting Lucas Terrier","Stabyhoun","Staffordshire Bull Terrier","Standard Schnauzer","Stephens Stock","Styrian Coarse-haired Hound","Sussex Spaniel","Swedish Elkhound","Swedish Lapphund","Swedish Vallhund","Swedish White Elkhound","Taigan","Taiwan Dog","Tamaskan Dog","Teddy Roosevelt Terrier","Telomian","Tenterfield Terrier","Terrier Brasileiro","Thai Bangkaew Dog","Thai Ridgeback","Tibetan Mastiff","Tibetan Spaniel","Tibetan Terrier","Tornjak","Tosa","Toy Fox Terrier","Toy Manchester Terrier","Transylvanian Hound","Treeing Cur","Treeing Feist","Treeing Tennessee Brindle","Treeing Walker Coonhound","Trigg Hound","Tyrolean Hound","Vikhan","Villano de Las Encartaciones","Villanuco de Las Encartaciones","Vizsla","Volpino Italiano","Weimaraner","Welsh Sheepdog","Welsh Springer Spaniel","Welsh Terrier","West Highland White Terrier","West Siberian Laika","Westphalian Dachsbracke","Wetterhoun","Whippet","White Shepherd","White Swiss Shepherd Dog","Wire Fox Terrier","Wirehaired Pointing Griffon","Wirehaired Vizsla","Xiasi Dog","Xoloitzcuintli","Yakutian Laika","Yorkshire Terrier","Šarplaninac"],fish:["Alaska pollock","Albacore","Amur catfish","Araucanian herring","Argentine hake","Asari","Asian swamp eel","Atlantic cod","Atlantic herring","Atlantic horse mackerel","Atlantic mackerel","Atlantic menhaden","Atlantic salmon","Bigeye scad","Bigeye tuna","Bighead carp","Black carp","Blood cockle","Blue swimming crab","Blue whiting","Bombay-duck","Bonga shad","California pilchard","Cape horse mackerel","Capelin","Catla","Channel catfish","Chilean jack mackerel","Chinese perch","Chinese softshell turtle","Chub mackerel","Chum salmon","Common carp","Crucian carp","Daggertooth pike conger","European anchovy","European pilchard","European sprat","Filipino Venus","Gazami crab","Goldstripe sardinella","Grass carp","Gulf menhaden","Haddock","Hilsa shad","Indian mackerel","Indian oil sardine","Iridescent shark","Japanese anchovy","Japanese cockle","Japanese common catfish","Japanese flying squid","Japanese jack mackerel","Japanese littleneck","Japanese pilchard","Jumbo flying squid","Kawakawa","Korean bullhead","Largehead hairtail","Longtail tuna","Madeiran sardinella","Mandarin fish","Milkfish","Mrigal carp","Narrow-barred Spanish mackerel","Nile perch","Nile tilapia","North Pacific hake","Northern snakehead","Pacific anchoveta","Pacific cod","Pacific herring","Pacific sand lance","Pacific sandlance","Pacific saury","Pacific thread herring","Peruvian anchoveta","Pink salmon","Pollock","Pond loach","Rainbow trout","Rohu","Round sardinella","Short mackerel","Silver carp","Silver cyprinid","Skipjack tuna","Southern African anchovy","Southern rough shrimp","Whiteleg shrimp","Wuchang bream","Yellow croaker","Yellowfin tuna","Yellowhead catfish","Yellowstripe scad"],horse:["Abaco Barb","Abtenauer","Abyssinian","Aegidienberger","Akhal-Teke","Albanian Horse","Altai Horse","Altèr Real","American Albino","American Cream Draft","American Indian Horse","American Paint Horse","American Quarter Horse","American Saddlebred","American Warmblood","Andalusian Horse","Andravida Horse","Anglo-Arabian","Anglo-Arabo-Sardo","Anglo-Kabarda","Appaloosa","AraAppaloosa","Arabian Horse","Ardennes Horse","Arenberg-Nordkirchen","Argentine Criollo","Asian wild Horse","Assateague Horse","Asturcón","Augeron","Australian Brumby","Australian Draught Horse","Australian Stock Horse","Austrian Warmblood","Auvergne Horse","Auxois","Azerbaijan Horse","Azteca Horse","Baise Horse","Bale","Balearic Horse","Balikun Horse","Baluchi Horse","Banker Horse","Barb Horse","Bardigiano","Bashkir Curly","Basque Mountain Horse","Bavarian Warmblood","Belgian Half-blood","Belgian Horse","Belgian Warmblood ","Bhutia Horse","Black Forest Horse","Blazer Horse","Boerperd","Borana","Boulonnais Horse","Brabant","Brandenburger","Brazilian Sport Horse","Breton Horse","Brumby","Budyonny Horse","Burguete Horse","Burmese Horse","Byelorussian Harness Horse","Calabrese Horse","Camargue Horse","Camarillo White Horse","Campeiro","Campolina","Canadian Horse","Canadian Pacer","Carolina Marsh Tacky","Carthusian Horse","Caspian Horse","Castilian Horse","Castillonnais","Catria Horse","Cavallo Romano della Maremma Laziale","Cerbat Mustang","Chickasaw Horse","Chilean Corralero","Choctaw Horse","Cleveland Bay","Clydesdale Horse","Cob","Coldblood Trotter","Colonial Spanish Horse","Colorado Ranger","Comtois Horse","Corsican Horse","Costa Rican Saddle Horse","Cretan Horse","Criollo Horse","Croatian Coldblood","Cuban Criollo","Cumberland Island Horse","Curly Horse","Czech Warmblood","Daliboz","Danish Warmblood","Danube Delta Horse","Dole Gudbrandsdal","Don","Dongola Horse","Draft Trotter","Dutch Harness Horse","Dutch Heavy Draft","Dutch Warmblood","Dzungarian Horse","East Bulgarian","East Friesian Horse","Estonian Draft","Estonian Horse","Falabella","Faroese","Finnhorse","Fjord Horse","Fleuve","Florida Cracker Horse","Foutanké","Frederiksborg Horse","Freiberger","French Trotter","Friesian Cross","Friesian Horse","Friesian Sporthorse","Furioso-North Star","Galiceño","Galician Pony","Gelderland Horse","Georgian Grande Horse","German Warmblood","Giara Horse","Gidran","Groningen Horse","Gypsy Horse","Hackney Horse","Haflinger","Hanoverian Horse","Heck Horse","Heihe Horse","Henson Horse","Hequ Horse","Hirzai","Hispano-Bretón","Holsteiner Horse","Horro","Hungarian Warmblood","Icelandic Horse","Iomud","Irish Draught","Irish Sport Horse sometimes called Irish Hunter","Italian Heavy Draft","Italian Trotter","Jaca Navarra","Jeju Horse","Jutland Horse","Kabarda Horse","Kafa","Kaimanawa Horses","Kalmyk Horse","Karabair","Karabakh Horse","Karachai Horse","Karossier","Kathiawari","Kazakh Horse","Kentucky Mountain Saddle Horse","Kiger Mustang","Kinsky Horse","Kisber Felver","Kiso Horse","Kladruber","Knabstrupper","Konik","Kundudo","Kustanair","Kyrgyz Horse","Latvian Horse","Lipizzan","Lithuanian Heavy Draught","Lokai","Losino Horse","Lusitano","Lyngshest","M'Bayar","M'Par","Mallorquín","Malopolski","Mangalarga","Mangalarga Marchador","Maremmano","Marismeño Horse","Marsh Tacky","Marwari Horse","Mecklenburger","Menorquín","Messara Horse","Metis Trotter","Mezőhegyesi Sport Horse","Međimurje Horse","Miniature Horse","Misaki Horse","Missouri Fox Trotter","Monchina","Mongolian Horse","Mongolian Wild Horse","Monterufolino","Morab","Morgan Horse","Mountain Pleasure Horse","Moyle Horse","Murakoz Horse","Murgese","Mustang Horse","Mérens Horse","Namib Desert Horse","Nangchen Horse","National Show Horse","Nez Perce Horse","Nivernais Horse","Nokota Horse","Noma","Nonius Horse","Nooitgedachter","Nordlandshest","Noriker Horse","Norman Cob","North American Single-Footer Horse","North Swedish Horse","Norwegian Coldblood Trotter","Norwegian Fjord","Novokirghiz","Oberlander Horse","Ogaden","Oldenburg Horse","Orlov trotter","Ostfriesen","Paint","Pampa Horse","Paso Fino","Pentro Horse","Percheron","Persano Horse","Peruvian Paso","Pintabian","Pleven Horse","Poitevin Horse","Posavac Horse","Pottok","Pryor Mountain Mustang","Przewalski's Horse","Pura Raza Española","Purosangue Orientale","Qatgani","Quarab","Quarter Horse","Racking Horse","Retuerta Horse","Rhenish German Coldblood","Rhinelander Horse","Riwoche Horse","Rocky Mountain Horse","Romanian Sporthorse","Rottaler","Russian Don","Russian Heavy Draft","Russian Trotter","Saddlebred","Salerno Horse","Samolaco Horse","San Fratello Horse","Sarcidano Horse","Sardinian Anglo-Arab","Schleswig Coldblood","Schwarzwälder Kaltblut","Selale","Sella Italiano","Selle Français","Shagya Arabian","Shan Horse","Shire Horse","Siciliano Indigeno","Silesian Horse","Sokolsky Horse","Sorraia","South German Coldblood","Soviet Heavy Draft","Spanish Anglo-Arab","Spanish Barb","Spanish Jennet Horse","Spanish Mustang","Spanish Tarpan","Spanish-Norman Horse","Spiti Horse","Spotted Saddle Horse","Standardbred Horse","Suffolk Punch","Swedish Ardennes","Swedish Warmblood","Swedish coldblood trotter","Swiss Warmblood","Taishū Horse","Takhi","Tawleed","Tchernomor","Tennessee Walking Horse","Tersk Horse","Thoroughbred","Tiger Horse","Tinker Horse","Tolfetano","Tori Horse","Trait Du Nord","Trakehner","Tsushima","Tuigpaard","Ukrainian Riding Horse","Unmol Horse","Uzunyayla","Ventasso Horse","Virginia Highlander","Vlaamperd","Vladimir Heavy Draft","Vyatka","Waler","Waler Horse","Walkaloosa","Warlander","Warmblood","Welsh Cob","Westphalian Horse","Wielkopolski","Württemberger","Xilingol Horse","Yakutian Horse","Yili Horse","Yonaguni Horse","Zaniskari","Zhemaichu","Zweibrücker","Žemaitukas"],insect:["Acacia-ants","Acorn-plum gall","Aerial yellowjacket","Africanized honey bee","Allegheny mound ant","Almond stone wasp","Ant","Arboreal ant","Argentine ant","Asian paper wasp","Baldfaced hornet","Bee","Bigheaded ant","Black and yellow mud dauber","Black carpenter ant","Black imported fire ant","Blue horntail woodwasp","Blue orchard bee","Braconid wasp","Bumble bee","Carpenter ant","Carpenter wasp","Chalcid wasp","Cicada killer","Citrus blackfly parasitoid","Common paper wasp","Crazy ant","Cuckoo wasp","Cynipid gall wasp","Eastern Carpenter bee","Eastern yellowjacket","Elm sawfly","Encyrtid wasp","Erythrina gall wasp","Eulophid wasp","European hornet","European imported fire ant","False honey ant","Fire ant","Forest bachac","Forest yellowjacket","German yellowjacket","Ghost ant","Giant ichneumon wasp","Giant resin bee","Giant wood wasp","Golden northern bumble bee","Golden paper wasp","Gouty oak gall","Grass Carrying Wasp","Great black wasp","Great golden digger wasp","Hackberry nipple gall parasitoid","Honey bee","Horned oak gall","Horse guard wasp","Hunting wasp","Ichneumonid wasp","Keyhole wasp","Knopper gall","Large garden bumble bee","Large oak-apple gall","Leafcutting bee","Little fire ant","Little yellow ant","Long-horned bees","Long-legged ant","Macao paper wasp","Mallow bee","Marble gall","Mossyrose gall wasp","Mud-daubers","Multiflora rose seed chalcid","Oak apple gall wasp","Oak rough bulletgall wasp","Oak saucer gall","Oak shoot sawfly","Odorous house ant","Orange-tailed bumble bee","Orangetailed potter wasp","Oriental chestnut gall wasp","Paper wasp","Pavement ant","Pigeon tremex","Pip gall wasp","Prairie yellowjacket","Pteromalid wasp","Pyramid ant","Raspberry Horntail","Red ant","Red carpenter ant","Red harvester ant","Red imported fire ant","Red wasp","Red wood ant","Red-tailed wasp","Reddish carpenter ant","Rough harvester ant","Sawfly parasitic wasp","Scale parasitoid","Silky ant","Sirex woodwasp","Siricid woodwasp","Smaller yellow ant","Southeastern blueberry bee","Southern fire ant","Southern yellowjacket","Sphecid wasp","Stony gall","Sweat bee","Texas leafcutting ant","Tiphiid wasp","Torymid wasp","Tramp ant","Valentine ant","Velvet ant","Vespid wasp","Weevil parasitoid","Western harvester ant","Western paper wasp","Western thatching ant","Western yellowjacket","White-horned horntail","Willow shoot sawfly","Woodwasp","Wool sower gall maker","Yellow Crazy Ant","Yellow and black potter wasp","Yellow-horned horntail"],lion:["Asiatic Lion","Barbary Lion","Cape lion","Masai Lion","Northeast Congo Lion","Transvaal lion","West African Lion"],rabbit:["American","American Chinchilla","American Fuzzy Lop","American Sable","Argente Brun","Belgian Hare","Beveren","Blanc de Hotot","Britannia Petite","Californian","Champagne D’Argent","Checkered Giant","Cinnamon","Crème D’Argent","Dutch","Dwarf Hotot","English Angora","English Lop","English Spot","Flemish Giant","Florida White","French Angora","French Lop","Giant Angora","Giant Chinchilla","Harlequin","Havana","Himalayan","Holland Lop","Jersey Wooly","Lilac","Lionhead","Mini Lop","Mini Rex","Mini Satin","Netherland Dwarf","New Zealand","Palomino","Polish","Rex","Rhinelander","Satin","Satin Angora","Silver","Silver Fox","Silver Marten","Standard Chinchilla","Tan","Thrianta"],rodent:["Abrocoma","Abrocoma schistacea","Aconaemys","Aconaemys porteri","African brush-tailed porcupine","Andean mountain cavy","Argentine tuco-tuco","Ashy chinchilla rat","Asiatic brush-tailed porcupine","Atherurus","Azara's agouti","Azara's tuco-tuco","Bahia porcupine","Bathyergus","Bathyergus janetta","Bathyergus suillus","Bennett's chinchilla rat","Bicolored-spined porcupine","Black agouti","Black dwarf porcupine","Black-rumped agouti","Black-tailed hairy dwarf porcupine","Bolivian chinchilla rat","Bolivian tuco-tuco","Bonetto's tuco-tuco","Brandt's yellow-toothed cavy","Brazilian guinea pig","Brazilian porcupine","Brazilian tuco-tuco","Bridge's degu","Brown hairy dwarf porcupine","Budin's chinchilla rat, A. budini","Cape porcupine","Catamarca tuco-tuco","Cavia","Central American agouti","Chacoan tuco-tuco","Chilean rock rat","Chinchilla","Coendou","Coiban agouti","Colburn's tuco-tuco","Collared tuco-tuco","Common degu","Common yellow-toothed cavy","Conover's tuco-tuco","Coruro","Crested agouti","Crested porcupine","Cryptomys","Cryptomys bocagei","Cryptomys damarensis","Cryptomys foxi","Cryptomys hottentotus","Cryptomys mechowi","Cryptomys ochraceocinereus","Cryptomys zechi","Ctenomys","Cuniculus","Cuscomys","Cuscomys ashanika","Dactylomys","Dactylomys boliviensis","Dactylomys dactylinus","Dactylomys peruanus","Dasyprocta","Domestic guinea pig","Emily's tuco-tuco","Erethizon","Famatina chinchilla rat","Frosted hairy dwarf porcupine","Fukomys","Fukomys amatus","Fukomys anselli","Fukomys bocagei","Fukomys damarensis","Fukomys darlingi","Fukomys foxi","Fukomys ilariae","Fukomys kafuensis","Fukomys mechowii","Fukomys micklemi","Fukomys occlusus","Fukomys ochraceocinereus","Fukomys whytei","Fukomys zechi","Furtive tuco-tuco","Galea","Georychus","Georychus capensis","Golden viscacha-rat","Goya tuco-tuco","Greater guinea pig","Green acouchi","Haig's tuco-tuco","Heliophobius","Heliophobius argenteocinereus","Heterocephalus","Heterocephalus glaber","Highland tuco-tuco","Hystrix","Indian porcupine","Isla Mocha degu","Kalinowski agouti","Kannabateomys","Kannabateomys amblyonyx","Lagidium","Lagostomus","Lewis' tuco-tuco","Long-tailed chinchilla","Long-tailed porcupine","Los Chalchaleros' viscacha-rat","Lowland paca","Magellanic tuco-tuco","Malayan porcupine","Maule tuco-tuco","Mendoza tuco-tuco","Mexican agouti","Mexican hairy dwarf porcupine","Microcavia","Montane guinea pig","Moon-toothed degu","Mottled tuco-tuco","Mountain degu","Mountain paca","Mountain viscacha-rat","Myoprocta","Natterer's tuco-tuco","North American porcupine","Northern viscacha","Octodon","Octodontomys","Octomys","Olallamys","Olallamys albicauda","Olallamys edax","Orinoco agouti","Paraguaian hairy dwarf porcupine","Pearson's tuco-tuco","Peruvian tuco-tuco","Philippine porcupine","Pipanacoctomys","Plains viscacha","Plains viscacha-rat","Porteous' tuco-tuco","Punta de Vacas chinchilla rat","Red acouchi","Red-rumped agouti","Reddish tuco-tuco","Rio Negro tuco-tuco","Robust tuco-tuco","Roosmalen's dwarf porcupine","Rothschild's porcupine","Ruatan Island agouti","Sage's rock rat","Salinoctomys","Salta tuco-tuco","San Luis tuco-tuco","Santa Catarina's guinea pig","Shiny guinea pig","Shipton's mountain cavy","Short-tailed chinchilla","Silky tuco-tuco","Social tuco-tuco","Southern mountain cavy","Southern tuco-tuco","Southern viscacha","Spalacopus","Spix's yellow-toothed cavy","Steinbach's tuco-tuco","Streaked dwarf porcupine","Strong tuco-tuco","Stump-tailed porcupine","Sumatran porcupine","Sunda porcupine","Talas tuco-tuco","Tawny tuco-tuco","Thick-spined porcupine","Tiny tuco-tuco","Trichys","Tucuman tuco-tuco","Tympanoctomys","Uspallata chinchilla rat","White-toothed tuco-tuco","Wolffsohn's viscacha"],snake:["Abaco Island boa","Aesculapian snake","African beaked snake","African puff adder","African rock python","African twig snake","African wolf snake","Amazon tree boa","Amazonian palm viper","American Vine Snake","American copperhead","Amethystine python","Anaconda","Andaman cat snake","Andaman cobra","Angolan python","Annulated sea snake","Arabian cobra","Arafura file snake","Arizona black rattlesnake","Arizona coral snake","Aruba rattlesnake","Asian Vine Snake, Whip Snake","Asian cobra","Asian keelback","Asian pipe snake","Asp","Asp viper","Assam keelback","Australian copperhead","Australian scrub python","Baird's rat snake","Baja California lyresnake","Ball Python","Ball python","Bamboo pitviper","Bamboo viper","Banded Flying Snake","Banded cat-eyed snake","Banded krait","Banded pitviper","Banded water cobra","Barbour's pit viper","Barred wolf snake","Beaked sea snake","Beauty rat snake","Beddome's cat snake","Beddome's coral snake","Bimini racer","Bird snake","Bismarck ringed python","Black headed python","Black krait","Black mamba","Black rat snake","Black snake","Black tree cobra","Black-banded trinket snake","Black-headed snake","Black-necked cobra","Black-necked spitting cobra","Black-speckled palm-pitviper","Black-striped keelback","Black-tailed horned pit viper","Blanding's tree snake","Blind snake","Blonde hognose snake","Blood python","Blue krait","Blunt-headed tree snake","Bluntnose viper","Boa","Boa constrictor","Bocourt's water snake","Boelen python","Boiga","Bolivian anaconda","Boomslang","Bornean pitviper","Borneo short-tailed python","Brahminy blind snake","Brazilian coral snake","Brazilian mud Viper","Brazilian smooth snake","Bredl's python","Brongersma's pitviper","Brown snake","Brown spotted pitviper[4]","Brown tree snake","Brown water python","Brown white-lipped python","Buff striped keelback","Bull snake","Burmese keelback","Burmese krait","Burmese python","Burrowing cobra","Burrowing viper","Bush viper","Bushmaster","Buttermilk racer","Calabar python","California kingsnake","Canebrake","Cantil","Cantor's pitviper","Cape cobra","Cape coral snake","Cape gopher snake","Carpet viper","Cascabel","Caspian cobra","Cat snake","Cat-eyed night snake","Cat-eyed snake","Central American lyre snake","Central ranges taipan","Centralian carpet python","Ceylon krait","Chappell Island tiger snake","Checkered garter snake","Checkered keelback","Chicken snake","Chihuahuan ridge-nosed rattlesnake","Children's python","Chinese tree viper","Coachwhip snake","Coastal carpet python","Coastal taipan","Cobra","Collett's snake","Colorado desert sidewinder","Common adder","Common cobra","Common garter snake","Common ground snake","Common keelback","Common lancehead","Common tiger snake","Common worm snake","Congo snake","Congo water cobra","Copperhead","Coral snake","Corn snake","Coronado Island rattlesnake","Cottonmouth","Crossed viper","Crowned snake","Cuban boa","Cuban wood snake","Cyclades blunt-nosed viper","Dauan Island water python","De Schauensee's anaconda","Death Adder","Desert death adder","Desert kingsnake","Desert woma python","Diamond python","Dog-toothed cat snake","Down's tiger snake","Dubois's sea snake","Dumeril's boa","Durango rock rattlesnake","Dusky pigmy rattlesnake","Dusty hognose snake","Dwarf beaked snake","Dwarf boa","Dwarf pipe snake","Dwarf sand adder","Eastern brown snake","Eastern coral snake","Eastern diamondback rattlesnake","Eastern green mamba","Eastern hognose snake","Eastern lyre snake","Eastern mud snake","Eastern racer","Eastern tiger snake","Eastern water cobra","Eastern yellowbelly sad racer","Egg-eater","Egyptian asp","Egyptian cobra","Elegant pitviper","Emerald tree boa","Equatorial spitting cobra","European asp","European smooth snake","Eyelash palm-pitviper","Eyelash pit viper","Eyelash viper","False cobra","False horned viper","False water cobra","Fan-Si-Pan horned pitviper","Fea's viper","Fer-de-lance","Fierce snake","Fifty pacer","Fishing snake","Flat-nosed pitviper","Flinders python","Flying snake","Forest cobra","Forest flame snake","Forsten's cat snake","Fox snake, three species of Pantherophis","Gaboon viper","Garter snake","Giant Malagasy hognose snake","Godman's pit viper","Gold tree cobra","Gold-ringed cat snake","Golden tree snake","Grand Canyon rattlesnake","Grass snake","Gray cat snake","Great Basin rattlesnake","Great Lakes bush viper","Great Plains rat snake","Green anaconda","Green cat-eyed snake","Green mamba","Green palm viper","Green rat snake","Green snake","Green tree pit viper","Green tree python","Grey Lora","Grey-banded kingsnake","Ground snake","Guatemalan palm viper","Guatemalan tree viper","Habu","Habu pit viper","Hagen's pitviper","Hairy bush viper","Halmahera python","Hardwicke's sea snake","Harlequin coral snake","High Woods coral snake","Hill keelback","Himalayan keelback","Hogg Island boa","Hognose snake","Hognosed viper","Honduran palm viper","Hook Nosed Sea Snake","Hopi rattlesnake","Horned adder","Horned desert viper","Horned viper","Horseshoe pitviper","Hundred pacer","Hutton's tree viper","Ikaheka snake","Indian cobra","Indian flying snake","Indian krait","Indian python","Indian tree viper","Indigo snake","Indochinese spitting cobra","Indonesian water python","Inland carpet python","Inland taipan","Jamaican Tree Snake","Jamaican boa","Jan's hognose snake","Japanese forest rat snake","Japanese rat snake","Japanese striped snake","Javan spitting cobra","Jerdon's pitviper","Jumping viper","Jungle carpet python","Kanburian pit viper","Kaulback's lance-headed pitviper","Kayaudi dwarf reticulated python","Kaznakov's viper","Keelback","Kham Plateau pitviper","Khasi Hills keelback","King Island tiger snake","King brown","King cobra","King rat snake","King snake","Krait","Krefft's tiger snake","Lance-headed rattlesnake","Lancehead","Large shield snake","Large-eyed pitviper","Large-scaled tree viper","Leaf viper","Leaf-nosed viper","Lesser black krait","Levant viper","Long-nosed adder","Long-nosed tree snake","Long-nosed viper","Long-nosed whip snake","Long-tailed rattlesnake","Longnosed worm snake","Lora","Lyre snake","Machete savane","Macklot's python","Madagascar ground boa","Madagascar tree boa","Malabar rock pitviper","Malayan krait","Malayan long-glanded coral snake","Malayan pit viper","Malcolm's tree viper","Mamba","Mamushi","Manchurian Black Water Snake","Mandalay cobra","Mandarin rat snake","Mangrove pit viper","Mangrove snake","Mangshan pitviper","Many-banded krait","Many-banded tree snake","Many-horned adder","Many-spotted cat snake","Massasauga rattlesnake","McMahon's viper","Mexican black kingsnake","Mexican green rattlesnake","Mexican hognose snake","Mexican palm-pitviper","Mexican parrot snake","Mexican racer","Mexican vine snake","Mexican west coast rattlesnake","Midget faded rattlesnake","Milk snake","Moccasin snake","Modest keelback","Mojave desert sidewinder","Mojave rattlesnake","Mole viper","Mollucan python","Moluccan flying snake","Montpellier snake","Motuo bamboo pitviper","Mountain adder","Mozambique spitting cobra","Mud adder","Mud snake","Mussurana","Namaqua dwarf adder","Namib dwarf sand adder","Narrowhead Garter Snake","New Guinea carpet python","Nichell snake","Nicobar Island keelback","Nicobar bamboo pitviper","Night snake","Nightingale adder","Nilgiri keelback","Nitsche's bush viper","Nitsche's tree viper","North Philippine cobra","North eastern king snake","Northeastern hill krait","Northern black-tailed rattlesnake","Northern tree snake","Northern water snake","Northern white-lipped python","Northwestern carpet python","Nose-horned viper","Nubian spitting cobra","Oaxacan small-headed rattlesnake","Oenpelli python","Olive python","Olive sea snake","Orange-collared keelback","Ornate flying snake","Palestine viper","Pallas' viper","Palm viper","Papuan python","Paradise flying snake","Parrot snake","Patchnose snake","Paupan taipan","Pelagic sea snake","Peninsula tiger snake","Peringuey's adder","Perrotet's shieldtail snake","Persian rat snake","Philippine cobra","Philippine pitviper","Pine snake","Pipe snake","Pit viper","Pointed-scaled pit viper[5]","Pope's tree viper","Portuguese viper","Prairie kingsnake","Puerto Rican boa","Puff adder","Pygmy python","Python","Queen snake","Racer","Raddysnake","Rainbow boa","Rat snake","Rattler","Rattlesnake","Red blood python","Red diamond rattlesnake","Red spitting cobra","Red-backed rat snake","Red-bellied black snake","Red-headed krait","Red-necked keelback","Red-tailed bamboo pitviper","Red-tailed boa","Red-tailed pipe snake","Reticulated python","Rhinoceros viper","Rhombic night adder","Ribbon snake","Rinkhals","Rinkhals cobra","River jack","Rosy boa","Rough green snake","Rough-scaled bush viper","Rough-scaled python","Rough-scaled tree viper","Royal python","Rubber boa","Rufous beaked snake","Rungwe tree viper","San Francisco garter snake","Sand adder","Sand boa","Savu python","Saw-scaled viper","Scarlet kingsnake","Schlegel's viper","Schultze's pitviper","Sea snake","Sedge viper","Selayer reticulated python","Sharp-nosed viper","Shield-nosed cobra","Shield-tailed snake","Siamese palm viper","Side-striped palm-pitviper","Sidewinder","Sikkim keelback","Sinai desert cobra","Sind krait","Small-eyed snake","Smooth green snake","Smooth snake","Snorkel viper","Snouted cobra","Sonoran sidewinder","South American hognose snake","South eastern corn snake","Southern Indonesian spitting cobra","Southern Pacific rattlesnake","Southern Philippine cobra","Southern black racer","Southern white-lipped python","Southwestern black spitting cobra","Southwestern blackhead snake","Southwestern carpet python","Southwestern speckled rattlesnake","Speckle-bellied keelback","Speckled kingsnake","Spectacled cobra","Spiny bush viper","Spitting cobra","Spotted python","Sri Lankan pit viper","Stejneger's bamboo pitviper","Stiletto snake","Stimson's python","Stoke's sea snake","Storm water cobra","Striped snake","Sumatran short-tailed python","Sumatran tree viper","Sunbeam snake","Taipan","Taiwan cobra","Tan racer","Tancitaran dusky rattlesnake","Tanimbar python","Tasmanian tiger snake","Tawny cat snake","Temple pit viper","Temple viper","Tentacled snake","Texas Coral Snake","Texas blind snake","Texas garter snake","Texas lyre snake","Texas night snake","Thai cobra","Three-lined ground snake","Tibetan bamboo pitviper","Tic polonga","Tiger pit viper","Tiger rattlesnake","Tiger snake","Tigre snake","Timber rattlesnake","Timor python","Titanboa","Tree boa","Tree snake","Tree viper","Trinket snake","Tropical rattlesnake","Twig snake","Twin Headed King Snake","Twin-Barred tree snake","Twin-spotted rat snake","Twin-spotted rattlesnake","Undulated pit viper","Uracoan rattlesnake","Ursini's viper","Urutu","Vine snake","Viper","Viper Adder","Vipera ammodytes","Wagler's pit viper","Wart snake","Water adder","Water moccasin","Water snake","West Indian racer","Western blind snake","Western carpet python","Western coral snake","Western diamondback rattlesnake","Western green mamba","Western ground snake","Western hog-nosed viper","Western mud snake","Western tiger snake","Western woma python","Wetar Island python","Whip snake","White-lipped keelback","White-lipped python","White-lipped tree viper","Wirot's pit viper","Wolf snake","Woma python","Worm snake","Wutu","Wynaad keelback","Yarara","Yellow anaconda","Yellow-banded sea snake","Yellow-bellied sea snake","Yellow-lined palm viper","Yellow-lipped sea snake","Yellow-striped rat snake","Yunnan keelback","Zebra snake","Zebra spitting cobra"],type:["bat","bear","bee","bird","butterfly","cat","cow","crocodile","deer","dog","dolphin","eagle","elephant","fish","flamingo","fox","frog","gecko","giraffe","gorilla","hamster","hippopotamus","horse","kangaroo","koala","lion","monkey","ostrich","panda","parrot","peacock","penguin","polar bear","rabbit","rhinoceros","sea lion","shark","snake","squirrel","tiger","turtle","whale","wolf","zebra"]},app:{author:["{{person.name}}","{{company.name}}"],name:["Redhold","Treeflex","Trippledex","Kanlam","Bigtax","Daltfresh","Toughjoyfax","Mat Lam Tam","Otcom","Tres-Zap","Y-Solowarm","Tresom","Voltsillam","Biodex","Greenlam","Viva","Matsoft","Temp","Zoolab","Subin","Rank","Job","Stringtough","Tin","It","Home Ing","Zamit","Sonsing","Konklab","Alpha","Latlux","Voyatouch","Alphazap","Holdlamis","Zaam-Dox","Sub-Ex","Quo Lux","Bamity","Ventosanzap","Lotstring","Hatity","Tempsoft","Overhold","Fixflex","Konklux","Zontrax","Tampflex","Span","Namfix","Transcof","Stim","Fix San","Sonair","Stronghold","Fintone","Y-find","Opela","Lotlux","Ronstring","Zathin","Duobam","Keylex"],version:["0.#.#","0.##","#.##","#.#","#.#.#"]},cell_phone:{formats:["###-###-####","(###) ###-####","1-###-###-####","###.###.####"]},color:{human:["azure","black","blue","cyan","fuchsia","gold","green","grey","indigo","ivory","lavender","lime","magenta","maroon","mint green","olive","orange","orchid","pink","plum","purple","red","salmon","silver","sky blue","tan","teal","turquoise","violet","white","yellow"]},commerce:{department:["Automotive","Baby","Beauty","Books","Clothing","Computers","Electronics","Games","Garden","Grocery","Health","Home","Industrial","Jewelry","Kids","Movies","Music","Outdoors","Shoes","Sports","Tools","Toys"],product_description:["Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals","Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles","Carbonite web goalkeeper gloves are ergonomically designed to give easy fit","Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support","New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016","New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart","The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design","The Football Is Good For Training And Recreational Purposes","The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J","The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive","The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients","The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality"],product_name:{adjective:["Awesome","Bespoke","Electronic","Elegant","Ergonomic","Fantastic","Generic","Gorgeous","Handcrafted","Handmade","Incredible","Intelligent","Licensed","Luxurious","Modern","Oriental","Practical","Recycled","Refined","Rustic","Sleek","Small","Tasty","Unbranded"],material:["Bronze","Concrete","Cotton","Fresh","Frozen","Granite","Metal","Plastic","Rubber","Soft","Steel","Wooden"],product:["Bacon","Ball","Bike","Car","Chair","Cheese","Chicken","Chips","Computer","Fish","Gloves","Hat","Keyboard","Mouse","Pants","Pizza","Salad","Sausages","Shirt","Shoes","Soap","Table","Towels","Tuna"]}},company:{adjective:["Adaptive","Advanced","Ameliorated","Assimilated","Automated","Balanced","Business-focused","Centralized","Cloned","Compatible","Configurable","Cross-group","Cross-platform","Customer-focused","Customizable","De-engineered","Decentralized","Devolved","Digitized","Distributed","Diverse","Down-sized","Enhanced","Enterprise-wide","Ergonomic","Exclusive","Expanded","Extended","Face to face","Focused","Front-line","Fully-configurable","Function-based","Fundamental","Future-proofed","Grass-roots","Horizontal","Implemented","Innovative","Integrated","Intuitive","Inverse","Managed","Mandatory","Monitored","Multi-channelled","Multi-lateral","Multi-layered","Multi-tiered","Networked","Object-based","Open-architected","Open-source","Operative","Optimized","Optional","Organic","Organized","Persevering","Persistent","Phased","Polarised","Pre-emptive","Proactive","Profit-focused","Profound","Programmable","Progressive","Public-key","Quality-focused","Re-contextualized","Re-engineered","Reactive","Realigned","Reduced","Reverse-engineered","Right-sized","Robust","Seamless","Secured","Self-enabling","Sharable","Stand-alone","Streamlined","Switchable","Synchronised","Synergistic","Synergized","Team-oriented","Total","Triple-buffered","Universal","Up-sized","Upgradable","User-centric","User-friendly","Versatile","Virtual","Vision-oriented","Visionary"],buzz_adjective:["24/365","24/7","B2B","B2C","back-end","best-of-breed","bleeding-edge","bricks-and-clicks","clicks-and-mortar","collaborative","compelling","cross-media","cross-platform","customized","cutting-edge","distributed","dot-com","dynamic","e-business","efficient","end-to-end","enterprise","extensible","frictionless","front-end","global","granular","holistic","impactful","innovative","integrated","interactive","intuitive","killer","leading-edge","magnetic","mission-critical","next-generation","one-to-one","open-source","out-of-the-box","plug-and-play","proactive","real-time","revolutionary","rich","robust","scalable","seamless","sexy","sticky","strategic","synergistic","transparent","turn-key","ubiquitous","user-centric","value-added","vertical","viral","virtual","visionary","web-enabled","wireless","world-class"],buzz_noun:["ROI","action-items","applications","architectures","bandwidth","blockchains","channels","communities","content","convergence","deliverables","e-business","e-commerce","e-markets","experiences","eyeballs","functionalities","infrastructures","initiatives","interfaces","lifetime value","markets","methodologies","metrics","mindshare","models","networks","niches","paradigms","partnerships","platforms","portals","relationships","schemas","solutions","supply-chains","synergies","systems","technologies","users","web services"],buzz_verb:["aggregate","architect","benchmark","brand","cultivate","deliver","deploy","disintermediate","drive","e-enable","embrace","empower","enable","engage","engineer","enhance","envisioneer","evolve","expedite","exploit","extend","facilitate","generate","grow","harness","implement","incentivize","incubate","innovate","integrate","iterate","leverage","matrix","maximize","mesh","monetize","morph","optimize","orchestrate","productize","recontextualize","redefine","reintermediate","reinvent","repurpose","revolutionize","scale","seize","strategize","streamline","syndicate","synergize","synthesize","target","transform","transition","unleash","utilize","visualize","whiteboard"],descriptor:["24 hour","24/7","3rd generation","4th generation","5th generation","6th generation","actuating","analyzing","asymmetric","asynchronous","attitude-oriented","background","bandwidth-monitored","bi-directional","bifurcated","bottom-line","clear-thinking","client-driven","client-server","coherent","cohesive","composite","content-based","context-sensitive","contextually-based","dedicated","demand-driven","didactic","directional","discrete","disintermediate","dynamic","eco-centric","empowering","encompassing","even-keeled","executive","explicit","exuding","fault-tolerant","foreground","fresh-thinking","full-range","global","grid-enabled","heuristic","high-level","holistic","homogeneous","human-resource","hybrid","impactful","incremental","intangible","interactive","intermediate","leading edge","local","logistical","maximized","methodical","mission-critical","mobile","modular","motivating","multi-state","multi-tasking","multimedia","national","needs-based","neutral","next generation","non-volatile","object-oriented","optimal","optimizing","radical","real-time","reciprocal","regional","responsive","scalable","secondary","solution-oriented","stable","static","system-worthy","systematic","systemic","tangible","tertiary","transitional","uniform","upward-trending","user-facing","value-added","web-enabled","well-modulated","zero administration","zero defect","zero tolerance"],legal_entity_type:["Group","Inc","LLC","and Sons"],name_pattern:["{{person.last_name.generic}} - {{person.last_name.generic}}","{{person.last_name.generic}} {{company.legal_entity_type}}","{{person.last_name.generic}}, {{person.last_name.generic}} and {{person.last_name.generic}}"],noun:["Graphic Interface","Graphical User Interface","ability","access","adapter","algorithm","alliance","analyzer","application","approach","architecture","archive","array","artificial intelligence","attitude","benchmark","budgetary management","capability","capacity","challenge","circuit","collaboration","complexity","concept","conglomeration","contingency","core","customer loyalty","data-warehouse","database","definition","emulation","encoding","encryption","extranet","firmware","flexibility","focus group","forecast","frame","framework","function","functionalities","groupware","hardware","help-desk","hierarchy","hub","implementation","info-mediaries","infrastructure","initiative","installation","instruction set","interface","internet solution","intranet","knowledge base","knowledge user","leverage","local area network","matrices","matrix","methodology","middleware","migration","model","moderator","monitoring","moratorium","neural-net","open architecture","open system","orchestration","paradigm","parallelism","policy","portal","pricing structure","process improvement","product","productivity","project","projection","protocol","secured line","service-desk","software","solution","standardization","strategy","structure","success","superstructure","support","synergy","system engine","task-force","throughput","time-frame","toolset","utilisation","website","workforce"]},database:{column:["avatar","category","comment","createdAt","email","group","id","name","password","phone","status","title","token","updatedAt"]},date:{month:{wide:["April","August","December","February","January","July","June","March","May","November","October","September"],abbr:["Apr","Aug","Dec","Feb","Jan","Jul","Jun","Mar","May","Nov","Oct","Sep"]},weekday:{wide:["Friday","Monday","Saturday","Sunday","Thursday","Tuesday","Wednesday"],abbr:["Fri","Mon","Sat","Sun","Thu","Tue","Wed"]}},finance:{account_type:["Auto Loan","Checking","Credit Card","Home Loan","Investment","Money Market","Personal Loan","Savings"],credit_card:{american_express:["34##-######-####L","37##-######-####L"],diners_club:["30[0-5]#-######-###L","36##-######-###L","54##-####-####-###L"],discover:["6011-####-####-###L","6011-62##-####-####-###L","64[4-9]#-####-####-###L","64[4-9]#-62##-####-####-###L","65##-####-####-###L","65##-62##-####-####-###L"],jcb:["3528-####-####-###L","3529-####-####-###L","35[3-8]#-####-####-###L"],mastercard:["2[221-720]-####-####-###L","5[1-5]##-####-####-###L"],visa:["4###########L","4###-####-####-###L"]},currency:[{name:"UAE Dirham",code:"AED",symbol:""},{name:"Afghani",code:"AFN",symbol:"؋"},{name:"Lek",code:"ALL",symbol:"Lek"},{name:"Armenian Dram",code:"AMD",symbol:""},{name:"Netherlands Antillian Guilder",code:"ANG",symbol:"ƒ"},{name:"Kwanza",code:"AOA",symbol:""},{name:"Argentine Peso",code:"ARS",symbol:"$"},{name:"Australian Dollar",code:"AUD",symbol:"$"},{name:"Aruban Guilder",code:"AWG",symbol:"ƒ"},{name:"Azerbaijanian Manat",code:"AZN",symbol:"ман"},{name:"Convertible Marks",code:"BAM",symbol:"KM"},{name:"Barbados Dollar",code:"BBD",symbol:"$"},{name:"Taka",code:"BDT",symbol:""},{name:"Bulgarian Lev",code:"BGN",symbol:"лв"},{name:"Bahraini Dinar",code:"BHD",symbol:""},{name:"Burundi Franc",code:"BIF",symbol:""},{name:"Bermudian Dollar (customarily known as Bermuda Dollar)",code:"BMD",symbol:"$"},{name:"Brunei Dollar",code:"BND",symbol:"$"},{name:"Boliviano boliviano",code:"BOB",symbol:"Bs"},{name:"Brazilian Real",code:"BRL",symbol:"R$"},{name:"Bahamian Dollar",code:"BSD",symbol:"$"},{name:"Pula",code:"BWP",symbol:"P"},{name:"Belarusian Ruble",code:"BYN",symbol:"Rbl"},{name:"Belize Dollar",code:"BZD",symbol:"BZ$"},{name:"Canadian Dollar",code:"CAD",symbol:"$"},{name:"Congolese Franc",code:"CDF",symbol:""},{name:"Swiss Franc",code:"CHF",symbol:"CHF"},{name:"Chilean Peso",code:"CLP",symbol:"$"},{name:"Yuan Renminbi",code:"CNY",symbol:"¥"},{name:"Colombian Peso",code:"COP",symbol:"$"},{name:"Costa Rican Colon",code:"CRC",symbol:"₡"},{name:"Cuban Peso",code:"CUP",symbol:"₱"},{name:"Cape Verde Escudo",code:"CVE",symbol:""},{name:"Czech Koruna",code:"CZK",symbol:"Kč"},{name:"Djibouti Franc",code:"DJF",symbol:""},{name:"Danish Krone",code:"DKK",symbol:"kr"},{name:"Dominican Peso",code:"DOP",symbol:"RD$"},{name:"Algerian Dinar",code:"DZD",symbol:""},{name:"Egyptian Pound",code:"EGP",symbol:"£"},{name:"Nakfa",code:"ERN",symbol:""},{name:"Ethiopian Birr",code:"ETB",symbol:""},{name:"Euro",code:"EUR",symbol:"€"},{name:"Fiji Dollar",code:"FJD",symbol:"$"},{name:"Falkland Islands Pound",code:"FKP",symbol:"£"},{name:"Pound Sterling",code:"GBP",symbol:"£"},{name:"Lari",code:"GEL",symbol:""},{name:"Cedi",code:"GHS",symbol:""},{name:"Gibraltar Pound",code:"GIP",symbol:"£"},{name:"Dalasi",code:"GMD",symbol:""},{name:"Guinea Franc",code:"GNF",symbol:""},{name:"Quetzal",code:"GTQ",symbol:"Q"},{name:"Guyana Dollar",code:"GYD",symbol:"$"},{name:"Hong Kong Dollar",code:"HKD",symbol:"$"},{name:"Lempira",code:"HNL",symbol:"L"},{name:"Gourde",code:"HTG",symbol:""},{name:"Forint",code:"HUF",symbol:"Ft"},{name:"Rupiah",code:"IDR",symbol:"Rp"},{name:"New Israeli Sheqel",code:"ILS",symbol:"₪"},{name:"Bhutanese Ngultrum",code:"BTN",symbol:"Nu"},{name:"Indian Rupee",code:"INR",symbol:"₹"},{name:"Iraqi Dinar",code:"IQD",symbol:""},{name:"Iranian Rial",code:"IRR",symbol:"﷼"},{name:"Iceland Krona",code:"ISK",symbol:"kr"},{name:"Jamaican Dollar",code:"JMD",symbol:"J$"},{name:"Jordanian Dinar",code:"JOD",symbol:""},{name:"Yen",code:"JPY",symbol:"¥"},{name:"Kenyan Shilling",code:"KES",symbol:""},{name:"Som",code:"KGS",symbol:"лв"},{name:"Riel",code:"KHR",symbol:"៛"},{name:"Comoro Franc",code:"KMF",symbol:""},{name:"North Korean Won",code:"KPW",symbol:"₩"},{name:"Won",code:"KRW",symbol:"₩"},{name:"Kuwaiti Dinar",code:"KWD",symbol:""},{name:"Cayman Islands Dollar",code:"KYD",symbol:"$"},{name:"Tenge",code:"KZT",symbol:"лв"},{name:"Kip",code:"LAK",symbol:"₭"},{name:"Lebanese Pound",code:"LBP",symbol:"£"},{name:"Sri Lanka Rupee",code:"LKR",symbol:"₨"},{name:"Liberian Dollar",code:"LRD",symbol:"$"},{name:"Libyan Dinar",code:"LYD",symbol:""},{name:"Moroccan Dirham",code:"MAD",symbol:""},{name:"Moldovan Leu",code:"MDL",symbol:""},{name:"Malagasy Ariary",code:"MGA",symbol:""},{name:"Denar",code:"MKD",symbol:"ден"},{name:"Kyat",code:"MMK",symbol:""},{name:"Tugrik",code:"MNT",symbol:"₮"},{name:"Pataca",code:"MOP",symbol:""},{name:"Ouguiya",code:"MRU",symbol:""},{name:"Mauritius Rupee",code:"MUR",symbol:"₨"},{name:"Rufiyaa",code:"MVR",symbol:""},{name:"Kwacha",code:"MWK",symbol:""},{name:"Mexican Peso",code:"MXN",symbol:"$"},{name:"Malaysian Ringgit",code:"MYR",symbol:"RM"},{name:"Metical",code:"MZN",symbol:"MT"},{name:"Naira",code:"NGN",symbol:"₦"},{name:"Cordoba Oro",code:"NIO",symbol:"C$"},{name:"Norwegian Krone",code:"NOK",symbol:"kr"},{name:"Nepalese Rupee",code:"NPR",symbol:"₨"},{name:"New Zealand Dollar",code:"NZD",symbol:"$"},{name:"Rial Omani",code:"OMR",symbol:"﷼"},{name:"Balboa",code:"PAB",symbol:"B/."},{name:"Nuevo Sol",code:"PEN",symbol:"S/."},{name:"Kina",code:"PGK",symbol:""},{name:"Philippine Peso",code:"PHP",symbol:"Php"},{name:"Pakistan Rupee",code:"PKR",symbol:"₨"},{name:"Zloty",code:"PLN",symbol:"zł"},{name:"Guarani",code:"PYG",symbol:"Gs"},{name:"Qatari Rial",code:"QAR",symbol:"﷼"},{name:"New Leu",code:"RON",symbol:"lei"},{name:"Serbian Dinar",code:"RSD",symbol:"Дин."},{name:"Russian Ruble",code:"RUB",symbol:"руб"},{name:"Rwanda Franc",code:"RWF",symbol:""},{name:"Saudi Riyal",code:"SAR",symbol:"﷼"},{name:"Solomon Islands Dollar",code:"SBD",symbol:"$"},{name:"Seychelles Rupee",code:"SCR",symbol:"₨"},{name:"Sudanese Pound",code:"SDG",symbol:""},{name:"Swedish Krona",code:"SEK",symbol:"kr"},{name:"Singapore Dollar",code:"SGD",symbol:"$"},{name:"Saint Helena Pound",code:"SHP",symbol:"£"},{name:"Leone",code:"SLE",symbol:""},{name:"Somali Shilling",code:"SOS",symbol:"S"},{name:"Surinam Dollar",code:"SRD",symbol:"$"},{name:"South Sudanese pound",code:"SSP",symbol:""},{name:"Dobra",code:"STN",symbol:"Db"},{name:"Syrian Pound",code:"SYP",symbol:"£"},{name:"Lilangeni",code:"SZL",symbol:""},{name:"Baht",code:"THB",symbol:"฿"},{name:"Somoni",code:"TJS",symbol:""},{name:"Manat",code:"TMT",symbol:""},{name:"Tunisian Dinar",code:"TND",symbol:""},{name:"Pa'anga",code:"TOP",symbol:""},{name:"Turkish Lira",code:"TRY",symbol:"₺"},{name:"Trinidad and Tobago Dollar",code:"TTD",symbol:"TT$"},{name:"New Taiwan Dollar",code:"TWD",symbol:"NT$"},{name:"Tanzanian Shilling",code:"TZS",symbol:""},{name:"Hryvnia",code:"UAH",symbol:"₴"},{name:"Uganda Shilling",code:"UGX",symbol:""},{name:"US Dollar",code:"USD",symbol:"$"},{name:"Peso Uruguayo",code:"UYU",symbol:"$U"},{name:"Uzbekistan Sum",code:"UZS",symbol:"лв"},{name:"Venezuelan bolívar",code:"VES",symbol:"Bs"},{name:"Dong",code:"VND",symbol:"₫"},{name:"Vatu",code:"VUV",symbol:""},{name:"Tala",code:"WST",symbol:""},{name:"CFA Franc BEAC",code:"XAF",symbol:""},{name:"East Caribbean Dollar",code:"XCD",symbol:"$"},{name:"CFA Franc BCEAO",code:"XOF",symbol:""},{name:"CFP Franc",code:"XPF",symbol:""},{name:"Yemeni Rial",code:"YER",symbol:"﷼"},{name:"Rand",code:"ZAR",symbol:"R"},{name:"Lesotho Loti",code:"LSL",symbol:""},{name:"Namibia Dollar",code:"NAD",symbol:"N$"},{name:"Zambian Kwacha",code:"ZMW",symbol:"K"},{name:"Zimbabwe Dollar",code:"ZWL",symbol:""}],transaction_type:["deposit","invoice","payment","withdrawal"]},food:{adjective:["bitter","creamy","crispy","crunchy","delicious","fluffy","fresh","golden","juicy","moist","rich","salty","savory","smoky","sour","spicy","sweet","tangy","tender","zesty"],description_pattern:["A classic pie filled with delicious {{food.meat}} and {{food.adjective}} {{food.ingredient}}, baked in a {{food.adjective}} pastry crust and topped with a golden-brown lattice.","A delightful tart combining {{food.adjective}} {{food.vegetable}} and sweet {{food.fruit}}, set in a buttery pastry shell and finished with a hint of {{food.spice}}.","A heartwarming {{food.ethnic_category}} soup, featuring fresh {{food.ingredient}} and an aromatic blend of traditional spices.","A robust {{food.adjective}} stew featuring {{food.ethnic_category}} flavors, loaded with {{food.adjective}} meat, {{food.adjective}} vegetables, and a {{food.adjective}}, {{food.adjective}} broth.","A simple {{food.fruit}} pie. No fancy stuff. Just pie.","A slow-roasted {{animal.bird}} with a {{food.adjective}}, {{food.adjective}} exterior. Stuffed with {{food.fruit}} and covered in {{food.fruit}} sauce. Sides with {{food.vegetable}} puree and wild {{food.vegetable}}.","A special {{color.human}} {{food.ingredient}} from {{location.country}}. To support the strong flavor it is sided with a tablespoon of {{food.spice}}.","A succulent {{food.meat}} steak, encased in a {{food.adjective}} {{food.spice}} crust, served with a side of {{food.spice}} mashed {{food.vegetable}}.","An exquisite {{food.meat}} roast, infused with the essence of {{food.fruit}}, slow-roasted to bring out its natural flavors and served with a side of creamy {{food.vegetable}}","Baked {{food.ingredient}}-stuffed {{food.meat}}, seasoned with {{food.spice}} and {{food.adjective}} herbs, accompanied by roasted {{food.vegetable}} medley.","Crispy fried {{food.meat}} bites, seasoned with {{food.spice}} and served with a tangy {{food.fruit}} dipping sauce.","Fresh mixed greens tossed with {{food.spice}}-rubbed {{food.meat}}, {{food.vegetable}}, and a light dressing.","Fresh {{food.ingredient}} with a pinch of {{food.spice}}, topped by a caramelized {{food.fruit}} with whipped cream","Grilled {{food.meat}} kebabs, marinated in {{food.ethnic_category}} spices and served with a fresh {{food.vegetable}} and {{food.fruit}} salad.","Hearty {{food.ingredient}} and {{food.meat}} stew, slow-cooked with {{food.spice}} and {{food.vegetable}} for a comforting, flavorful meal.","Juicy {{food.meat}}, grilled to your liking and drizzled with a bold {{food.spice}} sauce, served alongside roasted {{food.vegetable}}.","Our {{food.adjective}} {{food.meat}}, slow-cooked to perfection, accompanied by steamed {{food.vegetable}} and a rich, savory gravy.","Tender {{food.meat}} skewers, glazed with a sweet and tangy {{food.fruit}} sauce, served over a bed of fragrant jasmine rice.","Tenderly braised {{food.meat}} in a rich {{food.spice}} and {{food.vegetable}} sauce, served with a side of creamy {{food.vegetable}}.","Three {{food.ingredient}} with {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}} and {{food.ingredient}}. With a side of baked {{food.fruit}}, and your choice of {{food.ingredient}} or {{food.ingredient}}.",'{{number.int({"min":1, "max":99})}}-day aged {{food.meat}} steak, with choice of {{number.int({"min":2, "max":4})}} sides.'],dish:["California maki","Peking duck","Philadelphia maki","arepas","barbecue ribs","bruschette with tomato","bunny chow","caesar salad","caprese salad","cauliflower penne","cheeseburger","chicken fajitas","chicken milanese","chicken parm","chicken wings","chilli con carne","ebiten maki","fettuccine alfredo","fish and chips","french fries with sausages","french toast","hummus","katsu curry","kebab","lasagne","linguine with clams","massaman curry","meatballs with sauce","mushroom risotto","pappardelle alla bolognese","pasta and beans","pasta carbonara","pasta with tomato and basil","pho","pierogi","pizza","poke","pork belly buns","pork sausage roll","poutine","ricotta stuffed ravioli","risotto with seafood","salmon nigiri","scotch eggs","seafood paella","som tam","souvlaki","stinky tofu","sushi","tacos","teriyaki chicken donburi","tiramisù","tuna sashimi","vegetable soup"],dish_pattern:["{{food.adjective}} {{food.ethnic_category}} stew","{{food.adjective}} {{food.meat}} with {{food.vegetable}}","{{food.ethnic_category}} {{food.ingredient}} soup","{{food.fruit}} and {{food.fruit}} tart","{{food.fruit}} pie","{{food.fruit}}-glazed {{food.meat}} skewers","{{food.fruit}}-infused {{food.meat}} roast","{{food.ingredient}} and {{food.meat}} pie","{{food.ingredient}}-infused {{food.meat}}","{{food.meat}} steak","{{food.meat}} with {{food.fruit}} sauce","{{food.spice}}-crusted {{food.meat}}","{{food.spice}}-rubbed {{food.meat}} salad","{{food.vegetable}} salad","{{person.first_name.generic}}'s special {{food.ingredient}}"],ethnic_category:["Ainu","Albanian","American","Andhra","Anglo-Indian","Arab","Argentine","Armenian","Assyrian","Awadhi","Azerbaijani","Balochi","Bangladeshi","Bashkir","Belarusian","Bengali","Berber","Brazilian","British","Buddhist","Bulgarian","Cajun","Cantonese","Caribbean","Chechen","Chinese","Chinese Islamic","Circassian","Crimean Tatar","Cypriot","Czech","Danish","Egyptian","English","Eritrean","Estonian","Ethiopian","Filipino","French","Georgian","German","Goan","Goan Catholic","Greek","Gujarati","Hyderabad","Indian","Indian Chinese","Indian Singaporean","Indonesian","Inuit","Irish","Italian","Italian-American","Jamaican","Japanese","Jewish - Israeli","Karnataka","Kazakh","Keralite","Korean","Kurdish","Laotian","Latvian","Lebanese","Lithuanian","Louisiana Creole","Maharashtrian","Malay","Malaysian Chinese","Malaysian Indian","Mangalorean","Mediterranean","Mennonite","Mexican","Mordovian","Mughal","Native American","Nepalese","New Mexican","Odia","Pakistani","Parsi","Pashtun","Pennsylvania Dutch","Peranakan","Persian","Peruvian","Polish","Portuguese","Punjabi","Québécois","Rajasthani","Romani","Romanian","Russian","Sami","Serbian","Sindhi","Slovak","Slovenian","Somali","South Indian","Soviet","Spanish","Sri Lankan","Taiwanese","Tamil","Tatar","Texan","Thai","Turkish","Udupi","Ukrainian","Vietnamese","Yamal","Zambian","Zanzibari"],fruit:["apple","apricot","aubergine","avocado","banana","berry","blackberry","blood orange","blueberry","bush tomato","butternut pumpkin","cantaloupe","cavalo","cherry","corella pear","cranberry","cumquat","currant","custard apple","custard apples daikon","date","dragonfruit","dried apricot","elderberry","feijoa","fig","fingerlime","goji berry","grape","grapefruit","guava","honeydew melon","incaberry","jarrahdale pumpkin","juniper berry","kiwi fruit","kiwiberry","lemon","lime","longan","loquat","lychee","mandarin","mango","mangosteen","melon","mulberry","nashi pear","nectarine","olive","orange","papaw","papaya","passionfruit","peach","pear","pineapple","plum","pomegranate","prune","rockmelon","snowpea","sprout","starfruit","strawberry","sultana","tangelo","tomato","watermelon"],ingredient:["achacha","adzuki beans","agar","agave syrup","ajowan seed","albacore tuna","alfalfa","allspice","almond oil","almonds","amaranth","amchur","anchovies","aniseed","annatto seed","apple cider vinegar","apple juice","apple juice concentrate","apples","apricots","arborio rice","arrowroot","artichoke","arugula","asafoetida","asian greens","asian noodles","asparagus","aubergine","avocado","avocado oil","avocado spread","bacon","baking powder","baking soda","balsamic vinegar","bamboo shoots","banana","barberry","barley","barramundi","basil basmati rice","bay leaves","bean shoots","bean sprouts","beans","beef","beef stock","beetroot","berries","besan","black eyed beans","blackberries","blood oranges","blue cheese","blue eye trevalla","blue swimmer crab","blueberries","bocconcini","bok choy","bonito flakes","bonza","borlotti beans","bran","brazil nut","bread","brie","broccoli","broccolini","brown flour","brown mushrooms","brown rice","brown rice vinegar","brussels sprouts","buckwheat","buckwheat flour","buckwheat noodles","bulghur","bush tomato","butter","butter beans","buttermilk","butternut lettuce","butternut pumpkin","cabbage","cacao","cake","calamari","camellia tea oil","camembert","camomile","candle nut","cannellini beans","canola oil","cantaloupe","capers","capsicum","caraway seed","cardamom","carob carrot","carrot","cashews","cassia bark","cauliflower","cavalo","cayenne","celery","celery seed","cheddar","cherries","chestnut","chia seeds","chicken","chicken stock","chickory","chickpea","chilli pepper","chinese cabbage","chinese five spice","chives","choy sum","cinnamon","clams","cloves","cocoa powder","coconut","coconut oil","coconut water","coffee","common cultivated mushrooms","corella pear","coriander leaves","coriander seed","corn oil","corn syrup","corn tortilla","cornichons","cornmeal","cos lettuce","cottage cheese","cous cous","crabs","cranberry","cream","cream cheese","cucumber","cumin","cumquat","currants","curry leaves","curry powder","custard apples","dandelion","dark chocolate","dashi","dates","dill","dragonfruit","dried apricots","dried chinese broccoli","duck","edam","edamame","eggplant","eggs","elderberry","endive","english spinach","enoki mushrooms","extra virgin olive oil","farmed prawns","feijoa","fennel","fennel seeds","fenugreek","feta","figs","file powder","fingerlime","fish sauce","fish stock","flat mushrooms","flathead","flaxseed","flaxseed oil","flounder","flour","freekeh","french eschallots","fresh chillies","fromage blanc","fruit","galangal","garam masala","garlic","goat cheese","goat milk","goji berry","grape seed oil","grapefruit","grapes","green beans","green pepper","green tea","green tea noodles","greenwheat freekeh","gruyere","guava","gula melaka","haloumi","ham","haricot beans","harissa","hazelnut","hijiki","hiramasa kingfish","hokkien noodles","honey","honeydew melon","horseradish","hot smoked salmon","hummus","iceberg lettuce","incaberries","jarrahdale pumpkin","jasmine rice","jelly","jerusalem artichoke","jewfish","jicama","juniper berries","kale","kangaroo","kecap manis","kenchur","kidney beans","kidneys","kiwi berries","kiwi fruit","kohlrabi","kokam","kombu","koshihikari rice","kudzu","kumera","lamb","lavender flowers","leeks","lemon","lemongrass","lentils","lettuce","licorice","lime leaves","limes","liver","lobster","longan","loquats","lotus root","lychees","macadamia nut","macadamia oil","mace","mackerel","mahi mahi","mahlab","malt vinegar","mandarins","mango","mangosteens","maple syrup","margarine","marigold","marjoram","mastic","melon","milk","milk chocolate","mint","miso","molasses","monkfish","morwong","mountain bread","mozzarella","muesli","mulberries","mullet","mung beans","mussels","mustard","mustard seed","nashi pear","nasturtium","nectarines","nori","nutmeg","nutritional yeast","nuts","oat flour","oatmeal","oats","octopus","okra","olive oil","olives","omega spread","onion","oranges","oregano","oyster mushrooms","oyster sauce","oysters","pandanus leaves","papaw","papaya","paprik","parmesan cheese","parrotfish","parsley","parsnip","passionfruit","pasta","peaches","peanuts","pear","pear juice","pears","peas","pecan nut","pecorino","pepitas","peppercorns","peppermint","peppers","persimmon","pine nut","pineapple","pinto beans","pistachio nut","plums","polenta","pomegranate","poppy seed","porcini mushrooms","pork","potato flour","potatoes","provolone","prunes","pumpkin","pumpkin seed","purple carrot","purple rice","quark","quince","quinoa","radicchio","radish","raisin","raspberry","red cabbage","red lentils","red pepper","red wine","red wine vinegar","redfish","rhubarb","rice flour","rice noodles","rice paper","rice syrup","ricemilk","ricotta","rockmelon","rose water","rosemary","rye","rye bread","safflower oil","saffron","sage","sake","salmon","sardines","sausages","scallops","sea salt","semolina","sesame oil","sesame seeds","shark","shiitake mushrooms","silverbeet","slivered almonds","smoked trout","snapper","snowpea sprouts","snowpeas","soba","sour dough bread","soy","soy beans","soy flour","soy milk","soy sauce","soymilk","spearmint","spelt","spelt bread","spinach","spring onions","sprouts","squash","squid","star anise","star fruit","starfruit","stevia","strawberries","sugar","sultanas","sun-dried tomatoes","sunflower oil","sunflower seeds","sweet chilli sauce","sweet potato","swiss chard","swordfish","szechuan pepperberry","tabasco","tahini","taleggio cheese","tamari","tamarillo","tangelo","tapioca","tapioca flour","tarragon","tea","tea oil","tempeh","thyme","tinned","tofu","tom yum","tomatoes","trout","tuna","turkey","turmeric","turnips","unbleached flour","vanilla beans","vegetable oil","vegetable spaghetti","vegetable stock","vermicelli noodles","vinegar","wakame","walnut","warehou","wasabi","water","watercress","watermelon","wattleseed","wheat","wheatgrass juice","white bread","white flour","white rice","white wine","white wine vinegar","whiting wild rice","wholegrain bread","wholemeal","wholewheat flour","william pear","yeast","yellow papaw","yellowtail kingfish","yoghurt","yogurt","zucchini"],meat:["beef","chicken","crocodile","duck","emu","goose","kangaroo","lamb","ostrich","pigeon","pork","quail","rabbit","salmon","turkey","venison"],spice:["achiote seed","ajwain seed","ajwan seed","allspice","amchoor","anise","anise star","aniseed","annatto seed","arrowroot","asafoetida","baharat","balti masala","balti stir fry mix","basil","bay leaves","bbq","caraway seed","cardamom","cassia","cayenne pepper","celery","chamomile","chervil","chilli","chilli pepper","chillies","china star","chives","cinnamon","cloves","colombo","coriander","cumin","curly leaf parsley","curry","dhansak","dill","fennel seed","fenugreek","fines herbes","five spice","french lavender","galangal","garam masala","garlic","german chamomile","ginger","green cardamom","herbes de provence","jalfrezi","jerk","kaffir leaves","korma","lavender","lemon grass","lemon pepper","lime leaves","liquorice root","mace","mango","marjoram","methi","mint","mustard","nutmeg","onion seed","orange zest","oregano","paprika","parsley","pepper","peppercorns","pimento","piri piri","poppy seed","pot marjoram","poudre de colombo","ras-el-hanout","rice paper","rogan josh","rose baie","rosemary","saffron","sage","sesame seed","spearmint","sumac","sweet basil","sweet laurel","tagine","tandoori masala","tarragon","thyme","tikka masala","turmeric","vanilla","zahtar"],vegetable:["artichoke","arugula","asian greens","asparagus","bean shoots","bean sprouts","beans","beetroot","bok choy","broccoli","broccolini","brussels sprouts","butternut lettuce","cabbage","capers","carob carrot","carrot","cauliflower","celery","chilli pepper","chinese cabbage","chives","cornichons","cos lettuce","cucumber","dried chinese broccoli","eggplant","endive","english spinach","french eschallots","fresh chillies","garlic","green beans","green pepper","hijiki","iceberg lettuce","jerusalem artichoke","jicama","kale","kohlrabi","leeks","lettuce","okra","onion","parsnip","peas","peppers","potatoes","pumpkin","purple carrot","radicchio","radish","raspberry","red cabbage","red pepper","rhubarb","snowpea sprouts","spinach","squash","sun dried tomatoes","sweet potato","swiss chard","turnips","zucchini"]},hacker:{adjective:["1080p","auxiliary","back-end","bluetooth","cross-platform","digital","haptic","mobile","multi-byte","neural","online","open-source","optical","primary","redundant","solid state","virtual","wireless"],ingverb:["backing up","bypassing","calculating","compressing","connecting","copying","generating","hacking","indexing","navigating","overriding","parsing","programming","quantifying","synthesizing","transmitting"],noun:["alarm","application","array","bandwidth","bus","capacitor","card","circuit","driver","feed","firewall","hard drive","interface","matrix","microchip","monitor","panel","pixel","port","program","protocol","sensor","system","transmitter"],phrase:["I'll {{verb}} the {{adjective}} {{abbreviation}} {{noun}}, that should {{noun}} the {{abbreviation}} {{noun}}!","If we {{verb}} the {{noun}}, we can get to the {{abbreviation}} {{noun}} through the {{adjective}} {{abbreviation}} {{noun}}!","The {{abbreviation}} {{noun}} is down, {{verb}} the {{adjective}} {{noun}} so we can {{verb}} the {{abbreviation}} {{noun}}!","Try to {{verb}} the {{abbreviation}} {{noun}}, maybe it will {{verb}} the {{adjective}} {{noun}}!","Use the {{adjective}} {{abbreviation}} {{noun}}, then you can {{verb}} the {{adjective}} {{noun}}!","We need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!","You can't {{verb}} the {{noun}} without {{ingverb}} the {{adjective}} {{abbreviation}} {{noun}}!","{{ingverb}} the {{noun}} won't do anything, we need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!"],verb:["back up","bypass","calculate","compress","connect","copy","generate","hack","index","input","navigate","override","parse","program","quantify","reboot","synthesize","transmit"]},internet:{domain_suffix:["com","biz","info","name","net","org"],example_email:["example.org","example.com","example.net"],free_email:["gmail.com","yahoo.com","hotmail.com"]},location:{building_number:["#####","####","###"],city_name:["Abilene","Akron","Alafaya","Alameda","Albany","Albuquerque","Alexandria","Alhambra","Aliso Viejo","Allen","Allentown","Aloha","Alpharetta","Altadena","Altamonte Springs","Altoona","Amarillo","Ames","Anaheim","Anchorage","Anderson","Ankeny","Ann Arbor","Annandale","Antelope","Antioch","Apex","Apopka","Apple Valley","Appleton","Arcadia","Arden-Arcade","Arecibo","Arlington","Arlington Heights","Arvada","Ashburn","Asheville","Aspen Hill","Atascocita","Athens-Clarke County","Atlanta","Attleboro","Auburn","Augusta-Richmond County","Aurora","Austin","Avondale","Azusa","Bakersfield","Baldwin Park","Baltimore","Barnstable Town","Bartlett","Baton Rouge","Battle Creek","Bayamon","Bayonne","Baytown","Beaumont","Beavercreek","Beaverton","Bedford","Bel Air South","Bell Gardens","Belleville","Bellevue","Bellflower","Bellingham","Bend","Bentonville","Berkeley","Berwyn","Bethesda","Bethlehem","Billings","Biloxi","Binghamton","Birmingham","Bismarck","Blacksburg","Blaine","Bloomington","Blue Springs","Boca Raton","Boise City","Bolingbrook","Bonita Springs","Bossier City","Boston","Bothell","Boulder","Bountiful","Bowie","Bowling Green","Boynton Beach","Bozeman","Bradenton","Brandon","Brentwood","Bridgeport","Bristol","Brockton","Broken Arrow","Brookhaven","Brookline","Brooklyn Park","Broomfield","Brownsville","Bryan","Buckeye","Buena Park","Buffalo","Buffalo Grove","Burbank","Burien","Burke","Burleson","Burlington","Burnsville","Caguas","Caldwell","Camarillo","Cambridge","Camden","Canton","Cape Coral","Carlsbad","Carmel","Carmichael","Carolina","Carrollton","Carson","Carson City","Cary","Casa Grande","Casas Adobes","Casper","Castle Rock","Castro Valley","Catalina Foothills","Cathedral City","Catonsville","Cedar Hill","Cedar Park","Cedar Rapids","Centennial","Centreville","Ceres","Cerritos","Champaign","Chandler","Chapel Hill","Charleston","Charlotte","Charlottesville","Chattanooga","Cheektowaga","Chesapeake","Chesterfield","Cheyenne","Chicago","Chico","Chicopee","Chino","Chino Hills","Chula Vista","Cicero","Cincinnati","Citrus Heights","Clarksville","Clearwater","Cleveland","Cleveland Heights","Clifton","Clovis","Coachella","Coconut Creek","Coeur d'Alene","College Station","Collierville","Colorado Springs","Colton","Columbia","Columbus","Commerce City","Compton","Concord","Conroe","Conway","Coon Rapids","Coral Gables","Coral Springs","Corona","Corpus Christi","Corvallis","Costa Mesa","Council Bluffs","Country Club","Covina","Cranston","Cupertino","Cutler Bay","Cuyahoga Falls","Cypress","Dale City","Dallas","Daly City","Danbury","Danville","Davenport","Davie","Davis","Dayton","Daytona Beach","DeKalb","DeSoto","Dearborn","Dearborn Heights","Decatur","Deerfield Beach","Delano","Delray Beach","Deltona","Denton","Denver","Des Moines","Des Plaines","Detroit","Diamond Bar","Doral","Dothan","Downers Grove","Downey","Draper","Dublin","Dubuque","Duluth","Dundalk","Dunwoody","Durham","Eagan","East Hartford","East Honolulu","East Lansing","East Los Angeles","East Orange","East Providence","Eastvale","Eau Claire","Eden Prairie","Edina","Edinburg","Edmond","El Cajon","El Centro","El Dorado Hills","El Monte","El Paso","Elgin","Elizabeth","Elk Grove","Elkhart","Ellicott City","Elmhurst","Elyria","Encinitas","Enid","Enterprise","Erie","Escondido","Euclid","Eugene","Euless","Evanston","Evansville","Everett","Fairfield","Fall River","Fargo","Farmington","Farmington Hills","Fayetteville","Federal Way","Findlay","Fishers","Flagstaff","Flint","Florence-Graham","Florin","Florissant","Flower Mound","Folsom","Fond du Lac","Fontana","Fort Collins","Fort Lauderdale","Fort Myers","Fort Pierce","Fort Smith","Fort Wayne","Fort Worth","Fountain Valley","Fountainebleau","Framingham","Franklin","Frederick","Freeport","Fremont","Fresno","Frisco","Fullerton","Gainesville","Gaithersburg","Galveston","Garden Grove","Gardena","Garland","Gary","Gastonia","Georgetown","Germantown","Gilbert","Gilroy","Glen Burnie","Glendale","Glendora","Glenview","Goodyear","Grand Forks","Grand Island","Grand Junction","Grand Prairie","Grand Rapids","Grapevine","Great Falls","Greeley","Green Bay","Greensboro","Greenville","Greenwood","Gresham","Guaynabo","Gulfport","Hacienda Heights","Hackensack","Haltom City","Hamilton","Hammond","Hampton","Hanford","Harlingen","Harrisburg","Harrisonburg","Hartford","Hattiesburg","Haverhill","Hawthorne","Hayward","Hemet","Hempstead","Henderson","Hendersonville","Hesperia","Hialeah","Hicksville","High Point","Highland","Highlands Ranch","Hillsboro","Hilo","Hoboken","Hoffman Estates","Hollywood","Homestead","Honolulu","Hoover","Houston","Huntersville","Huntington","Huntington Beach","Huntington Park","Huntsville","Hutchinson","Idaho Falls","Independence","Indianapolis","Indio","Inglewood","Iowa City","Irondequoit","Irvine","Irving","Jackson","Jacksonville","Janesville","Jefferson City","Jeffersonville","Jersey City","Johns Creek","Johnson City","Joliet","Jonesboro","Joplin","Jupiter","Jurupa Valley","Kalamazoo","Kannapolis","Kansas City","Kearny","Keller","Kendale Lakes","Kendall","Kenner","Kennewick","Kenosha","Kent","Kentwood","Kettering","Killeen","Kingsport","Kirkland","Kissimmee","Knoxville","Kokomo","La Crosse","La Habra","La Mesa","La Mirada","Lacey","Lafayette","Laguna Niguel","Lake Charles","Lake Elsinore","Lake Forest","Lake Havasu City","Lake Ridge","Lakeland","Lakeville","Lakewood","Lancaster","Lansing","Laredo","Largo","Las Cruces","Las Vegas","Lauderhill","Lawrence","Lawton","Layton","League City","Lee's Summit","Leesburg","Lehi","Lehigh Acres","Lenexa","Levittown","Lewisville","Lexington-Fayette","Lincoln","Linden","Little Rock","Littleton","Livermore","Livonia","Lodi","Logan","Lombard","Lompoc","Long Beach","Longmont","Longview","Lorain","Los Angeles","Louisville/Jefferson County","Loveland","Lowell","Lubbock","Lynchburg","Lynn","Lynwood","Macon-Bibb County","Madera","Madison","Malden","Manchester","Manhattan","Mansfield","Manteca","Maple Grove","Margate","Maricopa","Marietta","Marysville","Mayaguez","McAllen","McKinney","McLean","Medford","Melbourne","Memphis","Menifee","Mentor","Merced","Meriden","Meridian","Mesa","Mesquite","Metairie","Methuen Town","Miami","Miami Beach","Miami Gardens","Middletown","Midland","Midwest City","Milford","Millcreek","Milpitas","Milwaukee","Minneapolis","Minnetonka","Minot","Miramar","Mishawaka","Mission","Mission Viejo","Missoula","Missouri City","Mobile","Modesto","Moline","Monroe","Montebello","Monterey Park","Montgomery","Moore","Moreno Valley","Morgan Hill","Mount Pleasant","Mount Prospect","Mount Vernon","Mountain View","Muncie","Murfreesboro","Murray","Murrieta","Nampa","Napa","Naperville","Nashua","Nashville-Davidson","National City","New Bedford","New Braunfels","New Britain","New Brunswick","New Haven","New Orleans","New Rochelle","New York","Newark","Newport Beach","Newport News","Newton","Niagara Falls","Noblesville","Norfolk","Normal","Norman","North Bethesda","North Charleston","North Highlands","North Las Vegas","North Lauderdale","North Little Rock","North Miami","North Miami Beach","North Port","North Richland Hills","Norwalk","Novato","Novi","O'Fallon","Oak Lawn","Oak Park","Oakland","Oakland Park","Ocala","Oceanside","Odessa","Ogden","Oklahoma City","Olathe","Olympia","Omaha","Ontario","Orange","Orem","Orland Park","Orlando","Oro Valley","Oshkosh","Overland Park","Owensboro","Oxnard","Palatine","Palm Bay","Palm Beach Gardens","Palm Coast","Palm Desert","Palm Harbor","Palm Springs","Palmdale","Palo Alto","Paradise","Paramount","Parker","Parma","Pasadena","Pasco","Passaic","Paterson","Pawtucket","Peabody","Pearl City","Pearland","Pembroke Pines","Pensacola","Peoria","Perris","Perth Amboy","Petaluma","Pflugerville","Pharr","Philadelphia","Phoenix","Pico Rivera","Pine Bluff","Pine Hills","Pinellas Park","Pittsburg","Pittsburgh","Pittsfield","Placentia","Plainfield","Plano","Plantation","Pleasanton","Plymouth","Pocatello","Poinciana","Pomona","Pompano Beach","Ponce","Pontiac","Port Arthur","Port Charlotte","Port Orange","Port St. Lucie","Portage","Porterville","Portland","Portsmouth","Potomac","Poway","Providence","Provo","Pueblo","Quincy","Racine","Raleigh","Rancho Cordova","Rancho Cucamonga","Rancho Palos Verdes","Rancho Santa Margarita","Rapid City","Reading","Redding","Redlands","Redmond","Redondo Beach","Redwood City","Reno","Renton","Reston","Revere","Rialto","Richardson","Richland","Richmond","Rio Rancho","Riverside","Riverton","Riverview","Roanoke","Rochester","Rochester Hills","Rock Hill","Rockford","Rocklin","Rockville","Rockwall","Rocky Mount","Rogers","Rohnert Park","Rosemead","Roseville","Roswell","Round Rock","Rowland Heights","Rowlett","Royal Oak","Sacramento","Saginaw","Salem","Salina","Salinas","Salt Lake City","Sammamish","San Angelo","San Antonio","San Bernardino","San Bruno","San Buenaventura (Ventura)","San Clemente","San Diego","San Francisco","San Jacinto","San Jose","San Juan","San Leandro","San Luis Obispo","San Marcos","San Mateo","San Rafael","San Ramon","San Tan Valley","Sandy","Sandy Springs","Sanford","Santa Ana","Santa Barbara","Santa Clara","Santa Clarita","Santa Cruz","Santa Fe","Santa Maria","Santa Monica","Santa Rosa","Santee","Sarasota","Savannah","Sayreville","Schaumburg","Schenectady","Scottsdale","Scranton","Seattle","Severn","Shawnee","Sheboygan","Shoreline","Shreveport","Sierra Vista","Silver Spring","Simi Valley","Sioux City","Sioux Falls","Skokie","Smyrna","Somerville","South Bend","South Gate","South Hill","South Jordan","South San Francisco","South Valley","South Whittier","Southaven","Southfield","Sparks","Spokane","Spokane Valley","Spring","Spring Hill","Spring Valley","Springdale","Springfield","St. Charles","St. Clair Shores","St. Cloud","St. George","St. Joseph","St. Louis","St. Louis Park","St. Paul","St. Peters","St. Petersburg","Stamford","State College","Sterling Heights","Stillwater","Stockton","Stratford","Strongsville","Suffolk","Sugar Land","Summerville","Sunnyvale","Sunrise","Sunrise Manor","Surprise","Syracuse","Tacoma","Tallahassee","Tamarac","Tamiami","Tampa","Taunton","Taylor","Taylorsville","Temecula","Tempe","Temple","Terre Haute","Texas City","The Hammocks","The Villages","The Woodlands","Thornton","Thousand Oaks","Tigard","Tinley Park","Titusville","Toledo","Toms River","Tonawanda","Topeka","Torrance","Town 'n' Country","Towson","Tracy","Trenton","Troy","Trujillo Alto","Tuckahoe","Tucson","Tulare","Tulsa","Turlock","Tuscaloosa","Tustin","Twin Falls","Tyler","Union City","University","Upland","Urbana","Urbandale","Utica","Vacaville","Valdosta","Vallejo","Vancouver","Victoria","Victorville","Vineland","Virginia Beach","Visalia","Vista","Waco","Waipahu","Waldorf","Walnut Creek","Waltham","Warner Robins","Warren","Warwick","Washington","Waterbury","Waterloo","Watsonville","Waukegan","Waukesha","Wauwatosa","Wellington","Wesley Chapel","West Allis","West Babylon","West Covina","West Des Moines","West Hartford","West Haven","West Jordan","West Lafayette","West New York","West Palm Beach","West Sacramento","West Seneca","West Valley City","Westfield","Westland","Westminster","Weston","Weymouth Town","Wheaton","White Plains","Whittier","Wichita","Wichita Falls","Wilmington","Wilson","Winston-Salem","Woodbury","Woodland","Worcester","Wylie","Wyoming","Yakima","Yonkers","Yorba Linda","York","Youngstown","Yuba City","Yucaipa","Yuma"],city_pattern:["{{location.city_prefix}} {{person.first_name.generic}}{{location.city_suffix}}","{{location.city_prefix}} {{person.first_name.generic}}","{{person.first_name.generic}}{{location.city_suffix}}","{{person.last_name.generic}}{{location.city_suffix}}","{{location.city_name}}"],city_prefix:["North","East","West","South","New","Lake","Port","Fort"],city_suffix:["town","ton","land","ville","berg","burgh","boro","borough","bury","view","port","mouth","stad","stead","furt","chester","cester","fort","field","haven","side","shire","worth"],country:["Afghanistan","Aland Islands","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bonaire, Sint Eustatius and Saba","Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory (Chagos Archipelago)","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo","Cook Islands","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Curacao","Cyprus","Czechia","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Faroe Islands","Falkland Islands (Malvinas)","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Holy See (Vatican City State)","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Democratic People's Republic of Korea","Republic of Korea","Kuwait","Kyrgyz Republic","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macao","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saint Barthelemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard & Jan Mayen Islands","Sweden","Switzerland","Syrian Arab Republic","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Virgin Islands, British","Virgin Islands, U.S.","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"],county:["Adams County","Calhoun County","Carroll County","Clark County","Clay County","Crawford County","Douglas County","Fayette County","Franklin County","Grant County","Greene County","Hamilton County","Hancock County","Henry County","Jackson County","Jefferson County","Johnson County","Lake County","Lawrence County","Lee County","Lincoln County","Logan County","Madison County","Marion County","Marshall County","Monroe County","Montgomery County","Morgan County","Perry County","Pike County","Polk County","Scott County","Union County","Warren County","Washington County","Wayne County","Avon","Bedfordshire","Berkshire","Borders","Buckinghamshire","Cambridgeshire","Central","Cheshire","Cleveland","Clwyd","Cornwall","County Antrim","County Armagh","County Down","County Fermanagh","County Londonderry","County Tyrone","Cumbria","Derbyshire","Devon","Dorset","Dumfries and Galloway","Durham","Dyfed","East Sussex","Essex","Fife","Gloucestershire","Grampian","Greater Manchester","Gwent","Gwynedd County","Hampshire","Herefordshire","Hertfordshire","Highlands and Islands","Humberside","Isle of Wight","Kent","Lancashire","Leicestershire","Lincolnshire","Lothian","Merseyside","Mid Glamorgan","Norfolk","North Yorkshire","Northamptonshire","Northumberland","Nottinghamshire","Oxfordshire","Powys","Rutland","Shropshire","Somerset","South Glamorgan","South Yorkshire","Staffordshire","Strathclyde","Suffolk","Surrey","Tayside","Tyne and Wear","Warwickshire","West Glamorgan","West Midlands","West Sussex","West Yorkshire","Wiltshire","Worcestershire"],direction:{cardinal:["North","East","South","West"],cardinal_abbr:["N","E","S","W"],ordinal:["Northeast","Northwest","Southeast","Southwest"],ordinal_abbr:["NE","NW","SE","SW"]},postcode:["#####","#####-####"],secondary_address:["Apt. ###","Suite ###"],state:["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],state_abbr:["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"],street_address:{normal:"{{location.buildingNumber}} {{location.street}}",full:"{{location.buildingNumber}} {{location.street}} {{location.secondaryAddress}}"},street_name:["10th Street","11th Street","12th Street","13th Street","14th Street","15th Street","16th Street","1st Avenue","1st Street","2nd Avenue","2nd Street","3rd Avenue","3rd Street","4th Avenue","4th Street","5th Avenue","5th Street","6th Avenue","6th Street","7th Avenue","7th Street","8th Avenue","8th Street","9th Street","A Street","Abbey Road","Adams Avenue","Adams Street","Airport Road","Albany Road","Albert Road","Albion Street","Alexandra Road","Alfred Street","Alma Street","Ash Close","Ash Grove","Ash Road","Ash Street","Aspen Close","Atlantic Avenue","Avenue Road","Back Lane","Baker Street","Balmoral Road","Barn Close","Barton Road","Bath Road","Bath Street","Bay Street","Beach Road","Bedford Road","Beech Close","Beech Drive","Beech Grove","Beech Road","Beechwood Avenue","Bell Lane","Belmont Road","Birch Avenue","Birch Close","Birch Grove","Birch Road","Blind Lane","Bluebell Close","Boundary Road","Bramble Close","Bramley Close","Bridge Road","Bridge Street","Broad Lane","Broad Street","Broadway","Broadway Avenue","Broadway Street","Brook Lane","Brook Road","Brook Street","Brookside","Buckingham Road","Cambridge Street","Canal Street","Castle Close","Castle Lane","Castle Road","Castle Street","Cavendish Road","Cedar Avenue","Cedar Close","Cedar Grove","Cedar Road","Cedar Street","Cemetery Road","Center Avenue","Center Road","Center Street","Central Avenue","Central Street","Chapel Close","Chapel Hill","Chapel Road","Chapel Street","Charles Street","Cherry Close","Cherry Street","Cherry Tree Close","Chester Road","Chestnut Close","Chestnut Drive","Chestnut Grove","Chestnut Street","Church Avenue","Church Close","Church Hill","Church Lane","Church Path","Church Road","Church Street","Church View","Church Walk","Claremont Road","Clarence Road","Clarence Street","Clarendon Road","Clark Street","Clay Lane","Cleveland Street","Cliff Road","Clifton Road","Clinton Street","College Avenue","College Street","Columbia Avenue","Commerce Street","Commercial Road","Commercial Street","Common Lane","Coronation Avenue","Coronation Road","County Line Road","County Road","Court Street","Cow Lane","Crescent Road","Cromwell Road","Cross Lane","Cross Street","Crown Street","Cumberland Street","Dale Street","Dark Lane","Davis Street","Depot Street","Derby Road","Derwent Close","Devonshire Road","Division Street","Douglas Road","Duke Street","E 10th Street","E 11th Street","E 12th Street","E 14th Street","E 1st Street","E 2nd Street","E 3rd Street","E 4th Avenue","E 4th Street","E 5th Street","E 6th Avenue","E 6th Street","E 7th Street","E 8th Street","E 9th Street","E Bridge Street","E Broad Street","E Broadway","E Broadway Street","E Cedar Street","E Center Street","E Central Avenue","E Church Street","E Elm Street","E Franklin Street","E Front Street","E Grand Avenue","E High Street","E Jackson Street","E Jefferson Street","E Main","E Main Street","E Maple Street","E Market Street","E North Street","E Oak Street","E Park Avenue","E Pine Street","E River Road","E South Street","E State Street","E Union Street","E Walnut Street","E Washington Avenue","E Washington Street","E Water Street","East Avenue","East Road","East Street","Edward Street","Elm Close","Elm Grove","Elm Road","Elm Street","Euclid Avenue","Fairfield Road","Farm Close","Ferry Road","Field Close","Field Lane","First Avenue","First Street","Fore Street","Forest Avenue","Forest Road","Fourth Avenue","Franklin Avenue","Franklin Road","Franklin Street","Front Street","Frontage Road","Garden Close","Garden Street","George Street","Gladstone Road","Glebe Close","Gloucester Road","Gordon Road","Gordon Street","Grand Avenue","Grange Avenue","Grange Close","Grange Road","Grant Street","Green Close","Green Lane","Green Street","Greenville Road","Greenway","Greenwood Road","Grove Lane","Grove Road","Grove Street","Hall Lane","Hall Street","Harrison Avenue","Harrison Street","Hawthorn Avenue","Hawthorn Close","Hazel Close","Hazel Grove","Heath Road","Heather Close","Henry Street","Heron Close","Hickory Street","High Road","High Street","Highfield Avenue","Highfield Close","Highfield Road","Highland Avenue","Hill Road","Hill Street","Hillside","Hillside Avenue","Hillside Close","Hillside Road","Holly Close","Honeysuckle Close","Howard Road","Howard Street","Jackson Avenue","Jackson Street","James Street","Jefferson Avenue","Jefferson Street","Johnson Street","Jubilee Close","Juniper Close","Kent Road","Kestrel Close","King Street","King's Road","Kingfisher Close","Kings Highway","Kingsway","Laburnum Grove","Lafayette Street","Lake Avenue","Lake Drive","Lake Road","Lake Street","Lancaster Road","Lansdowne Road","Larch Close","Laurel Close","Lawrence Street","Lee Street","Liberty Street","Lime Grove","Lincoln Avenue","Lincoln Highway","Lincoln Road","Lincoln Street","Locust Street","Lodge Close","Lodge Lane","London Road","Long Lane","Low Road","Madison Avenue","Madison Street","Main","Main Avenue","Main Road","Main Street","Main Street E","Main Street N","Main Street S","Main Street W","Manchester Road","Manor Close","Manor Drive","Manor Gardens","Manor Road","Manor Way","Maple Avenue","Maple Close","Maple Drive","Maple Road","Maple Street","Market Place","Market Square","Market Street","Marlborough Road","Marsh Lane","Martin Luther King Boulevard","Martin Luther King Drive","Martin Luther King Jr Boulevard","Mary Street","Mayfield Road","Meadow Close","Meadow Drive","Meadow Lane","Meadow View","Meadow Way","Memorial Drive","Middle Street","Mill Close","Mill Lane","Mill Road","Mill Street","Milton Road","Milton Street","Monroe Street","Moor Lane","Moss Lane","Mount Pleasant","Mount Street","Mulberry Street","N 1st Street","N 2nd Street","N 3rd Street","N 4th Street","N 5th Street","N 6th Street","N 7th Street","N 8th Street","N 9th Street","N Bridge Street","N Broad Street","N Broadway","N Broadway Street","N Cedar Street","N Center Street","N Central Avenue","N Chestnut Street","N Church Street","N College Street","N Court Street","N Division Street","N East Street","N Elm Street","N Franklin Street","N Front Street","N Harrison Street","N High Street","N Jackson Street","N Jefferson Street","N Lincoln Street","N Locust Street","N Main","N Main Avenue","N Main Street","N Maple Street","N Market Street","N Monroe Street","N Oak Street","N Park Street","N Pearl Street","N Pine Street","N Poplar Street","N Railroad Street","N State Street","N Union Street","N Walnut Street","N Washington Avenue","N Washington Street","N Water Street","Nelson Road","Nelson Street","New Lane","New Road","New Street","Newton Road","Nightingale Close","Norfolk Road","North Avenue","North Lane","North Road","North Street","Northfield Road","Oak Avenue","Oak Drive","Oak Lane","Oak Road","Oak Street","Oakfield Road","Oaklands","Old Lane","Old Military Road","Old Road","Old State Road","Orchard Drive","Orchard Lane","Orchard Road","Orchard Street","Oxford Road","Oxford Street","Park Avenue","Park Crescent","Park Drive","Park Lane","Park Place","Park Road","Park Street","Park View","Parkside","Pearl Street","Pennsylvania Avenue","Pine Close","Pine Grove","Pine Street","Pinfold Lane","Pleasant Street","Poplar Avenue","Poplar Close","Poplar Road","Poplar Street","Post Road","Pound Lane","Princes Street","Princess Street","Priory Close","Priory Road","Prospect Avenue","Prospect Place","Prospect Road","Prospect Street","Quarry Lane","Quarry Road","Queen's Road","Railroad Avenue","Railroad Street","Railway Street","Rectory Close","Rectory Lane","Richmond Close","Richmond Road","Ridge Road","River Road","River Street","Riverside","Riverside Avenue","Riverside Drive","Roman Road","Roman Way","Rowan Close","Russell Street","S 10th Street","S 14th Street","S 1st Avenue","S 1st Street","S 2nd Street","S 3rd Street","S 4th Street","S 5th Street","S 6th Street","S 7th Street","S 8th Street","S 9th Street","S Bridge Street","S Broad Street","S Broadway","S Broadway Street","S Center Street","S Central Avenue","S Chestnut Street","S Church Street","S College Street","S Division Street","S East Street","S Elm Street","S Franklin Street","S Front Street","S Grand Avenue","S High Street","S Jackson Street","S Jefferson Street","S Lincoln Street","S Main","S Main Avenue","S Main Street","S Maple Street","S Market Street","S Mill Street","S Monroe Street","S Oak Street","S Park Street","S Pine Street","S Railroad Street","S State Street","S Union Street","S Walnut Street","S Washington Avenue","S Washington Street","S Water Street","S West Street","Salisbury Road","Sandringham Road","Sandy Lane","School Close","School Lane","School Road","School Street","Second Avenue","Silver Street","Skyline Drive","Smith Street","Somerset Road","South Avenue","South Drive","South Road","South Street","South View","Spring Gardens","Spring Street","Springfield Close","Springfield Road","Spruce Street","St Andrew's Road","St Andrews Close","St George's Road","St John's Road","St Mary's Close","St Mary's Road","Stanley Road","Stanley Street","State Avenue","State Line Road","State Road","State Street","Station Road","Station Street","Stoney Lane","Sycamore Avenue","Sycamore Close","Sycamore Drive","Sycamore Street","Talbot Road","Tennyson Road","The Avenue","The Beeches","The Causeway","The Chase","The Coppice","The Copse","The Crescent","The Croft","The Dell","The Drive","The Fairway","The Glebe","The Grange","The Green","The Grove","The Hawthorns","The Lane","The Laurels","The Limes","The Maltings","The Meadows","The Mews","The Mount","The Oaks","The Orchard","The Oval","The Paddock","The Paddocks","The Poplars","The Ridgeway","The Ridings","The Rise","The Sidings","The Spinney","The Square","The Willows","The Woodlands","Third Avenue","Third Street","Tower Road","Trinity Road","Tudor Close","Union Avenue","Union Street","University Avenue","University Drive","Valley Road","Veterans Memorial Drive","Veterans Memorial Highway","Vicarage Close","Vicarage Lane","Vicarage Road","Victoria Place","Victoria Road","Victoria Street","Vine Street","W 10th Street","W 11th Street","W 12th Street","W 14th Street","W 1st Street","W 2nd Street","W 3rd Street","W 4th Avenue","W 4th Street","W 5th Street","W 6th Avenue","W 6th Street","W 7th Street","W 8th Street","W 9th Street","W Bridge Street","W Broad Street","W Broadway","W Broadway Avenue","W Broadway Street","W Center Street","W Central Avenue","W Chestnut Street","W Church Street","W Division Street","W Elm Street","W Franklin Street","W Front Street","W Grand Avenue","W High Street","W Jackson Street","W Jefferson Street","W Lake Street","W Main","W Main Street","W Maple Street","W Market Street","W Monroe Street","W North Street","W Oak Street","W Park Street","W Pine Street","W River Road","W South Street","W State Street","W Union Street","W Walnut Street","W Washington Avenue","W Washington Street","Walnut Close","Walnut Street","Warren Close","Warren Road","Washington Avenue","Washington Boulevard","Washington Road","Washington Street","Water Lane","Water Street","Waterloo Road","Waterside","Watery Lane","Waverley Road","Well Lane","Wellington Road","Wellington Street","West Avenue","West End","West Lane","West Road","West Street","West View","Western Avenue","Western Road","Westfield Road","Westgate","William Street","Willow Close","Willow Drive","Willow Grove","Willow Road","Willow Street","Windermere Road","Windmill Close","Windmill Lane","Windsor Avenue","Windsor Close","Windsor Drive","Wood Lane","Wood Street","Woodland Close","Woodland Road","Woodlands","Woodlands Avenue","Woodlands Close","Woodlands Road","Woodside","Woodside Road","Wren Close","Yew Tree Close","York Road","York Street"],street_pattern:["{{person.first_name.generic}} {{location.street_suffix}}","{{person.last_name.generic}} {{location.street_suffix}}","{{location.street_name}}"],street_suffix:["Alley","Avenue","Branch","Bridge","Brook","Brooks","Burg","Burgs","Bypass","Camp","Canyon","Cape","Causeway","Center","Centers","Circle","Circles","Cliff","Cliffs","Club","Common","Corner","Corners","Course","Court","Courts","Cove","Coves","Creek","Crescent","Crest","Crossing","Crossroad","Curve","Dale","Dam","Divide","Drive","Drives","Estate","Estates","Expressway","Extension","Extensions","Fall","Falls","Ferry","Field","Fields","Flat","Flats","Ford","Fords","Forest","Forge","Forges","Fork","Forks","Fort","Freeway","Garden","Gardens","Gateway","Glen","Glens","Green","Greens","Grove","Groves","Harbor","Harbors","Haven","Heights","Highway","Hill","Hills","Hollow","Inlet","Island","Islands","Isle","Junction","Junctions","Key","Keys","Knoll","Knolls","Lake","Lakes","Land","Landing","Lane","Light","Lights","Loaf","Lock","Locks","Lodge","Loop","Mall","Manor","Manors","Meadow","Meadows","Mews","Mill","Mills","Mission","Motorway","Mount","Mountain","Mountains","Neck","Orchard","Oval","Overpass","Park","Parks","Parkway","Parkways","Pass","Passage","Path","Pike","Pine","Pines","Place","Plain","Plains","Plaza","Point","Points","Port","Ports","Prairie","Radial","Ramp","Ranch","Rapid","Rapids","Rest","Ridge","Ridges","River","Road","Roads","Route","Row","Rue","Run","Shoal","Shoals","Shore","Shores","Skyway","Spring","Springs","Spur","Spurs","Square","Squares","Station","Stravenue","Stream","Street","Streets","Summit","Terrace","Throughway","Trace","Track","Trafficway","Trail","Tunnel","Turnpike","Underpass","Union","Unions","Valley","Valleys","Via","Viaduct","View","Views","Village","Villages","Ville","Vista","Walk","Walks","Wall","Way","Ways","Well","Wells"]},lorem:{word:["a","ab","abbas","abduco","abeo","abscido","absconditus","absens","absorbeo","absque","abstergo","absum","abundans","abutor","accedo","accendo","acceptus","accommodo","accusamus","accusantium","accusator","acer","acerbitas","acervus","acidus","acies","acquiro","acsi","ad","adamo","adaugeo","addo","adduco","ademptio","adeo","adeptio","adfectus","adfero","adficio","adflicto","adhaero","adhuc","adicio","adimpleo","adinventitias","adipisci","adipiscor","adiuvo","administratio","admiratio","admitto","admoneo","admoveo","adnuo","adopto","adsidue","adstringo","adsuesco","adsum","adulatio","adulescens","aduro","advenio","adversus","advoco","aedificium","aeger","aegre","aegrotatio","aegrus","aeneus","aequitas","aequus","aer","aestas","aestivus","aestus","aetas","aeternus","ager","aggero","aggredior","agnitio","agnosco","ago","ait","aiunt","alias","alienus","alii","alioqui","aliqua","aliquam","aliquid","alius","allatus","alo","alter","altus","alveus","amaritudo","ambitus","ambulo","amet","amicitia","amiculum","amissio","amita","amitto","amo","amor","amoveo","amplexus","amplitudo","amplus","ancilla","angelus","angulus","angustus","animadverto","animi","animus","annus","anser","ante","antea","antepono","antiquus","aperiam","aperio","aperte","apostolus","apparatus","appello","appono","appositus","approbo","apto","aptus","apud","aqua","ara","aranea","arbitro","arbor","arbustum","arca","arceo","arcesso","architecto","arcus","argentum","argumentum","arguo","arma","armarium","aro","ars","articulus","artificiose","arto","arx","ascisco","ascit","asper","asperiores","aspernatur","aspicio","asporto","assentator","assumenda","astrum","at","atavus","ater","atque","atqui","atrocitas","atrox","attero","attollo","attonbitus","auctor","auctus","audacia","audax","audentia","audeo","audio","auditor","aufero","aureus","aurum","aut","autem","autus","auxilium","avaritia","avarus","aveho","averto","baiulus","balbus","barba","bardus","basium","beatae","beatus","bellicus","bellum","bene","beneficium","benevolentia","benigne","bestia","bibo","bis","blandior","blanditiis","bonus","bos","brevis","cado","caecus","caelestis","caelum","calamitas","calcar","calco","calculus","callide","campana","candidus","canis","canonicus","canto","capillus","capio","capitulus","capto","caput","carbo","carcer","careo","caries","cariosus","caritas","carmen","carpo","carus","casso","caste","casus","catena","caterva","cattus","cauda","causa","caute","caveo","cavus","cedo","celebrer","celer","celo","cena","cenaculum","ceno","censura","centum","cerno","cernuus","certe","certus","cervus","cetera","charisma","chirographum","cibo","cibus","cicuta","cilicium","cimentarius","ciminatio","cinis","circumvenio","cito","civis","civitas","clam","clamo","claro","clarus","claudeo","claustrum","clementia","clibanus","coadunatio","coaegresco","coepi","coerceo","cogito","cognatus","cognomen","cogo","cohaero","cohibeo","cohors","colligo","collum","colo","color","coma","combibo","comburo","comedo","comes","cometes","comis","comitatus","commemoro","comminor","commodi","commodo","communis","comparo","compello","complectus","compono","comprehendo","comptus","conatus","concedo","concido","conculco","condico","conduco","confero","confido","conforto","confugo","congregatio","conicio","coniecto","conitor","coniuratio","conor","conqueror","conscendo","consectetur","consequatur","consequuntur","conservo","considero","conspergo","constans","consuasor","contabesco","contego","contigo","contra","conturbo","conventus","convoco","copia","copiose","cornu","corona","corporis","corpus","correptius","corrigo","corroboro","corrumpo","corrupti","coruscus","cotidie","crapula","cras","crastinus","creator","creber","crebro","credo","creo","creptio","crepusculum","cresco","creta","cribro","crinis","cruciamentum","crudelis","cruentus","crur","crustulum","crux","cubicularis","cubitum","cubo","cui","cuius","culpa","culpo","cultellus","cultura","cum","cumque","cunabula","cunae","cunctatio","cupiditas","cupiditate","cupio","cuppedia","cupressus","cur","cura","curatio","curia","curiositas","curis","curo","curriculum","currus","cursim","curso","cursus","curto","curtus","curvo","custodia","damnatio","damno","dapifer","debeo","debilito","debitis","decens","decerno","decet","decimus","decipio","decor","decretum","decumbo","dedecor","dedico","deduco","defaeco","defendo","defero","defessus","defetiscor","deficio","defleo","defluo","defungo","degenero","degero","degusto","deinde","delectatio","delectus","delego","deleniti","deleo","delibero","delicate","delinquo","deludo","demens","demergo","demitto","demo","demonstro","demoror","demulceo","demum","denego","denique","dens","denuncio","denuo","deorsum","depereo","depono","depopulo","deporto","depraedor","deprecator","deprimo","depromo","depulso","deputo","derelinquo","derideo","deripio","deserunt","desidero","desino","desipio","desolo","desparatus","despecto","dicta","dignissimos","distinctio","dolor","dolore","dolorem","doloremque","dolores","doloribus","dolorum","ducimus","ea","eaque","earum","eius","eligendi","enim","eos","error","esse","est","et","eum","eveniet","ex","excepturi","exercitationem","expedita","explicabo","facere","facilis","fuga","fugiat","fugit","harum","hic","id","illo","illum","impedit","in","incidunt","infit","inflammatio","inventore","ipsa","ipsam","ipsum","iste","itaque","iure","iusto","labore","laboriosam","laborum","laudantium","libero","magnam","magni","maiores","maxime","minima","minus","modi","molestiae","molestias","mollitia","nam","natus","necessitatibus","nemo","neque","nesciunt","nihil","nisi","nobis","non","nostrum","nulla","numquam","occaecati","ocer","odio","odit","officia","officiis","omnis","optio","paens","pariatur","patior","patria","patrocinor","patruus","pauci","paulatim","pauper","pax","peccatus","pecco","pecto","pectus","pecus","peior","pel","perferendis","perspiciatis","placeat","porro","possimus","praesentium","provident","quae","quaerat","quam","quas","quasi","qui","quia","quibusdam","quidem","quis","quisquam","quo","quod","quos","ratione","recusandae","reiciendis","rem","repellat","repellendus","reprehenderit","repudiandae","rerum","saepe","sapiente","sed","sequi","similique","sint","sit","socius","sodalitas","sol","soleo","solio","solitudo","solium","sollers","sollicito","solum","solus","soluta","solutio","solvo","somniculosus","somnus","sonitus","sono","sophismata","sopor","sordeo","sortitus","spargo","speciosus","spectaculum","speculum","sperno","spero","spes","spiculum","spiritus","spoliatio","sponte","stabilis","statim","statua","stella","stillicidium","stipes","stips","sto","strenuus","strues","studio","stultus","suadeo","suasoria","sub","subito","subiungo","sublime","subnecto","subseco","substantia","subvenio","succedo","succurro","sufficio","suffoco","suffragium","suggero","sui","sulum","sum","summa","summisse","summopere","sumo","sumptus","sunt","supellex","super","suppellex","supplanto","suppono","supra","surculus","surgo","sursum","suscipio","suscipit","suspendo","sustineo","suus","synagoga","tabella","tabernus","tabesco","tabgo","tabula","taceo","tactus","taedium","talio","talis","talus","tam","tamdiu","tamen","tametsi","tamisium","tamquam","tandem","tantillus","tantum","tardus","tego","temeritas","temperantia","templum","tempora","tempore","temporibus","temptatio","tempus","tenax","tendo","teneo","tener","tenetur","tenuis","tenus","tepesco","tepidus","ter","terebro","teres","terga","tergeo","tergiversatio","tergo","tergum","termes","terminatio","tero","terra","terreo","territo","terror","tersus","tertius","testimonium","texo","textilis","textor","textus","thalassinus","theatrum","theca","thema","theologus","thermae","thesaurus","thesis","thorax","thymbra","thymum","tibi","timidus","timor","titulus","tolero","tollo","tondeo","tonsor","torqueo","torrens","tot","totam","totidem","toties","totus","tracto","trado","traho","trans","tredecim","tremo","trepide","tres","tribuo","tricesimus","triduana","tripudio","tristis","triumphus","trucido","truculenter","tubineus","tui","tum","tumultus","tunc","turba","turbo","turpis","tutamen","tutis","tyrannus","uberrime","ubi","ulciscor","ullam","ullus","ulterius","ultio","ultra","umbra","umerus","umquam","una","unde","undique","universe","unus","urbanus","urbs","uredo","usitas","usque","ustilo","ustulo","usus","ut","uter","uterque","utilis","utique","utor","utpote","utrimque","utroque","utrum","uxor","vaco","vacuus","vado","vae","valde","valens","valeo","valetudo","validus","vallum","vapulus","varietas","varius","vehemens","vel","velit","velociter","velum","velut","venia","veniam","venio","ventito","ventosus","ventus","venustas","ver","verbera","verbum","vere","verecundia","vereor","vergo","veritas","veritatis","vero","versus","verto","verumtamen","verus","vesco","vesica","vesper","vespillo","vester","vestigium","vestrum","vetus","via","vicinus","vicissitudo","victoria","victus","videlicet","video","viduo","vigilo","vigor","vilicus","vilis","vilitas","villa","vinco","vinculum","vindico","vinitor","vinum","vir","virga","virgo","viridis","viriliter","virtus","vis","viscus","vita","vitae","vitiosus","vitium","vito","vivo","vix","vobis","vociferor","voco","volaticus","volo","volubilis","voluntarius","volup","voluptas","voluptate","voluptatem","voluptates","voluptatibus","voluptatum","volutabrum","volva","vomer","vomica","vomito","vorago","vorax","voro","vos","votum","voveo","vox","vulariter","vulgaris","vulgivagus","vulgo","vulgus","vulnero","vulnus","vulpes","vulticulus","xiphias"]},metadata:{title:"English",code:"en",language:"en",endonym:"English",dir:"ltr",script:"Latn"},music:{album:['"Awaken, My Love!"',"(What's The Story) Morning Glory?","- Tragedy +","13 Reasons Why (Season 3)","21st Century Breakdown","30 De Febrero","432 Hz Deep Healing","5-Star","528 Hz Meditation Music","54+1","8 Mile","808s & Heartbreak","9 To 5 And Odd Jobs","A Beautiful Lie","A Day At The Races","A Day Without Rain","A Fever You Can't Sweat Out","A Gangsta's Pain","A Gift & A Curse","A Hard Day's Night","A Head Full Of Dreams","A Kind Of Magic","A Million Ways To Murder","A Moment Apart","A Song For Every Moon","A Thousand Suns","A Winter Romance","ABBA","AI YoungBoy","AJ Tracey","Act One","After Hours","Agent Provocateur","All About You","All I Know So Far: Setlist","All Or Nothing","All Out","All Over The Place","All Stand Together","All The Lost Souls","All The Things I Never Said","All Things Must Pass","Alleen","Alright, Still","Alta Suciedad","America","American Heartbreak","American Teen","And Justice For None","Animal Songs","Another Friday Night","Anything Goes","Ao Vivo Em São Paulo","Ao Vivo No Ibirapuera","Apricot Princess","Aqui E Agora (Ao Vivo)","Arcane League Of Legends","Ardipithecus","Aretha Now","Around The Fur","Arrival","Artist 2.0","As She Pleases","Ascend","Ashlyn","Astro Lounge","At Night, Alone.","At. Long. Last. ASAP","Atlas","Audioslave","Aura","Austin","Awake","Away From The Sun","Ayayay!","Baby On Baby","Back For Everything","Back From The Edge","Back In Black","Back To Black","Back To The Game","Bad","Bahía Ducati","Baila","Barbie The Album","Battleground","Bayou Country","Bcos U Will Never B Free","Be","Be Here Now","Beautiful Mind","Beautiful Thugger Girls","Beautiful Trauma","Beauty And The Beast","Beggars Banquet","Being Funny In A Foreign Language","Berlin Lebt","Berry Is On Top","Best White Noise For Baby Sleep - Loopable With No Fade","Big Baby DRAM","Bigger, Better, Faster, More!","Billy Talent II","Black Star Elephant","Blackout","Blank Face LP","Bleach","Blizzard Of Ozz","Blonde","Blood Sugar Sex Magik","Bloom","Blowin' Your Mind!","Blu Celeste","Blue","Blue Banisters","Blue Hawaii","Blue Neighbourhood","Bluebird Days","Bobby Tarantino","Bobby Tarantino II","Bon Iver","Born Pink","Born To Run","Brand New Eyes","Break The Cycle","Breakfast In America","Breakthrough","Brett Young","Bridge Over Troubled Water","Bright: The Album","Brol","Buds","Buena Vista Social Club","Built On Glass","Bury Me At Makeout Creek","Busyhead","By The Way","CB6","CNCO","California Sunrise","Californication","Call Me Irresponsible","Calm","Camino Palmero","Camp","Caracal","Carbon Fiber Hits","Carnival","Carry On","Cartel De Santa","Certified Lover Boy","Chaaama","Chama Meu Nome","Chapter 1: Snake Oil","Chapter 2: Swamp Savant","Chapter One","Charlie's Angels","Cherry Bomb","Chief","Chocolate Factory","Chosen","Chris Brown","Christina Aguilera","Chromatica","Church","City Of Evil","Clandestino","Clouds","Coco","Collision Course","Colour Vision","Combat Rock","Come Around Sundown","Come Away With Me","Come Home The Kids Miss You","Come What(ever) May","Commando","Common Sense","Communion","Conditions","Confident","Confrontation","Control The Streets, Volume 2","Corinne Bailey Rae","Costello Music","Cottonwood","Covers, Vol. 2","Cozy Tapes Vol. 2: Too Cozy","Crash Talk","Crazy Love","Crazysexycool","Crowded House","Cruisin' With Junior H","Culture","Current Mood","DS2","Dale","Danger Days: The True Lives Of The Fabulous Killjoys","Dangerous Woman","Dangerous: The Double Album","Dark Horse","Day69","Daydream","De Fiesta","De Viaje","DeAnn","Death Race For Love","Delirium","Delta","Demidevil","Depression Cherry","Descendants","Desgenerados Mixtape","Destin","Destiny Fulfilled","Desvelado","Detroit 2","Dex Meets Dexter","Dharma","Die A Legend","Different World","Dig Your Roots","Digital Druglord","Dirt","Disclaimer I / II","Discovery","Disraeli Gears","Disumano","Dizzy Up The Girl","Don't Play That Song","Donda","Donde Quiero Estar","Doo-Wops & Hooligans","Down The Way","Dr. Feelgood","Dream Your Life Away","Dreaming Out Loud","Drip Harder","Drive","Drones","Dropped Outta College","Drowning","Dua Warna Cinta","Dulce Beat","Dusty In Memphis","Dutty Rock","Dying To Live","ENR","East Atlanta Love Letter","Editorial","Edna","El Abayarde","El Amor En Los Tiempos Del Perreo","El Camino","El Comienzo","El Dorado","El Karma","El Mal Querer","El Malo","El Trabajo Es La Suerte","El Viaje De Copperpot","Electric Ladyland","Emotion","En Tus Planes","Endless Summer Vacation","Enter The Wu-Tang (36 Chambers)","Equals (=)","Estrella","Euphoria","Europop","Evermore","Every Kingdom","Everyday Life","Evolve","Expectations","Face Yourself","Facelift","Fallin'","Fancy You","Fantasía","Favourite Worst Nightmare","Fear Of The Dark","Fearless","Feel Something","Feels Like Home","Femme Fatale","Ferxxocalipsis","Fifty Shades Darker","Fifty Shades Freed","Fifty Shades Of Grey","Final (Vol.1)","Finding Beauty In Negative Spaces","Fine Line","First Impressions Of Earth","First Steps","Five Seconds Flat","Folklore","For Emma, Forever Ago","Forajido EP 1","Forever","Forever Young","Formula Of Love: O+T=<3","Free 6lack","Freudian","Frozen II","Full Moon Fever","Funhouse","Funk Wav Bounces Vol.1","Future History","FutureSex/LoveSounds","Fuzzybrain","Gallery","Gangsta's Paradise","Gemini","Gemini Rights","Generationwhy","Get A Grip","Get Up","Gettin' Old","Girl","Gladiator","Glisten","Globalization","Gloria","Glory Days","God's Project","Gold Skies","Golden","Good Evening","Good Thing","Goodbye Yellow Brick Road","Gossip Columns","Got Your Six","Graceland","Graduation","Grand Champ","Grandson, Vol. 1","Green River","Guerra","Ha*Ash Primera Fila - Hecho Realidad","Haiz","Hamilton","Happy Endings","Harry Styles","Hasta La Raíz","Hatful Of Hollow","Head In The Clouds","Heard It In A Past Life","Heart Shaped World","Heartbeat City","Heartbreak On A Full Moon / Cuffing Season - 12 Days Of Christmas","Heaven Or Hell","Heaven knows","Hellbilly Deluxe","Hellboy","Help!","Her Loss","Here Comes The Cowboy","Hey World","High School Musical","High Tide In The Snake's Nest","Historias De Un Capricornio","Hndrxx","Hombres G (Devuélveme A Mi Chica)","Homerun","Homework","Hot Fuss","Hot Pink","Hot Sauce / Hello Future","Hot Space","Hotel Diablo","Houses Of The Holy","How Big, How Blue, How Beautiful","How I'm Feeling","How To Be Human","How To Save A Life","How To: Friend, Love, Freefall","Hozier","Human","Huncho Jack, Jack Huncho","Hunter Hayes","Hysteria","I Am...Sasha Fierce","I Can't Handle Change","I Met You When I Was 18. (The Playlist)","I Never Liked You","I Never Loved A Man The Way I Love You","I See You","I Think You Think Too Much Of Me","I Used To Know Her","I Used To Think I Could Fly","I'm Comin' Over","Ich & Keine Maske","If You Can Believe Your Eyes & Ears","Il Ballo Della Vita","Ill Communication","Imagination & The Misfit Kid","Imagine","Immortalized","In A Perfect World...","In Colour","In My Own Words","In Rainbows","In Return","In The Lonely Hour","Infest","Innuendo","Inter Shibuya - La Mafia","Interstellar","Is This It","It Was Written","It's Not Me, It's You","It's Only Me","Ivory","JackBoys","Jamie","Jazz","Jibrail & Iblis","Jordi","Jordin Sparks","Jose","Just As I Am","Just Cause Y'all Waited 2","Just Like You","Justified","K-12 / After School","K.I.D.S.","K.O.","K.O.B. Live","KG0516","KOD","Kane Brown","Kid A","Kid Krow","Kids See Ghosts","Kids in Love","Kinks (You Really Got Me)","Know-It-All","Konvicted","Kring","LANY","LM5","La Criatura","La Flaca","La Melodia De La Calle","La Revolucion","Lady Lady","Lady Wood","Langit Mong Bughaw","Las Que No Iban A Salir","Last Day Of Summer","Last Year Was Complicated","Layers","Layover","Lazarus","Led Zeppelin","Left Of The Middle","Leftoverture","Legends Never Die","Let's Skip To The Wedding","Let's Talk About Love","Licensed To Ill","Life In Cartoon Motion","Life Thru A Lens","Lifelines","Like..?","Lil Big Pac","Lil Boat","Lil Boat 2","Lil Boat 3.5","Lil Kiwi","Lil Pump","Limon Y Sal","Listen Without Prejudice","Little Voice","Live On Red Barn Radio I & II","Lo Que Andábamos Buscando","Lofi Fruits Music 2021","London Calling","Los Campeones Del Pueblo","Los Extraterrestres","Los Favoritos 2","Lost","Lost In Love","Loud","Love Sick","Love Story","Love Stuff","Love Yourself: Tear","Lover","Luca Brasi 2: Gangsta Grillz","Lust For Life","Luv Is Rage","M!ssundaztood","Ma Fleur","Made In Lagos","Mafia Bidness","Magazines Or Novels","Mainstream Sellout","Majestic","Make It Big","Make Yourself","Making Mirrors","Mamma Mia! Here We Go Again","Man Of The Woods","Manic","Me And My Gang","Meduza","Meet The Orphans","Meet The Woo","Melim","Mellon Collie And The Infinite Sadness","Melly vs. Melvin","Memories...Do Not Open","Menagerie","Midnights","Minecraft - Volume Alpha","Minutes To Midnight","Mix Pa Llorar En Tu Cuarto","Modo Avión","Monkey Business","Mono.","Montana","Montevallo","Moosetape","Morning View","Motivan2","Moving Pictures","Mr. Davis","Mr. Misunderstood","Mulan","Mura Masa","Music From The Edge Of Heaven","Music Of The Sun","My House","My Kinda Party","My Krazy Life","My Liver Will Handle What My Heart Can't","My Moment","My Own Lane","My Turn","My Worlds","Na Praia (Ao Vivo)","Nakamura","Nation Of Two","Navegando","Need You Now","Neon Future III","Neotheater","Never Trust A Happy Song","New English","News Of The World","Nicole","Night & Day","Nimmerland","Nimrod","Nine Track Mind","No Angel","No Me Pidas Perdón","No More Drama","No Protection","No Strings Attached","No Time To Die","Nobody Is Listening","Non Stop Erotic Cabaret","Non-Fiction","Northsbest","Nostalgia","Nostalgia, Ultra","Notes On A Conditional Form","Now Or Never","O Embaixador (Ao Vivo)","O My Heart","OK Computer","Ocean","Ocean Avenue","Ocean Eyes","Odisea","Oh My My","Oh, What A Life","On The 6","One In A Million","One More Light","One Of These Nights","Open Up And Say...Ahh!","Ordinary Man","Origins","Out Of The Blue","Over It","OzuTochi","PTSD","Pa Las Baby's Y Belikeada","Pa Que Hablen","Pa' Luego Es Tarde","Pa' Otro La 'O","Pablo Honey","Pain Is Love","Pain Is Temporary","Painting Pictures","Palmen Aus Plastik 2","Para Mi Ex","Para Siempre","Partners In Crime","Pawn Shop","Pegasus / Neon Shark VS Pegasus","Pet Sounds","Piece By Piece","Pier Pressure","Pineapple Sunrise","Piseiro 2020 Ao Vivo","Planet Pit","Plans","Play Deep","Playa Saturno","Por Primera Vez","Por Vida","Positions","Post Human: Survival Horror","Poster Girl","Prazer, Eu Sou Ferrugem (Ao Vivo)","Pretty Girls Like Trap Music","Pretty. Odd.","Prince Royce","Prisma","Prometo","Providence","Puberty 2","Punisher","Purgatory","Purple Rain","Que Bendición","Queen Of The Clouds","Quiero Volver","R&G (Rhythm & Gangsta): The Masterpiece","Raise!","Ransom 2","Rapunzel","Rare","Re Mida","Ready To Die","Realer","Rebelde","Reclassified","Recovery","Recuerden Mi Estilo","Reggatta De Blanc","Regulate… G Funk Era","Reik","Reise, Reise","Relapse","Relaxing Piano Lullabies And Natural Sleep Aid For Baby Sleep Music","Religiously. The Album.","Replay","Results May Vary","Revenge","Revolve","Revolver","Ricky Martin","Rien 100 Rien","Ripcord","Rise And Fall, Rage And Grace","Rise Of An Empire","Robin Hood: Prince Of Thieves","Rock N Roll Jesus","Romance","Romances","Ronan","Royal Blood","Rumours","Sad Boyz 4 Life II","San Lucas","Santana World","Saturation III","Sauce Boyz","Savage Mode","Saxobeats","Scarlet","Schwarzes Herz","Seal The Deal & Let's Boogie","Section.80","Segundo Romance","Sehnsucht","Shake The Snow Globe","Shang-Chi And The Legend Of The Ten Rings: The Album","Sheer Heart Attack","Shiesty Season","Shock Value","Shoot For The Stars, Aim For The Moon","Signed Sealed And Delivered","Signos","Silent Alarm","Simplemente Gracias","Sin Bandera","Sing Me A Lullaby, My Sweet Temptation","Sinner","Sirio","Sit Still, Look Pretty","Skin","Slowhand","Smash","Smithereens","Snow Cougar","Social Cues","Some Girls","Song Hits From Holiday Inn","Songs For Dads","Songs For The Deaf","Songs For You, Truths For Me","Songs In The Key Of Life","Souled Out","Sounds Of Silence","Soy Como Quiero Ser","Speak Now","Speak Your Mind","Speakerboxxx/The Love Below","Spider-Man: Into The Spider-Verse","Split Decision","Square Up","SremmLife","Starboy","Stay +","Stay Dangerous","Staying At Tamara's","Steppenwolf","Stick Season","Still Bill","Straight Outta Compton","Strange Trails","Stronger","Suavemente","Sublime","Suck It and See","Sucker","Sueños","Sugar","Summer Forever","Summer,","Sunset Season","Sunshine On Leith","Surfer Rosa","Sweet Talker","SweetSexySavage","System Of A Down","TA13OO","Talk That Talk","Talking Heads: 77","Tangled Up","Tango In The Night","Taxi Driver","Taylor Swift","Tell Me It's Real","Ten","Ten Summoner's Tales","Terra Sem Cep (Ao Vivo)","Terral","Testing","Tha Carter III","Thank Me Later","That's Christmas To Me","The Academy","The Adventures Of Bobby Ray","The Album","The Andy Williams Christmas Album","The Aviary","The Balcony","The Battle Of Los Angeles","The Beatles (White Album)","The Beginning","The Better Life","The Big Day","The Book","The Breakfast Club","The Cars","The Colour And The Shape","The Death Of Peace Of Mind","The Diary Of Alicia Keys","The Documentary","The Emancipation Of Mimi","The Eminem Show","The End Of Everything","The Final Countdown","The Forever Story","The Foundation","The Goat","The Golden Child","The Good Parts","The Greatest Showman: Reimagined","The Green Trip","The Hardest Love","The Head And The Heart","The Human Condition","The Infamous","The Lady Killer","The Last Don II","The Lion King","The Lockdown Sessions","The London Sessions","The Lord Of The Rings: The Fellowship Of The Ring","The Lost Boy","The Magic Of Christmas / The Christmas Song","The Marshall Mathers LP","The Martin Garrix Collection","The Melodic Blue","The Mockingbird & The Crow","The Pains Of Growing","The Papercut Chronicles","The Perfect Luv Tape","The Pinkprint","The Predator","The Queen Is Dead","The ReVe Festival: Finale","The Rise And Fall Of Ziggy Stardust And The Spiders From Mars","The Rising Tied","The River","The Stone Roses","The Story Of Us","The Stranger","The Sufferer & The Witness","The Sun's Tirade","The Temptations Sing Smokey","The Time Of Our Lives","The Way It Is","The Wonderful World Of Sam Cooke","The Writing's On The Wall","The Young And The Hopeless","Therapy","Therapy Session","There Is More (Live)","There Is Nothing Left To Lose","These Things Happen","Third Eye Blind","This Is Me...Then","This Unruly Mess I've Made","Threat to Survival","Thrill Of The Chase","Time","Timelezz","To Let A Good Thing Die","To Pimp A Butterfly","Toast To Our Differences","Todos Os Cantos, Vol. 1 (Ao Vivo)","Too Hard","Torches X","Total Xanarchy","Toto IV","Toulouse Street","Tourist History","Toxicity","Tragic Kingdom","Tranquility Base Hotel & Casino","Traumazine","Traveler","Tres Hombres","Trip At Knight","Tron: Legacy","True Blue","True Colors","Trustfall","Tu Veneno Mortal","Tudo Em Paz","Ubuntu","Ugly Is Beautiful","Ultra 2021","Una Mattina","Unbroken","Uncovered","Under Pressure","Unsponsored Content","Unstoppable","Unwritten","Urban Flora","Urban Hymns","Use Your Illusion I","Veneer","Versions Of Me","Vibes","Vice Versa","Vices & Virtues","Victory","Vida","Viejo Marihuano","Visualízate","Walk Away","Walk Me Home...","Watch The Throne","Wave","We Broke The Rules","We Love You Tecca","We Love You Tecca 2","Weezer (Green Album)","Welcome To The Madhouse","Westlife","What A Time To Be Alive","What Do You Think About The Car?","What Is Love?","What Makes You Country","What Separates Me From You","What You See Is What You Get / What You See Ain't Always What You Get","When It's Dark Out","When We All Fall Asleep, Where Do We Go?","Where The Light Is","While The World Was Burning","White Pony","Whitney","Who Really Cares","Who You Are","Who's Next","Wide Open","Wilder Mind","Wildfire","Willy And The Poor Boys","Wings / You Never Walk Alone","Wish","Wish You Were Here","Without Warning","Wonder","X&Y","XOXO","Y Que Quede Claro","YBN: The Mixtape","Yo Creo","You Will Regret","Youngblood","Younger Now","Youth"],artist:["$NOT","$uicideboy$","(G)I-DLE","*NSYNC","2 Chainz","21 Savage","6LACK","? & The Mysterians","A Boogie Wit da Hoodie","A Taste of Honey","A Tribe Called Quest","A-Ha","ABBA","AC/DC","AJ Tracey","ATEEZ","Ace of Base","Adele","Ado","Aerosmith","Agust D","Aitana","Al Dexter & his Troopers","Al Green","Al Jolson","Al Martino","Alan Jackson","Alannah Myles","Alec Benjamin","Alejandro Sanz","Alesso","Alfredo Olivas","Ali Gatie","Alice In Chains","Alina Baraz","All Time Low","All-4-One","All-American Rejects","Alok","America","American Quartet","Amii Stewart","Amitabh Bhattacharya","Ana Castela","Anderson .Paak","Andy Grammer","Angus & Julia Stone","Anirudh Ravichander","Anita Ward","Anitta","Anton Karas","Anuel AA","Arcade Fire","Archie Bell & The Drells","Archies","Aretha Franklin","Arizona Zervas","Armin van Buuren","Arthur Conley","Artie Shaw","Asake","Asees Kaur","Association","Atif Aslam","Audioslave","Aventura","Avril Lavigne","Aya Nakamura","B J Thomas","B.o.B","BLACKPINK","BONES","BROCKHAMPTON","BTS","Baby Keem","Bachman-Turner Overdrive","Backstreet Boys","Bad Bunny","Badshah","Bailey Zimmerman","Banda El Recodo","Barbra Streisand","Barry White","Bazzi","Bebe Rexha","Becky G","Becky Hill","Bee Gees","Ben Bernie","Ben Howard","Ben Selvin","Berlin","Bessie Smith","Bethel Music","Bette Midler","Beyonce","Bibi Blocksberg","Bibi und Tina","BigXthaPlug","Bill Doggett","Bill Haley & his Comets","Bill Withers","Billy Davis Jr","Billy Joel","Billy Paul","Billy Preston","Billy Swan","Birdy","Bizarrap","Blake Shelton","Blur","Bob Marley & The Wailers","Bob Seger","Bobby Darin","Bobby Lewis","Bobby McFerrin","Bobby Vinton","Boney M.","Bonez MC","Bonnie Tyler","Booba","Boston","BoyWithUke","Boyce Avenue","Bradley Cooper","Bread","Brent Faiyaz","Brett Young","Bring Me The Horizon","Britney Spears","Brooks & Dunn","Bruce Channel","Bruno & Marrone","Bryan Adams","Bryce Vine","Buddy Holly","Burna Boy","C. Tangana","CKay","CRO","Camilo","Capital Bra","Captain & Tennille","Cardi B","Carin Leon","Carlos Vives","Carly Simon","Carpenters","Cavetown","Celine Dion","Central Cee","Chaka Khan","Champs","Charlie Rich","Chayanne","Cheat Codes","Cher","Chic","Chicago","Chris Brown","Chris Isaak","Chris Young","Christina Aguilera","Christina Perri","Christopher Cross","Chuck Berry","Ciara","Cigarettes After Sex","Cliff Edwards (Ukelele Ike)","Cody Johnson","Colbie Caillat","Colby O'Donis","Cole Swindell","Coleman Hawkins","Contours","Coolio","Count Basie","Cris Mj","Culture Club","Cyndi Lauper","D-Block Europe","DAY6","DJ Khaled","DJ Luian","DJ Nelson","DMX","DNCE","DaVido","Dadju","Daft Punk","Dan + Shay","Daniel Powter","Danny Ocean","Darius Rucker","Dave","David Bowie","David Guetta","Daya","Dean Martin","Deee-Lite","Deep Purple","Deftones","Demi Lovato","Dennis Lloyd","Denzel Curry","Dermot Kennedy","Desiigner","Devo","Dewa 19","Dexys Midnight Runners","Diddy","Dido","Die drei !!!","Diego & Victor Hugo","Diljit Dosanjh","Dimitri Vegas & Like Mike","Dinah Shore","Dionne Warwick","Dire Straits","Disclosure","Dixie Cups","Doja Cat","Dolly Parton","Don Diablo","Don Henley","Don McLean","Don Omar","Donna Summer","Donovan","Dr. Dre","Drake","Dreamville","Dua Lipa","EMF","ENHYPEN","Earth, Wind & Fire","Ed Sheeran","Eddie Cantor","Eddie Cochran","Eddy Howard","Edgar Winter Group","Edwin Hawkins Singers","Edwin Starr","El Alfa","Eladio Carrion","Electric Light Orchestra","Elevation Worship","Ella Henderson","Ellie Goulding","Elton John","Elvis Presley","Empire of the Sun","En Vogue","Enrique Iglesias","Eslabon Armado","Ethel Waters","Etta James","Evanescence","Exile","Extreme","Faith Hill","Fall Out Boy","Fanny Brice","Farruko","Fats Domino","Fats Waller","Feid","Felix Jaehn","Fergie","Fetty Wap","Fiersa Besari","Fifth Harmony","Fine Young Cannibals","Five Finger Death Punch","Fleetwood Mac","Flo-Rida","Florence + The Machine","Flume","Foo Fighters","Foreigner","Foster The People","Four Aces","Frank Ocean","Frank Sinatra","Frankie Avalon","Frankie Valli","Fred Astaire","Freda Payne","Freddie Dredd","Freddy Fender","French Montana","Fuerza Regida","Fujii Kaze","Future","G-Eazy","Garfunkel and Oates","Gary Lewis & The Playboys","Gary Numan","Gene Autry","Gene Chandler","Gene Vincent","George Michael","George Strait","Gera MX","Ghost","Ghostemane","Gigi D'Agostino","Gladys Knight & The Pips","Glass Animals","Glee Cast","Gloria Gaynor","Godsmack","Gorillaz","Gotye","Grand Funk Railroad","Green Day","Grouplove","Grupo Firme","Grupo Marca Registrada","Gryffin","Gucci Mane","Guess Who","Gunna","Gusttavo Lima","Guy Mitchell","Gwen Stefani","Gzuz","H.E.R.","HARDY","Hailee Steinfeld","Halsey","Hans Zimmer","Harris Jayaraj","Harry Chapin","Harry James","Harry Nilsson","Harry Styles","Hayley Williams","Herb Alpert","Herman's Hermits","Hillsong UNITED","Hillsong Worship","Hollywood Undead","Honey Cone","Hoobastank","Hues Corporation","I Prevail","ITZY","IVE","Ice Cube","Ice Spice","Iggy Azalea","Imagine Dragons","Incubus","Internet Money","Isaac Hayes","J Geils Band","J. Cole","JAY-Z","JJ Lin","JP Saxe","JVKE","Jack Harlow","Jack Johnson","Jackie Wilson","Jacquees","James Arthur","James Brown","James TW","James Taylor","Jamie Foxx","Janet Jackson","Janis Joplin","Jason Aldean","Jason Mraz","Jay Chou","Jay Sean","Jay Wheeler","Jaymes Young","Jean Knight","Jeezy","Jennifer Lopez","Jennifer Warnes","Jeremih","Jeremy Zucker","Jerry Lee Lewis","Jerry Murad's Harmonicats","Jess Glynne","Jessie J","Jewel","Jimi Hendrix","Jimin","Jimmie Rodgers","Jimmy Dean","Jo Stafford","Joan Jett & The Blackhearts","Joao Gilberto","Joel Corry","John Fred & The Playboy Band","John Legend","John Mayer","John Williams","Johnnie Ray","Johnnie Taylor","Johnny Cash","Johnny Horton","Johnny Mathis","Johnny Mercer","Johnny Nash","Joji","Jon Bellion","Jonas Blue","Jonas Brothers","Joni James","Jorja Smith","Juan Gabriel","Juan Luis Guerra 4.40","Juanes","Juice Newton","Julia Michaels","Justin Bieber","Justin Quiles","KALEO","KAROL G","KAYTRANADA","KK","KSI","KYLE","Kacey Musgraves","Kane Brown","Kanye West","Karan Aujla","Kate Smith","Katy Perry","Kay Kyser","Ke$ha","Kehlani","Kelly Clarkson","Kenny Chesney","Kenny Loggins","Kenny Rogers","Kenshi Yonezu","Kenya Grace","Kevin Gates","Key Glock","Khalid","Kim Carnes","Kim Petras","Kimbra","Kina","King Gnu","Kings of Leon","Kingsmen","Kitty Kallen","Kodak Black","Kodaline","Kollegah","Kool & The Gang","Kungs","Kygo","Kylie Minogue","LE SSERAFIM","LISA","LMFAO","LUDMILLA","La Adictiva Banda San José de Mesillas","La Oreja de Van Gogh","Labrinth","Lady Antebellum","Lady GaGa","Lainey Wilson","Lana Del Rey","Latto","Lauryn Hill","Lauv","League of Legends","Lee Brice","Leon Bridges","Leona Lewis","Lesley Gore","Leslie Odom Jr.","Liam Payne","Lifehouse","Lil Baby","Lil Dicky","Lil Durk","Lil Mosey","Lil Nas X","Lil Pump","Lil Skies","Lil Tjay","Lil Uzi Vert","Lil Yachty","Lil' Kim","Lil' Wayne","Lin-Manuel Miranda","Linkin Park","Lionel Richie","Lipps Inc","Lisa Loeb","Little Peggy March","Little Richard","Lofi Fruits Music","Lord Huron","Los Del Rio","Los Dos Carnales","Los Lobos","Los Temerarios","Los Tigres Del Norte","Los Tucanes De Tijuana","Lou Reed","Loud Luxury","Louis Jordan","Louis Tomlinson","Love Unlimited","Lovin' Spoonful","Luan Santana","Luciano","Luis Miguel","Luis R Conriquez","Lulu","Lunay","Lupe Fiasco","M","MAX","MC Hammer","MC Ryan SP","MKTO","Mabel","Machine Gun Kelly","Madison Beer","Madonna","Mahalini","Major Lazer","Mambo Kingz","Maneskin","Marco Antonio Solís","Margaret Whiting","Maria Becerra","Mario","Mario Lanza","Mark Ronson","Maroon 5","Marshmello","Martin Garrix","Mary Ford","Mary J Blige","Mary J. Blige","Mary Wells","Matoma","Mau y Ricky","Meek Mill","Megadeth","Melanie","Melanie Martinez","Melendi","Men At Work","Metro Boomin","Michael Bublé","Michael Jackson","Michael McDonald","Michael Sembello","Miguel","Mike Posner","Miley Cyrus","Milky Chance","Minnie Riperton","Miracle Tones","Miranda Lambert","Mohit Chauhan","Mon Laferte","Moneybagg Yo","Monsta X","Mora","Morad","Morat","Mother Mother","Motley Crue","Ms. Lauryn Hill","Mumford & Sons","Muse","Mya","Myke Towers","NCT 127","NCT DREAM","NEFFEX","Nadin Amizah","Nancy Sinatra","Nat King Cole","Nate Smith","Natti Natasha","Nayer","Neil Diamond","Neil Sedaka","Nekfeu","Nelly","New Vaudeville Band","Next","Nickelback","Nicki Minaj","Nicki Nicole","Nicky Jam","Nina Simone","Ninho","Nipsey Hussle","Nirvana","Niska","No Doubt","Norah Jones","Normani","OMI","ONE OK ROCK","Oasis","Official HIGE DANdism","Offset","Old Dominion","Oliver Heldens","Olivia Rodrigo","Omah Lay","One Direction","Otis Redding","OutKast","Owl City","P Diddy","P!nk","PLK","PNL","Pamungkas","Passenger","Pat Boone","Patsy Cline","Patti LaBelle","Patti Page","Paul & Paula","Paul Revere & the Raiders","Paul Robeson","Paul Russell","Paul Whiteman","Paula Abdul","Peaches & Herb","Pearl Jam","Pee Wee Hunt","Pee Wee King","Pentatonix","Percy Faith","Percy Sledge","Peso Pluma","Peter Cetera","Peter Gabriel","Peter, Paul & Mary","Pharrell Williams","Pierce The Veil","Pineapple StormTv","Pink Floyd","Pink Sweat$","Piso 21","Pitbull","Plan B","Player","Polo G","Pop Smoke","Portugal. The Man","Pouya","Prince","Prince Royce","Pusha T","Quality Control","Queen","Quinn XCII","R. Kelly","RAF Camora","RAYE","REM","REO Speedwagon","Radiohead","Rag'n'Bone Man","Rage Against The Machine","Rahat Fateh Ali Khan","Rainbow Kitten Surprise","Rammstein","Rauw Alejandro","Ray Charles","Ray Parker Jr","Ray Stevens","Red Foley","Red Hot Chili Peppers","Red Velvet","Regard","Regina Belle","Reik","Rels B","Rema","Ricardo Arjona","Rich The Kid","Rick Astley","Rick Dees & his Cast of Idiots","Rick Ross","Rick Springfield","Ricky Martin","Ricky Nelson","Rihanna","Rita Ora","Ritchie Valens","Rizky Febian","Rob Thomas","Roberta Flack","Robin Schulz","Robin Thicke","Rod Stewart","Rod Wave","Roddy Ricch","Roger Miller","Romeo Santos","Rosemary Clooney","Roxette","Roy Acuff","Roy Orbison","Rudimental","Ruel","Ruth B.","Ryan Lewis","SCH","SEVENTEEN","SWV","Sabaton","Sabrina Carpenter","Sachet Tandon","Sachin-Jigar","Sade","Sam Cooke","Sam Feldt","Sam Hunt","Sam Smith","Sam The Sham & The Pharaohs","Sammy Davis Jr","Sammy Kaye","Santana","Sasha Alex Sloan","Savage Garden","Saweetie","Scorpions","Sean Kingston","Sean Paul","Sebastian Yatra","Sech","Seeb","Sezen Aksu","Sfera Ebbasta","Shaggy","Shania Twain","Shawn Mendes","Sheena Easton","Shinedown","Shubh","Sia","Sid Sriram","Sidhu Moose Wala","Silk","Silver Convention","Simon & Garfunkel","Sinead O'Connor","Sir Mix-a-Lot","Sister Sledge","Ski Mask The Slump God","Skillet","Skrillex","Sleeping At Last","Smokey Robinson","Snoop Dogg","Snow Patrol","Soda Stereo","Sonu Nigam","Sophie Ellis-Bextor","Spencer Davis Group","Spice Girls","Stan Getz","Starland Vocal Band","Stephen Sanchez","Steve Aoki","Steve Lacy","Steve Winwood","Stevie B","Sting","Stormzy","Strawberry Alarm Clock","Stray Kids","Stromae","Sublime","Sum 41","Summer Walker","Supertramp","Survivor","Swedish House Mafia","System Of A Down","T-Pain","T.I.","TAEYEON","TKKG","TLC","TOMORROW X TOGETHER","TOTO","TWICE","Tag Team","Tainy","Tammi Terrell","Tanishk Bagchi","Tate McRae","Taylor Swift","Tears For Fears","Tems","Tennessee Ernie Ford","Terence Trent D'Arby","Teresa Brewer","Terry Jacks","The Ames Brothers","The Animals","The B52s","The Bangles","The Beatles","The Black Eyed Peas","The Black Keys","The Box Tops","The Chainsmokers","The Chiffons","The Chordettes","The Clash","The Coasters","The Commodores","The Cowsills","The Cranberries","The Crew-Cuts","The Cure","The Detroit Spinners","The Diamonds","The Doobie Brothers","The Doors","The Drifters","The Emotions","The Eurythmics","The Fireballs","The Flamingos","The Foundations","The Four Seasons","The Fray","The Game","The Go Gos","The Goo Goo Dolls","The Head And The Heart","The Hollies","The Ink Spots","The Isley Brothers","The Jackson 5","The Kid LAROI","The Killers","The Kingston Trio","The Kooks","The Lemon Pipers","The Living Tombstone","The Lumineers","The Mamas & The Papas","The Marvelettes","The McCoys","The Mills Brothers","The Miracles","The Monkees","The Moody Blues","The National","The Neighbourhood","The Notorious B.I.G.","The O'Jays","The Offspring","The Osmonds","The Partridge Family","The Penguins","The Pet Shop Boys","The Platters","The Righteous Brothers","The Rolling Stones","The Ronettes","The Score","The Script","The Seekers","The Shangri-Las","The Smashing Pumpkins","The Staple Singers","The Strokes","The Supremes","The Temptations","The Turtles","The Vamps","The Verve","The Village People","The Weavers","The White Stripes","The Young Rascals","The Zombies","Thelma Houston","Thomas Rhett","Three Days Grace","Three Dog Night","Three Man Down","Timbaland","Timmy Trumpet","Toby Keith","Tom Jones","Tom Petty and the Heartbreakers","Tommy Dorsey","Tommy Edwards","Tommy James & the Shondells","Tone Loc","Toni Braxton","Topic","Tory Lanez","Tove Lo","Trevor Daniel","Trey Songz","Trippie Redd","Trueno","Tulsi Kumar","Tulus","Twenty One Pilots","Two Feet","Ty Dolla $ign","Tyga","Tyler Hubbard","U2","UB40","UZI","Ufo361","Upchurch","V","Vampire Weekend","Van McCoy","Van Morrison","Vance Joy","Vanessa Carlton","Vanessa Williams","Vera Lynn","Vernon Dalhart","Vicente Fernandez","Vishal-Shekhar","Volbeat","WILLOW","Wale","Wallows","Weezer","Wham!","Whitney Houston","Why Don't We","Wilbert Harrison","Wilson Phillips","Wiz Khalifa","Woody Guthrie","Wyclef Jean","XXXTENTACION","Xavi","YG","YNW Melly","YOASOBI","Yandel","Years & Years","Yeat","Yo Gotti","Young Dolph","Young Miko","Young Thug","YoungBoy Never Broke Again","Yung Gravy","Yuuri","Yuvan Shankar Raja","ZAYN","ZZ Top","Zac Brown Band","Zach Bryan","Zara Larsson","aespa","benny blanco","blink-182","d4vd","deadmau5","girl in red","gnash","iann dior","will.i.am"],genre:["Acid House","Acid Jazz","Acid Rock","Acoustic","Acoustic Blues","Afro-Pop","Afrobeat","Alt-Rock","Alternative","Ambient","American Trad Rock","Americana","Anime","Arena Rock","Art-Rock","Avant-Garde","Avant-Punk","Baladas y Boleros","Barbershop","Baroque","Bebop","Big Band","Black Metal","Blue Note","Bluegrass","Blues","Boogaloo","Bop","Bossa Nova","Bounce","Brazilian Funk","Breakbeat","Britpop","CCM","Cajun","Cantopop","Celtic","Celtic Folk","Chamber Music","Chant","Chanukah","Chicago Blues","Chicago House","Chicano","Children’s Music","Chill","Choral","Christian","Christmas","Classical","Club","College Rock","Conjunto","Cool Jazz","Country","Crunk","Dance","Dancehall","Death Metal","Deep House","Delta Blues","Detroit Techno","Dirty South","Disco","Disney","Dixieland","Doo-wop","Downtempo","Dream Pop","Drill","Drinking Songs","Drone","Drum'n'bass","Dub","Dubstep","EDM","Early Music","East Coast Rap","Easter","Easy Listening","Eclectic","Electric Blues","Electro","Electronic","Electronica","Emo","Enka","Environmental","Ethio-jazz","Experimental","Experimental Rock","Flamenco","Folk","Folk-Rock","Forro","French Pop","Funk","Fusion","Gangsta Rap","Garage","German Folk","German Pop","Glam Rock","Gospel","Goth","Grime","Grindcore","Groove","Grunge","Hair Metal","Halloween","Happy","Hard Bop","Hard Dance","Hard Rock","Hardcore","Hardcore Punk","Hardcore Rap","Hardstyle","Healing","Heavy Metal","High Classical","Hip Hop","Holiday","Honky Tonk","House","IDM","Impressionist","Indie","Industrial","Instrumental","J-Dance","J-Idol","J-Pop","J-Punk","J-Rock","J-Ska","J-Synth","Jackin House","Jam Bands","Japanese Pop","Jazz","Jungle","K-Pop","Karaoke","Kayokyoku","Kids","Kitsch","Klezmer","Krautrock","Latin","Latin Jazz","Latin Rap","Local","Lounge","Lullabies","MPB","Mainstream Jazz","Malay","Mandopop","March","Mariachi","Mawwal","Medieval","Meditation","Metal","Metalcore","Minimal Techno","Minimalism","Modern","Motown","Mugham","Musicals","Musique Concrète","Nature","Neo-Soul","Nerdcore","New Acoustic","New Age","New Mex","New Wave","No Wave","Noise","Nordic","Novelty","OPM","Oi!","Old School Rap","Opera","Orchestral","Original Score","Outlaw Country","Pagode","Party","Piano","Polka","Pop","Pop Film","Pop Latino","Post Dubstep","Power Pop","Praise & Worship","Progressive House","Progressive Rock","Proto-punk","Psych Rock","Psychedelic","Punk","Punk Rock","Qawwali","Quiet Storm","R&B","Ragtime","Rainy Day","Rap","Reggae","Reggaeton","Regional Mexicano","Relaxation","Renaissance","Retro","Rock","Rockabilly","Rocksteady","Romance","Romantic","Roots Reggae","Roots Rock","SKA","Sad","Salsa","Samba","Second Line","Sertanejo","Shaabi","Shoegaze","Sleep","Smooth Jazz","Soft Rock","Soul","Soundtrack","Southern Gospel","Southern Rock","Space Rock","Stage And Screen","Steampunk","Summer","Surf","Swamp Pop","Swing","Synth Pop","Tango","Techno","Teen Pop","Tejano","Tex-Mex","Thanksgiving","Traditional","Trance","Trip Hop","Tropical","Underground Rap","Urban","Urban Cowboy","West Coast Rap","Western Swing","World","Worldbeat","Zydeco"],song_name:["(Everything I Do) I Do it For You","(Ghost) Riders in the Sky","(I Can't Get No) Satisfaction","(I've Got a Gal In) Kalamazoo","(I've Had) the Time of My Life","(It's No) Sin","(Just Like) Starting Over","(Let Me Be Your) Teddy Bear","(Put Another Nickel In) Music! Music! Music!","(Sexual) Healing","(Sittin' On) the Dock of the Bay","(They Long to Be) Close to You","(You Keep Me) Hangin' On","(You're My) Soul & Inspiration","(Your Love Keeps Lifting Me) Higher & Higher","12th Street Rag","1999","19th Nervous Breakdown","50 Ways to Leave Your Lover","9 to 5","96 Tears","A Boy Named Sue","A Hard Day's Night","A String of Pearls","A Thousand Miles","A Tree in the Meadow","A Whiter Shade of Pale","A Whole New World (Aladdin's Theme)","A Woman in Love","A-Tisket A-Tasket","ABC","Abracadabra","Ac-cent-tchu-ate the Positive","Addicted to Love","After You've Gone","Afternoon Delight","Again","Against All Odds (Take a Look At Me Now)","Ain't Misbehavin'","Ain't No Mountain High Enough","Ain't No Sunshine","Ain't That a Shame","Airplanes","All Along the Watchtower","All I Have to Do is Dream","All I Wanna Do","All My Lovin' (You're Never Gonna Get It)","All Night Long (All Night)","All Out of Love","All Shook Up","All You Need is Love","Alone","Alone Again (Naturally)","Always On My Mind","American Pie","American Woman","Angie","Another Brick in the Wall (part 2)","Another Day in Paradise","Another Night","Another One Bites the Dust","Apologize","April Showers","Aquarius/Let The Sunshine In","Are You Lonesome Tonight?","Arthur's Theme (Best That You Can Do)","As Time Goes By","At Last","At the Hop","Auf Wiederseh'n Sweetheart","Baby Baby","Baby Come Back","Baby Got Back","Baby Love","Baby One More Time","Bad","Bad Day","Bad Girls","Bad Moon Rising","Bad Romance","Baker Street","Ball of Confusion (That's What the World is Today)","Ballad of the Green Berets","Ballerina","Band On the Run","Band of Gold","Battle of New Orleans","Be Bop a Lula","Be My Baby","Be My Love","Beat It","Beautiful Day","Beauty & the Beast","Because I Love You (The Postman Song)","Because You Loved Me","Because of You","Before The Next Teardrop Falls","Begin the Beguine","Behind Closed Doors","Being With You","Believe","Ben","Bennie & the Jets","Besame Mucho","Best of My Love","Bette Davis Eyes","Big Bad John","Big Girls Don't Cry","Billie Jean","Bitter Sweet Symphony","Black Or White","Black Velvet","Blaze of Glory","Bleeding Love","Blue Suede Shoes","Blue Tango","Blueberry Hill","Blurred Lines","Body & Soul","Bohemian Rhapsody","Boogie Oogie Oogie","Boogie Woogie Bugle Boy","Boom Boom Pow","Born in the USA","Born to Be Wild","Born to Run","Boulevard of Broken Dreams","Brand New Key","Brandy (You're A Fine Girl)","Breaking Up is Hard to Do","Breathe","Bridge Over Troubled Water","Brother","Brother Louie","Brown Eyed Girl","Brown Sugar","Build Me Up Buttercup","Burn","Buttons & Bows","Bye","Bye Bye","Bye Bye Love","Caldonia Boogie (What Makes Your Big Head So Hard)","California Dreamin'","California Girls","Call Me","Call Me Maybe","Can You Feel the Love Tonight","Can't Buy Me Love","Can't Get Enough of Your Love","Can't Help Falling in Love","Candle in the Wind '97","Candy Man","Car Wash","Careless Whisper","Cars","Cat's in the Cradle","Cathy's Clown","Celebration","Centerfold","Chain of Fools","Chances Are","Change the World","Chapel of Love","Chattanooga Choo Choo","Chattanoogie Shoe-Shine Boy","Check On It","Cheek to Cheek","Cherish","Cherry Pink & Apple Blossom White","Cold","Colors of the Wind","Come On Eileen","Come On-a My House","Come Together","Coming Up","Cracklin' Rosie","Crazy","Crazy For You","Crazy Little Thing Called Love","Crazy in Love","Creep","Crimson & Clover","Crocodile Rock","Cry","Cry Like a Baby","Crying","Da Doo Ron Ron (When He Walked Me Home)","Dance to the Music","Dancing Queen","Dancing in the Dark","Dancing in the Street","Dardanella","Daydream Believer","December 1963 (Oh What a Night)","Delicado","Dilemma","Disco Duck","Disco Lady","Disturbia","Dizzy","Do That to Me One More Time","Do Wah Diddy Diddy","Do Ya Think I'm Sexy?","Do You Love Me?","Don't Be Cruel","Don't Fence Me In","Don't Go Breaking My Heart","Don't Leave Me This Way","Don't Let the Stars Get in Your Eyes","Don't Let the Sun Go Down On Me","Don't Speak","Don't Stop 'Til You Get Enough","Don't Worry Be Happy","Don't You (Forget About Me)","Don't You Want Me","Doo Wop (That Thing)","Down","Down Hearted Blues","Down Under","Downtown","Dreamlover","Dreams","Drop it Like It's Hot","Drops of Jupiter (Tell Me)","Duke of Earl","E.T.","Earth Angel","Ebony & Ivory","Eight Days a Week","Empire State Of Mind","End of the Road","Endless Love","Escape (The Pina Colada Song)","Eve of Destruction","Every Breath You Take","Every Little Thing She Does is Magic","Everybody Loves Somebody","Everybody Wants to Rule the World","Everyday People","Eye of the Tiger","Faith","Fallin'","Fame","Family Affair","Fantasy","Fast Car","Feel Good Inc","Feel Like Making Love","Fire & Rain","Firework","Flashdance. What a Feeling","Fly Robin Fly","Foolish Games","Footloose","For What It's Worth (Stop","Fortunate Son","Frankenstein","Freak Me","Freebird","Frenesi","Funkytown","Gangsta's Paradise","Georgia On My Mind","Georgy Girl","Get Back","Get Down Tonight","Get Off of My Cloud","Ghostbusters","Gimme Some Lovin'","Girls Just Wanna Have Fun","Give Me Everything","Gives You Hell","Glamorous","Glory of Love","Go Your Own Way","God Bless America","God Bless the Child","Gold Digger","Gonna Make You Sweat (Everybody Dance Now)","Good Lovin'","Good Times","Good Vibrations","Goodbye Yellow Brick Road","Goodnight","Got to Give it Up","Grease","Great Balls of Fire","Greatest Love of All","Green Onions","Green River","Green Tambourine","Grenade","Groove is in the Heart","Groovin'","Gypsies","Hair","Hang On Sloopy","Hanging by a Moment","Hanky Panky","Happy Days Are Here Again","Happy Together","Harbour Lights","Hard to Say I'm Sorry","Harper Valley PTA","Have You Ever Really Loved a Woman?","He'll Have to Go","He's So Fine","He's a Rebel","Heart of Glass","Heart of Gold","Heartbreak Hotel","Hello","Hello Dolly","Help Me","Help!","Here Without You","Here in My Heart","Hero","Hey Baby","Hey Jude","Hey Paula","Hey There","Hey There Delilah","Hey Ya!","Higher Love","Hips don't lie","Hit the Road","Hold On","Hollaback Girl","Honey","Honky Tonk","Honky Tonk Woman","Horse With No Name","Hot Child In The City","Hot Stuff","Hotel California","Hound Dog","House of the Rising Sun","How Deep is Your Love?","How Do I Live?","How Do You Mend a Broken Heart","How High the Moon","How Much is That Doggy in the Window?","How Will I Know","How You Remind Me","How to Save a Life","Hungry Heart","Hurt So Good","I Believe I Can Fly","I Can Dream","I Can Help","I Can See Clearly Now","I Can't Get Next to You","I Can't Get Started","I Can't Go For That (No Can Do)","I Can't Help Myself (Sugar Pie","I Can't Stop Loving You","I Don't Want to Miss a Thing","I Fall to Pieces","I Feel Fine","I Feel For You","I Feel Love","I Get Around","I Got You (I Feel Good)","I Got You Babe","I Gotta Feeling","I Heard it Through the Grapevine","I Honestly Love You","I Just Called to Say I Love You","I Just Wanna Be Your Everything","I Kissed A Girl","I Love Rock 'n' Roll","I Need You Now","I Only Have Eyes For You","I Shot the Sheriff","I Still Haven't Found What I'm Looking For","I Swear","I Think I Love You","I Walk the Line","I Wanna Dance With Somebody (Who Loves Me)","I Wanna Love You","I Want You Back","I Want to Hold Your Hand","I Want to Know What Love Is","I Went to Your Wedding","I Will Always Love You","I Will Follow Him","I Will Survive","I Write the Songs","I'll Be Missing You","I'll Be There","I'll Make Love to You","I'll Never Smile Again","I'll Take You There","I'll Walk Alone","I'll be seeing you","I'm Looking Over a Four Leaf Clover","I'm So Lonesome I Could Cry","I'm Sorry","I'm Walking Behind You","I'm Your Boogie Man","I'm Yours","I'm a Believer","I've Heard That Song Before","If (They Made Me a King)","If I Didn't Care","If You Don't Know Me By Now","If You Leave Me Now","Imagine","In Da Club","In the End","In the Ghetto","In the Mood","In the Summertime","In the Year 2525 (Exordium & Terminus)","Incense & Peppermints","Indian Reservation (The Lament Of The Cherokee Reservation Indian)","Instant Karma","Iris","Ironic","Irreplaceable","It Had to Be You","It's All in the Game","It's My Party","It's Now Or Never","It's Still Rock 'n' Roll to Me","It's Too Late","Jack & Diane","Jailhouse Rock","Jessie's Girl","Jive Talkin'","Johnny B Goode","Joy to the World","Judy in Disguise (With Glasses)","Jump","Jumpin' Jack Flash","Just Dance","Just My Imagination (Running Away With Me)","Just the Way You Are","Kansas City","Karma Chameleon","Keep On Loving You","Killing Me Softly With His Song","King of the Road","Kiss","Kiss & Say Goodbye","Kiss From a Rose","Kiss Me","Kiss On My List","Kiss You All Over","Knock On Wood","Knock Three Times","Kokomo","Kryptonite","Kung Fu Fighting","La Bamba","Lady","Lady Marmalade (Voulez-Vous Coucher Aver Moi Ce Soir?)","Last Train to Clarksville","Layla","Le Freak","Leader of the Pack","Lean On Me","Leaving","Let Me Call You Sweetheart","Let Me Love You","Let it Be","Let it Snow! Let it Snow! Let it Snow!","Let's Dance","Let's Get it On","Let's Groove","Let's Hear it For the Boy","Let's Stay Together","Light My Fire","Lights","Like a Prayer","Like a Rolling Stone","Like a Virgin","Little Darlin'","Little Things Mean a Lot","Live & Let Die","Livin' La Vida Loca","Livin' On a Prayer","Living For the City","Locked Out Of Heaven","Lola","Lonely Boy","Long Cool Woman in a Black Dress","Long Tall Sally","Look Away","Lookin' Out My Back Door","Lose Yourself","Losing My Religion","Louie Louie","Love Child","Love Hangover","Love In This Club","Love Is Blue (L'Amour Est Bleu)","Love Letters in the Sand","Love Me Do","Love Me Tender","Love Shack","Love Theme From 'A Star is Born' (Evergreen)","Love Train","Love Will Keep Us Together","Love is a Many Splendoured Thing","Love to Love You Baby","Love's Theme","Loving You","Low","Macarena","Mack the Knife","Maggie May","Magic","Magic Carpet Ride","Make Love to Me","Make it With You","Makin' Whoopee","Mama Told Me Not to Come","Man in the Mirror","Manana (Is Soon Enough For Me)","Maneater","Maniac","Maybellene","Me & Bobby McGee","Me & Mrs Jones","Memories Are Made of This","Mercy Mercy Me (The Ecology)","Mickey","Midnight Train to Georgia","Minnie the Moocher","Miss You","Miss You Much","Mister Sandman","Mmmbop","Mona Lisa","Monday Monday","Money For Nothing","Mony Mony","Mood Indigo","Moonlight Cocktail","Moonlight Serenade","More Than Words","More Than a Feeling","Morning Train (Nine to Five)","Mr Big Stuff","Mr Brightside","Mr Tambourine Man","Mrs Brown You've Got a Lovely Daughter","Mrs Robinson","Mule Train","Music","My Blue Heaven","My Boyfriend's Back","My Eyes Adored You","My Girl","My Guy","My Heart Will Go On","My Life","My Love","My Man","My Prayer","My Sharona","My Sweet Lord","Na Na Hey Hey (Kiss Him Goodbye)","Nature Boy","Near You","Need You Now","Need You Tonight","Never Gonna Give You Up","Night & Day","Night Fever","Nights in White Satin","No One","No Scrubs","Nobody Does it Better","Nothin' on You","Nothing Compares 2 U","Nothing's Gonna Stop Us Now","Ode To Billie Joe","Oh","Oh Happy Day","Oh My Papa (O Mein Papa)","Ol' Man River","Ole Buttermilk Sky","On Bended Knee","On My Own","On the Atchison","One","One Bad Apple","One More Try","One O'Clock Jump","One Sweet Day","One of These Nights","One of Us","Only The Lonely (Know The Way I Feel)","Only You (And You Alone)","Open Arms","Over There","Over the Rainbow","Paint it Black","Papa Don't Preach","Papa Was a Rolling Stone","Papa's Got a Brand New Bag","Paper Doll","Paper Planes","Paperback Writer","Party Rock Anthem","Peg o' My Heart","Peggy Sue","Pennies From Heaven","Penny Lane","People","People Got to Be Free","Personality","Philadelphia Freedom","Physical","Piano Man","Pick Up the Pieces","Pistol Packin' Mama","Play That Funky Music","Please Mr Postman","Poker Face","Pon De Replay","Pony Time","Pop Muzik","Prisoner of Love","Private Eyes","Promiscuous","Proud Mary","Purple Haze","Purple Rain","Puttin' on the Ritz","Que sera sera (Whatever will be will be)","Queen of Hearts","Rag Doll","Rag Mop","Rags to Riches","Raindrops Keep Falling On My Head","Rapture","Ray of Light","Reach Out (I'll Be There)","Red Red Wine","Rehab","Respect","Return to Sender","Reunited","Revolution","Rhapsody in Blue","Rhinestone Cowboy","Rich Girl","Riders On the Storm","Right Back Where We Started From","Ring My Bell","Ring of Fire","Rock Around the Clock","Rock With You","Rock Your Baby","Rock the Boat","Rock the Casbah","Roll Over Beethoven","Roll With It","Rolling In The Deep","Rosanna","Roses Are Red","Royals","Ruby Tuesday","Rudolph","Rum & Coca-Cola","Runaround Sue","Runaway","Running Scared","Rush Rush","Sailing","Save the Best For Last","Save the Last Dance For Me","Say It Right","Say My Name","Say Say Say","Say You","School's Out","Seasons in the Sun","Secret Love","Sentimental Journey","Sexyback","Sh-Boom (Life Could Be a Dream)","Shadow Dancing","Shake Down","Shake You Down","She Drives Me Crazy","She Loves You","She's a Lady","Shining Star","Shop Around","Shout","Silly Love Songs","Since U Been Gone","Sing","Singing The Blues","Single Ladies (Put A Ring On It)","Sir Duke","Sixteen Tons","Sledgehammer","Sleep Walk","Sleepy Lagoon","Slow Poke","Smells Like Teen Spirit","Smoke Gets in Your Eyes","Smoke On the Water","Smoke! Smoke! Smoke! (That Cigarette)","Smooth","So Much in Love","Soldier Boy","Some Enchanted Evening","Some of These Days","Somebody That I Used to Know","Somebody to Love","Someday","Somethin' Stupid","Something","Soul Man","Spanish Harlem","Spill the Wine","Spinning Wheel","Spirit in the Sky","St George & the Dragonette","St Louis Blues","Stagger Lee","Stairway to Heaven","Stand By Me","Stardust","Stars & Stripes Forever","Stay (I Missed You)","Stayin' Alive","Stop! in the Name of Love","Stormy Weather (Keeps Rainin' All the Time)","Straight Up","Strange Fruit","Stranger On the Shore","Strangers in the Night","Strawberry Fields Forever","Streets of Philadelphia","Stronger","Stuck On You","Sugar Shack","Sugar Sugar","Summer in the City","Summertime Blues","Sunday","Sunshine Superman","Sunshine of Your Love","Superstar","Superstition","Surfin' USA","Suspicious Minds","Swanee","Sweet Caroline (Good Times Never Seemed So Good)","Sweet Child O' Mine","Sweet Dreams (Are Made of This)","Sweet Georgia Brown","Sweet Home Alabama","Sweet Soul Music","Swinging On a Star","T For Texas (Blue Yodel No 1)","TSOP (The Sound of Philadelphia)","Take Me Home","Take My Breath Away","Take On Me","Take The 'A' Train","Take a Bow","Tammy","Tangerine","Tears in Heaven","Tears of a Clown","Temperature","Tennessee Waltz","Tequila","Tha Crossroads","Thank You (Falettinme be Mice Elf Again)","That Lucky Old Sun (Just Rolls Around Heaven All Day)","That Old Black Magic","That'll Be the Day","That's Amore","That's What Friends Are For","That's the Way (I Like It)","That's the Way Love Goes","The Boy is Mine","The Boys of Summer","The Christmas Song (Chestnuts Roasting On An Open Fire)","The End of the World","The First Time Ever I Saw Your Face","The Girl From Ipanema","The Glow-Worm","The Great Pretender","The Gypsy","The Hustle","The Joker","The Last Dance","The Letter","The Loco-Motion","The Long & Winding Road","The Love You Save","The Morning After","The Power of Love","The Prisoner's Song","The Reason","The Rose","The Sign","The Song From Moulin Rouge (Where Is Your Heart)","The Sounds of Silence","The Streak","The Sweet Escape","The Thing","The Tide is High","The Tracks of My Tears","The Twist","The Wanderer","The Way We Were","The Way You Look Tonight","The Way You Move","Theme From 'A Summer Place'","Theme From 'Greatest American Hero' (Believe It Or Not)","Theme From 'Shaft'","There goes my baby","These Boots Are Made For Walking","Third Man Theme","This Diamond Ring","This Guy's in Love With You","This Land is Your Land","This Love","This Ole House","This Used to Be My Playground","Three Coins in the Fountain","Three Times a Lady","Thrift Shop","Thriller","Ticket to Ride","Tie a Yellow Ribbon 'round the Old Oak Tree","Tiger Rag","Tighten Up","Tik-Toc","Till I Waltz Again With You","Till The End of Time","Time After Time","Time of the Season","To Sir","Tom Dooley","Tonight's the Night (Gonna Be Alright)","Too Close","Too Young","Tossing & Turning","Total Eclipse of the Heart","Touch Me","Toxic","Travellin' Band","Travellin' Man","Truly Madly Deeply","Turn! Turn! Turn! (To Everything There is a Season)","Tutti Frutti","Twist & Shout","Two Hearts","U Can't Touch This","U Got it Bad","Umbrella","Un-Break My Heart","Unbelievable","Unchained Melody","Uncle Albert (Admiral Halsey)","Under the Boardwalk","Under the Bridge","Unforgettable","Up Around the Bend","Up Up & Away","Up Where We Belong","Upside Down","Use Somebody","Vaya Con Dios (may God Be With You)","Venus","Vision of Love","Viva La Vida","Vogue","Volare","Wabash Cannonball","Waiting For a Girl Like You","Wake Me Up Before You Go Go","Wake Up Little Susie","Walk Don't Run","Walk Like a Man","Walk Like an Egyptian","Walk On By","Walk On the Wild Side","Walk This Way","Wannabe","Want Ads","Wanted","War","Waterfalls","Wayward Wind","We Are Family","We Are Young","We Are the Champions","We Are the World","We Belong Together","We Built This City","We Can Work it Out","We Didn't Start the Fire","We Found Love","We Got The Beat","We Will Rock You","We've Only Just Begun","Weak","Wedding Bell Blues","West End Blues","West End Girls","What Goes Around Comes Around","What a Fool Believes","What'd I Say","What's Going On?","What's Love Got to Do With It?","Whatcha Say","Wheel of Fortune","When Doves Cry","When You Wish Upon a Star","When a Man Loves a Woman","Where Did Our Love Go","Where is the Love?","Whip It","Whispering","White Christmas","White Rabbit","Whole Lotta Love","Whole Lotta Shakin' Goin' On","Whoomp! (There it Is)","Why Do Fools Fall in Love?","Why Don't You Believe Me?","Wichita Lineman","Wicked Game","Wild Thing","Wild Wild West","Will It Go Round In Circles","Will You Love Me Tomorrow","Winchester Cathedral","Wind Beneath My Wings","Wipe Out","Wishing Well","With Or Without You","Without Me","Without You","Woman","Won't Get Fooled Again","Wooly Bully","Working My Way Back to You","YMCA","Yakety Yak","Yeah!","Yellow Rose of Texas","Yesterday","You Ain't Seen Nothin' Yet","You Always Hurt the One You Love","You Are the Sunshine of My Life","You Belong With Me","You Belong to Me","You Can't Hurry Love","You Don't Bring Me Flowers","You Don't Have to Be a Star (To Be in My Show)","You Light Up My Life","You Make Me Feel Brand New","You Make Me Feel Like Dancing","You Really Got Me","You Send Me","You Sexy Thing","You Were Meant for Me","You make Me Wanna","You'll Never Know","You're Beautiful","You're So Vain","You're Still the One","You're the One That I Want","You've Got a Friend","You've Lost That Lovin' Feelin'","Your Cheatin' Heart","Your Song"]},person:{bio_part:["activist","artist","author","blogger","business owner","coach","creator","designer","developer","dreamer","educator","engineer","entrepreneur","environmentalist","film lover","filmmaker","foodie","founder","friend","gamer","geek","grad","inventor","leader","model","musician","nerd","parent","patriot","person","philosopher","photographer","public speaker","scientist","singer","streamer","student","teacher","traveler","veteran","writer"],bio_pattern:["{{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}","{{word.noun}} {{person.bio_supporter}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}} {{internet.emoji}}"],bio_supporter:["advocate","devotee","enthusiast","fan","junkie","lover","supporter"],first_name:{generic:["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aimee","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arden","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","Edd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gayle","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"],female:["Mary","Patricia","Linda","Barbara","Elizabeth","Jennifer","Maria","Susan","Margaret","Dorothy","Lisa","Nancy","Karen","Betty","Helen","Sandra","Donna","Carol","Ruth","Sharon","Michelle","Laura","Sarah","Kimberly","Deborah","Jessica","Shirley","Cynthia","Angela","Melissa","Brenda","Amy","Anna","Rebecca","Virginia","Kathleen","Pamela","Martha","Debra","Amanda","Stephanie","Carolyn","Christine","Marie","Janet","Catherine","Frances","Ann","Joyce","Diane","Alice","Julie","Heather","Teresa","Doris","Gloria","Evelyn","Jean","Cheryl","Mildred","Katherine","Joan","Ashley","Judith","Rose","Janice","Kelly","Nicole","Judy","Christina","Kathy","Theresa","Beverly","Denise","Tammy","Irene","Jane","Lori","Rachel","Marilyn","Andrea","Kathryn","Louise","Sara","Anne","Jacqueline","Wanda","Bonnie","Julia","Ruby","Lois","Tina","Phyllis","Norma","Paula","Diana","Annie","Lillian","Emily","Robin","Peggy","Crystal","Gladys","Rita","Dawn","Connie","Florence","Tracy","Edna","Tiffany","Carmen","Rosa","Cindy","Grace","Wendy","Victoria","Edith","Kim","Sherry","Sylvia","Josephine","Thelma","Shannon","Sheila","Ethel","Ellen","Elaine","Marjorie","Carrie","Charlotte","Monica","Esther","Pauline","Emma","Juanita","Anita","Rhonda","Hazel","Amber","Eva","Debbie","April","Leslie","Clara","Lucille","Jamie","Joanne","Eleanor","Valerie","Danielle","Megan","Alicia","Suzanne","Michele","Gail","Bertha","Darlene","Veronica","Jill","Erin","Geraldine","Lauren","Cathy","Joann","Lorraine","Lynn","Sally","Regina","Erica","Beatrice","Dolores","Bernice","Audrey","Yvonne","Annette","June","Samantha","Marion","Dana","Stacy","Ana","Renee","Ida","Vivian","Roberta","Holly","Brittany","Melanie","Loretta","Yolanda","Jeanette","Laurie","Katie","Kristen","Vanessa","Alma","Sue","Elsie","Beth","Jeanne","Vicki","Carla","Tara","Rosemary","Eileen","Terri","Gertrude","Lucy","Tonya","Ella","Stacey","Wilma","Gina","Kristin","Jessie","Natalie","Agnes","Vera","Willie","Charlene","Bessie","Delores","Melinda","Pearl","Arlene","Maureen","Colleen","Allison","Tamara","Joy","Georgia","Constance","Lillie","Claudia","Jackie","Marcia","Tanya","Nellie","Minnie","Marlene","Heidi","Glenda","Lydia","Viola","Courtney","Marian","Stella","Caroline","Dora","Jo","Vickie","Mattie","Terry","Maxine","Irma","Mabel","Marsha","Myrtle","Lena","Christy","Deanna","Patsy","Hilda","Gwendolyn","Jennie","Nora","Margie","Nina","Cassandra","Leah","Penny","Kay","Priscilla","Naomi","Carole","Brandy","Olga","Billie","Dianne","Tracey","Leona","Jenny","Felicia","Sonia","Miriam","Velma","Becky","Bobbie","Violet","Kristina","Toni","Misty","Mae","Shelly","Daisy","Ramona","Sherri","Erika","Katrina","Claire","Lindsey","Lindsay","Geneva","Guadalupe","Belinda","Margarita","Sheryl","Cora","Faye","Ada","Natasha","Sabrina","Isabel","Marguerite","Hattie","Harriet","Molly","Cecilia","Kristi","Brandi","Blanche","Sandy","Rosie","Joanna","Iris","Eunice","Angie","Inez","Lynda","Madeline","Amelia","Alberta","Genevieve","Monique","Jodi","Janie","Maggie","Kayla","Sonya","Jan","Lee","Kristine","Candace","Fannie","Maryann","Opal","Alison","Yvette","Melody","Luz","Susie","Olivia","Flora","Shelley","Kristy","Mamie","Lula","Lola","Verna","Beulah","Antoinette","Candice","Juana","Jeannette","Pam","Kelli","Hannah","Whitney","Bridget","Karla","Celia","Latoya","Patty","Shelia","Gayle","Della","Vicky","Lynne","Sheri","Marianne","Kara","Jacquelyn","Erma","Blanca","Myra","Leticia","Pat","Krista","Roxanne","Angelica","Johnnie","Robyn","Francis","Adrienne","Rosalie","Alexandra","Brooke","Bethany","Sadie","Bernadette","Traci","Jody","Kendra","Jasmine","Nichole","Rachael","Chelsea","Mable","Ernestine","Muriel","Marcella","Elena","Krystal","Angelina","Nadine","Kari","Estelle","Dianna","Paulette","Lora","Mona","Doreen","Rosemarie","Angel","Desiree","Antonia","Hope","Ginger","Janis","Betsy","Christie","Freda","Mercedes","Meredith","Lynette","Teri","Cristina","Eula","Leigh","Meghan","Sophia","Eloise","Rochelle","Gretchen","Cecelia","Raquel","Henrietta","Alyssa","Jana","Kelley","Gwen","Kerry","Jenna","Tricia","Laverne","Olive","Alexis","Tasha","Silvia","Elvira","Casey","Delia","Sophie","Kate","Patti","Lorena","Kellie","Sonja","Lila","Lana","Darla","May","Mindy","Essie","Mandy","Lorene","Elsa","Josefina","Jeannie","Miranda","Dixie","Lucia","Marta","Faith","Lela","Johanna","Shari","Camille","Tami","Shawna","Elisa","Ebony","Melba","Ora","Nettie","Tabitha","Ollie","Jaime","Winifred","Kristie"],male:["James","John","Robert","Michael","William","David","Richard","Charles","Joseph","Thomas","Christopher","Daniel","Paul","Mark","Donald","George","Kenneth","Steven","Edward","Brian","Ronald","Anthony","Kevin","Jason","Matthew","Gary","Timothy","Jose","Larry","Jeffrey","Frank","Scott","Eric","Stephen","Andrew","Raymond","Gregory","Joshua","Jerry","Dennis","Walter","Patrick","Peter","Harold","Douglas","Henry","Carl","Arthur","Ryan","Roger","Joe","Juan","Jack","Albert","Jonathan","Justin","Terry","Gerald","Keith","Samuel","Willie","Ralph","Lawrence","Nicholas","Roy","Benjamin","Bruce","Brandon","Adam","Harry","Fred","Wayne","Billy","Steve","Louis","Jeremy","Aaron","Randy","Howard","Eugene","Carlos","Russell","Bobby","Victor","Martin","Ernest","Phillip","Todd","Jesse","Craig","Alan","Shawn","Clarence","Sean","Philip","Chris","Johnny","Earl","Jimmy","Antonio","Danny","Bryan","Tony","Luis","Mike","Stanley","Leonard","Nathan","Dale","Manuel","Rodney","Curtis","Norman","Allen","Marvin","Vincent","Glenn","Jeffery","Travis","Jeff","Chad","Jacob","Lee","Melvin","Alfred","Kyle","Francis","Bradley","Jesus","Herbert","Frederick","Ray","Joel","Edwin","Don","Eddie","Ricky","Troy","Randall","Barry","Alexander","Bernard","Mario","Leroy","Francisco","Marcus","Micheal","Theodore","Clifford","Miguel","Oscar","Jay","Jim","Tom","Calvin","Alex","Jon","Ronnie","Bill","Lloyd","Tommy","Leon","Derek","Warren","Darrell","Jerome","Floyd","Leo","Alvin","Tim","Wesley","Gordon","Dean","Greg","Jorge","Dustin","Pedro","Derrick","Dan","Lewis","Zachary","Corey","Herman","Maurice","Vernon","Roberto","Clyde","Glen","Hector","Shane","Ricardo","Sam","Rick","Lester","Brent","Ramon","Charlie","Tyler","Gilbert","Gene","Marc","Reginald","Ruben","Brett","Angel","Nathaniel","Rafael","Leslie","Edgar","Milton","Raul","Ben","Chester","Cecil","Duane","Franklin","Andre","Elmer","Brad","Gabriel","Ron","Mitchell","Roland","Arnold","Harvey","Jared","Adrian","Karl","Cory","Claude","Erik","Darryl","Jamie","Neil","Jessie","Christian","Javier","Fernando","Clinton","Ted","Mathew","Tyrone","Darren","Lonnie","Lance","Cody","Julio","Kelly","Kurt","Allan","Nelson","Guy","Clayton","Hugh","Max","Dwayne","Dwight","Armando","Felix","Jimmie","Everett","Jordan","Ian","Wallace","Ken","Bob","Jaime","Casey","Alfredo","Alberto","Dave","Ivan","Johnnie","Sidney","Byron","Julian","Isaac","Morris","Clifton","Willard","Daryl","Ross","Virgil","Andy","Marshall","Salvador","Perry","Kirk","Sergio","Marion","Tracy","Seth","Kent","Terrance","Rene","Eduardo","Terrence","Enrique","Freddie","Wade","Austin","Stuart","Fredrick","Arturo","Alejandro","Jackie","Joey","Nick","Luther","Wendell","Jeremiah","Evan","Julius","Dana","Donnie","Otis","Shannon","Trevor","Oliver","Luke","Homer","Gerard","Doug","Kenny","Hubert","Angelo","Shaun","Lyle","Matt","Lynn","Alfonso","Orlando","Rex","Carlton","Ernesto","Cameron","Neal","Pablo","Lorenzo","Omar","Wilbur","Blake","Grant","Horace","Roderick","Kerry","Abraham","Willis","Rickey","Jean","Ira","Andres","Cesar","Johnathan","Malcolm","Rudolph","Damon","Kelvin","Rudy","Preston","Alton","Archie","Marco","Wm","Pete","Randolph","Garry","Geoffrey","Jonathon","Felipe","Bennie","Gerardo","Ed","Dominic","Robin","Loren","Delbert","Colin","Guillermo","Earnest","Lucas","Benny","Noel","Spencer","Rodolfo","Myron","Edmund","Garrett","Salvatore","Cedric","Lowell","Gregg","Sherman","Wilson","Devin","Sylvester","Kim","Roosevelt","Israel","Jermaine","Forrest","Wilbert","Leland","Simon","Guadalupe","Clark","Irving","Carroll","Bryant","Owen","Rufus","Woodrow","Sammy","Kristopher","Mack","Levi","Marcos","Gustavo","Jake","Lionel","Marty","Taylor","Ellis","Dallas","Gilberto","Clint","Nicolas","Laurence","Ismael","Orville","Drew","Jody","Ervin","Dewey","Al","Wilfred","Josh","Hugo","Ignacio","Caleb","Tomas","Sheldon","Erick","Frankie","Stewart","Doyle","Darrel","Rogelio","Terence","Santiago","Alonzo","Elias","Bert","Elbert","Ramiro","Conrad","Pat","Noah","Grady","Phil","Cornelius","Lamar","Rolando","Clay","Percy","Dexter","Bradford","Merle","Darin","Amos","Terrell","Moses","Irvin","Saul","Roman","Darnell","Randal","Tommie","Timmy","Darrin","Winston","Brendan","Toby","Van","Abel","Dominick","Boyd","Courtney","Jan","Emilio","Elijah","Cary","Domingo","Santos","Aubrey","Emmett","Marlon","Emanuel","Jerald","Edmond"]},gender:["Agender","Androgyne","Androgynous","Bigender","Cis female","Cis male","Cis man","Cis woman","Cis","Cisgender female","Cisgender male","Cisgender man","Cisgender woman","Cisgender","Demi-boy","Demi-girl","Demi-man","Demi-woman","Demiflux","Demigender","F2M","FTM","Female to male trans man","Female to male transgender man","Female to male transsexual man","Female to male","Gender fluid","Gender neutral","Gender nonconforming","Gender questioning","Gender variant","Genderflux","Genderqueer","Hermaphrodite","Intersex man","Intersex person","Intersex woman","Intersex","M2F","MTF","Male to female trans woman","Male to female transgender woman","Male to female transsexual woman","Male to female","Man","Multigender","Neither","Neutrois","Non-binary","Omnigender","Other","Pangender","Polygender","T* man","T* woman","Trans female","Trans male","Trans man","Trans person","Trans woman","Trans","Transsexual female","Transsexual male","Transsexual man","Transsexual person","Transsexual woman","Transsexual","Transgender female","Transgender person","Transmasculine","Trigender","Two* person","Two-spirit person","Two-spirit","Woman","Xenogender"],job_area:["Solutions","Program","Brand","Security","Research","Marketing","Directives","Implementation","Integration","Functionality","Response","Paradigm","Tactics","Identity","Markets","Group","Division","Applications","Optimization","Operations","Infrastructure","Intranet","Communications","Web","Branding","Quality","Assurance","Mobility","Accounts","Data","Creative","Configuration","Accountability","Interactions","Factors","Usability","Metrics"],job_descriptor:["Lead","Senior","Direct","Corporate","Dynamic","Future","Product","National","Regional","District","Central","Global","Customer","Investor","International","Legacy","Forward","Internal","Human","Chief","Principal"],job_title_pattern:["{{person.jobDescriptor}} {{person.jobArea}} {{person.jobType}}"],job_type:["Supervisor","Associate","Executive","Liaison","Officer","Manager","Engineer","Specialist","Director","Coordinator","Administrator","Architect","Analyst","Designer","Planner","Orchestrator","Technician","Developer","Producer","Consultant","Assistant","Facilitator","Agent","Representative","Strategist"],last_name:{generic:["Abbott","Abernathy","Abshire","Adams","Altenwerth","Anderson","Ankunding","Armstrong","Auer","Aufderhar","Bahringer","Bailey","Balistreri","Barrows","Bartell","Bartoletti","Barton","Bashirian","Batz","Bauch","Baumbach","Bayer","Beahan","Beatty","Bechtelar","Becker","Bednar","Beer","Beier","Berge","Bergnaum","Bergstrom","Bernhard","Bernier","Bins","Blanda","Blick","Block","Bode","Boehm","Bogan","Bogisich","Borer","Bosco","Botsford","Boyer","Boyle","Bradtke","Brakus","Braun","Breitenberg","Brekke","Brown","Bruen","Buckridge","Carroll","Carter","Cartwright","Casper","Cassin","Champlin","Christiansen","Cole","Collier","Collins","Conn","Connelly","Conroy","Considine","Corkery","Cormier","Corwin","Cremin","Crist","Crona","Cronin","Crooks","Cruickshank","Cummerata","Cummings","Dach","D'Amore","Daniel","Dare","Daugherty","Davis","Deckow","Denesik","Dibbert","Dickens","Dicki","Dickinson","Dietrich","Donnelly","Dooley","Douglas","Doyle","DuBuque","Durgan","Ebert","Effertz","Emard","Emmerich","Erdman","Ernser","Fadel","Fahey","Farrell","Fay","Feeney","Feest","Feil","Ferry","Fisher","Flatley","Frami","Franecki","Franey","Friesen","Fritsch","Funk","Gerhold","Gerlach","Gibson","Gislason","Gleason","Gleichner","Glover","Goldner","Goodwin","Gorczany","Gottlieb","Goyette","Grady","Graham","Grant","Green","Greenfelder","Greenholt","Grimes","Gulgowski","Gusikowski","Gutkowski","Gutmann","Haag","Hackett","Hagenes","Hahn","Haley","Halvorson","Hamill","Hammes","Hand","Hane","Hansen","Harber","Harris","Hartmann","Harvey","Hauck","Hayes","Heaney","Heathcote","Hegmann","Heidenreich","Heller","Herman","Hermann","Hermiston","Herzog","Hessel","Hettinger","Hickle","Hilll","Hills","Hilpert","Hintz","Hirthe","Hodkiewicz","Hoeger","Homenick","Hoppe","Howe","Howell","Hudson","Huel","Huels","Hyatt","Jacobi","Jacobs","Jacobson","Jakubowski","Jaskolski","Jast","Jenkins","Jerde","Johns","Johnson","Johnston","Jones","Kassulke","Kautzer","Keebler","Keeling","Kemmer","Kerluke","Kertzmann","Kessler","Kiehn","Kihn","Kilback","King","Kirlin","Klein","Kling","Klocko","Koch","Koelpin","Koepp","Kohler","Konopelski","Koss","Kovacek","Kozey","Krajcik","Kreiger","Kris","Kshlerin","Kub","Kuhic","Kuhlman","Kuhn","Kulas","Kunde","Kunze","Kuphal","Kutch","Kuvalis","Labadie","Lakin","Lang","Langosh","Langworth","Larkin","Larson","Leannon","Lebsack","Ledner","Leffler","Legros","Lehner","Lemke","Lesch","Leuschke","Lind","Lindgren","Littel","Little","Lockman","Lowe","Lubowitz","Lueilwitz","Luettgen","Lynch","Macejkovic","MacGyver","Maggio","Mann","Mante","Marks","Marquardt","Marvin","Mayer","Mayert","McClure","McCullough","McDermott","McGlynn","McKenzie","McLaughlin","Medhurst","Mertz","Metz","Miller","Mills","Mitchell","Moen","Mohr","Monahan","Moore","Morar","Morissette","Mosciski","Mraz","Mueller","Muller","Murazik","Murphy","Murray","Nader","Nicolas","Nienow","Nikolaus","Nitzsche","Nolan","Oberbrunner","O'Connell","O'Conner","O'Hara","O'Keefe","O'Kon","Okuneva","Olson","Ondricka","O'Reilly","Orn","Ortiz","Osinski","Pacocha","Padberg","Pagac","Parisian","Parker","Paucek","Pfannerstill","Pfeffer","Pollich","Pouros","Powlowski","Predovic","Price","Prohaska","Prosacco","Purdy","Quigley","Quitzon","Rath","Ratke","Rau","Raynor","Reichel","Reichert","Reilly","Reinger","Rempel","Renner","Reynolds","Rice","Rippin","Ritchie","Robel","Roberts","Rodriguez","Rogahn","Rohan","Rolfson","Romaguera","Roob","Rosenbaum","Rowe","Ruecker","Runolfsdottir","Runolfsson","Runte","Russel","Rutherford","Ryan","Sanford","Satterfield","Sauer","Sawayn","Schaden","Schaefer","Schamberger","Schiller","Schimmel","Schinner","Schmeler","Schmidt","Schmitt","Schneider","Schoen","Schowalter","Schroeder","Schulist","Schultz","Schumm","Schuppe","Schuster","Senger","Shanahan","Shields","Simonis","Sipes","Skiles","Smith","Smitham","Spencer","Spinka","Sporer","Stamm","Stanton","Stark","Stehr","Steuber","Stiedemann","Stokes","Stoltenberg","Stracke","Streich","Stroman","Strosin","Swaniawski","Swift","Terry","Thiel","Thompson","Tillman","Torp","Torphy","Towne","Toy","Trantow","Tremblay","Treutel","Tromp","Turcotte","Turner","Ullrich","Upton","Vandervort","Veum","Volkman","Von","VonRueden","Waelchi","Walker","Walsh","Walter","Ward","Waters","Watsica","Weber","Wehner","Weimann","Weissnat","Welch","West","White","Wiegand","Wilderman","Wilkinson","Will","Williamson","Willms","Windler","Wintheiser","Wisoky","Wisozk","Witting","Wiza","Wolf","Wolff","Wuckert","Wunsch","Wyman","Yost","Yundt","Zboncak","Zemlak","Ziemann","Zieme","Zulauf"]},last_name_pattern:{generic:[{value:"{{person.last_name.generic}}",weight:95},{value:"{{person.last_name.generic}}-{{person.last_name.generic}}",weight:5}]},middle_name:{generic:["Addison","Alex","Anderson","Angel","Arden","August","Austin","Avery","Bailey","Billie","Blake","Bowie","Brooklyn","Cameron","Charlie","Corey","Dakota","Drew","Elliott","Ellis","Emerson","Finley","Gray","Greer","Harper","Hayden","Jaden","James","Jamie","Jordan","Jules","Kai","Kendall","Kennedy","Kyle","Leslie","Logan","London","Marlowe","Micah","Nico","Noah","North","Parker","Phoenix","Quinn","Reagan","Reese","Reign","Riley","River","Robin","Rory","Rowan","Ryan","Sage","Sasha","Sawyer","Shawn","Shiloh","Skyler","Taylor"],female:["Abigail","Adele","Alex","Alice","Alisha","Amber","Amelia","Amora","Anaïs","Angelou","Anika","Anise","Annabel","Anne","Aphrodite","Aretha","Arya","Ashton","Aster","Audrey","Avery","Bailee","Bay","Belle","Beth","Billie","Blair","Blaise","Blake","Blanche","Blue","Bree","Brielle","Brienne","Brooke","Caleen","Candice","Caprice","Carelyn","Caylen","Celine","Cerise","Cia","Claire","Claudia","Clementine","Coral","Coraline","Dahlia","Dakota","Dawn","Della","Demi","Denise","Denver","Devine","Devon","Diana","Dylan","Ebony","Eden","Eleanor","Elein","Elizabeth","Ellen","Elodie","Eloise","Ember","Emma","Erin","Eyre","Faith","Farrah","Fawn","Fayre","Fern","France","Francis","Frida","Genisis","Georgia","Grace","Gwen","Harley","Harper","Hazel","Helen","Hippolyta","Holly","Hope","Imani","Iowa","Ireland","Irene","Iris","Isa","Isla","Ivy","Jade","Jane","Jazz","Jean","Jess","Jett","Jo","Joan","Jolie","Jordan","Josie","Journey","Joy","Jules","Julien","Juliet","Juniper","Justice","Kali","Karma","Kat","Kate","Kennedy","Keva","Kylie","Lake","Lane","Lark","Layla","Lee","Leigh","Leona","Lexi","London","Lou","Louise","Love","Luna","Lux","Lynn","Lyric","Maddie","Mae","Marie","Matilda","Maude","Maybel","Meadow","Medusa","Mercy","Michelle","Mirabel","Monroe","Morgan","Nalia","Naomi","Nova","Olive","Paige","Parker","Pax","Pearl","Penelope","Phoenix","Quinn","Rae","Rain","Raven","Ray","Raye","Rebel","Reese","Reeve","Regan","Riley","River","Robin","Rory","Rose","Royal","Ruth","Rylie","Sage","Sam","Saturn","Scout","Serena","Sky","Skylar","Sofia","Sophia","Storm","Sue","Suzanne","Sydney","Taylen","Taylor","Teagan","Tempest","Tenley","Thea","Trinity","Valerie","Venus","Vera","Violet","Willow","Winter","Xena","Zaylee","Zion","Zoe"],male:["Ace","Aiden","Alexander","Ander","Anthony","Asher","August","Aziel","Bear","Beckham","Benjamin","Buddy","Calvin","Carter","Charles","Christopher","Clyde","Cooper","Daniel","David","Dior","Dylan","Elijah","Ellis","Emerson","Ethan","Ezra","Fletcher","Flynn","Gabriel","Grayson","Gus","Hank","Harrison","Hendrix","Henry","Houston","Hudson","Hugh","Isaac","Jack","Jackson","Jacob","Jakobe","James","Jaxon","Jaxtyn","Jayden","John","Joseph","Josiah","Jude","Julian","Karsyn","Kenji","Kobe","Kylo","Lennon","Leo","Levi","Liam","Lincoln","Logan","Louis","Lucas","Lucky","Luke","Mason","Mateo","Matthew","Maverick","Michael","Monroe","Nixon","Ocean","Oliver","Otis","Otto","Owen","Ozzy","Parker","Rocky","Samuel","Sebastian","Sonny","Teddy","Theo","Theodore","Thomas","Truett","Walter","Warren","Watson","William","Wison","Wyatt","Ziggy","Zyair"]},name:[{value:"{{person.firstName}} {{person.lastName}}",weight:49},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}}",weight:7},{value:"{{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:7},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:1}],prefix:{generic:["Dr.","Miss","Mr.","Mrs.","Ms."],female:["Mrs.","Ms.","Miss","Dr."],male:["Mr.","Dr."]},sex:["female","male"],suffix:["Jr.","Sr.","I","II","III","IV","V","MD","DDS","PhD","DVM"],western_zodiac_sign:["Aquarius","Pisces","Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn"]},phone_number:{format:{human:["!##-!##-####","(!##) !##-####","1-!##-!##-####","!##.!##.####","!##-!##-#### x###","(!##) !##-#### x###","1-!##-!##-#### x###","!##.!##.#### x###","!##-!##-#### x####","(!##) !##-#### x####","1-!##-!##-#### x####","!##.!##.#### x####","!##-!##-#### x#####","(!##) !##-#### x#####","1-!##-!##-#### x#####","!##.!##.#### x#####"],international:["+1!##!######"],national:["(!##) !##-####"]}},science:{chemical_element:[{symbol:"H",name:"Hydrogen",atomicNumber:1},{symbol:"He",name:"Helium",atomicNumber:2},{symbol:"Li",name:"Lithium",atomicNumber:3},{symbol:"Be",name:"Beryllium",atomicNumber:4},{symbol:"B",name:"Boron",atomicNumber:5},{symbol:"C",name:"Carbon",atomicNumber:6},{symbol:"N",name:"Nitrogen",atomicNumber:7},{symbol:"O",name:"Oxygen",atomicNumber:8},{symbol:"F",name:"Fluorine",atomicNumber:9},{symbol:"Ne",name:"Neon",atomicNumber:10},{symbol:"Na",name:"Sodium",atomicNumber:11},{symbol:"Mg",name:"Magnesium",atomicNumber:12},{symbol:"Al",name:"Aluminium",atomicNumber:13},{symbol:"Si",name:"Silicon",atomicNumber:14},{symbol:"P",name:"Phosphorus",atomicNumber:15},{symbol:"S",name:"Sulfur",atomicNumber:16},{symbol:"Cl",name:"Chlorine",atomicNumber:17},{symbol:"Ar",name:"Argon",atomicNumber:18},{symbol:"K",name:"Potassium",atomicNumber:19},{symbol:"Ca",name:"Calcium",atomicNumber:20},{symbol:"Sc",name:"Scandium",atomicNumber:21},{symbol:"Ti",name:"Titanium",atomicNumber:22},{symbol:"V",name:"Vanadium",atomicNumber:23},{symbol:"Cr",name:"Chromium",atomicNumber:24},{symbol:"Mn",name:"Manganese",atomicNumber:25},{symbol:"Fe",name:"Iron",atomicNumber:26},{symbol:"Co",name:"Cobalt",atomicNumber:27},{symbol:"Ni",name:"Nickel",atomicNumber:28},{symbol:"Cu",name:"Copper",atomicNumber:29},{symbol:"Zn",name:"Zinc",atomicNumber:30},{symbol:"Ga",name:"Gallium",atomicNumber:31},{symbol:"Ge",name:"Germanium",atomicNumber:32},{symbol:"As",name:"Arsenic",atomicNumber:33},{symbol:"Se",name:"Selenium",atomicNumber:34},{symbol:"Br",name:"Bromine",atomicNumber:35},{symbol:"Kr",name:"Krypton",atomicNumber:36},{symbol:"Rb",name:"Rubidium",atomicNumber:37},{symbol:"Sr",name:"Strontium",atomicNumber:38},{symbol:"Y",name:"Yttrium",atomicNumber:39},{symbol:"Zr",name:"Zirconium",atomicNumber:40},{symbol:"Nb",name:"Niobium",atomicNumber:41},{symbol:"Mo",name:"Molybdenum",atomicNumber:42},{symbol:"Tc",name:"Technetium",atomicNumber:43},{symbol:"Ru",name:"Ruthenium",atomicNumber:44},{symbol:"Rh",name:"Rhodium",atomicNumber:45},{symbol:"Pd",name:"Palladium",atomicNumber:46},{symbol:"Ag",name:"Silver",atomicNumber:47},{symbol:"Cd",name:"Cadmium",atomicNumber:48},{symbol:"In",name:"Indium",atomicNumber:49},{symbol:"Sn",name:"Tin",atomicNumber:50},{symbol:"Sb",name:"Antimony",atomicNumber:51},{symbol:"Te",name:"Tellurium",atomicNumber:52},{symbol:"I",name:"Iodine",atomicNumber:53},{symbol:"Xe",name:"Xenon",atomicNumber:54},{symbol:"Cs",name:"Caesium",atomicNumber:55},{symbol:"Ba",name:"Barium",atomicNumber:56},{symbol:"La",name:"Lanthanum",atomicNumber:57},{symbol:"Ce",name:"Cerium",atomicNumber:58},{symbol:"Pr",name:"Praseodymium",atomicNumber:59},{symbol:"Nd",name:"Neodymium",atomicNumber:60},{symbol:"Pm",name:"Promethium",atomicNumber:61},{symbol:"Sm",name:"Samarium",atomicNumber:62},{symbol:"Eu",name:"Europium",atomicNumber:63},{symbol:"Gd",name:"Gadolinium",atomicNumber:64},{symbol:"Tb",name:"Terbium",atomicNumber:65},{symbol:"Dy",name:"Dysprosium",atomicNumber:66},{symbol:"Ho",name:"Holmium",atomicNumber:67},{symbol:"Er",name:"Erbium",atomicNumber:68},{symbol:"Tm",name:"Thulium",atomicNumber:69},{symbol:"Yb",name:"Ytterbium",atomicNumber:70},{symbol:"Lu",name:"Lutetium",atomicNumber:71},{symbol:"Hf",name:"Hafnium",atomicNumber:72},{symbol:"Ta",name:"Tantalum",atomicNumber:73},{symbol:"W",name:"Tungsten",atomicNumber:74},{symbol:"Re",name:"Rhenium",atomicNumber:75},{symbol:"Os",name:"Osmium",atomicNumber:76},{symbol:"Ir",name:"Iridium",atomicNumber:77},{symbol:"Pt",name:"Platinum",atomicNumber:78},{symbol:"Au",name:"Gold",atomicNumber:79},{symbol:"Hg",name:"Mercury",atomicNumber:80},{symbol:"Tl",name:"Thallium",atomicNumber:81},{symbol:"Pb",name:"Lead",atomicNumber:82},{symbol:"Bi",name:"Bismuth",atomicNumber:83},{symbol:"Po",name:"Polonium",atomicNumber:84},{symbol:"At",name:"Astatine",atomicNumber:85},{symbol:"Rn",name:"Radon",atomicNumber:86},{symbol:"Fr",name:"Francium",atomicNumber:87},{symbol:"Ra",name:"Radium",atomicNumber:88},{symbol:"Ac",name:"Actinium",atomicNumber:89},{symbol:"Th",name:"Thorium",atomicNumber:90},{symbol:"Pa",name:"Protactinium",atomicNumber:91},{symbol:"U",name:"Uranium",atomicNumber:92},{symbol:"Np",name:"Neptunium",atomicNumber:93},{symbol:"Pu",name:"Plutonium",atomicNumber:94},{symbol:"Am",name:"Americium",atomicNumber:95},{symbol:"Cm",name:"Curium",atomicNumber:96},{symbol:"Bk",name:"Berkelium",atomicNumber:97},{symbol:"Cf",name:"Californium",atomicNumber:98},{symbol:"Es",name:"Einsteinium",atomicNumber:99},{symbol:"Fm",name:"Fermium",atomicNumber:100},{symbol:"Md",name:"Mendelevium",atomicNumber:101},{symbol:"No",name:"Nobelium",atomicNumber:102},{symbol:"Lr",name:"Lawrencium",atomicNumber:103},{symbol:"Rf",name:"Rutherfordium",atomicNumber:104},{symbol:"Db",name:"Dubnium",atomicNumber:105},{symbol:"Sg",name:"Seaborgium",atomicNumber:106},{symbol:"Bh",name:"Bohrium",atomicNumber:107},{symbol:"Hs",name:"Hassium",atomicNumber:108},{symbol:"Mt",name:"Meitnerium",atomicNumber:109},{symbol:"Ds",name:"Darmstadtium",atomicNumber:110},{symbol:"Rg",name:"Roentgenium",atomicNumber:111},{symbol:"Cn",name:"Copernicium",atomicNumber:112},{symbol:"Nh",name:"Nihonium",atomicNumber:113},{symbol:"Fl",name:"Flerovium",atomicNumber:114},{symbol:"Mc",name:"Moscovium",atomicNumber:115},{symbol:"Lv",name:"Livermorium",atomicNumber:116},{symbol:"Ts",name:"Tennessine",atomicNumber:117},{symbol:"Og",name:"Oganesson",atomicNumber:118}],unit:[{name:"meter",symbol:"m"},{name:"second",symbol:"s"},{name:"mole",symbol:"mol"},{name:"ampere",symbol:"A"},{name:"kelvin",symbol:"K"},{name:"candela",symbol:"cd"},{name:"kilogram",symbol:"kg"},{name:"radian",symbol:"rad"},{name:"hertz",symbol:"Hz"},{name:"newton",symbol:"N"},{name:"pascal",symbol:"Pa"},{name:"joule",symbol:"J"},{name:"watt",symbol:"W"},{name:"coulomb",symbol:"C"},{name:"volt",symbol:"V"},{name:"ohm",symbol:"Ω"},{name:"tesla",symbol:"T"},{name:"degree Celsius",symbol:"°C"},{name:"lumen",symbol:"lm"},{name:"becquerel",symbol:"Bq"},{name:"gray",symbol:"Gy"},{name:"sievert",symbol:"Sv"},{name:"steradian",symbol:"sr"},{name:"farad",symbol:"F"},{name:"siemens",symbol:"S"},{name:"weber",symbol:"Wb"},{name:"henry",symbol:"H"},{name:"lux",symbol:"lx"},{name:"katal",symbol:"kat"}]},team:{creature:["ants","bats","bears","bees","birds","buffalo","cats","chickens","cattle","dogs","dolphins","ducks","elephants","fishes","foxes","frogs","geese","goats","horses","kangaroos","lions","monkeys","owls","oxen","penguins","people","pigs","rabbits","sheep","tigers","whales","wolves","zebras","banshees","crows","black cats","chimeras","ghosts","conspirators","dragons","dwarves","elves","enchanters","exorcists","sons","foes","giants","gnomes","goblins","gooses","griffins","lycanthropes","nemesis","ogres","oracles","prophets","sorcerors","spiders","spirits","vampires","warlocks","vixens","werewolves","witches","worshipers","zombies","druids"],name:["{{location.state}} {{team.creature}}"]},vehicle:{bicycle_type:["Adventure Road Bicycle","BMX Bicycle","City Bicycle","Cruiser Bicycle","Cyclocross Bicycle","Dual-Sport Bicycle","Fitness Bicycle","Flat-Foot Comfort Bicycle","Folding Bicycle","Hybrid Bicycle","Mountain Bicycle","Recumbent Bicycle","Road Bicycle","Tandem Bicycle","Touring Bicycle","Track/Fixed-Gear Bicycle","Triathlon/Time Trial Bicycle","Tricycle"],fuel:["Diesel","Electric","Gasoline","Hybrid"],manufacturer:["Aston Martin","Audi","BMW","Bentley","Bugatti","Cadillac","Chevrolet","Chrysler","Dodge","Ferrari","Fiat","Ford","Honda","Hyundai","Jaguar","Jeep","Kia","Lamborghini","Land Rover","Maserati","Mazda","Mercedes Benz","Mini","Nissan","Polestar","Porsche","Rolls Royce","Smart","Tesla","Toyota","Volkswagen","Volvo"],model:["1","2","911","A4","A8","ATS","Accord","Alpine","Altima","Aventador","Beetle","CTS","CX-9","Camaro","Camry","Challenger","Charger","Civic","Colorado","Corvette","Countach","Cruze","Durango","El Camino","Element","Escalade","Expedition","Explorer","F-150","Fiesta","Focus","Fortwo","Golf","Grand Caravan","Grand Cherokee","Impala","Jetta","Land Cruiser","LeBaron","Malibu","Mercielago","Model 3","Model S","Model T","Model X","Model Y","Mustang","PT Cruiser","Prius","Ranchero","Roadster","Sentra","Silverado","Spyder","Taurus","V90","Volt","Wrangler","XC90","XTS"],type:["Cargo Van","Convertible","Coupe","Crew Cab Pickup","Extended Cab Pickup","Hatchback","Minivan","Passenger Van","SUV","Sedan","Wagon"]},word:{adjective:["abandoned","able","acceptable","acclaimed","accomplished","accurate","aching","acidic","actual","admired","adolescent","advanced","affectionate","afraid","aged","aggravating","aggressive","agile","agitated","agreeable","ajar","alarmed","alert","alienated","alive","all","altruistic","amazing","ambitious","ample","amused","angelic","anguished","animated","annual","another","antique","any","apprehensive","appropriate","apt","arid","artistic","ashamed","assured","astonishing","athletic","austere","authentic","authorized","avaricious","average","aware","awesome","awful","babyish","back","bad","baggy","bare","basic","beloved","beneficial","best","better","big","biodegradable","bitter","black","black-and-white","blank","blaring","bleak","blind","blond","blue","blushing","bogus","boiling","bony","boring","bossy","both","bouncy","bowed","brave","breakable","bright","brilliant","brisk","broken","brown","bruised","bulky","burdensome","burly","bustling","busy","buttery","buzzing","calculating","candid","carefree","careless","caring","cautious","cavernous","celebrated","charming","cheap","cheerful","chilly","chubby","circular","classic","clean","clear","clear-cut","close","closed","cloudy","clueless","clumsy","cluttered","coarse","colorful","colorless","colossal","comfortable","common","compassionate","competent","complete","complicated","concerned","concrete","confused","considerate","content","cool","cooperative","coordinated","corny","corrupt","courageous","courteous","crafty","crazy","creamy","creative","criminal","critical","crooked","crowded","cruel","crushing","cuddly","cultivated","cumbersome","curly","cute","damaged","damp","dapper","dark","darling","dazzling","dead","deadly","deafening","dearest","decent","decisive","deep","defenseless","defensive","deficient","definite","definitive","delectable","delicious","delirious","dense","dental","dependable","dependent","descriptive","deserted","determined","devoted","different","difficult","digital","diligent","dim","direct","dirty","discrete","disloyal","dismal","distant","distinct","distorted","doting","downright","drab","dramatic","dreary","dual","dull","dutiful","each","early","earnest","easy","ecstatic","edible","educated","elastic","elderly","electric","elegant","elementary","elliptical","eminent","emotional","empty","enchanted","enchanting","energetic","enlightened","enraged","entire","equatorial","essential","esteemed","ethical","everlasting","every","evil","exalted","excellent","excitable","excited","exhausted","exotic","expensive","experienced","expert","extra-large","extroverted","failing","faint","fair","fake","familiar","fantastic","far","far-flung","far-off","faraway","fat","fatal","fatherly","favorable","favorite","fearless","feline","filthy","fine","finished","firm","first","firsthand","fixed","flashy","flawed","flawless","flickering","flimsy","flowery","fluffy","flustered","focused","fond","foolhardy","foolish","forceful","formal","forsaken","fortunate","fragrant","frail","frank","free","french","frequent","friendly","frightened","frilly","frivolous","frizzy","front","frozen","frugal","fruitful","functional","funny","fussy","fuzzy","gaseous","general","gentle","genuine","gifted","gigantic","giving","glaring","glass","gleaming","glittering","gloomy","glorious","glossy","glum","golden","good","good-natured","gorgeous","graceful","gracious","grandiose","granular","grave","gray","great","greedy","grim","grimy","gripping","grizzled","grouchy","grounded","growing","grown","grubby","gruesome","grumpy","guilty","gullible","gummy","hairy","handsome","handy","happy","happy-go-lucky","hard-to-find","harmful","hasty","hateful","haunting","heartfelt","heavenly","heavy","hefty","helpful","helpless","hidden","hoarse","hollow","homely","honorable","honored","hopeful","hospitable","hot","huge","humble","humiliating","hungry","hurtful","husky","icy","ideal","idealistic","idolized","ignorant","ill","ill-fated","illiterate","illustrious","imaginary","imaginative","immaculate","immediate","immense","impartial","impassioned","impeccable","impish","impolite","important","impossible","impractical","impressionable","impressive","improbable","impure","inborn","incomparable","incomplete","inconsequential","indelible","indolent","inexperienced","infamous","infatuated","inferior","infinite","informal","innocent","insecure","insidious","insignificant","insistent","instructive","intelligent","intent","interesting","internal","international","intrepid","ironclad","irresponsible","jagged","jam-packed","jaunty","jealous","jittery","joyful","joyous","jubilant","judicious","juicy","jumbo","junior","juvenile","kaleidoscopic","key","knotty","knowledgeable","known","kooky","kosher","lanky","last","lasting","late","lavish","lawful","lazy","leading","lean","left","legal","light","lighthearted","likable","likely","limited","limp","limping","linear","lined","liquid","little","live","lively","livid","lone","lonely","long","long-term","lost","lovable","lovely","low","lucky","lumbering","lumpy","lustrous","mad","made-up","magnificent","majestic","major","male","mammoth","married","marvelous","massive","mature","meager","mealy","mean","measly","meaty","mediocre","medium","memorable","menacing","merry","messy","metallic","mild","milky","mindless","minor","minty","miserable","miserly","misguided","mixed","moist","monstrous","monthly","monumental","moral","motionless","muddy","muffled","multicolored","mundane","murky","mushy","musty","muted","mysterious","narrow","natural","naughty","nautical","near","neat","necessary","needy","negative","neglected","negligible","neighboring","nervous","new","next","nice","nifty","nimble","nippy","nocturnal","normal","noted","noteworthy","noxious","numb","nutritious","obedient","oblong","obvious","odd","oddball","official","oily","old","old-fashioned","only","optimal","optimistic","orange","orderly","ordinary","ornate","ornery","other","our","outgoing","outlandish","outlying","outrageous","outstanding","oval","overcooked","overdue","palatable","pale","paltry","parallel","parched","partial","passionate","pastel","peaceful","peppery","perfumed","perky","personal","pertinent","pessimistic","petty","phony","physical","pink","pitiful","plain","pleasant","pleased","pleasing","plump","pointed","pointless","polished","polite","political","poor","portly","posh","possible","potable","powerful","powerless","practical","precious","present","prestigious","pretty","pricey","prickly","primary","prime","private","probable","productive","profitable","profuse","proper","proud","prudent","punctual","puny","pure","purple","pushy","putrid","puzzled","qualified","quarrelsome","quarterly","queasy","querulous","questionable","quick","quick-witted","quiet","quintessential","quixotic","radiant","ragged","rapid","rare","raw","realistic","reasonable","recent","reckless","rectangular","red","reflecting","regal","regular","remarkable","remorseful","repentant","respectful","responsible","rewarding","rich","right","rigid","ripe","roasted","robust","rosy","rotating","rotten","rough","round","rowdy","royal","rubbery","ruddy","rundown","runny","rural","rusty","sad","salty","same","sandy","sarcastic","sardonic","scaly","scared","scary","scented","scientific","scornful","scratchy","second","second-hand","secondary","secret","self-assured","self-reliant","selfish","sentimental","separate","serene","serpentine","severe","shabby","shadowy","shady","shallow","shameful","shameless","shimmering","shiny","shocked","shoddy","short","short-term","showy","shrill","shy","sick","silent","silky","silver","similar","simple","simplistic","sinful","sizzling","skeletal","sleepy","slight","slimy","slow","slushy","small","smart","smoggy","smooth","smug","snappy","snarling","sneaky","sniveling","snoopy","sociable","soft","soggy","somber","some","sophisticated","sore","sorrowful","soulful","soupy","sour","spanish","sparkling","sparse","specific","speedy","spherical","spiffy","spirited","spiteful","splendid","spotless","square","squeaky","squiggly","stable","staid","stained","stale","standard","stark","steel","steep","sticky","stiff","stingy","stormy","straight","strange","strict","strident","striking","strong","stunning","stupendous","sturdy","stylish","subdued","submissive","substantial","subtle","suburban","sudden","sugary","sunny","super","superb","superficial","superior","supportive","sure-footed","surprised","svelte","sweet","swift","talkative","tall","tame","tangible","tasty","tattered","taut","tedious","teeming","tempting","tender","tense","tepid","terrible","that","these","thick","thin","thorny","thorough","those","thrifty","tidy","tight","timely","tinted","tiny","tired","torn","total","tough","tragic","trained","triangular","tricky","trim","trivial","troubled","true","trusting","trustworthy","trusty","turbulent","twin","ugly","ultimate","unaware","uncomfortable","uncommon","unconscious","understated","uneven","unfinished","unfit","unfortunate","unhappy","unhealthy","uniform","unimportant","unique","unkempt","unknown","unlawful","unlined","unlucky","unpleasant","unrealistic","unripe","unruly","unselfish","unsightly","unsteady","unsung","untidy","untimely","untried","untrue","unused","unusual","unwelcome","unwieldy","unwilling","unwritten","upbeat","upright","upset","urban","usable","useless","utilized","utter","vague","vain","valuable","variable","vast","velvety","vengeful","vibrant","victorious","violent","vivacious","vivid","voluminous","warlike","warm","warmhearted","warped","wasteful","waterlogged","watery","wavy","wealthy","weary","webbed","wee","weekly","weighty","weird","well-documented","well-groomed","well-lit","well-made","well-off","well-to-do","well-worn","which","whimsical","whirlwind","whispered","white","whole","whopping","wicked","wide","wide-eyed","wiggly","willing","wilted","winding","windy","winged","wise","witty","wobbly","woeful","wonderful","wordy","worldly","worse","worst","worthless","worthwhile","worthy","wrathful","wretched","writhing","wrong","wry","yearly","yellow","yellowish","young","youthful","yummy","zany","zealous","zesty"],adverb:["abnormally","absentmindedly","accidentally","acidly","actually","adventurously","afterwards","almost","always","angrily","annually","anxiously","arrogantly","awkwardly","badly","bashfully","beautifully","bitterly","bleakly","blindly","blissfully","boastfully","boldly","bravely","briefly","brightly","briskly","broadly","busily","calmly","carefully","carelessly","cautiously","certainly","cheerfully","clearly","cleverly","closely","coaxingly","colorfully","commonly","continually","coolly","correctly","courageously","crossly","cruelly","curiously","daily","daintily","dearly","deceivingly","deeply","defiantly","deliberately","delightfully","diligently","dimly","doubtfully","dreamily","easily","elegantly","energetically","enormously","enthusiastically","equally","especially","even","evenly","eventually","exactly","excitedly","extremely","fairly","faithfully","famously","far","fast","fatally","ferociously","fervently","fiercely","fondly","foolishly","fortunately","frankly","frantically","freely","frenetically","frightfully","fully","furiously","generally","generously","gently","gladly","gleefully","gracefully","gratefully","greatly","greedily","happily","hastily","healthily","heavily","helpfully","helplessly","highly","honestly","hopelessly","hourly","hungrily","immediately","innocently","inquisitively","instantly","intensely","intently","interestingly","inwardly","irritably","jaggedly","jealously","joshingly","jovially","joyfully","joyously","jubilantly","judgementally","justly","keenly","kiddingly","kindheartedly","kindly","kissingly","knavishly","knottily","knowingly","knowledgeably","kookily","lazily","less","lightly","likely","limply","lively","loftily","longingly","loosely","loudly","lovingly","loyally","madly","majestically","meaningfully","mechanically","merrily","miserably","mockingly","monthly","more","mortally","mostly","mysteriously","naturally","nearly","neatly","needily","nervously","never","nicely","noisily","not","obediently","obnoxiously","oddly","offensively","officially","often","only","openly","optimistically","overconfidently","owlishly","painfully","partially","patiently","perfectly","physically","playfully","politely","poorly","positively","potentially","powerfully","promptly","properly","punctually","quaintly","quarrelsomely","queasily","questionably","questioningly","quicker","quickly","quietly","quirkily","quizzically","rapidly","rarely","readily","really","reassuringly","recklessly","regularly","reluctantly","repeatedly","reproachfully","restfully","righteously","rightfully","rigidly","roughly","rudely","sadly","safely","scarcely","scarily","searchingly","sedately","seemingly","seldom","selfishly","separately","seriously","shakily","sharply","sheepishly","shrilly","shyly","silently","sleepily","slowly","smoothly","softly","solemnly","solidly","sometimes","soon","speedily","stealthily","sternly","strictly","successfully","suddenly","surprisingly","suspiciously","sweetly","swiftly","sympathetically","tenderly","tensely","terribly","thankfully","thoroughly","thoughtfully","tightly","tomorrow","too","tremendously","triumphantly","truly","truthfully","ultimately","unabashedly","unaccountably","unbearably","unethically","unexpectedly","unfortunately","unimpressively","unnaturally","unnecessarily","upbeat","upliftingly","upright","upside-down","upward","upwardly","urgently","usefully","uselessly","usually","utterly","vacantly","vaguely","vainly","valiantly","vastly","verbally","very","viciously","victoriously","violently","vivaciously","voluntarily","warmly","weakly","wearily","well","wetly","wholly","wildly","willfully","wisely","woefully","wonderfully","worriedly","wrongly","yawningly","yearly","yearningly","yesterday","yieldingly","youthfully"],conjunction:["after","although","and","as","because","before","but","consequently","even","finally","for","furthermore","hence","how","however","if","inasmuch","incidentally","indeed","instead","lest","likewise","meanwhile","nor","now","once","or","provided","since","so","supposing","than","that","though","till","unless","until","what","when","whenever","where","whereas","wherever","whether","which","while","who","whoever","whose","why","yet"],interjection:["yuck","oh","phooey","blah","boo","whoa","yowza","huzzah","boohoo","fooey","geez","pfft","ew","ah","yum","brr","hm","yahoo","aha","woot","drat","gah","meh","psst","aw","ugh","yippee","eek","gee","bah","gadzooks","duh","ha","mmm","ouch","phew","ack","uh-huh","gosh","hmph","pish","zowie","er","ick","oof","um"],noun:["CD","SUV","abacus","academics","accelerator","accompanist","account","accountability","acquaintance","ad","adaptation","address","adrenalin","adult","advancement","advertisement","adviser","affect","affiliate","aftermath","agreement","airbus","aircraft","airline","airmail","airman","airport","alb","alert","allegation","alliance","alligator","allocation","almighty","amendment","amnesty","analogy","angle","annual","antelope","anticodon","apparatus","appliance","approach","apricot","arcade","archaeology","armchair","armoire","asset","assist","atrium","attraction","availability","avalanche","awareness","babushka","backbone","backburn","bakeware","bandwidth","bar","barge","baritone","barracks","baseboard","basket","bathhouse","bathrobe","battle","begonia","behest","bell","bench","bend","beret","best-seller","bid","bidet","bin","birdbath","birdcage","birth","blight","blossom","blowgun","bob","bog","bonfire","bonnet","bookcase","bookend","boulevard","bourgeoisie","bowler","bowling","boyfriend","brace","bracelet","bran","breastplate","brief","brochure","brook","brush","bug","bump","bungalow","cafe","cake","calculus","cannon","cantaloupe","cap","cappelletti","captain","caption","carboxyl","cardboard","carnival","case","casement","cash","casket","cassava","castanet","catalyst","cauliflower","cellar","celsius","cemetery","ceramic","ceramics","certification","chainstay","chairperson","challenge","championship","chap","chapel","character","characterization","charlatan","charm","chasuble","cheese","cheetah","chiffonier","chops","chow","cinder","cinema","circumference","citizen","clamp","clavicle","cleaner","climb","co-producer","coal","coast","cod","coil","coin","coliseum","collaboration","collectivization","colon","colonialism","comestible","commercial","commodity","community","comparison","completion","complication","compromise","concentration","configuration","confusion","conservation","conservative","consistency","contractor","contrail","convection","conversation","cook","coordination","cop-out","cope","cork","cornet","corporation","corral","cosset","costume","couch","council","councilman","countess","courtroom","cow","creator","creature","crest","cricket","crocodile","cross-contamination","cruelty","cuckoo","curl","custody","custom","cutlet","cutover","cycle","daddy","dandelion","dash","daughter","dead","decision","deck","declaration","decongestant","decryption","deduction","deed","deer","defendant","density","department","dependency","deployment","depot","derby","descendant","descent","design","designation","desk","detective","devastation","developing","developmental","devil","diagram","digestive","digit","dime","director","disadvantage","disappointment","disclosure","disconnection","discourse","dish","disk","disposer","distinction","diver","diversity","dividend","divine","doing","doorpost","doubter","draft","draw","dream","dredger","dress","drive","drug","duffel","dulcimer","dusk","duster","dwell","e-mail","earth","ecliptic","ectoderm","edge","editor","effector","eggplant","electronics","elevation","elevator","elver","embarrassment","embossing","emergent","encouragement","entry","epic","equal","essence","eternity","ethyl","euphonium","event","exasperation","excess","executor","exhaust","expansion","expense","experience","exploration","extension","extent","exterior","eyebrow","eyeliner","farm","farmer","fat","fax","feather","fedora","fellow","fen","fencing","ferret","festival","fibre","filter","final","finding","finer","finger","fireplace","fisherman","fishery","fit","flame","flat","fledgling","flight","flint","flood","flu","fog","fold","folklore","follower","following","foodstuffs","footrest","forage","forager","forgery","fork","formamide","formation","formula","fort","fowl","fraudster","freckle","freezing","freight","fuel","fun","fund","fundraising","futon","gallery","galoshes","gastropod","gazebo","gerbil","ghost","giant","gift","giggle","glider","gloom","goat","godfather","godparent","going","goodwill","governance","government","gown","gradient","graffiti","grandpa","grandson","granny","grass","gray","gripper","grouper","guacamole","guard","guidance","guide","gym","gymnast","habit","haircut","halt","hamburger","hammock","handful","handle","handover","harp","haversack","hawk","heartache","heartbeat","heating","hello","help","hepatitis","heroine","hexagon","hierarchy","hippodrome","honesty","hoof","hope","horde","hornet","horst","hose","hospitalization","hovel","hovercraft","hubris","humidity","humor","hundred","hunger","hunt","husband","hutch","hydrant","hydrocarbon","hydrolyse","hydrolyze","hyena","hygienic","hyphenation","ice-cream","icebreaker","igloo","ignorance","illusion","impact","import","importance","impostor","in-joke","incandescence","independence","individual","information","injunction","innovation","insolence","inspection","instance","institute","instruction","instructor","integer","intellect","intent","interchange","interior","intervention","interviewer","invite","iridescence","issue","jacket","jazz","jellyfish","jet","jogging","joy","juggernaut","jump","jungle","junior","jury","kettledrum","kick","kielbasa","kinase","king","kiss","kit","knickers","knight","knitting","knuckle","label","labourer","lace","lady","lamp","language","larva","lashes","laughter","lava","lawmaker","lay","leading","league","legend","legging","legislature","lender","license","lid","lieu","lifestyle","lift","linseed","litter","loaf","lobster","longboat","lotion","lounge","louse","lox","loyalty","luck","lyre","maestro","mainstream","maintainer","majority","makeover","making","mallard","management","manner","mantua","marathon","march","marimba","marketplace","marksman","markup","marten","massage","masterpiece","mathematics","meadow","meal","meander","meatloaf","mechanic","median","membership","mentor","merit","metabolite","metal","middle","midwife","milestone","millet","minion","minister","minor","minority","mixture","mobility","molasses","mom","moment","monasticism","monocle","monster","morbidity","morning","mortise","mountain","mouser","mousse","mozzarella","muscat","mythology","napkin","necklace","nectarine","negotiation","nephew","nerve","netsuke","newsletter","newsprint","newsstand","nightlife","noon","nougat","nucleotidase","nudge","numeracy","numeric","nun","obedience","obesity","object","obligation","ocelot","octave","offset","oil","omelet","onset","opera","operating","optimal","orchid","order","ostrich","other","outlaw","outrun","outset","overcoat","overheard","overload","ownership","pacemaker","packaging","paintwork","palate","pants","pantyhose","papa","parade","parsnip","partridge","passport","pasta","patroller","pear","pearl","pecan","pendant","peninsula","pension","peony","pepper","perfection","permafrost","perp","petal","petticoat","pharmacopoeia","phrase","pick","piglet","pigpen","pigsty","pile","pillbox","pillow","pilot","pine","pinstripe","place","plain","planula","plastic","platter","platypus","pleasure","pliers","plugin","plumber","pneumonia","pocket-watch","poetry","polarisation","polyester","pomelo","pop","poppy","popularity","populist","porter","possession","postbox","precedent","premeditation","premier","premise","premium","pressure","presume","priesthood","printer","privilege","procurement","produce","programme","prohibition","promise","pronoun","providence","provider","provision","publication","publicity","pulse","punctuation","pupil","puppet","puritan","quart","quinoa","quit","railway","range","rationale","ravioli","rawhide","reach","reasoning","reboot","receptor","recommendation","reconsideration","recovery","redesign","relative","release","remark","reorganisation","repeat","replacement","reporter","representation","republican","request","requirement","reservation","resolve","resource","responsibility","restaurant","retention","retrospectivity","reward","ribbon","rim","riser","roadway","role","rosemary","roundabout","rubric","ruin","rule","runway","rust","safe","sailor","saloon","sand","sandbar","sanity","sarong","sauerkraut","saw","scaffold","scale","scarification","scenario","schedule","schnitzel","scholarship","scorn","scorpion","scout","scrap","scratch","seafood","seagull","seal","season","secrecy","secret","section","sediment","self-confidence","sermon","sesame","settler","shadowbox","shark","shipper","shore","shoulder","sideboard","siege","sightseeing","signature","silk","simple","singing","skean","skeleton","skyline","skyscraper","slide","slime","slipper","smog","smoke","sock","soliloquy","solution","solvency","someplace","sonar","sonata","sonnet","soup","soybean","space","spear","spirit","spork","sport","spring","sprinkles","squid","stall","starboard","statue","status","stay","steak","steeple","step","step-mother","sticker","stir-fry","stitcher","stock","stool","story","strait","stranger","strategy","straw","stump","subexpression","submitter","subsidy","substitution","suitcase","summary","summer","sunbeam","sundae","supplier","surface","sushi","suspension","sustenance","swanling","swath","sweatshop","swim","swine","swing","switch","switchboard","swordfish","synergy","t-shirt","tabletop","tackle","tail","tapioca","taro","tarragon","taxicab","teammate","technician","technologist","tectonics","tenant","tenement","tennis","tentacle","teriyaki","term","testimonial","testing","thigh","thongs","thorn","thread","thunderbolt","thyme","tinderbox","toaster","tomatillo","tomb","tomography","tool","tooth","toothbrush","toothpick","topsail","traditionalism","traffic","translation","transom","transparency","trash","travel","tray","trench","tribe","tributary","trick","trolley","tuba","tuber","tune-up","turret","tusk","tuxedo","typeface","typewriter","unblinking","underneath","underpants","understanding","unibody","unique","unit","utilization","valentine","validity","valley","valuable","vanadyl","vein","velocity","venom","version","verve","vestment","veto","viability","vibraphone","vibration","vicinity","video","violin","vision","vista","vol","volleyball","wafer","waist","wallaby","warming","wasabi","waterspout","wear","wedding","whack","whale","wheel","widow","wilderness","willow","window","wombat","word","worth","wriggler","yak","yarmulke","yeast","yin","yogurt","zebra","zen"],preposition:["a","abaft","aboard","about","above","absent","across","afore","after","against","along","alongside","amid","amidst","among","amongst","an","anenst","anti","apropos","apud","around","as","aside","astride","at","athwart","atop","barring","before","behind","below","beneath","beside","besides","between","beyond","but","by","circa","concerning","considering","despite","down","during","except","excepting","excluding","failing","following","for","forenenst","from","given","in","including","inside","into","lest","like","mid","midst","minus","modulo","near","next","notwithstanding","of","off","on","onto","opposite","out","outside","over","pace","past","per","plus","pro","qua","regarding","round","sans","save","since","than","the","through","throughout","till","times","to","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","via","vice","with","within","without","worth"],verb:["abnegate","abscond","abseil","absolve","accentuate","accept","access","accessorise","accompany","account","accredit","achieve","acknowledge","acquire","adjourn","adjudge","admonish","adumbrate","advocate","afford","airbrush","ameliorate","amend","amount","anaesthetise","analyse","anesthetize","anneal","annex","antagonize","ape","apologise","apostrophize","appertain","appreciate","appropriate","approximate","arbitrate","archive","arraign","arrange","ascertain","ascribe","assail","atomize","attend","attest","attribute","augment","avow","axe","baa","banish","bank","baptise","battle","beard","beep","behold","belabor","bemuse","besmirch","bestride","better","bewail","bicycle","bide","bind","biodegrade","blacken","blaspheme","bleach","blend","blink","bliss","bloom","bludgeon","bobble","boggle","bolster","book","boom","bootleg","border","bore","boss","braid","brand","brandish","break","breed","broadcast","broadside","brood","browse","buck","burgeon","bus","butter","buzzing","camouflage","cannibalise","canter","cap","capitalise","capitalize","capsize","card","carouse","carp","carpool","catalog","catalyze","catch","categorise","cease","celebrate","censor","certify","char","charter","chase","chatter","chime","chip","christen","chromakey","chunder","chunter","cinch","circle","circulate","circumnavigate","clamor","clamour","claw","cleave","clinch","clinking","clone","clonk","coagulate","coexist","coincide","collaborate","colligate","colorize","colour","comb","come","commandeer","commemorate","communicate","compete","conceal","conceptualize","conclude","concrete","condense","cone","confide","confirm","confiscate","confound","confute","congregate","conjecture","connect","consign","construe","contradict","contrast","contravene","controvert","convalesce","converse","convince","convoke","coop","cop","corner","covenant","cow","crackle","cram","crank","creak","creaking","cripple","croon","cross","crumble","crystallize","culminate","culture","curry","curse","customise","cycle","dally","dampen","darn","debit","debut","decide","decode","decouple","decriminalize","deduce","deduct","deflate","deflect","deform","defrag","degenerate","degrease","delete","delight","deliquesce","demob","demobilise","democratize","demonstrate","denitrify","deny","depart","depend","deplore","deploy","deprave","depute","dereference","describe","desecrate","deselect","destock","detain","develop","devise","dial","dicker","digitize","dilate","disapprove","disarm","disbar","discontinue","disgorge","dishearten","dishonor","disinherit","dislocate","dispense","display","dispose","disrespect","dissemble","ditch","divert","dock","doodle","downchange","downshift","dowse","draft","drag","drain","dramatize","drowse","drum","dwell","economise","edge","efface","egg","eke","electrify","embalm","embed","embody","emboss","emerge","emphasise","emphasize","emulsify","encode","endow","enfold","engage","engender","enhance","enlist","enrage","enrich","enroll","entice","entomb","entrench","entwine","equate","essay","etch","eulogise","even","evince","exacerbate","exaggerate","exalt","exempt","exonerate","expatiate","explode","expostulate","extract","extricate","eyeglasses","fabricate","facilitate","factorise","factorize","fail","fall","familiarize","fashion","father","fathom","fax","federate","feminize","fence","fess","fictionalize","fiddle","fidget","fill","flash","fleck","flight","floodlight","floss","fluctuate","fluff","fly","focalise","foot","forearm","forecast","foretell","forgather","forgo","fork","form","forswear","founder","fraternise","fray","frizz","fumigate","function","furlough","fuss","gad","gallivant","galvanize","gape","garage","garrote","gasp","gestate","give","glimmer","glisten","gloat","gloss","glow","gnash","gnaw","goose","govern","grade","graduate","graft","grok","guest","guilt","gulp","gum","gurn","gust","gut","guzzle","ham","harangue","harvest","hassle","haul","haze","headline","hearten","heighten","highlight","hoick","hold","hole","hollow","holster","home","homeschool","hoot","horn","horse","hotfoot","house","hover","howl","huddle","huff","hunger","hunt","husk","hype","hypothesise","hypothesize","idle","ignite","imagineer","impact","impanel","implode","incinerate","incline","inculcate","industrialize","ingratiate","inhibit","inject","innovate","inscribe","insert","insist","inspect","institute","institutionalize","intend","intermarry","intermesh","intermix","internalise","internalize","internationalize","intrigue","inure","inveigle","inventory","investigate","irk","iterate","jaywalk","jell","jeopardise","jiggle","jive","joint","jot","jut","keel","knife","knit","know","kowtow","lack","lampoon","large","leap","lecture","legitimize","lend","libel","liberalize","license","ligate","list","lobotomise","lock","log","loose","low","lowball","machine","magnetize","major","make","malfunction","manage","manipulate","maroon","masculinize","mash","mask","masquerade","massage","masticate","materialise","matter","maul","memorise","merge","mesh","metabolise","microblog","microchip","micromanage","militate","mill","minister","minor","misappropriate","miscalculate","misfire","misjudge","miskey","mismatch","mispronounce","misread","misreport","misspend","mob","mobilise","mobilize","moisten","mooch","moor","moralise","mortar","mosh","mothball","motivate","motor","mould","mount","muddy","mummify","mutate","mystify","nab","narrate","narrowcast","nasalise","nauseate","navigate","neaten","neck","neglect","norm","notarize","object","obscure","observe","obsess","obstruct","obtrude","offend","offset","option","orchestrate","orient","orientate","outbid","outdo","outfit","outflank","outfox","outnumber","outrank","outrun","outsource","overburden","overcharge","overcook","overdub","overfeed","overload","overplay","overproduce","overreact","override","overspend","overstay","overtrain","overvalue","overwork","own","oxidise","oxidize","oxygenate","pace","pack","pale","pant","paralyse","parody","part","pause","pave","penalise","persecute","personalise","perspire","pertain","peter","pike","pillory","pinion","pip","pity","pivot","pixellate","plagiarise","plait","plan","please","pluck","ponder","popularize","portray","prance","preclude","preheat","prejudge","preregister","presell","preside","pretend","print","prioritize","probate","probe","proceed","procrastinate","profane","progress","proliferate","proofread","propound","proselytise","provision","pry","publicize","puff","pull","pulp","pulverize","purse","put","putrefy","quadruple","quaff","quantify","quarrel","quash","quaver","question","quiet","quintuple","quip","quit","rag","rally","ramp","randomize","rationalise","rationalize","ravage","ravel","react","readies","readjust","readmit","ready","reapply","rear","reassemble","rebel","reboot","reborn","rebound","rebuff","rebuild","rebuke","recede","reckon","reclassify","recompense","reconstitute","record","recount","redact","redevelop","redound","redraw","redress","reel","refer","reference","refine","reflate","refute","regulate","reiterate","rejigger","rejoin","rekindle","relaunch","relieve","remand","remark","reopen","reorient","replicate","repossess","represent","reprimand","reproach","reprove","repurpose","requite","reschedule","resort","respray","restructure","retool","retract","revere","revitalise","revoke","reword","rewrite","ride","ridge","rim","ring","rise","rival","roger","rosin","rot","rout","row","rue","rule","safeguard","sashay","sate","satirise","satirize","satisfy","saturate","savour","scale","scamper","scar","scare","scarper","scent","schematise","scheme","schlep","scoff","scoop","scope","scotch","scowl","scrabble","scram","scramble","scrape","screw","scruple","scrutinise","scuffle","scuttle","search","secularize","see","segregate","sell","sense","sensitize","sequester","serenade","serialize","serve","service","settle","sew","shaft","sham","shampoo","shanghai","shear","sheathe","shell","shinny","shirk","shoot","shoulder","shout","shovel","showboat","shred","shrill","shudder","shush","sidetrack","sign","silt","sin","singe","sit","sizzle","skateboard","ski","slake","slap","slather","sleet","slink","slip","slope","slump","smarten","smuggle","snack","sneak","sniff","snoop","snow","snowplow","snuggle","soap","solace","solder","solicit","source","spark","spattering","spectacles","spectate","spellcheck","spew","spice","spirit","splash","splay","split","splosh","splurge","spook","square","squirm","stabilise","stable","stack","stage","stake","starch","state","statement","stiffen","stigmatize","sting","stint","stoop","store","storyboard","stratify","structure","stuff","stunt","substantiate","subtract","suckle","suffice","suffocate","summarise","sun","sunbathe","sunder","sup","surge","surprise","swat","swathe","sway","swear","swelter","swerve","swill","swing","symbolise","synthesise","syringe","table","tabulate","tag","tame","tank","tankful","tarry","task","taxicab","team","telescope","tenant","terraform","terrorise","testify","think","throbbing","thump","tighten","toady","toe","tough","tousle","traduce","train","transcend","transplant","trash","treasure","treble","trek","trial","tromp","trouser","trust","tune","tut","twine","twist","typify","unbalance","uncork","uncover","underachieve","undergo","underplay","unearth","unfreeze","unfurl","unlearn","unscramble","unzip","uproot","upsell","usher","vacation","vamoose","vanish","vary","veg","venture","verify","vet","veto","volunteer","vulgarise","waft","wallop","waltz","warp","wash","waver","weary","weatherize","wedge","weep","weight","welcome","westernise","westernize","while","whine","whisper","whistle","whitewash","whup","wilt","wing","wire","wisecrack","wolf","wound","wring","writ","yak","yawn","yearn","yuppify"]}},ww=class extends Error{};var Cw=class{constructor(e){this.faker=e,function(e){let t=Object.getPrototypeOf(e);do{for(let r of Object.getOwnPropertyNames(t))"function"==typeof e[r]&&"constructor"!==r&&(e[r]=e[r].bind(e));t=Object.getPrototypeOf(t)}while(t!==Object.prototype)}(this)}},_w=class extends Cw{constructor(e){super(e),this.faker=e}},Sw=(e=>(e.Narrowbody="narrowbody",e.Regional="regional",e.Widebody="widebody",e))(Sw||{}),Aw=["0","1","2","3","4","5","6","7","8","9"],Mw=["0","O","1","I","L"],Tw={regional:20,narrowbody:35,widebody:60},Bw={regional:["A","B","C","D"],narrowbody:["A","B","C","D","E","F"],widebody:["A","B","C","D","E","F","G","H","J","K"]},Lw=class extends _w{airport(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airport)}airline(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airline)}airplane(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airplane)}recordLocator(e={}){let{allowNumerics:t=!1,allowVisuallySimilarCharacters:r=!1}=e,a=[];return t||a.push(...Aw),r||a.push(...Mw),this.faker.string.alphanumeric({length:6,casing:"upper",exclude:a})}seat(e={}){let{aircraftType:t="narrowbody"}=e,r=Tw[t],a=Bw[t];return`${this.faker.number.int({min:1,max:r})}${this.faker.helpers.arrayElement(a)}`}aircraftType(){return this.faker.helpers.enumValue(Sw)}flightNumber(e={}){let{length:t={min:1,max:4},addLeadingZeros:r=!1}=e,a=this.faker.string.numeric({length:t,allowLeadingZeros:!1});return r?a.padStart(4,"0"):a}},Ew=(e=>(e.SRGB="sRGB",e.DisplayP3="display-p3",e.REC2020="rec2020",e.A98RGB="a98-rgb",e.ProphotoRGB="prophoto-rgb",e))(Ew||{}),Rw=(e=>(e.RGB="rgb",e.RGBA="rgba",e.HSL="hsl",e.HSLA="hsla",e.HWB="hwb",e.CMYK="cmyk",e.LAB="lab",e.LCH="lch",e.COLOR="color",e))(Rw||{});function Hw(e){return e.map((e=>{if(e%1!=0){let t=new ArrayBuffer(4);return new DataView(t).setFloat32(0,e),Hw([...new Uint8Array(t)]).replaceAll(" ","")}return(e>>>0).toString(2).padStart(8,"0")})).join(" ")}function Dw(e,t,r="rgb",a="sRGB"){switch(t){case"css":return function(e,t="rgb",r="sRGB"){let a=e=>Math.round(100*e);switch(t){case"rgba":return`rgba(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]})`;case"color":return`color(${r} ${e[0]} ${e[1]} ${e[2]})`;case"cmyk":return`cmyk(${a(e[0])}%, ${a(e[1])}%, ${a(e[2])}%, ${a(e[3])}%)`;case"hsl":return`hsl(${e[0]}deg ${a(e[1])}% ${a(e[2])}%)`;case"hsla":return`hsl(${e[0]}deg ${a(e[1])}% ${a(e[2])}% / ${a(e[3])})`;case"hwb":return`hwb(${e[0]} ${a(e[1])}% ${a(e[2])}%)`;case"lab":return`lab(${a(e[0])}% ${e[1]} ${e[2]})`;case"lch":return`lch(${a(e[0])}% ${e[1]} ${e[2]})`;case"rgb":return`rgb(${e[0]}, ${e[1]}, ${e[2]})`}}(e,r,a);case"binary":return Hw(e);case"decimal":return e}}var Pw=class extends _w{human(){return this.faker.helpers.arrayElement(this.faker.definitions.color.human)}space(){return this.faker.helpers.arrayElement(this.faker.definitions.color.space)}cssSupportedFunction(){return this.faker.helpers.enumValue(Rw)}cssSupportedSpace(){return this.faker.helpers.enumValue(Ew)}rgb(e={}){let t,{format:r="hex",includeAlpha:a=!1,prefix:i="#",casing:n="lower"}=e,o="rgb";return"hex"===r?(t=this.faker.string.hexadecimal({length:a?8:6,prefix:""}),t=function(e,t){let{prefix:r,casing:a}=t;switch(a){case"upper":e=e.toUpperCase();break;case"lower":e=e.toLowerCase()}return r&&(e=r+e),e}(t,{prefix:i,casing:n}),t):(t=Array.from({length:3},(()=>this.faker.number.int(255))),a&&(t.push(this.faker.number.float({multipleOf:.01})),o="rgba"),Dw(t,r,o))}cmyk(e={}){let{format:t="decimal"}=e;return Dw(Array.from({length:4},(()=>this.faker.number.float({multipleOf:.01}))),t,"cmyk")}hsl(e={}){let{format:t="decimal",includeAlpha:r=!1}=e,a=[this.faker.number.int(360)];for(let t=0;t<(e?.includeAlpha?3:2);t++)a.push(this.faker.number.float({multipleOf:.01}));return Dw(a,t,r?"hsla":"hsl")}hwb(e={}){let{format:t="decimal"}=e,r=[this.faker.number.int(360)];for(let e=0;e<2;e++)r.push(this.faker.number.float({multipleOf:.01}));return Dw(r,t,"hwb")}lab(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let e=0;e<2;e++)r.push(this.faker.number.float({min:-100,max:100,multipleOf:1e-4}));return Dw(r,t,"lab")}lch(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let e=0;e<2;e++)r.push(this.faker.number.float({max:230,multipleOf:.1}));return Dw(r,t,"lch")}colorByCSSColorSpace(e={}){let{format:t="decimal",space:r="sRGB"}=e;return Dw(Array.from({length:3},(()=>this.faker.number.float({multipleOf:1e-4}))),t,"color",r)}},Nw=(e=>(e.Legacy="legacy",e.Segwit="segwit",e.Bech32="bech32",e.Taproot="taproot",e))(Nw||{}),Gw=(e=>(e.Mainnet="mainnet",e.Testnet="testnet",e))(Gw||{}),Iw={legacy:{prefix:{mainnet:"1",testnet:"m"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},segwit:{prefix:{mainnet:"3",testnet:"2"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},bech32:{prefix:{mainnet:"bc1",testnet:"tb1"},length:{min:42,max:42},casing:"lower",exclude:"1bBiIoO"},taproot:{prefix:{mainnet:"bc1p",testnet:"tb1p"},length:{min:62,max:62},casing:"lower",exclude:"1bBiIoO"}},Ww=(e=>(e.Female="female",e.Male="male",e))(Ww||{});function Fw(e,t,r){let{generic:a,female:i,male:n}=r;switch(t){case"female":return i??a;case"male":return n??a;default:return a??e.helpers.arrayElement([i,n])??[]}}var zw=class extends _w{firstName(e){return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.first_name))}lastName(e){if(null!=this.faker.rawDefinitions.person?.last_name_pattern){let t=this.faker.helpers.weightedArrayElement(Fw(this.faker,e,this.faker.rawDefinitions.person.last_name_pattern));return this.faker.helpers.fake(t)}return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.last_name))}middleName(e){return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.middle_name))}fullName(e={}){let{sex:t=this.faker.helpers.arrayElement(["female","male"]),firstName:r=this.firstName(t),lastName:a=this.lastName(t)}=e,i=this.faker.helpers.weightedArrayElement(this.faker.definitions.person.name);return this.faker.helpers.mustache(i,{"person.prefix":()=>this.prefix(t),"person.firstName":()=>r,"person.middleName":()=>this.middleName(t),"person.lastName":()=>a,"person.suffix":()=>this.suffix()})}gender(){return this.faker.helpers.arrayElement(this.faker.definitions.person.gender)}sex(){return this.faker.helpers.arrayElement(this.faker.definitions.person.sex)}sexType(){return this.faker.helpers.enumValue(Ww)}bio(){let{bio_pattern:e}=this.faker.definitions.person;return this.faker.helpers.fake(e)}prefix(e){return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.prefix))}suffix(){return this.faker.helpers.arrayElement(this.faker.definitions.person.suffix)}jobTitle(){return this.faker.helpers.fake(this.faker.definitions.person.job_title_pattern)}jobDescriptor(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_descriptor)}jobArea(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_area)}jobType(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_type)}zodiacSign(){return this.faker.helpers.arrayElement(this.faker.definitions.person.western_zodiac_sign)}},Ow=class{N=624;M=397;MATRIX_A=2567483615;UPPER_MASK=2147483648;LOWER_MASK=2147483647;mt=Array.from({length:this.N});mti=this.N+1;unsigned32(e){return e<0?(e^this.UPPER_MASK)+this.UPPER_MASK:e}subtraction32(e,t){return e>>a&1&&(r=this.addition32(r,this.unsigned32(t<>>30)),this.mti),this.mt[this.mti]=this.unsigned32(4294967295&this.mt[this.mti])}initByArray(e,t){this.initGenrand(19650218);let r=1,a=0,i=this.N>t?this.N:t;for(;i;i--)this.mt[r]=this.addition32(this.addition32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1664525)),e[a]),a),this.mt[r]=this.unsigned32(4294967295&this.mt[r]),r++,a++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1),a>=t&&(a=0);for(i=this.N-1;i;i--)this.mt[r]=this.subtraction32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1566083941)),r),this.mt[r]=this.unsigned32(4294967295&this.mt[r]),r++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1);this.mt[0]=2147483648}mag01=[0,this.MATRIX_A];genrandInt32(){let e;if(this.mti>=this.N){let t;for(this.mti===this.N+1&&this.initGenrand(5489),t=0;t>>1^this.mag01[1&e]);for(;t>>1^this.mag01[1&e]);e=this.unsigned32(this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK),this.mt[this.N-1]=this.unsigned32(this.mt[this.M-1]^e>>>1^this.mag01[1&e]),this.mti=0}return e=this.mt[this.mti++],e=this.unsigned32(e^e>>>11),e=this.unsigned32(e^e<<7&2636928640),e=this.unsigned32(e^e<<15&4022730752),e=this.unsigned32(e^e>>>18),e}genrandInt31(){return this.genrandInt32()>>>1}genrandReal1(){return this.genrandInt32()*(1/4294967295)}genrandReal2(){return this.genrandInt32()*(1/4294967296)}genrandReal3(){return(this.genrandInt32()+.5)*(1/4294967296)}genrandRes53(){return(67108864*(this.genrandInt32()>>>5)+(this.genrandInt32()>>>6))*(1/9007199254740992)}};function Kw(){let e=new Ow;return e.initGenrand(Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)),{next:()=>e.genrandRes53(),seed(t){"number"==typeof t?e.initGenrand(t):Array.isArray(t)&&e.initByArray(t,t.length)}}}var Jw=class extends Cw{boolean(e={}){"number"==typeof e&&(e={probability:e});let{probability:t=.5}=e;return!(t<=0)&&(t>=1||this.faker.number.float(){throw new ww("You cannot edit the locale data on the faker instance")};function jw(e){let t={};return new Proxy(e,{has:()=>!0,get:(e,r)=>"symbol"==typeof r||"nodeType"===r?e[r]:r in t?t[r]:t[r]=function(e,t={}){return new Proxy(t,{has:(e,t)=>null!=e[t],get(t,r){let a=t[r];return"symbol"==typeof r||"nodeType"===r||Yw(a,e,r.toString()),a},set:Vw,deleteProperty:Vw})}(r,e[r]),set:Vw,deleteProperty:Vw})}function Yw(e,...t){if(null===e)throw new ww(`The locale data for '${t.join(".")}' aren't applicable to this locale.\n If you think this is a bug, please report it at: https://github.com/faker-js/faker`);if(void 0===e)throw new ww(`The locale data for '${t.join(".")}' are missing in this locale.\n Please contribute the missing data to the project or use a locale/Faker instance that has these data.\n For more information see https://fakerjs.dev/guide/localization.html`)}function $w(e,t="refDate"){let r=new Date(e);if(Number.isNaN(r.valueOf()))throw new ww(`Invalid ${t} date: ${e.toString()}`);return r}var Uw=class extends Cw{anytime(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=$w(t).getTime();return this.between({from:r-31536e6,to:r+31536e6})}past(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Years must be greater than 0.");let a=$w(r).getTime();return this.between({from:a-365*t*24*3600*1e3,to:a-1e3})}future(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Years must be greater than 0.");let a=$w(r).getTime();return this.between({from:a+1e3,to:a+365*t*24*3600*1e3})}between(e){if(null==e||null==e.from||null==e.to)throw new ww("Must pass an options object with `from` and `to` values.");let{from:t,to:r}=e,a=$w(t,"from").getTime(),i=$w(r,"to").getTime();if(a>i)throw new ww("`from` date must be before `to` date.");return new Date(this.faker.number.int({min:a,max:i}))}betweens(e){if(null==e||null==e.from||null==e.to)throw new ww("Must pass an options object with `from` and `to` values.");let{from:t,to:r,count:a=3}=e;return this.faker.helpers.multiple((()=>this.between({from:t,to:r})),{count:a}).sort(((e,t)=>e.getTime()-t.getTime()))}recent(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Days must be greater than 0.");let a=$w(r).getTime();return this.between({from:a-24*t*3600*1e3,to:a-1e3})}soon(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Days must be greater than 0.");let a=$w(r).getTime();return this.between({from:a+1e3,to:a+24*t*3600*1e3})}birthdate(e={}){let{mode:t="age",min:r=18,max:a=80,refDate:i=this.faker.defaultRefDate(),mode:n,min:o,max:c}=e;if([o,c,n].filter((e=>null!=e)).length%3!=0)throw new ww("The 'min', 'max', and 'mode' options must be set together.");let l=$w(i),s=l.getUTCFullYear();switch(t){case"age":{let e=new Date(l).setUTCFullYear(s-a-1)+864e5,t=new Date(l).setUTCFullYear(s-r);if(e>t)throw new ww(`Max age ${a} should be greater than or equal to min age ${r}.`);return this.between({from:e,to:t})}case"year":{let e=new Date(Date.UTC(0,0,2)).setUTCFullYear(r),t=new Date(Date.UTC(0,11,30)).setUTCFullYear(a);if(e>t)throw new ww(`Max year ${a} should be greater than or equal to min year ${r}.`);return this.between({from:e,to:t})}}}},qw=class extends Uw{constructor(e){super(e),this.faker=e}month(e={}){let t,{abbreviated:r=!1,context:a=!1}=e,i=this.faker.definitions.date.month;t=r?a&&null!=i.abbr_context?"abbr_context":"abbr":a&&null!=i.wide_context?"wide_context":"wide";let n=i[t];return Yw(n,"date.month",t),this.faker.helpers.arrayElement(n)}weekday(e={}){let t,{abbreviated:r=!1,context:a=!1}=e,i=this.faker.definitions.date.weekday;t=r?a&&null!=i.abbr_context?"abbr_context":"abbr":a&&null!=i.wide_context?"wide_context":"wide";let n=i[t];return Yw(n,"date.weekday",t),this.faker.helpers.arrayElement(n)}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.date.time_zone)}},Zw=/\.|\(/;function Qw(e,t,r){let[a,i]=function(e){let t=e.indexOf(")",1);if(-1===t)throw new ww(`Missing closing parenthesis in '${e}'`);for(;-1!==t;){let r=e.substring(1,t);try{return[t,JSON.parse(`[${r}]`)]}catch{if(!r.includes("'")&&!r.includes('"'))try{return[t,JSON.parse(`["${r}"]`)]}catch{}}t=e.indexOf(")",t+1)}t=e.lastIndexOf(")");let r=e.substring(1,t);return[t,[r]]}(e),n=e[a+1];switch(n){case".":case"(":case void 0:break;default:throw new ww(`Expected dot ('.'), open parenthesis ('('), or nothing after function call but got '${n}'`)}return[a+("."===n?2:1),t.map((t=>"function"==typeof t?t(...i):(console.warn(`[@faker-js/faker]: Invoking expressions which are not functions is deprecated since v9.0 and will be removed in v10.0.\nPlease remove the parentheses or replace the expression with an actual function.\n${r}\n${" ".repeat(r.length-e.length)}^`),t)))]}function Xw(e,t){let r=Zw.exec(e),a="."===(r?.[0]??""),i=r?.index??e.length,n=e.substring(0,i);if(0===n.length)throw new ww(`Expression parts cannot be empty in '${e}'`);let o=e[i+1];if(a&&(null==o||"."===o||"("===o))throw new ww(`Found dot without property name in '${e}'`);return[i+(a?1:0),t.map((e=>function(e,t){switch(typeof e){case"function":try{e=e()}catch{return}return e?.[t];case"object":return e?.[t];default:return}}(e,n)))]}function eC(e){let t=function(e){e=e.replaceAll(/[\s-]/g,"");let t=0,r=!1;for(let a=e.length-1;a>=0;a--){let i=Number.parseInt(e[a]);r&&(i*=2,i>9&&(i=i%10+1)),t+=i,r=!r}return t%10}(e.replace(/L?$/,"0"));return 0===t?0:10-t}function tC(e,t,r,a){let i=1;if(t)switch(t){case"?":i=e.datatype.boolean()?0:1;break;case"*":{let t=1;for(;e.datatype.boolean();)t*=2;i=e.number.int({min:0,max:t});break}case"+":{let t=1;for(;e.datatype.boolean();)t*=2;i=e.number.int({min:1,max:t});break}default:throw new ww("Unknown quantifier symbol provided.")}else null!=r&&null!=a?i=e.number.int({min:Number.parseInt(r),max:Number.parseInt(a)}):null!=r&&null==a&&(i=Number.parseInt(r));return i}function rC(e,t="",r="#"){let a="";for(let i=0;ia&&(i=a,a=r,r=i),n=e.number.int({min:r,max:a}),t=t.slice(0,s.index)+s[1].repeat(n)+t.slice(s.index+s[0].length),s=o.exec(t);for(s=c.exec(t);null!=s;)n=Number.parseInt(s[2]),t=t.slice(0,s.index)+s[1].repeat(n)+t.slice(s.index+s[0].length),s=c.exec(t);for(s=l.exec(t);null!=s;)r=Number.parseInt(s[1]),a=Number.parseInt(s[2]),r>a&&(i=a,a=r,r=i),t=t.slice(0,s.index)+e.number.int({min:r,max:a}).toString()+t.slice(s.index+s[0].length),s=l.exec(t);return t}(this.faker,e);let r=eC(e=rC(this.faker,e,t));return e.replace("L",String(r))}fromRegExp(e){let t=!1;e instanceof RegExp&&(t=e.flags.includes("i"),e=e.toString(),e=/\/(.+?)\//.exec(e)?.[1]??"");let r,a,i,n=/([.A-Za-z0-9])(?:\{(\d+)(?:,(\d+)|)\}|(\?|\*|\+))(?![^[]*]|[^{]*})/,o=n.exec(e);for(;null!=o;){let t=o[2],r=o[3],a=o[4];i=tC(this.faker,a,t,r),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=n.exec(e)}let c=/(\d-\d|\w-\w|\d|\w|[-!@#$&()`.+,/"])/,l=/\[(\^|)(-|)(.+?)\](?:\{(\d+)(?:,(\d+)|)\}|(\?|\*|\+)|)/;for(o=l.exec(e);null!=o;){let n="^"===o[1],s="-"===o[2],u=o[4],h=o[5],d=o[6],p=[],y=o[3],f=c.exec(y);for(s&&p.push(45);null!=f;){if(f[0].includes("-")){let e=f[0].split("-").map((e=>e.codePointAt(0)??Number.NaN));if(r=e[0],a=e[1],r>a)throw new ww("Character range provided is out of order.");for(let e=r;e<=a;e++)if(t&&Number.isNaN(Number(String.fromCodePoint(e)))){let t=String.fromCodePoint(e);p.push(t.toUpperCase().codePointAt(0)??Number.NaN,t.toLowerCase().codePointAt(0)??Number.NaN)}else p.push(e)}else t&&Number.isNaN(Number(f[0]))?p.push(f[0].toUpperCase().codePointAt(0)??Number.NaN,f[0].toLowerCase().codePointAt(0)??Number.NaN):p.push(f[0].codePointAt(0)??Number.NaN);y=y.substring(f[0].length),f=c.exec(y)}if(i=tC(this.faker,d,u,h),n){let e=-1;for(let t=48;t<=57;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t);for(let t=65;t<=90;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t);for(let t=97;t<=122;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t)}let m=this.multiple((()=>String.fromCodePoint(this.arrayElement(p))),{count:i}).join("");e=e.slice(0,o.index)+m+e.slice(o.index+o[0].length),o=l.exec(e)}let s=/(.)\{(\d+),(\d+)\}/;for(o=s.exec(e);null!=o;){if(r=Number.parseInt(o[2]),a=Number.parseInt(o[3]),r>a)throw new ww("Numbers out of order in {} quantifier.");i=this.faker.number.int({min:r,max:a}),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=s.exec(e)}let u=/(.)\{(\d+)\}/;for(o=u.exec(e);null!=o;)i=Number.parseInt(o[2]),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=u.exec(e);return e}shuffle(e,t={}){let{inplace:r=!1}=t;r||(e=[...e]);for(let t=e.length-1;t>0;--t){let r=this.faker.number.int(t);[e[t],e[r]]=[e[r],e[t]]}return e}uniqueArray(e,t){if(Array.isArray(e)){let r=[...new Set(e)];return this.shuffle(r).splice(0,t)}let r=new Set;try{if("function"==typeof e){let a=1e3*t,i=0;for(;r.size1?this.faker.number.int({max:e.length-1}):0]}weightedArrayElement(e){if(0===e.length)throw new ww("weightedArrayElement expects an array with at least one element");if(!e.every((e=>e.weight>0)))throw new ww("weightedArrayElement expects an array of { weight, value } objects where weight is a positive number");let t=e.reduce(((e,{weight:t})=>e+t),0),r=this.faker.number.float({min:0,max:t}),a=0;for(let{weight:t,value:i}of e)if(a+=t,r=e.length)return this.shuffle(e);if(r<=0)return[];let a,i,n=[...e],o=e.length,c=o-r;for(;o-- >c;)i=this.faker.number.int(o),a=n[i],n[i]=n[o],n[o]=a;return n.slice(c)}enumValue(e){let t=Object.keys(e).filter((e=>Number.isNaN(Number(e))));return e[this.arrayElement(t)]}rangeToNumber(e){return"number"==typeof e?e:this.faker.number.int(e)}multiple(e,t={}){let r=this.rangeToNumber(t.count??3);return r<=0?[]:Array.from({length:r},e)}},iC=class extends aC{constructor(e){super(e),this.faker=e}fake(e){let t=(e="string"==typeof e?e:this.arrayElement(e)).search(/{{[a-z]/),r=e.indexOf("}}",t);if(-1===t||-1===r)return e;let a=function(e,t,r=[t,t.rawDefinitions]){if(0===e.length)throw new ww("Eval expression cannot be empty.");if(0===r.length)throw new ww("Eval entrypoints cannot be empty.");let a=r,i=e;do{let r;i.startsWith("(")?[r,a]=Qw(i,a,e):[r,a]=Xw(i,a),i=i.substring(r),a=a.filter((e=>null!=e)).map((e=>Array.isArray(e)?t.helpers.arrayElement(e):e))}while(i.length>0&&a.length>0);if(0===a.length)throw new ww(`Cannot resolve expression '${e}'`);let n=a[0];return"function"==typeof n?n():n}(e.substring(t+2,r+2).replace("}}","").replace("{{",""),this.faker),i=String(a),n=e.substring(0,t)+i+e.substring(r+2);return this.fake(n)}},nC=class extends Cw{int(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=Number.MAX_SAFE_INTEGER,multipleOf:a=1}=e;if(!Number.isInteger(a))throw new ww("multipleOf should be an integer.");if(a<=0)throw new ww("multipleOf should be greater than 0.");let i=Math.ceil(t/a),n=Math.floor(r/a);if(i===n)return i*a;if(n=t?`No suitable integer value between ${t} and ${r} found.`:`Max ${r} should be greater than min ${t}.`);let o=this.faker._randomizer.next(),c=n-i+1;return Math.floor(o*c+i)*a}float(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=1,fractionDigits:a,multipleOf:i,multipleOf:n=(null==a?void 0:10**-a)}=e;if(r===t)return t;if(rthis.faker.helpers.arrayElement(e)),{count:t}).join("")}alpha(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let r,{casing:a="mixed"}=e,{exclude:i=[]}=e;switch("string"==typeof i&&(i=[...i]),a){case"upper":r=[...oC];break;case"lower":r=[...cC];break;case"mixed":r=[...cC,...oC]}return r=r.filter((e=>!i.includes(e))),this.fromCharacters(r,t)}alphanumeric(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let{casing:r="mixed"}=e,{exclude:a=[]}=e;"string"==typeof a&&(a=[...a]);let i=[...lC];switch(r){case"upper":i.push(...oC);break;case"lower":i.push(...cC);break;case"mixed":i.push(...cC,...oC)}return i=i.filter((e=>!a.includes(e))),this.fromCharacters(i,t)}binary(e={}){let{prefix:t="0b"}=e,r=t;return r+=this.fromCharacters(["0","1"],e.length??1),r}octal(e={}){let{prefix:t="0o"}=e,r=t;return r+=this.fromCharacters(["0","1","2","3","4","5","6","7"],e.length??1),r}hexadecimal(e={}){let{casing:t="mixed",prefix:r="0x"}=e,a=this.faker.helpers.rangeToNumber(e.length??1);if(a<=0)return r;let i=this.fromCharacters(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","A","B","C","D","E","F"],a);return"upper"===t?i=i.toUpperCase():"lower"===t&&(i=i.toLowerCase()),`${r}${i}`}numeric(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let{allowLeadingZeros:r=!0}=e,{exclude:a=[]}=e;"string"==typeof a&&(a=[...a]);let i=lC.filter((e=>!a.includes(e)));if(0===i.length||1===i.length&&!r&&"0"===i[0])throw new ww("Unable to generate numeric string, because all possible digits are excluded.");let n="";return!r&&!a.includes("0")&&(n+=this.faker.helpers.arrayElement(i.filter((e=>"0"!==e)))),n+=this.fromCharacters(i,t-n.length),n}sample(e=10){e=this.faker.helpers.rangeToNumber(e);let t={min:33,max:125},r="";for(;r.lengththis.faker.number.hex({min:0,max:15}))).replaceAll("y",(()=>this.faker.number.hex({min:8,max:11})))}nanoid(e=21){if((e=this.faker.helpers.rangeToNumber(e))<=0)return"";let t=[{value:()=>this.alphanumeric(1),weight:62},{value:()=>this.faker.helpers.arrayElement(["_","-"]),weight:2}],r="";for(;r.length","?","@","[","\\","]","^","_","`","{","|","}","~"],e)}},uC=class{_defaultRefDate=()=>new Date;get defaultRefDate(){return this._defaultRefDate}setDefaultRefDate(e=()=>new Date){this._defaultRefDate="function"==typeof e?e:()=>new Date(e)}_randomizer;datatype=new Jw(this);date=new Uw(this);helpers=new aC(this);number=new nC(this);string=new sC(this);constructor(e={}){let{randomizer:t=Kw()}=e;this._randomizer=t}seed(e=Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)){return this._randomizer.seed(e),e}};function hC(e){let t=`[@faker-js/faker]: ${e.deprecated} is deprecated`;e.since&&(t+=` since v${e.since}`),e.until&&(t+=` and will be removed in v${e.until}`),e.proposed&&(t+=`. Please use ${e.proposed} instead`),console.warn(`${t}.`)}new uC;var dC=class extends _w{dog(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.dog)}cat(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cat)}snake(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.snake)}bear(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bear)}lion(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.lion)}cetacean(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cetacean)}horse(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.horse)}bird(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bird)}cow(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cow)}fish(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.fish)}crocodilia(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.crocodilia)}insect(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.insect)}rabbit(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rabbit)}rodent(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rodent)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.type)}},pC={0:[[1999999,2],[2279999,3],[2289999,4],[3689999,3],[3699999,4],[6389999,3],[6397999,4],[6399999,7],[6449999,3],[6459999,7],[6479999,3],[6489999,7],[6549999,3],[6559999,4],[6999999,3],[8499999,4],[8999999,5],[9499999,6],[9999999,7]],1:[[99999,3],[299999,2],[349999,3],[399999,4],[499999,3],[699999,2],[999999,4],[3979999,3],[5499999,4],[6499999,5],[6799999,4],[6859999,5],[7139999,4],[7169999,3],[7319999,4],[7399999,7],[7749999,5],[7753999,7],[7763999,5],[7764999,7],[7769999,5],[7782999,7],[7899999,5],[7999999,4],[8004999,5],[8049999,5],[8379999,5],[8384999,7],[8671999,5],[8675999,4],[8697999,5],[9159999,6],[9165059,7],[9168699,6],[9169079,7],[9195999,6],[9196549,7],[9729999,6],[9877999,4],[9911499,6],[9911999,7],[9989899,6],[9999999,7]]},yC=class extends _w{department(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.department)}productName(){return`${this.productAdjective()} ${this.productMaterial()} ${this.product()}`}price(e={}){let{dec:t=2,max:r=1e3,min:a=1,symbol:i=""}=e;if(a<0||r<0)return`${i}0`;if(a===r)return`${i}${a.toFixed(t)}`;let n=this.faker.number.float({min:a,max:r,fractionDigits:t});if(0===t)return`${i}${n.toFixed(t)}`;let o=.1**t,c=n-n*10**t%10*o+this.faker.helpers.weightedArrayElement([{weight:5,value:9},{weight:3,value:5},{weight:1,value:0},{weight:1,value:this.faker.number.int({min:0,max:9})}])*o;return a<=c&&c<=r?`${i}${c.toFixed(t)}`:`${i}${n.toFixed(t)}`}productAdjective(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.adjective)}productMaterial(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.material)}product(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.product)}productDescription(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_description)}isbn(e={}){"number"==typeof e&&(e={variant:e});let{variant:t=13,separator:r="-"}=e,[a,i]=this.faker.helpers.objectEntry(pC),n=this.faker.string.numeric(8),o=Number.parseInt(n.slice(0,-1)),c=i.find((([e])=>o<=e))?.[1];if(!c)throw new ww(`Unable to find a registrant length for the group ${a}`);let l=["978",a,n.slice(0,c),n.slice(c)];10===t&&l.shift();let s=l.join(""),u=0;for(let e=0;e{let t=0;for(let r of e)t=(10*t+ +r)%97;return t},pattern10:["01","02","03","04","05","06","07","08","09"],pattern100:["001","002","003","004","005","006","007","008","009"],toDigitString:e=>e.replaceAll(/[A-Z]/gi,(e=>String((e.toUpperCase().codePointAt(0)??Number.NaN)-55)))},bC=gC;var vC=class extends _w{accountNumber(e={}){"number"==typeof e&&(e={length:e});let{length:t=8}=e;return this.faker.string.numeric({length:t,allowLeadingZeros:!0})}accountName(){return[this.faker.helpers.arrayElement(this.faker.definitions.finance.account_type),"Account"].join(" ")}routingNumber(){let e=this.faker.string.numeric({length:8,allowLeadingZeros:!0}),t=0;for(let r=0;re.country===t)):this.faker.helpers.arrayElement(bC.formats);if(!a)throw new ww(`Country code ${t} not supported.`);let i="",n=0;for(let e of a.bban){let t=e.count;for(n+=e.count;t>0;)"a"===e.type?i+=this.faker.helpers.arrayElement(bC.alpha):"c"===e.type?this.faker.datatype.boolean(.8)?i+=this.faker.number.int(9):i+=this.faker.helpers.arrayElement(bC.alpha):t>=3&&this.faker.datatype.boolean(.3)?this.faker.datatype.boolean()?(i+=this.faker.helpers.arrayElement(bC.pattern100),t-=2):(i+=this.faker.helpers.arrayElement(bC.pattern10),t--):i+=this.faker.number.int(9),t--;i=i.substring(0,n)}let o=98-bC.mod97(bC.toDigitString(`${i}${a.country}00`));o<10&&(o=`0${o}`);let c=`${a.country}${o}${i}`;return r?function(e){let t="";for(let r=0;re.split(" ").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ");return this.faker.datatype.boolean()?e(this.faker.helpers.fake(this.faker.definitions.food.dish_pattern)):e(this.faker.helpers.arrayElement(this.faker.definitions.food.dish))}ethnicCategory(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ethnic_category)}fruit(){return this.faker.helpers.arrayElement(this.faker.definitions.food.fruit)}ingredient(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ingredient)}meat(){return this.faker.helpers.arrayElement(this.faker.definitions.food.meat)}spice(){return this.faker.helpers.arrayElement(this.faker.definitions.food.spice)}vegetable(){return this.faker.helpers.arrayElement(this.faker.definitions.food.vegetable)}},kC=class extends _w{branch(){return`${this.faker.hacker.noun().replace(" ","-")}-${this.faker.hacker.verb().replace(" ","-")}`}commitEntry(e={}){let{merge:t=this.faker.datatype.boolean({probability:.2}),eol:r="CRLF",refDate:a}=e,i=[`commit ${this.faker.git.commitSha()}`];t&&i.push(`Merge: ${this.commitSha({length:7})} ${this.commitSha({length:7})}`);let n=this.faker.person.firstName(),o=this.faker.person.lastName(),c=this.faker.person.fullName({firstName:n,lastName:o}),l=this.faker.internet.userName({firstName:n,lastName:o}),s=this.faker.helpers.arrayElement([c,l]),u=this.faker.internet.email({firstName:n,lastName:o});s=s.replaceAll(/^[.,:;"\\']|[<>\n]|[.,:;"\\']$/g,""),i.push(`Author: ${s} <${u}>`,`Date: ${this.commitDate({refDate:a})}`,"",`${" ".repeat(4)}${this.commitMessage()}`,"");let h="CRLF"===r?"\r\n":"\n";return i.join(h)}commitMessage(){return`${this.faker.hacker.verb()} ${this.faker.hacker.adjective()} ${this.faker.hacker.noun()}`}commitDate(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=this.faker.date.recent({days:1,refDate:t}),a=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][r.getUTCDay()],i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][r.getUTCMonth()],n=r.getUTCDate(),o=r.getUTCHours().toString().padStart(2,"0"),c=r.getUTCMinutes().toString().padStart(2,"0"),l=r.getUTCSeconds().toString().padStart(2,"0"),s=r.getUTCFullYear(),u=this.faker.number.int({min:-11,max:12});return`${a} ${i} ${n} ${o}:${c}:${l} ${s} ${u>=0?"+":"-"}${Math.abs(u).toString().padStart(2,"0")}00`}commitSha(e={}){let{length:t=40}=e;return this.faker.string.hexadecimal({length:t,casing:"lower",prefix:""})}},wC=class extends _w{abbreviation(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.abbreviation)}adjective(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.adjective)}noun(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.noun)}verb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.verb)}ingverb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.ingverb)}phrase(){let e={abbreviation:this.abbreviation,adjective:this.adjective,ingverb:this.ingverb,noun:this.noun,verb:this.verb},t=this.faker.helpers.arrayElement(this.faker.definitions.hacker.phrase);return this.faker.helpers.mustache(t,e)}},CC=typeof Buffer>"u"?e=>{let t=(new TextEncoder).encode(e),r=Array.from(t,(e=>String.fromCodePoint(e))).join("");return btoa(r)}:e=>Buffer.from(e).toString("base64"),_C=class extends _w{avatar(){return this.avatarGitHub()}avatarGitHub(){return`https://avatars.githubusercontent.com/u/${this.faker.number.int(1e8)}`}avatarLegacy(){return hC({deprecated:"faker.image.avatarLegacy()",proposed:"faker.image.avatar()",since:"9.0.2",until:"10.0.0"}),`https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/${this.faker.number.int(1249)}.jpg`}url(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999})}=e;return this.faker.helpers.arrayElement([this.urlLoremFlickr,({width:e,height:t})=>this.urlPicsumPhotos({width:e,height:t,grayscale:!1,blur:0})])({width:t,height:r})}urlLoremFlickr(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),category:a}=e;return`https://loremflickr.com/${t}/${r}${null==a?"":`/${a}`}?lock=${this.faker.number.int()}`}urlPicsumPhotos(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),grayscale:a=this.faker.datatype.boolean(),blur:i=this.faker.number.int({max:10})}=e,n=`https://picsum.photos/seed/${this.faker.string.alphanumeric({length:{min:5,max:10}})}/${t}/${r}`,o="number"==typeof i&&i>=1&&i<=10;return(a||o)&&(n+="?",a&&(n+="grayscale"),a&&o&&(n+="&"),o&&(n+=`blur=${i}`)),n}urlPlaceholder(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),backgroundColor:a=this.faker.color.rgb({format:"hex",prefix:""}),textColor:i=this.faker.color.rgb({format:"hex",prefix:""}),format:n=this.faker.helpers.arrayElement(["gif","jpeg","jpg","png","webp"]),text:o=this.faker.lorem.words()}=e,c="https://via.placeholder.com";return c+=`/${t}`,c+=`x${r}`,c+=`/${a}`,c+=`/${i}`,c+=`.${n}`,c+=`?text=${encodeURIComponent(o)}`,c}dataUri(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),color:a=this.faker.color.rgb(),type:i=this.faker.helpers.arrayElements(["svg-uri","svg-base64"])}=e,n=`${t}x${r}`;return"svg-uri"===i?`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(n)}`:`data:image/svg+xml;base64,${CC(n)}`}},SC=Object.fromEntries([["А","A"],["а","a"],["Б","B"],["б","b"],["В","V"],["в","v"],["Г","G"],["г","g"],["Д","D"],["д","d"],["ъе","ye"],["Ъе","Ye"],["ъЕ","yE"],["ЪЕ","YE"],["Е","E"],["е","e"],["Ё","Yo"],["ё","yo"],["Ж","Zh"],["ж","zh"],["З","Z"],["з","z"],["И","I"],["и","i"],["ый","iy"],["Ый","Iy"],["ЫЙ","IY"],["ыЙ","iY"],["Й","Y"],["й","y"],["К","K"],["к","k"],["Л","L"],["л","l"],["М","M"],["м","m"],["Н","N"],["н","n"],["О","O"],["о","o"],["П","P"],["п","p"],["Р","R"],["р","r"],["С","S"],["с","s"],["Т","T"],["т","t"],["У","U"],["у","u"],["Ф","F"],["ф","f"],["Х","Kh"],["х","kh"],["Ц","Ts"],["ц","ts"],["Ч","Ch"],["ч","ch"],["Ш","Sh"],["ш","sh"],["Щ","Sch"],["щ","sch"],["Ъ",""],["ъ",""],["Ы","Y"],["ы","y"],["Ь",""],["ь",""],["Э","E"],["э","e"],["Ю","Yu"],["ю","yu"],["Я","Ya"],["я","ya"]]),AC=Object.fromEntries([["α","a"],["β","v"],["γ","g"],["δ","d"],["ε","e"],["ζ","z"],["η","i"],["θ","th"],["ι","i"],["κ","k"],["λ","l"],["μ","m"],["ν","n"],["ξ","ks"],["ο","o"],["π","p"],["ρ","r"],["σ","s"],["τ","t"],["υ","y"],["φ","f"],["χ","x"],["ψ","ps"],["ω","o"],["ά","a"],["έ","e"],["ί","i"],["ό","o"],["ύ","y"],["ή","i"],["ώ","o"],["ς","s"],["ϊ","i"],["ΰ","y"],["ϋ","y"],["ΐ","i"],["Α","A"],["Β","B"],["Γ","G"],["Δ","D"],["Ε","E"],["Ζ","Z"],["Η","I"],["Θ","TH"],["Ι","I"],["Κ","K"],["Λ","L"],["Μ","M"],["Ν","N"],["Ξ","KS"],["Ο","O"],["Π","P"],["Ρ","R"],["Σ","S"],["Τ","T"],["Υ","Y"],["Φ","F"],["Χ","X"],["Ψ","PS"],["Ω","O"],["Ά","A"],["Έ","E"],["Ί","I"],["Ό","O"],["Ύ","Y"],["Ή","I"],["Ώ","O"],["Ϊ","I"],["Ϋ","Y"]]),MC=Object.fromEntries([["ء","e"],["آ","a"],["أ","a"],["ؤ","w"],["إ","i"],["ئ","y"],["ا","a"],["ب","b"],["ة","t"],["ت","t"],["ث","th"],["ج","j"],["ح","h"],["خ","kh"],["د","d"],["ذ","dh"],["ر","r"],["ز","z"],["س","s"],["ش","sh"],["ص","s"],["ض","d"],["ط","t"],["ظ","z"],["ع","e"],["غ","gh"],["ـ","_"],["ف","f"],["ق","q"],["ك","k"],["ل","l"],["م","m"],["ن","n"],["ه","h"],["و","w"],["ى","a"],["ي","y"],["َ‎","a"],["ُ","u"],["ِ‎","i"]]),TC=Object.fromEntries([["ա","a"],["Ա","A"],["բ","b"],["Բ","B"],["գ","g"],["Գ","G"],["դ","d"],["Դ","D"],["ե","ye"],["Ե","Ye"],["զ","z"],["Զ","Z"],["է","e"],["Է","E"],["ը","y"],["Ը","Y"],["թ","t"],["Թ","T"],["ժ","zh"],["Ժ","Zh"],["ի","i"],["Ի","I"],["լ","l"],["Լ","L"],["խ","kh"],["Խ","Kh"],["ծ","ts"],["Ծ","Ts"],["կ","k"],["Կ","K"],["հ","h"],["Հ","H"],["ձ","dz"],["Ձ","Dz"],["ղ","gh"],["Ղ","Gh"],["ճ","tch"],["Ճ","Tch"],["մ","m"],["Մ","M"],["յ","y"],["Յ","Y"],["ն","n"],["Ն","N"],["շ","sh"],["Շ","Sh"],["ո","vo"],["Ո","Vo"],["չ","ch"],["Չ","Ch"],["պ","p"],["Պ","P"],["ջ","j"],["Ջ","J"],["ռ","r"],["Ռ","R"],["ս","s"],["Ս","S"],["վ","v"],["Վ","V"],["տ","t"],["Տ","T"],["ր","r"],["Ր","R"],["ց","c"],["Ց","C"],["ու","u"],["ՈՒ","U"],["Ու","U"],["փ","p"],["Փ","P"],["ք","q"],["Ք","Q"],["օ","o"],["Օ","O"],["ֆ","f"],["Ֆ","F"],["և","yev"]]),BC={...SC,...AC,...MC,...Object.fromEntries([["چ","ch"],["ک","k"],["گ","g"],["پ","p"],["ژ","zh"],["ی","y"]]),...TC,...Object.fromEntries([["א","a"],["ב","b"],["ג","g"],["ד","d"],["ה","h"],["ו","v"],["ז","z"],["ח","ch"],["ט","t"],["י","y"],["כ","k"],["ך","kh"],["ל","l"],["ם","m"],["מ","m"],["ן","n"],["נ","n"],["ס","s"],["ע","a"],["פ","f"],["ף","ph"],["צ","ts"],["ץ","ts"],["ק","k"],["ר","r"],["ש","sh"],["ת","t"],["ו","v"]])};function LC(e){let t=()=>e.helpers.arrayElement(["AB","AF","AN","AR","AS","AZ","BE","BG","BN","BO","BR","BS","CA","CE","CO","CS","CU","CY","DA","DE","EL","EN","EO","ES","ET","EU","FA","FI","FJ","FO","FR","FY","GA","GD","GL","GV","HE","HI","HR","HT","HU","HY","ID","IS","IT","JA","JV","KA","KG","KO","KU","KW","KY","LA","LB","LI","LN","LT","LV","MG","MK","MN","MO","MS","MT","MY","NB","NE","NL","NN","NO","OC","PL","PT","RM","RO","RU","SC","SE","SK","SL","SO","SQ","SR","SV","SW","TK","TR","TY","UK","UR","UZ","VI","VO","YI","ZH"]),r=t=>e.helpers.arrayElement({lin:["i686","x86_64"],mac:["Intel","PPC","U; Intel","U; PPC"],win:["","WOW64","Win64; x64"]}[t]),a={net:()=>[e.number.int({min:1,max:4}),e.number.int(9),e.number.int({min:1e4,max:99999}),e.number.int(9)].join("."),nt:()=>[e.number.int({min:5,max:6}),e.number.int(3)].join("."),ie:()=>e.number.int({min:7,max:11}),trident:()=>[e.number.int({min:3,max:7}),e.number.int(1)].join("."),osx:t=>[10,e.number.int({min:5,max:10}),e.number.int(9)].join(t||"."),chrome:()=>[e.number.int({min:13,max:39}),0,e.number.int({min:800,max:899}),0].join("."),presto:()=>`2.9.${e.number.int({min:160,max:190})}`,presto2:()=>`${e.number.int({min:10,max:12})}.00`,safari:()=>[e.number.int({min:531,max:538}),e.number.int(2),e.number.int(2)].join(".")},i={firefox(t){let i=`${e.number.int({min:5,max:15})}${(t=>{let r="";for(let a=0;a=11?`Mozilla/5.0 (Windows NT 6.${e.number.int({min:1,max:3})}; Trident/7.0; ${e.datatype.boolean()?"Touch; ":""}rv:11.0) like Gecko`:`Mozilla/5.0 (compatible; MSIE ${t}.0; Windows NT ${a.nt()}; Trident/${a.trident()}${e.datatype.boolean()?`; .NET CLR ${a.net()}`:""})`},opera(i){let n=` Presto/${a.presto()} Version/${a.presto2()})`,o="win"===i?`(Windows NT ${a.nt()}; U; ${t()}${n}`:"lin"===i?`(X11; Linux ${r(i)}; U; ${t()}${n}`:`(Macintosh; Intel Mac OS X ${a.osx()} U; ${t()} Presto/${a.presto()} Version/${a.presto2()})`;return`Opera/${e.number.int({min:9,max:14})}.${e.number.int(99)} ${o}`},safari(i){let n=a.safari(),o=`${e.number.int({min:4,max:7})}.${e.number.int(1)}.${e.number.int(10)}`;return`Mozilla/5.0 ${"mac"===i?`(Macintosh; ${r("mac")} Mac OS X ${a.osx("_")} rv:${e.number.int({min:2,max:6})}.0; ${t()}) `:`(Windows; U; Windows NT ${a.nt()})`}AppleWebKit/${n} (KHTML, like Gecko) Version/${o} Safari/${n}`},chrome(e){let t=a.safari();return`Mozilla/5.0 ${"mac"===e?`(Macintosh; ${r("mac")} Mac OS X ${a.osx("_")}) `:"win"===e?`(Windows; U; Windows NT ${a.nt()})`:`(X11; Linux ${r(e)}`} AppleWebKit/${t} (KHTML, like Gecko) Chrome/${a.chrome()} Safari/${t}`}},[n,o]=(()=>{let t={chrome:["win","mac","lin"],firefox:["win","mac","lin"],opera:["win","mac","lin"],safari:["win","mac"],iexplorer:["win"]},r=e.helpers.objectKey(t);return[r,e.helpers.arrayElement(t[r])]})();return i[n](o)}var EC=class extends _w{email(e={}){let{firstName:t,lastName:r,provider:a=this.faker.helpers.arrayElement(this.faker.definitions.internet.free_email),allowSpecialCharacters:i=!1}=e,n=this.userName({firstName:t,lastName:r});if(n=n.replaceAll(/[^A-Za-z0-9._+-]+/g,""),n=n.substring(0,50),i){let e=[..."._-"],t=[...".!#$%&'*+-/=?^_`{|}~"];n=n.replace(this.faker.helpers.arrayElement(e),this.faker.helpers.arrayElement(t))}return n=n.replaceAll(/\.{2,}/g,"."),n=n.replace(/^\./,""),n=n.replace(/\.$/,""),`${n}@${a}`}exampleEmail(e={}){let{firstName:t,lastName:r,allowSpecialCharacters:a=!1}=e,i=this.faker.helpers.arrayElement(this.faker.definitions.internet.example_email);return this.email({firstName:t,lastName:r,provider:i,allowSpecialCharacters:a})}userName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName(),lastName:a}=e,i=this.faker.helpers.arrayElement([".","_"]),n=this.faker.number.int(99),o=[()=>`${t}${i}${r}${n}`,()=>`${t}${i}${r}`];a||o.push((()=>`${t}${n}`));let c=this.faker.helpers.arrayElement(o)();return c=c.normalize("NFKD").replaceAll(/[\u0300-\u036F]/g,""),c=[...c].map((e=>{if(BC[e])return BC[e];let t=e.codePointAt(0)??Number.NaN;return t<128?e:t.toString(36)})).join(""),c=c.toString().replaceAll("'",""),c=c.replaceAll(" ",""),c}displayName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName()}=e,a=this.faker.helpers.arrayElement([".","_"]),i=this.faker.number.int(99),n=[()=>`${t}${i}`,()=>`${t}${a}${r}`,()=>`${t}${a}${r}${i}`],o=this.faker.helpers.arrayElement(n)();return o=o.toString().replaceAll("'",""),o=o.replaceAll(" ",""),o}protocol(){return this.faker.helpers.arrayElement(["http","https"])}httpMethod(){return this.faker.helpers.arrayElement(["GET","POST","PUT","DELETE","PATCH"])}httpStatusCode(e={}){let{types:t=Object.keys(this.faker.definitions.internet.http_status_code)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.http_status_code[r])}url(e={}){let{appendSlash:t=this.faker.datatype.boolean(),protocol:r="https"}=e;return`${r}://${this.domainName()}${t?"/":""}`}domainName(){return`${this.domainWord()}.${this.domainSuffix()}`}domainSuffix(){return this.faker.helpers.arrayElement(this.faker.definitions.internet.domain_suffix)}domainWord(){return this.faker.helpers.slugify(`${this.faker.word.adjective()}-${this.faker.word.noun()}`).toLowerCase()}ip(){return this.faker.datatype.boolean()?this.ipv4():this.ipv6()}ipv4(){return Array.from({length:4},(()=>this.faker.number.int(255))).join(".")}ipv6(){return Array.from({length:8},(()=>this.faker.string.hexadecimal({length:4,casing:"lower",prefix:""}))).join(":")}port(){return this.faker.number.int(65535)}userAgent(){return LC(this.faker)}color(e={}){let{redBase:t=0,greenBase:r=0,blueBase:a=0}=e,i=e=>Math.floor((this.faker.number.int(256)+e)/2).toString(16).padStart(2,"0");return`#${i(t)}${i(r)}${i(a)}`}mac(e={}){"string"==typeof e&&(e={separator:e});let t,{separator:r=":"}=e,a="";for([":","-",""].includes(r)||(r=":"),t=0;t<12;t++)a+=this.faker.number.hex(15),t%2==1&&11!==t&&(a+=r);return a}password(e={}){let t=/[aeiouAEIOU]$/,r=/[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/,a=(e,i,n,o)=>{if(o.length>=e)return o;i&&(n=r.test(o)?t:r);let c=this.faker.number.int(94)+33,l=String.fromCodePoint(c);return i&&(l=l.toLowerCase()),n.test(l)?a(e,i,n,o+l):a(e,i,n,o)},{length:i=15,memorable:n=!1,pattern:o=/\w/,prefix:c=""}=e;return a(i,n,o,c)}emoji(e={}){let{types:t=Object.keys(this.faker.definitions.internet.emoji)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.emoji[r])}},RC=class extends _w{zipCode(e={}){"string"==typeof e&&(e={format:e});let{state:t}=e;if(null!=t){let e=this.faker.definitions.location.postcode_by_state[t];if(null==e)throw new ww(`No zip code definition found for state "${t}"`);return this.faker.helpers.fake(e)}let{format:r=this.faker.definitions.location.postcode}=e;return"string"==typeof r&&(r=[r]),r=this.faker.helpers.arrayElement(r),this.faker.helpers.replaceSymbols(r)}city(){return this.faker.helpers.fake(this.faker.definitions.location.city_pattern)}buildingNumber(){return this.faker.helpers.arrayElement(this.faker.definitions.location.building_number).replaceAll(/#+/g,(e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1})))}street(){return this.faker.helpers.fake(this.faker.definitions.location.street_pattern)}streetAddress(e={}){"boolean"==typeof e&&(e={useFullAddress:e});let{useFullAddress:t}=e,r=this.faker.definitions.location.street_address[t?"full":"normal"];return this.faker.helpers.fake(r)}secondaryAddress(){return this.faker.helpers.fake(this.faker.definitions.location.secondary_address).replaceAll(/#+/g,(e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1})))}county(){return this.faker.helpers.arrayElement(this.faker.definitions.location.county)}country(){return this.faker.helpers.arrayElement(this.faker.definitions.location.country)}countryCode(e={}){"string"==typeof e&&(e={variant:e});let{variant:t="alpha-2"}=e,r=(()=>{switch(t){case"numeric":return"numeric";case"alpha-3":return"alpha3";case"alpha-2":return"alpha2"}})();return this.faker.helpers.arrayElement(this.faker.definitions.location.country_code)[r]}state(e={}){let{abbreviated:t=!1}=e,r=t?this.faker.definitions.location.state_abbr:this.faker.definitions.location.state;return this.faker.helpers.arrayElement(r)}latitude(e={}){let{max:t=90,min:r=-90,precision:a=4}=e;return this.faker.number.float({min:r,max:t,fractionDigits:a})}longitude(e={}){let{max:t=180,min:r=-180,precision:a=4}=e;return this.faker.number.float({max:t,min:r,fractionDigits:a})}direction(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal_abbr,...this.faker.definitions.location.direction.ordinal_abbr]):this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal,...this.faker.definitions.location.direction.ordinal])}cardinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal)}ordinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal)}nearbyGPSCoordinate(e={}){let{origin:t,radius:r=10,isMetric:a=!1}=e;if(null==t)return[this.latitude(),this.longitude()];let i=this.faker.number.float({max:2*Math.PI,fractionDigits:5}),n=a?r:1.60934*r,o=.995*this.faker.number.float({max:n,fractionDigits:3})/(4e4/360),c=[t[0]+Math.sin(i)*o,t[1]+Math.cos(i)*o];return c[0]=c[0]%180,(c[0]<-90||c[0]>90)&&(c[0]=180*Math.sign(c[0])-c[0],c[1]+=180),c[1]=(c[1]%360+540)%360-180,[c[0],c[1]]}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.location.time_zone)}};var HC={fail:()=>{throw new ww("No words found that match the given length.")},closest:(e,t)=>{let r=function(e,t,r=e=>e){let a={};for(let i of e){let e=t(i);void 0===a[e]&&(a[e]=[]),a[e].push(r(i))}return a}(e,(e=>e.length)),a=Object.keys(r).map(Number),i=Math.min(...a),n=Math.max(...a),o=Math.min(t.min-i,n-t.max);return e.filter((e=>e.length===t.min-o||e.length===t.max+o))},shortest:e=>{let t=Math.min(...e.map((e=>e.length)));return e.filter((e=>e.length===t))},longest:e=>{let t=Math.max(...e.map((e=>e.length)));return e.filter((e=>e.length===t))},"any-length":e=>[...e]};function DC(e){let{wordList:t,length:r,strategy:a="any-length"}=e;if(r){let e="number"==typeof r?e=>e.length===r:e=>e.length>=r.min&&e.length<=r.max,i=t.filter(e);return i.length>0?i:"number"==typeof r?HC[a](t,{min:r,max:r}):HC[a](t,r)}return"shortest"===a||"longest"===a?HC[a](t):[...t]}var PC=class extends _w{word(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.lorem.word}))}words(e=3){return this.faker.helpers.multiple((()=>this.word()),{count:e}).join(" ")}sentence(e={min:3,max:10}){let t=this.words(e);return`${t.charAt(0).toUpperCase()+t.substring(1)}.`}slug(e=3){let t=this.words(e);return this.faker.helpers.slugify(t)}sentences(e={min:2,max:6},t=" "){return this.faker.helpers.multiple((()=>this.sentence()),{count:e}).join(t)}paragraph(e=3){return this.sentences(e)}paragraphs(e=3,t="\n"){return this.faker.helpers.multiple((()=>this.paragraph()),{count:e}).join(t)}text(){return this[this.faker.helpers.arrayElement(["sentence","sentences","paragraph","paragraphs","lines"])]()}lines(e={min:1,max:5}){return this.sentences(e,"\n")}},NC=class extends _w{album(){return this.faker.helpers.arrayElement(this.faker.definitions.music.album)}artist(){return this.faker.helpers.arrayElement(this.faker.definitions.music.artist)}genre(){return this.faker.helpers.arrayElement(this.faker.definitions.music.genre)}songName(){return this.faker.helpers.arrayElement(this.faker.definitions.music.song_name)}},GC=class extends _w{number(e={}){let{style:t="human"}=e,r=this.faker.definitions.phone_number.format[t];if(!r)throw new Error(`No definitions for ${t} in this locale`);let a=this.faker.helpers.arrayElement(r);return rC(this.faker,a)}imei(){return this.faker.helpers.replaceCreditCardSymbols("##-######-######-L","#")}},IC=class extends _w{chemicalElement(){return this.faker.helpers.arrayElement(this.faker.definitions.science.chemical_element)}unit(){return this.faker.helpers.arrayElement(this.faker.definitions.science.unit)}},WC=["video","audio","image","text","application"],FC=["application/pdf","audio/mpeg","audio/wav","image/png","image/jpeg","image/gif","video/mp4","video/mpeg","text/html"],zC=["en","wl","ww"],OC={index:"o",slot:"s",mac:"x",pci:"p"},KC=["SUN","MON","TUE","WED","THU","FRI","SAT"],JC=class extends _w{fileName(e={}){let{extensionCount:t=1}=e,r=this.faker.word.words().toLowerCase().replaceAll(/\W/g,"_"),a=this.faker.helpers.multiple((()=>this.fileExt()),{count:t}).join(".");return 0===a.length?r:`${r}.${a}`}commonFileName(e){return`${this.fileName({extensionCount:0})}.${e||this.commonFileExt()}`}mimeType(){let e=Object.keys(this.faker.definitions.system.mime_type);return this.faker.helpers.arrayElement(e)}commonFileType(){return this.faker.helpers.arrayElement(WC)}commonFileExt(){return this.fileExt(this.faker.helpers.arrayElement(FC))}fileType(){let e=this.faker.definitions.system.mime_type,t=new Set(Object.keys(e).map((e=>e.split("/")[0])));return this.faker.helpers.arrayElement([...t])}fileExt(e){let t=this.faker.definitions.system.mime_type;if("string"==typeof e)return this.faker.helpers.arrayElement(t[e].extensions);let r=new Set(Object.values(t).flatMap((({extensions:e})=>e)));return this.faker.helpers.arrayElement([...r])}directoryPath(){let e=this.faker.definitions.system.directory_path;return this.faker.helpers.arrayElement(e)}filePath(){return`${this.directoryPath()}/${this.fileName()}`}semver(){return[this.faker.number.int(9),this.faker.number.int(9),this.faker.number.int(9)].join(".")}networkInterface(e={}){let t,{interfaceType:r=this.faker.helpers.arrayElement(zC),interfaceSchema:a=this.faker.helpers.objectKey(OC)}=e,i="",n=()=>this.faker.string.numeric({allowLeadingZeros:!0});switch(a){case"index":t=n();break;case"slot":t=`${n()}${this.faker.helpers.maybe((()=>`f${n()}`))??""}${this.faker.helpers.maybe((()=>`d${n()}`))??""}`;break;case"mac":t=this.faker.internet.mac("");break;case"pci":i=this.faker.helpers.maybe((()=>`P${n()}`))??"",t=`${n()}s${n()}${this.faker.helpers.maybe((()=>`f${n()}`))??""}${this.faker.helpers.maybe((()=>`d${n()}`))??""}`}return`${i}${r}${OC[a]}${t}`}cron(e={}){let{includeYear:t=!1,includeNonStandard:r=!1}=e,a=[this.faker.number.int(59),"*"],i=[this.faker.number.int(23),"*"],n=[this.faker.number.int({min:1,max:31}),"*","?"],o=[this.faker.number.int({min:1,max:12}),"*"],c=[this.faker.number.int(6),this.faker.helpers.arrayElement(KC),"*","?"],l=[this.faker.number.int({min:1970,max:2099}),"*"],s=this.faker.helpers.arrayElement(a),u=this.faker.helpers.arrayElement(i),h=this.faker.helpers.arrayElement(n),d=this.faker.helpers.arrayElement(o),p=this.faker.helpers.arrayElement(c),y=this.faker.helpers.arrayElement(l),f=`${s} ${u} ${h} ${d} ${p}`;t&&(f+=` ${y}`);return!r||this.faker.datatype.boolean()?f:this.faker.helpers.arrayElement(["@annually","@daily","@hourly","@monthly","@reboot","@weekly","@yearly"])}},VC=class extends _w{vehicle(){return`${this.manufacturer()} ${this.model()}`}manufacturer(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.manufacturer)}model(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.model)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.type)}fuel(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.fuel)}vin(){let e=["o","i","q","O","I","Q"];return`${this.faker.string.alphanumeric({length:10,casing:"upper",exclude:e})}${this.faker.string.alpha({length:1,casing:"upper",exclude:e})}${this.faker.string.alphanumeric({length:1,casing:"upper",exclude:e})}${this.faker.string.numeric({length:5,allowLeadingZeros:!0})}`}color(){return this.faker.color.human()}vrm(){return`${this.faker.string.alpha({length:2,casing:"upper"})}${this.faker.string.numeric({length:2,allowLeadingZeros:!0})}${this.faker.string.alpha({length:3,casing:"upper"})}`}bicycle(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.bicycle_type)}},jC=class extends _w{adjective(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.adjective}))}adverb(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.adverb}))}conjunction(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.conjunction}))}interjection(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.interjection}))}noun(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.noun}))}preposition(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.preposition}))}verb(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.verb}))}sample(e={}){let t=this.faker.helpers.shuffle([this.adjective,this.adverb,this.conjunction,this.interjection,this.noun,this.preposition,this.verb]);for(let r of t)try{return r(e)}catch{continue}throw new ww("No matching word data available for the current locale")}words(e={}){"number"==typeof e&&(e={count:e});let{count:t={min:1,max:3}}=e;return this.faker.helpers.multiple((()=>this.sample()),{count:t}).join(" ")}},YC=["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New_York","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],$C={color:{space:["Academy Color Encoding System (ACES)","Adobe RGB","Adobe Wide Gamut RGB","British Standard Colour (BS)","CIE 1931 XYZ","CIELAB","CIELUV","CIEUVW","CMY","CMYK","DCI-P3","Display-P3","Federal Standard 595C","HKS","HSL","HSLA","HSLuv","HSV","HWB","LCh","LMS","Munsell Color System","Natural Color System (NSC)","Pantone Matching System (PMS)","ProPhoto RGB Color Space","RAL","RG","RGBA","RGK","Rec. 2020","Rec. 2100","Rec. 601","Rec. 709","Uniform Color Spaces (UCSs)","YDbDr","YIQ","YPbPr","sRGB","sYCC","scRGB","xvYCC"]},database:{collation:["ascii_bin","ascii_general_ci","cp1250_bin","cp1250_general_ci","utf8_bin","utf8_general_ci","utf8_unicode_ci"],engine:["ARCHIVE","BLACKHOLE","CSV","InnoDB","MEMORY","MyISAM"],type:["bigint","binary","bit","blob","boolean","date","datetime","decimal","double","enum","float","geometry","int","mediumint","point","real","serial","set","smallint","text","time","timestamp","tinyint","varchar"]},date:{time_zone:YC},hacker:{abbreviation:["ADP","AGP","AI","API","ASCII","CLI","COM","CSS","DNS","DRAM","EXE","FTP","GB","HDD","HEX","HTTP","IB","IP","JBOD","JSON","OCR","PCI","PNG","RAM","RSS","SAS","SCSI","SDD","SMS","SMTP","SQL","SSD","SSL","TCP","THX","TLS","UDP","USB","UTF8","VGA","XML","XSS"]},internet:{emoji:{smiley:["😀","😃","😄","😁","😆","😅","🤣","😂","🙂","🙃","😉","😊","😇","🥰","😍","🤩","😘","😗","☺️","😚","😙","🥲","😋","😛","😜","🤪","😝","🤑","🤗","🤭","🤫","🤔","🤐","🤨","😐","😑","😶","😶‍🌫️","😏","😒","🙄","😬","😮‍💨","🤥","😌","😔","😪","🤤","😴","😷","🤒","🤕","🤢","🤮","🤧","🥵","🥶","🥴","😵","😵‍💫","🤯","🤠","🥳","🥸","😎","🤓","🧐","😕","😟","🙁","☹️","😮","😯","😲","😳","🥺","😦","😧","😨","😰","😥","😢","😭","😱","😖","😣","😞","😓","😩","😫","🥱","😤","😡","😠","🤬","😈","👿","💀","☠️","💩","🤡","👹","👺","👻","👽","👾","🤖","😺","😸","😹","😻","😼","😽","🙀","😿","😾","🙈","🙉","🙊","💋","💌","💘","💝","💖","💗","💓","💞","💕","💟","❣️","💔","❤️‍🔥","❤️‍🩹","❤️","🧡","💛","💚","💙","💜","🤎","🖤","🤍","💯","💢","💥","💫","💦","💨","🕳️","💣","💬","👁️‍🗨️","🗨️","🗯️","💭","💤"],body:["👋","👋🏻","👋🏼","👋🏽","👋🏾","👋🏿","🤚","🤚🏻","🤚🏼","🤚🏽","🤚🏾","🤚🏿","🖐️","🖐🏻","🖐🏼","🖐🏽","🖐🏾","🖐🏿","✋","✋🏻","✋🏼","✋🏽","✋🏾","✋🏿","🖖","🖖🏻","🖖🏼","🖖🏽","🖖🏾","🖖🏿","👌","👌🏻","👌🏼","👌🏽","👌🏾","👌🏿","🤌","🤌🏻","🤌🏼","🤌🏽","🤌🏾","🤌🏿","🤏","🤏🏻","🤏🏼","🤏🏽","🤏🏾","🤏🏿","✌️","✌🏻","✌🏼","✌🏽","✌🏾","✌🏿","🤞","🤞🏻","🤞🏼","🤞🏽","🤞🏾","🤞🏿","🤟","🤟🏻","🤟🏼","🤟🏽","🤟🏾","🤟🏿","🤘","🤘🏻","🤘🏼","🤘🏽","🤘🏾","🤘🏿","🤙","🤙🏻","🤙🏼","🤙🏽","🤙🏾","🤙🏿","👈","👈🏻","👈🏼","👈🏽","👈🏾","👈🏿","👉","👉🏻","👉🏼","👉🏽","👉🏾","👉🏿","👆","👆🏻","👆🏼","👆🏽","👆🏾","👆🏿","🖕","🖕🏻","🖕🏼","🖕🏽","🖕🏾","🖕🏿","👇","👇🏻","👇🏼","👇🏽","👇🏾","👇🏿","☝️","☝🏻","☝🏼","☝🏽","☝🏾","☝🏿","👍","👍🏻","👍🏼","👍🏽","👍🏾","👍🏿","👎","👎🏻","👎🏼","👎🏽","👎🏾","👎🏿","✊","✊🏻","✊🏼","✊🏽","✊🏾","✊🏿","👊","👊🏻","👊🏼","👊🏽","👊🏾","👊🏿","🤛","🤛🏻","🤛🏼","🤛🏽","🤛🏾","🤛🏿","🤜","🤜🏻","🤜🏼","🤜🏽","🤜🏾","🤜🏿","👏","👏🏻","👏🏼","👏🏽","👏🏾","👏🏿","🙌","🙌🏻","🙌🏼","🙌🏽","🙌🏾","🙌🏿","👐","👐🏻","👐🏼","👐🏽","👐🏾","👐🏿","🤲","🤲🏻","🤲🏼","🤲🏽","🤲🏾","🤲🏿","🤝","🙏","🙏🏻","🙏🏼","🙏🏽","🙏🏾","🙏🏿","✍️","✍🏻","✍🏼","✍🏽","✍🏾","✍🏿","💅","💅🏻","💅🏼","💅🏽","💅🏾","💅🏿","🤳","🤳🏻","🤳🏼","🤳🏽","🤳🏾","🤳🏿","💪","💪🏻","💪🏼","💪🏽","💪🏾","💪🏿","🦾","🦿","🦵","🦵🏻","🦵🏼","🦵🏽","🦵🏾","🦵🏿","🦶","🦶🏻","🦶🏼","🦶🏽","🦶🏾","🦶🏿","👂","👂🏻","👂🏼","👂🏽","👂🏾","👂🏿","🦻","🦻🏻","🦻🏼","🦻🏽","🦻🏾","🦻🏿","👃","👃🏻","👃🏼","👃🏽","👃🏾","👃🏿","🧠","🫀","🫁","🦷","🦴","👀","👁️","👅","👄"],person:["👶","👶🏻","👶🏼","👶🏽","👶🏾","👶🏿","🧒","🧒🏻","🧒🏼","🧒🏽","🧒🏾","🧒🏿","👦","👦🏻","👦🏼","👦🏽","👦🏾","👦🏿","👧","👧🏻","👧🏼","👧🏽","👧🏾","👧🏿","🧑","🧑🏻","🧑🏼","🧑🏽","🧑🏾","🧑🏿","👱","👱🏻","👱🏼","👱🏽","👱🏾","👱🏿","👨","👨🏻","👨🏼","👨🏽","👨🏾","👨🏿","🧔","🧔🏻","🧔🏼","🧔🏽","🧔🏾","🧔🏿","🧔‍♂️","🧔🏻‍♂️","🧔🏼‍♂️","🧔🏽‍♂️","🧔🏾‍♂️","🧔🏿‍♂️","🧔‍♀️","🧔🏻‍♀️","🧔🏼‍♀️","🧔🏽‍♀️","🧔🏾‍♀️","🧔🏿‍♀️","👨‍🦰","👨🏻‍🦰","👨🏼‍🦰","👨🏽‍🦰","👨🏾‍🦰","👨🏿‍🦰","👨‍🦱","👨🏻‍🦱","👨🏼‍🦱","👨🏽‍🦱","👨🏾‍🦱","👨🏿‍🦱","👨‍🦳","👨🏻‍🦳","👨🏼‍🦳","👨🏽‍🦳","👨🏾‍🦳","👨🏿‍🦳","👨‍🦲","👨🏻‍🦲","👨🏼‍🦲","👨🏽‍🦲","👨🏾‍🦲","👨🏿‍🦲","👩","👩🏻","👩🏼","👩🏽","👩🏾","👩🏿","👩‍🦰","👩🏻‍🦰","👩🏼‍🦰","👩🏽‍🦰","👩🏾‍🦰","👩🏿‍🦰","🧑‍🦰","🧑🏻‍🦰","🧑🏼‍🦰","🧑🏽‍🦰","🧑🏾‍🦰","🧑🏿‍🦰","👩‍🦱","👩🏻‍🦱","👩🏼‍🦱","👩🏽‍🦱","👩🏾‍🦱","👩🏿‍🦱","🧑‍🦱","🧑🏻‍🦱","🧑🏼‍🦱","🧑🏽‍🦱","🧑🏾‍🦱","🧑🏿‍🦱","👩‍🦳","👩🏻‍🦳","👩🏼‍🦳","👩🏽‍🦳","👩🏾‍🦳","👩🏿‍🦳","🧑‍🦳","🧑🏻‍🦳","🧑🏼‍🦳","🧑🏽‍🦳","🧑🏾‍🦳","🧑🏿‍🦳","👩‍🦲","👩🏻‍🦲","👩🏼‍🦲","👩🏽‍🦲","👩🏾‍🦲","👩🏿‍🦲","🧑‍🦲","🧑🏻‍🦲","🧑🏼‍🦲","🧑🏽‍🦲","🧑🏾‍🦲","🧑🏿‍🦲","👱‍♀️","👱🏻‍♀️","👱🏼‍♀️","👱🏽‍♀️","👱🏾‍♀️","👱🏿‍♀️","👱‍♂️","👱🏻‍♂️","👱🏼‍♂️","👱🏽‍♂️","👱🏾‍♂️","👱🏿‍♂️","🧓","🧓🏻","🧓🏼","🧓🏽","🧓🏾","🧓🏿","👴","👴🏻","👴🏼","👴🏽","👴🏾","👴🏿","👵","👵🏻","👵🏼","👵🏽","👵🏾","👵🏿","🙍","🙍🏻","🙍🏼","🙍🏽","🙍🏾","🙍🏿","🙍‍♂️","🙍🏻‍♂️","🙍🏼‍♂️","🙍🏽‍♂️","🙍🏾‍♂️","🙍🏿‍♂️","🙍‍♀️","🙍🏻‍♀️","🙍🏼‍♀️","🙍🏽‍♀️","🙍🏾‍♀️","🙍🏿‍♀️","🙎","🙎🏻","🙎🏼","🙎🏽","🙎🏾","🙎🏿","🙎‍♂️","🙎🏻‍♂️","🙎🏼‍♂️","🙎🏽‍♂️","🙎🏾‍♂️","🙎🏿‍♂️","🙎‍♀️","🙎🏻‍♀️","🙎🏼‍♀️","🙎🏽‍♀️","🙎🏾‍♀️","🙎🏿‍♀️","🙅","🙅🏻","🙅🏼","🙅🏽","🙅🏾","🙅🏿","🙅‍♂️","🙅🏻‍♂️","🙅🏼‍♂️","🙅🏽‍♂️","🙅🏾‍♂️","🙅🏿‍♂️","🙅‍♀️","🙅🏻‍♀️","🙅🏼‍♀️","🙅🏽‍♀️","🙅🏾‍♀️","🙅🏿‍♀️","🙆","🙆🏻","🙆🏼","🙆🏽","🙆🏾","🙆🏿","🙆‍♂️","🙆🏻‍♂️","🙆🏼‍♂️","🙆🏽‍♂️","🙆🏾‍♂️","🙆🏿‍♂️","🙆‍♀️","🙆🏻‍♀️","🙆🏼‍♀️","🙆🏽‍♀️","🙆🏾‍♀️","🙆🏿‍♀️","💁","💁🏻","💁🏼","💁🏽","💁🏾","💁🏿","💁‍♂️","💁🏻‍♂️","💁🏼‍♂️","💁🏽‍♂️","💁🏾‍♂️","💁🏿‍♂️","💁‍♀️","💁🏻‍♀️","💁🏼‍♀️","💁🏽‍♀️","💁🏾‍♀️","💁🏿‍♀️","🙋","🙋🏻","🙋🏼","🙋🏽","🙋🏾","🙋🏿","🙋‍♂️","🙋🏻‍♂️","🙋🏼‍♂️","🙋🏽‍♂️","🙋🏾‍♂️","🙋🏿‍♂️","🙋‍♀️","🙋🏻‍♀️","🙋🏼‍♀️","🙋🏽‍♀️","🙋🏾‍♀️","🙋🏿‍♀️","🧏","🧏🏻","🧏🏼","🧏🏽","🧏🏾","🧏🏿","🧏‍♂️","🧏🏻‍♂️","🧏🏼‍♂️","🧏🏽‍♂️","🧏🏾‍♂️","🧏🏿‍♂️","🧏‍♀️","🧏🏻‍♀️","🧏🏼‍♀️","🧏🏽‍♀️","🧏🏾‍♀️","🧏🏿‍♀️","🙇","🙇🏻","🙇🏼","🙇🏽","🙇🏾","🙇🏿","🙇‍♂️","🙇🏻‍♂️","🙇🏼‍♂️","🙇🏽‍♂️","🙇🏾‍♂️","🙇🏿‍♂️","🙇‍♀️","🙇🏻‍♀️","🙇🏼‍♀️","🙇🏽‍♀️","🙇🏾‍♀️","🙇🏿‍♀️","🤦","🤦🏻","🤦🏼","🤦🏽","🤦🏾","🤦🏿","🤦‍♂️","🤦🏻‍♂️","🤦🏼‍♂️","🤦🏽‍♂️","🤦🏾‍♂️","🤦🏿‍♂️","🤦‍♀️","🤦🏻‍♀️","🤦🏼‍♀️","🤦🏽‍♀️","🤦🏾‍♀️","🤦🏿‍♀️","🤷","🤷🏻","🤷🏼","🤷🏽","🤷🏾","🤷🏿","🤷‍♂️","🤷🏻‍♂️","🤷🏼‍♂️","🤷🏽‍♂️","🤷🏾‍♂️","🤷🏿‍♂️","🤷‍♀️","🤷🏻‍♀️","🤷🏼‍♀️","🤷🏽‍♀️","🤷🏾‍♀️","🤷🏿‍♀️","🧑‍⚕️","🧑🏻‍⚕️","🧑🏼‍⚕️","🧑🏽‍⚕️","🧑🏾‍⚕️","🧑🏿‍⚕️","👨‍⚕️","👨🏻‍⚕️","👨🏼‍⚕️","👨🏽‍⚕️","👨🏾‍⚕️","👨🏿‍⚕️","👩‍⚕️","👩🏻‍⚕️","👩🏼‍⚕️","👩🏽‍⚕️","👩🏾‍⚕️","👩🏿‍⚕️","🧑‍🎓","🧑🏻‍🎓","🧑🏼‍🎓","🧑🏽‍🎓","🧑🏾‍🎓","🧑🏿‍🎓","👨‍🎓","👨🏻‍🎓","👨🏼‍🎓","👨🏽‍🎓","👨🏾‍🎓","👨🏿‍🎓","👩‍🎓","👩🏻‍🎓","👩🏼‍🎓","👩🏽‍🎓","👩🏾‍🎓","👩🏿‍🎓","🧑‍🏫","🧑🏻‍🏫","🧑🏼‍🏫","🧑🏽‍🏫","🧑🏾‍🏫","🧑🏿‍🏫","👨‍🏫","👨🏻‍🏫","👨🏼‍🏫","👨🏽‍🏫","👨🏾‍🏫","👨🏿‍🏫","👩‍🏫","👩🏻‍🏫","👩🏼‍🏫","👩🏽‍🏫","👩🏾‍🏫","👩🏿‍🏫","🧑‍⚖️","🧑🏻‍⚖️","🧑🏼‍⚖️","🧑🏽‍⚖️","🧑🏾‍⚖️","🧑🏿‍⚖️","👨‍⚖️","👨🏻‍⚖️","👨🏼‍⚖️","👨🏽‍⚖️","👨🏾‍⚖️","👨🏿‍⚖️","👩‍⚖️","👩🏻‍⚖️","👩🏼‍⚖️","👩🏽‍⚖️","👩🏾‍⚖️","👩🏿‍⚖️","🧑‍🌾","🧑🏻‍🌾","🧑🏼‍🌾","🧑🏽‍🌾","🧑🏾‍🌾","🧑🏿‍🌾","👨‍🌾","👨🏻‍🌾","👨🏼‍🌾","👨🏽‍🌾","👨🏾‍🌾","👨🏿‍🌾","👩‍🌾","👩🏻‍🌾","👩🏼‍🌾","👩🏽‍🌾","👩🏾‍🌾","👩🏿‍🌾","🧑‍🍳","🧑🏻‍🍳","🧑🏼‍🍳","🧑🏽‍🍳","🧑🏾‍🍳","🧑🏿‍🍳","👨‍🍳","👨🏻‍🍳","👨🏼‍🍳","👨🏽‍🍳","👨🏾‍🍳","👨🏿‍🍳","👩‍🍳","👩🏻‍🍳","👩🏼‍🍳","👩🏽‍🍳","👩🏾‍🍳","👩🏿‍🍳","🧑‍🔧","🧑🏻‍🔧","🧑🏼‍🔧","🧑🏽‍🔧","🧑🏾‍🔧","🧑🏿‍🔧","👨‍🔧","👨🏻‍🔧","👨🏼‍🔧","👨🏽‍🔧","👨🏾‍🔧","👨🏿‍🔧","👩‍🔧","👩🏻‍🔧","👩🏼‍🔧","👩🏽‍🔧","👩🏾‍🔧","👩🏿‍🔧","🧑‍🏭","🧑🏻‍🏭","🧑🏼‍🏭","🧑🏽‍🏭","🧑🏾‍🏭","🧑🏿‍🏭","👨‍🏭","👨🏻‍🏭","👨🏼‍🏭","👨🏽‍🏭","👨🏾‍🏭","👨🏿‍🏭","👩‍🏭","👩🏻‍🏭","👩🏼‍🏭","👩🏽‍🏭","👩🏾‍🏭","👩🏿‍🏭","🧑‍💼","🧑🏻‍💼","🧑🏼‍💼","🧑🏽‍💼","🧑🏾‍💼","🧑🏿‍💼","👨‍💼","👨🏻‍💼","👨🏼‍💼","👨🏽‍💼","👨🏾‍💼","👨🏿‍💼","👩‍💼","👩🏻‍💼","👩🏼‍💼","👩🏽‍💼","👩🏾‍💼","👩🏿‍💼","🧑‍🔬","🧑🏻‍🔬","🧑🏼‍🔬","🧑🏽‍🔬","🧑🏾‍🔬","🧑🏿‍🔬","👨‍🔬","👨🏻‍🔬","👨🏼‍🔬","👨🏽‍🔬","👨🏾‍🔬","👨🏿‍🔬","👩‍🔬","👩🏻‍🔬","👩🏼‍🔬","👩🏽‍🔬","👩🏾‍🔬","👩🏿‍🔬","🧑‍💻","🧑🏻‍💻","🧑🏼‍💻","🧑🏽‍💻","🧑🏾‍💻","🧑🏿‍💻","👨‍💻","👨🏻‍💻","👨🏼‍💻","👨🏽‍💻","👨🏾‍💻","👨🏿‍💻","👩‍💻","👩🏻‍💻","👩🏼‍💻","👩🏽‍💻","👩🏾‍💻","👩🏿‍💻","🧑‍🎤","🧑🏻‍🎤","🧑🏼‍🎤","🧑🏽‍🎤","🧑🏾‍🎤","🧑🏿‍🎤","👨‍🎤","👨🏻‍🎤","👨🏼‍🎤","👨🏽‍🎤","👨🏾‍🎤","👨🏿‍🎤","👩‍🎤","👩🏻‍🎤","👩🏼‍🎤","👩🏽‍🎤","👩🏾‍🎤","👩🏿‍🎤","🧑‍🎨","🧑🏻‍🎨","🧑🏼‍🎨","🧑🏽‍🎨","🧑🏾‍🎨","🧑🏿‍🎨","👨‍🎨","👨🏻‍🎨","👨🏼‍🎨","👨🏽‍🎨","👨🏾‍🎨","👨🏿‍🎨","👩‍🎨","👩🏻‍🎨","👩🏼‍🎨","👩🏽‍🎨","👩🏾‍🎨","👩🏿‍🎨","🧑‍✈️","🧑🏻‍✈️","🧑🏼‍✈️","🧑🏽‍✈️","🧑🏾‍✈️","🧑🏿‍✈️","👨‍✈️","👨🏻‍✈️","👨🏼‍✈️","👨🏽‍✈️","👨🏾‍✈️","👨🏿‍✈️","👩‍✈️","👩🏻‍✈️","👩🏼‍✈️","👩🏽‍✈️","👩🏾‍✈️","👩🏿‍✈️","🧑‍🚀","🧑🏻‍🚀","🧑🏼‍🚀","🧑🏽‍🚀","🧑🏾‍🚀","🧑🏿‍🚀","👨‍🚀","👨🏻‍🚀","👨🏼‍🚀","👨🏽‍🚀","👨🏾‍🚀","👨🏿‍🚀","👩‍🚀","👩🏻‍🚀","👩🏼‍🚀","👩🏽‍🚀","👩🏾‍🚀","👩🏿‍🚀","🧑‍🚒","🧑🏻‍🚒","🧑🏼‍🚒","🧑🏽‍🚒","🧑🏾‍🚒","🧑🏿‍🚒","👨‍🚒","👨🏻‍🚒","👨🏼‍🚒","👨🏽‍🚒","👨🏾‍🚒","👨🏿‍🚒","👩‍🚒","👩🏻‍🚒","👩🏼‍🚒","👩🏽‍🚒","👩🏾‍🚒","👩🏿‍🚒","👮","👮🏻","👮🏼","👮🏽","👮🏾","👮🏿","👮‍♂️","👮🏻‍♂️","👮🏼‍♂️","👮🏽‍♂️","👮🏾‍♂️","👮🏿‍♂️","👮‍♀️","👮🏻‍♀️","👮🏼‍♀️","👮🏽‍♀️","👮🏾‍♀️","👮🏿‍♀️","🕵️","🕵🏻","🕵🏼","🕵🏽","🕵🏾","🕵🏿","🕵️‍♂️","🕵🏻‍♂️","🕵🏼‍♂️","🕵🏽‍♂️","🕵🏾‍♂️","🕵🏿‍♂️","🕵️‍♀️","🕵🏻‍♀️","🕵🏼‍♀️","🕵🏽‍♀️","🕵🏾‍♀️","🕵🏿‍♀️","💂","💂🏻","💂🏼","💂🏽","💂🏾","💂🏿","💂‍♂️","💂🏻‍♂️","💂🏼‍♂️","💂🏽‍♂️","💂🏾‍♂️","💂🏿‍♂️","💂‍♀️","💂🏻‍♀️","💂🏼‍♀️","💂🏽‍♀️","💂🏾‍♀️","💂🏿‍♀️","🥷","🥷🏻","🥷🏼","🥷🏽","🥷🏾","🥷🏿","👷","👷🏻","👷🏼","👷🏽","👷🏾","👷🏿","👷‍♂️","👷🏻‍♂️","👷🏼‍♂️","👷🏽‍♂️","👷🏾‍♂️","👷🏿‍♂️","👷‍♀️","👷🏻‍♀️","👷🏼‍♀️","👷🏽‍♀️","👷🏾‍♀️","👷🏿‍♀️","🤴","🤴🏻","🤴🏼","🤴🏽","🤴🏾","🤴🏿","👸","👸🏻","👸🏼","👸🏽","👸🏾","👸🏿","👳","👳🏻","👳🏼","👳🏽","👳🏾","👳🏿","👳‍♂️","👳🏻‍♂️","👳🏼‍♂️","👳🏽‍♂️","👳🏾‍♂️","👳🏿‍♂️","👳‍♀️","👳🏻‍♀️","👳🏼‍♀️","👳🏽‍♀️","👳🏾‍♀️","👳🏿‍♀️","👲","👲🏻","👲🏼","👲🏽","👲🏾","👲🏿","🧕","🧕🏻","🧕🏼","🧕🏽","🧕🏾","🧕🏿","🤵","🤵🏻","🤵🏼","🤵🏽","🤵🏾","🤵🏿","🤵‍♂️","🤵🏻‍♂️","🤵🏼‍♂️","🤵🏽‍♂️","🤵🏾‍♂️","🤵🏿‍♂️","🤵‍♀️","🤵🏻‍♀️","🤵🏼‍♀️","🤵🏽‍♀️","🤵🏾‍♀️","🤵🏿‍♀️","👰","👰🏻","👰🏼","👰🏽","👰🏾","👰🏿","👰‍♂️","👰🏻‍♂️","👰🏼‍♂️","👰🏽‍♂️","👰🏾‍♂️","👰🏿‍♂️","👰‍♀️","👰🏻‍♀️","👰🏼‍♀️","👰🏽‍♀️","👰🏾‍♀️","👰🏿‍♀️","🤰","🤰🏻","🤰🏼","🤰🏽","🤰🏾","🤰🏿","🤱","🤱🏻","🤱🏼","🤱🏽","🤱🏾","🤱🏿","👩‍🍼","👩🏻‍🍼","👩🏼‍🍼","👩🏽‍🍼","👩🏾‍🍼","👩🏿‍🍼","👨‍🍼","👨🏻‍🍼","👨🏼‍🍼","👨🏽‍🍼","👨🏾‍🍼","👨🏿‍🍼","🧑‍🍼","🧑🏻‍🍼","🧑🏼‍🍼","🧑🏽‍🍼","🧑🏾‍🍼","🧑🏿‍🍼","👼","👼🏻","👼🏼","👼🏽","👼🏾","👼🏿","🎅","🎅🏻","🎅🏼","🎅🏽","🎅🏾","🎅🏿","🤶","🤶🏻","🤶🏼","🤶🏽","🤶🏾","🤶🏿","🧑‍🎄","🧑🏻‍🎄","🧑🏼‍🎄","🧑🏽‍🎄","🧑🏾‍🎄","🧑🏿‍🎄","🦸","🦸🏻","🦸🏼","🦸🏽","🦸🏾","🦸🏿","🦸‍♂️","🦸🏻‍♂️","🦸🏼‍♂️","🦸🏽‍♂️","🦸🏾‍♂️","🦸🏿‍♂️","🦸‍♀️","🦸🏻‍♀️","🦸🏼‍♀️","🦸🏽‍♀️","🦸🏾‍♀️","🦸🏿‍♀️","🦹","🦹🏻","🦹🏼","🦹🏽","🦹🏾","🦹🏿","🦹‍♂️","🦹🏻‍♂️","🦹🏼‍♂️","🦹🏽‍♂️","🦹🏾‍♂️","🦹🏿‍♂️","🦹‍♀️","🦹🏻‍♀️","🦹🏼‍♀️","🦹🏽‍♀️","🦹🏾‍♀️","🦹🏿‍♀️","🧙","🧙🏻","🧙🏼","🧙🏽","🧙🏾","🧙🏿","🧙‍♂️","🧙🏻‍♂️","🧙🏼‍♂️","🧙🏽‍♂️","🧙🏾‍♂️","🧙🏿‍♂️","🧙‍♀️","🧙🏻‍♀️","🧙🏼‍♀️","🧙🏽‍♀️","🧙🏾‍♀️","🧙🏿‍♀️","🧚","🧚🏻","🧚🏼","🧚🏽","🧚🏾","🧚🏿","🧚‍♂️","🧚🏻‍♂️","🧚🏼‍♂️","🧚🏽‍♂️","🧚🏾‍♂️","🧚🏿‍♂️","🧚‍♀️","🧚🏻‍♀️","🧚🏼‍♀️","🧚🏽‍♀️","🧚🏾‍♀️","🧚🏿‍♀️","🧛","🧛🏻","🧛🏼","🧛🏽","🧛🏾","🧛🏿","🧛‍♂️","🧛🏻‍♂️","🧛🏼‍♂️","🧛🏽‍♂️","🧛🏾‍♂️","🧛🏿‍♂️","🧛‍♀️","🧛🏻‍♀️","🧛🏼‍♀️","🧛🏽‍♀️","🧛🏾‍♀️","🧛🏿‍♀️","🧜","🧜🏻","🧜🏼","🧜🏽","🧜🏾","🧜🏿","🧜‍♂️","🧜🏻‍♂️","🧜🏼‍♂️","🧜🏽‍♂️","🧜🏾‍♂️","🧜🏿‍♂️","🧜‍♀️","🧜🏻‍♀️","🧜🏼‍♀️","🧜🏽‍♀️","🧜🏾‍♀️","🧜🏿‍♀️","🧝","🧝🏻","🧝🏼","🧝🏽","🧝🏾","🧝🏿","🧝‍♂️","🧝🏻‍♂️","🧝🏼‍♂️","🧝🏽‍♂️","🧝🏾‍♂️","🧝🏿‍♂️","🧝‍♀️","🧝🏻‍♀️","🧝🏼‍♀️","🧝🏽‍♀️","🧝🏾‍♀️","🧝🏿‍♀️","🧞","🧞‍♂️","🧞‍♀️","🧟","🧟‍♂️","🧟‍♀️","💆","💆🏻","💆🏼","💆🏽","💆🏾","💆🏿","💆‍♂️","💆🏻‍♂️","💆🏼‍♂️","💆🏽‍♂️","💆🏾‍♂️","💆🏿‍♂️","💆‍♀️","💆🏻‍♀️","💆🏼‍♀️","💆🏽‍♀️","💆🏾‍♀️","💆🏿‍♀️","💇","💇🏻","💇🏼","💇🏽","💇🏾","💇🏿","💇‍♂️","💇🏻‍♂️","💇🏼‍♂️","💇🏽‍♂️","💇🏾‍♂️","💇🏿‍♂️","💇‍♀️","💇🏻‍♀️","💇🏼‍♀️","💇🏽‍♀️","💇🏾‍♀️","💇🏿‍♀️","🚶","🚶🏻","🚶🏼","🚶🏽","🚶🏾","🚶🏿","🚶‍♂️","🚶🏻‍♂️","🚶🏼‍♂️","🚶🏽‍♂️","🚶🏾‍♂️","🚶🏿‍♂️","🚶‍♀️","🚶🏻‍♀️","🚶🏼‍♀️","🚶🏽‍♀️","🚶🏾‍♀️","🚶🏿‍♀️","🧍","🧍🏻","🧍🏼","🧍🏽","🧍🏾","🧍🏿","🧍‍♂️","🧍🏻‍♂️","🧍🏼‍♂️","🧍🏽‍♂️","🧍🏾‍♂️","🧍🏿‍♂️","🧍‍♀️","🧍🏻‍♀️","🧍🏼‍♀️","🧍🏽‍♀️","🧍🏾‍♀️","🧍🏿‍♀️","🧎","🧎🏻","🧎🏼","🧎🏽","🧎🏾","🧎🏿","🧎‍♂️","🧎🏻‍♂️","🧎🏼‍♂️","🧎🏽‍♂️","🧎🏾‍♂️","🧎🏿‍♂️","🧎‍♀️","🧎🏻‍♀️","🧎🏼‍♀️","🧎🏽‍♀️","🧎🏾‍♀️","🧎🏿‍♀️","🧑‍🦯","🧑🏻‍🦯","🧑🏼‍🦯","🧑🏽‍🦯","🧑🏾‍🦯","🧑🏿‍🦯","👨‍🦯","👨🏻‍🦯","👨🏼‍🦯","👨🏽‍🦯","👨🏾‍🦯","👨🏿‍🦯","👩‍🦯","👩🏻‍🦯","👩🏼‍🦯","👩🏽‍🦯","👩🏾‍🦯","👩🏿‍🦯","🧑‍🦼","🧑🏻‍🦼","🧑🏼‍🦼","🧑🏽‍🦼","🧑🏾‍🦼","🧑🏿‍🦼","👨‍🦼","👨🏻‍🦼","👨🏼‍🦼","👨🏽‍🦼","👨🏾‍🦼","👨🏿‍🦼","👩‍🦼","👩🏻‍🦼","👩🏼‍🦼","👩🏽‍🦼","👩🏾‍🦼","👩🏿‍🦼","🧑‍🦽","🧑🏻‍🦽","🧑🏼‍🦽","🧑🏽‍🦽","🧑🏾‍🦽","🧑🏿‍🦽","👨‍🦽","👨🏻‍🦽","👨🏼‍🦽","👨🏽‍🦽","👨🏾‍🦽","👨🏿‍🦽","👩‍🦽","👩🏻‍🦽","👩🏼‍🦽","👩🏽‍🦽","👩🏾‍🦽","👩🏿‍🦽","🏃","🏃🏻","🏃🏼","🏃🏽","🏃🏾","🏃🏿","🏃‍♂️","🏃🏻‍♂️","🏃🏼‍♂️","🏃🏽‍♂️","🏃🏾‍♂️","🏃🏿‍♂️","🏃‍♀️","🏃🏻‍♀️","🏃🏼‍♀️","🏃🏽‍♀️","🏃🏾‍♀️","🏃🏿‍♀️","💃","💃🏻","💃🏼","💃🏽","💃🏾","💃🏿","🕺","🕺🏻","🕺🏼","🕺🏽","🕺🏾","🕺🏿","🕴️","🕴🏻","🕴🏼","🕴🏽","🕴🏾","🕴🏿","👯","👯‍♂️","👯‍♀️","🧖","🧖🏻","🧖🏼","🧖🏽","🧖🏾","🧖🏿","🧖‍♂️","🧖🏻‍♂️","🧖🏼‍♂️","🧖🏽‍♂️","🧖🏾‍♂️","🧖🏿‍♂️","🧖‍♀️","🧖🏻‍♀️","🧖🏼‍♀️","🧖🏽‍♀️","🧖🏾‍♀️","🧖🏿‍♀️","🧗","🧗🏻","🧗🏼","🧗🏽","🧗🏾","🧗🏿","🧗‍♂️","🧗🏻‍♂️","🧗🏼‍♂️","🧗🏽‍♂️","🧗🏾‍♂️","🧗🏿‍♂️","🧗‍♀️","🧗🏻‍♀️","🧗🏼‍♀️","🧗🏽‍♀️","🧗🏾‍♀️","🧗🏿‍♀️","🤺","🏇","🏇🏻","🏇🏼","🏇🏽","🏇🏾","🏇🏿","⛷️","🏂","🏂🏻","🏂🏼","🏂🏽","🏂🏾","🏂🏿","🏌️","🏌🏻","🏌🏼","🏌🏽","🏌🏾","🏌🏿","🏌️‍♂️","🏌🏻‍♂️","🏌🏼‍♂️","🏌🏽‍♂️","🏌🏾‍♂️","🏌🏿‍♂️","🏌️‍♀️","🏌🏻‍♀️","🏌🏼‍♀️","🏌🏽‍♀️","🏌🏾‍♀️","🏌🏿‍♀️","🏄","🏄🏻","🏄🏼","🏄🏽","🏄🏾","🏄🏿","🏄‍♂️","🏄🏻‍♂️","🏄🏼‍♂️","🏄🏽‍♂️","🏄🏾‍♂️","🏄🏿‍♂️","🏄‍♀️","🏄🏻‍♀️","🏄🏼‍♀️","🏄🏽‍♀️","🏄🏾‍♀️","🏄🏿‍♀️","🚣","🚣🏻","🚣🏼","🚣🏽","🚣🏾","🚣🏿","🚣‍♂️","🚣🏻‍♂️","🚣🏼‍♂️","🚣🏽‍♂️","🚣🏾‍♂️","🚣🏿‍♂️","🚣‍♀️","🚣🏻‍♀️","🚣🏼‍♀️","🚣🏽‍♀️","🚣🏾‍♀️","🚣🏿‍♀️","🏊","🏊🏻","🏊🏼","🏊🏽","🏊🏾","🏊🏿","🏊‍♂️","🏊🏻‍♂️","🏊🏼‍♂️","🏊🏽‍♂️","🏊🏾‍♂️","🏊🏿‍♂️","🏊‍♀️","🏊🏻‍♀️","🏊🏼‍♀️","🏊🏽‍♀️","🏊🏾‍♀️","🏊🏿‍♀️","⛹️","⛹🏻","⛹🏼","⛹🏽","⛹🏾","⛹🏿","⛹️‍♂️","⛹🏻‍♂️","⛹🏼‍♂️","⛹🏽‍♂️","⛹🏾‍♂️","⛹🏿‍♂️","⛹️‍♀️","⛹🏻‍♀️","⛹🏼‍♀️","⛹🏽‍♀️","⛹🏾‍♀️","⛹🏿‍♀️","🏋️","🏋🏻","🏋🏼","🏋🏽","🏋🏾","🏋🏿","🏋️‍♂️","🏋🏻‍♂️","🏋🏼‍♂️","🏋🏽‍♂️","🏋🏾‍♂️","🏋🏿‍♂️","🏋️‍♀️","🏋🏻‍♀️","🏋🏼‍♀️","🏋🏽‍♀️","🏋🏾‍♀️","🏋🏿‍♀️","🚴","🚴🏻","🚴🏼","🚴🏽","🚴🏾","🚴🏿","🚴‍♂️","🚴🏻‍♂️","🚴🏼‍♂️","🚴🏽‍♂️","🚴🏾‍♂️","🚴🏿‍♂️","🚴‍♀️","🚴🏻‍♀️","🚴🏼‍♀️","🚴🏽‍♀️","🚴🏾‍♀️","🚴🏿‍♀️","🚵","🚵🏻","🚵🏼","🚵🏽","🚵🏾","🚵🏿","🚵‍♂️","🚵🏻‍♂️","🚵🏼‍♂️","🚵🏽‍♂️","🚵🏾‍♂️","🚵🏿‍♂️","🚵‍♀️","🚵🏻‍♀️","🚵🏼‍♀️","🚵🏽‍♀️","🚵🏾‍♀️","🚵🏿‍♀️","🤸","🤸🏻","🤸🏼","🤸🏽","🤸🏾","🤸🏿","🤸‍♂️","🤸🏻‍♂️","🤸🏼‍♂️","🤸🏽‍♂️","🤸🏾‍♂️","🤸🏿‍♂️","🤸‍♀️","🤸🏻‍♀️","🤸🏼‍♀️","🤸🏽‍♀️","🤸🏾‍♀️","🤸🏿‍♀️","🤼","🤼‍♂️","🤼‍♀️","🤽","🤽🏻","🤽🏼","🤽🏽","🤽🏾","🤽🏿","🤽‍♂️","🤽🏻‍♂️","🤽🏼‍♂️","🤽🏽‍♂️","🤽🏾‍♂️","🤽🏿‍♂️","🤽‍♀️","🤽🏻‍♀️","🤽🏼‍♀️","🤽🏽‍♀️","🤽🏾‍♀️","🤽🏿‍♀️","🤾","🤾🏻","🤾🏼","🤾🏽","🤾🏾","🤾🏿","🤾‍♂️","🤾🏻‍♂️","🤾🏼‍♂️","🤾🏽‍♂️","🤾🏾‍♂️","🤾🏿‍♂️","🤾‍♀️","🤾🏻‍♀️","🤾🏼‍♀️","🤾🏽‍♀️","🤾🏾‍♀️","🤾🏿‍♀️","🤹","🤹🏻","🤹🏼","🤹🏽","🤹🏾","🤹🏿","🤹‍♂️","🤹🏻‍♂️","🤹🏼‍♂️","🤹🏽‍♂️","🤹🏾‍♂️","🤹🏿‍♂️","🤹‍♀️","🤹🏻‍♀️","🤹🏼‍♀️","🤹🏽‍♀️","🤹🏾‍♀️","🤹🏿‍♀️","🧘","🧘🏻","🧘🏼","🧘🏽","🧘🏾","🧘🏿","🧘‍♂️","🧘🏻‍♂️","🧘🏼‍♂️","🧘🏽‍♂️","🧘🏾‍♂️","🧘🏿‍♂️","🧘‍♀️","🧘🏻‍♀️","🧘🏼‍♀️","🧘🏽‍♀️","🧘🏾‍♀️","🧘🏿‍♀️","🛀","🛀🏻","🛀🏼","🛀🏽","🛀🏾","🛀🏿","🛌","🛌🏻","🛌🏼","🛌🏽","🛌🏾","🛌🏿","🧑‍🤝‍🧑","🧑🏻‍🤝‍🧑🏻","🧑🏻‍🤝‍🧑🏼","🧑🏻‍🤝‍🧑🏽","🧑🏻‍🤝‍🧑🏾","🧑🏻‍🤝‍🧑🏿","🧑🏼‍🤝‍🧑🏻","🧑🏼‍🤝‍🧑🏼","🧑🏼‍🤝‍🧑🏽","🧑🏼‍🤝‍🧑🏾","🧑🏼‍🤝‍🧑🏿","🧑🏽‍🤝‍🧑🏻","🧑🏽‍🤝‍🧑🏼","🧑🏽‍🤝‍🧑🏽","🧑🏽‍🤝‍🧑🏾","🧑🏽‍🤝‍🧑🏿","🧑🏾‍🤝‍🧑🏻","🧑🏾‍🤝‍🧑🏼","🧑🏾‍🤝‍🧑🏽","🧑🏾‍🤝‍🧑🏾","🧑🏾‍🤝‍🧑🏿","🧑🏿‍🤝‍🧑🏻","🧑🏿‍🤝‍🧑🏼","🧑🏿‍🤝‍🧑🏽","🧑🏿‍🤝‍🧑🏾","🧑🏿‍🤝‍🧑🏿","👭","👭🏻","👩🏻‍🤝‍👩🏼","👩🏻‍🤝‍👩🏽","👩🏻‍🤝‍👩🏾","👩🏻‍🤝‍👩🏿","👩🏼‍🤝‍👩🏻","👭🏼","👩🏼‍🤝‍👩🏽","👩🏼‍🤝‍👩🏾","👩🏼‍🤝‍👩🏿","👩🏽‍🤝‍👩🏻","👩🏽‍🤝‍👩🏼","👭🏽","👩🏽‍🤝‍👩🏾","👩🏽‍🤝‍👩🏿","👩🏾‍🤝‍👩🏻","👩🏾‍🤝‍👩🏼","👩🏾‍🤝‍👩🏽","👭🏾","👩🏾‍🤝‍👩🏿","👩🏿‍🤝‍👩🏻","👩🏿‍🤝‍👩🏼","👩🏿‍🤝‍👩🏽","👩🏿‍🤝‍👩🏾","👭🏿","👫","👫🏻","👩🏻‍🤝‍👨🏼","👩🏻‍🤝‍👨🏽","👩🏻‍🤝‍👨🏾","👩🏻‍🤝‍👨🏿","👩🏼‍🤝‍👨🏻","👫🏼","👩🏼‍🤝‍👨🏽","👩🏼‍🤝‍👨🏾","👩🏼‍🤝‍👨🏿","👩🏽‍🤝‍👨🏻","👩🏽‍🤝‍👨🏼","👫🏽","👩🏽‍🤝‍👨🏾","👩🏽‍🤝‍👨🏿","👩🏾‍🤝‍👨🏻","👩🏾‍🤝‍👨🏼","👩🏾‍🤝‍👨🏽","👫🏾","👩🏾‍🤝‍👨🏿","👩🏿‍🤝‍👨🏻","👩🏿‍🤝‍👨🏼","👩🏿‍🤝‍👨🏽","👩🏿‍🤝‍👨🏾","👫🏿","👬","👬🏻","👨🏻‍🤝‍👨🏼","👨🏻‍🤝‍👨🏽","👨🏻‍🤝‍👨🏾","👨🏻‍🤝‍👨🏿","👨🏼‍🤝‍👨🏻","👬🏼","👨🏼‍🤝‍👨🏽","👨🏼‍🤝‍👨🏾","👨🏼‍🤝‍👨🏿","👨🏽‍🤝‍👨🏻","👨🏽‍🤝‍👨🏼","👬🏽","👨🏽‍🤝‍👨🏾","👨🏽‍🤝‍👨🏿","👨🏾‍🤝‍👨🏻","👨🏾‍🤝‍👨🏼","👨🏾‍🤝‍👨🏽","👬🏾","👨🏾‍🤝‍👨🏿","👨🏿‍🤝‍👨🏻","👨🏿‍🤝‍👨🏼","👨🏿‍🤝‍👨🏽","👨🏿‍🤝‍👨🏾","👬🏿","💏","💏🏻","💏🏼","💏🏽","💏🏾","💏🏿","🧑🏻‍❤️‍💋‍🧑🏼","🧑🏻‍❤️‍💋‍🧑🏽","🧑🏻‍❤️‍💋‍🧑🏾","🧑🏻‍❤️‍💋‍🧑🏿","🧑🏼‍❤️‍💋‍🧑🏻","🧑🏼‍❤️‍💋‍🧑🏽","🧑🏼‍❤️‍💋‍🧑🏾","🧑🏼‍❤️‍💋‍🧑🏿","🧑🏽‍❤️‍💋‍🧑🏻","🧑🏽‍❤️‍💋‍🧑🏼","🧑🏽‍❤️‍💋‍🧑🏾","🧑🏽‍❤️‍💋‍🧑🏿","🧑🏾‍❤️‍💋‍🧑🏻","🧑🏾‍❤️‍💋‍🧑🏼","🧑🏾‍❤️‍💋‍🧑🏽","🧑🏾‍❤️‍💋‍🧑🏿","🧑🏿‍❤️‍💋‍🧑🏻","🧑🏿‍❤️‍💋‍🧑🏼","🧑🏿‍❤️‍💋‍🧑🏽","🧑🏿‍❤️‍💋‍🧑🏾","👩‍❤️‍💋‍👨","👩🏻‍❤️‍💋‍👨🏻","👩🏻‍❤️‍💋‍👨🏼","👩🏻‍❤️‍💋‍👨🏽","👩🏻‍❤️‍💋‍👨🏾","👩🏻‍❤️‍💋‍👨🏿","👩🏼‍❤️‍💋‍👨🏻","👩🏼‍❤️‍💋‍👨🏼","👩🏼‍❤️‍💋‍👨🏽","👩🏼‍❤️‍💋‍👨🏾","👩🏼‍❤️‍💋‍👨🏿","👩🏽‍❤️‍💋‍👨🏻","👩🏽‍❤️‍💋‍👨🏼","👩🏽‍❤️‍💋‍👨🏽","👩🏽‍❤️‍💋‍👨🏾","👩🏽‍❤️‍💋‍👨🏿","👩🏾‍❤️‍💋‍👨🏻","👩🏾‍❤️‍💋‍👨🏼","👩🏾‍❤️‍💋‍👨🏽","👩🏾‍❤️‍💋‍👨🏾","👩🏾‍❤️‍💋‍👨🏿","👩🏿‍❤️‍💋‍👨🏻","👩🏿‍❤️‍💋‍👨🏼","👩🏿‍❤️‍💋‍👨🏽","👩🏿‍❤️‍💋‍👨🏾","👩🏿‍❤️‍💋‍👨🏿","👨‍❤️‍💋‍👨","👨🏻‍❤️‍💋‍👨🏻","👨🏻‍❤️‍💋‍👨🏼","👨🏻‍❤️‍💋‍👨🏽","👨🏻‍❤️‍💋‍👨🏾","👨🏻‍❤️‍💋‍👨🏿","👨🏼‍❤️‍💋‍👨🏻","👨🏼‍❤️‍💋‍👨🏼","👨🏼‍❤️‍💋‍👨🏽","👨🏼‍❤️‍💋‍👨🏾","👨🏼‍❤️‍💋‍👨🏿","👨🏽‍❤️‍💋‍👨🏻","👨🏽‍❤️‍💋‍👨🏼","👨🏽‍❤️‍💋‍👨🏽","👨🏽‍❤️‍💋‍👨🏾","👨🏽‍❤️‍💋‍👨🏿","👨🏾‍❤️‍💋‍👨🏻","👨🏾‍❤️‍💋‍👨🏼","👨🏾‍❤️‍💋‍👨🏽","👨🏾‍❤️‍💋‍👨🏾","👨🏾‍❤️‍💋‍👨🏿","👨🏿‍❤️‍💋‍👨🏻","👨🏿‍❤️‍💋‍👨🏼","👨🏿‍❤️‍💋‍👨🏽","👨🏿‍❤️‍💋‍👨🏾","👨🏿‍❤️‍💋‍👨🏿","👩‍❤️‍💋‍👩","👩🏻‍❤️‍💋‍👩🏻","👩🏻‍❤️‍💋‍👩🏼","👩🏻‍❤️‍💋‍👩🏽","👩🏻‍❤️‍💋‍👩🏾","👩🏻‍❤️‍💋‍👩🏿","👩🏼‍❤️‍💋‍👩🏻","👩🏼‍❤️‍💋‍👩🏼","👩🏼‍❤️‍💋‍👩🏽","👩🏼‍❤️‍💋‍👩🏾","👩🏼‍❤️‍💋‍👩🏿","👩🏽‍❤️‍💋‍👩🏻","👩🏽‍❤️‍💋‍👩🏼","👩🏽‍❤️‍💋‍👩🏽","👩🏽‍❤️‍💋‍👩🏾","👩🏽‍❤️‍💋‍👩🏿","👩🏾‍❤️‍💋‍👩🏻","👩🏾‍❤️‍💋‍👩🏼","👩🏾‍❤️‍💋‍👩🏽","👩🏾‍❤️‍💋‍👩🏾","👩🏾‍❤️‍💋‍👩🏿","👩🏿‍❤️‍💋‍👩🏻","👩🏿‍❤️‍💋‍👩🏼","👩🏿‍❤️‍💋‍👩🏽","👩🏿‍❤️‍💋‍👩🏾","👩🏿‍❤️‍💋‍👩🏿","💑","💑🏻","💑🏼","💑🏽","💑🏾","💑🏿","🧑🏻‍❤️‍🧑🏼","🧑🏻‍❤️‍🧑🏽","🧑🏻‍❤️‍🧑🏾","🧑🏻‍❤️‍🧑🏿","🧑🏼‍❤️‍🧑🏻","🧑🏼‍❤️‍🧑🏽","🧑🏼‍❤️‍🧑🏾","🧑🏼‍❤️‍🧑🏿","🧑🏽‍❤️‍🧑🏻","🧑🏽‍❤️‍🧑🏼","🧑🏽‍❤️‍🧑🏾","🧑🏽‍❤️‍🧑🏿","🧑🏾‍❤️‍🧑🏻","🧑🏾‍❤️‍🧑🏼","🧑🏾‍❤️‍🧑🏽","🧑🏾‍❤️‍🧑🏿","🧑🏿‍❤️‍🧑🏻","🧑🏿‍❤️‍🧑🏼","🧑🏿‍❤️‍🧑🏽","🧑🏿‍❤️‍🧑🏾","👩‍❤️‍👨","👩🏻‍❤️‍👨🏻","👩🏻‍❤️‍👨🏼","👩🏻‍❤️‍👨🏽","👩🏻‍❤️‍👨🏾","👩🏻‍❤️‍👨🏿","👩🏼‍❤️‍👨🏻","👩🏼‍❤️‍👨🏼","👩🏼‍❤️‍👨🏽","👩🏼‍❤️‍👨🏾","👩🏼‍❤️‍👨🏿","👩🏽‍❤️‍👨🏻","👩🏽‍❤️‍👨🏼","👩🏽‍❤️‍👨🏽","👩🏽‍❤️‍👨🏾","👩🏽‍❤️‍👨🏿","👩🏾‍❤️‍👨🏻","👩🏾‍❤️‍👨🏼","👩🏾‍❤️‍👨🏽","👩🏾‍❤️‍👨🏾","👩🏾‍❤️‍👨🏿","👩🏿‍❤️‍👨🏻","👩🏿‍❤️‍👨🏼","👩🏿‍❤️‍👨🏽","👩🏿‍❤️‍👨🏾","👩🏿‍❤️‍👨🏿","👨‍❤️‍👨","👨🏻‍❤️‍👨🏻","👨🏻‍❤️‍👨🏼","👨🏻‍❤️‍👨🏽","👨🏻‍❤️‍👨🏾","👨🏻‍❤️‍👨🏿","👨🏼‍❤️‍👨🏻","👨🏼‍❤️‍👨🏼","👨🏼‍❤️‍👨🏽","👨🏼‍❤️‍👨🏾","👨🏼‍❤️‍👨🏿","👨🏽‍❤️‍👨🏻","👨🏽‍❤️‍👨🏼","👨🏽‍❤️‍👨🏽","👨🏽‍❤️‍👨🏾","👨🏽‍❤️‍👨🏿","👨🏾‍❤️‍👨🏻","👨🏾‍❤️‍👨🏼","👨🏾‍❤️‍👨🏽","👨🏾‍❤️‍👨🏾","👨🏾‍❤️‍👨🏿","👨🏿‍❤️‍👨🏻","👨🏿‍❤️‍👨🏼","👨🏿‍❤️‍👨🏽","👨🏿‍❤️‍👨🏾","👨🏿‍❤️‍👨🏿","👩‍❤️‍👩","👩🏻‍❤️‍👩🏻","👩🏻‍❤️‍👩🏼","👩🏻‍❤️‍👩🏽","👩🏻‍❤️‍👩🏾","👩🏻‍❤️‍👩🏿","👩🏼‍❤️‍👩🏻","👩🏼‍❤️‍👩🏼","👩🏼‍❤️‍👩🏽","👩🏼‍❤️‍👩🏾","👩🏼‍❤️‍👩🏿","👩🏽‍❤️‍👩🏻","👩🏽‍❤️‍👩🏼","👩🏽‍❤️‍👩🏽","👩🏽‍❤️‍👩🏾","👩🏽‍❤️‍👩🏿","👩🏾‍❤️‍👩🏻","👩🏾‍❤️‍👩🏼","👩🏾‍❤️‍👩🏽","👩🏾‍❤️‍👩🏾","👩🏾‍❤️‍👩🏿","👩🏿‍❤️‍👩🏻","👩🏿‍❤️‍👩🏼","👩🏿‍❤️‍👩🏽","👩🏿‍❤️‍👩🏾","👩🏿‍❤️‍👩🏿","👪","👨‍👩‍👦","👨‍👩‍👧","👨‍👩‍👧‍👦","👨‍👩‍👦‍👦","👨‍👩‍👧‍👧","👨‍👨‍👦","👨‍👨‍👧","👨‍👨‍👧‍👦","👨‍👨‍👦‍👦","👨‍👨‍👧‍👧","👩‍👩‍👦","👩‍👩‍👧","👩‍👩‍👧‍👦","👩‍👩‍👦‍👦","👩‍👩‍👧‍👧","👨‍👦","👨‍👦‍👦","👨‍👧","👨‍👧‍👦","👨‍👧‍👧","👩‍👦","👩‍👦‍👦","👩‍👧","👩‍👧‍👦","👩‍👧‍👧","🗣️","👤","👥","🫂","👣"],nature:["🐵","🐒","🦍","🦧","🐶","🐕","🦮","🐕‍🦺","🐩","🐺","🦊","🦝","🐱","🐈","🐈‍⬛","🦁","🐯","🐅","🐆","🐴","🐎","🦄","🦓","🦌","🦬","🐮","🐂","🐃","🐄","🐷","🐖","🐗","🐽","🐏","🐑","🐐","🐪","🐫","🦙","🦒","🐘","🦣","🦏","🦛","🐭","🐁","🐀","🐹","🐰","🐇","🐿️","🦫","🦔","🦇","🐻","🐻‍❄️","🐨","🐼","🦥","🦦","🦨","🦘","🦡","🐾","🦃","🐔","🐓","🐣","🐤","🐥","🐦","🐧","🕊️","🦅","🦆","🦢","🦉","🦤","🪶","🦩","🦚","🦜","🐸","🐊","🐢","🦎","🐍","🐲","🐉","🦕","🦖","🐳","🐋","🐬","🦭","🐟","🐠","🐡","🦈","🐙","🐚","🐌","🦋","🐛","🐜","🐝","🪲","🐞","🦗","🪳","🕷️","🕸️","🦂","🦟","🪰","🪱","🦠","💐","🌸","💮","🏵️","🌹","🥀","🌺","🌻","🌼","🌷","🌱","🪴","🌲","🌳","🌴","🌵","🌾","🌿","☘️","🍀","🍁","🍂","🍃"],food:["🍇","🍈","🍉","🍊","🍋","🍌","🍍","🥭","🍎","🍏","🍐","🍑","🍒","🍓","🫐","🥝","🍅","🫒","🥥","🥑","🍆","🥔","🥕","🌽","🌶️","🫑","🥒","🥬","🥦","🧄","🧅","🍄","🥜","🌰","🍞","🥐","🥖","🫓","🥨","🥯","🥞","🧇","🧀","🍖","🍗","🥩","🥓","🍔","🍟","🍕","🌭","🥪","🌮","🌯","🫔","🥙","🧆","🥚","🍳","🥘","🍲","🫕","🥣","🥗","🍿","🧈","🧂","🥫","🍱","🍘","🍙","🍚","🍛","🍜","🍝","🍠","🍢","🍣","🍤","🍥","🥮","🍡","🥟","🥠","🥡","🦀","🦞","🦐","🦑","🦪","🍦","🍧","🍨","🍩","🍪","🎂","🍰","🧁","🥧","🍫","🍬","🍭","🍮","🍯","🍼","🥛","☕","🫖","🍵","🍶","🍾","🍷","🍸","🍹","🍺","🍻","🥂","🥃","🥤","🧋","🧃","🧉","🧊","🥢","🍽️","🍴","🥄","🔪","🏺"],travel:["🌍","🌎","🌏","🌐","🗺️","🗾","🧭","🏔️","⛰️","🌋","🗻","🏕️","🏖️","🏜️","🏝️","🏞️","🏟️","🏛️","🏗️","🧱","🪨","🪵","🛖","🏘️","🏚️","🏠","🏡","🏢","🏣","🏤","🏥","🏦","🏨","🏩","🏪","🏫","🏬","🏭","🏯","🏰","💒","🗼","🗽","⛪","🕌","🛕","🕍","⛩️","🕋","⛲","⛺","🌁","🌃","🏙️","🌄","🌅","🌆","🌇","🌉","♨️","🎠","🎡","🎢","💈","🎪","🚂","🚃","🚄","🚅","🚆","🚇","🚈","🚉","🚊","🚝","🚞","🚋","🚌","🚍","🚎","🚐","🚑","🚒","🚓","🚔","🚕","🚖","🚗","🚘","🚙","🛻","🚚","🚛","🚜","🏎️","🏍️","🛵","🦽","🦼","🛺","🚲","🛴","🛹","🛼","🚏","🛣️","🛤️","🛢️","⛽","🚨","🚥","🚦","🛑","🚧","⚓","⛵","🛶","🚤","🛳️","⛴️","🛥️","🚢","✈️","🛩️","🛫","🛬","🪂","💺","🚁","🚟","🚠","🚡","🛰️","🚀","🛸","🛎️","🧳","⌛","⏳","⌚","⏰","⏱️","⏲️","🕰️","🕛","🕧","🕐","🕜","🕑","🕝","🕒","🕞","🕓","🕟","🕔","🕠","🕕","🕡","🕖","🕢","🕗","🕣","🕘","🕤","🕙","🕥","🕚","🕦","🌑","🌒","🌓","🌔","🌕","🌖","🌗","🌘","🌙","🌚","🌛","🌜","🌡️","☀️","🌝","🌞","🪐","⭐","🌟","🌠","🌌","☁️","⛅","⛈️","🌤️","🌥️","🌦️","🌧️","🌨️","🌩️","🌪️","🌫️","🌬️","🌀","🌈","🌂","☂️","☔","⛱️","⚡","❄️","☃️","⛄","☄️","🔥","💧","🌊"],activity:["🎃","🎄","🎆","🎇","🧨","✨","🎈","🎉","🎊","🎋","🎍","🎎","🎏","🎐","🎑","🧧","🎀","🎁","🎗️","🎟️","🎫","🎖️","🏆","🏅","🥇","🥈","🥉","⚽","⚾","🥎","🏀","🏐","🏈","🏉","🎾","🥏","🎳","🏏","🏑","🏒","🥍","🏓","🏸","🥊","🥋","🥅","⛳","⛸️","🎣","🤿","🎽","🎿","🛷","🥌","🎯","🪀","🪁","🎱","🔮","🪄","🧿","🎮","🕹️","🎰","🎲","🧩","🧸","🪅","🪆","♠️","♥️","♦️","♣️","♟️","🃏","🀄","🎴","🎭","🖼️","🎨","🧵","🪡","🧶","🪢"],object:["👓","🕶️","🥽","🥼","🦺","👔","👕","👖","🧣","🧤","🧥","🧦","👗","👘","🥻","🩱","🩲","🩳","👙","👚","👛","👜","👝","🛍️","🎒","🩴","👞","👟","🥾","🥿","👠","👡","🩰","👢","👑","👒","🎩","🎓","🧢","🪖","⛑️","📿","💄","💍","💎","🔇","🔈","🔉","🔊","📢","📣","📯","🔔","🔕","🎼","🎵","🎶","🎙️","🎚️","🎛️","🎤","🎧","📻","🎷","🪗","🎸","🎹","🎺","🎻","🪕","🥁","🪘","📱","📲","☎️","📞","📟","📠","🔋","🔌","💻","🖥️","🖨️","⌨️","🖱️","🖲️","💽","💾","💿","📀","🧮","🎥","🎞️","📽️","🎬","📺","📷","📸","📹","📼","🔍","🔎","🕯️","💡","🔦","🏮","🪔","📔","📕","📖","📗","📘","📙","📚","📓","📒","📃","📜","📄","📰","🗞️","📑","🔖","🏷️","💰","🪙","💴","💵","💶","💷","💸","💳","🧾","💹","✉️","📧","📨","📩","📤","📥","📦","📫","📪","📬","📭","📮","🗳️","✏️","✒️","🖋️","🖊️","🖌️","🖍️","📝","💼","📁","📂","🗂️","📅","📆","🗒️","🗓️","📇","📈","📉","📊","📋","📌","📍","📎","🖇️","📏","📐","✂️","🗃️","🗄️","🗑️","🔒","🔓","🔏","🔐","🔑","🗝️","🔨","🪓","⛏️","⚒️","🛠️","🗡️","⚔️","🔫","🪃","🏹","🛡️","🪚","🔧","🪛","🔩","⚙️","🗜️","⚖️","🦯","🔗","⛓️","🪝","🧰","🧲","🪜","⚗️","🧪","🧫","🧬","🔬","🔭","📡","💉","🩸","💊","🩹","🩺","🚪","🛗","🪞","🪟","🛏️","🛋️","🪑","🚽","🪠","🚿","🛁","🪤","🪒","🧴","🧷","🧹","🧺","🧻","🪣","🧼","🪥","🧽","🧯","🛒","🚬","⚰️","🪦","⚱️","🗿","🪧"],symbol:["🏧","🚮","🚰","♿","🚹","🚺","🚻","🚼","🚾","🛂","🛃","🛄","🛅","⚠️","🚸","⛔","🚫","🚳","🚭","🚯","🚱","🚷","📵","🔞","☢️","☣️","⬆️","↗️","➡️","↘️","⬇️","↙️","⬅️","↖️","↕️","↔️","↩️","↪️","⤴️","⤵️","🔃","🔄","🔙","🔚","🔛","🔜","🔝","🛐","⚛️","🕉️","✡️","☸️","☯️","✝️","☦️","☪️","☮️","🕎","🔯","♈","♉","♊","♋","♌","♍","♎","♏","♐","♑","♒","♓","⛎","🔀","🔁","🔂","▶️","⏩","⏭️","⏯️","◀️","⏪","⏮️","🔼","⏫","🔽","⏬","⏸️","⏹️","⏺️","⏏️","🎦","🔅","🔆","📶","📳","📴","♀️","♂️","⚧️","✖️","➕","➖","➗","♾️","‼️","⁉️","❓","❔","❕","❗","〰️","💱","💲","⚕️","♻️","⚜️","🔱","📛","🔰","⭕","✅","☑️","✔️","❌","❎","➰","➿","〽️","✳️","✴️","❇️","©️","®️","™️","#️⃣","*️⃣","0️⃣","1️⃣","2️⃣","3️⃣","4️⃣","5️⃣","6️⃣","7️⃣","8️⃣","9️⃣","🔟","🔠","🔡","🔢","🔣","🔤","🅰️","🆎","🅱️","🆑","🆒","🆓","ℹ️","🆔","Ⓜ️","🆕","🆖","🅾️","🆗","🅿️","🆘","🆙","🆚","🈁","🈂️","🈷️","🈶","🈯","🉐","🈹","🈚","🈲","🉑","🈸","🈴","🈳","㊗️","㊙️","🈺","🈵","🔴","🟠","🟡","🟢","🔵","🟣","🟤","⚫","⚪","🟥","🟧","🟨","🟩","🟦","🟪","🟫","⬛","⬜","◼️","◻️","◾","◽","▪️","▫️","🔶","🔷","🔸","🔹","🔺","🔻","💠","🔘","🔳","🔲"],flag:["🏁","🚩","🎌","🏴","🏳️","🏳️‍🌈","🏳️‍⚧️","🏴‍☠️","🇦🇨","🇦🇩","🇦🇪","🇦🇫","🇦🇬","🇦🇮","🇦🇱","🇦🇲","🇦🇴","🇦🇶","🇦🇷","🇦🇸","🇦🇹","🇦🇺","🇦🇼","🇦🇽","🇦🇿","🇧🇦","🇧🇧","🇧🇩","🇧🇪","🇧🇫","🇧🇬","🇧🇭","🇧🇮","🇧🇯","🇧🇱","🇧🇲","🇧🇳","🇧🇴","🇧🇶","🇧🇷","🇧🇸","🇧🇹","🇧🇻","🇧🇼","🇧🇾","🇧🇿","🇨🇦","🇨🇨","🇨🇩","🇨🇫","🇨🇬","🇨🇭","🇨🇮","🇨🇰","🇨🇱","🇨🇲","🇨🇳","🇨🇴","🇨🇵","🇨🇷","🇨🇺","🇨🇻","🇨🇼","🇨🇽","🇨🇾","🇨🇿","🇩🇪","🇩🇬","🇩🇯","🇩🇰","🇩🇲","🇩🇴","🇩🇿","🇪🇦","🇪🇨","🇪🇪","🇪🇬","🇪🇭","🇪🇷","🇪🇸","🇪🇹","🇪🇺","🇫🇮","🇫🇯","🇫🇰","🇫🇲","🇫🇴","🇫🇷","🇬🇦","🇬🇧","🇬🇩","🇬🇪","🇬🇫","🇬🇬","🇬🇭","🇬🇮","🇬🇱","🇬🇲","🇬🇳","🇬🇵","🇬🇶","🇬🇷","🇬🇸","🇬🇹","🇬🇺","🇬🇼","🇬🇾","🇭🇰","🇭🇲","🇭🇳","🇭🇷","🇭🇹","🇭🇺","🇮🇨","🇮🇩","🇮🇪","🇮🇱","🇮🇲","🇮🇳","🇮🇴","🇮🇶","🇮🇷","🇮🇸","🇮🇹","🇯🇪","🇯🇲","🇯🇴","🇯🇵","🇰🇪","🇰🇬","🇰🇭","🇰🇮","🇰🇲","🇰🇳","🇰🇵","🇰🇷","🇰🇼","🇰🇾","🇰🇿","🇱🇦","🇱🇧","🇱🇨","🇱🇮","🇱🇰","🇱🇷","🇱🇸","🇱🇹","🇱🇺","🇱🇻","🇱🇾","🇲🇦","🇲🇨","🇲🇩","🇲🇪","🇲🇫","🇲🇬","🇲🇭","🇲🇰","🇲🇱","🇲🇲","🇲🇳","🇲🇴","🇲🇵","🇲🇶","🇲🇷","🇲🇸","🇲🇹","🇲🇺","🇲🇻","🇲🇼","🇲🇽","🇲🇾","🇲🇿","🇳🇦","🇳🇨","🇳🇪","🇳🇫","🇳🇬","🇳🇮","🇳🇱","🇳🇴","🇳🇵","🇳🇷","🇳🇺","🇳🇿","🇴🇲","🇵🇦","🇵🇪","🇵🇫","🇵🇬","🇵🇭","🇵🇰","🇵🇱","🇵🇲","🇵🇳","🇵🇷","🇵🇸","🇵🇹","🇵🇼","🇵🇾","🇶🇦","🇷🇪","🇷🇴","🇷🇸","🇷🇺","🇷🇼","🇸🇦","🇸🇧","🇸🇨","🇸🇩","🇸🇪","🇸🇬","🇸🇭","🇸🇮","🇸🇯","🇸🇰","🇸🇱","🇸🇲","🇸🇳","🇸🇴","🇸🇷","🇸🇸","🇸🇹","🇸🇻","🇸🇽","🇸🇾","🇸🇿","🇹🇦","🇹🇨","🇹🇩","🇹🇫","🇹🇬","🇹🇭","🇹🇯","🇹🇰","🇹🇱","🇹🇲","🇹🇳","🇹🇴","🇹🇷","🇹🇹","🇹🇻","🇹🇼","🇹🇿","🇺🇦","🇺🇬","🇺🇲","🇺🇳","🇺🇸","🇺🇾","🇺🇿","🇻🇦","🇻🇨","🇻🇪","🇻🇬","🇻🇮","🇻🇳","🇻🇺","🇼🇫","🇼🇸","🇽🇰","🇾🇪","🇾🇹","🇿🇦","🇿🇲","🇿🇼"]},http_status_code:{informational:[100,101,102,103],success:[200,201,202,203,204,205,206,207,208,226],redirection:[300,301,302,303,304,305,306,307,308],clientError:[400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,421,422,423,424,425,426,428,429,431,451],serverError:[500,501,502,503,504,505,506,507,508,510,511]}},location:{country_code:[{alpha2:"AD",alpha3:"AND",numeric:"020"},{alpha2:"AE",alpha3:"ARE",numeric:"784"},{alpha2:"AF",alpha3:"AFG",numeric:"004"},{alpha2:"AG",alpha3:"ATG",numeric:"028"},{alpha2:"AI",alpha3:"AIA",numeric:"660"},{alpha2:"AL",alpha3:"ALB",numeric:"008"},{alpha2:"AM",alpha3:"ARM",numeric:"051"},{alpha2:"AO",alpha3:"AGO",numeric:"024"},{alpha2:"AQ",alpha3:"ATA",numeric:"010"},{alpha2:"AR",alpha3:"ARG",numeric:"032"},{alpha2:"AS",alpha3:"ASM",numeric:"016"},{alpha2:"AT",alpha3:"AUT",numeric:"040"},{alpha2:"AU",alpha3:"AUS",numeric:"036"},{alpha2:"AW",alpha3:"ABW",numeric:"533"},{alpha2:"AX",alpha3:"ALA",numeric:"248"},{alpha2:"AZ",alpha3:"AZE",numeric:"031"},{alpha2:"BA",alpha3:"BIH",numeric:"070"},{alpha2:"BB",alpha3:"BRB",numeric:"052"},{alpha2:"BD",alpha3:"BGD",numeric:"050"},{alpha2:"BE",alpha3:"BEL",numeric:"056"},{alpha2:"BF",alpha3:"BFA",numeric:"854"},{alpha2:"BG",alpha3:"BGR",numeric:"100"},{alpha2:"BH",alpha3:"BHR",numeric:"048"},{alpha2:"BI",alpha3:"BDI",numeric:"108"},{alpha2:"BJ",alpha3:"BEN",numeric:"204"},{alpha2:"BL",alpha3:"BLM",numeric:"652"},{alpha2:"BM",alpha3:"BMU",numeric:"060"},{alpha2:"BN",alpha3:"BRN",numeric:"096"},{alpha2:"BO",alpha3:"BOL",numeric:"068"},{alpha2:"BQ",alpha3:"BES",numeric:"535"},{alpha2:"BR",alpha3:"BRA",numeric:"076"},{alpha2:"BS",alpha3:"BHS",numeric:"044"},{alpha2:"BT",alpha3:"BTN",numeric:"064"},{alpha2:"BV",alpha3:"BVT",numeric:"074"},{alpha2:"BW",alpha3:"BWA",numeric:"072"},{alpha2:"BY",alpha3:"BLR",numeric:"112"},{alpha2:"BZ",alpha3:"BLZ",numeric:"084"},{alpha2:"CA",alpha3:"CAN",numeric:"124"},{alpha2:"CC",alpha3:"CCK",numeric:"166"},{alpha2:"CD",alpha3:"COD",numeric:"180"},{alpha2:"CF",alpha3:"CAF",numeric:"140"},{alpha2:"CG",alpha3:"COG",numeric:"178"},{alpha2:"CH",alpha3:"CHE",numeric:"756"},{alpha2:"CI",alpha3:"CIV",numeric:"384"},{alpha2:"CK",alpha3:"COK",numeric:"184"},{alpha2:"CL",alpha3:"CHL",numeric:"152"},{alpha2:"CM",alpha3:"CMR",numeric:"120"},{alpha2:"CN",alpha3:"CHN",numeric:"156"},{alpha2:"CO",alpha3:"COL",numeric:"170"},{alpha2:"CR",alpha3:"CRI",numeric:"188"},{alpha2:"CU",alpha3:"CUB",numeric:"192"},{alpha2:"CV",alpha3:"CPV",numeric:"132"},{alpha2:"CW",alpha3:"CUW",numeric:"531"},{alpha2:"CX",alpha3:"CXR",numeric:"162"},{alpha2:"CY",alpha3:"CYP",numeric:"196"},{alpha2:"CZ",alpha3:"CZE",numeric:"203"},{alpha2:"DE",alpha3:"DEU",numeric:"276"},{alpha2:"DJ",alpha3:"DJI",numeric:"262"},{alpha2:"DK",alpha3:"DNK",numeric:"208"},{alpha2:"DM",alpha3:"DMA",numeric:"212"},{alpha2:"DO",alpha3:"DOM",numeric:"214"},{alpha2:"DZ",alpha3:"DZA",numeric:"012"},{alpha2:"EC",alpha3:"ECU",numeric:"218"},{alpha2:"EE",alpha3:"EST",numeric:"233"},{alpha2:"EG",alpha3:"EGY",numeric:"818"},{alpha2:"EH",alpha3:"ESH",numeric:"732"},{alpha2:"ER",alpha3:"ERI",numeric:"232"},{alpha2:"ES",alpha3:"ESP",numeric:"724"},{alpha2:"ET",alpha3:"ETH",numeric:"231"},{alpha2:"FI",alpha3:"FIN",numeric:"246"},{alpha2:"FJ",alpha3:"FJI",numeric:"242"},{alpha2:"FK",alpha3:"FLK",numeric:"238"},{alpha2:"FM",alpha3:"FSM",numeric:"583"},{alpha2:"FO",alpha3:"FRO",numeric:"234"},{alpha2:"FR",alpha3:"FRA",numeric:"250"},{alpha2:"GA",alpha3:"GAB",numeric:"266"},{alpha2:"GB",alpha3:"GBR",numeric:"826"},{alpha2:"GD",alpha3:"GRD",numeric:"308"},{alpha2:"GE",alpha3:"GEO",numeric:"268"},{alpha2:"GF",alpha3:"GUF",numeric:"254"},{alpha2:"GG",alpha3:"GGY",numeric:"831"},{alpha2:"GH",alpha3:"GHA",numeric:"288"},{alpha2:"GI",alpha3:"GIB",numeric:"292"},{alpha2:"GL",alpha3:"GRL",numeric:"304"},{alpha2:"GM",alpha3:"GMB",numeric:"270"},{alpha2:"GN",alpha3:"GIN",numeric:"324"},{alpha2:"GP",alpha3:"GLP",numeric:"312"},{alpha2:"GQ",alpha3:"GNQ",numeric:"226"},{alpha2:"GR",alpha3:"GRC",numeric:"300"},{alpha2:"GS",alpha3:"SGS",numeric:"239"},{alpha2:"GT",alpha3:"GTM",numeric:"320"},{alpha2:"GU",alpha3:"GUM",numeric:"316"},{alpha2:"GW",alpha3:"GNB",numeric:"624"},{alpha2:"GY",alpha3:"GUY",numeric:"328"},{alpha2:"HK",alpha3:"HKG",numeric:"344"},{alpha2:"HM",alpha3:"HMD",numeric:"334"},{alpha2:"HN",alpha3:"HND",numeric:"340"},{alpha2:"HR",alpha3:"HRV",numeric:"191"},{alpha2:"HT",alpha3:"HTI",numeric:"332"},{alpha2:"HU",alpha3:"HUN",numeric:"348"},{alpha2:"ID",alpha3:"IDN",numeric:"360"},{alpha2:"IE",alpha3:"IRL",numeric:"372"},{alpha2:"IL",alpha3:"ISR",numeric:"376"},{alpha2:"IM",alpha3:"IMN",numeric:"833"},{alpha2:"IN",alpha3:"IND",numeric:"356"},{alpha2:"IO",alpha3:"IOT",numeric:"086"},{alpha2:"IQ",alpha3:"IRQ",numeric:"368"},{alpha2:"IR",alpha3:"IRN",numeric:"364"},{alpha2:"IS",alpha3:"ISL",numeric:"352"},{alpha2:"IT",alpha3:"ITA",numeric:"380"},{alpha2:"JE",alpha3:"JEY",numeric:"832"},{alpha2:"JM",alpha3:"JAM",numeric:"388"},{alpha2:"JO",alpha3:"JOR",numeric:"400"},{alpha2:"JP",alpha3:"JPN",numeric:"392"},{alpha2:"KE",alpha3:"KEN",numeric:"404"},{alpha2:"KG",alpha3:"KGZ",numeric:"417"},{alpha2:"KH",alpha3:"KHM",numeric:"116"},{alpha2:"KI",alpha3:"KIR",numeric:"296"},{alpha2:"KM",alpha3:"COM",numeric:"174"},{alpha2:"KN",alpha3:"KNA",numeric:"659"},{alpha2:"KP",alpha3:"PRK",numeric:"408"},{alpha2:"KR",alpha3:"KOR",numeric:"410"},{alpha2:"KW",alpha3:"KWT",numeric:"414"},{alpha2:"KY",alpha3:"CYM",numeric:"136"},{alpha2:"KZ",alpha3:"KAZ",numeric:"398"},{alpha2:"LA",alpha3:"LAO",numeric:"418"},{alpha2:"LB",alpha3:"LBN",numeric:"422"},{alpha2:"LC",alpha3:"LCA",numeric:"662"},{alpha2:"LI",alpha3:"LIE",numeric:"438"},{alpha2:"LK",alpha3:"LKA",numeric:"144"},{alpha2:"LR",alpha3:"LBR",numeric:"430"},{alpha2:"LS",alpha3:"LSO",numeric:"426"},{alpha2:"LT",alpha3:"LTU",numeric:"440"},{alpha2:"LU",alpha3:"LUX",numeric:"442"},{alpha2:"LV",alpha3:"LVA",numeric:"428"},{alpha2:"LY",alpha3:"LBY",numeric:"434"},{alpha2:"MA",alpha3:"MAR",numeric:"504"},{alpha2:"MC",alpha3:"MCO",numeric:"492"},{alpha2:"MD",alpha3:"MDA",numeric:"498"},{alpha2:"ME",alpha3:"MNE",numeric:"499"},{alpha2:"MF",alpha3:"MAF",numeric:"663"},{alpha2:"MG",alpha3:"MDG",numeric:"450"},{alpha2:"MH",alpha3:"MHL",numeric:"584"},{alpha2:"MK",alpha3:"MKD",numeric:"807"},{alpha2:"ML",alpha3:"MLI",numeric:"466"},{alpha2:"MM",alpha3:"MMR",numeric:"104"},{alpha2:"MN",alpha3:"MNG",numeric:"496"},{alpha2:"MO",alpha3:"MAC",numeric:"446"},{alpha2:"MP",alpha3:"MNP",numeric:"580"},{alpha2:"MQ",alpha3:"MTQ",numeric:"474"},{alpha2:"MR",alpha3:"MRT",numeric:"478"},{alpha2:"MS",alpha3:"MSR",numeric:"500"},{alpha2:"MT",alpha3:"MLT",numeric:"470"},{alpha2:"MU",alpha3:"MUS",numeric:"480"},{alpha2:"MV",alpha3:"MDV",numeric:"462"},{alpha2:"MW",alpha3:"MWI",numeric:"454"},{alpha2:"MX",alpha3:"MEX",numeric:"484"},{alpha2:"MY",alpha3:"MYS",numeric:"458"},{alpha2:"MZ",alpha3:"MOZ",numeric:"508"},{alpha2:"NA",alpha3:"NAM",numeric:"516"},{alpha2:"NC",alpha3:"NCL",numeric:"540"},{alpha2:"NE",alpha3:"NER",numeric:"562"},{alpha2:"NF",alpha3:"NFK",numeric:"574"},{alpha2:"NG",alpha3:"NGA",numeric:"566"},{alpha2:"NI",alpha3:"NIC",numeric:"558"},{alpha2:"NL",alpha3:"NLD",numeric:"528"},{alpha2:"NO",alpha3:"NOR",numeric:"578"},{alpha2:"NP",alpha3:"NPL",numeric:"524"},{alpha2:"NR",alpha3:"NRU",numeric:"520"},{alpha2:"NU",alpha3:"NIU",numeric:"570"},{alpha2:"NZ",alpha3:"NZL",numeric:"554"},{alpha2:"OM",alpha3:"OMN",numeric:"512"},{alpha2:"PA",alpha3:"PAN",numeric:"591"},{alpha2:"PE",alpha3:"PER",numeric:"604"},{alpha2:"PF",alpha3:"PYF",numeric:"258"},{alpha2:"PG",alpha3:"PNG",numeric:"598"},{alpha2:"PH",alpha3:"PHL",numeric:"608"},{alpha2:"PK",alpha3:"PAK",numeric:"586"},{alpha2:"PL",alpha3:"POL",numeric:"616"},{alpha2:"PM",alpha3:"SPM",numeric:"666"},{alpha2:"PN",alpha3:"PCN",numeric:"612"},{alpha2:"PR",alpha3:"PRI",numeric:"630"},{alpha2:"PS",alpha3:"PSE",numeric:"275"},{alpha2:"PT",alpha3:"PRT",numeric:"620"},{alpha2:"PW",alpha3:"PLW",numeric:"585"},{alpha2:"PY",alpha3:"PRY",numeric:"600"},{alpha2:"QA",alpha3:"QAT",numeric:"634"},{alpha2:"RE",alpha3:"REU",numeric:"638"},{alpha2:"RO",alpha3:"ROU",numeric:"642"},{alpha2:"RS",alpha3:"SRB",numeric:"688"},{alpha2:"RU",alpha3:"RUS",numeric:"643"},{alpha2:"RW",alpha3:"RWA",numeric:"646"},{alpha2:"SA",alpha3:"SAU",numeric:"682"},{alpha2:"SB",alpha3:"SLB",numeric:"090"},{alpha2:"SC",alpha3:"SYC",numeric:"690"},{alpha2:"SD",alpha3:"SDN",numeric:"729"},{alpha2:"SE",alpha3:"SWE",numeric:"752"},{alpha2:"SG",alpha3:"SGP",numeric:"702"},{alpha2:"SH",alpha3:"SHN",numeric:"654"},{alpha2:"SI",alpha3:"SVN",numeric:"705"},{alpha2:"SJ",alpha3:"SJM",numeric:"744"},{alpha2:"SK",alpha3:"SVK",numeric:"703"},{alpha2:"SL",alpha3:"SLE",numeric:"694"},{alpha2:"SM",alpha3:"SMR",numeric:"674"},{alpha2:"SN",alpha3:"SEN",numeric:"686"},{alpha2:"SO",alpha3:"SOM",numeric:"706"},{alpha2:"SR",alpha3:"SUR",numeric:"740"},{alpha2:"SS",alpha3:"SSD",numeric:"728"},{alpha2:"ST",alpha3:"STP",numeric:"678"},{alpha2:"SV",alpha3:"SLV",numeric:"222"},{alpha2:"SX",alpha3:"SXM",numeric:"534"},{alpha2:"SY",alpha3:"SYR",numeric:"760"},{alpha2:"SZ",alpha3:"SWZ",numeric:"748"},{alpha2:"TC",alpha3:"TCA",numeric:"796"},{alpha2:"TD",alpha3:"TCD",numeric:"148"},{alpha2:"TF",alpha3:"ATF",numeric:"260"},{alpha2:"TG",alpha3:"TGO",numeric:"768"},{alpha2:"TH",alpha3:"THA",numeric:"764"},{alpha2:"TJ",alpha3:"TJK",numeric:"762"},{alpha2:"TK",alpha3:"TKL",numeric:"772"},{alpha2:"TL",alpha3:"TLS",numeric:"626"},{alpha2:"TM",alpha3:"TKM",numeric:"795"},{alpha2:"TN",alpha3:"TUN",numeric:"788"},{alpha2:"TO",alpha3:"TON",numeric:"776"},{alpha2:"TR",alpha3:"TUR",numeric:"792"},{alpha2:"TT",alpha3:"TTO",numeric:"780"},{alpha2:"TV",alpha3:"TUV",numeric:"798"},{alpha2:"TW",alpha3:"TWN",numeric:"158"},{alpha2:"TZ",alpha3:"TZA",numeric:"834"},{alpha2:"UA",alpha3:"UKR",numeric:"804"},{alpha2:"UG",alpha3:"UGA",numeric:"800"},{alpha2:"UM",alpha3:"UMI",numeric:"581"},{alpha2:"US",alpha3:"USA",numeric:"840"},{alpha2:"UY",alpha3:"URY",numeric:"858"},{alpha2:"UZ",alpha3:"UZB",numeric:"860"},{alpha2:"VA",alpha3:"VAT",numeric:"336"},{alpha2:"VC",alpha3:"VCT",numeric:"670"},{alpha2:"VE",alpha3:"VEN",numeric:"862"},{alpha2:"VG",alpha3:"VGB",numeric:"092"},{alpha2:"VI",alpha3:"VIR",numeric:"850"},{alpha2:"VN",alpha3:"VNM",numeric:"704"},{alpha2:"VU",alpha3:"VUT",numeric:"548"},{alpha2:"WF",alpha3:"WLF",numeric:"876"},{alpha2:"WS",alpha3:"WSM",numeric:"882"},{alpha2:"YE",alpha3:"YEM",numeric:"887"},{alpha2:"YT",alpha3:"MYT",numeric:"175"},{alpha2:"ZA",alpha3:"ZAF",numeric:"710"},{alpha2:"ZM",alpha3:"ZMB",numeric:"894"},{alpha2:"ZW",alpha3:"ZWE",numeric:"716"}],time_zone:YC},metadata:{title:"Base",code:"base"},system:{directory_path:["/Applications","/bin","/boot","/boot/defaults","/dev","/etc","/etc/defaults","/etc/mail","/etc/namedb","/etc/periodic","/etc/ppp","/home","/home/user","/home/user/dir","/lib","/Library","/lost+found","/media","/mnt","/net","/Network","/opt","/opt/bin","/opt/include","/opt/lib","/opt/sbin","/opt/share","/private","/private/tmp","/private/var","/proc","/rescue","/root","/sbin","/selinux","/srv","/sys","/System","/tmp","/Users","/usr","/usr/X11R6","/usr/bin","/usr/include","/usr/lib","/usr/libdata","/usr/libexec","/usr/local/bin","/usr/local/src","/usr/obj","/usr/ports","/usr/sbin","/usr/share","/usr/src","/var","/var/log","/var/mail","/var/spool","/var/tmp","/var/yp"],mime_type:{"application/epub+zip":{extensions:["epub"]},"application/gzip":{extensions:["gz"]},"application/java-archive":{extensions:["jar","war","ear"]},"application/json":{extensions:["json","map"]},"application/ld+json":{extensions:["jsonld"]},"application/msword":{extensions:["doc","dot"]},"application/octet-stream":{extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/ogg":{extensions:["ogx"]},"application/pdf":{extensions:["pdf"]},"application/rtf":{extensions:["rtf"]},"application/vnd.amazon.ebook":{extensions:["azw"]},"application/vnd.apple.installer+xml":{extensions:["mpkg"]},"application/vnd.mozilla.xul+xml":{extensions:["xul"]},"application/vnd.ms-excel":{extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-fontobject":{extensions:["eot"]},"application/vnd.ms-powerpoint":{extensions:["ppt","pps","pot"]},"application/vnd.oasis.opendocument.presentation":{extensions:["odp"]},"application/vnd.oasis.opendocument.spreadsheet":{extensions:["ods"]},"application/vnd.oasis.opendocument.text":{extensions:["odt"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{extensions:["docx"]},"application/vnd.rar":{extensions:["rar"]},"application/vnd.visio":{extensions:["vsd","vst","vss","vsw"]},"application/x-7z-compressed":{extensions:["7z"]},"application/x-abiword":{extensions:["abw"]},"application/x-bzip":{extensions:["bz"]},"application/x-bzip2":{extensions:["bz2","boz"]},"application/x-csh":{extensions:["csh"]},"application/x-freearc":{extensions:["arc"]},"application/x-httpd-php":{extensions:["php"]},"application/x-sh":{extensions:["sh"]},"application/x-tar":{extensions:["tar"]},"application/xhtml+xml":{extensions:["xhtml","xht"]},"application/xml":{extensions:["xml","xsl","xsd","rng"]},"application/zip":{extensions:["zip"]},"audio/3gpp":{extensions:["3gpp"]},"audio/3gpp2":{extensions:["3g2"]},"audio/aac":{extensions:["aac"]},"audio/midi":{extensions:["mid","midi","kar","rmi"]},"audio/mpeg":{extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/ogg":{extensions:["oga","ogg","spx","opus"]},"audio/opus":{extensions:["opus"]},"audio/wav":{extensions:["wav"]},"audio/webm":{extensions:["weba"]},"font/otf":{extensions:["otf"]},"font/ttf":{extensions:["ttf"]},"font/woff":{extensions:["woff"]},"font/woff2":{extensions:["woff2"]},"image/avif":{extensions:["avif"]},"image/bmp":{extensions:["bmp"]},"image/gif":{extensions:["gif"]},"image/jpeg":{extensions:["jpeg","jpg","jpe"]},"image/png":{extensions:["png"]},"image/svg+xml":{extensions:["svg","svgz"]},"image/tiff":{extensions:["tif","tiff"]},"image/vnd.microsoft.icon":{extensions:["ico"]},"image/webp":{extensions:["webp"]},"text/calendar":{extensions:["ics","ifb"]},"text/css":{extensions:["css"]},"text/csv":{extensions:["csv"]},"text/html":{extensions:["html","htm","shtml"]},"text/javascript":{extensions:["js","mjs"]},"text/plain":{extensions:["txt","text","conf","def","list","log","in","ini"]},"video/3gpp":{extensions:["3gp","3gpp"]},"video/3gpp2":{extensions:["3g2"]},"video/mp2t":{extensions:["ts"]},"video/mp4":{extensions:["mp4","mp4v","mpg4"]},"video/mpeg":{extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/ogg":{extensions:["ogv"]},"video/webm":{extensions:["webm"]},"video/x-msvideo":{extensions:["avi"]}}}},UC=new class extends uC{rawDefinitions;definitions;airline=new Lw(this);animal=new dC(this);color=new Pw(this);commerce=new yC(this);company=new fC(this);database=new mC(this);date=new qw(this);finance=new vC(this);food=new xC(this);git=new kC(this);hacker=new wC(this);helpers=new iC(this);image=new _C(this);internet=new EC(this);location=new RC(this);lorem=new PC(this);music=new NC(this);person=new zw(this);phone=new GC(this);science=new IC(this);system=new JC(this);vehicle=new VC(this);word=new jC(this);get address(){return hC({deprecated:"faker.address",proposed:"faker.location",since:"8.0",until:"10.0"}),this.location}get name(){return hC({deprecated:"faker.name",proposed:"faker.person",since:"8.0",until:"10.0"}),this.person}constructor(e){super({randomizer:e.randomizer});let{locale:t}=e;if(Array.isArray(t)){if(0===t.length)throw new ww("The locale option must contain at least one locale definition.");t=function(e){let t={};for(let r of e)for(let e in r){let a=r[e];void 0===t[e]?t[e]={...a}:t[e]={...a,...t[e]}}return t}(t)}this.rawDefinitions=t,this.definitions=jw(this.rawDefinitions)}getMetadata(){return this.rawDefinitions.metadata??{}}}({locale:[kw,$C]});class qC{data_length=50;generated_data=[];auto_proceed=!0;locale="en_GB";imgAPIs=["https://picsum.photos/500/500?random=","https://avatar.iran.liara.run/public/"];constructor({length:e,auto_proceed:t,locale:r}){void 0!==e&&(this.data_length=e),void 0!==t&&(this.auto_proceed=t),void 0!==r&&(this.locale=r.replace("-","_")),this.auto_proceed&&this.generate()}generate(){return this.make_data()}make_data(){for(let e=0;e0&&(t.parentId=this.get_parent_id(e)),this.generated_data.push(t)}return this.generated_data}get_parent_id(e){let t=Math.floor(Math.random()*this.generated_data.length).toString();return t=0==parseInt(t)?"1":t,t==(e+1).toString()&&(t=this.get_parent_id(e)),t}generate_data(e){const t=Math.floor(2*Math.random()),r=this.imgAPIs[Math.floor(Math.random()*this.imgAPIs.length)]+e;return{id:e,name:UC.person.fullName(),role:UC.person.jobTitle(),location:UC.location.city()+", "+UC.location.country(),image:t?r:""}}}class ZC{tree_data=[];handleCollapseChildren=()=>{};center_elem=({})=>null;itemHierarchy=[];tmp_tree_data=[];tree_level_step=2;display_tree_in_step=!0;auto_display_tree_in_step=!0;link_point_position={top:e=>`translate(${parseInt(e.attr("width"))/2}, 0)`,bottom:e=>`translate(${parseInt(e.attr("width"))/2}, ${e.attr("height")})`,right:e=>`translate(${e.attr("width")}, ${e.attr("height")/2})`,left:e=>`translate(0, ${e.attr("height")/2})`};inverse_link_point_position={top:"bottom",bottom:"top",left:"right",right:"left"};chartHeadWidth=120;chartHeadHeight=130;chartHeadLandscapeWidth=240;chartHeadLandscapeHeight=80;chartHeadRoundedWidth=120;chartHeadRoundedHeight=180;color_handler={};chart_head_type="default";show_chart_head_border=!0;animation_rotation_speed=50;animation_rotation_interval=1;head_linker_thumb_circle_radius=8;linker_thumb_icon_color="bright500";linker_thumb_shape="symbolDiamond2";head_image_shape="symbolCircle";head_image_surface_area=60;chart_head_bg="#ffffff";auto_set_chart_head_bg=!1;emitEvent=()=>!1;tree_link_types={curveBumpX:Hx,curveBumpY:Dx,curveBasisClosed:bk,curveLinear:gx,curveStep:Yk,curveStepAfter:Uk,curveStepBefore:$k};tree_link_type=void 0;rootWrapperContainer=null;app_unique_id="";app_root_unique_selector="";constructor(){setTimeout((()=>{this.app_root_unique_selector=`[data-ts-unique-id='${this.app_unique_id}']`}),0)}createDynamicEl(){return new xw}splitStringIntoBatch(e,t){let r=[];for(let a=0;a1?t?.[0][0]+t?.at(-1)?.[0]:t?.[0][0]}format_employee_name(e,t=15){const r=e?.split(" "),a=r?.length>2?r?.[0]+" "+r?.at(-1):r?.join(" ");return this.splitStringIntoBatch(a,t)}symbol_type(e){const t=e.replace(/symbol/,"").toLowerCase();return["circle","cross","diamond","square","star","triangle","wye"].includes(t)?"fill":["plus","x","triangle2","asterisk","square2","diamond2"].includes(t)?"stroke":"fill"}get_page_body_bg(){const e=document.body.style.getPropertyValue("background-color");return""==e?"#ffffff":e}get_chart_head_bg(){return this.auto_set_chart_head_bg?this.get_page_body_bg():this.chart_head_bg}get_image_shape_spacing(e){return{symbolCircle:10,symbolCross:10,symbolDiamond:25,symbolDiamond2:10,symbolSquare:0,symbolSquare2:-8,symbolStar:20,symbolTriangle:20,symbolTriangle2:10,symbolWye:20}[e]}makeHead(e,t=!1,r={parent:"bottom",children:"top"}){return"default"==this.chart_head_type?this.defaultHead(e,t,r):"landscape"==this.chart_head_type?this.landscapeHead(e,t,r):"rounded"==this.chart_head_type?this.roundedHead(e,t,r):this.defaultHead(e,t,r)}handleCenterHead(e){e.stopPropagation();const t=e.currentTarget.getBoundingClientRect();this.center_elem(t)}defaultHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=this.get_chart_head_bg(),l=Yt("svg").attr("class","main-svg-el"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("width",this.chartHeadWidth).attr("height",this.chartHeadHeight).attr("style","background-color: "+c).on("dblclick",(e=>this.handleCenterHead(e)));Yt("defs").append("filter").attr("id","blur1").attr("x",0).attr("y",0).append("feGaussianBlur").attr("in","SourceGraphic").attr("stdDeviation","3");const s=l.append("g"),u=s?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadWidth).attr("height",this.chartHeadHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),h=parseInt(u.attr("width"))/2,d=s?.append("g").attr("y",100),p=Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2);if(e.image){let t=h-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=h-this.head_image_surface_area<=10&&0==t?-10:t,o=h-this.head_image_surface_area<1?Math.abs(h-this.head_image_surface_area)+15:0,d.append("defs").append("clipPath").attr("id","default-head-clip-"+e.id).append("path").attr("d",pk().type(bw[this.head_image_shape]).size(p)).attr("transform",`translate(${parseInt(u.attr("width"))/2}, ${this.head_image_surface_area+t})`).attr("fill",n.bright500),d?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",this.head_image_surface_area).attr("height",this.head_image_surface_area).attr("x",parseInt(u.attr("width"))/2-this.head_image_surface_area/2).attr("y",this.head_image_surface_area/2+t).attr("clip-path",`url(#default-head-clip-${e.id})`)}else o=h-this.head_image_surface_area<1?Math.abs(h-this.head_image_surface_area)+15:0,d?.append("path").attr("d",pk().type(bw[this.head_image_shape]).size(p)).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(u.attr("width"))/2}, 50)`),d?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(u.attr("width"))/2).attr("y",56).attr("font-size","95%").text(this.get_user_initials(e.name));this.format_employee_name(e.name).forEach(((e,t)=>{s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",t>0?95+o:80+o).attr("font-size","85%").attr("fill",n.darker).attr("style","text-transform: "+(t>0?"none":"capitalize")).text(e),t>0&&(o+=15)}));const y=s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",100+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,20).forEach(((e,t)=>{y?.append("tspan").attr("x",parseInt(u.attr("width"))/2).attr("dy",t>0?".6rem":0).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",115+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,19).forEach(((e,r)=>{t?.append("tspan").attr("x",parseInt(u.attr("width"))/2).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}const f=this.chartHeadHeight+o;return u?.attr("height",f),l?.attr("height",f),this.add_linker(s,i,a,r,n,u,l,e,t),this.emitEvent("chart_head.create",{headNode:l.node()}),l}landscapeHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=Yt("svg").attr("class","main-svg-el"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("width",this.chartHeadLandscapeWidth).attr("height",this.chartHeadLandscapeHeight).attr("style","background-color: "+this.chart_head_bg).on("dblclick",(e=>this.handleCenterHead(e))),l=c.append("g"),s=l?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadLandscapeWidth).attr("height",this.chartHeadLandscapeHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),u=parseInt(s.attr("height"))/2,h=this.format_employee_name(e.name,18),d=l.append("g").attr("x",0).attr("y",0),p=l.append("g"),y=this.chartHeadLandscapeHeight+o;if(s.attr("height",y),c.attr("height",y),e.image){let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t;const r=this.head_image_surface_area>u?Math.abs(this.head_image_surface_area-u):0;s.attr("height",y+r),c.attr("height",y+r),c.attr("width",this.chartHeadLandscapeWidth+r),s.attr("width",this.chartHeadLandscapeWidth+r),p.append("defs").append("clipPath").attr("id","landscape-clip-"+e.id).append("path").attr("d",pk().type(bw[this.head_image_shape]).size(Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2))).attr("transform",`translate(${parseInt(s.attr("height"))/2}, ${this.head_image_surface_area+(t+20)})`).attr("fill",n.bright500),p?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",this.head_image_surface_area).attr("height",this.head_image_surface_area).attr("x",parseInt(s.attr("height"))/2-this.head_image_surface_area/2).attr("y",this.head_image_surface_area/2+(t+20)).attr("clip-path",`url(#landscape-clip-${e.id})`)}else{const t=this.head_image_surface_area>u?Math.abs(this.head_image_surface_area-u):0;s.attr("height",y+t),c.attr("height",y+t),c.attr("width",this.chartHeadLandscapeWidth+t),s.attr("width",this.chartHeadLandscapeWidth+t),p?.append("path").attr("d",pk().type(bw[this.head_image_shape]).size(Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2))).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(s.attr("height"))/2}, 50)`),p?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(s.attr("height"))/2).attr("y",parseInt(s.attr("height"))/2+6).attr("font-size","95%").text(this.get_user_initials(e.name))}const f=parseInt(s.attr("height")),m=d?.append("text").attr("x",f).attr("y",30).attr("font-size","95%").attr("fill",n.darker);h.forEach(((e,t)=>{m?.append("tspan").attr("x",f).attr("y",30).attr("dy",t>0?".7rem":0).attr("font-size","95%").attr("style","z-index: +9").text(e.toString()),t>0&&(o+=10)}));const g=d?.append("text").attr("x",f).attr("y",50+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,30).forEach(((e,t)=>{g?.append("tspan").attr("x",f).attr("dy",t>0?".6rem":0).attr("y",50+o).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=d?.append("text").attr("x",f).attr("y",65+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,30).forEach(((e,r)=>{t?.append("tspan").attr("x",f).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}return this.add_linker(l,i,a,r,n,s,c,e,t),this.emitEvent("chart_head.create",{headNode:c.node()}),c}roundedHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=Yt("svg").attr("class","main-svg-el rounded-head"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("style","overflow: visible;").attr("width",this.chartHeadRoundedWidth).attr("height",this.chartHeadRoundedHeight).attr("fill","none").on("dblclick",(e=>this.handleCenterHead(e))),l=c.append("g"),s=l?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadRoundedWidth).attr("height",this.chartHeadRoundedHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),u=parseInt(s.attr("width"))/2,h=l?.append("g"),d=Math.pow(2*(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape)),2),p=bw[this.head_image_shape];if(e.image){let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t,o=u-this.head_image_surface_area<0?2*Math.abs(u-this.head_image_surface_area):0,h.append("defs").append("clipPath").attr("id","rounded-corners-"+e.id).append("path").attr("d",pk().type(p).size(d)).attr("transform",`translate(${parseInt(s.attr("width"))/2}, ${2*this.head_image_surface_area-this.head_image_surface_area})`).attr("fill",n.bright500),h?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",2*this.head_image_surface_area).attr("height",2*this.head_image_surface_area).attr("x",parseInt(s.attr("width"))/2-this.head_image_surface_area).attr("y",this.head_image_surface_area-this.head_image_surface_area).attr("clip-path",`url(#rounded-corners-${e.id})`)}else{let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t,o=u-this.head_image_surface_area<0?2*Math.abs(u-this.head_image_surface_area):0,h?.append("path").attr("d",pk().type(p).size(d)).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(s.attr("width"))/2}, ${2*this.head_image_surface_area-this.head_image_surface_area})`),h?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(s.attr("width"))/2).attr("y",this.head_image_surface_area+Math.sqrt(d)/6).attr("font-size",this.head_image_surface_area/1.5+"px").text(this.get_user_initials(e.name))}this.format_employee_name(e.name,27).forEach(((e,t)=>{l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+18).attr("dy",t>0?50+o:0+o).attr("font-size","105%").attr("fill",n.darker).attr("style","text-transform: "+(t>0?"none":"capitalize")).text(e),t>0&&(o+=15)}));const y=l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+35+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,20).forEach(((e,t)=>{y?.append("tspan").attr("x",parseInt(s.attr("width"))/2).attr("dy",t>0?".6rem":0).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+50+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,19).forEach(((e,r)=>{t?.append("tspan").attr("x",parseInt(s.attr("width"))/2).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}const f=this.chartHeadRoundedHeight+o;return s?.attr("height",f),c?.attr("height",f),this.add_linker(l,i,a,r,n,s,c,e,t),this.emitEvent("chart_head.create",{headNode:c.node()}),c}add_linker(e,t,r,a,i,n,o,c,l){const s=Math.PI*this.head_linker_thumb_circle_radius*this.head_linker_thumb_circle_radius,u=(t,r,a)=>{null!=this.rootWrapperContainer?.querySelector("."+a)&&this.rootWrapperContainer?.querySelector("."+a)?.remove();const o="stroke"==this.symbol_type(this.linker_thumb_shape)?i.bright100:i[this.linker_thumb_icon_color];return e.append("path").attr("d",pk().type("cross"==t?Kx:uk).size(Math.sqrt(s))).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("fill",o).attr("stroke","minus"==t?o:"none").attr("class",a).attr("style","pointer-events: none").attr("stroke-width","minus"==t?2:0).attr("transform",this.link_point_position[r](n))};if(0!=a&&t&&e?.append("path").attr("d",pk().type(bw[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",0).attr("class","ts-linker").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"none").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[a.children](n)),0!=a&&r){const t=this,r="bottom"==a.parent?0:n.attr("height");let h=0;if(e?.append("path").attr("d",pk().type(bw[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("class","ts-linker").attr("style","cursor: pointer;").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"transparent").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[this.inverse_link_point_position[a.children]](n)).on("click",(e=>{const i=e.currentTarget.parentElement;u(h%2==0?"cross":"minus",this.inverse_link_point_position[a.children],"ts-lnk-icn-"+c.id+"-1"),h++,t.handleCollapseChildren?.(o,c.id,r);const n=i.getBoundingClientRect();setTimeout((()=>{h%2==0&&this.center_elem(n)}),0),h%2==0?this.emitEvent("chart_head.expanded",{svgNode:o,head_data:c,pointPosition:a},!1):this.emitEvent("chart_head.collapsed",{svgNode:o,head_data:c,pointPosition:a},!1)})),this.el_has_children(c.id,!0)||h++,u(this.el_has_children(c.id,!0)?"minus":"cross",this.inverse_link_point_position[a.children],"ts-lnk-icn-"+c.id+"-1"),l){const l=0==r?n.attr("height"):0;let h=0;e?.append("path").attr("d",pk().type(bw[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("class","ts-linker").attr("style","cursor: pointer").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"transparent").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[this.inverse_link_point_position[a.parent]](n)).on("click",(e=>{const r=e.currentTarget.parentElement;u(h%2==0?"cross":"minus",this.inverse_link_point_position[a.parent],"ts-lnk-icn-"+c.id+"-2"),t.handleCollapseChildren?.(o,c.id,l);const i=r.getBoundingClientRect();h++,setTimeout((()=>{h%2==0&&this.center_elem(i)}),0),h%2==0?this.emitEvent("chart_head.expanded",{svgNode:o,head_data:c,pointPosition:a},!1):this.emitEvent("chart_head.collapsed",{svgNode:o,head_data:c,pointPosition:a},!1)})),u("minus",this.inverse_link_point_position[a.parent],"ts-lnk-icn-"+c.id+"-2")}}}get_tree_items_hierarchy(e,t,r){const a=this.tree_data.filter((t=>t.parentId==e)),i=null==t?1:t+1,n=[];a.forEach((e=>{n.push(e),null!=r&&(null!=r.item_id&&r.item_id==e.id||null!=r.level&&r.level==i)&&r.callbackFn(e,i);this.tree_data.filter((t=>t.parentId==e.id)).length>0&&this.get_tree_items_hierarchy(e.id,i,r)}));const o=this.itemHierarchy.findIndex((e=>e.level==i));return-1==o?this.itemHierarchy.push({level:i,items:n}):this.itemHierarchy[o].items=n,this.itemHierarchy}get_second_ancestor_item(e){const t=this.tree_data.find((t=>t.id==e)),r=this.tree_data.find((e=>e.id==t?.parentId)),a=null==this.tree_data.find((e=>e.id==r?.parentId))?.parentId;let i;return i=null==r?.parentId?t:a?r:this.get_second_ancestor_item(r?.id),i}getElemRelPosInTree(e){const t=this.tree_data.find((t=>t.id==e));return this.tree_data.filter((e=>e.parentId==t.parentId)).findIndex((e=>e.id==t.id))+1}set_tmp_tree_data(e){if(this.display_tree_in_step||this.tree_data.length>500&&this.auto_display_tree_in_step){const t=null==e?"1":e;this.tmp_tree_data=this.get_children_down_to_level(t,this.tree_level_step),null==e&&(this.tmp_tree_data=[this.tree_data[0],...this.tmp_tree_data])}else this.tmp_tree_data=this.tree_data}getIsParentRootEl(e){return null!=e&&null==this.tree_data.find((t=>t.id==e))?.parentId}getIsElRootTreeChild(e){return null!=e&&null==this.tree_data.find((t=>t.id==e))?.parentId}getRootTreeEl(){return this.tree_data.find((e=>null==e.parentId))}el_has_children(e,t=!1){return t?this.tmp_tree_data.filter((t=>t.parentId==e)).length>0:this.tree_data.filter((t=>t.parentId==e)).length>0}get_children_down_to_level(e,t,r=1){let a=r,i=[];const n=this.tree_data.filter((t=>t.parentId==e));let o=[];return a0&&(o=n.map((e=>this.get_children_down_to_level(e.id,t,a+1))).flat()),i=[...n,...o],i}data_to_d3_format(e,t){let r=this.tree_data?.find((t=>(null==e?t.parentId:t.id)==e));r={...r,children:[]};return this.tree_data.filter((e=>e.parentId==r.id)).forEach((e=>{t&&(e.stat=1),this.el_has_children(e.id)?r.children.push(this.data_to_d3_format(e.id,t)):r.children.push(e)})),r}}class QC{tree_data=[];color_range=["#b31212","#b34712","#b38d12","#9ab312","#2fb312","#12b362","#12b3a8","#1278b3","#1712b3","#5712b3","#8d12b3","#b3128d","#b3124a","#b31212"];interpolated_color=e=>"";pallet={h:10,s:.5,l:.5,darker:.8,brighter:.8,bright100:.5,dark100:.5,gray:50,gray85:85};constructor({tree_data:e,color_range:t,pallet:r}){this.tree_data=e,void 0!==t&&t.length>0&&(this.color_range=t),null!=r&&(this.pallet=r),this.interpolateColor()}getColor(e){const t=this.get_color_percentage(e),r=this.interpolated_color(t),a=Br(r),i=Or(a);i.h+=this.pallet.h,i.s+=this.pallet.s;const n=Or(a);n.l+=this.pallet.l;const o=ra(this.pallet.gray85);return{color:r,darker:a?.darker(this.pallet.darker).toString(),brighter:a?.brighter(this.pallet.brighter).toString(),bright100:i.brighter(this.pallet.bright100).toString(),dark100:i.darker(this.pallet.dark100).toString(),bright500:n.toString(),gray:ra(this.pallet.gray).toString(),gray85:o.toString()}}get_app_gray(){return ra(50).toString()}get_color_percentage(e){return e/this.tree_data.length}interpolateColor(){this.interpolated_color=Ha(this.color_range)}}class XC{chartHelper;tree_map_arr=[];content_wrapper=null;tsInnerContainer=null;current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}map_children_data_to_head(e,t){const r=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t)),a=this.chartHelper.createDynamicEl();return r.forEach((r=>{const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.makeHead(r);i.appendChild(n?.node());const o=null==t?" st-root-el":"";i.className="ts-head-node-wrapper ts-w-id-"+r.id+o,a.appendChild(i),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:n?.node(),parentId:t}),this.chartHelper?.el_has_children(r.id)&&i.append(this.map_children_data_to_head(n,r.id))})),a.className="ts-head-wrapper child-container",void 0===e&&this.content_wrapper?.appendChild(a),a}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.content_wrapper.className="ts-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"top")}),0)}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId)))}drawBranchLink(e,t,r,a){const i=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===i)return;const n=this.chartHelper?.color_handler.getColor(e),o=r.getBoundingClientRect(),c=t.node().getBoundingClientRect(),l=Math.sqrt(Math.PI*this.chartHelper.head_linker_thumb_circle_radius*this.chartHelper.head_linker_thumb_circle_radius)/2,s=c.width/this.current_scale/2,u=(c.height+l)/this.current_scale,h=o.x/this.current_scale-c.x/this.current_scale+r.clientWidth/2,d=o.top/this.current_scale-c.top/this.current_scale,p=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Dx),y=[{source:[s,u],target:[h,d]}];t?.append("path").data(y).attr("d",p).attr("fill","none").attr("class","linker-line").attr("stroke",n?.gray).attr("stroke-width",1)}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-head-children-hidden");if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)if("true"==i){const e=a?.querySelector(".child-container");e.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),setTimeout((()=>{this.drawBranchLinkFresh()}),0)}else{const e=a?.querySelector(".child-container");e.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")}else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t);a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e){const t=this.tree_map_arr.filter((t=>t.parentId==e));t.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)}))}}class e_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="ts-vs-wrapper",this.head_child_wrapper_1.className="ts-vs-wrapper",this.head_child_wrapper_2.className="ts-vs-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.content_wrapper.className="ts-v-spider-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,null==t,{parent:"bottom",children:c%2==0?"bottom":"top"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"top":"bottom"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden"),o=this.chartHelper.getIsParentRootEl(a);if("true"===n&&!o)return;const c=this.chartHelper?.color_handler.getColor(e),l=r.getBoundingClientRect(),s=t.node().getBoundingClientRect(),u=s.width/this.current_scale/2,h="top"==i?0:s.height/this.current_scale,d=l.x/this.current_scale-s.x/this.current_scale+r.clientWidth/2,p="top"==i?(l.top+l.height)/this.current_scale-s.top/this.current_scale:l.top/this.current_scale-s.top/this.current_scale,y=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Dx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line linker-"+i).attr("stroke-width",1).attr("stroke",c?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden"),o=a?.querySelector(".child-container");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)"true"==n?(o.style.visibility="visible",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(o.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true"));else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-top-head-children-hidden"),n=a?.getAttribute("data-ts-bottom-head-children-hidden");if(0==r?this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2==0)):this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2!=0)),(i&&"false"!=i||0!=r)&&(n&&"false"!=n||0==r)){(0==r?a.parentElement.nextElementSibling:a.parentElement.previousElementSibling).style.visibility="",setTimeout((()=>{this.drawBranchLinkFresh();"true"==(0==r?a?.getAttribute("data-ts-bottom-head-children-hidden"):a?.getAttribute("data-ts-top-head-children-hidden"))&&a.querySelectorAll(".linker-"+(0==r?"top":"bottom")).forEach((e=>e.remove()))}),0),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","false")}else{(0==r?a.parentElement.nextElementSibling:a.parentElement.previousElementSibling).style.visibility="hidden",a.querySelector("svg").querySelectorAll(".linker-"+(0==r?"bottom":"top")).forEach((e=>e.remove())),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","true")}}}class t_{chartHelper;tree_map_arr=[];content_wrapper=null;tsInnerContainer=null;current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.content_wrapper.className="ts-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"left")}),0)}map_children_data_to_head(e,t){const r=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t)),a=this.chartHelper.createDynamicEl();return r.forEach((r=>{const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.createDynamicEl(),o=this.chartHelper.makeHead(r,!1,{parent:"right",children:"left"});n.append(o?.node()),i.appendChild(n);const c=null==t?" st-root-el":"";i.className="ts-head-node-wrapper st-single-h ts-w-id-"+r.id+c,a.appendChild(i),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:o?.node(),parentId:t}),this.chartHelper?.el_has_children(r.id)&&i.append(this.map_children_data_to_head(o,r.id))})),a.className="ts-head-wrapper st-single-h-child-container",void 0===e&&this.content_wrapper?.appendChild(a),a}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId)))}drawBranchLink(e,t,r,a){const i=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===i)return;const n=this.chartHelper?.color_handler.getColor(e),o=r.getBoundingClientRect(),c=t.node().getBoundingClientRect(),l=c.width/this.current_scale,s=c.height/this.current_scale/2,u=o.x/this.current_scale-c.x/this.current_scale+0,h=(o.top+o.height/2)/this.current_scale-c.top/this.current_scale,d=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Hx),p=[{source:[l,s],target:[u,h]}];t?.append("path").data(p).attr("d",d).attr("fill","none").attr("class","linker-line").attr("stroke-width",1).attr("stroke",n?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement.parentElement,i=a?.getAttribute("data-ts-head-children-hidden"),n=a?.querySelector("[class*='child-container']");if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".st-single-h-child-container").innerHTML)"true"==i?(n.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(n.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true"));else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".st-single-h-child-container").remove();const r=this.map_children_data_to_head(e,t);a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e){const t=this.tree_map_arr.filter((t=>t.parentId==e));t.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)}))}}class r_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="st-child-wrapper",this.head_child_wrapper_1.className="st-child-wrapper",this.head_child_wrapper_2.className="st-child-wrapper",this.content_wrapper.className="st-hsw-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.tsInnerContainer?.append(this.content_wrapper),this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,null==t,{parent:"right",children:c%2==0?"right":"left"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"right":"left"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===n)return;const o=this.chartHelper?.color_handler.getColor(e),c=r.getBoundingClientRect(),l=t.node().getBoundingClientRect(),s=Math.sqrt(Math.PI*this.chartHelper.head_linker_thumb_circle_radius*this.chartHelper.head_linker_thumb_circle_radius)/2,u="right"==i?0-s:(l.width+s)/this.current_scale,h=l.height/this.current_scale/2,d=(c.x+("right"==i?c.width:0))/this.current_scale-l.x/this.current_scale+0,p=(c.top+c.height/2)/this.current_scale-l.top/this.current_scale,y=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Hx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line linker-"+i).attr("stroke-width",1).attr("stroke",o?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)"true"==n?(a.querySelector(".child-container").style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(a?.setAttribute("data-ts-head-children-hidden","true"),a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.querySelector(".child-container").style.visibility="hidden");else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),setTimeout((()=>{this.drawBranchLinkFresh()}),0)}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-top-head-children-hidden"),n=a?.getAttribute("data-ts-bottom-head-children-hidden");if(0==r?this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2==0)):this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2!=0)),(i&&"false"!=i||0!=r)&&(n&&"false"!=n||0==r)){(0==r?a.parentElement.previousElementSibling:a.parentElement.nextElementSibling).style.visibility="visible",setTimeout((()=>{this.drawBranchLinkFresh();"true"==(0==r?a?.getAttribute("data-ts-bottom-head-children-hidden"):a?.getAttribute("data-ts-top-head-children-hidden"))&&a.querySelectorAll(".linker-"+(0==r?"left":"right")).forEach((e=>e.remove()))}),0),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","false")}else{const e=0==r?a.parentElement.previousElementSibling:a.parentElement.nextElementSibling;e.style.visibility="hidden",e.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.querySelectorAll(".linker-"+(0==r?"right":"left")).forEach((e=>e.remove())),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","true")}}}class a_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="st-child-wrapper",this.head_child_wrapper_1.className="st-child-wrapper",this.head_child_wrapper_2.className="st-child-wrapper",this.content_wrapper.className="st-cs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.tsInnerContainer?.append(this.content_wrapper),this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"bottom")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,!1,{parent:"right",children:null==t?"bottom":c%2==0?"right":"left"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"right":"left"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===n)return;const o=this.chartHelper?.color_handler.getColor(e),c=this.chartHelper.getIsParentRootEl(a),l=r.getBoundingClientRect(),s=t.node().getBoundingClientRect();let u,h;c?(u=s.width/this.current_scale/2,h=0):(u="right"==i?0:s.width/this.current_scale,h=s.height/this.current_scale/2);const d=(l.x+("right"==i?l.width:0))/this.current_scale-s.x/this.current_scale+0,p=(l.top+l.height/2)/this.current_scale-s.top/this.current_scale,y=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Hx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line").attr("stroke-width",1).attr("stroke",o?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)if("true"==n){const e=a?.querySelector(".child-container");e.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}else{const e=a?.querySelector(".child-container");e.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")}else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-head-children-hidden");i&&"false"!=i?(a.parentElement.previousElementSibling.style.visibility="",a.parentElement.previousElementSibling.previousElementSibling.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false")):(a.parentElement.previousElementSibling.style.visibility="hidden",a.parentElement.previousElementSibling.previousElementSibling.style.visibility="hidden",a.parentElement.previousElementSibling.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.parentElement.previousElementSibling.previousElementSibling.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")),this.drawBranchLinkFresh()}}class i_{content_wrapper=null;head_child_wrapper=null;tsInnerContainer=null;chartHelper;current_scale=1;nodes_group=void 0;links_group=void 0;rotate_deg=0;animation_interval=void 0;start_animation=!1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper.className="st-child-wrapper",this.content_wrapper.className="st-grs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper),this.tsInnerContainer?.append(this.content_wrapper),this.map_children_data_to_head(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el > g`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}animate_chat(e=!1,t=!1){if(e)return this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.nodes_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`),this.links_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`);this.start_animation=!this.start_animation,this.start_animation?this.animation_interval=setInterval((()=>{this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.nodes_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`),this.links_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`)}),this.chartHelper?.animation_rotation_speed):(null!=this.animation_interval&&clearInterval(this.animation_interval),this.animation_interval=void 0)}map_children_data_to_head(){const e=Cp(this.chartHelper.data_to_d3_format()).sort(((e,t)=>t.height-e.height||e.data.name.localeCompare(t.data.name))),t=540*Math.sqrt(this.chartHelper.tree_data.length/3);kp().size([360,t]).separation(((e,t)=>50))(e);const r=Yt("svg");r.attr("width",580),r.attr("height",250),r.attr("style","overflow: visible");const a=r.append("g").attr("transform",`translate(${r.attr("width")/2},${r.attr("height")/2})`);a.append("g").attr("class","links"),a.append("g").attr("class","nodes"),e.each((e=>{const t=this.chartHelper?.makeHead(e.data,!1,!1);e.head=t.node(),e.head.removeEventListener("dblclick",this.chartHelper.handleCenterHead),e.head.ondblclick=e=>{e.stopPropagation(),e.preventDefault();const t=e.currentTarget.querySelector("g").getBoundingClientRect();this.chartHelper?.center_elem(t)},e.color_set=this.chartHelper?.color_handler.getColor(e.data.id)})),r.select("g.nodes").selectAll("svg.node").data(e.descendants()).enter().append((e=>("rounded"!=this.chartHelper?.chart_head_type&&this.chartHelper?.show_chart_head_border&&(e.head.querySelector("rect").style.fill="white",e.head.querySelector("rect").style.strokeWidth="1"),e.head))).classed("node",!0).select("g").attr("transform",(e=>`rotate(${e.x}, 0, 0) translate(0, ${-e.y})`)),r.select("g.nodes").selectAll("circle.node").data(e.descendants()).enter().append("circle").classed("node",!0).attr("cx",0).attr("cy",(e=>-e.y)).attr("r",5).attr("fill",(e=>e.color_set.color)).attr("stroke",(e=>e.color_set.gray)).attr("stroke-width",1).attr("transform",(e=>`rotate(${e.x}, 0, 0)`));const i=Tx().angle((e=>e.x*Math.PI/180)).radius((e=>e.y));r.select("g.links").selectAll("path.link").data(e.links()).enter().append("path").classed("link",!0).attr("stroke",(e=>e.target.color_set.gray)).attr("fill","none").attr("stroke-width",1.5).attr("d",(e=>i([e.target,e.source]))),this.nodes_group=r.select("g.nodes"),this.links_group=r.select("g.links"),this.head_child_wrapper?.append(r.node())}}class n_{content_wrapper=null;head_child_wrapper=null;tsInnerContainer=null;chartHelper;current_scale=1;root_svg=void 0;rotate_deg=0;animation_interval=void 0;start_animation=!1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper.className="st-child-wrapper",this.content_wrapper.className="st-grs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper),this.tsInnerContainer?.append(this.content_wrapper),this.map_children_data_to_head(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}animate_chat(e=!1,t=!1){if(e)return this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.root_svg.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`);this.start_animation=!this.start_animation,this.start_animation?this.animation_interval=setInterval((()=>{this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.root_svg.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`)}),this.chartHelper?.animation_rotation_speed):(null!=this.animation_interval&&clearInterval(this.animation_interval),this.animation_interval=void 0)}map_children_data_to_head(){const e=Cp(this.chartHelper.data_to_d3_format()).sort(((e,t)=>t.height-e.height||e.data.name.localeCompare(t.data.name))),t=540*Math.sqrt(this.chartHelper.tree_data.length/3),r=2*t,a=2*t;e.each((e=>{const t=this.chartHelper?.makeHead(e.data,!1,!1);e.head=t.node(),e.color_set=this.chartHelper?.color_handler.getColor(e.data.id)}));py().size([2*Math.PI,t]).separation(((e,t)=>100))(e);const i=Yt("svg").attr("viewBox",[-110-t,-110-t,r,a]).attr("width",r).attr("height",a).attr("style","background-color: none; max-width: 100%; height: auto; overflow: visible;");i.append("g").attr("fill","none").attr("stroke",this.chartHelper?.color_handler.get_app_gray()).attr("stroke-opacity",1).attr("stroke-width",1.5).selectAll("path").data(e.links()).join("path").attr("d",Wx().angle((e=>e.x)).radius((e=>e.y)));const n=i.append("g").selectAll("g").data(e.descendants()).join("g").attr("transform",(e=>`rotate(${180*e.x/Math.PI-90}) translate(${e.y},0)`));n.append("circle").attr("fill",(e=>e.color_set.color)).attr("r",3),n.append((e=>("rounded"!=this.chartHelper?.chart_head_type&&this.chartHelper?.show_chart_head_border&&(e.head.querySelector("rect").style.fill="white",e.head.querySelector("rect").style.strokeWidth="1"),e.head))),n.append("title").text((e=>e.data.name+" - "+e.data.role)),this.root_svg=i,this.head_child_wrapper?.append(i.node())}}var o_={zoomIn:' ',zoomOut:' zoom-out Created with Sketch Beta. ',resetZoom:' ',rotate:'',rotate_once:' ',rotate_once_anti_clockwise:' ',rotate_anticlockwise:''};class c_{root_ui_element=void 0;zoomInOut=()=>null;resetZoom=()=>null;animate_chat=()=>null;tree_type=void 0;animatable_trees=["goldenRod","radialSpiderLeg"];constructor({root_ui_element:e,zoomInOut:t,resetZoom:r,animate_chat:a}){this.root_ui_element=e,this.zoomInOut=t,this.resetZoom=r,this.animate_chat=a,setTimeout((()=>{this.make_tools()}),0)}make_tools(){const e=new xw;e.className="tools-container",this.root_ui_element?.appendChild(e);const t=document.createElement("div");t.className="tool-item",t.innerHTML=o_.zoomIn,t.title="Zoom in",t.onclick=e=>this.zoomInOut();const r=document.createElement("div");r.className="tool-item",r.innerHTML=o_.zoomOut,r.title="Zoom out",r.onclick=e=>this.zoomInOut("out");const a=document.createElement("div");a.className="tool-item",a.innerHTML=o_.resetZoom,a.title="Reset zoom & position",a.onclick=e=>this.resetZoom();const i=document.createElement("div");i.className="tool-item",i.innerHTML=o_.rotate,i.title="Start/Stop Clockwise Rotation";const n=document.createElement("div");n.className="tool-item",n.innerHTML=o_.rotate_anticlockwise,n.title="Start/Stop Anticlockwise Rotation";const o=document.createElement("div");o.className="tool-item",o.innerHTML=o_.rotate_once,o.title="Rotate Clockwise Once";const c=document.createElement("div");c.className="tool-item",c.innerHTML=o_.rotate_once_anti_clockwise,c.title="Rotate Anticlockwise Once",e.append(t),e.append(r),e.append(a),this.animatable_trees.includes(this.tree_type)&&(e.append(i),e.append(n),e.append(o),e.append(c),i.onclick=e=>this.animate_chat(),n.onclick=e=>this.animate_chat(!1,!0),o.onclick=e=>this.animate_chat(!0),c.onclick=e=>this.animate_chat(!0,!0))}}class l_ extends EventTarget{libraryName="TreeSpider";targetRootContainer=null;rootWrapperContainer=null;tsInnerContainer=null;rootCanvasEl=null;chartHelper={};currentChartUI;zoom_instace;colorHandler={};tree_default_point_position="";instance_unique_id="";options={targetContainer:"",width:"900px",height:"500px",placeEl:"override",tree_data:void 0,color_range:[],tree_type:"default",chart_head_type:"default",show_tools:!0,show_chart_head_border:!1,animation_rotation_speed:10,animation_rotation_interval:1,backgroundPattern:"default",backgroundSize:void 0,customBackground:void 0,backgroundPosition:void 0,head_linker_thumb_circle_radius:8,linker_thumb_icon_color:"bright500",linker_thumb_shape:"symbolCircle",head_image_shape:"symbolCircle",chart_head_bg:"#ffffff",auto_set_chart_head_bg:!1,display_tree_in_step:!1,auto_display_tree_in_step:!0,tree_level_step:2,pallet:{h:10,s:.5,l:.5,darker:3,brighter:.8,bright100:.5,dark100:.5,gray:50,gray85:85},tree_link_type:void 0,random_data_length:200,autoInitialize:!0,zoom_in_distance:1.5,zoom_out_distance:.5,verticalSpace:"120px",font_link:"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap",font_name:"Lato"};constructor(e){if(super(),null==e.targetContainer)throw new Error(this.libraryName+": The target container is required");if(null!=e.tree_data)this.options.tree_data=e.tree_data;else{const t=new qC({length:e.random_data_length||this.options.random_data_length});this.options.tree_data=t.generated_data}this.setOptions(e),this.instance_unique_id="tree_spider_"+this.options.targetContainer.replace(/[\W\D]/,"_"),this.loadFont(),console.info(this.libraryName+" ready!"),this.options.autoInitialize&&this.initialize()}initialize(){if(this.targetRootContainer=document.querySelector(this.options.targetContainer),null===this.targetRootContainer)throw new Error(this.libraryName+": target container not found");this.targetRootContainer.setAttribute("data-tree-spider-initialized",this.instance_unique_id),this.createUI(),setTimeout((()=>{this.emitEvent("library.init",{rootContainer:this.rootWrapperContainer})}),0),console.info(this.libraryName+" initialized!")}initialize_root_container(){this.rootWrapperContainer=new vw,this.rootWrapperContainer.setAttribute("data-ts-unique-id",this.instance_unique_id),this.setCSSPropertyVar("--vertical-space-var",this.options.verticalSpace),this.setCSSPropertyVar("--font-family",this.options.font_name),this.setCSSPropertyVar("--root-cont-width",this.options.width),this.setCSSPropertyVar("--root-cont-height",this.options.height),this.rootWrapperContainer.setAttribute("backgroundPattern",this.options.backgroundPattern),this.rootWrapperContainer.setAttribute("backgroundSize",this.options.backgroundSize),this.rootWrapperContainer.setAttribute("customBackground",this.options.customBackground),this.rootWrapperContainer.setAttribute("backgroundPosition",this.options.backgroundPosition)}setCSSPropertyVar(e,t){this.rootWrapperContainer?.style.setProperty(e,t)}loadFont(){let e,t,r;null==jt('[href="https://fonts.googleapis.com"]').node()&&(t=Yt("link").attr("rel","preconnect").attr("href","https://fonts.googleapis.com")),null==jt('[href="https://fonts.gstatic.com"]').node()&&(r=Yt("link").attr("rel","preconnect").attr("href","https://fonts.gstatic.com").attr("crossOrigin","")),this.options.font_link&&(e=Yt("link").attr("href",this.options.font_link).attr("rel","stylesheet")),null!=t&&document.head.appendChild(t.node()),null!=r&&document.head.appendChild(r.node()),null!=e&&document.head.appendChild(e.node())}setObjectValue(e,t){const r=e;if(0==Object.keys(r).length)return t;for(const e in r)if(Object.keys(t).includes(e)&&Object.hasOwnProperty.call(r,e))if("object"!=typeof r[e]||Array.isArray(r[e]))r[e]=t[e];else{const a=this.setObjectValue(r[e],t[e]);r[e]={...r[e],...a}}return r}createUI(){this.initialize_root_container(),this.chartHelper=new ZC,this.chartHelper.rootWrapperContainer=this.rootWrapperContainer,this.chartHelper.app_unique_id=this.instance_unique_id,this.chartHelper.tree_data=this.options.tree_data,this.chartHelper.center_elem=this.center_elem.bind(this),this.chartHelper.chart_head_type=this.options.chart_head_type,this.chartHelper.animation_rotation_speed=this.options.animation_rotation_speed,this.chartHelper.animation_rotation_interval=this.options.animation_rotation_interval,this.chartHelper.head_linker_thumb_circle_radius=this.options.head_linker_thumb_circle_radius,this.chartHelper.linker_thumb_icon_color=this.options.linker_thumb_icon_color,this.chartHelper.linker_thumb_shape=this.options.linker_thumb_shape,this.chartHelper.head_image_shape=this.options.head_image_shape,this.chartHelper.chart_head_bg=this.options.chart_head_bg,this.chartHelper.auto_set_chart_head_bg=this.options.auto_set_chart_head_bg,this.chartHelper.display_tree_in_step=this.options.display_tree_in_step,this.chartHelper.auto_display_tree_in_step=this.options.auto_display_tree_in_step,this.chartHelper.tree_level_step=this.options.tree_level_step,this.chartHelper.tree_link_type=this.options.tree_link_type,this.chartHelper.emitEvent=this.emitEvent.bind(this),this.colorHandler=new QC({tree_data:this.options.tree_data,color_range:this.options.color_range,pallet:this.options.pallet}),this.chartHelper.color_handler=this.colorHandler,this.placeRootContainer()}zoomInOut(e="in"){const t="in"==e?this.options.zoom_in_distance:this.options.zoom_out_distance;this.zoom_instace?.scaleBy(jt(`[data-ts-unique-id='${this.instance_unique_id}']`),t)}resetZoom(){const e=jt(`[data-ts-unique-id='${this.instance_unique_id}'] .root-svg-el > g`).node().getBoundingClientRect();this.center_elem(e,this.tree_default_point_position)}placeRootContainer(){if(this.tsInnerContainer=this.chartHelper.createDynamicEl(),this.tsInnerContainer.className="ts-inner-container",0==this.options.tree_data?.length){const e=new xw;e.innerText="No data provided!",this.tsInnerContainer.appendChild(e)}if(this.rootWrapperContainer?.appendChild(this.tsInnerContainer),"start"==this.options.placeEl?this.targetRootContainer?.prepend(this.rootWrapperContainer):"end"==this.options.placeEl?this.targetRootContainer?.append(this.rootWrapperContainer):"object"==typeof this.options.placeEl&&Object.keys(this.options.placeEl).length>0?this.targetRootContainer?.insertBefore(this.rootWrapperContainer,this.targetRootContainer.querySelector(this.options.placeEl.beforeEl)):(this.targetRootContainer.innerHTML="",this.targetRootContainer.appendChild(this.rootWrapperContainer)),this.bindPanning(),"default"==this.options.tree_type)this.currentChartUI=new XC({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("vSpiderWalk"==this.options.tree_type)this.currentChartUI=new e_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("hSpider"==this.options.tree_type)this.currentChartUI=new t_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("hSpiderWalk"==this.options.tree_type)this.currentChartUI=new r_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("cellar"==this.options.tree_type)this.currentChartUI=new a_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("goldenRod"==this.options.tree_type)this.currentChartUI=new i_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else{if("radialSpiderLeg"!=this.options.tree_type)throw new Error("Not implemented and you are welcome to implement it :)");this.currentChartUI=new n_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper})}if(this.options.tree_data.length>0&&this.options.show_tools){new c_({root_ui_element:this.rootWrapperContainer,zoomInOut:this.zoomInOut.bind(this),resetZoom:this.resetZoom.bind(this),animate_chat:this.currentChartUI?.animate_chat?.bind(this.currentChartUI)}).tree_type=this.options.tree_type}}bindPanning(){const e=this.rootWrapperContainer?.getBoundingClientRect(),t=jt(`[data-ts-unique-id='${this.instance_unique_id}']`);this.zoom_instace=gw().filter((e=>(e.preventDefault(),!(e.ctrlKey&&"wheel"!==e.type||e.button)))).extent([[0,0],[e.width,e.height]]).on("zoom",(e=>{this.emitEvent("zooming",{e:e})&&(this.tsInnerContainer.style.transform=`translate(${e.transform.x}px, ${e.transform.y}px) scale(${e.transform.k})`,this.rootWrapperContainer.style.setProperty("--ts-root-container-cursor","grabbing"),this.currentChartUI.current_scale=e.transform.k)})).on("end",(e=>{this.rootWrapperContainer.style.setProperty("--ts-root-container-cursor","grab")})),t.call(this.zoom_instace).on("dblclick.zoom",(e=>null))}center_elem(e,t="center"){const r=jt(`[data-ts-unique-id='${this.instance_unique_id}']`);""==this.tree_default_point_position&&(this.tree_default_point_position=t);const a=r.node()?.getBoundingClientRect(),i=this.tsInnerContainer?.getBoundingClientRect(),n=(e.left-i.left)/this.currentChartUI.current_scale,o=(e.top-i.top)/this.currentChartUI.current_scale,c=a.width/2-e.width/2/this.currentChartUI.current_scale,l=a.height/2-e.height/2/this.currentChartUI.current_scale;let s=0,u=0;if("center"==t)s=n-c,u=o-l;else if("top"==t)s=n-c,u=o-10;else if("bottom"==t){s=n-c;u=o-(l+(a.height/2-e.height/2))+10}else if("left"==t)s=n-10,u=o-l;else if("right"==t){s=n-(c+(a.width/2-e.width/2))+10,u=o-l}r.transition().duration(2500).call(this.zoom_instace?.transform,cw.translate(-s,-u))}emitEvent(e,t,r=!0){const a=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:r});return this.dispatchEvent(a)}updateChartHeadBg(e){"goldenRod"==this.options.tree_type||"radialSpiderLeg"==this.options.tree_type?(this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.querySelector("rect").style.fill=e)),this.addEventListener("chart_head.expanded",(()=>this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.querySelector("rect").style.fill=e))))):(this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.style.backgroundColor=e)),this.addEventListener("chart_head.expanded",(()=>this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.style.backgroundColor=e)))))}on(e,t){this.addEventListener(e,t)}setOptions(e){this.setObjectValue(this.options,e)}zoom(e){this.zoomInOut(e)}startStopRotateCW(){this.currentChartUI?.animate_chat()}startStopRotateACW(){this.currentChartUI?.animate_chat(!1,!0)}rotateOnceCW(){this.currentChartUI?.animate_chat(!0)}rotateOnceACW(){this.currentChartUI?.animate_chat(!0,!0)}}return l_}(); diff --git a/dist/css/treeSpider.css b/dist/css/treeSpider.css deleted file mode 100644 index d9c0af8..0000000 --- a/dist/css/treeSpider.css +++ /dev/null @@ -1,326 +0,0 @@ -:root { - --ts-root-el-bg-image: url(""); - --ts-root-container-cursor: default; - --zoom-level: 1; - --move-x: 0px; - --move-y: 0px; - --head-shadow-color: ""; - --vertical-space-var: 80px; - --font-family: "Lato"; - --root-cont-width: 900px; - --root-cont-height: 500px; -} - -.ts-root-wrapper-element * { - -webkit-user-select: none; /* Safari */ - -khtml-user-select: none; /* Konqueror */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* Internet Explorer/Edge */ - user-select: none; -} - -.ts-root-wrapper-element { - width: var(--root-cont-width); - height: var(--root-cont-height); - display: flex; - background-image: var(--ts-root-el-bg-image); - position: relative; - overflow: hidden; - cursor: var(--ts-root-container-cursor); -} - -.ts-root-wrapper-element .root-el { - transition: all 1s ease-in; -} - -.ts-root-wrapper-element * { - font-family: var(--font-family); -} - -.ts-root-wrapper-element .ts-inner-container { - width: auto; - transform-origin: 0% 0%; -} - -.ts-root-wrapper-element .tools-container { - width: auto; - height: auto; - border-radius: 12px; - display: flex; - overflow: hidden; - position: absolute; - top: 10px; - left: 10px; - z-index: 10; - /* From https://css.glass */ - background: rgba(255, 255, 255, 0.6); - box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1); - backdrop-filter: blur(5px); - -webkit-backdrop-filter: blur(5px); - border: 1px solid rgba(255, 255, 255, 0.3); -} - -.ts-root-wrapper-element .tools-container .tool-item { - width: auto; - height: 30px; - padding: 0px 10px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; -} - -.ts-root-wrapper-element .tools-container .tool-item:hover { - background-color: rgb(194, 194, 194); -} - -.ts-root-wrapper-element .tools-container .tool-item svg { - width: 16px !important; - height: 16px !important; -} - -.main-svg-el { - background-color: white; - overflow: visible; - border-radius: 16px; - margin: 0px !important; - transition: background-color 0.3s linear; - box-shadow: -1px 2px 14px 3px rgba(91, 91, 91, 0.19); - -webkit-box-shadow: -1px 2px 14px 3px rgba(91, 91, 91, 0.19); - -moz-box-shadow: -1px 2px 14px 3px rgba(91, 91, 91, 0.19); -} - -.main-svg-el.rounded-head { - background-color: transparent !important; - box-shadow: none !important; -} - -.inset-shadow { - box-shadow: -1px 2px 14px 6px rgba(91, 91, 91, 0.19) inset !important; - -webkit-box-shadow: -1px 2px 14px 6px rgba(91, 91, 91, 0.19) inset !important; - -moz-box-shadow: -1px 2px 14px 6px rgba(91, 91, 91, 0.19) inset !important; -} - -.main-svg-el .linker-line { - pointer-events: none; -} - -.ts-head-wrapper { - padding: 10px; - display: flex; - flex-wrap: wrap; -} - -.ts-head-wrapper svg { - margin: 0px 25px; -} - -.child-container { - margin-top: var(--vertical-space-var); - width: 100%; - flex-wrap: nowrap !important; -} - -.ts-head-wrapper .ts-head-node-wrapper { - display: flex; - flex-wrap: wrap; - justify-content: center; - align-items: flex-start; - align-content: flex-start; - margin: 10px; -} - -.ts-v-spider-head-wrapper { - padding: 10px; - display: flex !important; - flex-wrap: wrap; - flex-direction: column !important; -} - -.ts-v-spider-head-wrapper > div { - display: flex; - flex-wrap: nowrap; - justify-content: center; - flex-wrap: nowrap; - flex-direction: row; - align-items: flex-start; - flex-shrink: 0; -} - -.ts-v-spider-head-wrapper > div:first-child { - align-items: flex-end !important; -} - -.ts-v-spider-head-wrapper > div:nth-child(2) { - align-items: center !important; - padding-top: calc(var(--vertical-space-var)); -} - -.ts-v-spider-head-wrapper > div:nth-child(2) > div { - margin-bottom: var(--vertical-space-var)/2 !important; -} - -.ts-v-spider-head-wrapper .child-container { - margin-top: var(--vertical-space-var); - width: 100%; - flex-wrap: nowrap !important; - display: flex; - justify-content: center; - align-items: flex-start; -} - -.ts-v-spider-head-wrapper .child-container.top { - margin-top: 0px !important; - margin-bottom: var(--vertical-space-var) !important; - align-items: flex-end !important; -} - -.ts-v-spider-head-wrapper .ts-head-node-wrapper { - display: flex; - flex-wrap: wrap; - justify-content: center; - align-items: flex-start; - margin: 0px 20px !important; -} - -.st-single-h { - display: flex !important; - flex-direction: row !important; - align-items: center; - flex-wrap: nowrap !important; - padding: 0px !important; - margin: 0px !important; -} - -.st-single-h > div > svg { - padding: 0px !important; - margin: 0px !important; -} - -.st-single-h-child-container { - margin: 0px 0px 0px var(--vertical-space-var) !important; - display: flex !important; - flex-direction: column !important; - flex-shrink: 0; - align-items: flex-start !important; - justify-content: center; -} - -.st-single-h > div { - height: 100% !important; - display: flex; - flex-direction: column; - justify-content: center; -} - -.st-single-h-child-container .st-single-h { - margin-bottom: 15px !important; -} - -.st-hsw-content-wrapper { - display: flex; -} - -.st-hsw-content-wrapper .st-child-wrapper { - display: flex; - flex-direction: column; - justify-content: center; -} - -.st-hsw-content-wrapper .st-child-wrapper:nth-child(2) { - justify-content: center; - align-items: center; -} - -.st-hsw-content-wrapper .st-child-wrapper:nth-child(2) .ts-head-node-wrapper { - justify-content: center !important; - margin: 0px !important; - padding: 0px var(--vertical-space-var) 0px var(--vertical-space-var) !important; -} - -.st-hsw-content-wrapper .st-child-wrapper:nth-child(2) .child-container { - margin: 0px !important; -} - -.st-hsw-content-wrapper .ts-head-node-wrapper { - margin-bottom: 15px; - display: flex; - flex-direction: row; - align-items: center; -} - -.st-hsw-content-wrapper .ts-head-node-wrapper.top { - justify-content: flex-end !important; -} - -.st-hsw-content-wrapper .ts-head-node-wrapper .child-container { - margin-top: 0px !important; - margin-left: var(--vertical-space-var); -} - -.st-hsw-content-wrapper .ts-head-node-wrapper .child-container.top { - margin-right: var(--vertical-space-var); -} - -.st-cs-content-wrapper { - display: grid; - grid-template-columns: minmax(200px, 1fr) minmax(200px, 1fr); - grid-row: 1fr 60px; - grid-template-areas: "leftContainer rightContainer" "centerContainer centerContainer"; - min-height: 200px; -} - -.st-cs-content-wrapper .st-child-wrapper { - display: flex; - flex-direction: column; - width: auto; - justify-content: flex-end; -} - -.st-cs-content-wrapper .ts-head-node-wrapper { - display: flex; - flex-direction: row !important; - margin-right: var(--vertical-space-var); - align-items: flex-end; - justify-content: flex-end; - margin-bottom: 15px; -} - -.st-cs-content-wrapper .st-child-wrapper .child-container { - margin: 0px var(--vertical-space-var) var(--vertical-space-var) 0px !important; -} - -.st-cs-content-wrapper .st-child-wrapper:nth-child(2) .child-container { - margin: 0px 0px var(--vertical-space-var) var(--vertical-space-var) !important; -} - -.st-cs-content-wrapper .st-child-wrapper:first-child { - grid-area: leftContainer; -} - -.st-cs-content-wrapper .st-child-wrapper:nth-child(2) { - grid-area: rightContainer; -} - -.st-cs-content-wrapper .st-child-wrapper:nth-child(2) .ts-head-node-wrapper { - justify-content: flex-start !important; - margin-right: 0px !important; - margin-left: var(--vertical-space-var) !important; -} - -.st-cs-content-wrapper .st-child-wrapper:last-child { - grid-area: centerContainer; - align-items: center; - justify-content: center; - padding-top: var(--vertical-space-var); -} - -.st-cs-content-wrapper .st-child-wrapper:last-child .ts-head-node-wrapper { - margin: 0px !important; -} - -.st-cs-content-wrapper .st-child-wrapper:last-child .child-container { - margin: 0px !important; -} - -/*# sourceMappingURL=treeSpider.css.map */ diff --git a/dist/css/treeSpider.css.map b/dist/css/treeSpider.css.map deleted file mode 100644 index ed91698..0000000 --- a/dist/css/treeSpider.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["../../scss/treeSpider.scss"],"names":[],"mappings":"AAAA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AASJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAOJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EAEI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI,YAlHa;EAmHb;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAQJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI,YApKa;EAqKb;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAOJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;;;AAOJ;EACI;;;AAIJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA,aA3Qa;;;AA8QjB;EACI,cA/Qa;;;AAsRjB;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA,cAxSa;EAySb;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA,aAxUa;;;AA2UjB;EACI;;;AAGJ;EACI","file":"treeSpider.css"} \ No newline at end of file diff --git a/dist/es/treeSpider.bundle.js b/dist/es/treeSpider.bundle.js deleted file mode 100644 index 28ecda1..0000000 --- a/dist/es/treeSpider.bundle.js +++ /dev/null @@ -1,23163 +0,0 @@ -/** - * SVG backgrounds gotten from https://www.fffuel.co - */ -var backgrounds = { - flux: ` - - - - - - - - `, - quad: ``, - blurry: ` - `, - chaos: ``, - spiral: ``, - flurry: ``, - whirling: ``, - replicate: ` - - - - - - `, - scribble: ``, - squiggly: ``, - gyrate: ``, - leaves: ``, - reflection: ``, - spot: ` - - - - ` -}; - -function ascending$3(a, b) { - return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function descending$2(a, b) { - return a == null || b == null ? NaN - : b < a ? -1 - : b > a ? 1 - : b >= a ? 0 - : NaN; -} - -function bisector(f) { - let compare1, compare2, delta; - - // If an accessor is specified, promote it to a comparator. In this case we - // can test whether the search value is (self-) comparable. We can’t do this - // for a comparator (except for specific, known comparators) because we can’t - // tell if the comparator is symmetric, and an asymmetric comparator can’t be - // used to test whether a single value is comparable. - if (f.length !== 2) { - compare1 = ascending$3; - compare2 = (d, x) => ascending$3(f(d), x); - delta = (d, x) => f(d) - x; - } else { - compare1 = f === ascending$3 || f === descending$2 ? f : zero$1; - compare2 = f; - delta = f; - } - - function left(a, x, lo = 0, hi = a.length) { - if (lo < hi) { - if (compare1(x, x) !== 0) return hi; - do { - const mid = (lo + hi) >>> 1; - if (compare2(a[mid], x) < 0) lo = mid + 1; - else hi = mid; - } while (lo < hi); - } - return lo; - } - - function right(a, x, lo = 0, hi = a.length) { - if (lo < hi) { - if (compare1(x, x) !== 0) return hi; - do { - const mid = (lo + hi) >>> 1; - if (compare2(a[mid], x) <= 0) lo = mid + 1; - else hi = mid; - } while (lo < hi); - } - return lo; - } - - function center(a, x, lo = 0, hi = a.length) { - const i = left(a, x, lo, hi - 1); - return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i; - } - - return {left, center, right}; -} - -function zero$1() { - return 0; -} - -function number$3(x) { - return x === null ? NaN : +x; -} - -function* numbers(values, valueof) { - if (valueof === undefined) { - for (let value of values) { - if (value != null && (value = +value) >= value) { - yield value; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { - yield value; - } - } - } -} - -const ascendingBisect = bisector(ascending$3); -const bisectRight = ascendingBisect.right; -const bisectLeft = ascendingBisect.left; -const bisectCenter = bisector(number$3).center; - -function blur(values, r) { - if (!((r = +r) >= 0)) throw new RangeError("invalid r"); - let length = values.length; - if (!((length = Math.floor(length)) >= 0)) throw new RangeError("invalid length"); - if (!length || !r) return values; - const blur = blurf(r); - const temp = values.slice(); - blur(values, temp, 0, length, 1); - blur(temp, values, 0, length, 1); - blur(values, temp, 0, length, 1); - return values; -} - -const blur2 = Blur2(blurf); - -const blurImage = Blur2(blurfImage); - -function Blur2(blur) { - return function(data, rx, ry = rx) { - if (!((rx = +rx) >= 0)) throw new RangeError("invalid rx"); - if (!((ry = +ry) >= 0)) throw new RangeError("invalid ry"); - let {data: values, width, height} = data; - if (!((width = Math.floor(width)) >= 0)) throw new RangeError("invalid width"); - if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError("invalid height"); - if (!width || !height || (!rx && !ry)) return data; - const blurx = rx && blur(rx); - const blury = ry && blur(ry); - const temp = values.slice(); - if (blurx && blury) { - blurh(blurx, temp, values, width, height); - blurh(blurx, values, temp, width, height); - blurh(blurx, temp, values, width, height); - blurv(blury, values, temp, width, height); - blurv(blury, temp, values, width, height); - blurv(blury, values, temp, width, height); - } else if (blurx) { - blurh(blurx, values, temp, width, height); - blurh(blurx, temp, values, width, height); - blurh(blurx, values, temp, width, height); - } else if (blury) { - blurv(blury, values, temp, width, height); - blurv(blury, temp, values, width, height); - blurv(blury, values, temp, width, height); - } - return data; - }; -} - -function blurh(blur, T, S, w, h) { - for (let y = 0, n = w * h; y < n;) { - blur(T, S, y, y += w, 1); - } -} - -function blurv(blur, T, S, w, h) { - for (let x = 0, n = w * h; x < w; ++x) { - blur(T, S, x, x + n, w); - } -} - -function blurfImage(radius) { - const blur = blurf(radius); - return (T, S, start, stop, step) => { - start <<= 2, stop <<= 2, step <<= 2; - blur(T, S, start + 0, stop + 0, step); - blur(T, S, start + 1, stop + 1, step); - blur(T, S, start + 2, stop + 2, step); - blur(T, S, start + 3, stop + 3, step); - }; -} - -// Given a target array T, a source array S, sets each value T[i] to the average -// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop, -// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between -// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an -// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted -// according to r - ⌊radius⌋. -function blurf(radius) { - const radius0 = Math.floor(radius); - if (radius0 === radius) return bluri(radius); - const t = radius - radius0; - const w = 2 * radius + 1; - return (T, S, start, stop, step) => { // stop must be aligned! - if (!((stop -= step) >= start)) return; // inclusive stop - let sum = radius0 * S[start]; - const s0 = step * radius0; - const s1 = s0 + step; - for (let i = start, j = start + s0; i < j; i += step) { - sum += S[Math.min(stop, i)]; - } - for (let i = start, j = stop; i <= j; i += step) { - sum += S[Math.min(stop, i + s0)]; - T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w; - sum -= S[Math.max(start, i - s0)]; - } - }; -} - -// Like blurf, but optimized for integer radius. -function bluri(radius) { - const w = 2 * radius + 1; - return (T, S, start, stop, step) => { // stop must be aligned! - if (!((stop -= step) >= start)) return; // inclusive stop - let sum = radius * S[start]; - const s = step * radius; - for (let i = start, j = start + s; i < j; i += step) { - sum += S[Math.min(stop, i)]; - } - for (let i = start, j = stop; i <= j; i += step) { - sum += S[Math.min(stop, i + s)]; - T[i] = sum / w; - sum -= S[Math.max(start, i - s)]; - } - }; -} - -function count$1(values, valueof) { - let count = 0; - if (valueof === undefined) { - for (let value of values) { - if (value != null && (value = +value) >= value) { - ++count; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { - ++count; - } - } - } - return count; -} - -function length$3(array) { - return array.length | 0; -} - -function empty$2(length) { - return !(length > 0); -} - -function arrayify(values) { - return typeof values !== "object" || "length" in values ? values : Array.from(values); -} - -function reducer(reduce) { - return values => reduce(...values); -} - -function cross$2(...values) { - const reduce = typeof values[values.length - 1] === "function" && reducer(values.pop()); - values = values.map(arrayify); - const lengths = values.map(length$3); - const j = values.length - 1; - const index = new Array(j + 1).fill(0); - const product = []; - if (j < 0 || lengths.some(empty$2)) return product; - while (true) { - product.push(index.map((j, i) => values[i][j])); - let i = j; - while (++index[i] === lengths[i]) { - if (i === 0) return reduce ? product.map(reduce) : product; - index[i--] = 0; - } - } -} - -function cumsum(values, valueof) { - var sum = 0, index = 0; - return Float64Array.from(values, valueof === undefined - ? v => (sum += +v || 0) - : v => (sum += +valueof(v, index++, values) || 0)); -} - -function variance(values, valueof) { - let count = 0; - let delta; - let mean = 0; - let sum = 0; - if (valueof === undefined) { - for (let value of values) { - if (value != null && (value = +value) >= value) { - delta = value - mean; - mean += delta / ++count; - sum += delta * (value - mean); - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { - delta = value - mean; - mean += delta / ++count; - sum += delta * (value - mean); - } - } - } - if (count > 1) return sum / (count - 1); -} - -function deviation(values, valueof) { - const v = variance(values, valueof); - return v ? Math.sqrt(v) : v; -} - -function extent$1(values, valueof) { - let min; - let max; - if (valueof === undefined) { - for (const value of values) { - if (value != null) { - if (min === undefined) { - if (value >= value) min = max = value; - } else { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null) { - if (min === undefined) { - if (value >= value) min = max = value; - } else { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - return [min, max]; -} - -// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423 -class Adder { - constructor() { - this._partials = new Float64Array(32); - this._n = 0; - } - add(x) { - const p = this._partials; - let i = 0; - for (let j = 0; j < this._n && j < 32; j++) { - const y = p[j], - hi = x + y, - lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x); - if (lo) p[i++] = lo; - x = hi; - } - p[i] = x; - this._n = i + 1; - return this; - } - valueOf() { - const p = this._partials; - let n = this._n, x, y, lo, hi = 0; - if (n > 0) { - hi = p[--n]; - while (n > 0) { - x = hi; - y = p[--n]; - hi = x + y; - lo = y - (hi - x); - if (lo) break; - } - if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) { - y = lo * 2; - x = hi + y; - if (y == x - hi) hi = x; - } - } - return hi; - } -} - -function fsum(values, valueof) { - const adder = new Adder(); - if (valueof === undefined) { - for (let value of values) { - if (value = +value) { - adder.add(value); - } - } - } else { - let index = -1; - for (let value of values) { - if (value = +valueof(value, ++index, values)) { - adder.add(value); - } - } - } - return +adder; -} - -function fcumsum(values, valueof) { - const adder = new Adder(); - let index = -1; - return Float64Array.from(values, valueof === undefined - ? v => adder.add(+v || 0) - : v => adder.add(+valueof(v, ++index, values) || 0) - ); -} - -class InternMap extends Map { - constructor(entries, key = keyof) { - super(); - Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}}); - if (entries != null) for (const [key, value] of entries) this.set(key, value); - } - get(key) { - return super.get(intern_get(this, key)); - } - has(key) { - return super.has(intern_get(this, key)); - } - set(key, value) { - return super.set(intern_set(this, key), value); - } - delete(key) { - return super.delete(intern_delete(this, key)); - } -} - -class InternSet extends Set { - constructor(values, key = keyof) { - super(); - Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}}); - if (values != null) for (const value of values) this.add(value); - } - has(value) { - return super.has(intern_get(this, value)); - } - add(value) { - return super.add(intern_set(this, value)); - } - delete(value) { - return super.delete(intern_delete(this, value)); - } -} - -function intern_get({_intern, _key}, value) { - const key = _key(value); - return _intern.has(key) ? _intern.get(key) : value; -} - -function intern_set({_intern, _key}, value) { - const key = _key(value); - if (_intern.has(key)) return _intern.get(key); - _intern.set(key, value); - return value; -} - -function intern_delete({_intern, _key}, value) { - const key = _key(value); - if (_intern.has(key)) { - value = _intern.get(key); - _intern.delete(key); - } - return value; -} - -function keyof(value) { - return value !== null && typeof value === "object" ? value.valueOf() : value; -} - -function identity$9(x) { - return x; -} - -function group(values, ...keys) { - return nest(values, identity$9, identity$9, keys); -} - -function groups(values, ...keys) { - return nest(values, Array.from, identity$9, keys); -} - -function flatten$1(groups, keys) { - for (let i = 1, n = keys.length; i < n; ++i) { - groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value])); - } - return groups; -} - -function flatGroup(values, ...keys) { - return flatten$1(groups(values, ...keys), keys); -} - -function flatRollup(values, reduce, ...keys) { - return flatten$1(rollups(values, reduce, ...keys), keys); -} - -function rollup(values, reduce, ...keys) { - return nest(values, identity$9, reduce, keys); -} - -function rollups(values, reduce, ...keys) { - return nest(values, Array.from, reduce, keys); -} - -function index$4(values, ...keys) { - return nest(values, identity$9, unique, keys); -} - -function indexes(values, ...keys) { - return nest(values, Array.from, unique, keys); -} - -function unique(values) { - if (values.length !== 1) throw new Error("duplicate key"); - return values[0]; -} - -function nest(values, map, reduce, keys) { - return (function regroup(values, i) { - if (i >= keys.length) return reduce(values); - const groups = new InternMap(); - const keyof = keys[i++]; - let index = -1; - for (const value of values) { - const key = keyof(value, ++index, values); - const group = groups.get(key); - if (group) group.push(value); - else groups.set(key, [value]); - } - for (const [key, values] of groups) { - groups.set(key, regroup(values, i)); - } - return map(groups); - })(values, 0); -} - -function permute(source, keys) { - return Array.from(keys, key => source[key]); -} - -function sort(values, ...F) { - if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); - values = Array.from(values); - let [f] = F; - if ((f && f.length !== 2) || F.length > 1) { - const index = Uint32Array.from(values, (d, i) => i); - if (F.length > 1) { - F = F.map(f => values.map(f)); - index.sort((i, j) => { - for (const f of F) { - const c = ascendingDefined(f[i], f[j]); - if (c) return c; - } - }); - } else { - f = values.map(f); - index.sort((i, j) => ascendingDefined(f[i], f[j])); - } - return permute(values, index); - } - return values.sort(compareDefined(f)); -} - -function compareDefined(compare = ascending$3) { - if (compare === ascending$3) return ascendingDefined; - if (typeof compare !== "function") throw new TypeError("compare is not a function"); - return (a, b) => { - const x = compare(a, b); - if (x || x === 0) return x; - return (compare(b, b) === 0) - (compare(a, a) === 0); - }; -} - -function ascendingDefined(a, b) { - return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0); -} - -function groupSort(values, reduce, key) { - return (reduce.length !== 2 - ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending$3(av, bv) || ascending$3(ak, bk))) - : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending$3(ak, bk)))) - .map(([key]) => key); -} - -var array$5 = Array.prototype; - -var slice$3 = array$5.slice; - -function constant$b(x) { - return () => x; -} - -const e10 = Math.sqrt(50), - e5 = Math.sqrt(10), - e2 = Math.sqrt(2); - -function tickSpec(start, stop, count) { - const step = (stop - start) / Math.max(0, count), - power = Math.floor(Math.log10(step)), - error = step / Math.pow(10, power), - factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1; - let i1, i2, inc; - if (power < 0) { - inc = Math.pow(10, -power) / factor; - i1 = Math.round(start * inc); - i2 = Math.round(stop * inc); - if (i1 / inc < start) ++i1; - if (i2 / inc > stop) --i2; - inc = -inc; - } else { - inc = Math.pow(10, power) * factor; - i1 = Math.round(start / inc); - i2 = Math.round(stop / inc); - if (i1 * inc < start) ++i1; - if (i2 * inc > stop) --i2; - } - if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2); - return [i1, i2, inc]; -} - -function ticks(start, stop, count) { - stop = +stop, start = +start, count = +count; - if (!(count > 0)) return []; - if (start === stop) return [start]; - const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count); - if (!(i2 >= i1)) return []; - const n = i2 - i1 + 1, ticks = new Array(n); - if (reverse) { - if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc; - else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc; - } else { - if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc; - else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc; - } - return ticks; -} - -function tickIncrement(start, stop, count) { - stop = +stop, start = +start, count = +count; - return tickSpec(start, stop, count)[2]; -} - -function tickStep(start, stop, count) { - stop = +stop, start = +start, count = +count; - const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count); - return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc); -} - -function nice$1(start, stop, count) { - let prestep; - while (true) { - const step = tickIncrement(start, stop, count); - if (step === prestep || step === 0 || !isFinite(step)) { - return [start, stop]; - } else if (step > 0) { - start = Math.floor(start / step) * step; - stop = Math.ceil(stop / step) * step; - } else if (step < 0) { - start = Math.ceil(start * step) / step; - stop = Math.floor(stop * step) / step; - } - prestep = step; - } -} - -function thresholdSturges(values) { - return Math.max(1, Math.ceil(Math.log(count$1(values)) / Math.LN2) + 1); -} - -function bin() { - var value = identity$9, - domain = extent$1, - threshold = thresholdSturges; - - function histogram(data) { - if (!Array.isArray(data)) data = Array.from(data); - - var i, - n = data.length, - x, - step, - values = new Array(n); - - for (i = 0; i < n; ++i) { - values[i] = value(data[i], i, data); - } - - var xz = domain(values), - x0 = xz[0], - x1 = xz[1], - tz = threshold(values, x0, x1); - - // Convert number of thresholds into uniform thresholds, and nice the - // default domain accordingly. - if (!Array.isArray(tz)) { - const max = x1, tn = +tz; - if (domain === extent$1) [x0, x1] = nice$1(x0, x1, tn); - tz = ticks(x0, x1, tn); - - // If the domain is aligned with the first tick (which it will by - // default), then we can use quantization rather than bisection to bin - // values, which is substantially faster. - if (tz[0] <= x0) step = tickIncrement(x0, x1, tn); - - // If the last threshold is coincident with the domain’s upper bound, the - // last bin will be zero-width. If the default domain is used, and this - // last threshold is coincident with the maximum input value, we can - // extend the niced upper bound by one tick to ensure uniform bin widths; - // otherwise, we simply remove the last threshold. Note that we don’t - // coerce values or the domain to numbers, and thus must be careful to - // compare order (>=) rather than strict equality (===)! - if (tz[tz.length - 1] >= x1) { - if (max >= x1 && domain === extent$1) { - const step = tickIncrement(x0, x1, tn); - if (isFinite(step)) { - if (step > 0) { - x1 = (Math.floor(x1 / step) + 1) * step; - } else if (step < 0) { - x1 = (Math.ceil(x1 * -step) + 1) / -step; - } - } - } else { - tz.pop(); - } - } - } - - // Remove any thresholds outside the domain. - // Be careful not to mutate an array owned by the user! - var m = tz.length, a = 0, b = m; - while (tz[a] <= x0) ++a; - while (tz[b - 1] > x1) --b; - if (a || b < m) tz = tz.slice(a, b), m = b - a; - - var bins = new Array(m + 1), - bin; - - // Initialize bins. - for (i = 0; i <= m; ++i) { - bin = bins[i] = []; - bin.x0 = i > 0 ? tz[i - 1] : x0; - bin.x1 = i < m ? tz[i] : x1; - } - - // Assign data to bins by value, ignoring any outside the domain. - if (isFinite(step)) { - if (step > 0) { - for (i = 0; i < n; ++i) { - if ((x = values[i]) != null && x0 <= x && x <= x1) { - bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]); - } - } - } else if (step < 0) { - for (i = 0; i < n; ++i) { - if ((x = values[i]) != null && x0 <= x && x <= x1) { - const j = Math.floor((x0 - x) * step); - bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding - } - } - } - } else { - for (i = 0; i < n; ++i) { - if ((x = values[i]) != null && x0 <= x && x <= x1) { - bins[bisectRight(tz, x, 0, m)].push(data[i]); - } - } - } - - return bins; - } - - histogram.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$b(_), histogram) : value; - }; - - histogram.domain = function(_) { - return arguments.length ? (domain = typeof _ === "function" ? _ : constant$b([_[0], _[1]]), histogram) : domain; - }; - - histogram.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : constant$b(Array.isArray(_) ? slice$3.call(_) : _), histogram) : threshold; - }; - - return histogram; -} - -function max$3(values, valueof) { - let max; - if (valueof === undefined) { - for (const value of values) { - if (value != null - && (max < value || (max === undefined && value >= value))) { - max = value; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null - && (max < value || (max === undefined && value >= value))) { - max = value; - } - } - } - return max; -} - -function maxIndex(values, valueof) { - let max; - let maxIndex = -1; - let index = -1; - if (valueof === undefined) { - for (const value of values) { - ++index; - if (value != null - && (max < value || (max === undefined && value >= value))) { - max = value, maxIndex = index; - } - } - } else { - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null - && (max < value || (max === undefined && value >= value))) { - max = value, maxIndex = index; - } - } - } - return maxIndex; -} - -function min$2(values, valueof) { - let min; - if (valueof === undefined) { - for (const value of values) { - if (value != null - && (min > value || (min === undefined && value >= value))) { - min = value; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null - && (min > value || (min === undefined && value >= value))) { - min = value; - } - } - } - return min; -} - -function minIndex(values, valueof) { - let min; - let minIndex = -1; - let index = -1; - if (valueof === undefined) { - for (const value of values) { - ++index; - if (value != null - && (min > value || (min === undefined && value >= value))) { - min = value, minIndex = index; - } - } - } else { - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null - && (min > value || (min === undefined && value >= value))) { - min = value, minIndex = index; - } - } - } - return minIndex; -} - -// Based on https://github.com/mourner/quickselect -// ISC license, Copyright 2018 Vladimir Agafonkin. -function quickselect(array, k, left = 0, right = Infinity, compare) { - k = Math.floor(k); - left = Math.floor(Math.max(0, left)); - right = Math.floor(Math.min(array.length - 1, right)); - - if (!(left <= k && k <= right)) return array; - - compare = compare === undefined ? ascendingDefined : compareDefined(compare); - - while (right > left) { - if (right - left > 600) { - const n = right - left + 1; - const m = k - left + 1; - const z = Math.log(n); - const s = 0.5 * Math.exp(2 * z / 3); - const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1); - const newLeft = Math.max(left, Math.floor(k - m * s / n + sd)); - const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd)); - quickselect(array, k, newLeft, newRight, compare); - } - - const t = array[k]; - let i = left; - let j = right; - - swap$1(array, left, k); - if (compare(array[right], t) > 0) swap$1(array, left, right); - - while (i < j) { - swap$1(array, i, j), ++i, --j; - while (compare(array[i], t) < 0) ++i; - while (compare(array[j], t) > 0) --j; - } - - if (compare(array[left], t) === 0) swap$1(array, left, j); - else ++j, swap$1(array, j, right); - - if (j <= k) left = j + 1; - if (k <= j) right = j - 1; - } - - return array; -} - -function swap$1(array, i, j) { - const t = array[i]; - array[i] = array[j]; - array[j] = t; -} - -function greatest(values, compare = ascending$3) { - let max; - let defined = false; - if (compare.length === 1) { - let maxValue; - for (const element of values) { - const value = compare(element); - if (defined - ? ascending$3(value, maxValue) > 0 - : ascending$3(value, value) === 0) { - max = element; - maxValue = value; - defined = true; - } - } - } else { - for (const value of values) { - if (defined - ? compare(value, max) > 0 - : compare(value, value) === 0) { - max = value; - defined = true; - } - } - } - return max; -} - -function quantile$1(values, p, valueof) { - values = Float64Array.from(numbers(values, valueof)); - if (!(n = values.length) || isNaN(p = +p)) return; - if (p <= 0 || n < 2) return min$2(values); - if (p >= 1) return max$3(values); - var n, - i = (n - 1) * p, - i0 = Math.floor(i), - value0 = max$3(quickselect(values, i0).subarray(0, i0 + 1)), - value1 = min$2(values.subarray(i0 + 1)); - return value0 + (value1 - value0) * (i - i0); -} - -function quantileSorted(values, p, valueof = number$3) { - if (!(n = values.length) || isNaN(p = +p)) return; - if (p <= 0 || n < 2) return +valueof(values[0], 0, values); - if (p >= 1) return +valueof(values[n - 1], n - 1, values); - var n, - i = (n - 1) * p, - i0 = Math.floor(i), - value0 = +valueof(values[i0], i0, values), - value1 = +valueof(values[i0 + 1], i0 + 1, values); - return value0 + (value1 - value0) * (i - i0); -} - -function quantileIndex(values, p, valueof = number$3) { - if (isNaN(p = +p)) return; - numbers = Float64Array.from(values, (_, i) => number$3(valueof(values[i], i, values))); - if (p <= 0) return minIndex(numbers); - if (p >= 1) return maxIndex(numbers); - var numbers, - index = Uint32Array.from(values, (_, i) => i), - j = numbers.length - 1, - i = Math.floor(j * p); - quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j])); - i = greatest(index.subarray(0, i + 1), (i) => numbers[i]); - return i >= 0 ? i : -1; -} - -function thresholdFreedmanDiaconis(values, min, max) { - const c = count$1(values), d = quantile$1(values, 0.75) - quantile$1(values, 0.25); - return c && d ? Math.ceil((max - min) / (2 * d * Math.pow(c, -1 / 3))) : 1; -} - -function thresholdScott(values, min, max) { - const c = count$1(values), d = deviation(values); - return c && d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1; -} - -function mean(values, valueof) { - let count = 0; - let sum = 0; - if (valueof === undefined) { - for (let value of values) { - if (value != null && (value = +value) >= value) { - ++count, sum += value; - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { - ++count, sum += value; - } - } - } - if (count) return sum / count; -} - -function median(values, valueof) { - return quantile$1(values, 0.5, valueof); -} - -function medianIndex(values, valueof) { - return quantileIndex(values, 0.5, valueof); -} - -function* flatten(arrays) { - for (const array of arrays) { - yield* array; - } -} - -function merge(arrays) { - return Array.from(flatten(arrays)); -} - -function mode(values, valueof) { - const counts = new InternMap(); - if (valueof === undefined) { - for (let value of values) { - if (value != null && value >= value) { - counts.set(value, (counts.get(value) || 0) + 1); - } - } - } else { - let index = -1; - for (let value of values) { - if ((value = valueof(value, ++index, values)) != null && value >= value) { - counts.set(value, (counts.get(value) || 0) + 1); - } - } - } - let modeValue; - let modeCount = 0; - for (const [value, count] of counts) { - if (count > modeCount) { - modeCount = count; - modeValue = value; - } - } - return modeValue; -} - -function pairs(values, pairof = pair) { - const pairs = []; - let previous; - let first = false; - for (const value of values) { - if (first) pairs.push(pairof(previous, value)); - previous = value; - first = true; - } - return pairs; -} - -function pair(a, b) { - return [a, b]; -} - -function range$2(start, stop, step) { - start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; - - var i = -1, - n = Math.max(0, Math.ceil((stop - start) / step)) | 0, - range = new Array(n); - - while (++i < n) { - range[i] = start + i * step; - } - - return range; -} - -function rank(values, valueof = ascending$3) { - if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); - let V = Array.from(values); - const R = new Float64Array(V.length); - if (valueof.length !== 2) V = V.map(valueof), valueof = ascending$3; - const compareIndex = (i, j) => valueof(V[i], V[j]); - let k, r; - values = Uint32Array.from(V, (_, i) => i); - // Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123 - values.sort(valueof === ascending$3 ? (i, j) => ascendingDefined(V[i], V[j]) : compareDefined(compareIndex)); - values.forEach((j, i) => { - const c = compareIndex(j, k === undefined ? j : k); - if (c >= 0) { - if (k === undefined || c > 0) k = j, r = i; - R[j] = r; - } else { - R[j] = NaN; - } - }); - return R; -} - -function least(values, compare = ascending$3) { - let min; - let defined = false; - if (compare.length === 1) { - let minValue; - for (const element of values) { - const value = compare(element); - if (defined - ? ascending$3(value, minValue) < 0 - : ascending$3(value, value) === 0) { - min = element; - minValue = value; - defined = true; - } - } - } else { - for (const value of values) { - if (defined - ? compare(value, min) < 0 - : compare(value, value) === 0) { - min = value; - defined = true; - } - } - } - return min; -} - -function leastIndex(values, compare = ascending$3) { - if (compare.length === 1) return minIndex(values, compare); - let minValue; - let min = -1; - let index = -1; - for (const value of values) { - ++index; - if (min < 0 - ? compare(value, value) === 0 - : compare(value, minValue) < 0) { - minValue = value; - min = index; - } - } - return min; -} - -function greatestIndex(values, compare = ascending$3) { - if (compare.length === 1) return maxIndex(values, compare); - let maxValue; - let max = -1; - let index = -1; - for (const value of values) { - ++index; - if (max < 0 - ? compare(value, value) === 0 - : compare(value, maxValue) > 0) { - maxValue = value; - max = index; - } - } - return max; -} - -function scan(values, compare) { - const index = leastIndex(values, compare); - return index < 0 ? undefined : index; -} - -var shuffle$1 = shuffler(Math.random); - -function shuffler(random) { - return function shuffle(array, i0 = 0, i1 = array.length) { - let m = i1 - (i0 = +i0); - while (m) { - const i = random() * m-- | 0, t = array[m + i0]; - array[m + i0] = array[i + i0]; - array[i + i0] = t; - } - return array; - }; -} - -function sum$2(values, valueof) { - let sum = 0; - if (valueof === undefined) { - for (let value of values) { - if (value = +value) { - sum += value; - } - } - } else { - let index = -1; - for (let value of values) { - if (value = +valueof(value, ++index, values)) { - sum += value; - } - } - } - return sum; -} - -function transpose(matrix) { - if (!(n = matrix.length)) return []; - for (var i = -1, m = min$2(matrix, length$2), transpose = new Array(m); ++i < m;) { - for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) { - row[j] = matrix[j][i]; - } - } - return transpose; -} - -function length$2(d) { - return d.length; -} - -function zip() { - return transpose(arguments); -} - -function every(values, test) { - if (typeof test !== "function") throw new TypeError("test is not a function"); - let index = -1; - for (const value of values) { - if (!test(value, ++index, values)) { - return false; - } - } - return true; -} - -function some(values, test) { - if (typeof test !== "function") throw new TypeError("test is not a function"); - let index = -1; - for (const value of values) { - if (test(value, ++index, values)) { - return true; - } - } - return false; -} - -function filter$1(values, test) { - if (typeof test !== "function") throw new TypeError("test is not a function"); - const array = []; - let index = -1; - for (const value of values) { - if (test(value, ++index, values)) { - array.push(value); - } - } - return array; -} - -function map$1(values, mapper) { - if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); - if (typeof mapper !== "function") throw new TypeError("mapper is not a function"); - return Array.from(values, (value, index) => mapper(value, index, values)); -} - -function reduce(values, reducer, value) { - if (typeof reducer !== "function") throw new TypeError("reducer is not a function"); - const iterator = values[Symbol.iterator](); - let done, next, index = -1; - if (arguments.length < 3) { - ({done, value} = iterator.next()); - if (done) return; - ++index; - } - while (({done, value: next} = iterator.next()), !done) { - value = reducer(value, next, ++index, values); - } - return value; -} - -function reverse$1(values) { - if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); - return Array.from(values).reverse(); -} - -function difference(values, ...others) { - values = new InternSet(values); - for (const other of others) { - for (const value of other) { - values.delete(value); - } - } - return values; -} - -function disjoint(values, other) { - const iterator = other[Symbol.iterator](), set = new InternSet(); - for (const v of values) { - if (set.has(v)) return false; - let value, done; - while (({value, done} = iterator.next())) { - if (done) break; - if (Object.is(v, value)) return false; - set.add(value); - } - } - return true; -} - -function intersection(values, ...others) { - values = new InternSet(values); - others = others.map(set$2); - out: for (const value of values) { - for (const other of others) { - if (!other.has(value)) { - values.delete(value); - continue out; - } - } - } - return values; -} - -function set$2(values) { - return values instanceof InternSet ? values : new InternSet(values); -} - -function superset(values, other) { - const iterator = values[Symbol.iterator](), set = new Set(); - for (const o of other) { - const io = intern(o); - if (set.has(io)) continue; - let value, done; - while (({value, done} = iterator.next())) { - if (done) return false; - const ivalue = intern(value); - set.add(ivalue); - if (Object.is(io, ivalue)) break; - } - } - return true; -} - -function intern(value) { - return value !== null && typeof value === "object" ? value.valueOf() : value; -} - -function subset(values, other) { - return superset(other, values); -} - -function union(...others) { - const set = new InternSet(); - for (const other of others) { - for (const o of other) { - set.add(o); - } - } - return set; -} - -function identity$8(x) { - return x; -} - -var top = 1, - right = 2, - bottom = 3, - left = 4, - epsilon$6 = 1e-6; - -function translateX(x) { - return "translate(" + x + ",0)"; -} - -function translateY(y) { - return "translate(0," + y + ")"; -} - -function number$2(scale) { - return d => +scale(d); -} - -function center$1(scale, offset) { - offset = Math.max(0, scale.bandwidth() - offset * 2) / 2; - if (scale.round()) offset = Math.round(offset); - return d => +scale(d) + offset; -} - -function entering() { - return !this.__axis; -} - -function axis(orient, scale) { - var tickArguments = [], - tickValues = null, - tickFormat = null, - tickSizeInner = 6, - tickSizeOuter = 6, - tickPadding = 3, - offset = typeof window !== "undefined" && window.devicePixelRatio > 1 ? 0 : 0.5, - k = orient === top || orient === left ? -1 : 1, - x = orient === left || orient === right ? "x" : "y", - transform = orient === top || orient === bottom ? translateX : translateY; - - function axis(context) { - var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues, - format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$8) : tickFormat, - spacing = Math.max(tickSizeInner, 0) + tickPadding, - range = scale.range(), - range0 = +range[0] + offset, - range1 = +range[range.length - 1] + offset, - position = (scale.bandwidth ? center$1 : number$2)(scale.copy(), offset), - selection = context.selection ? context.selection() : context, - path = selection.selectAll(".domain").data([null]), - tick = selection.selectAll(".tick").data(values, scale).order(), - tickExit = tick.exit(), - tickEnter = tick.enter().append("g").attr("class", "tick"), - line = tick.select("line"), - text = tick.select("text"); - - path = path.merge(path.enter().insert("path", ".tick") - .attr("class", "domain") - .attr("stroke", "currentColor")); - - tick = tick.merge(tickEnter); - - line = line.merge(tickEnter.append("line") - .attr("stroke", "currentColor") - .attr(x + "2", k * tickSizeInner)); - - text = text.merge(tickEnter.append("text") - .attr("fill", "currentColor") - .attr(x, k * spacing) - .attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em")); - - if (context !== selection) { - path = path.transition(context); - tick = tick.transition(context); - line = line.transition(context); - text = text.transition(context); - - tickExit = tickExit.transition(context) - .attr("opacity", epsilon$6) - .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute("transform"); }); - - tickEnter - .attr("opacity", epsilon$6) - .attr("transform", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); }); - } - - tickExit.remove(); - - path - .attr("d", orient === left || orient === right - ? (tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H" + offset + "V" + range1 + "H" + k * tickSizeOuter : "M" + offset + "," + range0 + "V" + range1) - : (tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V" + offset + "H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + "," + offset + "H" + range1)); - - tick - .attr("opacity", 1) - .attr("transform", function(d) { return transform(position(d) + offset); }); - - line - .attr(x + "2", k * tickSizeInner); - - text - .attr(x, k * spacing) - .text(format); - - selection.filter(entering) - .attr("fill", "none") - .attr("font-size", 10) - .attr("font-family", "sans-serif") - .attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle"); - - selection - .each(function() { this.__axis = position; }); - } - - axis.scale = function(_) { - return arguments.length ? (scale = _, axis) : scale; - }; - - axis.ticks = function() { - return tickArguments = Array.from(arguments), axis; - }; - - axis.tickArguments = function(_) { - return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice(); - }; - - axis.tickValues = function(_) { - return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice(); - }; - - axis.tickFormat = function(_) { - return arguments.length ? (tickFormat = _, axis) : tickFormat; - }; - - axis.tickSize = function(_) { - return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner; - }; - - axis.tickSizeInner = function(_) { - return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner; - }; - - axis.tickSizeOuter = function(_) { - return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter; - }; - - axis.tickPadding = function(_) { - return arguments.length ? (tickPadding = +_, axis) : tickPadding; - }; - - axis.offset = function(_) { - return arguments.length ? (offset = +_, axis) : offset; - }; - - return axis; -} - -function axisTop(scale) { - return axis(top, scale); -} - -function axisRight(scale) { - return axis(right, scale); -} - -function axisBottom(scale) { - return axis(bottom, scale); -} - -function axisLeft(scale) { - return axis(left, scale); -} - -var noop$3 = {value: () => {}}; - -function dispatch() { - for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { - if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t); - _[t] = []; - } - return new Dispatch(_); -} - -function Dispatch(_) { - this._ = _; -} - -function parseTypenames$1(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); - return {type: t, name: name}; - }); -} - -Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function(typename, callback) { - var _ = this._, - T = parseTypenames$1(typename + "", _), - t, - i = -1, - n = T.length; - - // If no callback was specified, return the callback of the given type and name. - if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get$1(_[t], typename.name))) return t; - return; - } - - // If a type was specified, set the callback for the given type and name. - // Otherwise, if a null callback was specified, remove callbacks of the given name. - if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); - while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set$1(_[t], typename.name, callback); - else if (callback == null) for (t in _) _[t] = set$1(_[t], typename.name, null); - } - - return this; - }, - copy: function() { - var copy = {}, _ = this._; - for (var t in _) copy[t] = _[t].slice(); - return new Dispatch(copy); - }, - call: function(type, that) { - if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - }, - apply: function(type, that, args) { - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - } -}; - -function get$1(type, name) { - for (var i = 0, n = type.length, c; i < n; ++i) { - if ((c = type[i]).name === name) { - return c.value; - } - } -} - -function set$1(type, name, callback) { - for (var i = 0, n = type.length; i < n; ++i) { - if (type[i].name === name) { - type[i] = noop$3, type = type.slice(0, i).concat(type.slice(i + 1)); - break; - } - } - if (callback != null) type.push({name: name, value: callback}); - return type; -} - -var xhtml = "http://www.w3.org/1999/xhtml"; - -var namespaces = { - svg: "http://www.w3.org/2000/svg", - xhtml: xhtml, - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace", - xmlns: "http://www.w3.org/2000/xmlns/" -}; - -function namespace(name) { - var prefix = name += "", i = prefix.indexOf(":"); - if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); - return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins -} - -function creatorInherit(name) { - return function() { - var document = this.ownerDocument, - uri = this.namespaceURI; - return uri === xhtml && document.documentElement.namespaceURI === xhtml - ? document.createElement(name) - : document.createElementNS(uri, name); - }; -} - -function creatorFixed(fullname) { - return function() { - return this.ownerDocument.createElementNS(fullname.space, fullname.local); - }; -} - -function creator(name) { - var fullname = namespace(name); - return (fullname.local - ? creatorFixed - : creatorInherit)(fullname); -} - -function none$2() {} - -function selector(selector) { - return selector == null ? none$2 : function() { - return this.querySelector(selector); - }; -} - -function selection_select(select) { - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - } - } - } - - return new Selection$1(subgroups, this._parents); -} - -// Given something array like (or null), returns something that is strictly an -// array. This is used to ensure that array-like objects passed to d3.selectAll -// or selection.selectAll are converted into proper arrays when creating a -// selection; we don’t ever want to create a selection backed by a live -// HTMLCollection or NodeList. However, note that selection.selectAll will use a -// static NodeList as a group, since it safely derived from querySelectorAll. -function array$4(x) { - return x == null ? [] : Array.isArray(x) ? x : Array.from(x); -} - -function empty$1() { - return []; -} - -function selectorAll(selector) { - return selector == null ? empty$1 : function() { - return this.querySelectorAll(selector); - }; -} - -function arrayAll(select) { - return function() { - return array$4(select.apply(this, arguments)); - }; -} - -function selection_selectAll(select) { - if (typeof select === "function") select = arrayAll(select); - else select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - subgroups.push(select.call(node, node.__data__, i, group)); - parents.push(node); - } - } - } - - return new Selection$1(subgroups, parents); -} - -function matcher(selector) { - return function() { - return this.matches(selector); - }; -} - -function childMatcher(selector) { - return function(node) { - return node.matches(selector); - }; -} - -var find$1 = Array.prototype.find; - -function childFind(match) { - return function() { - return find$1.call(this.children, match); - }; -} - -function childFirst() { - return this.firstElementChild; -} - -function selection_selectChild(match) { - return this.select(match == null ? childFirst - : childFind(typeof match === "function" ? match : childMatcher(match))); -} - -var filter = Array.prototype.filter; - -function children() { - return Array.from(this.children); -} - -function childrenFilter(match) { - return function() { - return filter.call(this.children, match); - }; -} - -function selection_selectChildren(match) { - return this.selectAll(match == null ? children - : childrenFilter(typeof match === "function" ? match : childMatcher(match))); -} - -function selection_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Selection$1(subgroups, this._parents); -} - -function sparse(update) { - return new Array(update.length); -} - -function selection_enter() { - return new Selection$1(this._enter || this._groups.map(sparse), this._parents); -} - -function EnterNode(parent, datum) { - this.ownerDocument = parent.ownerDocument; - this.namespaceURI = parent.namespaceURI; - this._next = null; - this._parent = parent; - this.__data__ = datum; -} - -EnterNode.prototype = { - constructor: EnterNode, - appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, - insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, - querySelector: function(selector) { return this._parent.querySelector(selector); }, - querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } -}; - -function constant$a(x) { - return function() { - return x; - }; -} - -function bindIndex(parent, group, enter, update, exit, data) { - var i = 0, - node, - groupLength = group.length, - dataLength = data.length; - - // Put any non-null nodes that fit into update. - // Put any null nodes into enter. - // Put any remaining data into enter. - for (; i < dataLength; ++i) { - if (node = group[i]) { - node.__data__ = data[i]; - update[i] = node; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Put any non-null nodes that don’t fit into exit. - for (; i < groupLength; ++i) { - if (node = group[i]) { - exit[i] = node; - } - } -} - -function bindKey(parent, group, enter, update, exit, data, key) { - var i, - node, - nodeByKeyValue = new Map, - groupLength = group.length, - dataLength = data.length, - keyValues = new Array(groupLength), - keyValue; - - // Compute the key for each node. - // If multiple nodes have the same key, the duplicates are added to exit. - for (i = 0; i < groupLength; ++i) { - if (node = group[i]) { - keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + ""; - if (nodeByKeyValue.has(keyValue)) { - exit[i] = node; - } else { - nodeByKeyValue.set(keyValue, node); - } - } - } - - // Compute the key for each datum. - // If there a node associated with this key, join and add it to update. - // If there is not (or the key is a duplicate), add it to enter. - for (i = 0; i < dataLength; ++i) { - keyValue = key.call(parent, data[i], i, data) + ""; - if (node = nodeByKeyValue.get(keyValue)) { - update[i] = node; - node.__data__ = data[i]; - nodeByKeyValue.delete(keyValue); - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Add any remaining nodes that were not bound to data to exit. - for (i = 0; i < groupLength; ++i) { - if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) { - exit[i] = node; - } - } -} - -function datum(node) { - return node.__data__; -} - -function selection_data(value, key) { - if (!arguments.length) return Array.from(this, datum); - - var bind = key ? bindKey : bindIndex, - parents = this._parents, - groups = this._groups; - - if (typeof value !== "function") value = constant$a(value); - - for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { - var parent = parents[j], - group = groups[j], - groupLength = group.length, - data = arraylike(value.call(parent, parent && parent.__data__, j, parents)), - dataLength = data.length, - enterGroup = enter[j] = new Array(dataLength), - updateGroup = update[j] = new Array(dataLength), - exitGroup = exit[j] = new Array(groupLength); - - bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); - - // Now connect the enter nodes to their following update node, such that - // appendChild can insert the materialized enter node before this node, - // rather than at the end of the parent node. - for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { - if (previous = enterGroup[i0]) { - if (i0 >= i1) i1 = i0 + 1; - while (!(next = updateGroup[i1]) && ++i1 < dataLength); - previous._next = next || null; - } - } - } - - update = new Selection$1(update, parents); - update._enter = enter; - update._exit = exit; - return update; -} - -// Given some data, this returns an array-like view of it: an object that -// exposes a length property and allows numeric indexing. Note that unlike -// selectAll, this isn’t worried about “live” collections because the resulting -// array will only be used briefly while data is being bound. (It is possible to -// cause the data to change while iterating by using a key function, but please -// don’t; we’d rather avoid a gratuitous copy.) -function arraylike(data) { - return typeof data === "object" && "length" in data - ? data // Array, TypedArray, NodeList, array-like - : Array.from(data); // Map, Set, iterable, string, or anything else -} - -function selection_exit() { - return new Selection$1(this._exit || this._groups.map(sparse), this._parents); -} - -function selection_join(onenter, onupdate, onexit) { - var enter = this.enter(), update = this, exit = this.exit(); - if (typeof onenter === "function") { - enter = onenter(enter); - if (enter) enter = enter.selection(); - } else { - enter = enter.append(onenter + ""); - } - if (onupdate != null) { - update = onupdate(update); - if (update) update = update.selection(); - } - if (onexit == null) exit.remove(); else onexit(exit); - return enter && update ? enter.merge(update).order() : update; -} - -function selection_merge(context) { - var selection = context.selection ? context.selection() : context; - - for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Selection$1(merges, this._parents); -} - -function selection_order() { - - for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { - for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { - if (node = group[i]) { - if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); - next = node; - } - } - } - - return this; -} - -function selection_sort(compare) { - if (!compare) compare = ascending$2; - - function compareNode(a, b) { - return a && b ? compare(a.__data__, b.__data__) : !a - !b; - } - - for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group[i]) { - sortgroup[i] = node; - } - } - sortgroup.sort(compareNode); - } - - return new Selection$1(sortgroups, this._parents).order(); -} - -function ascending$2(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function selection_call() { - var callback = arguments[0]; - arguments[0] = this; - callback.apply(null, arguments); - return this; -} - -function selection_nodes() { - return Array.from(this); -} - -function selection_node() { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { - var node = group[i]; - if (node) return node; - } - } - - return null; -} - -function selection_size() { - let size = 0; - for (const node of this) ++size; // eslint-disable-line no-unused-vars - return size; -} - -function selection_empty() { - return !this.node(); -} - -function selection_each(callback) { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { - if (node = group[i]) callback.call(node, node.__data__, i, group); - } - } - - return this; -} - -function attrRemove$1(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS$1(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant$1(name, value) { - return function() { - this.setAttribute(name, value); - }; -} - -function attrConstantNS$1(fullname, value) { - return function() { - this.setAttributeNS(fullname.space, fullname.local, value); - }; -} - -function attrFunction$1(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttribute(name); - else this.setAttribute(name, v); - }; -} - -function attrFunctionNS$1(fullname, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttributeNS(fullname.space, fullname.local); - else this.setAttributeNS(fullname.space, fullname.local, v); - }; -} - -function selection_attr(name, value) { - var fullname = namespace(name); - - if (arguments.length < 2) { - var node = this.node(); - return fullname.local - ? node.getAttributeNS(fullname.space, fullname.local) - : node.getAttribute(fullname); - } - - return this.each((value == null - ? (fullname.local ? attrRemoveNS$1 : attrRemove$1) : (typeof value === "function" - ? (fullname.local ? attrFunctionNS$1 : attrFunction$1) - : (fullname.local ? attrConstantNS$1 : attrConstant$1)))(fullname, value)); -} - -function defaultView(node) { - return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node - || (node.document && node) // node is a Window - || node.defaultView; // node is a Document -} - -function styleRemove$1(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant$1(name, value, priority) { - return function() { - this.style.setProperty(name, value, priority); - }; -} - -function styleFunction$1(name, value, priority) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.style.removeProperty(name); - else this.style.setProperty(name, v, priority); - }; -} - -function selection_style(name, value, priority) { - return arguments.length > 1 - ? this.each((value == null - ? styleRemove$1 : typeof value === "function" - ? styleFunction$1 - : styleConstant$1)(name, value, priority == null ? "" : priority)) - : styleValue(this.node(), name); -} - -function styleValue(node, name) { - return node.style.getPropertyValue(name) - || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); -} - -function propertyRemove(name) { - return function() { - delete this[name]; - }; -} - -function propertyConstant(name, value) { - return function() { - this[name] = value; - }; -} - -function propertyFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) delete this[name]; - else this[name] = v; - }; -} - -function selection_property(name, value) { - return arguments.length > 1 - ? this.each((value == null - ? propertyRemove : typeof value === "function" - ? propertyFunction - : propertyConstant)(name, value)) - : this.node()[name]; -} - -function classArray(string) { - return string.trim().split(/^|\s+/); -} - -function classList(node) { - return node.classList || new ClassList(node); -} - -function ClassList(node) { - this._node = node; - this._names = classArray(node.getAttribute("class") || ""); -} - -ClassList.prototype = { - add: function(name) { - var i = this._names.indexOf(name); - if (i < 0) { - this._names.push(name); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - remove: function(name) { - var i = this._names.indexOf(name); - if (i >= 0) { - this._names.splice(i, 1); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - contains: function(name) { - return this._names.indexOf(name) >= 0; - } -}; - -function classedAdd(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.add(names[i]); -} - -function classedRemove(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.remove(names[i]); -} - -function classedTrue(names) { - return function() { - classedAdd(this, names); - }; -} - -function classedFalse(names) { - return function() { - classedRemove(this, names); - }; -} - -function classedFunction(names, value) { - return function() { - (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); - }; -} - -function selection_classed(name, value) { - var names = classArray(name + ""); - - if (arguments.length < 2) { - var list = classList(this.node()), i = -1, n = names.length; - while (++i < n) if (!list.contains(names[i])) return false; - return true; - } - - return this.each((typeof value === "function" - ? classedFunction : value - ? classedTrue - : classedFalse)(names, value)); -} - -function textRemove() { - this.textContent = ""; -} - -function textConstant$1(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction$1(value) { - return function() { - var v = value.apply(this, arguments); - this.textContent = v == null ? "" : v; - }; -} - -function selection_text(value) { - return arguments.length - ? this.each(value == null - ? textRemove : (typeof value === "function" - ? textFunction$1 - : textConstant$1)(value)) - : this.node().textContent; -} - -function htmlRemove() { - this.innerHTML = ""; -} - -function htmlConstant(value) { - return function() { - this.innerHTML = value; - }; -} - -function htmlFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.innerHTML = v == null ? "" : v; - }; -} - -function selection_html(value) { - return arguments.length - ? this.each(value == null - ? htmlRemove : (typeof value === "function" - ? htmlFunction - : htmlConstant)(value)) - : this.node().innerHTML; -} - -function raise() { - if (this.nextSibling) this.parentNode.appendChild(this); -} - -function selection_raise() { - return this.each(raise); -} - -function lower() { - if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); -} - -function selection_lower() { - return this.each(lower); -} - -function selection_append(name) { - var create = typeof name === "function" ? name : creator(name); - return this.select(function() { - return this.appendChild(create.apply(this, arguments)); - }); -} - -function constantNull() { - return null; -} - -function selection_insert(name, before) { - var create = typeof name === "function" ? name : creator(name), - select = before == null ? constantNull : typeof before === "function" ? before : selector(before); - return this.select(function() { - return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); - }); -} - -function remove() { - var parent = this.parentNode; - if (parent) parent.removeChild(this); -} - -function selection_remove() { - return this.each(remove); -} - -function selection_cloneShallow() { - var clone = this.cloneNode(false), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_cloneDeep() { - var clone = this.cloneNode(true), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_clone(deep) { - return this.select(deep ? selection_cloneDeep : selection_cloneShallow); -} - -function selection_datum(value) { - return arguments.length - ? this.property("__data__", value) - : this.node().__data__; -} - -function contextListener(listener) { - return function(event) { - listener.call(this, event, this.__data__); - }; -} - -function parseTypenames(typenames) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - return {type: t, name: name}; - }); -} - -function onRemove(typename) { - return function() { - var on = this.__on; - if (!on) return; - for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { - if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.options); - } else { - on[++i] = o; - } - } - if (++i) on.length = i; - else delete this.__on; - }; -} - -function onAdd(typename, value, options) { - return function() { - var on = this.__on, o, listener = contextListener(value); - if (on) for (var j = 0, m = on.length; j < m; ++j) { - if ((o = on[j]).type === typename.type && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.options); - this.addEventListener(o.type, o.listener = listener, o.options = options); - o.value = value; - return; - } - } - this.addEventListener(typename.type, listener, options); - o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options}; - if (!on) this.__on = [o]; - else on.push(o); - }; -} - -function selection_on(typename, value, options) { - var typenames = parseTypenames(typename + ""), i, n = typenames.length, t; - - if (arguments.length < 2) { - var on = this.node().__on; - if (on) for (var j = 0, m = on.length, o; j < m; ++j) { - for (i = 0, o = on[j]; i < n; ++i) { - if ((t = typenames[i]).type === o.type && t.name === o.name) { - return o.value; - } - } - } - return; - } - - on = value ? onAdd : onRemove; - for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options)); - return this; -} - -function dispatchEvent(node, type, params) { - var window = defaultView(node), - event = window.CustomEvent; - - if (typeof event === "function") { - event = new event(type, params); - } else { - event = window.document.createEvent("Event"); - if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; - else event.initEvent(type, false, false); - } - - node.dispatchEvent(event); -} - -function dispatchConstant(type, params) { - return function() { - return dispatchEvent(this, type, params); - }; -} - -function dispatchFunction(type, params) { - return function() { - return dispatchEvent(this, type, params.apply(this, arguments)); - }; -} - -function selection_dispatch(type, params) { - return this.each((typeof params === "function" - ? dispatchFunction - : dispatchConstant)(type, params)); -} - -function* selection_iterator() { - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { - if (node = group[i]) yield node; - } - } -} - -var root$1 = [null]; - -function Selection$1(groups, parents) { - this._groups = groups; - this._parents = parents; -} - -function selection() { - return new Selection$1([[document.documentElement]], root$1); -} - -function selection_selection() { - return this; -} - -Selection$1.prototype = selection.prototype = { - constructor: Selection$1, - select: selection_select, - selectAll: selection_selectAll, - selectChild: selection_selectChild, - selectChildren: selection_selectChildren, - filter: selection_filter, - data: selection_data, - enter: selection_enter, - exit: selection_exit, - join: selection_join, - merge: selection_merge, - selection: selection_selection, - order: selection_order, - sort: selection_sort, - call: selection_call, - nodes: selection_nodes, - node: selection_node, - size: selection_size, - empty: selection_empty, - each: selection_each, - attr: selection_attr, - style: selection_style, - property: selection_property, - classed: selection_classed, - text: selection_text, - html: selection_html, - raise: selection_raise, - lower: selection_lower, - append: selection_append, - insert: selection_insert, - remove: selection_remove, - clone: selection_clone, - datum: selection_datum, - on: selection_on, - dispatch: selection_dispatch, - [Symbol.iterator]: selection_iterator -}; - -function select(selector) { - return typeof selector === "string" - ? new Selection$1([[document.querySelector(selector)]], [document.documentElement]) - : new Selection$1([[selector]], root$1); -} - -function create$1(name) { - return select(creator(name).call(document.documentElement)); -} - -var nextId = 0; - -function local$1() { - return new Local; -} - -function Local() { - this._ = "@" + (++nextId).toString(36); -} - -Local.prototype = local$1.prototype = { - constructor: Local, - get: function(node) { - var id = this._; - while (!(id in node)) if (!(node = node.parentNode)) return; - return node[id]; - }, - set: function(node, value) { - return node[this._] = value; - }, - remove: function(node) { - return this._ in node && delete node[this._]; - }, - toString: function() { - return this._; - } -}; - -function sourceEvent(event) { - let sourceEvent; - while (sourceEvent = event.sourceEvent) event = sourceEvent; - return event; -} - -function pointer(event, node) { - event = sourceEvent(event); - if (node === undefined) node = event.currentTarget; - if (node) { - var svg = node.ownerSVGElement || node; - if (svg.createSVGPoint) { - var point = svg.createSVGPoint(); - point.x = event.clientX, point.y = event.clientY; - point = point.matrixTransform(node.getScreenCTM().inverse()); - return [point.x, point.y]; - } - if (node.getBoundingClientRect) { - var rect = node.getBoundingClientRect(); - return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; - } - } - return [event.pageX, event.pageY]; -} - -function pointers(events, node) { - if (events.target) { // i.e., instanceof Event, not TouchList or iterable - events = sourceEvent(events); - if (node === undefined) node = events.currentTarget; - events = events.touches || [events]; - } - return Array.from(events, event => pointer(event, node)); -} - -function selectAll(selector) { - return typeof selector === "string" - ? new Selection$1([document.querySelectorAll(selector)], [document.documentElement]) - : new Selection$1([array$4(selector)], root$1); -} - -// These are typically used in conjunction with noevent to ensure that we can -// preventDefault on the event. -const nonpassive = {passive: false}; -const nonpassivecapture = {capture: true, passive: false}; - -function nopropagation$2(event) { - event.stopImmediatePropagation(); -} - -function noevent$2(event) { - event.preventDefault(); - event.stopImmediatePropagation(); -} - -function dragDisable(view) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", noevent$2, nonpassivecapture); - if ("onselectstart" in root) { - selection.on("selectstart.drag", noevent$2, nonpassivecapture); - } else { - root.__noselect = root.style.MozUserSelect; - root.style.MozUserSelect = "none"; - } -} - -function yesdrag(view, noclick) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", null); - if (noclick) { - selection.on("click.drag", noevent$2, nonpassivecapture); - setTimeout(function() { selection.on("click.drag", null); }, 0); - } - if ("onselectstart" in root) { - selection.on("selectstart.drag", null); - } else { - root.style.MozUserSelect = root.__noselect; - delete root.__noselect; - } -} - -var constant$9 = x => () => x; - -function DragEvent(type, { - sourceEvent, - subject, - target, - identifier, - active, - x, y, dx, dy, - dispatch -}) { - Object.defineProperties(this, { - type: {value: type, enumerable: true, configurable: true}, - sourceEvent: {value: sourceEvent, enumerable: true, configurable: true}, - subject: {value: subject, enumerable: true, configurable: true}, - target: {value: target, enumerable: true, configurable: true}, - identifier: {value: identifier, enumerable: true, configurable: true}, - active: {value: active, enumerable: true, configurable: true}, - x: {value: x, enumerable: true, configurable: true}, - y: {value: y, enumerable: true, configurable: true}, - dx: {value: dx, enumerable: true, configurable: true}, - dy: {value: dy, enumerable: true, configurable: true}, - _: {value: dispatch} - }); -} - -DragEvent.prototype.on = function() { - var value = this._.on.apply(this._, arguments); - return value === this._ ? this : value; -}; - -// Ignore right-click, since that should open the context menu. -function defaultFilter$2(event) { - return !event.ctrlKey && !event.button; -} - -function defaultContainer() { - return this.parentNode; -} - -function defaultSubject(event, d) { - return d == null ? {x: event.x, y: event.y} : d; -} - -function defaultTouchable$2() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -function drag() { - var filter = defaultFilter$2, - container = defaultContainer, - subject = defaultSubject, - touchable = defaultTouchable$2, - gestures = {}, - listeners = dispatch("start", "drag", "end"), - active = 0, - mousedownx, - mousedowny, - mousemoving, - touchending, - clickDistance2 = 0; - - function drag(selection) { - selection - .on("mousedown.drag", mousedowned) - .filter(touchable) - .on("touchstart.drag", touchstarted) - .on("touchmove.drag", touchmoved, nonpassive) - .on("touchend.drag touchcancel.drag", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - function mousedowned(event, d) { - if (touchending || !filter.call(this, event, d)) return; - var gesture = beforestart(this, container.call(this, event, d), event, d, "mouse"); - if (!gesture) return; - select(event.view) - .on("mousemove.drag", mousemoved, nonpassivecapture) - .on("mouseup.drag", mouseupped, nonpassivecapture); - dragDisable(event.view); - nopropagation$2(event); - mousemoving = false; - mousedownx = event.clientX; - mousedowny = event.clientY; - gesture("start", event); - } - - function mousemoved(event) { - noevent$2(event); - if (!mousemoving) { - var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny; - mousemoving = dx * dx + dy * dy > clickDistance2; - } - gestures.mouse("drag", event); - } - - function mouseupped(event) { - select(event.view).on("mousemove.drag mouseup.drag", null); - yesdrag(event.view, mousemoving); - noevent$2(event); - gestures.mouse("end", event); - } - - function touchstarted(event, d) { - if (!filter.call(this, event, d)) return; - var touches = event.changedTouches, - c = container.call(this, event, d), - n = touches.length, i, gesture; - - for (i = 0; i < n; ++i) { - if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) { - nopropagation$2(event); - gesture("start", event, touches[i]); - } - } - } - - function touchmoved(event) { - var touches = event.changedTouches, - n = touches.length, i, gesture; - - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - noevent$2(event); - gesture("drag", event, touches[i]); - } - } - } - - function touchended(event) { - var touches = event.changedTouches, - n = touches.length, i, gesture; - - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - nopropagation$2(event); - gesture("end", event, touches[i]); - } - } - } - - function beforestart(that, container, event, d, identifier, touch) { - var dispatch = listeners.copy(), - p = pointer(touch || event, container), dx, dy, - s; - - if ((s = subject.call(that, new DragEvent("beforestart", { - sourceEvent: event, - target: drag, - identifier, - active, - x: p[0], - y: p[1], - dx: 0, - dy: 0, - dispatch - }), d)) == null) return; - - dx = s.x - p[0] || 0; - dy = s.y - p[1] || 0; - - return function gesture(type, event, touch) { - var p0 = p, n; - switch (type) { - case "start": gestures[identifier] = gesture, n = active++; break; - case "end": delete gestures[identifier], --active; // falls through - case "drag": p = pointer(touch || event, container), n = active; break; - } - dispatch.call( - type, - that, - new DragEvent(type, { - sourceEvent: event, - subject: s, - target: drag, - identifier, - active: n, - x: p[0] + dx, - y: p[1] + dy, - dx: p[0] - p0[0], - dy: p[1] - p0[1], - dispatch - }), - d - ); - }; - } - - drag.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$9(!!_), drag) : filter; - }; - - drag.container = function(_) { - return arguments.length ? (container = typeof _ === "function" ? _ : constant$9(_), drag) : container; - }; - - drag.subject = function(_) { - return arguments.length ? (subject = typeof _ === "function" ? _ : constant$9(_), drag) : subject; - }; - - drag.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$9(!!_), drag) : touchable; - }; - - drag.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? drag : value; - }; - - drag.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); - }; - - return drag; -} - -function define(constructor, factory, prototype) { - constructor.prototype = factory.prototype = prototype; - prototype.constructor = constructor; -} - -function extend(parent, definition) { - var prototype = Object.create(parent.prototype); - for (var key in definition) prototype[key] = definition[key]; - return prototype; -} - -function Color() {} - -var darker = 0.7; -var brighter = 1 / darker; - -var reI = "\\s*([+-]?\\d+)\\s*", - reN = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", - reP = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", - reHex = /^#([0-9a-f]{3,8})$/, - reRgbInteger = new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`), - reRgbPercent = new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`), - reRgbaInteger = new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`), - reRgbaPercent = new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`), - reHslPercent = new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`), - reHslaPercent = new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`); - -var named = { - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgreen: 0x006400, - darkgrey: 0xa9a9a9, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - grey: 0x808080, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgreen: 0x90ee90, - lightgrey: 0xd3d3d3, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 -}; - -define(Color, color, { - copy(channels) { - return Object.assign(new this.constructor, this, channels); - }, - displayable() { - return this.rgb().displayable(); - }, - hex: color_formatHex, // Deprecated! Use color.formatHex. - formatHex: color_formatHex, - formatHex8: color_formatHex8, - formatHsl: color_formatHsl, - formatRgb: color_formatRgb, - toString: color_formatRgb -}); - -function color_formatHex() { - return this.rgb().formatHex(); -} - -function color_formatHex8() { - return this.rgb().formatHex8(); -} - -function color_formatHsl() { - return hslConvert(this).formatHsl(); -} - -function color_formatRgb() { - return this.rgb().formatRgb(); -} - -function color(format) { - var m, l; - format = (format + "").trim().toLowerCase(); - return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000 - : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00 - : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000 - : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000 - : null) // invalid hex - : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) - : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) - : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) - : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) - : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) - : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) - : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins - : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) - : null; -} - -function rgbn(n) { - return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); -} - -function rgba(r, g, b, a) { - if (a <= 0) r = g = b = NaN; - return new Rgb(r, g, b, a); -} - -function rgbConvert(o) { - if (!(o instanceof Color)) o = color(o); - if (!o) return new Rgb; - o = o.rgb(); - return new Rgb(o.r, o.g, o.b, o.opacity); -} - -function rgb(r, g, b, opacity) { - return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); -} - -function Rgb(r, g, b, opacity) { - this.r = +r; - this.g = +g; - this.b = +b; - this.opacity = +opacity; -} - -define(Rgb, rgb, extend(Color, { - brighter(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - darker(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - rgb() { - return this; - }, - clamp() { - return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity)); - }, - displayable() { - return (-0.5 <= this.r && this.r < 255.5) - && (-0.5 <= this.g && this.g < 255.5) - && (-0.5 <= this.b && this.b < 255.5) - && (0 <= this.opacity && this.opacity <= 1); - }, - hex: rgb_formatHex, // Deprecated! Use color.formatHex. - formatHex: rgb_formatHex, - formatHex8: rgb_formatHex8, - formatRgb: rgb_formatRgb, - toString: rgb_formatRgb -})); - -function rgb_formatHex() { - return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`; -} - -function rgb_formatHex8() { - return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; -} - -function rgb_formatRgb() { - const a = clampa(this.opacity); - return `${a === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? ")" : `, ${a})`}`; -} - -function clampa(opacity) { - return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity)); -} - -function clampi(value) { - return Math.max(0, Math.min(255, Math.round(value) || 0)); -} - -function hex(value) { - value = clampi(value); - return (value < 16 ? "0" : "") + value.toString(16); -} - -function hsla(h, s, l, a) { - if (a <= 0) h = s = l = NaN; - else if (l <= 0 || l >= 1) h = s = NaN; - else if (s <= 0) h = NaN; - return new Hsl(h, s, l, a); -} - -function hslConvert(o) { - if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Color)) o = color(o); - if (!o) return new Hsl; - if (o instanceof Hsl) return o; - o = o.rgb(); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - h = NaN, - s = max - min, - l = (max + min) / 2; - if (s) { - if (r === max) h = (g - b) / s + (g < b) * 6; - else if (g === max) h = (b - r) / s + 2; - else h = (r - g) / s + 4; - s /= l < 0.5 ? max + min : 2 - max - min; - h *= 60; - } else { - s = l > 0 && l < 1 ? 0 : h; - } - return new Hsl(h, s, l, o.opacity); -} - -function hsl$2(h, s, l, opacity) { - return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); -} - -function Hsl(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; -} - -define(Hsl, hsl$2, extend(Color, { - brighter(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - darker(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - rgb() { - var h = this.h % 360 + (this.h < 0) * 360, - s = isNaN(h) || isNaN(this.s) ? 0 : this.s, - l = this.l, - m2 = l + (l < 0.5 ? l : 1 - l) * s, - m1 = 2 * l - m2; - return new Rgb( - hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), - hsl2rgb(h, m1, m2), - hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), - this.opacity - ); - }, - clamp() { - return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity)); - }, - displayable() { - return (0 <= this.s && this.s <= 1 || isNaN(this.s)) - && (0 <= this.l && this.l <= 1) - && (0 <= this.opacity && this.opacity <= 1); - }, - formatHsl() { - const a = clampa(this.opacity); - return `${a === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? ")" : `, ${a})`}`; - } -})); - -function clamph(value) { - value = (value || 0) % 360; - return value < 0 ? value + 360 : value; -} - -function clampt(value) { - return Math.max(0, Math.min(1, value || 0)); -} - -/* From FvD 13.37, CSS Color Module Level 3 */ -function hsl2rgb(h, m1, m2) { - return (h < 60 ? m1 + (m2 - m1) * h / 60 - : h < 180 ? m2 - : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 - : m1) * 255; -} - -const radians$1 = Math.PI / 180; -const degrees$2 = 180 / Math.PI; - -// https://observablehq.com/@mbostock/lab-and-rgb -const K$2 = 18, - Xn = 0.96422, - Yn = 1, - Zn = 0.82521, - t0$1 = 4 / 29, - t1$1 = 6 / 29, - t2 = 3 * t1$1 * t1$1, - t3 = t1$1 * t1$1 * t1$1; - -function labConvert(o) { - if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); - if (o instanceof Hcl) return hcl2lab(o); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = rgb2lrgb(o.r), - g = rgb2lrgb(o.g), - b = rgb2lrgb(o.b), - y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z; - if (r === g && g === b) x = z = y; else { - x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); - z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); - } - return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); -} - -function gray(l, opacity) { - return new Lab(l, 0, 0, opacity == null ? 1 : opacity); -} - -function lab$1(l, a, b, opacity) { - return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); -} - -function Lab(l, a, b, opacity) { - this.l = +l; - this.a = +a; - this.b = +b; - this.opacity = +opacity; -} - -define(Lab, lab$1, extend(Color, { - brighter(k) { - return new Lab(this.l + K$2 * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - darker(k) { - return new Lab(this.l - K$2 * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - rgb() { - var y = (this.l + 16) / 116, - x = isNaN(this.a) ? y : y + this.a / 500, - z = isNaN(this.b) ? y : y - this.b / 200; - x = Xn * lab2xyz(x); - y = Yn * lab2xyz(y); - z = Zn * lab2xyz(z); - return new Rgb( - lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z), - lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), - lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z), - this.opacity - ); - } -})); - -function xyz2lab(t) { - return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0$1; -} - -function lab2xyz(t) { - return t > t1$1 ? t * t * t : t2 * (t - t0$1); -} - -function lrgb2rgb(x) { - return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); -} - -function rgb2lrgb(x) { - return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); -} - -function hclConvert(o) { - if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); - if (!(o instanceof Lab)) o = labConvert(o); - if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity); - var h = Math.atan2(o.b, o.a) * degrees$2; - return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); -} - -function lch(l, c, h, opacity) { - return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity); -} - -function hcl$2(h, c, l, opacity) { - return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); -} - -function Hcl(h, c, l, opacity) { - this.h = +h; - this.c = +c; - this.l = +l; - this.opacity = +opacity; -} - -function hcl2lab(o) { - if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); - var h = o.h * radians$1; - return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); -} - -define(Hcl, hcl$2, extend(Color, { - brighter(k) { - return new Hcl(this.h, this.c, this.l + K$2 * (k == null ? 1 : k), this.opacity); - }, - darker(k) { - return new Hcl(this.h, this.c, this.l - K$2 * (k == null ? 1 : k), this.opacity); - }, - rgb() { - return hcl2lab(this).rgb(); - } -})); - -var A$1 = -0.14861, - B$3 = +1.78277, - C$2 = -0.29227, - D$3 = -0.90649, - E$2 = +1.97294, - ED = E$2 * D$3, - EB = E$2 * B$3, - BC_DA = B$3 * C$2 - D$3 * A$1; - -function cubehelixConvert(o) { - if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), - bl = b - l, - k = (E$2 * (g - l) - C$2 * bl) / D$3, - s = Math.sqrt(k * k + bl * bl) / (E$2 * l * (1 - l)), // NaN if l=0 or l=1 - h = s ? Math.atan2(k, bl) * degrees$2 - 120 : NaN; - return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity); -} - -function cubehelix$3(h, s, l, opacity) { - return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity); -} - -function Cubehelix(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; -} - -define(Cubehelix, cubehelix$3, extend(Color, { - brighter(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - darker(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - rgb() { - var h = isNaN(this.h) ? 0 : (this.h + 120) * radians$1, - l = +this.l, - a = isNaN(this.s) ? 0 : this.s * l * (1 - l), - cosh = Math.cos(h), - sinh = Math.sin(h); - return new Rgb( - 255 * (l + a * (A$1 * cosh + B$3 * sinh)), - 255 * (l + a * (C$2 * cosh + D$3 * sinh)), - 255 * (l + a * (E$2 * cosh)), - this.opacity - ); - } -})); - -function basis$1(t1, v0, v1, v2, v3) { - var t2 = t1 * t1, t3 = t2 * t1; - return ((1 - 3 * t1 + 3 * t2 - t3) * v0 - + (4 - 6 * t2 + 3 * t3) * v1 - + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 - + t3 * v3) / 6; -} - -function basis$2(values) { - var n = values.length - 1; - return function(t) { - var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), - v1 = values[i], - v2 = values[i + 1], - v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, - v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1; - return basis$1((t - i / n) * n, v0, v1, v2, v3); - }; -} - -function basisClosed$1(values) { - var n = values.length; - return function(t) { - var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), - v0 = values[(i + n - 1) % n], - v1 = values[i % n], - v2 = values[(i + 1) % n], - v3 = values[(i + 2) % n]; - return basis$1((t - i / n) * n, v0, v1, v2, v3); - }; -} - -var constant$8 = x => () => x; - -function linear$2(a, d) { - return function(t) { - return a + t * d; - }; -} - -function exponential$1(a, b, y) { - return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { - return Math.pow(a + t * b, y); - }; -} - -function hue$1(a, b) { - var d = b - a; - return d ? linear$2(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant$8(isNaN(a) ? b : a); -} - -function gamma$1(y) { - return (y = +y) === 1 ? nogamma : function(a, b) { - return b - a ? exponential$1(a, b, y) : constant$8(isNaN(a) ? b : a); - }; -} - -function nogamma(a, b) { - var d = b - a; - return d ? linear$2(a, d) : constant$8(isNaN(a) ? b : a); -} - -var interpolateRgb = (function rgbGamma(y) { - var color = gamma$1(y); - - function rgb$1(start, end) { - var r = color((start = rgb(start)).r, (end = rgb(end)).r), - g = color(start.g, end.g), - b = color(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.r = r(t); - start.g = g(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; - } - - rgb$1.gamma = rgbGamma; - - return rgb$1; -})(1); - -function rgbSpline(spline) { - return function(colors) { - var n = colors.length, - r = new Array(n), - g = new Array(n), - b = new Array(n), - i, color; - for (i = 0; i < n; ++i) { - color = rgb(colors[i]); - r[i] = color.r || 0; - g[i] = color.g || 0; - b[i] = color.b || 0; - } - r = spline(r); - g = spline(g); - b = spline(b); - color.opacity = 1; - return function(t) { - color.r = r(t); - color.g = g(t); - color.b = b(t); - return color + ""; - }; - }; -} - -var rgbBasis = rgbSpline(basis$2); -var rgbBasisClosed = rgbSpline(basisClosed$1); - -function numberArray(a, b) { - if (!b) b = []; - var n = a ? Math.min(b.length, a.length) : 0, - c = b.slice(), - i; - return function(t) { - for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t; - return c; - }; -} - -function isNumberArray(x) { - return ArrayBuffer.isView(x) && !(x instanceof DataView); -} - -function array$3(a, b) { - return (isNumberArray(b) ? numberArray : genericArray)(a, b); -} - -function genericArray(a, b) { - var nb = b ? b.length : 0, - na = a ? Math.min(nb, a.length) : 0, - x = new Array(na), - c = new Array(nb), - i; - - for (i = 0; i < na; ++i) x[i] = interpolate$2(a[i], b[i]); - for (; i < nb; ++i) c[i] = b[i]; - - return function(t) { - for (i = 0; i < na; ++i) c[i] = x[i](t); - return c; - }; -} - -function date$1(a, b) { - var d = new Date; - return a = +a, b = +b, function(t) { - return d.setTime(a * (1 - t) + b * t), d; - }; -} - -function interpolateNumber(a, b) { - return a = +a, b = +b, function(t) { - return a * (1 - t) + b * t; - }; -} - -function object$1(a, b) { - var i = {}, - c = {}, - k; - - if (a === null || typeof a !== "object") a = {}; - if (b === null || typeof b !== "object") b = {}; - - for (k in b) { - if (k in a) { - i[k] = interpolate$2(a[k], b[k]); - } else { - c[k] = b[k]; - } - } - - return function(t) { - for (k in i) c[k] = i[k](t); - return c; - }; -} - -var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, - reB = new RegExp(reA.source, "g"); - -function zero(b) { - return function() { - return b; - }; -} - -function one(b) { - return function(t) { - return b(t) + ""; - }; -} - -function interpolateString(a, b) { - var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b - am, // current match in a - bm, // current match in b - bs, // string preceding current number in b, if any - i = -1, // index in s - s = [], // string constants and placeholders - q = []; // number interpolators - - // Coerce inputs to strings. - a = a + "", b = b + ""; - - // Interpolate pairs of numbers in a & b. - while ((am = reA.exec(a)) - && (bm = reB.exec(b))) { - if ((bs = bm.index) > bi) { // a string precedes the next number in b - bs = b.slice(bi, bs); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match - if (s[i]) s[i] += bm; // coalesce with previous string - else s[++i] = bm; - } else { // interpolate non-matching numbers - s[++i] = null; - q.push({i: i, x: interpolateNumber(am, bm)}); - } - bi = reB.lastIndex; - } - - // Add remains of b. - if (bi < b.length) { - bs = b.slice(bi); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - - // Special optimization for only a single match. - // Otherwise, interpolate each of the numbers and rejoin the string. - return s.length < 2 ? (q[0] - ? one(q[0].x) - : zero(b)) - : (b = q.length, function(t) { - for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }); -} - -function interpolate$2(a, b) { - var t = typeof b, c; - return b == null || t === "boolean" ? constant$8(b) - : (t === "number" ? interpolateNumber - : t === "string" ? ((c = color(b)) ? (b = c, interpolateRgb) : interpolateString) - : b instanceof color ? interpolateRgb - : b instanceof Date ? date$1 - : isNumberArray(b) ? numberArray - : Array.isArray(b) ? genericArray - : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object$1 - : interpolateNumber)(a, b); -} - -function discrete(range) { - var n = range.length; - return function(t) { - return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; -} - -function hue(a, b) { - var i = hue$1(+a, +b); - return function(t) { - var x = i(t); - return x - 360 * Math.floor(x / 360); - }; -} - -function interpolateRound(a, b) { - return a = +a, b = +b, function(t) { - return Math.round(a * (1 - t) + b * t); - }; -} - -var degrees$1 = 180 / Math.PI; - -var identity$7 = { - translateX: 0, - translateY: 0, - rotate: 0, - skewX: 0, - scaleX: 1, - scaleY: 1 -}; - -function decompose(a, b, c, d, e, f) { - var scaleX, scaleY, skewX; - if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; - if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; - if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; - if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; - return { - translateX: e, - translateY: f, - rotate: Math.atan2(b, a) * degrees$1, - skewX: Math.atan(skewX) * degrees$1, - scaleX: scaleX, - scaleY: scaleY - }; -} - -var svgNode; - -/* eslint-disable no-undef */ -function parseCss(value) { - const m = new (typeof DOMMatrix === "function" ? DOMMatrix : WebKitCSSMatrix)(value + ""); - return m.isIdentity ? identity$7 : decompose(m.a, m.b, m.c, m.d, m.e, m.f); -} - -function parseSvg(value) { - if (value == null) return identity$7; - if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); - svgNode.setAttribute("transform", value); - if (!(value = svgNode.transform.baseVal.consolidate())) return identity$7; - value = value.matrix; - return decompose(value.a, value.b, value.c, value.d, value.e, value.f); -} - -function interpolateTransform(parse, pxComma, pxParen, degParen) { - - function pop(s) { - return s.length ? s.pop() + " " : ""; - } - - function translate(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push("translate(", null, pxComma, null, pxParen); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb || yb) { - s.push("translate(" + xb + pxComma + yb + pxParen); - } - } - - function rotate(a, b, s, q) { - if (a !== b) { - if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path - q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "rotate(" + b + degParen); - } - } - - function skewX(a, b, s, q) { - if (a !== b) { - q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "skewX(" + b + degParen); - } - } - - function scale(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push(pop(s) + "scale(", null, ",", null, ")"); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb !== 1 || yb !== 1) { - s.push(pop(s) + "scale(" + xb + "," + yb + ")"); - } - } - - return function(a, b) { - var s = [], // string constants and placeholders - q = []; // number interpolators - a = parse(a), b = parse(b); - translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); - rotate(a.rotate, b.rotate, s, q); - skewX(a.skewX, b.skewX, s, q); - scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); - a = b = null; // gc - return function(t) { - var i = -1, n = q.length, o; - while (++i < n) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }; - }; -} - -var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); -var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); - -var epsilon2$1 = 1e-12; - -function cosh(x) { - return ((x = Math.exp(x)) + 1 / x) / 2; -} - -function sinh(x) { - return ((x = Math.exp(x)) - 1 / x) / 2; -} - -function tanh(x) { - return ((x = Math.exp(2 * x)) - 1) / (x + 1); -} - -var interpolateZoom = (function zoomRho(rho, rho2, rho4) { - - // p0 = [ux0, uy0, w0] - // p1 = [ux1, uy1, w1] - function zoom(p0, p1) { - var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], - ux1 = p1[0], uy1 = p1[1], w1 = p1[2], - dx = ux1 - ux0, - dy = uy1 - uy0, - d2 = dx * dx + dy * dy, - i, - S; - - // Special case for u0 ≅ u1. - if (d2 < epsilon2$1) { - S = Math.log(w1 / w0) / rho; - i = function(t) { - return [ - ux0 + t * dx, - uy0 + t * dy, - w0 * Math.exp(rho * t * S) - ]; - }; - } - - // General case. - else { - var d1 = Math.sqrt(d2), - b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), - b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), - r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), - r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); - S = (r1 - r0) / rho; - i = function(t) { - var s = t * S, - coshr0 = cosh(r0), - u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); - return [ - ux0 + u * dx, - uy0 + u * dy, - w0 * coshr0 / cosh(rho * s + r0) - ]; - }; - } - - i.duration = S * 1000 * rho / Math.SQRT2; - - return i; - } - - zoom.rho = function(_) { - var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2; - return zoomRho(_1, _2, _4); - }; - - return zoom; -})(Math.SQRT2, 2, 4); - -function hsl(hue) { - return function(start, end) { - var h = hue((start = hsl$2(start)).h, (end = hsl$2(end)).h), - s = nogamma(start.s, end.s), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.s = s(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - } -} - -var hsl$1 = hsl(hue$1); -var hslLong = hsl(nogamma); - -function lab(start, end) { - var l = nogamma((start = lab$1(start)).l, (end = lab$1(end)).l), - a = nogamma(start.a, end.a), - b = nogamma(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.l = l(t); - start.a = a(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; -} - -function hcl(hue) { - return function(start, end) { - var h = hue((start = hcl$2(start)).h, (end = hcl$2(end)).h), - c = nogamma(start.c, end.c), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.c = c(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - } -} - -var hcl$1 = hcl(hue$1); -var hclLong = hcl(nogamma); - -function cubehelix$1(hue) { - return (function cubehelixGamma(y) { - y = +y; - - function cubehelix(start, end) { - var h = hue((start = cubehelix$3(start)).h, (end = cubehelix$3(end)).h), - s = nogamma(start.s, end.s), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.s = s(t); - start.l = l(Math.pow(t, y)); - start.opacity = opacity(t); - return start + ""; - }; - } - - cubehelix.gamma = cubehelixGamma; - - return cubehelix; - })(1); -} - -var cubehelix$2 = cubehelix$1(hue$1); -var cubehelixLong = cubehelix$1(nogamma); - -function piecewise(interpolate, values) { - if (values === undefined) values = interpolate, interpolate = interpolate$2; - var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n); - while (i < n) I[i] = interpolate(v, v = values[++i]); - return function(t) { - var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n))); - return I[i](t - i); - }; -} - -function quantize$1(interpolator, n) { - var samples = new Array(n); - for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); - return samples; -} - -var frame = 0, // is an animation frame pending? - timeout$1 = 0, // is a timeout pending? - interval$1 = 0, // are any timers active? - pokeDelay = 1000, // how frequently we check for clock skew - taskHead, - taskTail, - clockLast = 0, - clockNow = 0, - clockSkew = 0, - clock = typeof performance === "object" && performance.now ? performance : Date, - setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; - -function now() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); -} - -function clearNow() { - clockNow = 0; -} - -function Timer() { - this._call = - this._time = - this._next = null; -} - -Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function(callback, delay, time) { - if (typeof callback !== "function") throw new TypeError("callback is not a function"); - time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); - if (!this._next && taskTail !== this) { - if (taskTail) taskTail._next = this; - else taskHead = this; - taskTail = this; - } - this._call = callback; - this._time = time; - sleep(); - }, - stop: function() { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } -}; - -function timer(callback, delay, time) { - var t = new Timer; - t.restart(callback, delay, time); - return t; -} - -function timerFlush() { - now(); // Get the current time, if not already set. - ++frame; // Pretend we’ve set an alarm, if we haven’t already. - var t = taskHead, e; - while (t) { - if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e); - t = t._next; - } - --frame; -} - -function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout$1 = 0; - try { - timerFlush(); - } finally { - frame = 0; - nap(); - clockNow = 0; - } -} - -function poke() { - var now = clock.now(), delay = now - clockLast; - if (delay > pokeDelay) clockSkew -= delay, clockLast = now; -} - -function nap() { - var t0, t1 = taskHead, t2, time = Infinity; - while (t1) { - if (t1._call) { - if (time > t1._time) time = t1._time; - t0 = t1, t1 = t1._next; - } else { - t2 = t1._next, t1._next = null; - t1 = t0 ? t0._next = t2 : taskHead = t2; - } - } - taskTail = t0; - sleep(time); -} - -function sleep(time) { - if (frame) return; // Soonest alarm already set, or will be. - if (timeout$1) timeout$1 = clearTimeout(timeout$1); - var delay = time - clockNow; // Strictly less than if we recomputed clockNow. - if (delay > 24) { - if (time < Infinity) timeout$1 = setTimeout(wake, time - clock.now() - clockSkew); - if (interval$1) interval$1 = clearInterval(interval$1); - } else { - if (!interval$1) clockLast = clock.now(), interval$1 = setInterval(poke, pokeDelay); - frame = 1, setFrame(wake); - } -} - -function timeout(callback, delay, time) { - var t = new Timer; - delay = delay == null ? 0 : +delay; - t.restart(elapsed => { - t.stop(); - callback(elapsed + delay); - }, delay, time); - return t; -} - -function interval(callback, delay, time) { - var t = new Timer, total = delay; - if (delay == null) return t.restart(callback, delay, time), t; - t._restart = t.restart; - t.restart = function(callback, delay, time) { - delay = +delay, time = time == null ? now() : +time; - t._restart(function tick(elapsed) { - elapsed += total; - t._restart(tick, total += delay, time); - callback(elapsed); - }, delay, time); - }; - t.restart(callback, delay, time); - return t; -} - -var emptyOn = dispatch("start", "end", "cancel", "interrupt"); -var emptyTween = []; - -var CREATED = 0; -var SCHEDULED = 1; -var STARTING = 2; -var STARTED = 3; -var RUNNING = 4; -var ENDING = 5; -var ENDED = 6; - -function schedule(node, name, id, index, group, timing) { - var schedules = node.__transition; - if (!schedules) node.__transition = {}; - else if (id in schedules) return; - create(node, id, { - name: name, - index: index, // For context during callback. - group: group, // For context during callback. - on: emptyOn, - tween: emptyTween, - time: timing.time, - delay: timing.delay, - duration: timing.duration, - ease: timing.ease, - timer: null, - state: CREATED - }); -} - -function init(node, id) { - var schedule = get(node, id); - if (schedule.state > CREATED) throw new Error("too late; already scheduled"); - return schedule; -} - -function set(node, id) { - var schedule = get(node, id); - if (schedule.state > STARTED) throw new Error("too late; already running"); - return schedule; -} - -function get(node, id) { - var schedule = node.__transition; - if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found"); - return schedule; -} - -function create(node, id, self) { - var schedules = node.__transition, - tween; - - // Initialize the self timer when the transition is created. - // Note the actual delay is not known until the first callback! - schedules[id] = self; - self.timer = timer(schedule, 0, self.time); - - function schedule(elapsed) { - self.state = SCHEDULED; - self.timer.restart(start, self.delay, self.time); - - // If the elapsed delay is less than our first sleep, start immediately. - if (self.delay <= elapsed) start(elapsed - self.delay); - } - - function start(elapsed) { - var i, j, n, o; - - // If the state is not SCHEDULED, then we previously errored on start. - if (self.state !== SCHEDULED) return stop(); - - for (i in schedules) { - o = schedules[i]; - if (o.name !== self.name) continue; - - // While this element already has a starting transition during this frame, - // defer starting an interrupting transition until that transition has a - // chance to tick (and possibly end); see d3/d3-transition#54! - if (o.state === STARTED) return timeout(start); - - // Interrupt the active transition, if any. - if (o.state === RUNNING) { - o.state = ENDED; - o.timer.stop(); - o.on.call("interrupt", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - - // Cancel any pre-empted transitions. - else if (+i < id) { - o.state = ENDED; - o.timer.stop(); - o.on.call("cancel", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - } - - // Defer the first tick to end of the current frame; see d3/d3#1576. - // Note the transition may be canceled after start and before the first tick! - // Note this must be scheduled before the start event; see d3/d3-transition#16! - // Assuming this is successful, subsequent callbacks go straight to tick. - timeout(function() { - if (self.state === STARTED) { - self.state = RUNNING; - self.timer.restart(tick, self.delay, self.time); - tick(elapsed); - } - }); - - // Dispatch the start event. - // Note this must be done before the tween are initialized. - self.state = STARTING; - self.on.call("start", node, node.__data__, self.index, self.group); - if (self.state !== STARTING) return; // interrupted - self.state = STARTED; - - // Initialize the tween, deleting null tween. - tween = new Array(n = self.tween.length); - for (i = 0, j = -1; i < n; ++i) { - if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) { - tween[++j] = o; - } - } - tween.length = j + 1; - } - - function tick(elapsed) { - var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), - i = -1, - n = tween.length; - - while (++i < n) { - tween[i].call(node, t); - } - - // Dispatch the end event. - if (self.state === ENDING) { - self.on.call("end", node, node.__data__, self.index, self.group); - stop(); - } - } - - function stop() { - self.state = ENDED; - self.timer.stop(); - delete schedules[id]; - for (var i in schedules) return; // eslint-disable-line no-unused-vars - delete node.__transition; - } -} - -function interrupt(node, name) { - var schedules = node.__transition, - schedule, - active, - empty = true, - i; - - if (!schedules) return; - - name = name == null ? null : name + ""; - - for (i in schedules) { - if ((schedule = schedules[i]).name !== name) { empty = false; continue; } - active = schedule.state > STARTING && schedule.state < ENDING; - schedule.state = ENDED; - schedule.timer.stop(); - schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group); - delete schedules[i]; - } - - if (empty) delete node.__transition; -} - -function selection_interrupt(name) { - return this.each(function() { - interrupt(this, name); - }); -} - -function tweenRemove(id, name) { - var tween0, tween1; - return function() { - var schedule = set(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = tween0 = tween; - for (var i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1 = tween1.slice(); - tween1.splice(i, 1); - break; - } - } - } - - schedule.tween = tween1; - }; -} - -function tweenFunction(id, name, value) { - var tween0, tween1; - if (typeof value !== "function") throw new Error; - return function() { - var schedule = set(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = (tween0 = tween).slice(); - for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1[i] = t; - break; - } - } - if (i === n) tween1.push(t); - } - - schedule.tween = tween1; - }; -} - -function transition_tween(name, value) { - var id = this._id; - - name += ""; - - if (arguments.length < 2) { - var tween = get(this.node(), id).tween; - for (var i = 0, n = tween.length, t; i < n; ++i) { - if ((t = tween[i]).name === name) { - return t.value; - } - } - return null; - } - - return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value)); -} - -function tweenValue(transition, name, value) { - var id = transition._id; - - transition.each(function() { - var schedule = set(this, id); - (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); - }); - - return function(node) { - return get(node, id).value[name]; - }; -} - -function interpolate$1(a, b) { - var c; - return (typeof b === "number" ? interpolateNumber - : b instanceof color ? interpolateRgb - : (c = color(b)) ? (b = c, interpolateRgb) - : interpolateString)(a, b); -} - -function attrRemove(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttribute(name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrConstantNS(fullname, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttributeNS(fullname.space, fullname.local); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrFunction(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttribute(name); - string0 = this.getAttribute(name); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function attrFunctionNS(fullname, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); - string0 = this.getAttributeNS(fullname.space, fullname.local); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function transition_attr(name, value) { - var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate$1; - return this.attrTween(name, typeof value === "function" - ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, "attr." + name, value)) - : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname) - : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value)); -} - -function attrInterpolate(name, i) { - return function(t) { - this.setAttribute(name, i.call(this, t)); - }; -} - -function attrInterpolateNS(fullname, i) { - return function(t) { - this.setAttributeNS(fullname.space, fullname.local, i.call(this, t)); - }; -} - -function attrTweenNS(fullname, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i); - return t0; - } - tween._value = value; - return tween; -} - -function attrTween(name, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i); - return t0; - } - tween._value = value; - return tween; -} - -function transition_attrTween(name, value) { - var key = "attr." + name; - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - var fullname = namespace(name); - return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); -} - -function delayFunction(id, value) { - return function() { - init(this, id).delay = +value.apply(this, arguments); - }; -} - -function delayConstant(id, value) { - return value = +value, function() { - init(this, id).delay = value; - }; -} - -function transition_delay(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? delayFunction - : delayConstant)(id, value)) - : get(this.node(), id).delay; -} - -function durationFunction(id, value) { - return function() { - set(this, id).duration = +value.apply(this, arguments); - }; -} - -function durationConstant(id, value) { - return value = +value, function() { - set(this, id).duration = value; - }; -} - -function transition_duration(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? durationFunction - : durationConstant)(id, value)) - : get(this.node(), id).duration; -} - -function easeConstant(id, value) { - if (typeof value !== "function") throw new Error; - return function() { - set(this, id).ease = value; - }; -} - -function transition_ease(value) { - var id = this._id; - - return arguments.length - ? this.each(easeConstant(id, value)) - : get(this.node(), id).ease; -} - -function easeVarying(id, value) { - return function() { - var v = value.apply(this, arguments); - if (typeof v !== "function") throw new Error; - set(this, id).ease = v; - }; -} - -function transition_easeVarying(value) { - if (typeof value !== "function") throw new Error; - return this.each(easeVarying(this._id, value)); -} - -function transition_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Transition(subgroups, this._parents, this._name, this._id); -} - -function transition_merge(transition) { - if (transition._id !== this._id) throw new Error; - - for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Transition(merges, this._parents, this._name, this._id); -} - -function start(name) { - return (name + "").trim().split(/^|\s+/).every(function(t) { - var i = t.indexOf("."); - if (i >= 0) t = t.slice(0, i); - return !t || t === "start"; - }); -} - -function onFunction(id, name, listener) { - var on0, on1, sit = start(name) ? init : set; - return function() { - var schedule = sit(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener); - - schedule.on = on1; - }; -} - -function transition_on(name, listener) { - var id = this._id; - - return arguments.length < 2 - ? get(this.node(), id).on.on(name) - : this.each(onFunction(id, name, listener)); -} - -function removeFunction(id) { - return function() { - var parent = this.parentNode; - for (var i in this.__transition) if (+i !== id) return; - if (parent) parent.removeChild(this); - }; -} - -function transition_remove() { - return this.on("end.remove", removeFunction(this._id)); -} - -function transition_select(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - schedule(subgroup[i], name, id, i, subgroup, get(node, id)); - } - } - } - - return new Transition(subgroups, this._parents, name, id); -} - -function transition_selectAll(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) { - if (child = children[k]) { - schedule(child, name, id, k, children, inherit); - } - } - subgroups.push(children); - parents.push(node); - } - } - } - - return new Transition(subgroups, parents, name, id); -} - -var Selection = selection.prototype.constructor; - -function transition_selection() { - return new Selection(this._groups, this._parents); -} - -function styleNull(name, interpolate) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - string1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, string10 = string1); - }; -} - -function styleRemove(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = styleValue(this, name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function styleFunction(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - value1 = value(this), - string1 = value1 + ""; - if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function styleMaybeRemove(id, name) { - var on0, on1, listener0, key = "style." + name, event = "end." + key, remove; - return function() { - var schedule = set(this, id), - on = schedule.on, - listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener); - - schedule.on = on1; - }; -} - -function transition_style(name, value, priority) { - var i = (name += "") === "transform" ? interpolateTransformCss : interpolate$1; - return value == null ? this - .styleTween(name, styleNull(name, i)) - .on("end.style." + name, styleRemove(name)) - : typeof value === "function" ? this - .styleTween(name, styleFunction(name, i, tweenValue(this, "style." + name, value))) - .each(styleMaybeRemove(this._id, name)) - : this - .styleTween(name, styleConstant(name, i, value), priority) - .on("end.style." + name, null); -} - -function styleInterpolate(name, i, priority) { - return function(t) { - this.style.setProperty(name, i.call(this, t), priority); - }; -} - -function styleTween(name, value, priority) { - var t, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority); - return t; - } - tween._value = value; - return tween; -} - -function transition_styleTween(name, value, priority) { - var key = "style." + (name += ""); - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); -} - -function textConstant(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction(value) { - return function() { - var value1 = value(this); - this.textContent = value1 == null ? "" : value1; - }; -} - -function transition_text(value) { - return this.tween("text", typeof value === "function" - ? textFunction(tweenValue(this, "text", value)) - : textConstant(value == null ? "" : value + "")); -} - -function textInterpolate(i) { - return function(t) { - this.textContent = i.call(this, t); - }; -} - -function textTween(value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && textInterpolate(i); - return t0; - } - tween._value = value; - return tween; -} - -function transition_textTween(value) { - var key = "text"; - if (arguments.length < 1) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, textTween(value)); -} - -function transition_transition() { - var name = this._name, - id0 = this._id, - id1 = newId(); - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - var inherit = get(node, id0); - schedule(node, name, id1, i, group, { - time: inherit.time + inherit.delay + inherit.duration, - delay: 0, - duration: inherit.duration, - ease: inherit.ease - }); - } - } - } - - return new Transition(groups, this._parents, name, id1); -} - -function transition_end() { - var on0, on1, that = this, id = that._id, size = that.size(); - return new Promise(function(resolve, reject) { - var cancel = {value: reject}, - end = {value: function() { if (--size === 0) resolve(); }}; - - that.each(function() { - var schedule = set(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) { - on1 = (on0 = on).copy(); - on1._.cancel.push(cancel); - on1._.interrupt.push(cancel); - on1._.end.push(end); - } - - schedule.on = on1; - }); - - // The selection was empty, resolve end immediately - if (size === 0) resolve(); - }); -} - -var id = 0; - -function Transition(groups, parents, name, id) { - this._groups = groups; - this._parents = parents; - this._name = name; - this._id = id; -} - -function transition(name) { - return selection().transition(name); -} - -function newId() { - return ++id; -} - -var selection_prototype = selection.prototype; - -Transition.prototype = transition.prototype = { - constructor: Transition, - select: transition_select, - selectAll: transition_selectAll, - selectChild: selection_prototype.selectChild, - selectChildren: selection_prototype.selectChildren, - filter: transition_filter, - merge: transition_merge, - selection: transition_selection, - transition: transition_transition, - call: selection_prototype.call, - nodes: selection_prototype.nodes, - node: selection_prototype.node, - size: selection_prototype.size, - empty: selection_prototype.empty, - each: selection_prototype.each, - on: transition_on, - attr: transition_attr, - attrTween: transition_attrTween, - style: transition_style, - styleTween: transition_styleTween, - text: transition_text, - textTween: transition_textTween, - remove: transition_remove, - tween: transition_tween, - delay: transition_delay, - duration: transition_duration, - ease: transition_ease, - easeVarying: transition_easeVarying, - end: transition_end, - [Symbol.iterator]: selection_prototype[Symbol.iterator] -}; - -const linear$1 = t => +t; - -function quadIn(t) { - return t * t; -} - -function quadOut(t) { - return t * (2 - t); -} - -function quadInOut(t) { - return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2; -} - -function cubicIn(t) { - return t * t * t; -} - -function cubicOut(t) { - return --t * t * t + 1; -} - -function cubicInOut(t) { - return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; -} - -var exponent$1 = 3; - -var polyIn = (function custom(e) { - e = +e; - - function polyIn(t) { - return Math.pow(t, e); - } - - polyIn.exponent = custom; - - return polyIn; -})(exponent$1); - -var polyOut = (function custom(e) { - e = +e; - - function polyOut(t) { - return 1 - Math.pow(1 - t, e); - } - - polyOut.exponent = custom; - - return polyOut; -})(exponent$1); - -var polyInOut = (function custom(e) { - e = +e; - - function polyInOut(t) { - return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2; - } - - polyInOut.exponent = custom; - - return polyInOut; -})(exponent$1); - -var pi$4 = Math.PI, - halfPi$3 = pi$4 / 2; - -function sinIn(t) { - return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi$3); -} - -function sinOut(t) { - return Math.sin(t * halfPi$3); -} - -function sinInOut(t) { - return (1 - Math.cos(pi$4 * t)) / 2; -} - -// tpmt is two power minus ten times t scaled to [0,1] -function tpmt(x) { - return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494; -} - -function expIn(t) { - return tpmt(1 - +t); -} - -function expOut(t) { - return 1 - tpmt(t); -} - -function expInOut(t) { - return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2; -} - -function circleIn(t) { - return 1 - Math.sqrt(1 - t * t); -} - -function circleOut(t) { - return Math.sqrt(1 - --t * t); -} - -function circleInOut(t) { - return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2; -} - -var b1 = 4 / 11, - b2 = 6 / 11, - b3 = 8 / 11, - b4 = 3 / 4, - b5 = 9 / 11, - b6 = 10 / 11, - b7 = 15 / 16, - b8 = 21 / 22, - b9 = 63 / 64, - b0 = 1 / b1 / b1; - -function bounceIn(t) { - return 1 - bounceOut(1 - t); -} - -function bounceOut(t) { - return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9; -} - -function bounceInOut(t) { - return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2; -} - -var overshoot = 1.70158; - -var backIn = (function custom(s) { - s = +s; - - function backIn(t) { - return (t = +t) * t * (s * (t - 1) + t); - } - - backIn.overshoot = custom; - - return backIn; -})(overshoot); - -var backOut = (function custom(s) { - s = +s; - - function backOut(t) { - return --t * t * ((t + 1) * s + t) + 1; - } - - backOut.overshoot = custom; - - return backOut; -})(overshoot); - -var backInOut = (function custom(s) { - s = +s; - - function backInOut(t) { - return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2; - } - - backInOut.overshoot = custom; - - return backInOut; -})(overshoot); - -var tau$5 = 2 * Math.PI, - amplitude = 1, - period = 0.3; - -var elasticIn = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau$5); - - function elasticIn(t) { - return a * tpmt(-(--t)) * Math.sin((s - t) / p); - } - - elasticIn.amplitude = function(a) { return custom(a, p * tau$5); }; - elasticIn.period = function(p) { return custom(a, p); }; - - return elasticIn; -})(amplitude, period); - -var elasticOut = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau$5); - - function elasticOut(t) { - return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p); - } - - elasticOut.amplitude = function(a) { return custom(a, p * tau$5); }; - elasticOut.period = function(p) { return custom(a, p); }; - - return elasticOut; -})(amplitude, period); - -var elasticInOut = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau$5); - - function elasticInOut(t) { - return ((t = t * 2 - 1) < 0 - ? a * tpmt(-t) * Math.sin((s - t) / p) - : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2; - } - - elasticInOut.amplitude = function(a) { return custom(a, p * tau$5); }; - elasticInOut.period = function(p) { return custom(a, p); }; - - return elasticInOut; -})(amplitude, period); - -var defaultTiming = { - time: null, // Set on use. - delay: 0, - duration: 250, - ease: cubicInOut -}; - -function inherit(node, id) { - var timing; - while (!(timing = node.__transition) || !(timing = timing[id])) { - if (!(node = node.parentNode)) { - throw new Error(`transition ${id} not found`); - } - } - return timing; -} - -function selection_transition(name) { - var id, - timing; - - if (name instanceof Transition) { - id = name._id, name = name._name; - } else { - id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; - } - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - schedule(node, name, id, i, group, timing || inherit(node, id)); - } - } - } - - return new Transition(groups, this._parents, name, id); -} - -selection.prototype.interrupt = selection_interrupt; -selection.prototype.transition = selection_transition; - -var root = [null]; - -function active(node, name) { - var schedules = node.__transition, - schedule, - i; - - if (schedules) { - name = name == null ? null : name + ""; - for (i in schedules) { - if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) { - return new Transition([[node]], root, name, +i); - } - } - } - - return null; -} - -var constant$7 = x => () => x; - -function BrushEvent(type, { - sourceEvent, - target, - selection, - mode, - dispatch -}) { - Object.defineProperties(this, { - type: {value: type, enumerable: true, configurable: true}, - sourceEvent: {value: sourceEvent, enumerable: true, configurable: true}, - target: {value: target, enumerable: true, configurable: true}, - selection: {value: selection, enumerable: true, configurable: true}, - mode: {value: mode, enumerable: true, configurable: true}, - _: {value: dispatch} - }); -} - -function nopropagation$1(event) { - event.stopImmediatePropagation(); -} - -function noevent$1(event) { - event.preventDefault(); - event.stopImmediatePropagation(); -} - -var MODE_DRAG = {name: "drag"}, - MODE_SPACE = {name: "space"}, - MODE_HANDLE = {name: "handle"}, - MODE_CENTER = {name: "center"}; - -const {abs: abs$3, max: max$2, min: min$1} = Math; - -function number1(e) { - return [+e[0], +e[1]]; -} - -function number2(e) { - return [number1(e[0]), number1(e[1])]; -} - -var X$2 = { - name: "x", - handles: ["w", "e"].map(type), - input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; }, - output: function(xy) { return xy && [xy[0][0], xy[1][0]]; } -}; - -var Y$2 = { - name: "y", - handles: ["n", "s"].map(type), - input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; }, - output: function(xy) { return xy && [xy[0][1], xy[1][1]]; } -}; - -var XY = { - name: "xy", - handles: ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(type), - input: function(xy) { return xy == null ? null : number2(xy); }, - output: function(xy) { return xy; } -}; - -var cursors = { - overlay: "crosshair", - selection: "move", - n: "ns-resize", - e: "ew-resize", - s: "ns-resize", - w: "ew-resize", - nw: "nwse-resize", - ne: "nesw-resize", - se: "nwse-resize", - sw: "nesw-resize" -}; - -var flipX = { - e: "w", - w: "e", - nw: "ne", - ne: "nw", - se: "sw", - sw: "se" -}; - -var flipY = { - n: "s", - s: "n", - nw: "sw", - ne: "se", - se: "ne", - sw: "nw" -}; - -var signsX = { - overlay: +1, - selection: +1, - n: null, - e: +1, - s: null, - w: -1, - nw: -1, - ne: +1, - se: +1, - sw: -1 -}; - -var signsY = { - overlay: +1, - selection: +1, - n: -1, - e: null, - s: +1, - w: null, - nw: -1, - ne: -1, - se: +1, - sw: +1 -}; - -function type(t) { - return {type: t}; -} - -// Ignore right-click, since that should open the context menu. -function defaultFilter$1(event) { - return !event.ctrlKey && !event.button; -} - -function defaultExtent$1() { - var svg = this.ownerSVGElement || this; - if (svg.hasAttribute("viewBox")) { - svg = svg.viewBox.baseVal; - return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]]; - } - return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]]; -} - -function defaultTouchable$1() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -// Like d3.local, but with the name “__brush” rather than auto-generated. -function local(node) { - while (!node.__brush) if (!(node = node.parentNode)) return; - return node.__brush; -} - -function empty(extent) { - return extent[0][0] === extent[1][0] - || extent[0][1] === extent[1][1]; -} - -function brushSelection(node) { - var state = node.__brush; - return state ? state.dim.output(state.selection) : null; -} - -function brushX() { - return brush$1(X$2); -} - -function brushY() { - return brush$1(Y$2); -} - -function brush() { - return brush$1(XY); -} - -function brush$1(dim) { - var extent = defaultExtent$1, - filter = defaultFilter$1, - touchable = defaultTouchable$1, - keys = true, - listeners = dispatch("start", "brush", "end"), - handleSize = 6, - touchending; - - function brush(group) { - var overlay = group - .property("__brush", initialize) - .selectAll(".overlay") - .data([type("overlay")]); - - overlay.enter().append("rect") - .attr("class", "overlay") - .attr("pointer-events", "all") - .attr("cursor", cursors.overlay) - .merge(overlay) - .each(function() { - var extent = local(this).extent; - select(this) - .attr("x", extent[0][0]) - .attr("y", extent[0][1]) - .attr("width", extent[1][0] - extent[0][0]) - .attr("height", extent[1][1] - extent[0][1]); - }); - - group.selectAll(".selection") - .data([type("selection")]) - .enter().append("rect") - .attr("class", "selection") - .attr("cursor", cursors.selection) - .attr("fill", "#777") - .attr("fill-opacity", 0.3) - .attr("stroke", "#fff") - .attr("shape-rendering", "crispEdges"); - - var handle = group.selectAll(".handle") - .data(dim.handles, function(d) { return d.type; }); - - handle.exit().remove(); - - handle.enter().append("rect") - .attr("class", function(d) { return "handle handle--" + d.type; }) - .attr("cursor", function(d) { return cursors[d.type]; }); - - group - .each(redraw) - .attr("fill", "none") - .attr("pointer-events", "all") - .on("mousedown.brush", started) - .filter(touchable) - .on("touchstart.brush", started) - .on("touchmove.brush", touchmoved) - .on("touchend.brush touchcancel.brush", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - brush.move = function(group, selection, event) { - if (group.tween) { - group - .on("start.brush", function(event) { emitter(this, arguments).beforestart().start(event); }) - .on("interrupt.brush end.brush", function(event) { emitter(this, arguments).end(event); }) - .tween("brush", function() { - var that = this, - state = that.__brush, - emit = emitter(that, arguments), - selection0 = state.selection, - selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent), - i = interpolate$2(selection0, selection1); - - function tween(t) { - state.selection = t === 1 && selection1 === null ? null : i(t); - redraw.call(that); - emit.brush(); - } - - return selection0 !== null && selection1 !== null ? tween : tween(1); - }); - } else { - group - .each(function() { - var that = this, - args = arguments, - state = that.__brush, - selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent), - emit = emitter(that, args).beforestart(); - - interrupt(that); - state.selection = selection1 === null ? null : selection1; - redraw.call(that); - emit.start(event).brush(event).end(event); - }); - } - }; - - brush.clear = function(group, event) { - brush.move(group, null, event); - }; - - function redraw() { - var group = select(this), - selection = local(this).selection; - - if (selection) { - group.selectAll(".selection") - .style("display", null) - .attr("x", selection[0][0]) - .attr("y", selection[0][1]) - .attr("width", selection[1][0] - selection[0][0]) - .attr("height", selection[1][1] - selection[0][1]); - - group.selectAll(".handle") - .style("display", null) - .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; }) - .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; }) - .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; }) - .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; }); - } - - else { - group.selectAll(".selection,.handle") - .style("display", "none") - .attr("x", null) - .attr("y", null) - .attr("width", null) - .attr("height", null); - } - } - - function emitter(that, args, clean) { - var emit = that.__brush.emitter; - return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean); - } - - function Emitter(that, args, clean) { - this.that = that; - this.args = args; - this.state = that.__brush; - this.active = 0; - this.clean = clean; - } - - Emitter.prototype = { - beforestart: function() { - if (++this.active === 1) this.state.emitter = this, this.starting = true; - return this; - }, - start: function(event, mode) { - if (this.starting) this.starting = false, this.emit("start", event, mode); - else this.emit("brush", event); - return this; - }, - brush: function(event, mode) { - this.emit("brush", event, mode); - return this; - }, - end: function(event, mode) { - if (--this.active === 0) delete this.state.emitter, this.emit("end", event, mode); - return this; - }, - emit: function(type, event, mode) { - var d = select(this.that).datum(); - listeners.call( - type, - this.that, - new BrushEvent(type, { - sourceEvent: event, - target: brush, - selection: dim.output(this.state.selection), - mode, - dispatch: listeners - }), - d - ); - } - }; - - function started(event) { - if (touchending && !event.touches) return; - if (!filter.apply(this, arguments)) return; - - var that = this, - type = event.target.__data__.type, - mode = (keys && event.metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE), - signX = dim === Y$2 ? null : signsX[type], - signY = dim === X$2 ? null : signsY[type], - state = local(that), - extent = state.extent, - selection = state.selection, - W = extent[0][0], w0, w1, - N = extent[0][1], n0, n1, - E = extent[1][0], e0, e1, - S = extent[1][1], s0, s1, - dx = 0, - dy = 0, - moving, - shifting = signX && signY && keys && event.shiftKey, - lockX, - lockY, - points = Array.from(event.touches || [event], t => { - const i = t.identifier; - t = pointer(t, that); - t.point0 = t.slice(); - t.identifier = i; - return t; - }); - - interrupt(that); - var emit = emitter(that, arguments, true).beforestart(); - - if (type === "overlay") { - if (selection) moving = true; - const pts = [points[0], points[1] || points[0]]; - state.selection = selection = [[ - w0 = dim === Y$2 ? W : min$1(pts[0][0], pts[1][0]), - n0 = dim === X$2 ? N : min$1(pts[0][1], pts[1][1]) - ], [ - e0 = dim === Y$2 ? E : max$2(pts[0][0], pts[1][0]), - s0 = dim === X$2 ? S : max$2(pts[0][1], pts[1][1]) - ]]; - if (points.length > 1) move(event); - } else { - w0 = selection[0][0]; - n0 = selection[0][1]; - e0 = selection[1][0]; - s0 = selection[1][1]; - } - - w1 = w0; - n1 = n0; - e1 = e0; - s1 = s0; - - var group = select(that) - .attr("pointer-events", "none"); - - var overlay = group.selectAll(".overlay") - .attr("cursor", cursors[type]); - - if (event.touches) { - emit.moved = moved; - emit.ended = ended; - } else { - var view = select(event.view) - .on("mousemove.brush", moved, true) - .on("mouseup.brush", ended, true); - if (keys) view - .on("keydown.brush", keydowned, true) - .on("keyup.brush", keyupped, true); - - dragDisable(event.view); - } - - redraw.call(that); - emit.start(event, mode.name); - - function moved(event) { - for (const p of event.changedTouches || [event]) { - for (const d of points) - if (d.identifier === p.identifier) d.cur = pointer(p, that); - } - if (shifting && !lockX && !lockY && points.length === 1) { - const point = points[0]; - if (abs$3(point.cur[0] - point[0]) > abs$3(point.cur[1] - point[1])) - lockY = true; - else - lockX = true; - } - for (const point of points) - if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1]; - moving = true; - noevent$1(event); - move(event); - } - - function move(event) { - const point = points[0], point0 = point.point0; - var t; - - dx = point[0] - point0[0]; - dy = point[1] - point0[1]; - - switch (mode) { - case MODE_SPACE: - case MODE_DRAG: { - if (signX) dx = max$2(W - w0, min$1(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx; - if (signY) dy = max$2(N - n0, min$1(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy; - break; - } - case MODE_HANDLE: { - if (points[1]) { - if (signX) w1 = max$2(W, min$1(E, points[0][0])), e1 = max$2(W, min$1(E, points[1][0])), signX = 1; - if (signY) n1 = max$2(N, min$1(S, points[0][1])), s1 = max$2(N, min$1(S, points[1][1])), signY = 1; - } else { - if (signX < 0) dx = max$2(W - w0, min$1(E - w0, dx)), w1 = w0 + dx, e1 = e0; - else if (signX > 0) dx = max$2(W - e0, min$1(E - e0, dx)), w1 = w0, e1 = e0 + dx; - if (signY < 0) dy = max$2(N - n0, min$1(S - n0, dy)), n1 = n0 + dy, s1 = s0; - else if (signY > 0) dy = max$2(N - s0, min$1(S - s0, dy)), n1 = n0, s1 = s0 + dy; - } - break; - } - case MODE_CENTER: { - if (signX) w1 = max$2(W, min$1(E, w0 - dx * signX)), e1 = max$2(W, min$1(E, e0 + dx * signX)); - if (signY) n1 = max$2(N, min$1(S, n0 - dy * signY)), s1 = max$2(N, min$1(S, s0 + dy * signY)); - break; - } - } - - if (e1 < w1) { - signX *= -1; - t = w0, w0 = e0, e0 = t; - t = w1, w1 = e1, e1 = t; - if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]); - } - - if (s1 < n1) { - signY *= -1; - t = n0, n0 = s0, s0 = t; - t = n1, n1 = s1, s1 = t; - if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]); - } - - if (state.selection) selection = state.selection; // May be set by brush.move! - if (lockX) w1 = selection[0][0], e1 = selection[1][0]; - if (lockY) n1 = selection[0][1], s1 = selection[1][1]; - - if (selection[0][0] !== w1 - || selection[0][1] !== n1 - || selection[1][0] !== e1 - || selection[1][1] !== s1) { - state.selection = [[w1, n1], [e1, s1]]; - redraw.call(that); - emit.brush(event, mode.name); - } - } - - function ended(event) { - nopropagation$1(event); - if (event.touches) { - if (event.touches.length) return; - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - } else { - yesdrag(event.view, moving); - view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null); - } - group.attr("pointer-events", "all"); - overlay.attr("cursor", cursors.overlay); - if (state.selection) selection = state.selection; // May be set by brush.move (on start)! - if (empty(selection)) state.selection = null, redraw.call(that); - emit.end(event, mode.name); - } - - function keydowned(event) { - switch (event.keyCode) { - case 16: { // SHIFT - shifting = signX && signY; - break; - } - case 18: { // ALT - if (mode === MODE_HANDLE) { - if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; - if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; - mode = MODE_CENTER; - move(event); - } - break; - } - case 32: { // SPACE; takes priority over ALT - if (mode === MODE_HANDLE || mode === MODE_CENTER) { - if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx; - if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy; - mode = MODE_SPACE; - overlay.attr("cursor", cursors.selection); - move(event); - } - break; - } - default: return; - } - noevent$1(event); - } - - function keyupped(event) { - switch (event.keyCode) { - case 16: { // SHIFT - if (shifting) { - lockX = lockY = shifting = false; - move(event); - } - break; - } - case 18: { // ALT - if (mode === MODE_CENTER) { - if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; - if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; - mode = MODE_HANDLE; - move(event); - } - break; - } - case 32: { // SPACE - if (mode === MODE_SPACE) { - if (event.altKey) { - if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; - if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; - mode = MODE_CENTER; - } else { - if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; - if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; - mode = MODE_HANDLE; - } - overlay.attr("cursor", cursors[type]); - move(event); - } - break; - } - default: return; - } - noevent$1(event); - } - } - - function touchmoved(event) { - emitter(this, arguments).moved(event); - } - - function touchended(event) { - emitter(this, arguments).ended(event); - } - - function initialize() { - var state = this.__brush || {selection: null}; - state.extent = number2(extent.apply(this, arguments)); - state.dim = dim; - return state; - } - - brush.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant$7(number2(_)), brush) : extent; - }; - - brush.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$7(!!_), brush) : filter; - }; - - brush.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$7(!!_), brush) : touchable; - }; - - brush.handleSize = function(_) { - return arguments.length ? (handleSize = +_, brush) : handleSize; - }; - - brush.keyModifiers = function(_) { - return arguments.length ? (keys = !!_, brush) : keys; - }; - - brush.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? brush : value; - }; - - return brush; -} - -var abs$2 = Math.abs; -var cos$2 = Math.cos; -var sin$2 = Math.sin; -var pi$3 = Math.PI; -var halfPi$2 = pi$3 / 2; -var tau$4 = pi$3 * 2; -var max$1 = Math.max; -var epsilon$5 = 1e-12; - -function range$1(i, j) { - return Array.from({length: j - i}, (_, k) => i + k); -} - -function compareValue(compare) { - return function(a, b) { - return compare( - a.source.value + a.target.value, - b.source.value + b.target.value - ); - }; -} - -function chord() { - return chord$1(false, false); -} - -function chordTranspose() { - return chord$1(false, true); -} - -function chordDirected() { - return chord$1(true, false); -} - -function chord$1(directed, transpose) { - var padAngle = 0, - sortGroups = null, - sortSubgroups = null, - sortChords = null; - - function chord(matrix) { - var n = matrix.length, - groupSums = new Array(n), - groupIndex = range$1(0, n), - chords = new Array(n * n), - groups = new Array(n), - k = 0, dx; - - matrix = Float64Array.from({length: n * n}, transpose - ? (_, i) => matrix[i % n][i / n | 0] - : (_, i) => matrix[i / n | 0][i % n]); - - // Compute the scaling factor from value to angle in [0, 2pi]. - for (let i = 0; i < n; ++i) { - let x = 0; - for (let j = 0; j < n; ++j) x += matrix[i * n + j] + directed * matrix[j * n + i]; - k += groupSums[i] = x; - } - k = max$1(0, tau$4 - padAngle * n) / k; - dx = k ? padAngle : tau$4 / n; - - // Compute the angles for each group and constituent chord. - { - let x = 0; - if (sortGroups) groupIndex.sort((a, b) => sortGroups(groupSums[a], groupSums[b])); - for (const i of groupIndex) { - const x0 = x; - if (directed) { - const subgroupIndex = range$1(~n + 1, n).filter(j => j < 0 ? matrix[~j * n + i] : matrix[i * n + j]); - if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(a < 0 ? -matrix[~a * n + i] : matrix[i * n + a], b < 0 ? -matrix[~b * n + i] : matrix[i * n + b])); - for (const j of subgroupIndex) { - if (j < 0) { - const chord = chords[~j * n + i] || (chords[~j * n + i] = {source: null, target: null}); - chord.target = {index: i, startAngle: x, endAngle: x += matrix[~j * n + i] * k, value: matrix[~j * n + i]}; - } else { - const chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null}); - chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]}; - } - } - groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]}; - } else { - const subgroupIndex = range$1(0, n).filter(j => matrix[i * n + j] || matrix[j * n + i]); - if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(matrix[i * n + a], matrix[i * n + b])); - for (const j of subgroupIndex) { - let chord; - if (i < j) { - chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null}); - chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]}; - } else { - chord = chords[j * n + i] || (chords[j * n + i] = {source: null, target: null}); - chord.target = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]}; - if (i === j) chord.source = chord.target; - } - if (chord.source && chord.target && chord.source.value < chord.target.value) { - const source = chord.source; - chord.source = chord.target; - chord.target = source; - } - } - groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]}; - } - x += dx; - } - } - - // Remove empty chords. - chords = Object.values(chords); - chords.groups = groups; - return sortChords ? chords.sort(sortChords) : chords; - } - - chord.padAngle = function(_) { - return arguments.length ? (padAngle = max$1(0, _), chord) : padAngle; - }; - - chord.sortGroups = function(_) { - return arguments.length ? (sortGroups = _, chord) : sortGroups; - }; - - chord.sortSubgroups = function(_) { - return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups; - }; - - chord.sortChords = function(_) { - return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._; - }; - - return chord; -} - -const pi$2 = Math.PI, - tau$3 = 2 * pi$2, - epsilon$4 = 1e-6, - tauEpsilon = tau$3 - epsilon$4; - -function append$1(strings) { - this._ += strings[0]; - for (let i = 1, n = strings.length; i < n; ++i) { - this._ += arguments[i] + strings[i]; - } -} - -function appendRound$1(digits) { - let d = Math.floor(digits); - if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`); - if (d > 15) return append$1; - const k = 10 ** d; - return function(strings) { - this._ += strings[0]; - for (let i = 1, n = strings.length; i < n; ++i) { - this._ += Math.round(arguments[i] * k) / k + strings[i]; - } - }; -} - -let Path$1 = class Path { - constructor(digits) { - this._x0 = this._y0 = // start of current subpath - this._x1 = this._y1 = null; // end of current subpath - this._ = ""; - this._append = digits == null ? append$1 : appendRound$1(digits); - } - moveTo(x, y) { - this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`; - } - closePath() { - if (this._x1 !== null) { - this._x1 = this._x0, this._y1 = this._y0; - this._append`Z`; - } - } - lineTo(x, y) { - this._append`L${this._x1 = +x},${this._y1 = +y}`; - } - quadraticCurveTo(x1, y1, x, y) { - this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`; - } - bezierCurveTo(x1, y1, x2, y2, x, y) { - this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`; - } - arcTo(x1, y1, x2, y2, r) { - x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; - - // Is the radius negative? Error. - if (r < 0) throw new Error(`negative radius: ${r}`); - - let x0 = this._x1, - y0 = this._y1, - x21 = x2 - x1, - y21 = y2 - y1, - x01 = x0 - x1, - y01 = y0 - y1, - l01_2 = x01 * x01 + y01 * y01; - - // Is this path empty? Move to (x1,y1). - if (this._x1 === null) { - this._append`M${this._x1 = x1},${this._y1 = y1}`; - } - - // Or, is (x1,y1) coincident with (x0,y0)? Do nothing. - else if (!(l01_2 > epsilon$4)); - - // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? - // Equivalently, is (x1,y1) coincident with (x2,y2)? - // Or, is the radius zero? Line to (x1,y1). - else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$4) || !r) { - this._append`L${this._x1 = x1},${this._y1 = y1}`; - } - - // Otherwise, draw an arc! - else { - let x20 = x2 - x0, - y20 = y2 - y0, - l21_2 = x21 * x21 + y21 * y21, - l20_2 = x20 * x20 + y20 * y20, - l21 = Math.sqrt(l21_2), - l01 = Math.sqrt(l01_2), - l = r * Math.tan((pi$2 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), - t01 = l / l01, - t21 = l / l21; - - // If the start tangent is not coincident with (x0,y0), line to. - if (Math.abs(t01 - 1) > epsilon$4) { - this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`; - } - - this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`; - } - } - arc(x, y, r, a0, a1, ccw) { - x = +x, y = +y, r = +r, ccw = !!ccw; - - // Is the radius negative? Error. - if (r < 0) throw new Error(`negative radius: ${r}`); - - let dx = r * Math.cos(a0), - dy = r * Math.sin(a0), - x0 = x + dx, - y0 = y + dy, - cw = 1 ^ ccw, - da = ccw ? a0 - a1 : a1 - a0; - - // Is this path empty? Move to (x0,y0). - if (this._x1 === null) { - this._append`M${x0},${y0}`; - } - - // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). - else if (Math.abs(this._x1 - x0) > epsilon$4 || Math.abs(this._y1 - y0) > epsilon$4) { - this._append`L${x0},${y0}`; - } - - // Is this arc empty? We’re done. - if (!r) return; - - // Does the angle go the wrong way? Flip the direction. - if (da < 0) da = da % tau$3 + tau$3; - - // Is this a complete circle? Draw two arcs to complete the circle. - if (da > tauEpsilon) { - this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`; - } - - // Is this arc non-empty? Draw an arc! - else if (da > epsilon$4) { - this._append`A${r},${r},0,${+(da >= pi$2)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`; - } - } - rect(x, y, w, h) { - this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`; - } - toString() { - return this._; - } -}; - -function path() { - return new Path$1; -} - -// Allow instanceof d3.path -path.prototype = Path$1.prototype; - -function pathRound(digits = 3) { - return new Path$1(+digits); -} - -var slice$2 = Array.prototype.slice; - -function constant$6(x) { - return function() { - return x; - }; -} - -function defaultSource$1(d) { - return d.source; -} - -function defaultTarget(d) { - return d.target; -} - -function defaultRadius$1(d) { - return d.radius; -} - -function defaultStartAngle(d) { - return d.startAngle; -} - -function defaultEndAngle(d) { - return d.endAngle; -} - -function defaultPadAngle() { - return 0; -} - -function defaultArrowheadRadius() { - return 10; -} - -function ribbon(headRadius) { - var source = defaultSource$1, - target = defaultTarget, - sourceRadius = defaultRadius$1, - targetRadius = defaultRadius$1, - startAngle = defaultStartAngle, - endAngle = defaultEndAngle, - padAngle = defaultPadAngle, - context = null; - - function ribbon() { - var buffer, - s = source.apply(this, arguments), - t = target.apply(this, arguments), - ap = padAngle.apply(this, arguments) / 2, - argv = slice$2.call(arguments), - sr = +sourceRadius.apply(this, (argv[0] = s, argv)), - sa0 = startAngle.apply(this, argv) - halfPi$2, - sa1 = endAngle.apply(this, argv) - halfPi$2, - tr = +targetRadius.apply(this, (argv[0] = t, argv)), - ta0 = startAngle.apply(this, argv) - halfPi$2, - ta1 = endAngle.apply(this, argv) - halfPi$2; - - if (!context) context = buffer = path(); - - if (ap > epsilon$5) { - if (abs$2(sa1 - sa0) > ap * 2 + epsilon$5) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap); - else sa0 = sa1 = (sa0 + sa1) / 2; - if (abs$2(ta1 - ta0) > ap * 2 + epsilon$5) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap); - else ta0 = ta1 = (ta0 + ta1) / 2; - } - - context.moveTo(sr * cos$2(sa0), sr * sin$2(sa0)); - context.arc(0, 0, sr, sa0, sa1); - if (sa0 !== ta0 || sa1 !== ta1) { - if (headRadius) { - var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2; - context.quadraticCurveTo(0, 0, tr2 * cos$2(ta0), tr2 * sin$2(ta0)); - context.lineTo(tr * cos$2(ta2), tr * sin$2(ta2)); - context.lineTo(tr2 * cos$2(ta1), tr2 * sin$2(ta1)); - } else { - context.quadraticCurveTo(0, 0, tr * cos$2(ta0), tr * sin$2(ta0)); - context.arc(0, 0, tr, ta0, ta1); - } - } - context.quadraticCurveTo(0, 0, sr * cos$2(sa0), sr * sin$2(sa0)); - context.closePath(); - - if (buffer) return context = null, buffer + "" || null; - } - - if (headRadius) ribbon.headRadius = function(_) { - return arguments.length ? (headRadius = typeof _ === "function" ? _ : constant$6(+_), ribbon) : headRadius; - }; - - ribbon.radius = function(_) { - return arguments.length ? (sourceRadius = targetRadius = typeof _ === "function" ? _ : constant$6(+_), ribbon) : sourceRadius; - }; - - ribbon.sourceRadius = function(_) { - return arguments.length ? (sourceRadius = typeof _ === "function" ? _ : constant$6(+_), ribbon) : sourceRadius; - }; - - ribbon.targetRadius = function(_) { - return arguments.length ? (targetRadius = typeof _ === "function" ? _ : constant$6(+_), ribbon) : targetRadius; - }; - - ribbon.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$6(+_), ribbon) : startAngle; - }; - - ribbon.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$6(+_), ribbon) : endAngle; - }; - - ribbon.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$6(+_), ribbon) : padAngle; - }; - - ribbon.source = function(_) { - return arguments.length ? (source = _, ribbon) : source; - }; - - ribbon.target = function(_) { - return arguments.length ? (target = _, ribbon) : target; - }; - - ribbon.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), ribbon) : context; - }; - - return ribbon; -} - -function ribbon$1() { - return ribbon(); -} - -function ribbonArrow() { - return ribbon(defaultArrowheadRadius); -} - -var array$2 = Array.prototype; - -var slice$1 = array$2.slice; - -function ascending$1(a, b) { - return a - b; -} - -function area$3(ring) { - var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1]; - while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1]; - return area; -} - -var constant$5 = x => () => x; - -function contains$2(ring, hole) { - var i = -1, n = hole.length, c; - while (++i < n) if (c = ringContains(ring, hole[i])) return c; - return 0; -} - -function ringContains(ring, point) { - var x = point[0], y = point[1], contains = -1; - for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) { - var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1]; - if (segmentContains(pi, pj, point)) return 0; - if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains; - } - return contains; -} - -function segmentContains(a, b, c) { - var i; return collinear$1(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]); -} - -function collinear$1(a, b, c) { - return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]); -} - -function within(p, q, r) { - return p <= q && q <= r || r <= q && q <= p; -} - -function noop$2() {} - -var cases = [ - [], - [[[1.0, 1.5], [0.5, 1.0]]], - [[[1.5, 1.0], [1.0, 1.5]]], - [[[1.5, 1.0], [0.5, 1.0]]], - [[[1.0, 0.5], [1.5, 1.0]]], - [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], - [[[1.0, 0.5], [1.0, 1.5]]], - [[[1.0, 0.5], [0.5, 1.0]]], - [[[0.5, 1.0], [1.0, 0.5]]], - [[[1.0, 1.5], [1.0, 0.5]]], - [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], - [[[1.5, 1.0], [1.0, 0.5]]], - [[[0.5, 1.0], [1.5, 1.0]]], - [[[1.0, 1.5], [1.5, 1.0]]], - [[[0.5, 1.0], [1.0, 1.5]]], - [] -]; - -function Contours() { - var dx = 1, - dy = 1, - threshold = thresholdSturges, - smooth = smoothLinear; - - function contours(values) { - var tz = threshold(values); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - const e = extent$1(values, finite); - tz = ticks(...nice$1(e[0], e[1], tz), tz); - while (tz[tz.length - 1] >= e[1]) tz.pop(); - while (tz[1] < e[0]) tz.shift(); - } else { - tz = tz.slice().sort(ascending$1); - } - - return tz.map(value => contour(values, value)); - } - - // Accumulate, smooth contour rings, assign holes to exterior rings. - // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js - function contour(values, value) { - const v = value == null ? NaN : +value; - if (isNaN(v)) throw new Error(`invalid value: ${value}`); - - var polygons = [], - holes = []; - - isorings(values, v, function(ring) { - smooth(ring, values, v); - if (area$3(ring) > 0) polygons.push([ring]); - else holes.push(ring); - }); - - holes.forEach(function(hole) { - for (var i = 0, n = polygons.length, polygon; i < n; ++i) { - if (contains$2((polygon = polygons[i])[0], hole) !== -1) { - polygon.push(hole); - return; - } - } - }); - - return { - type: "MultiPolygon", - value: value, - coordinates: polygons - }; - } - - // Marching squares with isolines stitched into rings. - // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js - function isorings(values, value, callback) { - var fragmentByStart = new Array, - fragmentByEnd = new Array, - x, y, t0, t1, t2, t3; - - // Special case for the first row (y = -1, t2 = t3 = 0). - x = y = -1; - t1 = above(values[0], value); - cases[t1 << 1].forEach(stitch); - while (++x < dx - 1) { - t0 = t1, t1 = above(values[x + 1], value); - cases[t0 | t1 << 1].forEach(stitch); - } - cases[t1 << 0].forEach(stitch); - - // General case for the intermediate rows. - while (++y < dy - 1) { - x = -1; - t1 = above(values[y * dx + dx], value); - t2 = above(values[y * dx], value); - cases[t1 << 1 | t2 << 2].forEach(stitch); - while (++x < dx - 1) { - t0 = t1, t1 = above(values[y * dx + dx + x + 1], value); - t3 = t2, t2 = above(values[y * dx + x + 1], value); - cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch); - } - cases[t1 | t2 << 3].forEach(stitch); - } - - // Special case for the last row (y = dy - 1, t0 = t1 = 0). - x = -1; - t2 = values[y * dx] >= value; - cases[t2 << 2].forEach(stitch); - while (++x < dx - 1) { - t3 = t2, t2 = above(values[y * dx + x + 1], value); - cases[t2 << 2 | t3 << 3].forEach(stitch); - } - cases[t2 << 3].forEach(stitch); - - function stitch(line) { - var start = [line[0][0] + x, line[0][1] + y], - end = [line[1][0] + x, line[1][1] + y], - startIndex = index(start), - endIndex = index(end), - f, g; - if (f = fragmentByEnd[startIndex]) { - if (g = fragmentByStart[endIndex]) { - delete fragmentByEnd[f.end]; - delete fragmentByStart[g.start]; - if (f === g) { - f.ring.push(end); - callback(f.ring); - } else { - fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)}; - } - } else { - delete fragmentByEnd[f.end]; - f.ring.push(end); - fragmentByEnd[f.end = endIndex] = f; - } - } else if (f = fragmentByStart[endIndex]) { - if (g = fragmentByEnd[startIndex]) { - delete fragmentByStart[f.start]; - delete fragmentByEnd[g.end]; - if (f === g) { - f.ring.push(end); - callback(f.ring); - } else { - fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)}; - } - } else { - delete fragmentByStart[f.start]; - f.ring.unshift(start); - fragmentByStart[f.start = startIndex] = f; - } - } else { - fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]}; - } - } - } - - function index(point) { - return point[0] * 2 + point[1] * (dx + 1) * 4; - } - - function smoothLinear(ring, values, value) { - ring.forEach(function(point) { - var x = point[0], - y = point[1], - xt = x | 0, - yt = y | 0, - v1 = valid(values[yt * dx + xt]); - if (x > 0 && x < dx && xt === x) { - point[0] = smooth1(x, valid(values[yt * dx + xt - 1]), v1, value); - } - if (y > 0 && y < dy && yt === y) { - point[1] = smooth1(y, valid(values[(yt - 1) * dx + xt]), v1, value); - } - }); - } - - contours.contour = contour; - - contours.size = function(_) { - if (!arguments.length) return [dx, dy]; - var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]); - if (!(_0 >= 0 && _1 >= 0)) throw new Error("invalid size"); - return dx = _0, dy = _1, contours; - }; - - contours.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$5(slice$1.call(_)) : constant$5(_), contours) : threshold; - }; - - contours.smooth = function(_) { - return arguments.length ? (smooth = _ ? smoothLinear : noop$2, contours) : smooth === smoothLinear; - }; - - return contours; -} - -// When computing the extent, ignore infinite values (as well as invalid ones). -function finite(x) { - return isFinite(x) ? x : NaN; -} - -// Is the (possibly invalid) x greater than or equal to the (known valid) value? -// Treat any invalid value as below negative infinity. -function above(x, value) { - return x == null ? false : +x >= value; -} - -// During smoothing, treat any invalid value as negative infinity. -function valid(v) { - return v == null || isNaN(v = +v) ? -Infinity : v; -} - -function smooth1(x, v0, v1, value) { - const a = value - v0; - const b = v1 - v0; - const d = isFinite(a) || isFinite(b) ? a / b : Math.sign(a) / Math.sign(b); - return isNaN(d) ? x : x + d - 0.5; -} - -function defaultX$1(d) { - return d[0]; -} - -function defaultY$1(d) { - return d[1]; -} - -function defaultWeight() { - return 1; -} - -function density() { - var x = defaultX$1, - y = defaultY$1, - weight = defaultWeight, - dx = 960, - dy = 500, - r = 20, // blur radius - k = 2, // log2(grid cell size) - o = r * 3, // grid offset, to pad for blur - n = (dx + o * 2) >> k, // grid width - m = (dy + o * 2) >> k, // grid height - threshold = constant$5(20); - - function grid(data) { - var values = new Float32Array(n * m), - pow2k = Math.pow(2, -k), - i = -1; - - for (const d of data) { - var xi = (x(d, ++i, data) + o) * pow2k, - yi = (y(d, i, data) + o) * pow2k, - wi = +weight(d, i, data); - if (wi && xi >= 0 && xi < n && yi >= 0 && yi < m) { - var x0 = Math.floor(xi), - y0 = Math.floor(yi), - xt = xi - x0 - 0.5, - yt = yi - y0 - 0.5; - values[x0 + y0 * n] += (1 - xt) * (1 - yt) * wi; - values[x0 + 1 + y0 * n] += xt * (1 - yt) * wi; - values[x0 + 1 + (y0 + 1) * n] += xt * yt * wi; - values[x0 + (y0 + 1) * n] += (1 - xt) * yt * wi; - } - } - - blur2({data: values, width: n, height: m}, r * pow2k); - return values; - } - - function density(data) { - var values = grid(data), - tz = threshold(values), - pow4k = Math.pow(2, 2 * k); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - tz = ticks(Number.MIN_VALUE, max$3(values) / pow4k, tz); - } - - return Contours() - .size([n, m]) - .thresholds(tz.map(d => d * pow4k)) - (values) - .map((c, i) => (c.value = +tz[i], transform(c))); - } - - density.contours = function(data) { - var values = grid(data), - contours = Contours().size([n, m]), - pow4k = Math.pow(2, 2 * k), - contour = value => { - value = +value; - var c = transform(contours.contour(values, value * pow4k)); - c.value = value; // preserve exact threshold value - return c; - }; - Object.defineProperty(contour, "max", {get: () => max$3(values) / pow4k}); - return contour; - }; - - function transform(geometry) { - geometry.coordinates.forEach(transformPolygon); - return geometry; - } - - function transformPolygon(coordinates) { - coordinates.forEach(transformRing); - } - - function transformRing(coordinates) { - coordinates.forEach(transformPoint); - } - - // TODO Optimize. - function transformPoint(coordinates) { - coordinates[0] = coordinates[0] * Math.pow(2, k) - o; - coordinates[1] = coordinates[1] * Math.pow(2, k) - o; - } - - function resize() { - o = r * 3; - n = (dx + o * 2) >> k; - m = (dy + o * 2) >> k; - return density; - } - - density.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$5(+_), density) : x; - }; - - density.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$5(+_), density) : y; - }; - - density.weight = function(_) { - return arguments.length ? (weight = typeof _ === "function" ? _ : constant$5(+_), density) : weight; - }; - - density.size = function(_) { - if (!arguments.length) return [dx, dy]; - var _0 = +_[0], _1 = +_[1]; - if (!(_0 >= 0 && _1 >= 0)) throw new Error("invalid size"); - return dx = _0, dy = _1, resize(); - }; - - density.cellSize = function(_) { - if (!arguments.length) return 1 << k; - if (!((_ = +_) >= 1)) throw new Error("invalid cell size"); - return k = Math.floor(Math.log(_) / Math.LN2), resize(); - }; - - density.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$5(slice$1.call(_)) : constant$5(_), density) : threshold; - }; - - density.bandwidth = function(_) { - if (!arguments.length) return Math.sqrt(r * (r + 1)); - if (!((_ = +_) >= 0)) throw new Error("invalid bandwidth"); - return r = (Math.sqrt(4 * _ * _ + 1) - 1) / 2, resize(); - }; - - return density; -} - -const epsilon$3 = 1.1102230246251565e-16; -const splitter = 134217729; -const resulterrbound = (3 + 8 * epsilon$3) * epsilon$3; - -// fast_expansion_sum_zeroelim routine from oritinal code -function sum$1(elen, e, flen, f, h) { - let Q, Qnew, hh, bvirt; - let enow = e[0]; - let fnow = f[0]; - let eindex = 0; - let findex = 0; - if ((fnow > enow) === (fnow > -enow)) { - Q = enow; - enow = e[++eindex]; - } else { - Q = fnow; - fnow = f[++findex]; - } - let hindex = 0; - if (eindex < elen && findex < flen) { - if ((fnow > enow) === (fnow > -enow)) { - Qnew = enow + Q; - hh = Q - (Qnew - enow); - enow = e[++eindex]; - } else { - Qnew = fnow + Q; - hh = Q - (Qnew - fnow); - fnow = f[++findex]; - } - Q = Qnew; - if (hh !== 0) { - h[hindex++] = hh; - } - while (eindex < elen && findex < flen) { - if ((fnow > enow) === (fnow > -enow)) { - Qnew = Q + enow; - bvirt = Qnew - Q; - hh = Q - (Qnew - bvirt) + (enow - bvirt); - enow = e[++eindex]; - } else { - Qnew = Q + fnow; - bvirt = Qnew - Q; - hh = Q - (Qnew - bvirt) + (fnow - bvirt); - fnow = f[++findex]; - } - Q = Qnew; - if (hh !== 0) { - h[hindex++] = hh; - } - } - } - while (eindex < elen) { - Qnew = Q + enow; - bvirt = Qnew - Q; - hh = Q - (Qnew - bvirt) + (enow - bvirt); - enow = e[++eindex]; - Q = Qnew; - if (hh !== 0) { - h[hindex++] = hh; - } - } - while (findex < flen) { - Qnew = Q + fnow; - bvirt = Qnew - Q; - hh = Q - (Qnew - bvirt) + (fnow - bvirt); - fnow = f[++findex]; - Q = Qnew; - if (hh !== 0) { - h[hindex++] = hh; - } - } - if (Q !== 0 || hindex === 0) { - h[hindex++] = Q; - } - return hindex; -} - -function estimate(elen, e) { - let Q = e[0]; - for (let i = 1; i < elen; i++) Q += e[i]; - return Q; -} - -function vec(n) { - return new Float64Array(n); -} - -const ccwerrboundA = (3 + 16 * epsilon$3) * epsilon$3; -const ccwerrboundB = (2 + 12 * epsilon$3) * epsilon$3; -const ccwerrboundC = (9 + 64 * epsilon$3) * epsilon$3 * epsilon$3; - -const B$2 = vec(4); -const C1 = vec(8); -const C2 = vec(12); -const D$2 = vec(16); -const u$1 = vec(4); - -function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) { - let acxtail, acytail, bcxtail, bcytail; - let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; - - const acx = ax - cx; - const bcx = bx - cx; - const acy = ay - cy; - const bcy = by - cy; - - s1 = acx * bcy; - c = splitter * acx; - ahi = c - (c - acx); - alo = acx - ahi; - c = splitter * bcy; - bhi = c - (c - bcy); - blo = bcy - bhi; - s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); - t1 = acy * bcx; - c = splitter * acy; - ahi = c - (c - acy); - alo = acy - ahi; - c = splitter * bcx; - bhi = c - (c - bcx); - blo = bcx - bhi; - t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); - _i = s0 - t0; - bvirt = s0 - _i; - B$2[0] = s0 - (_i + bvirt) + (bvirt - t0); - _j = s1 + _i; - bvirt = _j - s1; - _0 = s1 - (_j - bvirt) + (_i - bvirt); - _i = _0 - t1; - bvirt = _0 - _i; - B$2[1] = _0 - (_i + bvirt) + (bvirt - t1); - u3 = _j + _i; - bvirt = u3 - _j; - B$2[2] = _j - (u3 - bvirt) + (_i - bvirt); - B$2[3] = u3; - - let det = estimate(4, B$2); - let errbound = ccwerrboundB * detsum; - if (det >= errbound || -det >= errbound) { - return det; - } - - bvirt = ax - acx; - acxtail = ax - (acx + bvirt) + (bvirt - cx); - bvirt = bx - bcx; - bcxtail = bx - (bcx + bvirt) + (bvirt - cx); - bvirt = ay - acy; - acytail = ay - (acy + bvirt) + (bvirt - cy); - bvirt = by - bcy; - bcytail = by - (bcy + bvirt) + (bvirt - cy); - - if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) { - return det; - } - - errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det); - det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail); - if (det >= errbound || -det >= errbound) return det; - - s1 = acxtail * bcy; - c = splitter * acxtail; - ahi = c - (c - acxtail); - alo = acxtail - ahi; - c = splitter * bcy; - bhi = c - (c - bcy); - blo = bcy - bhi; - s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); - t1 = acytail * bcx; - c = splitter * acytail; - ahi = c - (c - acytail); - alo = acytail - ahi; - c = splitter * bcx; - bhi = c - (c - bcx); - blo = bcx - bhi; - t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); - _i = s0 - t0; - bvirt = s0 - _i; - u$1[0] = s0 - (_i + bvirt) + (bvirt - t0); - _j = s1 + _i; - bvirt = _j - s1; - _0 = s1 - (_j - bvirt) + (_i - bvirt); - _i = _0 - t1; - bvirt = _0 - _i; - u$1[1] = _0 - (_i + bvirt) + (bvirt - t1); - u3 = _j + _i; - bvirt = u3 - _j; - u$1[2] = _j - (u3 - bvirt) + (_i - bvirt); - u$1[3] = u3; - const C1len = sum$1(4, B$2, 4, u$1, C1); - - s1 = acx * bcytail; - c = splitter * acx; - ahi = c - (c - acx); - alo = acx - ahi; - c = splitter * bcytail; - bhi = c - (c - bcytail); - blo = bcytail - bhi; - s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); - t1 = acy * bcxtail; - c = splitter * acy; - ahi = c - (c - acy); - alo = acy - ahi; - c = splitter * bcxtail; - bhi = c - (c - bcxtail); - blo = bcxtail - bhi; - t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); - _i = s0 - t0; - bvirt = s0 - _i; - u$1[0] = s0 - (_i + bvirt) + (bvirt - t0); - _j = s1 + _i; - bvirt = _j - s1; - _0 = s1 - (_j - bvirt) + (_i - bvirt); - _i = _0 - t1; - bvirt = _0 - _i; - u$1[1] = _0 - (_i + bvirt) + (bvirt - t1); - u3 = _j + _i; - bvirt = u3 - _j; - u$1[2] = _j - (u3 - bvirt) + (_i - bvirt); - u$1[3] = u3; - const C2len = sum$1(C1len, C1, 4, u$1, C2); - - s1 = acxtail * bcytail; - c = splitter * acxtail; - ahi = c - (c - acxtail); - alo = acxtail - ahi; - c = splitter * bcytail; - bhi = c - (c - bcytail); - blo = bcytail - bhi; - s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); - t1 = acytail * bcxtail; - c = splitter * acytail; - ahi = c - (c - acytail); - alo = acytail - ahi; - c = splitter * bcxtail; - bhi = c - (c - bcxtail); - blo = bcxtail - bhi; - t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); - _i = s0 - t0; - bvirt = s0 - _i; - u$1[0] = s0 - (_i + bvirt) + (bvirt - t0); - _j = s1 + _i; - bvirt = _j - s1; - _0 = s1 - (_j - bvirt) + (_i - bvirt); - _i = _0 - t1; - bvirt = _0 - _i; - u$1[1] = _0 - (_i + bvirt) + (bvirt - t1); - u3 = _j + _i; - bvirt = u3 - _j; - u$1[2] = _j - (u3 - bvirt) + (_i - bvirt); - u$1[3] = u3; - const Dlen = sum$1(C2len, C2, 4, u$1, D$2); - - return D$2[Dlen - 1]; -} - -function orient2d(ax, ay, bx, by, cx, cy) { - const detleft = (ay - cy) * (bx - cx); - const detright = (ax - cx) * (by - cy); - const det = detleft - detright; - - const detsum = Math.abs(detleft + detright); - if (Math.abs(det) >= ccwerrboundA * detsum) return det; - - return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum); -} - -const EPSILON = Math.pow(2, -52); -const EDGE_STACK = new Uint32Array(512); - -class Delaunator { - - static from(points, getX = defaultGetX, getY = defaultGetY) { - const n = points.length; - const coords = new Float64Array(n * 2); - - for (let i = 0; i < n; i++) { - const p = points[i]; - coords[2 * i] = getX(p); - coords[2 * i + 1] = getY(p); - } - - return new Delaunator(coords); - } - - constructor(coords) { - const n = coords.length >> 1; - if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.'); - - this.coords = coords; - - // arrays that will store the triangulation graph - const maxTriangles = Math.max(2 * n - 5, 0); - this._triangles = new Uint32Array(maxTriangles * 3); - this._halfedges = new Int32Array(maxTriangles * 3); - - // temporary arrays for tracking the edges of the advancing convex hull - this._hashSize = Math.ceil(Math.sqrt(n)); - this._hullPrev = new Uint32Array(n); // edge to prev edge - this._hullNext = new Uint32Array(n); // edge to next edge - this._hullTri = new Uint32Array(n); // edge to adjacent triangle - this._hullHash = new Int32Array(this._hashSize); // angular edge hash - - // temporary arrays for sorting points - this._ids = new Uint32Array(n); - this._dists = new Float64Array(n); - - this.update(); - } - - update() { - const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} = this; - const n = coords.length >> 1; - - // populate an array of point indices; calculate input data bbox - let minX = Infinity; - let minY = Infinity; - let maxX = -Infinity; - let maxY = -Infinity; - - for (let i = 0; i < n; i++) { - const x = coords[2 * i]; - const y = coords[2 * i + 1]; - if (x < minX) minX = x; - if (y < minY) minY = y; - if (x > maxX) maxX = x; - if (y > maxY) maxY = y; - this._ids[i] = i; - } - const cx = (minX + maxX) / 2; - const cy = (minY + maxY) / 2; - - let i0, i1, i2; - - // pick a seed point close to the center - for (let i = 0, minDist = Infinity; i < n; i++) { - const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]); - if (d < minDist) { - i0 = i; - minDist = d; - } - } - const i0x = coords[2 * i0]; - const i0y = coords[2 * i0 + 1]; - - // find the point closest to the seed - for (let i = 0, minDist = Infinity; i < n; i++) { - if (i === i0) continue; - const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]); - if (d < minDist && d > 0) { - i1 = i; - minDist = d; - } - } - let i1x = coords[2 * i1]; - let i1y = coords[2 * i1 + 1]; - - let minRadius = Infinity; - - // find the third point which forms the smallest circumcircle with the first two - for (let i = 0; i < n; i++) { - if (i === i0 || i === i1) continue; - const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]); - if (r < minRadius) { - i2 = i; - minRadius = r; - } - } - let i2x = coords[2 * i2]; - let i2y = coords[2 * i2 + 1]; - - if (minRadius === Infinity) { - // order collinear points by dx (or dy if all x are identical) - // and return the list as a hull - for (let i = 0; i < n; i++) { - this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]); - } - quicksort(this._ids, this._dists, 0, n - 1); - const hull = new Uint32Array(n); - let j = 0; - for (let i = 0, d0 = -Infinity; i < n; i++) { - const id = this._ids[i]; - const d = this._dists[id]; - if (d > d0) { - hull[j++] = id; - d0 = d; - } - } - this.hull = hull.subarray(0, j); - this.triangles = new Uint32Array(0); - this.halfedges = new Uint32Array(0); - return; - } - - // swap the order of the seed points for counter-clockwise orientation - if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) { - const i = i1; - const x = i1x; - const y = i1y; - i1 = i2; - i1x = i2x; - i1y = i2y; - i2 = i; - i2x = x; - i2y = y; - } - - const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y); - this._cx = center.x; - this._cy = center.y; - - for (let i = 0; i < n; i++) { - this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y); - } - - // sort the points by distance from the seed triangle circumcenter - quicksort(this._ids, this._dists, 0, n - 1); - - // set up the seed triangle as the starting hull - this._hullStart = i0; - let hullSize = 3; - - hullNext[i0] = hullPrev[i2] = i1; - hullNext[i1] = hullPrev[i0] = i2; - hullNext[i2] = hullPrev[i1] = i0; - - hullTri[i0] = 0; - hullTri[i1] = 1; - hullTri[i2] = 2; - - hullHash.fill(-1); - hullHash[this._hashKey(i0x, i0y)] = i0; - hullHash[this._hashKey(i1x, i1y)] = i1; - hullHash[this._hashKey(i2x, i2y)] = i2; - - this.trianglesLen = 0; - this._addTriangle(i0, i1, i2, -1, -1, -1); - - for (let k = 0, xp, yp; k < this._ids.length; k++) { - const i = this._ids[k]; - const x = coords[2 * i]; - const y = coords[2 * i + 1]; - - // skip near-duplicate points - if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue; - xp = x; - yp = y; - - // skip seed triangle points - if (i === i0 || i === i1 || i === i2) continue; - - // find a visible edge on the convex hull using edge hash - let start = 0; - for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) { - start = hullHash[(key + j) % this._hashSize]; - if (start !== -1 && start !== hullNext[start]) break; - } - - start = hullPrev[start]; - let e = start, q; - while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) { - e = q; - if (e === start) { - e = -1; - break; - } - } - if (e === -1) continue; // likely a near-duplicate point; skip it - - // add the first triangle from the point - let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]); - - // recursively flip triangles from the point until they satisfy the Delaunay condition - hullTri[i] = this._legalize(t + 2); - hullTri[e] = t; // keep track of boundary triangles on the hull - hullSize++; - - // walk forward through the hull, adding more triangles and flipping recursively - let n = hullNext[e]; - while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) { - t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]); - hullTri[i] = this._legalize(t + 2); - hullNext[n] = n; // mark as removed - hullSize--; - n = q; - } - - // walk backward from the other side, adding more triangles and flipping - if (e === start) { - while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) { - t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]); - this._legalize(t + 2); - hullTri[q] = t; - hullNext[e] = e; // mark as removed - hullSize--; - e = q; - } - } - - // update the hull indices - this._hullStart = hullPrev[i] = e; - hullNext[e] = hullPrev[n] = i; - hullNext[i] = n; - - // save the two new edges in the hash table - hullHash[this._hashKey(x, y)] = i; - hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e; - } - - this.hull = new Uint32Array(hullSize); - for (let i = 0, e = this._hullStart; i < hullSize; i++) { - this.hull[i] = e; - e = hullNext[e]; - } - - // trim typed triangle mesh arrays - this.triangles = this._triangles.subarray(0, this.trianglesLen); - this.halfedges = this._halfedges.subarray(0, this.trianglesLen); - } - - _hashKey(x, y) { - return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize; - } - - _legalize(a) { - const {_triangles: triangles, _halfedges: halfedges, coords} = this; - - let i = 0; - let ar = 0; - - // recursion eliminated with a fixed-size stack - while (true) { - const b = halfedges[a]; - - /* if the pair of triangles doesn't satisfy the Delaunay condition - * (p1 is inside the circumcircle of [p0, pl, pr]), flip them, - * then do the same check/flip recursively for the new pair of triangles - * - * pl pl - * /||\ / \ - * al/ || \bl al/ \a - * / || \ / \ - * / a||b \ flip /___ar___\ - * p0\ || /p1 => p0\---bl---/p1 - * \ || / \ / - * ar\ || /br b\ /br - * \||/ \ / - * pr pr - */ - const a0 = a - a % 3; - ar = a0 + (a + 2) % 3; - - if (b === -1) { // convex hull edge - if (i === 0) break; - a = EDGE_STACK[--i]; - continue; - } - - const b0 = b - b % 3; - const al = a0 + (a + 1) % 3; - const bl = b0 + (b + 2) % 3; - - const p0 = triangles[ar]; - const pr = triangles[a]; - const pl = triangles[al]; - const p1 = triangles[bl]; - - const illegal = inCircle( - coords[2 * p0], coords[2 * p0 + 1], - coords[2 * pr], coords[2 * pr + 1], - coords[2 * pl], coords[2 * pl + 1], - coords[2 * p1], coords[2 * p1 + 1]); - - if (illegal) { - triangles[a] = p1; - triangles[b] = p0; - - const hbl = halfedges[bl]; - - // edge swapped on the other side of the hull (rare); fix the halfedge reference - if (hbl === -1) { - let e = this._hullStart; - do { - if (this._hullTri[e] === bl) { - this._hullTri[e] = a; - break; - } - e = this._hullPrev[e]; - } while (e !== this._hullStart); - } - this._link(a, hbl); - this._link(b, halfedges[ar]); - this._link(ar, bl); - - const br = b0 + (b + 1) % 3; - - // don't worry about hitting the cap: it can only happen on extremely degenerate input - if (i < EDGE_STACK.length) { - EDGE_STACK[i++] = br; - } - } else { - if (i === 0) break; - a = EDGE_STACK[--i]; - } - } - - return ar; - } - - _link(a, b) { - this._halfedges[a] = b; - if (b !== -1) this._halfedges[b] = a; - } - - // add a new triangle given vertex indices and adjacent half-edge ids - _addTriangle(i0, i1, i2, a, b, c) { - const t = this.trianglesLen; - - this._triangles[t] = i0; - this._triangles[t + 1] = i1; - this._triangles[t + 2] = i2; - - this._link(t, a); - this._link(t + 1, b); - this._link(t + 2, c); - - this.trianglesLen += 3; - - return t; - } -} - -// monotonically increases with real angle, but doesn't need expensive trigonometry -function pseudoAngle(dx, dy) { - const p = dx / (Math.abs(dx) + Math.abs(dy)); - return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1] -} - -function dist(ax, ay, bx, by) { - const dx = ax - bx; - const dy = ay - by; - return dx * dx + dy * dy; -} - -function inCircle(ax, ay, bx, by, cx, cy, px, py) { - const dx = ax - px; - const dy = ay - py; - const ex = bx - px; - const ey = by - py; - const fx = cx - px; - const fy = cy - py; - - const ap = dx * dx + dy * dy; - const bp = ex * ex + ey * ey; - const cp = fx * fx + fy * fy; - - return dx * (ey * cp - bp * fy) - - dy * (ex * cp - bp * fx) + - ap * (ex * fy - ey * fx) < 0; -} - -function circumradius(ax, ay, bx, by, cx, cy) { - const dx = bx - ax; - const dy = by - ay; - const ex = cx - ax; - const ey = cy - ay; - - const bl = dx * dx + dy * dy; - const cl = ex * ex + ey * ey; - const d = 0.5 / (dx * ey - dy * ex); - - const x = (ey * bl - dy * cl) * d; - const y = (dx * cl - ex * bl) * d; - - return x * x + y * y; -} - -function circumcenter(ax, ay, bx, by, cx, cy) { - const dx = bx - ax; - const dy = by - ay; - const ex = cx - ax; - const ey = cy - ay; - - const bl = dx * dx + dy * dy; - const cl = ex * ex + ey * ey; - const d = 0.5 / (dx * ey - dy * ex); - - const x = ax + (ey * bl - dy * cl) * d; - const y = ay + (dx * cl - ex * bl) * d; - - return {x, y}; -} - -function quicksort(ids, dists, left, right) { - if (right - left <= 20) { - for (let i = left + 1; i <= right; i++) { - const temp = ids[i]; - const tempDist = dists[temp]; - let j = i - 1; - while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--]; - ids[j + 1] = temp; - } - } else { - const median = (left + right) >> 1; - let i = left + 1; - let j = right; - swap(ids, median, i); - if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right); - if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right); - if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i); - - const temp = ids[i]; - const tempDist = dists[temp]; - while (true) { - do i++; while (dists[ids[i]] < tempDist); - do j--; while (dists[ids[j]] > tempDist); - if (j < i) break; - swap(ids, i, j); - } - ids[left + 1] = ids[j]; - ids[j] = temp; - - if (right - i + 1 >= j - left) { - quicksort(ids, dists, i, right); - quicksort(ids, dists, left, j - 1); - } else { - quicksort(ids, dists, left, j - 1); - quicksort(ids, dists, i, right); - } - } -} - -function swap(arr, i, j) { - const tmp = arr[i]; - arr[i] = arr[j]; - arr[j] = tmp; -} - -function defaultGetX(p) { - return p[0]; -} -function defaultGetY(p) { - return p[1]; -} - -const epsilon$2 = 1e-6; - -class Path { - constructor() { - this._x0 = this._y0 = // start of current subpath - this._x1 = this._y1 = null; // end of current subpath - this._ = ""; - } - moveTo(x, y) { - this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`; - } - closePath() { - if (this._x1 !== null) { - this._x1 = this._x0, this._y1 = this._y0; - this._ += "Z"; - } - } - lineTo(x, y) { - this._ += `L${this._x1 = +x},${this._y1 = +y}`; - } - arc(x, y, r) { - x = +x, y = +y, r = +r; - const x0 = x + r; - const y0 = y; - if (r < 0) throw new Error("negative radius"); - if (this._x1 === null) this._ += `M${x0},${y0}`; - else if (Math.abs(this._x1 - x0) > epsilon$2 || Math.abs(this._y1 - y0) > epsilon$2) this._ += "L" + x0 + "," + y0; - if (!r) return; - this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`; - } - rect(x, y, w, h) { - this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`; - } - value() { - return this._ || null; - } -} - -class Polygon { - constructor() { - this._ = []; - } - moveTo(x, y) { - this._.push([x, y]); - } - closePath() { - this._.push(this._[0].slice()); - } - lineTo(x, y) { - this._.push([x, y]); - } - value() { - return this._.length ? this._ : null; - } -} - -class Voronoi { - constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) { - if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error("invalid bounds"); - this.delaunay = delaunay; - this._circumcenters = new Float64Array(delaunay.points.length * 2); - this.vectors = new Float64Array(delaunay.points.length * 2); - this.xmax = xmax, this.xmin = xmin; - this.ymax = ymax, this.ymin = ymin; - this._init(); - } - update() { - this.delaunay.update(); - this._init(); - return this; - } - _init() { - const {delaunay: {points, hull, triangles}, vectors} = this; - let bx, by; // lazily computed barycenter of the hull - - // Compute circumcenters. - const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2); - for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) { - const t1 = triangles[i] * 2; - const t2 = triangles[i + 1] * 2; - const t3 = triangles[i + 2] * 2; - const x1 = points[t1]; - const y1 = points[t1 + 1]; - const x2 = points[t2]; - const y2 = points[t2 + 1]; - const x3 = points[t3]; - const y3 = points[t3 + 1]; - - const dx = x2 - x1; - const dy = y2 - y1; - const ex = x3 - x1; - const ey = y3 - y1; - const ab = (dx * ey - dy * ex) * 2; - - if (Math.abs(ab) < 1e-9) { - // For a degenerate triangle, the circumcenter is at the infinity, in a - // direction orthogonal to the halfedge and away from the “center” of - // the diagram , defined as the hull’s barycenter. - if (bx === undefined) { - bx = by = 0; - for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1]; - bx /= hull.length, by /= hull.length; - } - const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex); - x = (x1 + x3) / 2 - a * ey; - y = (y1 + y3) / 2 + a * ex; - } else { - const d = 1 / ab; - const bl = dx * dx + dy * dy; - const cl = ex * ex + ey * ey; - x = x1 + (ey * bl - dy * cl) * d; - y = y1 + (dx * cl - ex * bl) * d; - } - circumcenters[j] = x; - circumcenters[j + 1] = y; - } - - // Compute exterior cell rays. - let h = hull[hull.length - 1]; - let p0, p1 = h * 4; - let x0, x1 = points[2 * h]; - let y0, y1 = points[2 * h + 1]; - vectors.fill(0); - for (let i = 0; i < hull.length; ++i) { - h = hull[i]; - p0 = p1, x0 = x1, y0 = y1; - p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1]; - vectors[p0 + 2] = vectors[p1] = y0 - y1; - vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0; - } - } - render(context) { - const buffer = context == null ? context = new Path : undefined; - const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this; - if (hull.length <= 1) return null; - for (let i = 0, n = halfedges.length; i < n; ++i) { - const j = halfedges[i]; - if (j < i) continue; - const ti = Math.floor(i / 3) * 2; - const tj = Math.floor(j / 3) * 2; - const xi = circumcenters[ti]; - const yi = circumcenters[ti + 1]; - const xj = circumcenters[tj]; - const yj = circumcenters[tj + 1]; - this._renderSegment(xi, yi, xj, yj, context); - } - let h0, h1 = hull[hull.length - 1]; - for (let i = 0; i < hull.length; ++i) { - h0 = h1, h1 = hull[i]; - const t = Math.floor(inedges[h1] / 3) * 2; - const x = circumcenters[t]; - const y = circumcenters[t + 1]; - const v = h0 * 4; - const p = this._project(x, y, vectors[v + 2], vectors[v + 3]); - if (p) this._renderSegment(x, y, p[0], p[1], context); - } - return buffer && buffer.value(); - } - renderBounds(context) { - const buffer = context == null ? context = new Path : undefined; - context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin); - return buffer && buffer.value(); - } - renderCell(i, context) { - const buffer = context == null ? context = new Path : undefined; - const points = this._clip(i); - if (points === null || !points.length) return; - context.moveTo(points[0], points[1]); - let n = points.length; - while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2; - for (let i = 2; i < n; i += 2) { - if (points[i] !== points[i-2] || points[i+1] !== points[i-1]) - context.lineTo(points[i], points[i + 1]); - } - context.closePath(); - return buffer && buffer.value(); - } - *cellPolygons() { - const {delaunay: {points}} = this; - for (let i = 0, n = points.length / 2; i < n; ++i) { - const cell = this.cellPolygon(i); - if (cell) cell.index = i, yield cell; - } - } - cellPolygon(i) { - const polygon = new Polygon; - this.renderCell(i, polygon); - return polygon.value(); - } - _renderSegment(x0, y0, x1, y1, context) { - let S; - const c0 = this._regioncode(x0, y0); - const c1 = this._regioncode(x1, y1); - if (c0 === 0 && c1 === 0) { - context.moveTo(x0, y0); - context.lineTo(x1, y1); - } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) { - context.moveTo(S[0], S[1]); - context.lineTo(S[2], S[3]); - } - } - contains(i, x, y) { - if ((x = +x, x !== x) || (y = +y, y !== y)) return false; - return this.delaunay._step(i, x, y) === i; - } - *neighbors(i) { - const ci = this._clip(i); - if (ci) for (const j of this.delaunay.neighbors(i)) { - const cj = this._clip(j); - // find the common edge - if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) { - for (let aj = 0, lj = cj.length; aj < lj; aj += 2) { - if (ci[ai] === cj[aj] - && ci[ai + 1] === cj[aj + 1] - && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj] - && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) { - yield j; - break loop; - } - } - } - } - } - _cell(i) { - const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this; - const e0 = inedges[i]; - if (e0 === -1) return null; // coincident point - const points = []; - let e = e0; - do { - const t = Math.floor(e / 3); - points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]); - e = e % 3 === 2 ? e - 2 : e + 1; - if (triangles[e] !== i) break; // bad triangulation - e = halfedges[e]; - } while (e !== e0 && e !== -1); - return points; - } - _clip(i) { - // degenerate case (1 valid point: return the box) - if (i === 0 && this.delaunay.hull.length === 1) { - return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin]; - } - const points = this._cell(i); - if (points === null) return null; - const {vectors: V} = this; - const v = i * 4; - return this._simplify(V[v] || V[v + 1] - ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3]) - : this._clipFinite(i, points)); - } - _clipFinite(i, points) { - const n = points.length; - let P = null; - let x0, y0, x1 = points[n - 2], y1 = points[n - 1]; - let c0, c1 = this._regioncode(x1, y1); - let e0, e1 = 0; - for (let j = 0; j < n; j += 2) { - x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1]; - c0 = c1, c1 = this._regioncode(x1, y1); - if (c0 === 0 && c1 === 0) { - e0 = e1, e1 = 0; - if (P) P.push(x1, y1); - else P = [x1, y1]; - } else { - let S, sx0, sy0, sx1, sy1; - if (c0 === 0) { - if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue; - [sx0, sy0, sx1, sy1] = S; - } else { - if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue; - [sx1, sy1, sx0, sy0] = S; - e0 = e1, e1 = this._edgecode(sx0, sy0); - if (e0 && e1) this._edge(i, e0, e1, P, P.length); - if (P) P.push(sx0, sy0); - else P = [sx0, sy0]; - } - e0 = e1, e1 = this._edgecode(sx1, sy1); - if (e0 && e1) this._edge(i, e0, e1, P, P.length); - if (P) P.push(sx1, sy1); - else P = [sx1, sy1]; - } - } - if (P) { - e0 = e1, e1 = this._edgecode(P[0], P[1]); - if (e0 && e1) this._edge(i, e0, e1, P, P.length); - } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) { - return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin]; - } - return P; - } - _clipSegment(x0, y0, x1, y1, c0, c1) { - // for more robustness, always consider the segment in the same order - const flip = c0 < c1; - if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0]; - while (true) { - if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1]; - if (c0 & c1) return null; - let x, y, c = c0 || c1; - if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax; - else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin; - else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax; - else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin; - if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0); - else x1 = x, y1 = y, c1 = this._regioncode(x1, y1); - } - } - _clipInfinite(i, points, vx0, vy0, vxn, vyn) { - let P = Array.from(points), p; - if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]); - if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]); - if (P = this._clipFinite(i, P)) { - for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) { - c0 = c1, c1 = this._edgecode(P[j], P[j + 1]); - if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length; - } - } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) { - P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax]; - } - return P; - } - _edge(i, e0, e1, P, j) { - while (e0 !== e1) { - let x, y; - switch (e0) { - case 0b0101: e0 = 0b0100; continue; // top-left - case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top - case 0b0110: e0 = 0b0010; continue; // top-right - case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right - case 0b1010: e0 = 0b1000; continue; // bottom-right - case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom - case 0b1001: e0 = 0b0001; continue; // bottom-left - case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left - } - // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are - // undefined, the conditional statement will be executed. - if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) { - P.splice(j, 0, x, y), j += 2; - } - } - return j; - } - _project(x0, y0, vx, vy) { - let t = Infinity, c, x, y; - if (vy < 0) { // top - if (y0 <= this.ymin) return null; - if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx; - } else if (vy > 0) { // bottom - if (y0 >= this.ymax) return null; - if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx; - } - if (vx > 0) { // right - if (x0 >= this.xmax) return null; - if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy; - } else if (vx < 0) { // left - if (x0 <= this.xmin) return null; - if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy; - } - return [x, y]; - } - _edgecode(x, y) { - return (x === this.xmin ? 0b0001 - : x === this.xmax ? 0b0010 : 0b0000) - | (y === this.ymin ? 0b0100 - : y === this.ymax ? 0b1000 : 0b0000); - } - _regioncode(x, y) { - return (x < this.xmin ? 0b0001 - : x > this.xmax ? 0b0010 : 0b0000) - | (y < this.ymin ? 0b0100 - : y > this.ymax ? 0b1000 : 0b0000); - } - _simplify(P) { - if (P && P.length > 4) { - for (let i = 0; i < P.length; i+= 2) { - const j = (i + 2) % P.length, k = (i + 4) % P.length; - if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) { - P.splice(j, 2), i -= 2; - } - } - if (!P.length) P = null; - } - return P; - } -} - -const tau$2 = 2 * Math.PI, pow$2 = Math.pow; - -function pointX(p) { - return p[0]; -} - -function pointY(p) { - return p[1]; -} - -// A triangulation is collinear if all its triangles have a non-null area -function collinear(d) { - const {triangles, coords} = d; - for (let i = 0; i < triangles.length; i += 3) { - const a = 2 * triangles[i], - b = 2 * triangles[i + 1], - c = 2 * triangles[i + 2], - cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1]) - - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]); - if (cross > 1e-10) return false; - } - return true; -} - -function jitter(x, y, r) { - return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r]; -} - -class Delaunay { - static from(points, fx = pointX, fy = pointY, that) { - return new Delaunay("length" in points - ? flatArray(points, fx, fy, that) - : Float64Array.from(flatIterable(points, fx, fy, that))); - } - constructor(points) { - this._delaunator = new Delaunator(points); - this.inedges = new Int32Array(points.length / 2); - this._hullIndex = new Int32Array(points.length / 2); - this.points = this._delaunator.coords; - this._init(); - } - update() { - this._delaunator.update(); - this._init(); - return this; - } - _init() { - const d = this._delaunator, points = this.points; - - // check for collinear - if (d.hull && d.hull.length > 2 && collinear(d)) { - this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i) - .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors - const e = this.collinear[0], f = this.collinear[this.collinear.length - 1], - bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ], - r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]); - for (let i = 0, n = points.length / 2; i < n; ++i) { - const p = jitter(points[2 * i], points[2 * i + 1], r); - points[2 * i] = p[0]; - points[2 * i + 1] = p[1]; - } - this._delaunator = new Delaunator(points); - } else { - delete this.collinear; - } - - const halfedges = this.halfedges = this._delaunator.halfedges; - const hull = this.hull = this._delaunator.hull; - const triangles = this.triangles = this._delaunator.triangles; - const inedges = this.inedges.fill(-1); - const hullIndex = this._hullIndex.fill(-1); - - // Compute an index from each point to an (arbitrary) incoming halfedge - // Used to give the first neighbor of each point; for this reason, - // on the hull we give priority to exterior halfedges - for (let e = 0, n = halfedges.length; e < n; ++e) { - const p = triangles[e % 3 === 2 ? e - 2 : e + 1]; - if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e; - } - for (let i = 0, n = hull.length; i < n; ++i) { - hullIndex[hull[i]] = i; - } - - // degenerate case: 1 or 2 (distinct) points - if (hull.length <= 2 && hull.length > 0) { - this.triangles = new Int32Array(3).fill(-1); - this.halfedges = new Int32Array(3).fill(-1); - this.triangles[0] = hull[0]; - inedges[hull[0]] = 1; - if (hull.length === 2) { - inedges[hull[1]] = 0; - this.triangles[1] = hull[1]; - this.triangles[2] = hull[1]; - } - } - } - voronoi(bounds) { - return new Voronoi(this, bounds); - } - *neighbors(i) { - const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this; - - // degenerate case with several collinear points - if (collinear) { - const l = collinear.indexOf(i); - if (l > 0) yield collinear[l - 1]; - if (l < collinear.length - 1) yield collinear[l + 1]; - return; - } - - const e0 = inedges[i]; - if (e0 === -1) return; // coincident point - let e = e0, p0 = -1; - do { - yield p0 = triangles[e]; - e = e % 3 === 2 ? e - 2 : e + 1; - if (triangles[e] !== i) return; // bad triangulation - e = halfedges[e]; - if (e === -1) { - const p = hull[(_hullIndex[i] + 1) % hull.length]; - if (p !== p0) yield p; - return; - } - } while (e !== e0); - } - find(x, y, i = 0) { - if ((x = +x, x !== x) || (y = +y, y !== y)) return -1; - const i0 = i; - let c; - while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c; - return c; - } - _step(i, x, y) { - const {inedges, hull, _hullIndex, halfedges, triangles, points} = this; - if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1); - let c = i; - let dc = pow$2(x - points[i * 2], 2) + pow$2(y - points[i * 2 + 1], 2); - const e0 = inedges[i]; - let e = e0; - do { - let t = triangles[e]; - const dt = pow$2(x - points[t * 2], 2) + pow$2(y - points[t * 2 + 1], 2); - if (dt < dc) dc = dt, c = t; - e = e % 3 === 2 ? e - 2 : e + 1; - if (triangles[e] !== i) break; // bad triangulation - e = halfedges[e]; - if (e === -1) { - e = hull[(_hullIndex[i] + 1) % hull.length]; - if (e !== t) { - if (pow$2(x - points[e * 2], 2) + pow$2(y - points[e * 2 + 1], 2) < dc) return e; - } - break; - } - } while (e !== e0); - return c; - } - render(context) { - const buffer = context == null ? context = new Path : undefined; - const {points, halfedges, triangles} = this; - for (let i = 0, n = halfedges.length; i < n; ++i) { - const j = halfedges[i]; - if (j < i) continue; - const ti = triangles[i] * 2; - const tj = triangles[j] * 2; - context.moveTo(points[ti], points[ti + 1]); - context.lineTo(points[tj], points[tj + 1]); - } - this.renderHull(context); - return buffer && buffer.value(); - } - renderPoints(context, r) { - if (r === undefined && (!context || typeof context.moveTo !== "function")) r = context, context = null; - r = r == undefined ? 2 : +r; - const buffer = context == null ? context = new Path : undefined; - const {points} = this; - for (let i = 0, n = points.length; i < n; i += 2) { - const x = points[i], y = points[i + 1]; - context.moveTo(x + r, y); - context.arc(x, y, r, 0, tau$2); - } - return buffer && buffer.value(); - } - renderHull(context) { - const buffer = context == null ? context = new Path : undefined; - const {hull, points} = this; - const h = hull[0] * 2, n = hull.length; - context.moveTo(points[h], points[h + 1]); - for (let i = 1; i < n; ++i) { - const h = 2 * hull[i]; - context.lineTo(points[h], points[h + 1]); - } - context.closePath(); - return buffer && buffer.value(); - } - hullPolygon() { - const polygon = new Polygon; - this.renderHull(polygon); - return polygon.value(); - } - renderTriangle(i, context) { - const buffer = context == null ? context = new Path : undefined; - const {points, triangles} = this; - const t0 = triangles[i *= 3] * 2; - const t1 = triangles[i + 1] * 2; - const t2 = triangles[i + 2] * 2; - context.moveTo(points[t0], points[t0 + 1]); - context.lineTo(points[t1], points[t1 + 1]); - context.lineTo(points[t2], points[t2 + 1]); - context.closePath(); - return buffer && buffer.value(); - } - *trianglePolygons() { - const {triangles} = this; - for (let i = 0, n = triangles.length / 3; i < n; ++i) { - yield this.trianglePolygon(i); - } - } - trianglePolygon(i) { - const polygon = new Polygon; - this.renderTriangle(i, polygon); - return polygon.value(); - } -} - -function flatArray(points, fx, fy, that) { - const n = points.length; - const array = new Float64Array(n * 2); - for (let i = 0; i < n; ++i) { - const p = points[i]; - array[i * 2] = fx.call(that, p, i, points); - array[i * 2 + 1] = fy.call(that, p, i, points); - } - return array; -} - -function* flatIterable(points, fx, fy, that) { - let i = 0; - for (const p of points) { - yield fx.call(that, p, i, points); - yield fy.call(that, p, i, points); - ++i; - } -} - -var EOL = {}, - EOF = {}, - QUOTE = 34, - NEWLINE = 10, - RETURN = 13; - -function objectConverter(columns) { - return new Function("d", "return {" + columns.map(function(name, i) { - return JSON.stringify(name) + ": d[" + i + "] || \"\""; - }).join(",") + "}"); -} - -function customConverter(columns, f) { - var object = objectConverter(columns); - return function(row, i) { - return f(object(row), i, columns); - }; -} - -// Compute unique columns in order of discovery. -function inferColumns(rows) { - var columnSet = Object.create(null), - columns = []; - - rows.forEach(function(row) { - for (var column in row) { - if (!(column in columnSet)) { - columns.push(columnSet[column] = column); - } - } - }); - - return columns; -} - -function pad$1(value, width) { - var s = value + "", length = s.length; - return length < width ? new Array(width - length + 1).join(0) + s : s; -} - -function formatYear$1(year) { - return year < 0 ? "-" + pad$1(-year, 6) - : year > 9999 ? "+" + pad$1(year, 6) - : pad$1(year, 4); -} - -function formatDate(date) { - var hours = date.getUTCHours(), - minutes = date.getUTCMinutes(), - seconds = date.getUTCSeconds(), - milliseconds = date.getUTCMilliseconds(); - return isNaN(date) ? "Invalid Date" - : formatYear$1(date.getUTCFullYear()) + "-" + pad$1(date.getUTCMonth() + 1, 2) + "-" + pad$1(date.getUTCDate(), 2) - + (milliseconds ? "T" + pad$1(hours, 2) + ":" + pad$1(minutes, 2) + ":" + pad$1(seconds, 2) + "." + pad$1(milliseconds, 3) + "Z" - : seconds ? "T" + pad$1(hours, 2) + ":" + pad$1(minutes, 2) + ":" + pad$1(seconds, 2) + "Z" - : minutes || hours ? "T" + pad$1(hours, 2) + ":" + pad$1(minutes, 2) + "Z" - : ""); -} - -function dsvFormat(delimiter) { - var reFormat = new RegExp("[\"" + delimiter + "\n\r]"), - DELIMITER = delimiter.charCodeAt(0); - - function parse(text, f) { - var convert, columns, rows = parseRows(text, function(row, i) { - if (convert) return convert(row, i - 1); - columns = row, convert = f ? customConverter(row, f) : objectConverter(row); - }); - rows.columns = columns || []; - return rows; - } - - function parseRows(text, f) { - var rows = [], // output rows - N = text.length, - I = 0, // current character index - n = 0, // current line number - t, // current token - eof = N <= 0, // current token followed by EOF? - eol = false; // current token followed by EOL? - - // Strip the trailing newline. - if (text.charCodeAt(N - 1) === NEWLINE) --N; - if (text.charCodeAt(N - 1) === RETURN) --N; - - function token() { - if (eof) return EOF; - if (eol) return eol = false, EOL; - - // Unescape quotes. - var i, j = I, c; - if (text.charCodeAt(j) === QUOTE) { - while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE); - if ((i = I) >= N) eof = true; - else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true; - else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } - return text.slice(j + 1, i - 1).replace(/""/g, "\""); - } - - // Find next delimiter or newline. - while (I < N) { - if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true; - else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } - else if (c !== DELIMITER) continue; - return text.slice(j, i); - } - - // Return last token before EOF. - return eof = true, text.slice(j, N); - } - - while ((t = token()) !== EOF) { - var row = []; - while (t !== EOL && t !== EOF) row.push(t), t = token(); - if (f && (row = f(row, n++)) == null) continue; - rows.push(row); - } - - return rows; - } - - function preformatBody(rows, columns) { - return rows.map(function(row) { - return columns.map(function(column) { - return formatValue(row[column]); - }).join(delimiter); - }); - } - - function format(rows, columns) { - if (columns == null) columns = inferColumns(rows); - return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join("\n"); - } - - function formatBody(rows, columns) { - if (columns == null) columns = inferColumns(rows); - return preformatBody(rows, columns).join("\n"); - } - - function formatRows(rows) { - return rows.map(formatRow).join("\n"); - } - - function formatRow(row) { - return row.map(formatValue).join(delimiter); - } - - function formatValue(value) { - return value == null ? "" - : value instanceof Date ? formatDate(value) - : reFormat.test(value += "") ? "\"" + value.replace(/"/g, "\"\"") + "\"" - : value; - } - - return { - parse: parse, - parseRows: parseRows, - format: format, - formatBody: formatBody, - formatRows: formatRows, - formatRow: formatRow, - formatValue: formatValue - }; -} - -var csv$1 = dsvFormat(","); - -var csvParse = csv$1.parse; -var csvParseRows = csv$1.parseRows; -var csvFormat = csv$1.format; -var csvFormatBody = csv$1.formatBody; -var csvFormatRows = csv$1.formatRows; -var csvFormatRow = csv$1.formatRow; -var csvFormatValue = csv$1.formatValue; - -var tsv$1 = dsvFormat("\t"); - -var tsvParse = tsv$1.parse; -var tsvParseRows = tsv$1.parseRows; -var tsvFormat = tsv$1.format; -var tsvFormatBody = tsv$1.formatBody; -var tsvFormatRows = tsv$1.formatRows; -var tsvFormatRow = tsv$1.formatRow; -var tsvFormatValue = tsv$1.formatValue; - -function autoType(object) { - for (var key in object) { - var value = object[key].trim(), number, m; - if (!value) value = null; - else if (value === "true") value = true; - else if (value === "false") value = false; - else if (value === "NaN") value = NaN; - else if (!isNaN(number = +value)) value = number; - else if (m = value.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)) { - if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, "/").replace(/T/, " "); - value = new Date(value); - } - else continue; - object[key] = value; - } - return object; -} - -// https://github.com/d3/d3-dsv/issues/45 -const fixtz = new Date("2019-01-01T00:00").getHours() || new Date("2019-07-01T00:00").getHours(); - -function responseBlob(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.blob(); -} - -function blob(input, init) { - return fetch(input, init).then(responseBlob); -} - -function responseArrayBuffer(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.arrayBuffer(); -} - -function buffer(input, init) { - return fetch(input, init).then(responseArrayBuffer); -} - -function responseText(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.text(); -} - -function text(input, init) { - return fetch(input, init).then(responseText); -} - -function dsvParse(parse) { - return function(input, init, row) { - if (arguments.length === 2 && typeof init === "function") row = init, init = undefined; - return text(input, init).then(function(response) { - return parse(response, row); - }); - }; -} - -function dsv(delimiter, input, init, row) { - if (arguments.length === 3 && typeof init === "function") row = init, init = undefined; - var format = dsvFormat(delimiter); - return text(input, init).then(function(response) { - return format.parse(response, row); - }); -} - -var csv = dsvParse(csvParse); -var tsv = dsvParse(tsvParse); - -function image(input, init) { - return new Promise(function(resolve, reject) { - var image = new Image; - for (var key in init) image[key] = init[key]; - image.onerror = reject; - image.onload = function() { resolve(image); }; - image.src = input; - }); -} - -function responseJson(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - if (response.status === 204 || response.status === 205) return; - return response.json(); -} - -function json(input, init) { - return fetch(input, init).then(responseJson); -} - -function parser(type) { - return (input, init) => text(input, init) - .then(text => (new DOMParser).parseFromString(text, type)); -} - -var xml = parser("application/xml"); - -var html = parser("text/html"); - -var svg = parser("image/svg+xml"); - -function center(x, y) { - var nodes, strength = 1; - - if (x == null) x = 0; - if (y == null) y = 0; - - function force() { - var i, - n = nodes.length, - node, - sx = 0, - sy = 0; - - for (i = 0; i < n; ++i) { - node = nodes[i], sx += node.x, sy += node.y; - } - - for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) { - node = nodes[i], node.x -= sx, node.y -= sy; - } - } - - force.initialize = function(_) { - nodes = _; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - return force; -} - -function tree_add(d) { - const x = +this._x.call(null, d), - y = +this._y.call(null, d); - return add(this.cover(x, y), x, y, d); -} - -function add(tree, x, y, d) { - if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points - - var parent, - node = tree._root, - leaf = {data: d}, - x0 = tree._x0, - y0 = tree._y0, - x1 = tree._x1, - y1 = tree._y1, - xm, - ym, - xp, - yp, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return tree._root = leaf, tree; - - // Find the existing leaf for the new point, or add it. - while (node.length) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; - } - - // Is the new point is exactly coincident with the existing point? - xp = +tree._x.call(null, node.data); - yp = +tree._y.call(null, node.data); - if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; - - // Otherwise, split the leaf node until the old and new point are separated. - do { - parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm))); - return parent[j] = node, parent[i] = leaf, tree; -} - -function addAll(data) { - var d, i, n = data.length, - x, - y, - xz = new Array(n), - yz = new Array(n), - x0 = Infinity, - y0 = Infinity, - x1 = -Infinity, - y1 = -Infinity; - - // Compute the points and their extent. - for (i = 0; i < n; ++i) { - if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; - xz[i] = x; - yz[i] = y; - if (x < x0) x0 = x; - if (x > x1) x1 = x; - if (y < y0) y0 = y; - if (y > y1) y1 = y; - } - - // If there were no (valid) points, abort. - if (x0 > x1 || y0 > y1) return this; - - // Expand the tree to cover the new points. - this.cover(x0, y0).cover(x1, y1); - - // Add the new points. - for (i = 0; i < n; ++i) { - add(this, xz[i], yz[i], data[i]); - } - - return this; -} - -function tree_cover(x, y) { - if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points - - var x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1; - - // If the quadtree has no extent, initialize them. - // Integer extent are necessary so that if we later double the extent, - // the existing quadrant boundaries don’t change due to floating point error! - if (isNaN(x0)) { - x1 = (x0 = Math.floor(x)) + 1; - y1 = (y0 = Math.floor(y)) + 1; - } - - // Otherwise, double repeatedly to cover. - else { - var z = x1 - x0 || 1, - node = this._root, - parent, - i; - - while (x0 > x || x >= x1 || y0 > y || y >= y1) { - i = (y < y0) << 1 | (x < x0); - parent = new Array(4), parent[i] = node, node = parent, z *= 2; - switch (i) { - case 0: x1 = x0 + z, y1 = y0 + z; break; - case 1: x0 = x1 - z, y1 = y0 + z; break; - case 2: x1 = x0 + z, y0 = y1 - z; break; - case 3: x0 = x1 - z, y0 = y1 - z; break; - } - } - - if (this._root && this._root.length) this._root = node; - } - - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - return this; -} - -function tree_data() { - var data = []; - this.visit(function(node) { - if (!node.length) do data.push(node.data); while (node = node.next) - }); - return data; -} - -function tree_extent(_) { - return arguments.length - ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) - : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]]; -} - -function Quad(node, x0, y0, x1, y1) { - this.node = node; - this.x0 = x0; - this.y0 = y0; - this.x1 = x1; - this.y1 = y1; -} - -function tree_find(x, y, radius) { - var data, - x0 = this._x0, - y0 = this._y0, - x1, - y1, - x2, - y2, - x3 = this._x1, - y3 = this._y1, - quads = [], - node = this._root, - q, - i; - - if (node) quads.push(new Quad(node, x0, y0, x3, y3)); - if (radius == null) radius = Infinity; - else { - x0 = x - radius, y0 = y - radius; - x3 = x + radius, y3 = y + radius; - radius *= radius; - } - - while (q = quads.pop()) { - - // Stop searching if this quadrant can’t contain a closer node. - if (!(node = q.node) - || (x1 = q.x0) > x3 - || (y1 = q.y0) > y3 - || (x2 = q.x1) < x0 - || (y2 = q.y1) < y0) continue; - - // Bisect the current quadrant. - if (node.length) { - var xm = (x1 + x2) / 2, - ym = (y1 + y2) / 2; - - quads.push( - new Quad(node[3], xm, ym, x2, y2), - new Quad(node[2], x1, ym, xm, y2), - new Quad(node[1], xm, y1, x2, ym), - new Quad(node[0], x1, y1, xm, ym) - ); - - // Visit the closest quadrant first. - if (i = (y >= ym) << 1 | (x >= xm)) { - q = quads[quads.length - 1]; - quads[quads.length - 1] = quads[quads.length - 1 - i]; - quads[quads.length - 1 - i] = q; - } - } - - // Visit this point. (Visiting coincident points isn’t necessary!) - else { - var dx = x - +this._x.call(null, node.data), - dy = y - +this._y.call(null, node.data), - d2 = dx * dx + dy * dy; - if (d2 < radius) { - var d = Math.sqrt(radius = d2); - x0 = x - d, y0 = y - d; - x3 = x + d, y3 = y + d; - data = node.data; - } - } - } - - return data; -} - -function tree_remove(d) { - if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points - - var parent, - node = this._root, - retainer, - previous, - next, - x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1, - x, - y, - xm, - ym, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return this; - - // Find the leaf node for the point. - // While descending, also retain the deepest parent with a non-removed sibling. - if (node.length) while (true) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (!(parent = node, node = node[i = bottom << 1 | right])) return this; - if (!node.length) break; - if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i; - } - - // Find the point to remove. - while (node.data !== d) if (!(previous = node, node = node.next)) return this; - if (next = node.next) delete node.next; - - // If there are multiple coincident points, remove just the point. - if (previous) return (next ? previous.next = next : delete previous.next), this; - - // If this is the root point, remove it. - if (!parent) return this._root = next, this; - - // Remove this leaf. - next ? parent[i] = next : delete parent[i]; - - // If the parent now contains exactly one leaf, collapse superfluous parents. - if ((node = parent[0] || parent[1] || parent[2] || parent[3]) - && node === (parent[3] || parent[2] || parent[1] || parent[0]) - && !node.length) { - if (retainer) retainer[j] = node; - else this._root = node; - } - - return this; -} - -function removeAll(data) { - for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); - return this; -} - -function tree_root() { - return this._root; -} - -function tree_size() { - var size = 0; - this.visit(function(node) { - if (!node.length) do ++size; while (node = node.next) - }); - return size; -} - -function tree_visit(callback) { - var quads = [], q, node = this._root, child, x0, y0, x1, y1; - if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { - var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - } - } - return this; -} - -function tree_visitAfter(callback) { - var quads = [], next = [], q; - if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - var node = q.node; - if (node.length) { - var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - } - next.push(q); - } - while (q = next.pop()) { - callback(q.node, q.x0, q.y0, q.x1, q.y1); - } - return this; -} - -function defaultX(d) { - return d[0]; -} - -function tree_x(_) { - return arguments.length ? (this._x = _, this) : this._x; -} - -function defaultY(d) { - return d[1]; -} - -function tree_y(_) { - return arguments.length ? (this._y = _, this) : this._y; -} - -function quadtree(nodes, x, y) { - var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN); - return nodes == null ? tree : tree.addAll(nodes); -} - -function Quadtree(x, y, x0, y0, x1, y1) { - this._x = x; - this._y = y; - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - this._root = undefined; -} - -function leaf_copy(leaf) { - var copy = {data: leaf.data}, next = copy; - while (leaf = leaf.next) next = next.next = {data: leaf.data}; - return copy; -} - -var treeProto = quadtree.prototype = Quadtree.prototype; - -treeProto.copy = function() { - var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), - node = this._root, - nodes, - child; - - if (!node) return copy; - - if (!node.length) return copy._root = leaf_copy(node), copy; - - nodes = [{source: node, target: copy._root = new Array(4)}]; - while (node = nodes.pop()) { - for (var i = 0; i < 4; ++i) { - if (child = node.source[i]) { - if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)}); - else node.target[i] = leaf_copy(child); - } - } - } - - return copy; -}; - -treeProto.add = tree_add; -treeProto.addAll = addAll; -treeProto.cover = tree_cover; -treeProto.data = tree_data; -treeProto.extent = tree_extent; -treeProto.find = tree_find; -treeProto.remove = tree_remove; -treeProto.removeAll = removeAll; -treeProto.root = tree_root; -treeProto.size = tree_size; -treeProto.visit = tree_visit; -treeProto.visitAfter = tree_visitAfter; -treeProto.x = tree_x; -treeProto.y = tree_y; - -function constant$4(x) { - return function() { - return x; - }; -} - -function jiggle(random) { - return (random() - 0.5) * 1e-6; -} - -function x$5(d) { - return d.x + d.vx; -} - -function y$4(d) { - return d.y + d.vy; -} - -function collide(radius) { - var nodes, - radii, - random, - strength = 1, - iterations = 1; - - if (typeof radius !== "function") radius = constant$4(radius == null ? 1 : +radius); - - function force() { - var i, n = nodes.length, - tree, - node, - xi, - yi, - ri, - ri2; - - for (var k = 0; k < iterations; ++k) { - tree = quadtree(nodes, x$5, y$4).visitAfter(prepare); - for (i = 0; i < n; ++i) { - node = nodes[i]; - ri = radii[node.index], ri2 = ri * ri; - xi = node.x + node.vx; - yi = node.y + node.vy; - tree.visit(apply); - } - } - - function apply(quad, x0, y0, x1, y1) { - var data = quad.data, rj = quad.r, r = ri + rj; - if (data) { - if (data.index > node.index) { - var x = xi - data.x - data.vx, - y = yi - data.y - data.vy, - l = x * x + y * y; - if (l < r * r) { - if (x === 0) x = jiggle(random), l += x * x; - if (y === 0) y = jiggle(random), l += y * y; - l = (r - (l = Math.sqrt(l))) / l * strength; - node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj)); - node.vy += (y *= l) * r; - data.vx -= x * (r = 1 - r); - data.vy -= y * r; - } - } - return; - } - return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r; - } - } - - function prepare(quad) { - if (quad.data) return quad.r = radii[quad.data.index]; - for (var i = quad.r = 0; i < 4; ++i) { - if (quad[i] && quad[i].r > quad.r) { - quad.r = quad[i].r; - } - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - radii = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes); - } - - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : radius; - }; - - return force; -} - -function index$3(d) { - return d.index; -} - -function find(nodeById, nodeId) { - var node = nodeById.get(nodeId); - if (!node) throw new Error("node not found: " + nodeId); - return node; -} - -function link$2(links) { - var id = index$3, - strength = defaultStrength, - strengths, - distance = constant$4(30), - distances, - nodes, - count, - bias, - random, - iterations = 1; - - if (links == null) links = []; - - function defaultStrength(link) { - return 1 / Math.min(count[link.source.index], count[link.target.index]); - } - - function force(alpha) { - for (var k = 0, n = links.length; k < iterations; ++k) { - for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) { - link = links[i], source = link.source, target = link.target; - x = target.x + target.vx - source.x - source.vx || jiggle(random); - y = target.y + target.vy - source.y - source.vy || jiggle(random); - l = Math.sqrt(x * x + y * y); - l = (l - distances[i]) / l * alpha * strengths[i]; - x *= l, y *= l; - target.vx -= x * (b = bias[i]); - target.vy -= y * b; - source.vx += x * (b = 1 - b); - source.vy += y * b; - } - } - } - - function initialize() { - if (!nodes) return; - - var i, - n = nodes.length, - m = links.length, - nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])), - link; - - for (i = 0, count = new Array(n); i < m; ++i) { - link = links[i], link.index = i; - if (typeof link.source !== "object") link.source = find(nodeById, link.source); - if (typeof link.target !== "object") link.target = find(nodeById, link.target); - count[link.source.index] = (count[link.source.index] || 0) + 1; - count[link.target.index] = (count[link.target.index] || 0) + 1; - } - - for (i = 0, bias = new Array(m); i < m; ++i) { - link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]); - } - - strengths = new Array(m), initializeStrength(); - distances = new Array(m), initializeDistance(); - } - - function initializeStrength() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - strengths[i] = +strength(links[i], i, links); - } - } - - function initializeDistance() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - distances[i] = +distance(links[i], i, links); - } - } - - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - - force.links = function(_) { - return arguments.length ? (links = _, initialize(), force) : links; - }; - - force.id = function(_) { - return arguments.length ? (id = _, force) : id; - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$4(+_), initializeStrength(), force) : strength; - }; - - force.distance = function(_) { - return arguments.length ? (distance = typeof _ === "function" ? _ : constant$4(+_), initializeDistance(), force) : distance; - }; - - return force; -} - -// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use -const a$3 = 1664525; -const c$5 = 1013904223; -const m$3 = 4294967296; // 2^32 - -function lcg$2() { - let s = 1; - return () => (s = (a$3 * s + c$5) % m$3) / m$3; -} - -function x$4(d) { - return d.x; -} - -function y$3(d) { - return d.y; -} - -var initialRadius = 10, - initialAngle = Math.PI * (3 - Math.sqrt(5)); - -function simulation(nodes) { - var simulation, - alpha = 1, - alphaMin = 0.001, - alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), - alphaTarget = 0, - velocityDecay = 0.6, - forces = new Map(), - stepper = timer(step), - event = dispatch("tick", "end"), - random = lcg$2(); - - if (nodes == null) nodes = []; - - function step() { - tick(); - event.call("tick", simulation); - if (alpha < alphaMin) { - stepper.stop(); - event.call("end", simulation); - } - } - - function tick(iterations) { - var i, n = nodes.length, node; - - if (iterations === undefined) iterations = 1; - - for (var k = 0; k < iterations; ++k) { - alpha += (alphaTarget - alpha) * alphaDecay; - - forces.forEach(function(force) { - force(alpha); - }); - - for (i = 0; i < n; ++i) { - node = nodes[i]; - if (node.fx == null) node.x += node.vx *= velocityDecay; - else node.x = node.fx, node.vx = 0; - if (node.fy == null) node.y += node.vy *= velocityDecay; - else node.y = node.fy, node.vy = 0; - } - } - - return simulation; - } - - function initializeNodes() { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.index = i; - if (node.fx != null) node.x = node.fx; - if (node.fy != null) node.y = node.fy; - if (isNaN(node.x) || isNaN(node.y)) { - var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle; - node.x = radius * Math.cos(angle); - node.y = radius * Math.sin(angle); - } - if (isNaN(node.vx) || isNaN(node.vy)) { - node.vx = node.vy = 0; - } - } - } - - function initializeForce(force) { - if (force.initialize) force.initialize(nodes, random); - return force; - } - - initializeNodes(); - - return simulation = { - tick: tick, - - restart: function() { - return stepper.restart(step), simulation; - }, - - stop: function() { - return stepper.stop(), simulation; - }, - - nodes: function(_) { - return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes; - }, - - alpha: function(_) { - return arguments.length ? (alpha = +_, simulation) : alpha; - }, - - alphaMin: function(_) { - return arguments.length ? (alphaMin = +_, simulation) : alphaMin; - }, - - alphaDecay: function(_) { - return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; - }, - - alphaTarget: function(_) { - return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; - }, - - velocityDecay: function(_) { - return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; - }, - - randomSource: function(_) { - return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random; - }, - - force: function(name, _) { - return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name); - }, - - find: function(x, y, radius) { - var i = 0, - n = nodes.length, - dx, - dy, - d2, - node, - closest; - - if (radius == null) radius = Infinity; - else radius *= radius; - - for (i = 0; i < n; ++i) { - node = nodes[i]; - dx = x - node.x; - dy = y - node.y; - d2 = dx * dx + dy * dy; - if (d2 < radius) closest = node, radius = d2; - } - - return closest; - }, - - on: function(name, _) { - return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); - } - }; -} - -function manyBody() { - var nodes, - node, - random, - alpha, - strength = constant$4(-30), - strengths, - distanceMin2 = 1, - distanceMax2 = Infinity, - theta2 = 0.81; - - function force(_) { - var i, n = nodes.length, tree = quadtree(nodes, x$4, y$3).visitAfter(accumulate); - for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply); - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - strengths = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes); - } - - function accumulate(quad) { - var strength = 0, q, c, weight = 0, x, y, i; - - // For internal nodes, accumulate forces from child quadrants. - if (quad.length) { - for (x = y = i = 0; i < 4; ++i) { - if ((q = quad[i]) && (c = Math.abs(q.value))) { - strength += q.value, weight += c, x += c * q.x, y += c * q.y; - } - } - quad.x = x / weight; - quad.y = y / weight; - } - - // For leaf nodes, accumulate forces from coincident quadrants. - else { - q = quad; - q.x = q.data.x; - q.y = q.data.y; - do strength += strengths[q.data.index]; - while (q = q.next); - } - - quad.value = strength; - } - - function apply(quad, x1, _, x2) { - if (!quad.value) return true; - - var x = quad.x - node.x, - y = quad.y - node.y, - w = x2 - x1, - l = x * x + y * y; - - // Apply the Barnes-Hut approximation if possible. - // Limit forces for very close nodes; randomize direction if coincident. - if (w * w / theta2 < l) { - if (l < distanceMax2) { - if (x === 0) x = jiggle(random), l += x * x; - if (y === 0) y = jiggle(random), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - node.vx += x * quad.value * alpha / l; - node.vy += y * quad.value * alpha / l; - } - return true; - } - - // Otherwise, process points directly. - else if (quad.length || l >= distanceMax2) return; - - // Limit forces for very close nodes; randomize direction if coincident. - if (quad.data !== node || quad.next) { - if (x === 0) x = jiggle(random), l += x * x; - if (y === 0) y = jiggle(random), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - } - - do if (quad.data !== node) { - w = strengths[quad.data.index] * alpha / l; - node.vx += x * w; - node.vy += y * w; - } while (quad = quad.next); - } - - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : strength; - }; - - force.distanceMin = function(_) { - return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); - }; - - force.distanceMax = function(_) { - return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); - }; - - force.theta = function(_) { - return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); - }; - - return force; -} - -function radial$1(radius, x, y) { - var nodes, - strength = constant$4(0.1), - strengths, - radiuses; - - if (typeof radius !== "function") radius = constant$4(+radius); - if (x == null) x = 0; - if (y == null) y = 0; - - function force(alpha) { - for (var i = 0, n = nodes.length; i < n; ++i) { - var node = nodes[i], - dx = node.x - x || 1e-6, - dy = node.y - y || 1e-6, - r = Math.sqrt(dx * dx + dy * dy), - k = (radiuses[i] - r) * strengths[i] * alpha / r; - node.vx += dx * k; - node.vy += dy * k; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - radiuses = new Array(n); - for (i = 0; i < n; ++i) { - radiuses[i] = +radius(nodes[i], i, nodes); - strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _, initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : radius; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - return force; -} - -function x$3(x) { - var strength = constant$4(0.1), - nodes, - strengths, - xz; - - if (typeof x !== "function") x = constant$4(x == null ? 0 : +x); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - xz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : strength; - }; - - force.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : x; - }; - - return force; -} - -function y$2(y) { - var strength = constant$4(0.1), - nodes, - strengths, - yz; - - if (typeof y !== "function") y = constant$4(y == null ? 0 : +y); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - yz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : strength; - }; - - force.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$4(+_), initialize(), force) : y; - }; - - return force; -} - -function formatDecimal(x) { - return Math.abs(x = Math.round(x)) >= 1e21 - ? x.toLocaleString("en").replace(/,/g, "") - : x.toString(10); -} - -// Computes the decimal coefficient and exponent of the specified number x with -// significant digits p, where x is positive and p is in [1, 21] or undefined. -// For example, formatDecimalParts(1.23) returns ["123", 0]. -function formatDecimalParts(x, p) { - if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity - var i, coefficient = x.slice(0, i); - - // The string returned by toExponential either has the form \d\.\d+e[-+]\d+ - // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). - return [ - coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, - +x.slice(i + 1) - ]; -} - -function exponent(x) { - return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN; -} - -function formatGroup(grouping, thousands) { - return function(value, width) { - var i = value.length, - t = [], - j = 0, - g = grouping[0], - length = 0; - - while (i > 0 && g > 0) { - if (length + g + 1 > width) g = Math.max(1, width - length); - t.push(value.substring(i -= g, i + g)); - if ((length += g + 1) > width) break; - g = grouping[j = (j + 1) % grouping.length]; - } - - return t.reverse().join(thousands); - }; -} - -function formatNumerals(numerals) { - return function(value) { - return value.replace(/[0-9]/g, function(i) { - return numerals[+i]; - }); - }; -} - -// [[fill]align][sign][symbol][0][width][,][.precision][~][type] -var re$2 = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; - -function formatSpecifier(specifier) { - if (!(match = re$2.exec(specifier))) throw new Error("invalid format: " + specifier); - var match; - return new FormatSpecifier({ - fill: match[1], - align: match[2], - sign: match[3], - symbol: match[4], - zero: match[5], - width: match[6], - comma: match[7], - precision: match[8] && match[8].slice(1), - trim: match[9], - type: match[10] - }); -} - -formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof - -function FormatSpecifier(specifier) { - this.fill = specifier.fill === undefined ? " " : specifier.fill + ""; - this.align = specifier.align === undefined ? ">" : specifier.align + ""; - this.sign = specifier.sign === undefined ? "-" : specifier.sign + ""; - this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + ""; - this.zero = !!specifier.zero; - this.width = specifier.width === undefined ? undefined : +specifier.width; - this.comma = !!specifier.comma; - this.precision = specifier.precision === undefined ? undefined : +specifier.precision; - this.trim = !!specifier.trim; - this.type = specifier.type === undefined ? "" : specifier.type + ""; -} - -FormatSpecifier.prototype.toString = function() { - return this.fill - + this.align - + this.sign - + this.symbol - + (this.zero ? "0" : "") - + (this.width === undefined ? "" : Math.max(1, this.width | 0)) - + (this.comma ? "," : "") - + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0)) - + (this.trim ? "~" : "") - + this.type; -}; - -// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. -function formatTrim(s) { - out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { - switch (s[i]) { - case ".": i0 = i1 = i; break; - case "0": if (i0 === 0) i0 = i; i1 = i; break; - default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break; - } - } - return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; -} - -var prefixExponent; - -function formatPrefixAuto(x, p) { - var d = formatDecimalParts(x, p); - if (!d) return x + ""; - var coefficient = d[0], - exponent = d[1], - i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, - n = coefficient.length; - return i === n ? coefficient - : i > n ? coefficient + new Array(i - n + 1).join("0") - : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) - : "0." + new Array(1 - i).join("0") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y! -} - -function formatRounded(x, p) { - var d = formatDecimalParts(x, p); - if (!d) return x + ""; - var coefficient = d[0], - exponent = d[1]; - return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient - : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) - : coefficient + new Array(exponent - coefficient.length + 2).join("0"); -} - -var formatTypes = { - "%": (x, p) => (x * 100).toFixed(p), - "b": (x) => Math.round(x).toString(2), - "c": (x) => x + "", - "d": formatDecimal, - "e": (x, p) => x.toExponential(p), - "f": (x, p) => x.toFixed(p), - "g": (x, p) => x.toPrecision(p), - "o": (x) => Math.round(x).toString(8), - "p": (x, p) => formatRounded(x * 100, p), - "r": formatRounded, - "s": formatPrefixAuto, - "X": (x) => Math.round(x).toString(16).toUpperCase(), - "x": (x) => Math.round(x).toString(16) -}; - -function identity$6(x) { - return x; -} - -var map = Array.prototype.map, - prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"]; - -function formatLocale$1(locale) { - var group = locale.grouping === undefined || locale.thousands === undefined ? identity$6 : formatGroup(map.call(locale.grouping, Number), locale.thousands + ""), - currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "", - currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "", - decimal = locale.decimal === undefined ? "." : locale.decimal + "", - numerals = locale.numerals === undefined ? identity$6 : formatNumerals(map.call(locale.numerals, String)), - percent = locale.percent === undefined ? "%" : locale.percent + "", - minus = locale.minus === undefined ? "−" : locale.minus + "", - nan = locale.nan === undefined ? "NaN" : locale.nan + ""; - - function newFormat(specifier) { - specifier = formatSpecifier(specifier); - - var fill = specifier.fill, - align = specifier.align, - sign = specifier.sign, - symbol = specifier.symbol, - zero = specifier.zero, - width = specifier.width, - comma = specifier.comma, - precision = specifier.precision, - trim = specifier.trim, - type = specifier.type; - - // The "n" type is an alias for ",g". - if (type === "n") comma = true, type = "g"; - - // The "" type, and any invalid type, is an alias for ".12~g". - else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = "g"; - - // If zero fill is specified, padding goes after sign and before digits. - if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "="; - - // Compute the prefix and suffix. - // For SI-prefix, the suffix is lazily computed. - var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", - suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : ""; - - // What format function should we use? - // Is this an integer type? - // Can this type generate exponential notation? - var formatType = formatTypes[type], - maybeSuffix = /[defgprs%]/.test(type); - - // Set the default precision if not specified, - // or clamp the specified precision to the supported range. - // For significant precision, it must be in [1, 21]. - // For fixed precision, it must be in [0, 20]. - precision = precision === undefined ? 6 - : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) - : Math.max(0, Math.min(20, precision)); - - function format(value) { - var valuePrefix = prefix, - valueSuffix = suffix, - i, n, c; - - if (type === "c") { - valueSuffix = formatType(value) + valueSuffix; - value = ""; - } else { - value = +value; - - // Determine the sign. -0 is not less than 0, but 1 / -0 is! - var valueNegative = value < 0 || 1 / value < 0; - - // Perform the initial formatting. - value = isNaN(value) ? nan : formatType(Math.abs(value), precision); - - // Trim insignificant zeros. - if (trim) value = formatTrim(value); - - // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign. - if (valueNegative && +value === 0 && sign !== "+") valueNegative = false; - - // Compute the prefix and suffix. - valuePrefix = (valueNegative ? (sign === "(" ? sign : minus) : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; - valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); - - // Break the formatted value into the integer “value” part that can be - // grouped, and fractional or exponential “suffix” part that is not. - if (maybeSuffix) { - i = -1, n = value.length; - while (++i < n) { - if (c = value.charCodeAt(i), 48 > c || c > 57) { - valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; - value = value.slice(0, i); - break; - } - } - } - } - - // If the fill character is not "0", grouping is applied before padding. - if (comma && !zero) value = group(value, Infinity); - - // Compute the padding. - var length = valuePrefix.length + value.length + valueSuffix.length, - padding = length < width ? new Array(width - length + 1).join(fill) : ""; - - // If the fill character is "0", grouping is applied after padding. - if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; - - // Reconstruct the final output based on the desired alignment. - switch (align) { - case "<": value = valuePrefix + value + valueSuffix + padding; break; - case "=": value = valuePrefix + padding + value + valueSuffix; break; - case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break; - default: value = padding + valuePrefix + value + valueSuffix; break; - } - - return numerals(value); - } - - format.toString = function() { - return specifier + ""; - }; - - return format; - } - - function formatPrefix(specifier, value) { - var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), - e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3, - k = Math.pow(10, -e), - prefix = prefixes[8 + e / 3]; - return function(value) { - return f(k * value) + prefix; - }; - } - - return { - format: newFormat, - formatPrefix: formatPrefix - }; -} - -var locale$1; -var format; -var formatPrefix; - -defaultLocale$1({ - thousands: ",", - grouping: [3], - currency: ["$", ""] -}); - -function defaultLocale$1(definition) { - locale$1 = formatLocale$1(definition); - format = locale$1.format; - formatPrefix = locale$1.formatPrefix; - return locale$1; -} - -function precisionFixed(step) { - return Math.max(0, -exponent(Math.abs(step))); -} - -function precisionPrefix(step, value) { - return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step))); -} - -function precisionRound(step, max) { - step = Math.abs(step), max = Math.abs(max) - step; - return Math.max(0, exponent(max) - exponent(step)) + 1; -} - -var epsilon$1 = 1e-6; -var epsilon2 = 1e-12; -var pi$1 = Math.PI; -var halfPi$1 = pi$1 / 2; -var quarterPi = pi$1 / 4; -var tau$1 = pi$1 * 2; - -var degrees = 180 / pi$1; -var radians = pi$1 / 180; - -var abs$1 = Math.abs; -var atan = Math.atan; -var atan2$1 = Math.atan2; -var cos$1 = Math.cos; -var ceil = Math.ceil; -var exp = Math.exp; -var hypot = Math.hypot; -var log$1 = Math.log; -var pow$1 = Math.pow; -var sin$1 = Math.sin; -var sign$1 = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }; -var sqrt$2 = Math.sqrt; -var tan = Math.tan; - -function acos$1(x) { - return x > 1 ? 0 : x < -1 ? pi$1 : Math.acos(x); -} - -function asin$1(x) { - return x > 1 ? halfPi$1 : x < -1 ? -halfPi$1 : Math.asin(x); -} - -function haversin(x) { - return (x = sin$1(x / 2)) * x; -} - -function noop$1() {} - -function streamGeometry(geometry, stream) { - if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { - streamGeometryType[geometry.type](geometry, stream); - } -} - -var streamObjectType = { - Feature: function(object, stream) { - streamGeometry(object.geometry, stream); - }, - FeatureCollection: function(object, stream) { - var features = object.features, i = -1, n = features.length; - while (++i < n) streamGeometry(features[i].geometry, stream); - } -}; - -var streamGeometryType = { - Sphere: function(object, stream) { - stream.sphere(); - }, - Point: function(object, stream) { - object = object.coordinates; - stream.point(object[0], object[1], object[2]); - }, - MultiPoint: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); - }, - LineString: function(object, stream) { - streamLine(object.coordinates, stream, 0); - }, - MultiLineString: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamLine(coordinates[i], stream, 0); - }, - Polygon: function(object, stream) { - streamPolygon(object.coordinates, stream); - }, - MultiPolygon: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamPolygon(coordinates[i], stream); - }, - GeometryCollection: function(object, stream) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) streamGeometry(geometries[i], stream); - } -}; - -function streamLine(coordinates, stream, closed) { - var i = -1, n = coordinates.length - closed, coordinate; - stream.lineStart(); - while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); - stream.lineEnd(); -} - -function streamPolygon(coordinates, stream) { - var i = -1, n = coordinates.length; - stream.polygonStart(); - while (++i < n) streamLine(coordinates[i], stream, 1); - stream.polygonEnd(); -} - -function geoStream(object, stream) { - if (object && streamObjectType.hasOwnProperty(object.type)) { - streamObjectType[object.type](object, stream); - } else { - streamGeometry(object, stream); - } -} - -var areaRingSum$1 = new Adder(); - -// hello? - -var areaSum$1 = new Adder(), - lambda00$2, - phi00$2, - lambda0$2, - cosPhi0$1, - sinPhi0$1; - -var areaStream$1 = { - point: noop$1, - lineStart: noop$1, - lineEnd: noop$1, - polygonStart: function() { - areaRingSum$1 = new Adder(); - areaStream$1.lineStart = areaRingStart$1; - areaStream$1.lineEnd = areaRingEnd$1; - }, - polygonEnd: function() { - var areaRing = +areaRingSum$1; - areaSum$1.add(areaRing < 0 ? tau$1 + areaRing : areaRing); - this.lineStart = this.lineEnd = this.point = noop$1; - }, - sphere: function() { - areaSum$1.add(tau$1); - } -}; - -function areaRingStart$1() { - areaStream$1.point = areaPointFirst$1; -} - -function areaRingEnd$1() { - areaPoint$1(lambda00$2, phi00$2); -} - -function areaPointFirst$1(lambda, phi) { - areaStream$1.point = areaPoint$1; - lambda00$2 = lambda, phi00$2 = phi; - lambda *= radians, phi *= radians; - lambda0$2 = lambda, cosPhi0$1 = cos$1(phi = phi / 2 + quarterPi), sinPhi0$1 = sin$1(phi); -} - -function areaPoint$1(lambda, phi) { - lambda *= radians, phi *= radians; - phi = phi / 2 + quarterPi; // half the angular distance from south pole - - // Spherical excess E for a spherical triangle with vertices: south pole, - // previous point, current point. Uses a formula derived from Cagnoli’s - // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2). - var dLambda = lambda - lambda0$2, - sdLambda = dLambda >= 0 ? 1 : -1, - adLambda = sdLambda * dLambda, - cosPhi = cos$1(phi), - sinPhi = sin$1(phi), - k = sinPhi0$1 * sinPhi, - u = cosPhi0$1 * cosPhi + k * cos$1(adLambda), - v = k * sdLambda * sin$1(adLambda); - areaRingSum$1.add(atan2$1(v, u)); - - // Advance the previous points. - lambda0$2 = lambda, cosPhi0$1 = cosPhi, sinPhi0$1 = sinPhi; -} - -function area$2(object) { - areaSum$1 = new Adder(); - geoStream(object, areaStream$1); - return areaSum$1 * 2; -} - -function spherical(cartesian) { - return [atan2$1(cartesian[1], cartesian[0]), asin$1(cartesian[2])]; -} - -function cartesian(spherical) { - var lambda = spherical[0], phi = spherical[1], cosPhi = cos$1(phi); - return [cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)]; -} - -function cartesianDot(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -} - -function cartesianCross(a, b) { - return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; -} - -// TODO return a -function cartesianAddInPlace(a, b) { - a[0] += b[0], a[1] += b[1], a[2] += b[2]; -} - -function cartesianScale(vector, k) { - return [vector[0] * k, vector[1] * k, vector[2] * k]; -} - -// TODO return d -function cartesianNormalizeInPlace(d) { - var l = sqrt$2(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); - d[0] /= l, d[1] /= l, d[2] /= l; -} - -var lambda0$1, phi0, lambda1, phi1, // bounds - lambda2, // previous lambda-coordinate - lambda00$1, phi00$1, // first point - p0, // previous 3D point - deltaSum, - ranges, - range; - -var boundsStream$1 = { - point: boundsPoint$1, - lineStart: boundsLineStart, - lineEnd: boundsLineEnd, - polygonStart: function() { - boundsStream$1.point = boundsRingPoint; - boundsStream$1.lineStart = boundsRingStart; - boundsStream$1.lineEnd = boundsRingEnd; - deltaSum = new Adder(); - areaStream$1.polygonStart(); - }, - polygonEnd: function() { - areaStream$1.polygonEnd(); - boundsStream$1.point = boundsPoint$1; - boundsStream$1.lineStart = boundsLineStart; - boundsStream$1.lineEnd = boundsLineEnd; - if (areaRingSum$1 < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - else if (deltaSum > epsilon$1) phi1 = 90; - else if (deltaSum < -epsilon$1) phi0 = -90; - range[0] = lambda0$1, range[1] = lambda1; - }, - sphere: function() { - lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - } -}; - -function boundsPoint$1(lambda, phi) { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; -} - -function linePoint(lambda, phi) { - var p = cartesian([lambda * radians, phi * radians]); - if (p0) { - var normal = cartesianCross(p0, p), - equatorial = [normal[1], -normal[0], 0], - inflection = cartesianCross(equatorial, normal); - cartesianNormalizeInPlace(inflection); - inflection = spherical(inflection); - var delta = lambda - lambda2, - sign = delta > 0 ? 1 : -1, - lambdai = inflection[0] * degrees * sign, - phii, - antimeridian = abs$1(delta) > 180; - if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { - phii = inflection[1] * degrees; - if (phii > phi1) phi1 = phii; - } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { - phii = -inflection[1] * degrees; - if (phii < phi0) phi0 = phii; - } else { - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - } - if (antimeridian) { - if (lambda < lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } else { - if (lambda1 >= lambda0$1) { - if (lambda < lambda0$1) lambda0$1 = lambda; - if (lambda > lambda1) lambda1 = lambda; - } else { - if (lambda > lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } - } - } else { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - } - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - p0 = p, lambda2 = lambda; -} - -function boundsLineStart() { - boundsStream$1.point = linePoint; -} - -function boundsLineEnd() { - range[0] = lambda0$1, range[1] = lambda1; - boundsStream$1.point = boundsPoint$1; - p0 = null; -} - -function boundsRingPoint(lambda, phi) { - if (p0) { - var delta = lambda - lambda2; - deltaSum.add(abs$1(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta); - } else { - lambda00$1 = lambda, phi00$1 = phi; - } - areaStream$1.point(lambda, phi); - linePoint(lambda, phi); -} - -function boundsRingStart() { - areaStream$1.lineStart(); -} - -function boundsRingEnd() { - boundsRingPoint(lambda00$1, phi00$1); - areaStream$1.lineEnd(); - if (abs$1(deltaSum) > epsilon$1) lambda0$1 = -(lambda1 = 180); - range[0] = lambda0$1, range[1] = lambda1; - p0 = null; -} - -// Finds the left-right distance between two longitudes. -// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want -// the distance between ±180° to be 360°. -function angle(lambda0, lambda1) { - return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1; -} - -function rangeCompare(a, b) { - return a[0] - b[0]; -} - -function rangeContains(range, x) { - return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; -} - -function bounds(feature) { - var i, n, a, b, merged, deltaMax, delta; - - phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity); - ranges = []; - geoStream(feature, boundsStream$1); - - // First, sort ranges by their minimum longitudes. - if (n = ranges.length) { - ranges.sort(rangeCompare); - - // Then, merge any ranges that overlap. - for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) { - b = ranges[i]; - if (rangeContains(a, b[0]) || rangeContains(a, b[1])) { - if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; - if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; - } else { - merged.push(a = b); - } - } - - // Finally, find the largest gap between the merged ranges. - // The final bounding box will be the inverse of this gap. - for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) { - b = merged[i]; - if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1]; - } - } - - ranges = range = null; - - return lambda0$1 === Infinity || phi0 === Infinity - ? [[NaN, NaN], [NaN, NaN]] - : [[lambda0$1, phi0], [lambda1, phi1]]; -} - -var W0, W1, - X0$1, Y0$1, Z0$1, - X1$1, Y1$1, Z1$1, - X2$1, Y2$1, Z2$1, - lambda00, phi00, // first point - x0$4, y0$4, z0; // previous point - -var centroidStream$1 = { - sphere: noop$1, - point: centroidPoint$1, - lineStart: centroidLineStart$1, - lineEnd: centroidLineEnd$1, - polygonStart: function() { - centroidStream$1.lineStart = centroidRingStart$1; - centroidStream$1.lineEnd = centroidRingEnd$1; - }, - polygonEnd: function() { - centroidStream$1.lineStart = centroidLineStart$1; - centroidStream$1.lineEnd = centroidLineEnd$1; - } -}; - -// Arithmetic mean of Cartesian vectors. -function centroidPoint$1(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi); - centroidPointCartesian(cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)); -} - -function centroidPointCartesian(x, y, z) { - ++W0; - X0$1 += (x - X0$1) / W0; - Y0$1 += (y - Y0$1) / W0; - Z0$1 += (z - Z0$1) / W0; -} - -function centroidLineStart$1() { - centroidStream$1.point = centroidLinePointFirst; -} - -function centroidLinePointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi); - x0$4 = cosPhi * cos$1(lambda); - y0$4 = cosPhi * sin$1(lambda); - z0 = sin$1(phi); - centroidStream$1.point = centroidLinePoint; - centroidPointCartesian(x0$4, y0$4, z0); -} - -function centroidLinePoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi), - x = cosPhi * cos$1(lambda), - y = cosPhi * sin$1(lambda), - z = sin$1(phi), - w = atan2$1(sqrt$2((w = y0$4 * z - z0 * y) * w + (w = z0 * x - x0$4 * z) * w + (w = x0$4 * y - y0$4 * x) * w), x0$4 * x + y0$4 * y + z0 * z); - W1 += w; - X1$1 += w * (x0$4 + (x0$4 = x)); - Y1$1 += w * (y0$4 + (y0$4 = y)); - Z1$1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0$4, y0$4, z0); -} - -function centroidLineEnd$1() { - centroidStream$1.point = centroidPoint$1; -} - -// See J. E. Brock, The Inertia Tensor for a Spherical Triangle, -// J. Applied Mechanics 42, 239 (1975). -function centroidRingStart$1() { - centroidStream$1.point = centroidRingPointFirst; -} - -function centroidRingEnd$1() { - centroidRingPoint(lambda00, phi00); - centroidStream$1.point = centroidPoint$1; -} - -function centroidRingPointFirst(lambda, phi) { - lambda00 = lambda, phi00 = phi; - lambda *= radians, phi *= radians; - centroidStream$1.point = centroidRingPoint; - var cosPhi = cos$1(phi); - x0$4 = cosPhi * cos$1(lambda); - y0$4 = cosPhi * sin$1(lambda); - z0 = sin$1(phi); - centroidPointCartesian(x0$4, y0$4, z0); -} - -function centroidRingPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi), - x = cosPhi * cos$1(lambda), - y = cosPhi * sin$1(lambda), - z = sin$1(phi), - cx = y0$4 * z - z0 * y, - cy = z0 * x - x0$4 * z, - cz = x0$4 * y - y0$4 * x, - m = hypot(cx, cy, cz), - w = asin$1(m), // line weight = angle - v = m && -w / m; // area weight multiplier - X2$1.add(v * cx); - Y2$1.add(v * cy); - Z2$1.add(v * cz); - W1 += w; - X1$1 += w * (x0$4 + (x0$4 = x)); - Y1$1 += w * (y0$4 + (y0$4 = y)); - Z1$1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0$4, y0$4, z0); -} - -function centroid$1(object) { - W0 = W1 = - X0$1 = Y0$1 = Z0$1 = - X1$1 = Y1$1 = Z1$1 = 0; - X2$1 = new Adder(); - Y2$1 = new Adder(); - Z2$1 = new Adder(); - geoStream(object, centroidStream$1); - - var x = +X2$1, - y = +Y2$1, - z = +Z2$1, - m = hypot(x, y, z); - - // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid. - if (m < epsilon2) { - x = X1$1, y = Y1$1, z = Z1$1; - // If the feature has zero length, fall back to arithmetic mean of point vectors. - if (W1 < epsilon$1) x = X0$1, y = Y0$1, z = Z0$1; - m = hypot(x, y, z); - // If the feature still has an undefined ccentroid, then return. - if (m < epsilon2) return [NaN, NaN]; - } - - return [atan2$1(y, x) * degrees, asin$1(z / m) * degrees]; -} - -function constant$3(x) { - return function() { - return x; - }; -} - -function compose(a, b) { - - function compose(x, y) { - return x = a(x, y), b(x[0], x[1]); - } - - if (a.invert && b.invert) compose.invert = function(x, y) { - return x = b.invert(x, y), x && a.invert(x[0], x[1]); - }; - - return compose; -} - -function rotationIdentity(lambda, phi) { - if (abs$1(lambda) > pi$1) lambda -= Math.round(lambda / tau$1) * tau$1; - return [lambda, phi]; -} - -rotationIdentity.invert = rotationIdentity; - -function rotateRadians(deltaLambda, deltaPhi, deltaGamma) { - return (deltaLambda %= tau$1) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) - : rotationLambda(deltaLambda)) - : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) - : rotationIdentity); -} - -function forwardRotationLambda(deltaLambda) { - return function(lambda, phi) { - lambda += deltaLambda; - if (abs$1(lambda) > pi$1) lambda -= Math.round(lambda / tau$1) * tau$1; - return [lambda, phi]; - }; -} - -function rotationLambda(deltaLambda) { - var rotation = forwardRotationLambda(deltaLambda); - rotation.invert = forwardRotationLambda(-deltaLambda); - return rotation; -} - -function rotationPhiGamma(deltaPhi, deltaGamma) { - var cosDeltaPhi = cos$1(deltaPhi), - sinDeltaPhi = sin$1(deltaPhi), - cosDeltaGamma = cos$1(deltaGamma), - sinDeltaGamma = sin$1(deltaGamma); - - function rotation(lambda, phi) { - var cosPhi = cos$1(phi), - x = cos$1(lambda) * cosPhi, - y = sin$1(lambda) * cosPhi, - z = sin$1(phi), - k = z * cosDeltaPhi + x * sinDeltaPhi; - return [ - atan2$1(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), - asin$1(k * cosDeltaGamma + y * sinDeltaGamma) - ]; - } - - rotation.invert = function(lambda, phi) { - var cosPhi = cos$1(phi), - x = cos$1(lambda) * cosPhi, - y = sin$1(lambda) * cosPhi, - z = sin$1(phi), - k = z * cosDeltaGamma - y * sinDeltaGamma; - return [ - atan2$1(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), - asin$1(k * cosDeltaPhi - x * sinDeltaPhi) - ]; - }; - - return rotation; -} - -function rotation(rotate) { - rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0); - - function forward(coordinates) { - coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates; - } - - forward.invert = function(coordinates) { - coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates; - }; - - return forward; -} - -// Generates a circle centered at [0°, 0°], with a given radius and precision. -function circleStream(stream, radius, delta, direction, t0, t1) { - if (!delta) return; - var cosRadius = cos$1(radius), - sinRadius = sin$1(radius), - step = direction * delta; - if (t0 == null) { - t0 = radius + direction * tau$1; - t1 = radius - step / 2; - } else { - t0 = circleRadius(cosRadius, t0); - t1 = circleRadius(cosRadius, t1); - if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau$1; - } - for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) { - point = spherical([cosRadius, -sinRadius * cos$1(t), -sinRadius * sin$1(t)]); - stream.point(point[0], point[1]); - } -} - -// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. -function circleRadius(cosRadius, point) { - point = cartesian(point), point[0] -= cosRadius; - cartesianNormalizeInPlace(point); - var radius = acos$1(-point[1]); - return ((-point[2] < 0 ? -radius : radius) + tau$1 - epsilon$1) % tau$1; -} - -function circle$1() { - var center = constant$3([0, 0]), - radius = constant$3(90), - precision = constant$3(2), - ring, - rotate, - stream = {point: point}; - - function point(x, y) { - ring.push(x = rotate(x, y)); - x[0] *= degrees, x[1] *= degrees; - } - - function circle() { - var c = center.apply(this, arguments), - r = radius.apply(this, arguments) * radians, - p = precision.apply(this, arguments) * radians; - ring = []; - rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert; - circleStream(stream, r, p, 1); - c = {type: "Polygon", coordinates: [ring]}; - ring = rotate = null; - return c; - } - - circle.center = function(_) { - return arguments.length ? (center = typeof _ === "function" ? _ : constant$3([+_[0], +_[1]]), circle) : center; - }; - - circle.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$3(+_), circle) : radius; - }; - - circle.precision = function(_) { - return arguments.length ? (precision = typeof _ === "function" ? _ : constant$3(+_), circle) : precision; - }; - - return circle; -} - -function clipBuffer() { - var lines = [], - line; - return { - point: function(x, y, m) { - line.push([x, y, m]); - }, - lineStart: function() { - lines.push(line = []); - }, - lineEnd: noop$1, - rejoin: function() { - if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); - }, - result: function() { - var result = lines; - lines = []; - line = null; - return result; - } - }; -} - -function pointEqual(a, b) { - return abs$1(a[0] - b[0]) < epsilon$1 && abs$1(a[1] - b[1]) < epsilon$1; -} - -function Intersection(point, points, other, entry) { - this.x = point; - this.z = points; - this.o = other; // another intersection - this.e = entry; // is an entry? - this.v = false; // visited - this.n = this.p = null; // next & previous -} - -// A generalized polygon clipping algorithm: given a polygon that has been cut -// into its visible line segments, and rejoins the segments by interpolating -// along the clip edge. -function clipRejoin(segments, compareIntersection, startInside, interpolate, stream) { - var subject = [], - clip = [], - i, - n; - - segments.forEach(function(segment) { - if ((n = segment.length - 1) <= 0) return; - var n, p0 = segment[0], p1 = segment[n], x; - - if (pointEqual(p0, p1)) { - if (!p0[2] && !p1[2]) { - stream.lineStart(); - for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]); - stream.lineEnd(); - return; - } - // handle degenerate cases by moving the point - p1[0] += 2 * epsilon$1; - } - - subject.push(x = new Intersection(p0, segment, null, true)); - clip.push(x.o = new Intersection(p0, null, x, false)); - subject.push(x = new Intersection(p1, segment, null, false)); - clip.push(x.o = new Intersection(p1, null, x, true)); - }); - - if (!subject.length) return; - - clip.sort(compareIntersection); - link$1(subject); - link$1(clip); - - for (i = 0, n = clip.length; i < n; ++i) { - clip[i].e = startInside = !startInside; - } - - var start = subject[0], - points, - point; - - while (1) { - // Find first unvisited intersection. - var current = start, - isSubject = true; - while (current.v) if ((current = current.n) === start) return; - points = current.z; - stream.lineStart(); - do { - current.v = current.o.v = true; - if (current.e) { - if (isSubject) { - for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.n.x, 1, stream); - } - current = current.n; - } else { - if (isSubject) { - points = current.p.z; - for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.p.x, -1, stream); - } - current = current.p; - } - current = current.o; - points = current.z; - isSubject = !isSubject; - } while (!current.v); - stream.lineEnd(); - } -} - -function link$1(array) { - if (!(n = array.length)) return; - var n, - i = 0, - a = array[0], - b; - while (++i < n) { - a.n = b = array[i]; - b.p = a; - a = b; - } - a.n = b = array[0]; - b.p = a; -} - -function longitude(point) { - return abs$1(point[0]) <= pi$1 ? point[0] : sign$1(point[0]) * ((abs$1(point[0]) + pi$1) % tau$1 - pi$1); -} - -function polygonContains(polygon, point) { - var lambda = longitude(point), - phi = point[1], - sinPhi = sin$1(phi), - normal = [sin$1(lambda), -cos$1(lambda), 0], - angle = 0, - winding = 0; - - var sum = new Adder(); - - if (sinPhi === 1) phi = halfPi$1 + epsilon$1; - else if (sinPhi === -1) phi = -halfPi$1 - epsilon$1; - - for (var i = 0, n = polygon.length; i < n; ++i) { - if (!(m = (ring = polygon[i]).length)) continue; - var ring, - m, - point0 = ring[m - 1], - lambda0 = longitude(point0), - phi0 = point0[1] / 2 + quarterPi, - sinPhi0 = sin$1(phi0), - cosPhi0 = cos$1(phi0); - - for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) { - var point1 = ring[j], - lambda1 = longitude(point1), - phi1 = point1[1] / 2 + quarterPi, - sinPhi1 = sin$1(phi1), - cosPhi1 = cos$1(phi1), - delta = lambda1 - lambda0, - sign = delta >= 0 ? 1 : -1, - absDelta = sign * delta, - antimeridian = absDelta > pi$1, - k = sinPhi0 * sinPhi1; - - sum.add(atan2$1(k * sign * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta))); - angle += antimeridian ? delta + sign * tau$1 : delta; - - // Are the longitudes either side of the point’s meridian (lambda), - // and are the latitudes smaller than the parallel (phi)? - if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) { - var arc = cartesianCross(cartesian(point0), cartesian(point1)); - cartesianNormalizeInPlace(arc); - var intersection = cartesianCross(normal, arc); - cartesianNormalizeInPlace(intersection); - var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin$1(intersection[2]); - if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) { - winding += antimeridian ^ delta >= 0 ? 1 : -1; - } - } - } - } - - // First, determine whether the South pole is inside or outside: - // - // It is inside if: - // * the polygon winds around it in a clockwise direction. - // * the polygon does not (cumulatively) wind around it, but has a negative - // (counter-clockwise) area. - // - // Second, count the (signed) number of times a segment crosses a lambda - // from the point to the South pole. If it is zero, then the point is the - // same side as the South pole. - - return (angle < -epsilon$1 || angle < epsilon$1 && sum < -epsilon2) ^ (winding & 1); -} - -function clip(pointVisible, clipLine, interpolate, start) { - return function(sink) { - var line = clipLine(sink), - ringBuffer = clipBuffer(), - ringSink = clipLine(ringBuffer), - polygonStarted = false, - polygon, - segments, - ring; - - var clip = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { - clip.point = pointRing; - clip.lineStart = ringStart; - clip.lineEnd = ringEnd; - segments = []; - polygon = []; - }, - polygonEnd: function() { - clip.point = point; - clip.lineStart = lineStart; - clip.lineEnd = lineEnd; - segments = merge(segments); - var startInside = polygonContains(polygon, start); - if (segments.length) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - clipRejoin(segments, compareIntersection, startInside, interpolate, sink); - } else if (startInside) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - } - if (polygonStarted) sink.polygonEnd(), polygonStarted = false; - segments = polygon = null; - }, - sphere: function() { - sink.polygonStart(); - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - sink.polygonEnd(); - } - }; - - function point(lambda, phi) { - if (pointVisible(lambda, phi)) sink.point(lambda, phi); - } - - function pointLine(lambda, phi) { - line.point(lambda, phi); - } - - function lineStart() { - clip.point = pointLine; - line.lineStart(); - } - - function lineEnd() { - clip.point = point; - line.lineEnd(); - } - - function pointRing(lambda, phi) { - ring.push([lambda, phi]); - ringSink.point(lambda, phi); - } - - function ringStart() { - ringSink.lineStart(); - ring = []; - } - - function ringEnd() { - pointRing(ring[0][0], ring[0][1]); - ringSink.lineEnd(); - - var clean = ringSink.clean(), - ringSegments = ringBuffer.result(), - i, n = ringSegments.length, m, - segment, - point; - - ring.pop(); - polygon.push(ring); - ring = null; - - if (!n) return; - - // No intersections. - if (clean & 1) { - segment = ringSegments[0]; - if ((m = segment.length - 1) > 0) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]); - sink.lineEnd(); - } - return; - } - - // Rejoin connected segments. - // TODO reuse ringBuffer.rejoin()? - if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); - - segments.push(ringSegments.filter(validSegment)); - } - - return clip; - }; -} - -function validSegment(segment) { - return segment.length > 1; -} - -// Intersections are sorted along the clip edge. For both antimeridian cutting -// and circle clipping, the same comparison is used. -function compareIntersection(a, b) { - return ((a = a.x)[0] < 0 ? a[1] - halfPi$1 - epsilon$1 : halfPi$1 - a[1]) - - ((b = b.x)[0] < 0 ? b[1] - halfPi$1 - epsilon$1 : halfPi$1 - b[1]); -} - -var clipAntimeridian = clip( - function() { return true; }, - clipAntimeridianLine, - clipAntimeridianInterpolate, - [-pi$1, -halfPi$1] -); - -// Takes a line and cuts into visible segments. Return values: 0 - there were -// intersections or the line was empty; 1 - no intersections; 2 - there were -// intersections, and the first and last segments should be rejoined. -function clipAntimeridianLine(stream) { - var lambda0 = NaN, - phi0 = NaN, - sign0 = NaN, - clean; // no intersections - - return { - lineStart: function() { - stream.lineStart(); - clean = 1; - }, - point: function(lambda1, phi1) { - var sign1 = lambda1 > 0 ? pi$1 : -pi$1, - delta = abs$1(lambda1 - lambda0); - if (abs$1(delta - pi$1) < epsilon$1) { // line crosses a pole - stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi$1 : -halfPi$1); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - stream.point(lambda1, phi0); - clean = 0; - } else if (sign0 !== sign1 && delta >= pi$1) { // line crosses antimeridian - if (abs$1(lambda0 - sign0) < epsilon$1) lambda0 -= sign0 * epsilon$1; // handle degeneracies - if (abs$1(lambda1 - sign1) < epsilon$1) lambda1 -= sign1 * epsilon$1; - phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - clean = 0; - } - stream.point(lambda0 = lambda1, phi0 = phi1); - sign0 = sign1; - }, - lineEnd: function() { - stream.lineEnd(); - lambda0 = phi0 = NaN; - }, - clean: function() { - return 2 - clean; // if intersections, rejoin first and last segments - } - }; -} - -function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) { - var cosPhi0, - cosPhi1, - sinLambda0Lambda1 = sin$1(lambda0 - lambda1); - return abs$1(sinLambda0Lambda1) > epsilon$1 - ? atan((sin$1(phi0) * (cosPhi1 = cos$1(phi1)) * sin$1(lambda1) - - sin$1(phi1) * (cosPhi0 = cos$1(phi0)) * sin$1(lambda0)) - / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) - : (phi0 + phi1) / 2; -} - -function clipAntimeridianInterpolate(from, to, direction, stream) { - var phi; - if (from == null) { - phi = direction * halfPi$1; - stream.point(-pi$1, phi); - stream.point(0, phi); - stream.point(pi$1, phi); - stream.point(pi$1, 0); - stream.point(pi$1, -phi); - stream.point(0, -phi); - stream.point(-pi$1, -phi); - stream.point(-pi$1, 0); - stream.point(-pi$1, phi); - } else if (abs$1(from[0] - to[0]) > epsilon$1) { - var lambda = from[0] < to[0] ? pi$1 : -pi$1; - phi = direction * lambda / 2; - stream.point(-lambda, phi); - stream.point(0, phi); - stream.point(lambda, phi); - } else { - stream.point(to[0], to[1]); - } -} - -function clipCircle(radius) { - var cr = cos$1(radius), - delta = 2 * radians, - smallRadius = cr > 0, - notHemisphere = abs$1(cr) > epsilon$1; // TODO optimise for this common case - - function interpolate(from, to, direction, stream) { - circleStream(stream, radius, delta, direction, from, to); - } - - function visible(lambda, phi) { - return cos$1(lambda) * cos$1(phi) > cr; - } - - // Takes a line and cuts into visible segments. Return values used for polygon - // clipping: 0 - there were intersections or the line was empty; 1 - no - // intersections 2 - there were intersections, and the first and last segments - // should be rejoined. - function clipLine(stream) { - var point0, // previous point - c0, // code for previous point - v0, // visibility of previous point - v00, // visibility of first point - clean; // no intersections - return { - lineStart: function() { - v00 = v0 = false; - clean = 1; - }, - point: function(lambda, phi) { - var point1 = [lambda, phi], - point2, - v = visible(lambda, phi), - c = smallRadius - ? v ? 0 : code(lambda, phi) - : v ? code(lambda + (lambda < 0 ? pi$1 : -pi$1), phi) : 0; - if (!point0 && (v00 = v0 = v)) stream.lineStart(); - if (v !== v0) { - point2 = intersect(point0, point1); - if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) - point1[2] = 1; - } - if (v !== v0) { - clean = 0; - if (v) { - // outside going in - stream.lineStart(); - point2 = intersect(point1, point0); - stream.point(point2[0], point2[1]); - } else { - // inside going out - point2 = intersect(point0, point1); - stream.point(point2[0], point2[1], 2); - stream.lineEnd(); - } - point0 = point2; - } else if (notHemisphere && point0 && smallRadius ^ v) { - var t; - // If the codes for two points are different, or are both zero, - // and there this segment intersects with the small circle. - if (!(c & c0) && (t = intersect(point1, point0, true))) { - clean = 0; - if (smallRadius) { - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - } else { - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - stream.lineStart(); - stream.point(t[0][0], t[0][1], 3); - } - } - } - if (v && (!point0 || !pointEqual(point0, point1))) { - stream.point(point1[0], point1[1]); - } - point0 = point1, v0 = v, c0 = c; - }, - lineEnd: function() { - if (v0) stream.lineEnd(); - point0 = null; - }, - // Rejoin first and last segments if there were intersections and the first - // and last points were visible. - clean: function() { - return clean | ((v00 && v0) << 1); - } - }; - } - - // Intersects the great circle between a and b with the clip circle. - function intersect(a, b, two) { - var pa = cartesian(a), - pb = cartesian(b); - - // We have two planes, n1.p = d1 and n2.p = d2. - // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2). - var n1 = [1, 0, 0], // normal - n2 = cartesianCross(pa, pb), - n2n2 = cartesianDot(n2, n2), - n1n2 = n2[0], // cartesianDot(n1, n2), - determinant = n2n2 - n1n2 * n1n2; - - // Two polar points. - if (!determinant) return !two && a; - - var c1 = cr * n2n2 / determinant, - c2 = -cr * n1n2 / determinant, - n1xn2 = cartesianCross(n1, n2), - A = cartesianScale(n1, c1), - B = cartesianScale(n2, c2); - cartesianAddInPlace(A, B); - - // Solve |p(t)|^2 = 1. - var u = n1xn2, - w = cartesianDot(A, u), - uu = cartesianDot(u, u), - t2 = w * w - uu * (cartesianDot(A, A) - 1); - - if (t2 < 0) return; - - var t = sqrt$2(t2), - q = cartesianScale(u, (-w - t) / uu); - cartesianAddInPlace(q, A); - q = spherical(q); - - if (!two) return q; - - // Two intersection points. - var lambda0 = a[0], - lambda1 = b[0], - phi0 = a[1], - phi1 = b[1], - z; - - if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z; - - var delta = lambda1 - lambda0, - polar = abs$1(delta - pi$1) < epsilon$1, - meridian = polar || delta < epsilon$1; - - if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z; - - // Check that the first point is between a and b. - if (meridian - ? polar - ? phi0 + phi1 > 0 ^ q[1] < (abs$1(q[0] - lambda0) < epsilon$1 ? phi0 : phi1) - : phi0 <= q[1] && q[1] <= phi1 - : delta > pi$1 ^ (lambda0 <= q[0] && q[0] <= lambda1)) { - var q1 = cartesianScale(u, (-w + t) / uu); - cartesianAddInPlace(q1, A); - return [q, spherical(q1)]; - } - } - - // Generates a 4-bit vector representing the location of a point relative to - // the small circle's bounding box. - function code(lambda, phi) { - var r = smallRadius ? radius : pi$1 - radius, - code = 0; - if (lambda < -r) code |= 1; // left - else if (lambda > r) code |= 2; // right - if (phi < -r) code |= 4; // below - else if (phi > r) code |= 8; // above - return code; - } - - return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi$1, radius - pi$1]); -} - -function clipLine(a, b, x0, y0, x1, y1) { - var ax = a[0], - ay = a[1], - bx = b[0], - by = b[1], - t0 = 0, - t1 = 1, - dx = bx - ax, - dy = by - ay, - r; - - r = x0 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dx > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = x1 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dx > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - r = y0 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dy > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = y1 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dy > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy; - if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy; - return true; -} - -var clipMax = 1e9, clipMin = -clipMax; - -// TODO Use d3-polygon’s polygonContains here for the ring check? -// TODO Eliminate duplicate buffering in clipBuffer and polygon.push? - -function clipRectangle(x0, y0, x1, y1) { - - function visible(x, y) { - return x0 <= x && x <= x1 && y0 <= y && y <= y1; - } - - function interpolate(from, to, direction, stream) { - var a = 0, a1 = 0; - if (from == null - || (a = corner(from, direction)) !== (a1 = corner(to, direction)) - || comparePoint(from, to) < 0 ^ direction > 0) { - do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); - while ((a = (a + direction + 4) % 4) !== a1); - } else { - stream.point(to[0], to[1]); - } - } - - function corner(p, direction) { - return abs$1(p[0] - x0) < epsilon$1 ? direction > 0 ? 0 : 3 - : abs$1(p[0] - x1) < epsilon$1 ? direction > 0 ? 2 : 1 - : abs$1(p[1] - y0) < epsilon$1 ? direction > 0 ? 1 : 0 - : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon - } - - function compareIntersection(a, b) { - return comparePoint(a.x, b.x); - } - - function comparePoint(a, b) { - var ca = corner(a, 1), - cb = corner(b, 1); - return ca !== cb ? ca - cb - : ca === 0 ? b[1] - a[1] - : ca === 1 ? a[0] - b[0] - : ca === 2 ? a[1] - b[1] - : b[0] - a[0]; - } - - return function(stream) { - var activeStream = stream, - bufferStream = clipBuffer(), - segments, - polygon, - ring, - x__, y__, v__, // first point - x_, y_, v_, // previous point - first, - clean; - - var clipStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: polygonStart, - polygonEnd: polygonEnd - }; - - function point(x, y) { - if (visible(x, y)) activeStream.point(x, y); - } - - function polygonInside() { - var winding = 0; - - for (var i = 0, n = polygon.length; i < n; ++i) { - for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) { - a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1]; - if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; } - else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; } - } - } - - return winding; - } - - // Buffer geometry within a polygon and then clip it en masse. - function polygonStart() { - activeStream = bufferStream, segments = [], polygon = [], clean = true; - } - - function polygonEnd() { - var startInside = polygonInside(), - cleanInside = clean && startInside, - visible = (segments = merge(segments)).length; - if (cleanInside || visible) { - stream.polygonStart(); - if (cleanInside) { - stream.lineStart(); - interpolate(null, null, 1, stream); - stream.lineEnd(); - } - if (visible) { - clipRejoin(segments, compareIntersection, startInside, interpolate, stream); - } - stream.polygonEnd(); - } - activeStream = stream, segments = polygon = ring = null; - } - - function lineStart() { - clipStream.point = linePoint; - if (polygon) polygon.push(ring = []); - first = true; - v_ = false; - x_ = y_ = NaN; - } - - // TODO rather than special-case polygons, simply handle them separately. - // Ideally, coincident intersection points should be jittered to avoid - // clipping issues. - function lineEnd() { - if (segments) { - linePoint(x__, y__); - if (v__ && v_) bufferStream.rejoin(); - segments.push(bufferStream.result()); - } - clipStream.point = point; - if (v_) activeStream.lineEnd(); - } - - function linePoint(x, y) { - var v = visible(x, y); - if (polygon) ring.push([x, y]); - if (first) { - x__ = x, y__ = y, v__ = v; - first = false; - if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - } - } else { - if (v && v_) activeStream.point(x, y); - else { - var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], - b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))]; - if (clipLine(a, b, x0, y0, x1, y1)) { - if (!v_) { - activeStream.lineStart(); - activeStream.point(a[0], a[1]); - } - activeStream.point(b[0], b[1]); - if (!v) activeStream.lineEnd(); - clean = false; - } else if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - clean = false; - } - } - } - x_ = x, y_ = y, v_ = v; - } - - return clipStream; - }; -} - -function extent() { - var x0 = 0, - y0 = 0, - x1 = 960, - y1 = 500, - cache, - cacheStream, - clip; - - return clip = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream); - }, - extent: function(_) { - return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]]; - } - }; -} - -var lengthSum$1, - lambda0, - sinPhi0, - cosPhi0; - -var lengthStream$1 = { - sphere: noop$1, - point: noop$1, - lineStart: lengthLineStart, - lineEnd: noop$1, - polygonStart: noop$1, - polygonEnd: noop$1 -}; - -function lengthLineStart() { - lengthStream$1.point = lengthPointFirst$1; - lengthStream$1.lineEnd = lengthLineEnd; -} - -function lengthLineEnd() { - lengthStream$1.point = lengthStream$1.lineEnd = noop$1; -} - -function lengthPointFirst$1(lambda, phi) { - lambda *= radians, phi *= radians; - lambda0 = lambda, sinPhi0 = sin$1(phi), cosPhi0 = cos$1(phi); - lengthStream$1.point = lengthPoint$1; -} - -function lengthPoint$1(lambda, phi) { - lambda *= radians, phi *= radians; - var sinPhi = sin$1(phi), - cosPhi = cos$1(phi), - delta = abs$1(lambda - lambda0), - cosDelta = cos$1(delta), - sinDelta = sin$1(delta), - x = cosPhi * sinDelta, - y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta, - z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta; - lengthSum$1.add(atan2$1(sqrt$2(x * x + y * y), z)); - lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi; -} - -function length$1(object) { - lengthSum$1 = new Adder(); - geoStream(object, lengthStream$1); - return +lengthSum$1; -} - -var coordinates = [null, null], - object = {type: "LineString", coordinates: coordinates}; - -function distance(a, b) { - coordinates[0] = a; - coordinates[1] = b; - return length$1(object); -} - -var containsObjectType = { - Feature: function(object, point) { - return containsGeometry(object.geometry, point); - }, - FeatureCollection: function(object, point) { - var features = object.features, i = -1, n = features.length; - while (++i < n) if (containsGeometry(features[i].geometry, point)) return true; - return false; - } -}; - -var containsGeometryType = { - Sphere: function() { - return true; - }, - Point: function(object, point) { - return containsPoint(object.coordinates, point); - }, - MultiPoint: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPoint(coordinates[i], point)) return true; - return false; - }, - LineString: function(object, point) { - return containsLine(object.coordinates, point); - }, - MultiLineString: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsLine(coordinates[i], point)) return true; - return false; - }, - Polygon: function(object, point) { - return containsPolygon(object.coordinates, point); - }, - MultiPolygon: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPolygon(coordinates[i], point)) return true; - return false; - }, - GeometryCollection: function(object, point) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) if (containsGeometry(geometries[i], point)) return true; - return false; - } -}; - -function containsGeometry(geometry, point) { - return geometry && containsGeometryType.hasOwnProperty(geometry.type) - ? containsGeometryType[geometry.type](geometry, point) - : false; -} - -function containsPoint(coordinates, point) { - return distance(coordinates, point) === 0; -} - -function containsLine(coordinates, point) { - var ao, bo, ab; - for (var i = 0, n = coordinates.length; i < n; i++) { - bo = distance(coordinates[i], point); - if (bo === 0) return true; - if (i > 0) { - ab = distance(coordinates[i], coordinates[i - 1]); - if ( - ab > 0 && - ao <= ab && - bo <= ab && - (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab - ) - return true; - } - ao = bo; - } - return false; -} - -function containsPolygon(coordinates, point) { - return !!polygonContains(coordinates.map(ringRadians), pointRadians(point)); -} - -function ringRadians(ring) { - return ring = ring.map(pointRadians), ring.pop(), ring; -} - -function pointRadians(point) { - return [point[0] * radians, point[1] * radians]; -} - -function contains$1(object, point) { - return (object && containsObjectType.hasOwnProperty(object.type) - ? containsObjectType[object.type] - : containsGeometry)(object, point); -} - -function graticuleX(y0, y1, dy) { - var y = range$2(y0, y1 - epsilon$1, dy).concat(y1); - return function(x) { return y.map(function(y) { return [x, y]; }); }; -} - -function graticuleY(x0, x1, dx) { - var x = range$2(x0, x1 - epsilon$1, dx).concat(x1); - return function(y) { return x.map(function(x) { return [x, y]; }); }; -} - -function graticule() { - var x1, x0, X1, X0, - y1, y0, Y1, Y0, - dx = 10, dy = dx, DX = 90, DY = 360, - x, y, X, Y, - precision = 2.5; - - function graticule() { - return {type: "MultiLineString", coordinates: lines()}; - } - - function lines() { - return range$2(ceil(X0 / DX) * DX, X1, DX).map(X) - .concat(range$2(ceil(Y0 / DY) * DY, Y1, DY).map(Y)) - .concat(range$2(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs$1(x % DX) > epsilon$1; }).map(x)) - .concat(range$2(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs$1(y % DY) > epsilon$1; }).map(y)); - } - - graticule.lines = function() { - return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; }); - }; - - graticule.outline = function() { - return { - type: "Polygon", - coordinates: [ - X(X0).concat( - Y(Y1).slice(1), - X(X1).reverse().slice(1), - Y(Y0).reverse().slice(1)) - ] - }; - }; - - graticule.extent = function(_) { - if (!arguments.length) return graticule.extentMinor(); - return graticule.extentMajor(_).extentMinor(_); - }; - - graticule.extentMajor = function(_) { - if (!arguments.length) return [[X0, Y0], [X1, Y1]]; - X0 = +_[0][0], X1 = +_[1][0]; - Y0 = +_[0][1], Y1 = +_[1][1]; - if (X0 > X1) _ = X0, X0 = X1, X1 = _; - if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; - return graticule.precision(precision); - }; - - graticule.extentMinor = function(_) { - if (!arguments.length) return [[x0, y0], [x1, y1]]; - x0 = +_[0][0], x1 = +_[1][0]; - y0 = +_[0][1], y1 = +_[1][1]; - if (x0 > x1) _ = x0, x0 = x1, x1 = _; - if (y0 > y1) _ = y0, y0 = y1, y1 = _; - return graticule.precision(precision); - }; - - graticule.step = function(_) { - if (!arguments.length) return graticule.stepMinor(); - return graticule.stepMajor(_).stepMinor(_); - }; - - graticule.stepMajor = function(_) { - if (!arguments.length) return [DX, DY]; - DX = +_[0], DY = +_[1]; - return graticule; - }; - - graticule.stepMinor = function(_) { - if (!arguments.length) return [dx, dy]; - dx = +_[0], dy = +_[1]; - return graticule; - }; - - graticule.precision = function(_) { - if (!arguments.length) return precision; - precision = +_; - x = graticuleX(y0, y1, 90); - y = graticuleY(x0, x1, precision); - X = graticuleX(Y0, Y1, 90); - Y = graticuleY(X0, X1, precision); - return graticule; - }; - - return graticule - .extentMajor([[-180, -90 + epsilon$1], [180, 90 - epsilon$1]]) - .extentMinor([[-180, -80 - epsilon$1], [180, 80 + epsilon$1]]); -} - -function graticule10() { - return graticule()(); -} - -function interpolate(a, b) { - var x0 = a[0] * radians, - y0 = a[1] * radians, - x1 = b[0] * radians, - y1 = b[1] * radians, - cy0 = cos$1(y0), - sy0 = sin$1(y0), - cy1 = cos$1(y1), - sy1 = sin$1(y1), - kx0 = cy0 * cos$1(x0), - ky0 = cy0 * sin$1(x0), - kx1 = cy1 * cos$1(x1), - ky1 = cy1 * sin$1(x1), - d = 2 * asin$1(sqrt$2(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))), - k = sin$1(d); - - var interpolate = d ? function(t) { - var B = sin$1(t *= d) / k, - A = sin$1(d - t) / k, - x = A * kx0 + B * kx1, - y = A * ky0 + B * ky1, - z = A * sy0 + B * sy1; - return [ - atan2$1(y, x) * degrees, - atan2$1(z, sqrt$2(x * x + y * y)) * degrees - ]; - } : function() { - return [x0 * degrees, y0 * degrees]; - }; - - interpolate.distance = d; - - return interpolate; -} - -var identity$5 = x => x; - -var areaSum = new Adder(), - areaRingSum = new Adder(), - x00$2, - y00$2, - x0$3, - y0$3; - -var areaStream = { - point: noop$1, - lineStart: noop$1, - lineEnd: noop$1, - polygonStart: function() { - areaStream.lineStart = areaRingStart; - areaStream.lineEnd = areaRingEnd; - }, - polygonEnd: function() { - areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop$1; - areaSum.add(abs$1(areaRingSum)); - areaRingSum = new Adder(); - }, - result: function() { - var area = areaSum / 2; - areaSum = new Adder(); - return area; - } -}; - -function areaRingStart() { - areaStream.point = areaPointFirst; -} - -function areaPointFirst(x, y) { - areaStream.point = areaPoint; - x00$2 = x0$3 = x, y00$2 = y0$3 = y; -} - -function areaPoint(x, y) { - areaRingSum.add(y0$3 * x - x0$3 * y); - x0$3 = x, y0$3 = y; -} - -function areaRingEnd() { - areaPoint(x00$2, y00$2); -} - -var x0$2 = Infinity, - y0$2 = x0$2, - x1 = -x0$2, - y1 = x1; - -var boundsStream = { - point: boundsPoint, - lineStart: noop$1, - lineEnd: noop$1, - polygonStart: noop$1, - polygonEnd: noop$1, - result: function() { - var bounds = [[x0$2, y0$2], [x1, y1]]; - x1 = y1 = -(y0$2 = x0$2 = Infinity); - return bounds; - } -}; - -function boundsPoint(x, y) { - if (x < x0$2) x0$2 = x; - if (x > x1) x1 = x; - if (y < y0$2) y0$2 = y; - if (y > y1) y1 = y; -} - -// TODO Enforce positive area for exterior, negative area for interior? - -var X0 = 0, - Y0 = 0, - Z0 = 0, - X1 = 0, - Y1 = 0, - Z1 = 0, - X2 = 0, - Y2 = 0, - Z2 = 0, - x00$1, - y00$1, - x0$1, - y0$1; - -var centroidStream = { - point: centroidPoint, - lineStart: centroidLineStart, - lineEnd: centroidLineEnd, - polygonStart: function() { - centroidStream.lineStart = centroidRingStart; - centroidStream.lineEnd = centroidRingEnd; - }, - polygonEnd: function() { - centroidStream.point = centroidPoint; - centroidStream.lineStart = centroidLineStart; - centroidStream.lineEnd = centroidLineEnd; - }, - result: function() { - var centroid = Z2 ? [X2 / Z2, Y2 / Z2] - : Z1 ? [X1 / Z1, Y1 / Z1] - : Z0 ? [X0 / Z0, Y0 / Z0] - : [NaN, NaN]; - X0 = Y0 = Z0 = - X1 = Y1 = Z1 = - X2 = Y2 = Z2 = 0; - return centroid; - } -}; - -function centroidPoint(x, y) { - X0 += x; - Y0 += y; - ++Z0; -} - -function centroidLineStart() { - centroidStream.point = centroidPointFirstLine; -} - -function centroidPointFirstLine(x, y) { - centroidStream.point = centroidPointLine; - centroidPoint(x0$1 = x, y0$1 = y); -} - -function centroidPointLine(x, y) { - var dx = x - x0$1, dy = y - y0$1, z = sqrt$2(dx * dx + dy * dy); - X1 += z * (x0$1 + x) / 2; - Y1 += z * (y0$1 + y) / 2; - Z1 += z; - centroidPoint(x0$1 = x, y0$1 = y); -} - -function centroidLineEnd() { - centroidStream.point = centroidPoint; -} - -function centroidRingStart() { - centroidStream.point = centroidPointFirstRing; -} - -function centroidRingEnd() { - centroidPointRing(x00$1, y00$1); -} - -function centroidPointFirstRing(x, y) { - centroidStream.point = centroidPointRing; - centroidPoint(x00$1 = x0$1 = x, y00$1 = y0$1 = y); -} - -function centroidPointRing(x, y) { - var dx = x - x0$1, - dy = y - y0$1, - z = sqrt$2(dx * dx + dy * dy); - - X1 += z * (x0$1 + x) / 2; - Y1 += z * (y0$1 + y) / 2; - Z1 += z; - - z = y0$1 * x - x0$1 * y; - X2 += z * (x0$1 + x); - Y2 += z * (y0$1 + y); - Z2 += z * 3; - centroidPoint(x0$1 = x, y0$1 = y); -} - -function PathContext(context) { - this._context = context; -} - -PathContext.prototype = { - _radius: 4.5, - pointRadius: function(_) { - return this._radius = _, this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._context.closePath(); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._context.moveTo(x, y); - this._point = 1; - break; - } - case 1: { - this._context.lineTo(x, y); - break; - } - default: { - this._context.moveTo(x + this._radius, y); - this._context.arc(x, y, this._radius, 0, tau$1); - break; - } - } - }, - result: noop$1 -}; - -var lengthSum = new Adder(), - lengthRing, - x00, - y00, - x0, - y0; - -var lengthStream = { - point: noop$1, - lineStart: function() { - lengthStream.point = lengthPointFirst; - }, - lineEnd: function() { - if (lengthRing) lengthPoint(x00, y00); - lengthStream.point = noop$1; - }, - polygonStart: function() { - lengthRing = true; - }, - polygonEnd: function() { - lengthRing = null; - }, - result: function() { - var length = +lengthSum; - lengthSum = new Adder(); - return length; - } -}; - -function lengthPointFirst(x, y) { - lengthStream.point = lengthPoint; - x00 = x0 = x, y00 = y0 = y; -} - -function lengthPoint(x, y) { - x0 -= x, y0 -= y; - lengthSum.add(sqrt$2(x0 * x0 + y0 * y0)); - x0 = x, y0 = y; -} - -// Simple caching for constant-radius points. -let cacheDigits, cacheAppend, cacheRadius, cacheCircle; - -class PathString { - constructor(digits) { - this._append = digits == null ? append : appendRound(digits); - this._radius = 4.5; - this._ = ""; - } - pointRadius(_) { - this._radius = +_; - return this; - } - polygonStart() { - this._line = 0; - } - polygonEnd() { - this._line = NaN; - } - lineStart() { - this._point = 0; - } - lineEnd() { - if (this._line === 0) this._ += "Z"; - this._point = NaN; - } - point(x, y) { - switch (this._point) { - case 0: { - this._append`M${x},${y}`; - this._point = 1; - break; - } - case 1: { - this._append`L${x},${y}`; - break; - } - default: { - this._append`M${x},${y}`; - if (this._radius !== cacheRadius || this._append !== cacheAppend) { - const r = this._radius; - const s = this._; - this._ = ""; // stash the old string so we can cache the circle path fragment - this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`; - cacheRadius = r; - cacheAppend = this._append; - cacheCircle = this._; - this._ = s; - } - this._ += cacheCircle; - break; - } - } - } - result() { - const result = this._; - this._ = ""; - return result.length ? result : null; - } -} - -function append(strings) { - let i = 1; - this._ += strings[0]; - for (const j = strings.length; i < j; ++i) { - this._ += arguments[i] + strings[i]; - } -} - -function appendRound(digits) { - const d = Math.floor(digits); - if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`); - if (d > 15) return append; - if (d !== cacheDigits) { - const k = 10 ** d; - cacheDigits = d; - cacheAppend = function append(strings) { - let i = 1; - this._ += strings[0]; - for (const j = strings.length; i < j; ++i) { - this._ += Math.round(arguments[i] * k) / k + strings[i]; - } - }; - } - return cacheAppend; -} - -function index$2(projection, context) { - let digits = 3, - pointRadius = 4.5, - projectionStream, - contextStream; - - function path(object) { - if (object) { - if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); - geoStream(object, projectionStream(contextStream)); - } - return contextStream.result(); - } - - path.area = function(object) { - geoStream(object, projectionStream(areaStream)); - return areaStream.result(); - }; - - path.measure = function(object) { - geoStream(object, projectionStream(lengthStream)); - return lengthStream.result(); - }; - - path.bounds = function(object) { - geoStream(object, projectionStream(boundsStream)); - return boundsStream.result(); - }; - - path.centroid = function(object) { - geoStream(object, projectionStream(centroidStream)); - return centroidStream.result(); - }; - - path.projection = function(_) { - if (!arguments.length) return projection; - projectionStream = _ == null ? (projection = null, identity$5) : (projection = _).stream; - return path; - }; - - path.context = function(_) { - if (!arguments.length) return context; - contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _); - if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); - return path; - }; - - path.pointRadius = function(_) { - if (!arguments.length) return pointRadius; - pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); - return path; - }; - - path.digits = function(_) { - if (!arguments.length) return digits; - if (_ == null) digits = null; - else { - const d = Math.floor(_); - if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`); - digits = d; - } - if (context === null) contextStream = new PathString(digits); - return path; - }; - - return path.projection(projection).digits(digits).context(context); -} - -function transform$1(methods) { - return { - stream: transformer$3(methods) - }; -} - -function transformer$3(methods) { - return function(stream) { - var s = new TransformStream; - for (var key in methods) s[key] = methods[key]; - s.stream = stream; - return s; - }; -} - -function TransformStream() {} - -TransformStream.prototype = { - constructor: TransformStream, - point: function(x, y) { this.stream.point(x, y); }, - sphere: function() { this.stream.sphere(); }, - lineStart: function() { this.stream.lineStart(); }, - lineEnd: function() { this.stream.lineEnd(); }, - polygonStart: function() { this.stream.polygonStart(); }, - polygonEnd: function() { this.stream.polygonEnd(); } -}; - -function fit(projection, fitBounds, object) { - var clip = projection.clipExtent && projection.clipExtent(); - projection.scale(150).translate([0, 0]); - if (clip != null) projection.clipExtent(null); - geoStream(object, projection.stream(boundsStream)); - fitBounds(boundsStream.result()); - if (clip != null) projection.clipExtent(clip); - return projection; -} - -function fitExtent(projection, extent, object) { - return fit(projection, function(b) { - var w = extent[1][0] - extent[0][0], - h = extent[1][1] - extent[0][1], - k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), - x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, - y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitSize(projection, size, object) { - return fitExtent(projection, [[0, 0], size], object); -} - -function fitWidth(projection, width, object) { - return fit(projection, function(b) { - var w = +width, - k = w / (b[1][0] - b[0][0]), - x = (w - k * (b[1][0] + b[0][0])) / 2, - y = -k * b[0][1]; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitHeight(projection, height, object) { - return fit(projection, function(b) { - var h = +height, - k = h / (b[1][1] - b[0][1]), - x = -k * b[0][0], - y = (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -var maxDepth = 16, // maximum depth of subdivision - cosMinDistance = cos$1(30 * radians); // cos(minimum angular distance) - -function resample(project, delta2) { - return +delta2 ? resample$1(project, delta2) : resampleNone(project); -} - -function resampleNone(project) { - return transformer$3({ - point: function(x, y) { - x = project(x, y); - this.stream.point(x[0], x[1]); - } - }); -} - -function resample$1(project, delta2) { - - function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) { - var dx = x1 - x0, - dy = y1 - y0, - d2 = dx * dx + dy * dy; - if (d2 > 4 * delta2 && depth--) { - var a = a0 + a1, - b = b0 + b1, - c = c0 + c1, - m = sqrt$2(a * a + b * b + c * c), - phi2 = asin$1(c /= m), - lambda2 = abs$1(abs$1(c) - 1) < epsilon$1 || abs$1(lambda0 - lambda1) < epsilon$1 ? (lambda0 + lambda1) / 2 : atan2$1(b, a), - p = project(lambda2, phi2), - x2 = p[0], - y2 = p[1], - dx2 = x2 - x0, - dy2 = y2 - y0, - dz = dy * dx2 - dx * dy2; - if (dz * dz / d2 > delta2 // perpendicular projected distance - || abs$1((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end - || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream); - stream.point(x2, y2); - resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream); - } - } - } - return function(stream) { - var lambda00, x00, y00, a00, b00, c00, // first point - lambda0, x0, y0, a0, b0, c0; // previous point - - var resampleStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; }, - polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; } - }; - - function point(x, y) { - x = project(x, y); - stream.point(x[0], x[1]); - } - - function lineStart() { - x0 = NaN; - resampleStream.point = linePoint; - stream.lineStart(); - } - - function linePoint(lambda, phi) { - var c = cartesian([lambda, phi]), p = project(lambda, phi); - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); - stream.point(x0, y0); - } - - function lineEnd() { - resampleStream.point = point; - stream.lineEnd(); - } - - function ringStart() { - lineStart(); - resampleStream.point = ringPoint; - resampleStream.lineEnd = ringEnd; - } - - function ringPoint(lambda, phi) { - linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; - resampleStream.point = linePoint; - } - - function ringEnd() { - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream); - resampleStream.lineEnd = lineEnd; - lineEnd(); - } - - return resampleStream; - }; -} - -var transformRadians = transformer$3({ - point: function(x, y) { - this.stream.point(x * radians, y * radians); - } -}); - -function transformRotate(rotate) { - return transformer$3({ - point: function(x, y) { - var r = rotate(x, y); - return this.stream.point(r[0], r[1]); - } - }); -} - -function scaleTranslate(k, dx, dy, sx, sy) { - function transform(x, y) { - x *= sx; y *= sy; - return [dx + k * x, dy - k * y]; - } - transform.invert = function(x, y) { - return [(x - dx) / k * sx, (dy - y) / k * sy]; - }; - return transform; -} - -function scaleTranslateRotate(k, dx, dy, sx, sy, alpha) { - if (!alpha) return scaleTranslate(k, dx, dy, sx, sy); - var cosAlpha = cos$1(alpha), - sinAlpha = sin$1(alpha), - a = cosAlpha * k, - b = sinAlpha * k, - ai = cosAlpha / k, - bi = sinAlpha / k, - ci = (sinAlpha * dy - cosAlpha * dx) / k, - fi = (sinAlpha * dx + cosAlpha * dy) / k; - function transform(x, y) { - x *= sx; y *= sy; - return [a * x - b * y + dx, dy - b * x - a * y]; - } - transform.invert = function(x, y) { - return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)]; - }; - return transform; -} - -function projection(project) { - return projectionMutator(function() { return project; })(); -} - -function projectionMutator(projectAt) { - var project, - k = 150, // scale - x = 480, y = 250, // translate - lambda = 0, phi = 0, // center - deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate - alpha = 0, // post-rotate angle - sx = 1, // reflectX - sy = 1, // reflectX - theta = null, preclip = clipAntimeridian, // pre-clip angle - x0 = null, y0, x1, y1, postclip = identity$5, // post-clip extent - delta2 = 0.5, // precision - projectResample, - projectTransform, - projectRotateTransform, - cache, - cacheStream; - - function projection(point) { - return projectRotateTransform(point[0] * radians, point[1] * radians); - } - - function invert(point) { - point = projectRotateTransform.invert(point[0], point[1]); - return point && [point[0] * degrees, point[1] * degrees]; - } - - projection.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream))))); - }; - - projection.preclip = function(_) { - return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip; - }; - - projection.postclip = function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }; - - projection.clipAngle = function(_) { - return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees; - }; - - projection.clipExtent = function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$5) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - projection.scale = function(_) { - return arguments.length ? (k = +_, recenter()) : k; - }; - - projection.translate = function(_) { - return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y]; - }; - - projection.center = function(_) { - return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees]; - }; - - projection.rotate = function(_) { - return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees]; - }; - - projection.angle = function(_) { - return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees; - }; - - projection.reflectX = function(_) { - return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0; - }; - - projection.reflectY = function(_) { - return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0; - }; - - projection.precision = function(_) { - return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt$2(delta2); - }; - - projection.fitExtent = function(extent, object) { - return fitExtent(projection, extent, object); - }; - - projection.fitSize = function(size, object) { - return fitSize(projection, size, object); - }; - - projection.fitWidth = function(width, object) { - return fitWidth(projection, width, object); - }; - - projection.fitHeight = function(height, object) { - return fitHeight(projection, height, object); - }; - - function recenter() { - var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)), - transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha); - rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma); - projectTransform = compose(project, transform); - projectRotateTransform = compose(rotate, projectTransform); - projectResample = resample(projectTransform, delta2); - return reset(); - } - - function reset() { - cache = cacheStream = null; - return projection; - } - - return function() { - project = projectAt.apply(this, arguments); - projection.invert = project.invert && invert; - return recenter(); - }; -} - -function conicProjection(projectAt) { - var phi0 = 0, - phi1 = pi$1 / 3, - m = projectionMutator(projectAt), - p = m(phi0, phi1); - - p.parallels = function(_) { - return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees]; - }; - - return p; -} - -function cylindricalEqualAreaRaw(phi0) { - var cosPhi0 = cos$1(phi0); - - function forward(lambda, phi) { - return [lambda * cosPhi0, sin$1(phi) / cosPhi0]; - } - - forward.invert = function(x, y) { - return [x / cosPhi0, asin$1(y * cosPhi0)]; - }; - - return forward; -} - -function conicEqualAreaRaw(y0, y1) { - var sy0 = sin$1(y0), n = (sy0 + sin$1(y1)) / 2; - - // Are the parallels symmetrical around the Equator? - if (abs$1(n) < epsilon$1) return cylindricalEqualAreaRaw(y0); - - var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt$2(c) / n; - - function project(x, y) { - var r = sqrt$2(c - 2 * n * sin$1(y)) / n; - return [r * sin$1(x *= n), r0 - r * cos$1(x)]; - } - - project.invert = function(x, y) { - var r0y = r0 - y, - l = atan2$1(x, abs$1(r0y)) * sign$1(r0y); - if (r0y * n < 0) - l -= pi$1 * sign$1(x) * sign$1(r0y); - return [l / n, asin$1((c - (x * x + r0y * r0y) * n * n) / (2 * n))]; - }; - - return project; -} - -function conicEqualArea() { - return conicProjection(conicEqualAreaRaw) - .scale(155.424) - .center([0, 33.6442]); -} - -function albers() { - return conicEqualArea() - .parallels([29.5, 45.5]) - .scale(1070) - .translate([480, 250]) - .rotate([96, 0]) - .center([-0.6, 38.7]); -} - -// The projections must have mutually exclusive clip regions on the sphere, -// as this will avoid emitting interleaving lines and polygons. -function multiplex(streams) { - var n = streams.length; - return { - point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); }, - sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); }, - lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); }, - lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); }, - polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); }, - polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); } - }; -} - -// A composite projection for the United States, configured by default for -// 960×500. The projection also works quite well at 960×600 if you change the -// scale to 1285 and adjust the translate accordingly. The set of standard -// parallels for each region comes from USGS, which is published here: -// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers -function albersUsa() { - var cache, - cacheStream, - lower48 = albers(), lower48Point, - alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338 - hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007 - point, pointStream = {point: function(x, y) { point = [x, y]; }}; - - function albersUsa(coordinates) { - var x = coordinates[0], y = coordinates[1]; - return point = null, - (lower48Point.point(x, y), point) - || (alaskaPoint.point(x, y), point) - || (hawaiiPoint.point(x, y), point); - } - - albersUsa.invert = function(coordinates) { - var k = lower48.scale(), - t = lower48.translate(), - x = (coordinates[0] - t[0]) / k, - y = (coordinates[1] - t[1]) / k; - return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska - : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii - : lower48).invert(coordinates); - }; - - albersUsa.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]); - }; - - albersUsa.precision = function(_) { - if (!arguments.length) return lower48.precision(); - lower48.precision(_), alaska.precision(_), hawaii.precision(_); - return reset(); - }; - - albersUsa.scale = function(_) { - if (!arguments.length) return lower48.scale(); - lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_); - return albersUsa.translate(lower48.translate()); - }; - - albersUsa.translate = function(_) { - if (!arguments.length) return lower48.translate(); - var k = lower48.scale(), x = +_[0], y = +_[1]; - - lower48Point = lower48 - .translate(_) - .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]) - .stream(pointStream); - - alaskaPoint = alaska - .translate([x - 0.307 * k, y + 0.201 * k]) - .clipExtent([[x - 0.425 * k + epsilon$1, y + 0.120 * k + epsilon$1], [x - 0.214 * k - epsilon$1, y + 0.234 * k - epsilon$1]]) - .stream(pointStream); - - hawaiiPoint = hawaii - .translate([x - 0.205 * k, y + 0.212 * k]) - .clipExtent([[x - 0.214 * k + epsilon$1, y + 0.166 * k + epsilon$1], [x - 0.115 * k - epsilon$1, y + 0.234 * k - epsilon$1]]) - .stream(pointStream); - - return reset(); - }; - - albersUsa.fitExtent = function(extent, object) { - return fitExtent(albersUsa, extent, object); - }; - - albersUsa.fitSize = function(size, object) { - return fitSize(albersUsa, size, object); - }; - - albersUsa.fitWidth = function(width, object) { - return fitWidth(albersUsa, width, object); - }; - - albersUsa.fitHeight = function(height, object) { - return fitHeight(albersUsa, height, object); - }; - - function reset() { - cache = cacheStream = null; - return albersUsa; - } - - return albersUsa.scale(1070); -} - -function azimuthalRaw(scale) { - return function(x, y) { - var cx = cos$1(x), - cy = cos$1(y), - k = scale(cx * cy); - if (k === Infinity) return [2, 0]; - return [ - k * cy * sin$1(x), - k * sin$1(y) - ]; - } -} - -function azimuthalInvert(angle) { - return function(x, y) { - var z = sqrt$2(x * x + y * y), - c = angle(z), - sc = sin$1(c), - cc = cos$1(c); - return [ - atan2$1(x * sc, z * cc), - asin$1(z && y * sc / z) - ]; - } -} - -var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) { - return sqrt$2(2 / (1 + cxcy)); -}); - -azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) { - return 2 * asin$1(z / 2); -}); - -function azimuthalEqualArea() { - return projection(azimuthalEqualAreaRaw) - .scale(124.75) - .clipAngle(180 - 1e-3); -} - -var azimuthalEquidistantRaw = azimuthalRaw(function(c) { - return (c = acos$1(c)) && c / sin$1(c); -}); - -azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) { - return z; -}); - -function azimuthalEquidistant() { - return projection(azimuthalEquidistantRaw) - .scale(79.4188) - .clipAngle(180 - 1e-3); -} - -function mercatorRaw(lambda, phi) { - return [lambda, log$1(tan((halfPi$1 + phi) / 2))]; -} - -mercatorRaw.invert = function(x, y) { - return [x, 2 * atan(exp(y)) - halfPi$1]; -}; - -function mercator() { - return mercatorProjection(mercatorRaw) - .scale(961 / tau$1); -} - -function mercatorProjection(project) { - var m = projection(project), - center = m.center, - scale = m.scale, - translate = m.translate, - clipExtent = m.clipExtent, - x0 = null, y0, x1, y1; // clip extent - - m.scale = function(_) { - return arguments.length ? (scale(_), reclip()) : scale(); - }; - - m.translate = function(_) { - return arguments.length ? (translate(_), reclip()) : translate(); - }; - - m.center = function(_) { - return arguments.length ? (center(_), reclip()) : center(); - }; - - m.clipExtent = function(_) { - return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - function reclip() { - var k = pi$1 * scale(), - t = m(rotation(m.rotate()).invert([0, 0])); - return clipExtent(x0 == null - ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw - ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] - : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]); - } - - return reclip(); -} - -function tany(y) { - return tan((halfPi$1 + y) / 2); -} - -function conicConformalRaw(y0, y1) { - var cy0 = cos$1(y0), - n = y0 === y1 ? sin$1(y0) : log$1(cy0 / cos$1(y1)) / log$1(tany(y1) / tany(y0)), - f = cy0 * pow$1(tany(y0), n) / n; - - if (!n) return mercatorRaw; - - function project(x, y) { - if (f > 0) { if (y < -halfPi$1 + epsilon$1) y = -halfPi$1 + epsilon$1; } - else { if (y > halfPi$1 - epsilon$1) y = halfPi$1 - epsilon$1; } - var r = f / pow$1(tany(y), n); - return [r * sin$1(n * x), f - r * cos$1(n * x)]; - } - - project.invert = function(x, y) { - var fy = f - y, r = sign$1(n) * sqrt$2(x * x + fy * fy), - l = atan2$1(x, abs$1(fy)) * sign$1(fy); - if (fy * n < 0) - l -= pi$1 * sign$1(x) * sign$1(fy); - return [l / n, 2 * atan(pow$1(f / r, 1 / n)) - halfPi$1]; - }; - - return project; -} - -function conicConformal() { - return conicProjection(conicConformalRaw) - .scale(109.5) - .parallels([30, 30]); -} - -function equirectangularRaw(lambda, phi) { - return [lambda, phi]; -} - -equirectangularRaw.invert = equirectangularRaw; - -function equirectangular() { - return projection(equirectangularRaw) - .scale(152.63); -} - -function conicEquidistantRaw(y0, y1) { - var cy0 = cos$1(y0), - n = y0 === y1 ? sin$1(y0) : (cy0 - cos$1(y1)) / (y1 - y0), - g = cy0 / n + y0; - - if (abs$1(n) < epsilon$1) return equirectangularRaw; - - function project(x, y) { - var gy = g - y, nx = n * x; - return [gy * sin$1(nx), g - gy * cos$1(nx)]; - } - - project.invert = function(x, y) { - var gy = g - y, - l = atan2$1(x, abs$1(gy)) * sign$1(gy); - if (gy * n < 0) - l -= pi$1 * sign$1(x) * sign$1(gy); - return [l / n, g - sign$1(n) * sqrt$2(x * x + gy * gy)]; - }; - - return project; -} - -function conicEquidistant() { - return conicProjection(conicEquidistantRaw) - .scale(131.154) - .center([0, 13.9389]); -} - -var A1 = 1.340264, - A2 = -0.081106, - A3 = 0.000893, - A4 = 0.003796, - M$2 = sqrt$2(3) / 2, - iterations = 12; - -function equalEarthRaw(lambda, phi) { - var l = asin$1(M$2 * sin$1(phi)), l2 = l * l, l6 = l2 * l2 * l2; - return [ - lambda * cos$1(l) / (M$2 * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), - l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - ]; -} - -equalEarthRaw.invert = function(x, y) { - var l = y, l2 = l * l, l6 = l2 * l2 * l2; - for (var i = 0, delta, fy, fpy; i < iterations; ++i) { - fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y; - fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2); - l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2; - if (abs$1(delta) < epsilon2) break; - } - return [ - M$2 * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos$1(l), - asin$1(sin$1(l) / M$2) - ]; -}; - -function equalEarth() { - return projection(equalEarthRaw) - .scale(177.158); -} - -function gnomonicRaw(x, y) { - var cy = cos$1(y), k = cos$1(x) * cy; - return [cy * sin$1(x) / k, sin$1(y) / k]; -} - -gnomonicRaw.invert = azimuthalInvert(atan); - -function gnomonic() { - return projection(gnomonicRaw) - .scale(144.049) - .clipAngle(60); -} - -function identity$4() { - var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect - alpha = 0, ca, sa, // angle - x0 = null, y0, x1, y1, // clip extent - kx = 1, ky = 1, - transform = transformer$3({ - point: function(x, y) { - var p = projection([x, y]); - this.stream.point(p[0], p[1]); - } - }), - postclip = identity$5, - cache, - cacheStream; - - function reset() { - kx = k * sx; - ky = k * sy; - cache = cacheStream = null; - return projection; - } - - function projection (p) { - var x = p[0] * kx, y = p[1] * ky; - if (alpha) { - var t = y * ca - x * sa; - x = x * ca + y * sa; - y = t; - } - return [x + tx, y + ty]; - } - projection.invert = function(p) { - var x = p[0] - tx, y = p[1] - ty; - if (alpha) { - var t = y * ca + x * sa; - x = x * ca - y * sa; - y = t; - } - return [x / kx, y / ky]; - }; - projection.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream)); - }; - projection.postclip = function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }; - projection.clipExtent = function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$5) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - projection.scale = function(_) { - return arguments.length ? (k = +_, reset()) : k; - }; - projection.translate = function(_) { - return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty]; - }; - projection.angle = function(_) { - return arguments.length ? (alpha = _ % 360 * radians, sa = sin$1(alpha), ca = cos$1(alpha), reset()) : alpha * degrees; - }; - projection.reflectX = function(_) { - return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0; - }; - projection.reflectY = function(_) { - return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0; - }; - projection.fitExtent = function(extent, object) { - return fitExtent(projection, extent, object); - }; - projection.fitSize = function(size, object) { - return fitSize(projection, size, object); - }; - projection.fitWidth = function(width, object) { - return fitWidth(projection, width, object); - }; - projection.fitHeight = function(height, object) { - return fitHeight(projection, height, object); - }; - - return projection; -} - -function naturalEarth1Raw(lambda, phi) { - var phi2 = phi * phi, phi4 = phi2 * phi2; - return [ - lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), - phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - ]; -} - -naturalEarth1Raw.invert = function(x, y) { - var phi = y, i = 25, delta; - do { - var phi2 = phi * phi, phi4 = phi2 * phi2; - phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / - (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4))); - } while (abs$1(delta) > epsilon$1 && --i > 0); - return [ - x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), - phi - ]; -}; - -function naturalEarth1() { - return projection(naturalEarth1Raw) - .scale(175.295); -} - -function orthographicRaw(x, y) { - return [cos$1(y) * sin$1(x), sin$1(y)]; -} - -orthographicRaw.invert = azimuthalInvert(asin$1); - -function orthographic() { - return projection(orthographicRaw) - .scale(249.5) - .clipAngle(90 + epsilon$1); -} - -function stereographicRaw(x, y) { - var cy = cos$1(y), k = 1 + cos$1(x) * cy; - return [cy * sin$1(x) / k, sin$1(y) / k]; -} - -stereographicRaw.invert = azimuthalInvert(function(z) { - return 2 * atan(z); -}); - -function stereographic() { - return projection(stereographicRaw) - .scale(250) - .clipAngle(142); -} - -function transverseMercatorRaw(lambda, phi) { - return [log$1(tan((halfPi$1 + phi) / 2)), -lambda]; -} - -transverseMercatorRaw.invert = function(x, y) { - return [-y, 2 * atan(exp(x)) - halfPi$1]; -}; - -function transverseMercator() { - var m = mercatorProjection(transverseMercatorRaw), - center = m.center, - rotate = m.rotate; - - m.center = function(_) { - return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]); - }; - - m.rotate = function(_) { - return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]); - }; - - return rotate([0, 0, 90]) - .scale(159.155); -} - -function defaultSeparation$1(a, b) { - return a.parent === b.parent ? 1 : 2; -} - -function meanX(children) { - return children.reduce(meanXReduce, 0) / children.length; -} - -function meanXReduce(x, c) { - return x + c.x; -} - -function maxY(children) { - return 1 + children.reduce(maxYReduce, 0); -} - -function maxYReduce(y, c) { - return Math.max(y, c.y); -} - -function leafLeft(node) { - var children; - while (children = node.children) node = children[0]; - return node; -} - -function leafRight(node) { - var children; - while (children = node.children) node = children[children.length - 1]; - return node; -} - -function cluster() { - var separation = defaultSeparation$1, - dx = 1, - dy = 1, - nodeSize = false; - - function cluster(root) { - var previousNode, - x = 0; - - // First walk, computing the initial x & y values. - root.eachAfter(function(node) { - var children = node.children; - if (children) { - node.x = meanX(children); - node.y = maxY(children); - } else { - node.x = previousNode ? x += separation(node, previousNode) : 0; - node.y = 0; - previousNode = node; - } - }); - - var left = leafLeft(root), - right = leafRight(root), - x0 = left.x - separation(left, right) / 2, - x1 = right.x + separation(right, left) / 2; - - // Second walk, normalizing x & y to the desired size. - return root.eachAfter(nodeSize ? function(node) { - node.x = (node.x - root.x) * dx; - node.y = (root.y - node.y) * dy; - } : function(node) { - node.x = (node.x - x0) / (x1 - x0) * dx; - node.y = (1 - (root.y ? node.y / root.y : 1)) * dy; - }); - } - - cluster.separation = function(x) { - return arguments.length ? (separation = x, cluster) : separation; - }; - - cluster.size = function(x) { - return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]); - }; - - cluster.nodeSize = function(x) { - return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null); - }; - - return cluster; -} - -function count(node) { - var sum = 0, - children = node.children, - i = children && children.length; - if (!i) sum = 1; - else while (--i >= 0) sum += children[i].value; - node.value = sum; -} - -function node_count() { - return this.eachAfter(count); -} - -function node_each(callback, that) { - let index = -1; - for (const node of this) { - callback.call(that, node, ++index, this); - } - return this; -} - -function node_eachBefore(callback, that) { - var node = this, nodes = [node], children, i, index = -1; - while (node = nodes.pop()) { - callback.call(that, node, ++index, this); - if (children = node.children) { - for (i = children.length - 1; i >= 0; --i) { - nodes.push(children[i]); - } - } - } - return this; -} - -function node_eachAfter(callback, that) { - var node = this, nodes = [node], next = [], children, i, n, index = -1; - while (node = nodes.pop()) { - next.push(node); - if (children = node.children) { - for (i = 0, n = children.length; i < n; ++i) { - nodes.push(children[i]); - } - } - } - while (node = next.pop()) { - callback.call(that, node, ++index, this); - } - return this; -} - -function node_find(callback, that) { - let index = -1; - for (const node of this) { - if (callback.call(that, node, ++index, this)) { - return node; - } - } -} - -function node_sum(value) { - return this.eachAfter(function(node) { - var sum = +value(node.data) || 0, - children = node.children, - i = children && children.length; - while (--i >= 0) sum += children[i].value; - node.value = sum; - }); -} - -function node_sort(compare) { - return this.eachBefore(function(node) { - if (node.children) { - node.children.sort(compare); - } - }); -} - -function node_path(end) { - var start = this, - ancestor = leastCommonAncestor(start, end), - nodes = [start]; - while (start !== ancestor) { - start = start.parent; - nodes.push(start); - } - var k = nodes.length; - while (end !== ancestor) { - nodes.splice(k, 0, end); - end = end.parent; - } - return nodes; -} - -function leastCommonAncestor(a, b) { - if (a === b) return a; - var aNodes = a.ancestors(), - bNodes = b.ancestors(), - c = null; - a = aNodes.pop(); - b = bNodes.pop(); - while (a === b) { - c = a; - a = aNodes.pop(); - b = bNodes.pop(); - } - return c; -} - -function node_ancestors() { - var node = this, nodes = [node]; - while (node = node.parent) { - nodes.push(node); - } - return nodes; -} - -function node_descendants() { - return Array.from(this); -} - -function node_leaves() { - var leaves = []; - this.eachBefore(function(node) { - if (!node.children) { - leaves.push(node); - } - }); - return leaves; -} - -function node_links() { - var root = this, links = []; - root.each(function(node) { - if (node !== root) { // Don’t include the root’s parent, if any. - links.push({source: node.parent, target: node}); - } - }); - return links; -} - -function* node_iterator() { - var node = this, current, next = [node], children, i, n; - do { - current = next.reverse(), next = []; - while (node = current.pop()) { - yield node; - if (children = node.children) { - for (i = 0, n = children.length; i < n; ++i) { - next.push(children[i]); - } - } - } - } while (next.length); -} - -function hierarchy(data, children) { - if (data instanceof Map) { - data = [undefined, data]; - if (children === undefined) children = mapChildren; - } else if (children === undefined) { - children = objectChildren; - } - - var root = new Node$1(data), - node, - nodes = [root], - child, - childs, - i, - n; - - while (node = nodes.pop()) { - if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) { - node.children = childs; - for (i = n - 1; i >= 0; --i) { - nodes.push(child = childs[i] = new Node$1(childs[i])); - child.parent = node; - child.depth = node.depth + 1; - } - } - } - - return root.eachBefore(computeHeight); -} - -function node_copy() { - return hierarchy(this).eachBefore(copyData); -} - -function objectChildren(d) { - return d.children; -} - -function mapChildren(d) { - return Array.isArray(d) ? d[1] : null; -} - -function copyData(node) { - if (node.data.value !== undefined) node.value = node.data.value; - node.data = node.data.data; -} - -function computeHeight(node) { - var height = 0; - do node.height = height; - while ((node = node.parent) && (node.height < ++height)); -} - -function Node$1(data) { - this.data = data; - this.depth = - this.height = 0; - this.parent = null; -} - -Node$1.prototype = hierarchy.prototype = { - constructor: Node$1, - count: node_count, - each: node_each, - eachAfter: node_eachAfter, - eachBefore: node_eachBefore, - find: node_find, - sum: node_sum, - sort: node_sort, - path: node_path, - ancestors: node_ancestors, - descendants: node_descendants, - leaves: node_leaves, - links: node_links, - copy: node_copy, - [Symbol.iterator]: node_iterator -}; - -function optional(f) { - return f == null ? null : required(f); -} - -function required(f) { - if (typeof f !== "function") throw new Error; - return f; -} - -function constantZero() { - return 0; -} - -function constant$2(x) { - return function() { - return x; - }; -} - -// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use -const a$2 = 1664525; -const c$4 = 1013904223; -const m$2 = 4294967296; // 2^32 - -function lcg$1() { - let s = 1; - return () => (s = (a$2 * s + c$4) % m$2) / m$2; -} - -function array$1(x) { - return typeof x === "object" && "length" in x - ? x // Array, TypedArray, NodeList, array-like - : Array.from(x); // Map, Set, iterable, string, or anything else -} - -function shuffle(array, random) { - let m = array.length, - t, - i; - - while (m) { - i = random() * m-- | 0; - t = array[m]; - array[m] = array[i]; - array[i] = t; - } - - return array; -} - -function enclose(circles) { - return packEncloseRandom(circles, lcg$1()); -} - -function packEncloseRandom(circles, random) { - var i = 0, n = (circles = shuffle(Array.from(circles), random)).length, B = [], p, e; - - while (i < n) { - p = circles[i]; - if (e && enclosesWeak(e, p)) ++i; - else e = encloseBasis(B = extendBasis(B, p)), i = 0; - } - - return e; -} - -function extendBasis(B, p) { - var i, j; - - if (enclosesWeakAll(p, B)) return [p]; - - // If we get here then B must have at least one element. - for (i = 0; i < B.length; ++i) { - if (enclosesNot(p, B[i]) - && enclosesWeakAll(encloseBasis2(B[i], p), B)) { - return [B[i], p]; - } - } - - // If we get here then B must have at least two elements. - for (i = 0; i < B.length - 1; ++i) { - for (j = i + 1; j < B.length; ++j) { - if (enclosesNot(encloseBasis2(B[i], B[j]), p) - && enclosesNot(encloseBasis2(B[i], p), B[j]) - && enclosesNot(encloseBasis2(B[j], p), B[i]) - && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) { - return [B[i], B[j], p]; - } - } - } - - // If we get here then something is very wrong. - throw new Error; -} - -function enclosesNot(a, b) { - var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y; - return dr < 0 || dr * dr < dx * dx + dy * dy; -} - -function enclosesWeak(a, b) { - var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y; - return dr > 0 && dr * dr > dx * dx + dy * dy; -} - -function enclosesWeakAll(a, B) { - for (var i = 0; i < B.length; ++i) { - if (!enclosesWeak(a, B[i])) { - return false; - } - } - return true; -} - -function encloseBasis(B) { - switch (B.length) { - case 1: return encloseBasis1(B[0]); - case 2: return encloseBasis2(B[0], B[1]); - case 3: return encloseBasis3(B[0], B[1], B[2]); - } -} - -function encloseBasis1(a) { - return { - x: a.x, - y: a.y, - r: a.r - }; -} - -function encloseBasis2(a, b) { - var x1 = a.x, y1 = a.y, r1 = a.r, - x2 = b.x, y2 = b.y, r2 = b.r, - x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1, - l = Math.sqrt(x21 * x21 + y21 * y21); - return { - x: (x1 + x2 + x21 / l * r21) / 2, - y: (y1 + y2 + y21 / l * r21) / 2, - r: (l + r1 + r2) / 2 - }; -} - -function encloseBasis3(a, b, c) { - var x1 = a.x, y1 = a.y, r1 = a.r, - x2 = b.x, y2 = b.y, r2 = b.r, - x3 = c.x, y3 = c.y, r3 = c.r, - a2 = x1 - x2, - a3 = x1 - x3, - b2 = y1 - y2, - b3 = y1 - y3, - c2 = r2 - r1, - c3 = r3 - r1, - d1 = x1 * x1 + y1 * y1 - r1 * r1, - d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, - d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, - ab = a3 * b2 - a2 * b3, - xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, - xb = (b3 * c2 - b2 * c3) / ab, - ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, - yb = (a2 * c3 - a3 * c2) / ab, - A = xb * xb + yb * yb - 1, - B = 2 * (r1 + xa * xb + ya * yb), - C = xa * xa + ya * ya - r1 * r1, - r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); - return { - x: x1 + xa + xb * r, - y: y1 + ya + yb * r, - r: r - }; -} - -function place(b, a, c) { - var dx = b.x - a.x, x, a2, - dy = b.y - a.y, y, b2, - d2 = dx * dx + dy * dy; - if (d2) { - a2 = a.r + c.r, a2 *= a2; - b2 = b.r + c.r, b2 *= b2; - if (a2 > b2) { - x = (d2 + b2 - a2) / (2 * d2); - y = Math.sqrt(Math.max(0, b2 / d2 - x * x)); - c.x = b.x - x * dx - y * dy; - c.y = b.y - x * dy + y * dx; - } else { - x = (d2 + a2 - b2) / (2 * d2); - y = Math.sqrt(Math.max(0, a2 / d2 - x * x)); - c.x = a.x + x * dx - y * dy; - c.y = a.y + x * dy + y * dx; - } - } else { - c.x = a.x + c.r; - c.y = a.y; - } -} - -function intersects(a, b) { - var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y; - return dr > 0 && dr * dr > dx * dx + dy * dy; -} - -function score(node) { - var a = node._, - b = node.next._, - ab = a.r + b.r, - dx = (a.x * b.r + b.x * a.r) / ab, - dy = (a.y * b.r + b.y * a.r) / ab; - return dx * dx + dy * dy; -} - -function Node(circle) { - this._ = circle; - this.next = null; - this.previous = null; -} - -function packSiblingsRandom(circles, random) { - if (!(n = (circles = array$1(circles)).length)) return 0; - - var a, b, c, n, aa, ca, i, j, k, sj, sk; - - // Place the first circle. - a = circles[0], a.x = 0, a.y = 0; - if (!(n > 1)) return a.r; - - // Place the second circle. - b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0; - if (!(n > 2)) return a.r + b.r; - - // Place the third circle. - place(b, a, c = circles[2]); - - // Initialize the front-chain using the first three circles a, b and c. - a = new Node(a), b = new Node(b), c = new Node(c); - a.next = c.previous = b; - b.next = a.previous = c; - c.next = b.previous = a; - - // Attempt to place each remaining circle… - pack: for (i = 3; i < n; ++i) { - place(a._, b._, c = circles[i]), c = new Node(c); - - // Find the closest intersecting circle on the front-chain, if any. - // “Closeness” is determined by linear distance along the front-chain. - // “Ahead” or “behind” is likewise determined by linear distance. - j = b.next, k = a.previous, sj = b._.r, sk = a._.r; - do { - if (sj <= sk) { - if (intersects(j._, c._)) { - b = j, a.next = b, b.previous = a, --i; - continue pack; - } - sj += j._.r, j = j.next; - } else { - if (intersects(k._, c._)) { - a = k, a.next = b, b.previous = a, --i; - continue pack; - } - sk += k._.r, k = k.previous; - } - } while (j !== k.next); - - // Success! Insert the new circle c between a and b. - c.previous = a, c.next = b, a.next = b.previous = b = c; - - // Compute the new closest circle pair to the centroid. - aa = score(a); - while ((c = c.next) !== b) { - if ((ca = score(c)) < aa) { - a = c, aa = ca; - } - } - b = a.next; - } - - // Compute the enclosing circle of the front chain. - a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = packEncloseRandom(a, random); - - // Translate the circles to put the enclosing circle around the origin. - for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y; - - return c.r; -} - -function siblings(circles) { - packSiblingsRandom(circles, lcg$1()); - return circles; -} - -function defaultRadius(d) { - return Math.sqrt(d.value); -} - -function index$1() { - var radius = null, - dx = 1, - dy = 1, - padding = constantZero; - - function pack(root) { - const random = lcg$1(); - root.x = dx / 2, root.y = dy / 2; - if (radius) { - root.eachBefore(radiusLeaf(radius)) - .eachAfter(packChildrenRandom(padding, 0.5, random)) - .eachBefore(translateChild(1)); - } else { - root.eachBefore(radiusLeaf(defaultRadius)) - .eachAfter(packChildrenRandom(constantZero, 1, random)) - .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random)) - .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); - } - return root; - } - - pack.radius = function(x) { - return arguments.length ? (radius = optional(x), pack) : radius; - }; - - pack.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy]; - }; - - pack.padding = function(x) { - return arguments.length ? (padding = typeof x === "function" ? x : constant$2(+x), pack) : padding; - }; - - return pack; -} - -function radiusLeaf(radius) { - return function(node) { - if (!node.children) { - node.r = Math.max(0, +radius(node) || 0); - } - }; -} - -function packChildrenRandom(padding, k, random) { - return function(node) { - if (children = node.children) { - var children, - i, - n = children.length, - r = padding(node) * k || 0, - e; - - if (r) for (i = 0; i < n; ++i) children[i].r += r; - e = packSiblingsRandom(children, random); - if (r) for (i = 0; i < n; ++i) children[i].r -= r; - node.r = e + r; - } - }; -} - -function translateChild(k) { - return function(node) { - var parent = node.parent; - node.r *= k; - if (parent) { - node.x = parent.x + k * node.x; - node.y = parent.y + k * node.y; - } - }; -} - -function roundNode(node) { - node.x0 = Math.round(node.x0); - node.y0 = Math.round(node.y0); - node.x1 = Math.round(node.x1); - node.y1 = Math.round(node.y1); -} - -function treemapDice(parent, x0, y0, x1, y1) { - var nodes = parent.children, - node, - i = -1, - n = nodes.length, - k = parent.value && (x1 - x0) / parent.value; - - while (++i < n) { - node = nodes[i], node.y0 = y0, node.y1 = y1; - node.x0 = x0, node.x1 = x0 += node.value * k; - } -} - -function partition() { - var dx = 1, - dy = 1, - padding = 0, - round = false; - - function partition(root) { - var n = root.height + 1; - root.x0 = - root.y0 = padding; - root.x1 = dx; - root.y1 = dy / n; - root.eachBefore(positionNode(dy, n)); - if (round) root.eachBefore(roundNode); - return root; - } - - function positionNode(dy, n) { - return function(node) { - if (node.children) { - treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n); - } - var x0 = node.x0, - y0 = node.y0, - x1 = node.x1 - padding, - y1 = node.y1 - padding; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - }; - } - - partition.round = function(x) { - return arguments.length ? (round = !!x, partition) : round; - }; - - partition.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy]; - }; - - partition.padding = function(x) { - return arguments.length ? (padding = +x, partition) : padding; - }; - - return partition; -} - -var preroot = {depth: -1}, - ambiguous = {}, - imputed = {}; - -function defaultId(d) { - return d.id; -} - -function defaultParentId(d) { - return d.parentId; -} - -function stratify() { - var id = defaultId, - parentId = defaultParentId, - path; - - function stratify(data) { - var nodes = Array.from(data), - currentId = id, - currentParentId = parentId, - n, - d, - i, - root, - parent, - node, - nodeId, - nodeKey, - nodeByKey = new Map; - - if (path != null) { - const I = nodes.map((d, i) => normalize$1(path(d, i, data))); - const P = I.map(parentof); - const S = new Set(I).add(""); - for (const i of P) { - if (!S.has(i)) { - S.add(i); - I.push(i); - P.push(parentof(i)); - nodes.push(imputed); - } - } - currentId = (_, i) => I[i]; - currentParentId = (_, i) => P[i]; - } - - for (i = 0, n = nodes.length; i < n; ++i) { - d = nodes[i], node = nodes[i] = new Node$1(d); - if ((nodeId = currentId(d, i, data)) != null && (nodeId += "")) { - nodeKey = node.id = nodeId; - nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node); - } - if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += "")) { - node.parent = nodeId; - } - } - - for (i = 0; i < n; ++i) { - node = nodes[i]; - if (nodeId = node.parent) { - parent = nodeByKey.get(nodeId); - if (!parent) throw new Error("missing: " + nodeId); - if (parent === ambiguous) throw new Error("ambiguous: " + nodeId); - if (parent.children) parent.children.push(node); - else parent.children = [node]; - node.parent = parent; - } else { - if (root) throw new Error("multiple roots"); - root = node; - } - } - - if (!root) throw new Error("no root"); - - // When imputing internal nodes, only introduce roots if needed. - // Then replace the imputed marker data with null. - if (path != null) { - while (root.data === imputed && root.children.length === 1) { - root = root.children[0], --n; - } - for (let i = nodes.length - 1; i >= 0; --i) { - node = nodes[i]; - if (node.data !== imputed) break; - node.data = null; - } - } - - root.parent = preroot; - root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight); - root.parent = null; - if (n > 0) throw new Error("cycle"); - - return root; - } - - stratify.id = function(x) { - return arguments.length ? (id = optional(x), stratify) : id; - }; - - stratify.parentId = function(x) { - return arguments.length ? (parentId = optional(x), stratify) : parentId; - }; - - stratify.path = function(x) { - return arguments.length ? (path = optional(x), stratify) : path; - }; - - return stratify; -} - -// To normalize a path, we coerce to a string, strip the trailing slash if any -// (as long as the trailing slash is not immediately preceded by another slash), -// and add leading slash if missing. -function normalize$1(path) { - path = `${path}`; - let i = path.length; - if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1); - return path[0] === "/" ? path : `/${path}`; -} - -// Walk backwards to find the first slash that is not the leading slash, e.g.: -// "/foo/bar" ⇥ "/foo", "/foo" ⇥ "/", "/" ↦ "". (The root is special-cased -// because the id of the root must be a truthy value.) -function parentof(path) { - let i = path.length; - if (i < 2) return ""; - while (--i > 1) if (slash(path, i)) break; - return path.slice(0, i); -} - -// Slashes can be escaped; to determine whether a slash is a path delimiter, we -// count the number of preceding backslashes escaping the forward slash: an odd -// number indicates an escaped forward slash. -function slash(path, i) { - if (path[i] === "/") { - let k = 0; - while (i > 0 && path[--i] === "\\") ++k; - if ((k & 1) === 0) return true; - } - return false; -} - -function defaultSeparation(a, b) { - return a.parent === b.parent ? 1 : 2; -} - -// function radialSeparation(a, b) { -// return (a.parent === b.parent ? 1 : 2) / a.depth; -// } - -// This function is used to traverse the left contour of a subtree (or -// subforest). It returns the successor of v on this contour. This successor is -// either given by the leftmost child of v or by the thread of v. The function -// returns null if and only if v is on the highest level of its subtree. -function nextLeft(v) { - var children = v.children; - return children ? children[0] : v.t; -} - -// This function works analogously to nextLeft. -function nextRight(v) { - var children = v.children; - return children ? children[children.length - 1] : v.t; -} - -// Shifts the current subtree rooted at w+. This is done by increasing -// prelim(w+) and mod(w+) by shift. -function moveSubtree(wm, wp, shift) { - var change = shift / (wp.i - wm.i); - wp.c -= change; - wp.s += shift; - wm.c += change; - wp.z += shift; - wp.m += shift; -} - -// All other shifts, applied to the smaller subtrees between w- and w+, are -// performed by this function. To prepare the shifts, we have to adjust -// change(w+), shift(w+), and change(w-). -function executeShifts(v) { - var shift = 0, - change = 0, - children = v.children, - i = children.length, - w; - while (--i >= 0) { - w = children[i]; - w.z += shift; - w.m += shift; - shift += w.s + (change += w.c); - } -} - -// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise, -// returns the specified (default) ancestor. -function nextAncestor(vim, v, ancestor) { - return vim.a.parent === v.parent ? vim.a : ancestor; -} - -function TreeNode(node, i) { - this._ = node; - this.parent = null; - this.children = null; - this.A = null; // default ancestor - this.a = this; // ancestor - this.z = 0; // prelim - this.m = 0; // mod - this.c = 0; // change - this.s = 0; // shift - this.t = null; // thread - this.i = i; // number -} - -TreeNode.prototype = Object.create(Node$1.prototype); - -function treeRoot(root) { - var tree = new TreeNode(root, 0), - node, - nodes = [tree], - child, - children, - i, - n; - - while (node = nodes.pop()) { - if (children = node._.children) { - node.children = new Array(n = children.length); - for (i = n - 1; i >= 0; --i) { - nodes.push(child = node.children[i] = new TreeNode(children[i], i)); - child.parent = node; - } - } - } - - (tree.parent = new TreeNode(null, 0)).children = [tree]; - return tree; -} - -// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm -function tree() { - var separation = defaultSeparation, - dx = 1, - dy = 1, - nodeSize = null; - - function tree(root) { - var t = treeRoot(root); - - // Compute the layout using Buchheim et al.’s algorithm. - t.eachAfter(firstWalk), t.parent.m = -t.z; - t.eachBefore(secondWalk); - - // If a fixed node size is specified, scale x and y. - if (nodeSize) root.eachBefore(sizeNode); - - // If a fixed tree size is specified, scale x and y based on the extent. - // Compute the left-most, right-most, and depth-most nodes for extents. - else { - var left = root, - right = root, - bottom = root; - root.eachBefore(function(node) { - if (node.x < left.x) left = node; - if (node.x > right.x) right = node; - if (node.depth > bottom.depth) bottom = node; - }); - var s = left === right ? 1 : separation(left, right) / 2, - tx = s - left.x, - kx = dx / (right.x + s + tx), - ky = dy / (bottom.depth || 1); - root.eachBefore(function(node) { - node.x = (node.x + tx) * kx; - node.y = node.depth * ky; - }); - } - - return root; - } - - // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is - // applied recursively to the children of v, as well as the function - // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the - // node v is placed to the midpoint of its outermost children. - function firstWalk(v) { - var children = v.children, - siblings = v.parent.children, - w = v.i ? siblings[v.i - 1] : null; - if (children) { - executeShifts(v); - var midpoint = (children[0].z + children[children.length - 1].z) / 2; - if (w) { - v.z = w.z + separation(v._, w._); - v.m = v.z - midpoint; - } else { - v.z = midpoint; - } - } else if (w) { - v.z = w.z + separation(v._, w._); - } - v.parent.A = apportion(v, w, v.parent.A || siblings[0]); - } - - // Computes all real x-coordinates by summing up the modifiers recursively. - function secondWalk(v) { - v._.x = v.z + v.parent.m; - v.m += v.parent.m; - } - - // The core of the algorithm. Here, a new subtree is combined with the - // previous subtrees. Threads are used to traverse the inside and outside - // contours of the left and right subtree up to the highest common level. The - // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the - // superscript o means outside and i means inside, the subscript - means left - // subtree and + means right subtree. For summing up the modifiers along the - // contour, we use respective variables si+, si-, so-, and so+. Whenever two - // nodes of the inside contours conflict, we compute the left one of the - // greatest uncommon ancestors using the function ANCESTOR and call MOVE - // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees. - // Finally, we add a new thread (if necessary). - function apportion(v, w, ancestor) { - if (w) { - var vip = v, - vop = v, - vim = w, - vom = vip.parent.children[0], - sip = vip.m, - sop = vop.m, - sim = vim.m, - som = vom.m, - shift; - while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) { - vom = nextLeft(vom); - vop = nextRight(vop); - vop.a = v; - shift = vim.z + sim - vip.z - sip + separation(vim._, vip._); - if (shift > 0) { - moveSubtree(nextAncestor(vim, v, ancestor), v, shift); - sip += shift; - sop += shift; - } - sim += vim.m; - sip += vip.m; - som += vom.m; - sop += vop.m; - } - if (vim && !nextRight(vop)) { - vop.t = vim; - vop.m += sim - sop; - } - if (vip && !nextLeft(vom)) { - vom.t = vip; - vom.m += sip - som; - ancestor = v; - } - } - return ancestor; - } - - function sizeNode(node) { - node.x *= dx; - node.y = node.depth * dy; - } - - tree.separation = function(x) { - return arguments.length ? (separation = x, tree) : separation; - }; - - tree.size = function(x) { - return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]); - }; - - tree.nodeSize = function(x) { - return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null); - }; - - return tree; -} - -function treemapSlice(parent, x0, y0, x1, y1) { - var nodes = parent.children, - node, - i = -1, - n = nodes.length, - k = parent.value && (y1 - y0) / parent.value; - - while (++i < n) { - node = nodes[i], node.x0 = x0, node.x1 = x1; - node.y0 = y0, node.y1 = y0 += node.value * k; - } -} - -var phi = (1 + Math.sqrt(5)) / 2; - -function squarifyRatio(ratio, parent, x0, y0, x1, y1) { - var rows = [], - nodes = parent.children, - row, - nodeValue, - i0 = 0, - i1 = 0, - n = nodes.length, - dx, dy, - value = parent.value, - sumValue, - minValue, - maxValue, - newRatio, - minRatio, - alpha, - beta; - - while (i0 < n) { - dx = x1 - x0, dy = y1 - y0; - - // Find the next non-empty node. - do sumValue = nodes[i1++].value; while (!sumValue && i1 < n); - minValue = maxValue = sumValue; - alpha = Math.max(dy / dx, dx / dy) / (value * ratio); - beta = sumValue * sumValue * alpha; - minRatio = Math.max(maxValue / beta, beta / minValue); - - // Keep adding nodes while the aspect ratio maintains or improves. - for (; i1 < n; ++i1) { - sumValue += nodeValue = nodes[i1].value; - if (nodeValue < minValue) minValue = nodeValue; - if (nodeValue > maxValue) maxValue = nodeValue; - beta = sumValue * sumValue * alpha; - newRatio = Math.max(maxValue / beta, beta / minValue); - if (newRatio > minRatio) { sumValue -= nodeValue; break; } - minRatio = newRatio; - } - - // Position and record the row orientation. - rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)}); - if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1); - else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1); - value -= sumValue, i0 = i1; - } - - return rows; -} - -var squarify = (function custom(ratio) { - - function squarify(parent, x0, y0, x1, y1) { - squarifyRatio(ratio, parent, x0, y0, x1, y1); - } - - squarify.ratio = function(x) { - return custom((x = +x) > 1 ? x : 1); - }; - - return squarify; -})(phi); - -function index() { - var tile = squarify, - round = false, - dx = 1, - dy = 1, - paddingStack = [0], - paddingInner = constantZero, - paddingTop = constantZero, - paddingRight = constantZero, - paddingBottom = constantZero, - paddingLeft = constantZero; - - function treemap(root) { - root.x0 = - root.y0 = 0; - root.x1 = dx; - root.y1 = dy; - root.eachBefore(positionNode); - paddingStack = [0]; - if (round) root.eachBefore(roundNode); - return root; - } - - function positionNode(node) { - var p = paddingStack[node.depth], - x0 = node.x0 + p, - y0 = node.y0 + p, - x1 = node.x1 - p, - y1 = node.y1 - p; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - if (node.children) { - p = paddingStack[node.depth + 1] = paddingInner(node) / 2; - x0 += paddingLeft(node) - p; - y0 += paddingTop(node) - p; - x1 -= paddingRight(node) - p; - y1 -= paddingBottom(node) - p; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - tile(node, x0, y0, x1, y1); - } - } - - treemap.round = function(x) { - return arguments.length ? (round = !!x, treemap) : round; - }; - - treemap.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy]; - }; - - treemap.tile = function(x) { - return arguments.length ? (tile = required(x), treemap) : tile; - }; - - treemap.padding = function(x) { - return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner(); - }; - - treemap.paddingInner = function(x) { - return arguments.length ? (paddingInner = typeof x === "function" ? x : constant$2(+x), treemap) : paddingInner; - }; - - treemap.paddingOuter = function(x) { - return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop(); - }; - - treemap.paddingTop = function(x) { - return arguments.length ? (paddingTop = typeof x === "function" ? x : constant$2(+x), treemap) : paddingTop; - }; - - treemap.paddingRight = function(x) { - return arguments.length ? (paddingRight = typeof x === "function" ? x : constant$2(+x), treemap) : paddingRight; - }; - - treemap.paddingBottom = function(x) { - return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant$2(+x), treemap) : paddingBottom; - }; - - treemap.paddingLeft = function(x) { - return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant$2(+x), treemap) : paddingLeft; - }; - - return treemap; -} - -function binary(parent, x0, y0, x1, y1) { - var nodes = parent.children, - i, n = nodes.length, - sum, sums = new Array(n + 1); - - for (sums[0] = sum = i = 0; i < n; ++i) { - sums[i + 1] = sum += nodes[i].value; - } - - partition(0, n, parent.value, x0, y0, x1, y1); - - function partition(i, j, value, x0, y0, x1, y1) { - if (i >= j - 1) { - var node = nodes[i]; - node.x0 = x0, node.y0 = y0; - node.x1 = x1, node.y1 = y1; - return; - } - - var valueOffset = sums[i], - valueTarget = (value / 2) + valueOffset, - k = i + 1, - hi = j - 1; - - while (k < hi) { - var mid = k + hi >>> 1; - if (sums[mid] < valueTarget) k = mid + 1; - else hi = mid; - } - - if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k; - - var valueLeft = sums[k] - valueOffset, - valueRight = value - valueLeft; - - if ((x1 - x0) > (y1 - y0)) { - var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1; - partition(i, k, valueLeft, x0, y0, xk, y1); - partition(k, j, valueRight, xk, y0, x1, y1); - } else { - var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1; - partition(i, k, valueLeft, x0, y0, x1, yk); - partition(k, j, valueRight, x0, yk, x1, y1); - } - } -} - -function sliceDice(parent, x0, y0, x1, y1) { - (parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1); -} - -var resquarify = (function custom(ratio) { - - function resquarify(parent, x0, y0, x1, y1) { - if ((rows = parent._squarify) && (rows.ratio === ratio)) { - var rows, - row, - nodes, - i, - j = -1, - n, - m = rows.length, - value = parent.value; - - while (++j < m) { - row = rows[j], nodes = row.children; - for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value; - if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1); - else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1); - value -= row.value; - } - } else { - parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1); - rows.ratio = ratio; - } - } - - resquarify.ratio = function(x) { - return custom((x = +x) > 1 ? x : 1); - }; - - return resquarify; -})(phi); - -function area$1(polygon) { - var i = -1, - n = polygon.length, - a, - b = polygon[n - 1], - area = 0; - - while (++i < n) { - a = b; - b = polygon[i]; - area += a[1] * b[0] - a[0] * b[1]; - } - - return area / 2; -} - -function centroid(polygon) { - var i = -1, - n = polygon.length, - x = 0, - y = 0, - a, - b = polygon[n - 1], - c, - k = 0; - - while (++i < n) { - a = b; - b = polygon[i]; - k += c = a[0] * b[1] - b[0] * a[1]; - x += (a[0] + b[0]) * c; - y += (a[1] + b[1]) * c; - } - - return k *= 3, [x / k, y / k]; -} - -// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of -// the 3D cross product in a quadrant I Cartesian coordinate system (+x is -// right, +y is up). Returns a positive value if ABC is counter-clockwise, -// negative if clockwise, and zero if the points are collinear. -function cross$1(a, b, c) { - return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]); -} - -function lexicographicOrder(a, b) { - return a[0] - b[0] || a[1] - b[1]; -} - -// Computes the upper convex hull per the monotone chain algorithm. -// Assumes points.length >= 3, is sorted by x, unique in y. -// Returns an array of indices into points in left-to-right order. -function computeUpperHullIndexes(points) { - const n = points.length, - indexes = [0, 1]; - let size = 2, i; - - for (i = 2; i < n; ++i) { - while (size > 1 && cross$1(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size; - indexes[size++] = i; - } - - return indexes.slice(0, size); // remove popped points -} - -function hull(points) { - if ((n = points.length) < 3) return null; - - var i, - n, - sortedPoints = new Array(n), - flippedPoints = new Array(n); - - for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i]; - sortedPoints.sort(lexicographicOrder); - for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]]; - - var upperIndexes = computeUpperHullIndexes(sortedPoints), - lowerIndexes = computeUpperHullIndexes(flippedPoints); - - // Construct the hull polygon, removing possible duplicate endpoints. - var skipLeft = lowerIndexes[0] === upperIndexes[0], - skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1], - hull = []; - - // Add upper hull in right-to-l order. - // Then add lower hull in left-to-right order. - for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]); - for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]); - - return hull; -} - -function contains(polygon, point) { - var n = polygon.length, - p = polygon[n - 1], - x = point[0], y = point[1], - x0 = p[0], y0 = p[1], - x1, y1, - inside = false; - - for (var i = 0; i < n; ++i) { - p = polygon[i], x1 = p[0], y1 = p[1]; - if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside; - x0 = x1, y0 = y1; - } - - return inside; -} - -function length(polygon) { - var i = -1, - n = polygon.length, - b = polygon[n - 1], - xa, - ya, - xb = b[0], - yb = b[1], - perimeter = 0; - - while (++i < n) { - xa = xb; - ya = yb; - b = polygon[i]; - xb = b[0]; - yb = b[1]; - xa -= xb; - ya -= yb; - perimeter += Math.hypot(xa, ya); - } - - return perimeter; -} - -var defaultSource = Math.random; - -var uniform = (function sourceRandomUniform(source) { - function randomUniform(min, max) { - min = min == null ? 0 : +min; - max = max == null ? 1 : +max; - if (arguments.length === 1) max = min, min = 0; - else max -= min; - return function() { - return source() * max + min; - }; - } - - randomUniform.source = sourceRandomUniform; - - return randomUniform; -})(defaultSource); - -var int = (function sourceRandomInt(source) { - function randomInt(min, max) { - if (arguments.length < 2) max = min, min = 0; - min = Math.floor(min); - max = Math.floor(max) - min; - return function() { - return Math.floor(source() * max + min); - }; - } - - randomInt.source = sourceRandomInt; - - return randomInt; -})(defaultSource); - -var normal = (function sourceRandomNormal(source) { - function randomNormal(mu, sigma) { - var x, r; - mu = mu == null ? 0 : +mu; - sigma = sigma == null ? 1 : +sigma; - return function() { - var y; - - // If available, use the second previously-generated uniform random. - if (x != null) y = x, x = null; - - // Otherwise, generate a new x and y. - else do { - x = source() * 2 - 1; - y = source() * 2 - 1; - r = x * x + y * y; - } while (!r || r > 1); - - return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r); - }; - } - - randomNormal.source = sourceRandomNormal; - - return randomNormal; -})(defaultSource); - -var logNormal = (function sourceRandomLogNormal(source) { - var N = normal.source(source); - - function randomLogNormal() { - var randomNormal = N.apply(this, arguments); - return function() { - return Math.exp(randomNormal()); - }; - } - - randomLogNormal.source = sourceRandomLogNormal; - - return randomLogNormal; -})(defaultSource); - -var irwinHall = (function sourceRandomIrwinHall(source) { - function randomIrwinHall(n) { - if ((n = +n) <= 0) return () => 0; - return function() { - for (var sum = 0, i = n; i > 1; --i) sum += source(); - return sum + i * source(); - }; - } - - randomIrwinHall.source = sourceRandomIrwinHall; - - return randomIrwinHall; -})(defaultSource); - -var bates = (function sourceRandomBates(source) { - var I = irwinHall.source(source); - - function randomBates(n) { - // use limiting distribution at n === 0 - if ((n = +n) === 0) return source; - var randomIrwinHall = I(n); - return function() { - return randomIrwinHall() / n; - }; - } - - randomBates.source = sourceRandomBates; - - return randomBates; -})(defaultSource); - -var exponential = (function sourceRandomExponential(source) { - function randomExponential(lambda) { - return function() { - return -Math.log1p(-source()) / lambda; - }; - } - - randomExponential.source = sourceRandomExponential; - - return randomExponential; -})(defaultSource); - -var pareto = (function sourceRandomPareto(source) { - function randomPareto(alpha) { - if ((alpha = +alpha) < 0) throw new RangeError("invalid alpha"); - alpha = 1 / -alpha; - return function() { - return Math.pow(1 - source(), alpha); - }; - } - - randomPareto.source = sourceRandomPareto; - - return randomPareto; -})(defaultSource); - -var bernoulli = (function sourceRandomBernoulli(source) { - function randomBernoulli(p) { - if ((p = +p) < 0 || p > 1) throw new RangeError("invalid p"); - return function() { - return Math.floor(source() + p); - }; - } - - randomBernoulli.source = sourceRandomBernoulli; - - return randomBernoulli; -})(defaultSource); - -var geometric = (function sourceRandomGeometric(source) { - function randomGeometric(p) { - if ((p = +p) < 0 || p > 1) throw new RangeError("invalid p"); - if (p === 0) return () => Infinity; - if (p === 1) return () => 1; - p = Math.log1p(-p); - return function() { - return 1 + Math.floor(Math.log1p(-source()) / p); - }; - } - - randomGeometric.source = sourceRandomGeometric; - - return randomGeometric; -})(defaultSource); - -var gamma = (function sourceRandomGamma(source) { - var randomNormal = normal.source(source)(); - - function randomGamma(k, theta) { - if ((k = +k) < 0) throw new RangeError("invalid k"); - // degenerate distribution if k === 0 - if (k === 0) return () => 0; - theta = theta == null ? 1 : +theta; - // exponential distribution if k === 1 - if (k === 1) return () => -Math.log1p(-source()) * theta; - - var d = (k < 1 ? k + 1 : k) - 1 / 3, - c = 1 / (3 * Math.sqrt(d)), - multiplier = k < 1 ? () => Math.pow(source(), 1 / k) : () => 1; - return function() { - do { - do { - var x = randomNormal(), - v = 1 + c * x; - } while (v <= 0); - v *= v * v; - var u = 1 - source(); - } while (u >= 1 - 0.0331 * x * x * x * x && Math.log(u) >= 0.5 * x * x + d * (1 - v + Math.log(v))); - return d * v * multiplier() * theta; - }; - } - - randomGamma.source = sourceRandomGamma; - - return randomGamma; -})(defaultSource); - -var beta = (function sourceRandomBeta(source) { - var G = gamma.source(source); - - function randomBeta(alpha, beta) { - var X = G(alpha), - Y = G(beta); - return function() { - var x = X(); - return x === 0 ? 0 : x / (x + Y()); - }; - } - - randomBeta.source = sourceRandomBeta; - - return randomBeta; -})(defaultSource); - -var binomial = (function sourceRandomBinomial(source) { - var G = geometric.source(source), - B = beta.source(source); - - function randomBinomial(n, p) { - n = +n; - if ((p = +p) >= 1) return () => n; - if (p <= 0) return () => 0; - return function() { - var acc = 0, nn = n, pp = p; - while (nn * pp > 16 && nn * (1 - pp) > 16) { - var i = Math.floor((nn + 1) * pp), - y = B(i, nn - i + 1)(); - if (y <= pp) { - acc += i; - nn -= i; - pp = (pp - y) / (1 - y); - } else { - nn = i - 1; - pp /= y; - } - } - var sign = pp < 0.5, - pFinal = sign ? pp : 1 - pp, - g = G(pFinal); - for (var s = g(), k = 0; s <= nn; ++k) s += g(); - return acc + (sign ? k : nn - k); - }; - } - - randomBinomial.source = sourceRandomBinomial; - - return randomBinomial; -})(defaultSource); - -var weibull = (function sourceRandomWeibull(source) { - function randomWeibull(k, a, b) { - var outerFunc; - if ((k = +k) === 0) { - outerFunc = x => -Math.log(x); - } else { - k = 1 / k; - outerFunc = x => Math.pow(x, k); - } - a = a == null ? 0 : +a; - b = b == null ? 1 : +b; - return function() { - return a + b * outerFunc(-Math.log1p(-source())); - }; - } - - randomWeibull.source = sourceRandomWeibull; - - return randomWeibull; -})(defaultSource); - -var cauchy = (function sourceRandomCauchy(source) { - function randomCauchy(a, b) { - a = a == null ? 0 : +a; - b = b == null ? 1 : +b; - return function() { - return a + b * Math.tan(Math.PI * source()); - }; - } - - randomCauchy.source = sourceRandomCauchy; - - return randomCauchy; -})(defaultSource); - -var logistic = (function sourceRandomLogistic(source) { - function randomLogistic(a, b) { - a = a == null ? 0 : +a; - b = b == null ? 1 : +b; - return function() { - var u = source(); - return a + b * Math.log(u / (1 - u)); - }; - } - - randomLogistic.source = sourceRandomLogistic; - - return randomLogistic; -})(defaultSource); - -var poisson = (function sourceRandomPoisson(source) { - var G = gamma.source(source), - B = binomial.source(source); - - function randomPoisson(lambda) { - return function() { - var acc = 0, l = lambda; - while (l > 16) { - var n = Math.floor(0.875 * l), - t = G(n)(); - if (t > l) return acc + B(n - 1, l / t)(); - acc += n; - l -= t; - } - for (var s = -Math.log1p(-source()), k = 0; s <= l; ++k) s -= Math.log1p(-source()); - return acc + k; - }; - } - - randomPoisson.source = sourceRandomPoisson; - - return randomPoisson; -})(defaultSource); - -// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use -const mul = 0x19660D; -const inc = 0x3C6EF35F; -const eps = 1 / 0x100000000; - -function lcg(seed = Math.random()) { - let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0; - return () => (state = mul * state + inc | 0, eps * (state >>> 0)); -} - -function initRange(domain, range) { - switch (arguments.length) { - case 0: break; - case 1: this.range(domain); break; - default: this.range(range).domain(domain); break; - } - return this; -} - -function initInterpolator(domain, interpolator) { - switch (arguments.length) { - case 0: break; - case 1: { - if (typeof domain === "function") this.interpolator(domain); - else this.range(domain); - break; - } - default: { - this.domain(domain); - if (typeof interpolator === "function") this.interpolator(interpolator); - else this.range(interpolator); - break; - } - } - return this; -} - -const implicit = Symbol("implicit"); - -function ordinal() { - var index = new InternMap(), - domain = [], - range = [], - unknown = implicit; - - function scale(d) { - let i = index.get(d); - if (i === undefined) { - if (unknown !== implicit) return unknown; - index.set(d, i = domain.push(d) - 1); - } - return range[i % range.length]; - } - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = [], index = new InternMap(); - for (const value of _) { - if (index.has(value)) continue; - index.set(value, domain.push(value) - 1); - } - return scale; - }; - - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), scale) : range.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return ordinal(domain, range).unknown(unknown); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function band() { - var scale = ordinal().unknown(undefined), - domain = scale.domain, - ordinalRange = scale.range, - r0 = 0, - r1 = 1, - step, - bandwidth, - round = false, - paddingInner = 0, - paddingOuter = 0, - align = 0.5; - - delete scale.unknown; - - function rescale() { - var n = domain().length, - reverse = r1 < r0, - start = reverse ? r1 : r0, - stop = reverse ? r0 : r1; - step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); - if (round) step = Math.floor(step); - start += (stop - start - step * (n - paddingInner)) * align; - bandwidth = step * (1 - paddingInner); - if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); - var values = range$2(n).map(function(i) { return start + step * i; }); - return ordinalRange(reverse ? values.reverse() : values); - } - - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - - scale.range = function(_) { - return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1]; - }; - - scale.rangeRound = function(_) { - return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale(); - }; - - scale.bandwidth = function() { - return bandwidth; - }; - - scale.step = function() { - return step; - }; - - scale.round = function(_) { - return arguments.length ? (round = !!_, rescale()) : round; - }; - - scale.padding = function(_) { - return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; - }; - - scale.paddingInner = function(_) { - return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; - }; - - scale.paddingOuter = function(_) { - return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; - }; - - scale.align = function(_) { - return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; - }; - - scale.copy = function() { - return band(domain(), [r0, r1]) - .round(round) - .paddingInner(paddingInner) - .paddingOuter(paddingOuter) - .align(align); - }; - - return initRange.apply(rescale(), arguments); -} - -function pointish(scale) { - var copy = scale.copy; - - scale.padding = scale.paddingOuter; - delete scale.paddingInner; - delete scale.paddingOuter; - - scale.copy = function() { - return pointish(copy()); - }; - - return scale; -} - -function point$4() { - return pointish(band.apply(null, arguments).paddingInner(1)); -} - -function constants(x) { - return function() { - return x; - }; -} - -function number$1(x) { - return +x; -} - -var unit = [0, 1]; - -function identity$3(x) { - return x; -} - -function normalize(a, b) { - return (b -= (a = +a)) - ? function(x) { return (x - a) / b; } - : constants(isNaN(b) ? NaN : 0.5); -} - -function clamper(a, b) { - var t; - if (a > b) t = a, a = b, b = t; - return function(x) { return Math.max(a, Math.min(b, x)); }; -} - -// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. -// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. -function bimap(domain, range, interpolate) { - var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1]; - if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0); - else d0 = normalize(d0, d1), r0 = interpolate(r0, r1); - return function(x) { return r0(d0(x)); }; -} - -function polymap(domain, range, interpolate) { - var j = Math.min(domain.length, range.length) - 1, - d = new Array(j), - r = new Array(j), - i = -1; - - // Reverse descending domains. - if (domain[j] < domain[0]) { - domain = domain.slice().reverse(); - range = range.slice().reverse(); - } - - while (++i < j) { - d[i] = normalize(domain[i], domain[i + 1]); - r[i] = interpolate(range[i], range[i + 1]); - } - - return function(x) { - var i = bisectRight(domain, x, 1, j) - 1; - return r[i](d[i](x)); - }; -} - -function copy$1(source, target) { - return target - .domain(source.domain()) - .range(source.range()) - .interpolate(source.interpolate()) - .clamp(source.clamp()) - .unknown(source.unknown()); -} - -function transformer$2() { - var domain = unit, - range = unit, - interpolate = interpolate$2, - transform, - untransform, - unknown, - clamp = identity$3, - piecewise, - output, - input; - - function rescale() { - var n = Math.min(domain.length, range.length); - if (clamp !== identity$3) clamp = clamper(domain[0], domain[n - 1]); - piecewise = n > 2 ? polymap : bimap; - output = input = null; - return scale; - } - - function scale(x) { - return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x))); - } - - scale.invert = function(y) { - return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y))); - }; - - scale.domain = function(_) { - return arguments.length ? (domain = Array.from(_, number$1), rescale()) : domain.slice(); - }; - - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); - }; - - scale.rangeRound = function(_) { - return range = Array.from(_), interpolate = interpolateRound, rescale(); - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = _ ? true : identity$3, rescale()) : clamp !== identity$3; - }; - - scale.interpolate = function(_) { - return arguments.length ? (interpolate = _, rescale()) : interpolate; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t, u) { - transform = t, untransform = u; - return rescale(); - }; -} - -function continuous() { - return transformer$2()(identity$3, identity$3); -} - -function tickFormat(start, stop, count, specifier) { - var step = tickStep(start, stop, count), - precision; - specifier = formatSpecifier(specifier == null ? ",f" : specifier); - switch (specifier.type) { - case "s": { - var value = Math.max(Math.abs(start), Math.abs(stop)); - if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision; - return formatPrefix(specifier, value); - } - case "": - case "e": - case "g": - case "p": - case "r": { - if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); - break; - } - case "f": - case "%": { - if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2; - break; - } - } - return format(specifier); -} - -function linearish(scale) { - var domain = scale.domain; - - scale.ticks = function(count) { - var d = domain(); - return ticks(d[0], d[d.length - 1], count == null ? 10 : count); - }; - - scale.tickFormat = function(count, specifier) { - var d = domain(); - return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); - }; - - scale.nice = function(count) { - if (count == null) count = 10; - - var d = domain(); - var i0 = 0; - var i1 = d.length - 1; - var start = d[i0]; - var stop = d[i1]; - var prestep; - var step; - var maxIter = 10; - - if (stop < start) { - step = start, start = stop, stop = step; - step = i0, i0 = i1, i1 = step; - } - - while (maxIter-- > 0) { - step = tickIncrement(start, stop, count); - if (step === prestep) { - d[i0] = start; - d[i1] = stop; - return domain(d); - } else if (step > 0) { - start = Math.floor(start / step) * step; - stop = Math.ceil(stop / step) * step; - } else if (step < 0) { - start = Math.ceil(start * step) / step; - stop = Math.floor(stop * step) / step; - } else { - break; - } - prestep = step; - } - - return scale; - }; - - return scale; -} - -function linear() { - var scale = continuous(); - - scale.copy = function() { - return copy$1(scale, linear()); - }; - - initRange.apply(scale, arguments); - - return linearish(scale); -} - -function identity$2(domain) { - var unknown; - - function scale(x) { - return x == null || isNaN(x = +x) ? unknown : x; - } - - scale.invert = scale; - - scale.domain = scale.range = function(_) { - return arguments.length ? (domain = Array.from(_, number$1), scale) : domain.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return identity$2(domain).unknown(unknown); - }; - - domain = arguments.length ? Array.from(domain, number$1) : [0, 1]; - - return linearish(scale); -} - -function nice(domain, interval) { - domain = domain.slice(); - - var i0 = 0, - i1 = domain.length - 1, - x0 = domain[i0], - x1 = domain[i1], - t; - - if (x1 < x0) { - t = i0, i0 = i1, i1 = t; - t = x0, x0 = x1, x1 = t; - } - - domain[i0] = interval.floor(x0); - domain[i1] = interval.ceil(x1); - return domain; -} - -function transformLog(x) { - return Math.log(x); -} - -function transformExp(x) { - return Math.exp(x); -} - -function transformLogn(x) { - return -Math.log(-x); -} - -function transformExpn(x) { - return -Math.exp(-x); -} - -function pow10(x) { - return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; -} - -function powp(base) { - return base === 10 ? pow10 - : base === Math.E ? Math.exp - : x => Math.pow(base, x); -} - -function logp(base) { - return base === Math.E ? Math.log - : base === 10 && Math.log10 - || base === 2 && Math.log2 - || (base = Math.log(base), x => Math.log(x) / base); -} - -function reflect(f) { - return (x, k) => -f(-x, k); -} - -function loggish(transform) { - const scale = transform(transformLog, transformExp); - const domain = scale.domain; - let base = 10; - let logs; - let pows; - - function rescale() { - logs = logp(base), pows = powp(base); - if (domain()[0] < 0) { - logs = reflect(logs), pows = reflect(pows); - transform(transformLogn, transformExpn); - } else { - transform(transformLog, transformExp); - } - return scale; - } - - scale.base = function(_) { - return arguments.length ? (base = +_, rescale()) : base; - }; - - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - - scale.ticks = count => { - const d = domain(); - let u = d[0]; - let v = d[d.length - 1]; - const r = v < u; - - if (r) ([u, v] = [v, u]); - - let i = logs(u); - let j = logs(v); - let k; - let t; - const n = count == null ? 10 : +count; - let z = []; - - if (!(base % 1) && j - i < n) { - i = Math.floor(i), j = Math.ceil(j); - if (u > 0) for (; i <= j; ++i) { - for (k = 1; k < base; ++k) { - t = i < 0 ? k / pows(-i) : k * pows(i); - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } else for (; i <= j; ++i) { - for (k = base - 1; k >= 1; --k) { - t = i > 0 ? k / pows(-i) : k * pows(i); - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } - if (z.length * 2 < n) z = ticks(u, v, n); - } else { - z = ticks(i, j, Math.min(j - i, n)).map(pows); - } - return r ? z.reverse() : z; - }; - - scale.tickFormat = (count, specifier) => { - if (count == null) count = 10; - if (specifier == null) specifier = base === 10 ? "s" : ","; - if (typeof specifier !== "function") { - if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true; - specifier = format(specifier); - } - if (count === Infinity) return specifier; - const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? - return d => { - let i = d / pows(Math.round(logs(d))); - if (i * base < base - 0.5) i *= base; - return i <= k ? specifier(d) : ""; - }; - }; - - scale.nice = () => { - return domain(nice(domain(), { - floor: x => pows(Math.floor(logs(x))), - ceil: x => pows(Math.ceil(logs(x))) - })); - }; - - return scale; -} - -function log() { - const scale = loggish(transformer$2()).domain([1, 10]); - scale.copy = () => copy$1(scale, log()).base(scale.base()); - initRange.apply(scale, arguments); - return scale; -} - -function transformSymlog(c) { - return function(x) { - return Math.sign(x) * Math.log1p(Math.abs(x / c)); - }; -} - -function transformSymexp(c) { - return function(x) { - return Math.sign(x) * Math.expm1(Math.abs(x)) * c; - }; -} - -function symlogish(transform) { - var c = 1, scale = transform(transformSymlog(c), transformSymexp(c)); - - scale.constant = function(_) { - return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c; - }; - - return linearish(scale); -} - -function symlog() { - var scale = symlogish(transformer$2()); - - scale.copy = function() { - return copy$1(scale, symlog()).constant(scale.constant()); - }; - - return initRange.apply(scale, arguments); -} - -function transformPow(exponent) { - return function(x) { - return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent); - }; -} - -function transformSqrt(x) { - return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x); -} - -function transformSquare(x) { - return x < 0 ? -x * x : x * x; -} - -function powish(transform) { - var scale = transform(identity$3, identity$3), - exponent = 1; - - function rescale() { - return exponent === 1 ? transform(identity$3, identity$3) - : exponent === 0.5 ? transform(transformSqrt, transformSquare) - : transform(transformPow(exponent), transformPow(1 / exponent)); - } - - scale.exponent = function(_) { - return arguments.length ? (exponent = +_, rescale()) : exponent; - }; - - return linearish(scale); -} - -function pow() { - var scale = powish(transformer$2()); - - scale.copy = function() { - return copy$1(scale, pow()).exponent(scale.exponent()); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function sqrt$1() { - return pow.apply(null, arguments).exponent(0.5); -} - -function square$1(x) { - return Math.sign(x) * x * x; -} - -function unsquare(x) { - return Math.sign(x) * Math.sqrt(Math.abs(x)); -} - -function radial() { - var squared = continuous(), - range = [0, 1], - round = false, - unknown; - - function scale(x) { - var y = unsquare(squared(x)); - return isNaN(y) ? unknown : round ? Math.round(y) : y; - } - - scale.invert = function(y) { - return squared.invert(square$1(y)); - }; - - scale.domain = function(_) { - return arguments.length ? (squared.domain(_), scale) : squared.domain(); - }; - - scale.range = function(_) { - return arguments.length ? (squared.range((range = Array.from(_, number$1)).map(square$1)), scale) : range.slice(); - }; - - scale.rangeRound = function(_) { - return scale.range(_).round(true); - }; - - scale.round = function(_) { - return arguments.length ? (round = !!_, scale) : round; - }; - - scale.clamp = function(_) { - return arguments.length ? (squared.clamp(_), scale) : squared.clamp(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return radial(squared.domain(), range) - .round(round) - .clamp(squared.clamp()) - .unknown(unknown); - }; - - initRange.apply(scale, arguments); - - return linearish(scale); -} - -function quantile() { - var domain = [], - range = [], - thresholds = [], - unknown; - - function rescale() { - var i = 0, n = Math.max(1, range.length); - thresholds = new Array(n - 1); - while (++i < n) thresholds[i - 1] = quantileSorted(domain, i / n); - return scale; - } - - function scale(x) { - return x == null || isNaN(x = +x) ? unknown : range[bisectRight(thresholds, x)]; - } - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return i < 0 ? [NaN, NaN] : [ - i > 0 ? thresholds[i - 1] : domain[0], - i < thresholds.length ? thresholds[i] : domain[domain.length - 1] - ]; - }; - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending$3); - return rescale(); - }; - - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.quantiles = function() { - return thresholds.slice(); - }; - - scale.copy = function() { - return quantile() - .domain(domain) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(scale, arguments); -} - -function quantize() { - var x0 = 0, - x1 = 1, - n = 1, - domain = [0.5], - range = [0, 1], - unknown; - - function scale(x) { - return x != null && x <= x ? range[bisectRight(domain, x, 0, n)] : unknown; - } - - function rescale() { - var i = -1; - domain = new Array(n); - while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1); - return scale; - } - - scale.domain = function(_) { - return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1]; - }; - - scale.range = function(_) { - return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice(); - }; - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return i < 0 ? [NaN, NaN] - : i < 1 ? [x0, domain[0]] - : i >= n ? [domain[n - 1], x1] - : [domain[i - 1], domain[i]]; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : scale; - }; - - scale.thresholds = function() { - return domain.slice(); - }; - - scale.copy = function() { - return quantize() - .domain([x0, x1]) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(linearish(scale), arguments); -} - -function threshold() { - var domain = [0.5], - range = [0, 1], - unknown, - n = 1; - - function scale(x) { - return x != null && x <= x ? range[bisectRight(domain, x, 0, n)] : unknown; - } - - scale.domain = function(_) { - return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice(); - }; - - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice(); - }; - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return [domain[i - 1], domain[i]]; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return threshold() - .domain(domain) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(scale, arguments); -} - -const t0 = new Date, t1 = new Date; - -function timeInterval(floori, offseti, count, field) { - - function interval(date) { - return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; - } - - interval.floor = (date) => { - return floori(date = new Date(+date)), date; - }; - - interval.ceil = (date) => { - return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; - }; - - interval.round = (date) => { - const d0 = interval(date), d1 = interval.ceil(date); - return date - d0 < d1 - date ? d0 : d1; - }; - - interval.offset = (date, step) => { - return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; - }; - - interval.range = (start, stop, step) => { - const range = []; - start = interval.ceil(start); - step = step == null ? 1 : Math.floor(step); - if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date - let previous; - do range.push(previous = new Date(+start)), offseti(start, step), floori(start); - while (previous < start && start < stop); - return range; - }; - - interval.filter = (test) => { - return timeInterval((date) => { - if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); - }, (date, step) => { - if (date >= date) { - if (step < 0) while (++step <= 0) { - while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty - } else while (--step >= 0) { - while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty - } - } - }); - }; - - if (count) { - interval.count = (start, end) => { - t0.setTime(+start), t1.setTime(+end); - floori(t0), floori(t1); - return Math.floor(count(t0, t1)); - }; - - interval.every = (step) => { - step = Math.floor(step); - return !isFinite(step) || !(step > 0) ? null - : !(step > 1) ? interval - : interval.filter(field - ? (d) => field(d) % step === 0 - : (d) => interval.count(0, d) % step === 0); - }; - } - - return interval; -} - -const millisecond = timeInterval(() => { - // noop -}, (date, step) => { - date.setTime(+date + step); -}, (start, end) => { - return end - start; -}); - -// An optimized implementation for this simple case. -millisecond.every = (k) => { - k = Math.floor(k); - if (!isFinite(k) || !(k > 0)) return null; - if (!(k > 1)) return millisecond; - return timeInterval((date) => { - date.setTime(Math.floor(date / k) * k); - }, (date, step) => { - date.setTime(+date + step * k); - }, (start, end) => { - return (end - start) / k; - }); -}; - -const milliseconds = millisecond.range; - -const durationSecond = 1000; -const durationMinute = durationSecond * 60; -const durationHour = durationMinute * 60; -const durationDay = durationHour * 24; -const durationWeek = durationDay * 7; -const durationMonth = durationDay * 30; -const durationYear = durationDay * 365; - -const second = timeInterval((date) => { - date.setTime(date - date.getMilliseconds()); -}, (date, step) => { - date.setTime(+date + step * durationSecond); -}, (start, end) => { - return (end - start) / durationSecond; -}, (date) => { - return date.getUTCSeconds(); -}); - -const seconds = second.range; - -const timeMinute = timeInterval((date) => { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); -}, (date, step) => { - date.setTime(+date + step * durationMinute); -}, (start, end) => { - return (end - start) / durationMinute; -}, (date) => { - return date.getMinutes(); -}); - -const timeMinutes = timeMinute.range; - -const utcMinute = timeInterval((date) => { - date.setUTCSeconds(0, 0); -}, (date, step) => { - date.setTime(+date + step * durationMinute); -}, (start, end) => { - return (end - start) / durationMinute; -}, (date) => { - return date.getUTCMinutes(); -}); - -const utcMinutes = utcMinute.range; - -const timeHour = timeInterval((date) => { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); -}, (date, step) => { - date.setTime(+date + step * durationHour); -}, (start, end) => { - return (end - start) / durationHour; -}, (date) => { - return date.getHours(); -}); - -const timeHours = timeHour.range; - -const utcHour = timeInterval((date) => { - date.setUTCMinutes(0, 0, 0); -}, (date, step) => { - date.setTime(+date + step * durationHour); -}, (start, end) => { - return (end - start) / durationHour; -}, (date) => { - return date.getUTCHours(); -}); - -const utcHours = utcHour.range; - -const timeDay = timeInterval( - date => date.setHours(0, 0, 0, 0), - (date, step) => date.setDate(date.getDate() + step), - (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay, - date => date.getDate() - 1 -); - -const timeDays = timeDay.range; - -const utcDay = timeInterval((date) => { - date.setUTCHours(0, 0, 0, 0); -}, (date, step) => { - date.setUTCDate(date.getUTCDate() + step); -}, (start, end) => { - return (end - start) / durationDay; -}, (date) => { - return date.getUTCDate() - 1; -}); - -const utcDays = utcDay.range; - -const unixDay = timeInterval((date) => { - date.setUTCHours(0, 0, 0, 0); -}, (date, step) => { - date.setUTCDate(date.getUTCDate() + step); -}, (start, end) => { - return (end - start) / durationDay; -}, (date) => { - return Math.floor(date / durationDay); -}); - -const unixDays = unixDay.range; - -function timeWeekday(i) { - return timeInterval((date) => { - date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); - date.setHours(0, 0, 0, 0); - }, (date, step) => { - date.setDate(date.getDate() + step * 7); - }, (start, end) => { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; - }); -} - -const timeSunday = timeWeekday(0); -const timeMonday = timeWeekday(1); -const timeTuesday = timeWeekday(2); -const timeWednesday = timeWeekday(3); -const timeThursday = timeWeekday(4); -const timeFriday = timeWeekday(5); -const timeSaturday = timeWeekday(6); - -const timeSundays = timeSunday.range; -const timeMondays = timeMonday.range; -const timeTuesdays = timeTuesday.range; -const timeWednesdays = timeWednesday.range; -const timeThursdays = timeThursday.range; -const timeFridays = timeFriday.range; -const timeSaturdays = timeSaturday.range; - -function utcWeekday(i) { - return timeInterval((date) => { - date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); - date.setUTCHours(0, 0, 0, 0); - }, (date, step) => { - date.setUTCDate(date.getUTCDate() + step * 7); - }, (start, end) => { - return (end - start) / durationWeek; - }); -} - -const utcSunday = utcWeekday(0); -const utcMonday = utcWeekday(1); -const utcTuesday = utcWeekday(2); -const utcWednesday = utcWeekday(3); -const utcThursday = utcWeekday(4); -const utcFriday = utcWeekday(5); -const utcSaturday = utcWeekday(6); - -const utcSundays = utcSunday.range; -const utcMondays = utcMonday.range; -const utcTuesdays = utcTuesday.range; -const utcWednesdays = utcWednesday.range; -const utcThursdays = utcThursday.range; -const utcFridays = utcFriday.range; -const utcSaturdays = utcSaturday.range; - -const timeMonth = timeInterval((date) => { - date.setDate(1); - date.setHours(0, 0, 0, 0); -}, (date, step) => { - date.setMonth(date.getMonth() + step); -}, (start, end) => { - return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; -}, (date) => { - return date.getMonth(); -}); - -const timeMonths = timeMonth.range; - -const utcMonth = timeInterval((date) => { - date.setUTCDate(1); - date.setUTCHours(0, 0, 0, 0); -}, (date, step) => { - date.setUTCMonth(date.getUTCMonth() + step); -}, (start, end) => { - return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; -}, (date) => { - return date.getUTCMonth(); -}); - -const utcMonths = utcMonth.range; - -const timeYear = timeInterval((date) => { - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); -}, (date, step) => { - date.setFullYear(date.getFullYear() + step); -}, (start, end) => { - return end.getFullYear() - start.getFullYear(); -}, (date) => { - return date.getFullYear(); -}); - -// An optimized implementation for this simple case. -timeYear.every = (k) => { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => { - date.setFullYear(Math.floor(date.getFullYear() / k) * k); - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); - }, (date, step) => { - date.setFullYear(date.getFullYear() + step * k); - }); -}; - -const timeYears = timeYear.range; - -const utcYear = timeInterval((date) => { - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); -}, (date, step) => { - date.setUTCFullYear(date.getUTCFullYear() + step); -}, (start, end) => { - return end.getUTCFullYear() - start.getUTCFullYear(); -}, (date) => { - return date.getUTCFullYear(); -}); - -// An optimized implementation for this simple case. -utcYear.every = (k) => { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => { - date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - }, (date, step) => { - date.setUTCFullYear(date.getUTCFullYear() + step * k); - }); -}; - -const utcYears = utcYear.range; - -function ticker(year, month, week, day, hour, minute) { - - const tickIntervals = [ - [second, 1, durationSecond], - [second, 5, 5 * durationSecond], - [second, 15, 15 * durationSecond], - [second, 30, 30 * durationSecond], - [minute, 1, durationMinute], - [minute, 5, 5 * durationMinute], - [minute, 15, 15 * durationMinute], - [minute, 30, 30 * durationMinute], - [ hour, 1, durationHour ], - [ hour, 3, 3 * durationHour ], - [ hour, 6, 6 * durationHour ], - [ hour, 12, 12 * durationHour ], - [ day, 1, durationDay ], - [ day, 2, 2 * durationDay ], - [ week, 1, durationWeek ], - [ month, 1, durationMonth ], - [ month, 3, 3 * durationMonth ], - [ year, 1, durationYear ] - ]; - - function ticks(start, stop, count) { - const reverse = stop < start; - if (reverse) [start, stop] = [stop, start]; - const interval = count && typeof count.range === "function" ? count : tickInterval(start, stop, count); - const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop - return reverse ? ticks.reverse() : ticks; - } - - function tickInterval(start, stop, count) { - const target = Math.abs(stop - start) / count; - const i = bisector(([,, step]) => step).right(tickIntervals, target); - if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count)); - if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1)); - const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; - return t.every(step); - } - - return [ticks, tickInterval]; -} - -const [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute); -const [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute); - -function localDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); - date.setFullYear(d.y); - return date; - } - return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); -} - -function utcDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); - date.setUTCFullYear(d.y); - return date; - } - return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); -} - -function newDate(y, m, d) { - return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0}; -} - -function formatLocale(locale) { - var locale_dateTime = locale.dateTime, - locale_date = locale.date, - locale_time = locale.time, - locale_periods = locale.periods, - locale_weekdays = locale.days, - locale_shortWeekdays = locale.shortDays, - locale_months = locale.months, - locale_shortMonths = locale.shortMonths; - - var periodRe = formatRe(locale_periods), - periodLookup = formatLookup(locale_periods), - weekdayRe = formatRe(locale_weekdays), - weekdayLookup = formatLookup(locale_weekdays), - shortWeekdayRe = formatRe(locale_shortWeekdays), - shortWeekdayLookup = formatLookup(locale_shortWeekdays), - monthRe = formatRe(locale_months), - monthLookup = formatLookup(locale_months), - shortMonthRe = formatRe(locale_shortMonths), - shortMonthLookup = formatLookup(locale_shortMonths); - - var formats = { - "a": formatShortWeekday, - "A": formatWeekday, - "b": formatShortMonth, - "B": formatMonth, - "c": null, - "d": formatDayOfMonth, - "e": formatDayOfMonth, - "f": formatMicroseconds, - "g": formatYearISO, - "G": formatFullYearISO, - "H": formatHour24, - "I": formatHour12, - "j": formatDayOfYear, - "L": formatMilliseconds, - "m": formatMonthNumber, - "M": formatMinutes, - "p": formatPeriod, - "q": formatQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatSeconds, - "u": formatWeekdayNumberMonday, - "U": formatWeekNumberSunday, - "V": formatWeekNumberISO, - "w": formatWeekdayNumberSunday, - "W": formatWeekNumberMonday, - "x": null, - "X": null, - "y": formatYear, - "Y": formatFullYear, - "Z": formatZone, - "%": formatLiteralPercent - }; - - var utcFormats = { - "a": formatUTCShortWeekday, - "A": formatUTCWeekday, - "b": formatUTCShortMonth, - "B": formatUTCMonth, - "c": null, - "d": formatUTCDayOfMonth, - "e": formatUTCDayOfMonth, - "f": formatUTCMicroseconds, - "g": formatUTCYearISO, - "G": formatUTCFullYearISO, - "H": formatUTCHour24, - "I": formatUTCHour12, - "j": formatUTCDayOfYear, - "L": formatUTCMilliseconds, - "m": formatUTCMonthNumber, - "M": formatUTCMinutes, - "p": formatUTCPeriod, - "q": formatUTCQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatUTCSeconds, - "u": formatUTCWeekdayNumberMonday, - "U": formatUTCWeekNumberSunday, - "V": formatUTCWeekNumberISO, - "w": formatUTCWeekdayNumberSunday, - "W": formatUTCWeekNumberMonday, - "x": null, - "X": null, - "y": formatUTCYear, - "Y": formatUTCFullYear, - "Z": formatUTCZone, - "%": formatLiteralPercent - }; - - var parses = { - "a": parseShortWeekday, - "A": parseWeekday, - "b": parseShortMonth, - "B": parseMonth, - "c": parseLocaleDateTime, - "d": parseDayOfMonth, - "e": parseDayOfMonth, - "f": parseMicroseconds, - "g": parseYear, - "G": parseFullYear, - "H": parseHour24, - "I": parseHour24, - "j": parseDayOfYear, - "L": parseMilliseconds, - "m": parseMonthNumber, - "M": parseMinutes, - "p": parsePeriod, - "q": parseQuarter, - "Q": parseUnixTimestamp, - "s": parseUnixTimestampSeconds, - "S": parseSeconds, - "u": parseWeekdayNumberMonday, - "U": parseWeekNumberSunday, - "V": parseWeekNumberISO, - "w": parseWeekdayNumberSunday, - "W": parseWeekNumberMonday, - "x": parseLocaleDate, - "X": parseLocaleTime, - "y": parseYear, - "Y": parseFullYear, - "Z": parseZone, - "%": parseLiteralPercent - }; - - // These recursive directive definitions must be deferred. - formats.x = newFormat(locale_date, formats); - formats.X = newFormat(locale_time, formats); - formats.c = newFormat(locale_dateTime, formats); - utcFormats.x = newFormat(locale_date, utcFormats); - utcFormats.X = newFormat(locale_time, utcFormats); - utcFormats.c = newFormat(locale_dateTime, utcFormats); - - function newFormat(specifier, formats) { - return function(date) { - var string = [], - i = -1, - j = 0, - n = specifier.length, - c, - pad, - format; - - if (!(date instanceof Date)) date = new Date(+date); - - while (++i < n) { - if (specifier.charCodeAt(i) === 37) { - string.push(specifier.slice(j, i)); - if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); - else pad = c === "e" ? " " : "0"; - if (format = formats[c]) c = format(date, pad); - string.push(c); - j = i + 1; - } - } - - string.push(specifier.slice(j, i)); - return string.join(""); - }; - } - - function newParse(specifier, Z) { - return function(string) { - var d = newDate(1900, undefined, 1), - i = parseSpecifier(d, specifier, string += "", 0), - week, day; - if (i != string.length) return null; - - // If a UNIX timestamp is specified, return it. - if ("Q" in d) return new Date(d.Q); - if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); - - // If this is utcParse, never use the local timezone. - if (Z && !("Z" in d)) d.Z = 0; - - // The am-pm flag is 0 for AM, and 1 for PM. - if ("p" in d) d.H = d.H % 12 + d.p * 12; - - // If the month was not specified, inherit from the quarter. - if (d.m === undefined) d.m = "q" in d ? d.q : 0; - - // Convert day-of-week and week-of-year to day-of-year. - if ("V" in d) { - if (d.V < 1 || d.V > 53) return null; - if (!("w" in d)) d.w = 1; - if ("Z" in d) { - week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay(); - week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week); - week = utcDay.offset(week, (d.V - 1) * 7); - d.y = week.getUTCFullYear(); - d.m = week.getUTCMonth(); - d.d = week.getUTCDate() + (d.w + 6) % 7; - } else { - week = localDate(newDate(d.y, 0, 1)), day = week.getDay(); - week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week); - week = timeDay.offset(week, (d.V - 1) * 7); - d.y = week.getFullYear(); - d.m = week.getMonth(); - d.d = week.getDate() + (d.w + 6) % 7; - } - } else if ("W" in d || "U" in d) { - if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; - day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); - d.m = 0; - d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7; - } - - // If a time zone is specified, all fields are interpreted as UTC and then - // offset according to the specified time zone. - if ("Z" in d) { - d.H += d.Z / 100 | 0; - d.M += d.Z % 100; - return utcDate(d); - } - - // Otherwise, all fields are in local time. - return localDate(d); - }; - } - - function parseSpecifier(d, specifier, string, j) { - var i = 0, - n = specifier.length, - m = string.length, - c, - parse; - - while (i < n) { - if (j >= m) return -1; - c = specifier.charCodeAt(i++); - if (c === 37) { - c = specifier.charAt(i++); - parse = parses[c in pads ? specifier.charAt(i++) : c]; - if (!parse || ((j = parse(d, string, j)) < 0)) return -1; - } else if (c != string.charCodeAt(j++)) { - return -1; - } - } - - return j; - } - - function parsePeriod(d, string, i) { - var n = periodRe.exec(string.slice(i)); - return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - - function parseShortWeekday(d, string, i) { - var n = shortWeekdayRe.exec(string.slice(i)); - return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - - function parseWeekday(d, string, i) { - var n = weekdayRe.exec(string.slice(i)); - return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - - function parseShortMonth(d, string, i) { - var n = shortMonthRe.exec(string.slice(i)); - return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - - function parseMonth(d, string, i) { - var n = monthRe.exec(string.slice(i)); - return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; - } - - function parseLocaleDateTime(d, string, i) { - return parseSpecifier(d, locale_dateTime, string, i); - } - - function parseLocaleDate(d, string, i) { - return parseSpecifier(d, locale_date, string, i); - } - - function parseLocaleTime(d, string, i) { - return parseSpecifier(d, locale_time, string, i); - } - - function formatShortWeekday(d) { - return locale_shortWeekdays[d.getDay()]; - } - - function formatWeekday(d) { - return locale_weekdays[d.getDay()]; - } - - function formatShortMonth(d) { - return locale_shortMonths[d.getMonth()]; - } - - function formatMonth(d) { - return locale_months[d.getMonth()]; - } - - function formatPeriod(d) { - return locale_periods[+(d.getHours() >= 12)]; - } - - function formatQuarter(d) { - return 1 + ~~(d.getMonth() / 3); - } - - function formatUTCShortWeekday(d) { - return locale_shortWeekdays[d.getUTCDay()]; - } - - function formatUTCWeekday(d) { - return locale_weekdays[d.getUTCDay()]; - } - - function formatUTCShortMonth(d) { - return locale_shortMonths[d.getUTCMonth()]; - } - - function formatUTCMonth(d) { - return locale_months[d.getUTCMonth()]; - } - - function formatUTCPeriod(d) { - return locale_periods[+(d.getUTCHours() >= 12)]; - } - - function formatUTCQuarter(d) { - return 1 + ~~(d.getUTCMonth() / 3); - } - - return { - format: function(specifier) { - var f = newFormat(specifier += "", formats); - f.toString = function() { return specifier; }; - return f; - }, - parse: function(specifier) { - var p = newParse(specifier += "", false); - p.toString = function() { return specifier; }; - return p; - }, - utcFormat: function(specifier) { - var f = newFormat(specifier += "", utcFormats); - f.toString = function() { return specifier; }; - return f; - }, - utcParse: function(specifier) { - var p = newParse(specifier += "", true); - p.toString = function() { return specifier; }; - return p; - } - }; -} - -var pads = {"-": "", "_": " ", "0": "0"}, - numberRe = /^\s*\d+/, // note: ignores next directive - percentRe = /^%/, - requoteRe = /[\\^$*+?|[\]().{}]/g; - -function pad(value, fill, width) { - var sign = value < 0 ? "-" : "", - string = (sign ? -value : value) + "", - length = string.length; - return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); -} - -function requote(s) { - return s.replace(requoteRe, "\\$&"); -} - -function formatRe(names) { - return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); -} - -function formatLookup(names) { - return new Map(names.map((name, i) => [name.toLowerCase(), i])); -} - -function parseWeekdayNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.w = +n[0], i + n[0].length) : -1; -} - -function parseWeekdayNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.u = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.U = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberISO(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.V = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.W = +n[0], i + n[0].length) : -1; -} - -function parseFullYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 4)); - return n ? (d.y = +n[0], i + n[0].length) : -1; -} - -function parseYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; -} - -function parseZone(d, string, i) { - var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); - return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; -} - -function parseQuarter(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; -} - -function parseMonthNumber(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.m = n[0] - 1, i + n[0].length) : -1; -} - -function parseDayOfMonth(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.d = +n[0], i + n[0].length) : -1; -} - -function parseDayOfYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; -} - -function parseHour24(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.H = +n[0], i + n[0].length) : -1; -} - -function parseMinutes(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.M = +n[0], i + n[0].length) : -1; -} - -function parseSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.S = +n[0], i + n[0].length) : -1; -} - -function parseMilliseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.L = +n[0], i + n[0].length) : -1; -} - -function parseMicroseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 6)); - return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; -} - -function parseLiteralPercent(d, string, i) { - var n = percentRe.exec(string.slice(i, i + 1)); - return n ? i + n[0].length : -1; -} - -function parseUnixTimestamp(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.Q = +n[0], i + n[0].length) : -1; -} - -function parseUnixTimestampSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.s = +n[0], i + n[0].length) : -1; -} - -function formatDayOfMonth(d, p) { - return pad(d.getDate(), p, 2); -} - -function formatHour24(d, p) { - return pad(d.getHours(), p, 2); -} - -function formatHour12(d, p) { - return pad(d.getHours() % 12 || 12, p, 2); -} - -function formatDayOfYear(d, p) { - return pad(1 + timeDay.count(timeYear(d), d), p, 3); -} - -function formatMilliseconds(d, p) { - return pad(d.getMilliseconds(), p, 3); -} - -function formatMicroseconds(d, p) { - return formatMilliseconds(d, p) + "000"; -} - -function formatMonthNumber(d, p) { - return pad(d.getMonth() + 1, p, 2); -} - -function formatMinutes(d, p) { - return pad(d.getMinutes(), p, 2); -} - -function formatSeconds(d, p) { - return pad(d.getSeconds(), p, 2); -} - -function formatWeekdayNumberMonday(d) { - var day = d.getDay(); - return day === 0 ? 7 : day; -} - -function formatWeekNumberSunday(d, p) { - return pad(timeSunday.count(timeYear(d) - 1, d), p, 2); -} - -function dISO(d) { - var day = d.getDay(); - return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d); -} - -function formatWeekNumberISO(d, p) { - d = dISO(d); - return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2); -} - -function formatWeekdayNumberSunday(d) { - return d.getDay(); -} - -function formatWeekNumberMonday(d, p) { - return pad(timeMonday.count(timeYear(d) - 1, d), p, 2); -} - -function formatYear(d, p) { - return pad(d.getFullYear() % 100, p, 2); -} - -function formatYearISO(d, p) { - d = dISO(d); - return pad(d.getFullYear() % 100, p, 2); -} - -function formatFullYear(d, p) { - return pad(d.getFullYear() % 10000, p, 4); -} - -function formatFullYearISO(d, p) { - var day = d.getDay(); - d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d); - return pad(d.getFullYear() % 10000, p, 4); -} - -function formatZone(d) { - var z = d.getTimezoneOffset(); - return (z > 0 ? "-" : (z *= -1, "+")) - + pad(z / 60 | 0, "0", 2) - + pad(z % 60, "0", 2); -} - -function formatUTCDayOfMonth(d, p) { - return pad(d.getUTCDate(), p, 2); -} - -function formatUTCHour24(d, p) { - return pad(d.getUTCHours(), p, 2); -} - -function formatUTCHour12(d, p) { - return pad(d.getUTCHours() % 12 || 12, p, 2); -} - -function formatUTCDayOfYear(d, p) { - return pad(1 + utcDay.count(utcYear(d), d), p, 3); -} - -function formatUTCMilliseconds(d, p) { - return pad(d.getUTCMilliseconds(), p, 3); -} - -function formatUTCMicroseconds(d, p) { - return formatUTCMilliseconds(d, p) + "000"; -} - -function formatUTCMonthNumber(d, p) { - return pad(d.getUTCMonth() + 1, p, 2); -} - -function formatUTCMinutes(d, p) { - return pad(d.getUTCMinutes(), p, 2); -} - -function formatUTCSeconds(d, p) { - return pad(d.getUTCSeconds(), p, 2); -} - -function formatUTCWeekdayNumberMonday(d) { - var dow = d.getUTCDay(); - return dow === 0 ? 7 : dow; -} - -function formatUTCWeekNumberSunday(d, p) { - return pad(utcSunday.count(utcYear(d) - 1, d), p, 2); -} - -function UTCdISO(d) { - var day = d.getUTCDay(); - return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d); -} - -function formatUTCWeekNumberISO(d, p) { - d = UTCdISO(d); - return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2); -} - -function formatUTCWeekdayNumberSunday(d) { - return d.getUTCDay(); -} - -function formatUTCWeekNumberMonday(d, p) { - return pad(utcMonday.count(utcYear(d) - 1, d), p, 2); -} - -function formatUTCYear(d, p) { - return pad(d.getUTCFullYear() % 100, p, 2); -} - -function formatUTCYearISO(d, p) { - d = UTCdISO(d); - return pad(d.getUTCFullYear() % 100, p, 2); -} - -function formatUTCFullYear(d, p) { - return pad(d.getUTCFullYear() % 10000, p, 4); -} - -function formatUTCFullYearISO(d, p) { - var day = d.getUTCDay(); - d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d); - return pad(d.getUTCFullYear() % 10000, p, 4); -} - -function formatUTCZone() { - return "+0000"; -} - -function formatLiteralPercent() { - return "%"; -} - -function formatUnixTimestamp(d) { - return +d; -} - -function formatUnixTimestampSeconds(d) { - return Math.floor(+d / 1000); -} - -var locale; -var timeFormat; -var timeParse; -var utcFormat; -var utcParse; - -defaultLocale({ - dateTime: "%x, %X", - date: "%-m/%-d/%Y", - time: "%-I:%M:%S %p", - periods: ["AM", "PM"], - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] -}); - -function defaultLocale(definition) { - locale = formatLocale(definition); - timeFormat = locale.format; - timeParse = locale.parse; - utcFormat = locale.utcFormat; - utcParse = locale.utcParse; - return locale; -} - -var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; - -function formatIsoNative(date) { - return date.toISOString(); -} - -var formatIso = Date.prototype.toISOString - ? formatIsoNative - : utcFormat(isoSpecifier); - -function parseIsoNative(string) { - var date = new Date(string); - return isNaN(date) ? null : date; -} - -var parseIso = +new Date("2000-01-01T00:00:00.000Z") - ? parseIsoNative - : utcParse(isoSpecifier); - -function date(t) { - return new Date(t); -} - -function number(t) { - return t instanceof Date ? +t : +new Date(+t); -} - -function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) { - var scale = continuous(), - invert = scale.invert, - domain = scale.domain; - - var formatMillisecond = format(".%L"), - formatSecond = format(":%S"), - formatMinute = format("%I:%M"), - formatHour = format("%I %p"), - formatDay = format("%a %d"), - formatWeek = format("%b %d"), - formatMonth = format("%B"), - formatYear = format("%Y"); - - function tickFormat(date) { - return (second(date) < date ? formatMillisecond - : minute(date) < date ? formatSecond - : hour(date) < date ? formatMinute - : day(date) < date ? formatHour - : month(date) < date ? (week(date) < date ? formatDay : formatWeek) - : year(date) < date ? formatMonth - : formatYear)(date); - } - - scale.invert = function(y) { - return new Date(invert(y)); - }; - - scale.domain = function(_) { - return arguments.length ? domain(Array.from(_, number)) : domain().map(date); - }; - - scale.ticks = function(interval) { - var d = domain(); - return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval); - }; - - scale.tickFormat = function(count, specifier) { - return specifier == null ? tickFormat : format(specifier); - }; - - scale.nice = function(interval) { - var d = domain(); - if (!interval || typeof interval.range !== "function") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval); - return interval ? domain(nice(d, interval)) : scale; - }; - - scale.copy = function() { - return copy$1(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format)); - }; - - return scale; -} - -function time() { - return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute, second, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments); -} - -function utcTime() { - return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments); -} - -function transformer$1() { - var x0 = 0, - x1 = 1, - t0, - t1, - k10, - transform, - interpolator = identity$3, - clamp = false, - unknown; - - function scale(x) { - return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x)); - } - - scale.domain = function(_) { - return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1]; - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - function range(interpolate) { - return function(_) { - var r0, r1; - return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)]; - }; - } - - scale.range = range(interpolate$2); - - scale.rangeRound = range(interpolateRound); - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t) { - transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0); - return scale; - }; -} - -function copy(source, target) { - return target - .domain(source.domain()) - .interpolator(source.interpolator()) - .clamp(source.clamp()) - .unknown(source.unknown()); -} - -function sequential() { - var scale = linearish(transformer$1()(identity$3)); - - scale.copy = function() { - return copy(scale, sequential()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialLog() { - var scale = loggish(transformer$1()).domain([1, 10]); - - scale.copy = function() { - return copy(scale, sequentialLog()).base(scale.base()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialSymlog() { - var scale = symlogish(transformer$1()); - - scale.copy = function() { - return copy(scale, sequentialSymlog()).constant(scale.constant()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialPow() { - var scale = powish(transformer$1()); - - scale.copy = function() { - return copy(scale, sequentialPow()).exponent(scale.exponent()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialSqrt() { - return sequentialPow.apply(null, arguments).exponent(0.5); -} - -function sequentialQuantile() { - var domain = [], - interpolator = identity$3; - - function scale(x) { - if (x != null && !isNaN(x = +x)) return interpolator((bisectRight(domain, x, 1) - 1) / (domain.length - 1)); - } - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending$3); - return scale; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.range = function() { - return domain.map((d, i) => interpolator(i / (domain.length - 1))); - }; - - scale.quantiles = function(n) { - return Array.from({length: n + 1}, (_, i) => quantile$1(domain, i / n)); - }; - - scale.copy = function() { - return sequentialQuantile(interpolator).domain(domain); - }; - - return initInterpolator.apply(scale, arguments); -} - -function transformer() { - var x0 = 0, - x1 = 0.5, - x2 = 1, - s = 1, - t0, - t1, - t2, - k10, - k21, - interpolator = identity$3, - transform, - clamp = false, - unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x)); - } - - scale.domain = function(_) { - return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2]; - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - function range(interpolate) { - return function(_) { - var r0, r1, r2; - return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)]; - }; - } - - scale.range = range(interpolate$2); - - scale.rangeRound = range(interpolateRound); - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t) { - transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1; - return scale; - }; -} - -function diverging$1() { - var scale = linearish(transformer()(identity$3)); - - scale.copy = function() { - return copy(scale, diverging$1()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingLog() { - var scale = loggish(transformer()).domain([0.1, 1, 10]); - - scale.copy = function() { - return copy(scale, divergingLog()).base(scale.base()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingSymlog() { - var scale = symlogish(transformer()); - - scale.copy = function() { - return copy(scale, divergingSymlog()).constant(scale.constant()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingPow() { - var scale = powish(transformer()); - - scale.copy = function() { - return copy(scale, divergingPow()).exponent(scale.exponent()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingSqrt() { - return divergingPow.apply(null, arguments).exponent(0.5); -} - -function colors(specifier) { - var n = specifier.length / 6 | 0, colors = new Array(n), i = 0; - while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6); - return colors; -} - -var category10 = colors("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"); - -var Accent = colors("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"); - -var Dark2 = colors("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"); - -var observable10 = colors("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"); - -var Paired = colors("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"); - -var Pastel1 = colors("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"); - -var Pastel2 = colors("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"); - -var Set1 = colors("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"); - -var Set2 = colors("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"); - -var Set3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"); - -var Tableau10 = colors("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"); - -var ramp$1 = scheme => rgbBasis(scheme[scheme.length - 1]); - -var scheme$q = new Array(3).concat( - "d8b365f5f5f55ab4ac", - "a6611adfc27d80cdc1018571", - "a6611adfc27df5f5f580cdc1018571", - "8c510ad8b365f6e8c3c7eae55ab4ac01665e", - "8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e", - "8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e", - "8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e", - "5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30", - "5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30" -).map(colors); - -var BrBG = ramp$1(scheme$q); - -var scheme$p = new Array(3).concat( - "af8dc3f7f7f77fbf7b", - "7b3294c2a5cfa6dba0008837", - "7b3294c2a5cff7f7f7a6dba0008837", - "762a83af8dc3e7d4e8d9f0d37fbf7b1b7837", - "762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837", - "762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837", - "762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837", - "40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b", - "40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b" -).map(colors); - -var PRGn = ramp$1(scheme$p); - -var scheme$o = new Array(3).concat( - "e9a3c9f7f7f7a1d76a", - "d01c8bf1b6dab8e1864dac26", - "d01c8bf1b6daf7f7f7b8e1864dac26", - "c51b7de9a3c9fde0efe6f5d0a1d76a4d9221", - "c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221", - "c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221", - "c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221", - "8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419", - "8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419" -).map(colors); - -var PiYG = ramp$1(scheme$o); - -var scheme$n = new Array(3).concat( - "998ec3f7f7f7f1a340", - "5e3c99b2abd2fdb863e66101", - "5e3c99b2abd2f7f7f7fdb863e66101", - "542788998ec3d8daebfee0b6f1a340b35806", - "542788998ec3d8daebf7f7f7fee0b6f1a340b35806", - "5427888073acb2abd2d8daebfee0b6fdb863e08214b35806", - "5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806", - "2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08", - "2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08" -).map(colors); - -var PuOr = ramp$1(scheme$n); - -var scheme$m = new Array(3).concat( - "ef8a62f7f7f767a9cf", - "ca0020f4a58292c5de0571b0", - "ca0020f4a582f7f7f792c5de0571b0", - "b2182bef8a62fddbc7d1e5f067a9cf2166ac", - "b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac", - "b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac", - "b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac", - "67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061", - "67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061" -).map(colors); - -var RdBu = ramp$1(scheme$m); - -var scheme$l = new Array(3).concat( - "ef8a62ffffff999999", - "ca0020f4a582bababa404040", - "ca0020f4a582ffffffbababa404040", - "b2182bef8a62fddbc7e0e0e09999994d4d4d", - "b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d", - "b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d", - "b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d", - "67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a", - "67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a" -).map(colors); - -var RdGy = ramp$1(scheme$l); - -var scheme$k = new Array(3).concat( - "fc8d59ffffbf91bfdb", - "d7191cfdae61abd9e92c7bb6", - "d7191cfdae61ffffbfabd9e92c7bb6", - "d73027fc8d59fee090e0f3f891bfdb4575b4", - "d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4", - "d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4", - "d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4", - "a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695", - "a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695" -).map(colors); - -var RdYlBu = ramp$1(scheme$k); - -var scheme$j = new Array(3).concat( - "fc8d59ffffbf91cf60", - "d7191cfdae61a6d96a1a9641", - "d7191cfdae61ffffbfa6d96a1a9641", - "d73027fc8d59fee08bd9ef8b91cf601a9850", - "d73027fc8d59fee08bffffbfd9ef8b91cf601a9850", - "d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850", - "d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850", - "a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837", - "a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837" -).map(colors); - -var RdYlGn = ramp$1(scheme$j); - -var scheme$i = new Array(3).concat( - "fc8d59ffffbf99d594", - "d7191cfdae61abdda42b83ba", - "d7191cfdae61ffffbfabdda42b83ba", - "d53e4ffc8d59fee08be6f59899d5943288bd", - "d53e4ffc8d59fee08bffffbfe6f59899d5943288bd", - "d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd", - "d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd", - "9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2", - "9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2" -).map(colors); - -var Spectral = ramp$1(scheme$i); - -var scheme$h = new Array(3).concat( - "e5f5f999d8c92ca25f", - "edf8fbb2e2e266c2a4238b45", - "edf8fbb2e2e266c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b" -).map(colors); - -var BuGn = ramp$1(scheme$h); - -var scheme$g = new Array(3).concat( - "e0ecf49ebcda8856a7", - "edf8fbb3cde38c96c688419d", - "edf8fbb3cde38c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b" -).map(colors); - -var BuPu = ramp$1(scheme$g); - -var scheme$f = new Array(3).concat( - "e0f3dba8ddb543a2ca", - "f0f9e8bae4bc7bccc42b8cbe", - "f0f9e8bae4bc7bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081" -).map(colors); - -var GnBu = ramp$1(scheme$f); - -var scheme$e = new Array(3).concat( - "fee8c8fdbb84e34a33", - "fef0d9fdcc8afc8d59d7301f", - "fef0d9fdcc8afc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000" -).map(colors); - -var OrRd = ramp$1(scheme$e); - -var scheme$d = new Array(3).concat( - "ece2f0a6bddb1c9099", - "f6eff7bdc9e167a9cf02818a", - "f6eff7bdc9e167a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636" -).map(colors); - -var PuBuGn = ramp$1(scheme$d); - -var scheme$c = new Array(3).concat( - "ece7f2a6bddb2b8cbe", - "f1eef6bdc9e174a9cf0570b0", - "f1eef6bdc9e174a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858" -).map(colors); - -var PuBu = ramp$1(scheme$c); - -var scheme$b = new Array(3).concat( - "e7e1efc994c7dd1c77", - "f1eef6d7b5d8df65b0ce1256", - "f1eef6d7b5d8df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f" -).map(colors); - -var PuRd = ramp$1(scheme$b); - -var scheme$a = new Array(3).concat( - "fde0ddfa9fb5c51b8a", - "feebe2fbb4b9f768a1ae017e", - "feebe2fbb4b9f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a" -).map(colors); - -var RdPu = ramp$1(scheme$a); - -var scheme$9 = new Array(3).concat( - "edf8b17fcdbb2c7fb8", - "ffffcca1dab441b6c4225ea8", - "ffffcca1dab441b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58" -).map(colors); - -var YlGnBu = ramp$1(scheme$9); - -var scheme$8 = new Array(3).concat( - "f7fcb9addd8e31a354", - "ffffccc2e69978c679238443", - "ffffccc2e69978c67931a354006837", - "ffffccd9f0a3addd8e78c67931a354006837", - "ffffccd9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529" -).map(colors); - -var YlGn = ramp$1(scheme$8); - -var scheme$7 = new Array(3).concat( - "fff7bcfec44fd95f0e", - "ffffd4fed98efe9929cc4c02", - "ffffd4fed98efe9929d95f0e993404", - "ffffd4fee391fec44ffe9929d95f0e993404", - "ffffd4fee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506" -).map(colors); - -var YlOrBr = ramp$1(scheme$7); - -var scheme$6 = new Array(3).concat( - "ffeda0feb24cf03b20", - "ffffb2fecc5cfd8d3ce31a1c", - "ffffb2fecc5cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026" -).map(colors); - -var YlOrRd = ramp$1(scheme$6); - -var scheme$5 = new Array(3).concat( - "deebf79ecae13182bd", - "eff3ffbdd7e76baed62171b5", - "eff3ffbdd7e76baed63182bd08519c", - "eff3ffc6dbef9ecae16baed63182bd08519c", - "eff3ffc6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b" -).map(colors); - -var Blues = ramp$1(scheme$5); - -var scheme$4 = new Array(3).concat( - "e5f5e0a1d99b31a354", - "edf8e9bae4b374c476238b45", - "edf8e9bae4b374c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b" -).map(colors); - -var Greens = ramp$1(scheme$4); - -var scheme$3 = new Array(3).concat( - "f0f0f0bdbdbd636363", - "f7f7f7cccccc969696525252", - "f7f7f7cccccc969696636363252525", - "f7f7f7d9d9d9bdbdbd969696636363252525", - "f7f7f7d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000" -).map(colors); - -var Greys = ramp$1(scheme$3); - -var scheme$2 = new Array(3).concat( - "efedf5bcbddc756bb1", - "f2f0f7cbc9e29e9ac86a51a3", - "f2f0f7cbc9e29e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d" -).map(colors); - -var Purples = ramp$1(scheme$2); - -var scheme$1 = new Array(3).concat( - "fee0d2fc9272de2d26", - "fee5d9fcae91fb6a4acb181d", - "fee5d9fcae91fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d" -).map(colors); - -var Reds = ramp$1(scheme$1); - -var scheme = new Array(3).concat( - "fee6cefdae6be6550d", - "feeddefdbe85fd8d3cd94701", - "feeddefdbe85fd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704" -).map(colors); - -var Oranges = ramp$1(scheme); - -function cividis(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" - + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + ", " - + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + ", " - + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67))))))) - + ")"; -} - -var cubehelix = cubehelixLong(cubehelix$3(300, 0.5, 0.0), cubehelix$3(-240, 0.5, 1.0)); - -var warm = cubehelixLong(cubehelix$3(-100, 0.75, 0.35), cubehelix$3(80, 1.50, 0.8)); - -var cool = cubehelixLong(cubehelix$3(260, 0.75, 0.35), cubehelix$3(80, 1.50, 0.8)); - -var c$3 = cubehelix$3(); - -function rainbow(t) { - if (t < 0 || t > 1) t -= Math.floor(t); - var ts = Math.abs(t - 0.5); - c$3.h = 360 * t - 100; - c$3.s = 1.5 - 1.5 * ts; - c$3.l = 0.8 - 0.9 * ts; - return c$3 + ""; -} - -var c$2 = rgb(), - pi_1_3 = Math.PI / 3, - pi_2_3 = Math.PI * 2 / 3; - -function sinebow(t) { - var x; - t = (0.5 - t) * Math.PI; - c$2.r = 255 * (x = Math.sin(t)) * x; - c$2.g = 255 * (x = Math.sin(t + pi_1_3)) * x; - c$2.b = 255 * (x = Math.sin(t + pi_2_3)) * x; - return c$2 + ""; -} - -function turbo(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" - + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + ", " - + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + ", " - + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66))))))) - + ")"; -} - -function ramp(range) { - var n = range.length; - return function(t) { - return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; -} - -var viridis = ramp(colors("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")); - -var magma = ramp(colors("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")); - -var inferno = ramp(colors("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")); - -var plasma = ramp(colors("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")); - -function constant$1(x) { - return function constant() { - return x; - }; -} - -const abs = Math.abs; -const atan2 = Math.atan2; -const cos = Math.cos; -const max = Math.max; -const min = Math.min; -const sin = Math.sin; -const sqrt = Math.sqrt; - -const epsilon = 1e-12; -const pi = Math.PI; -const halfPi = pi / 2; -const tau = 2 * pi; - -function acos(x) { - return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); -} - -function asin(x) { - return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x); -} - -function withPath(shape) { - let digits = 3; - - shape.digits = function(_) { - if (!arguments.length) return digits; - if (_ == null) { - digits = null; - } else { - const d = Math.floor(_); - if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`); - digits = d; - } - return shape; - }; - - return () => new Path$1(digits); -} - -function arcInnerRadius(d) { - return d.innerRadius; -} - -function arcOuterRadius(d) { - return d.outerRadius; -} - -function arcStartAngle(d) { - return d.startAngle; -} - -function arcEndAngle(d) { - return d.endAngle; -} - -function arcPadAngle(d) { - return d && d.padAngle; // Note: optional! -} - -function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { - var x10 = x1 - x0, y10 = y1 - y0, - x32 = x3 - x2, y32 = y3 - y2, - t = y32 * x10 - x32 * y10; - if (t * t < epsilon) return; - t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t; - return [x0 + t * x10, y0 + t * y10]; -} - -// Compute perpendicular offset line of length rc. -// http://mathworld.wolfram.com/Circle-LineIntersection.html -function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { - var x01 = x0 - x1, - y01 = y0 - y1, - lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), - ox = lo * y01, - oy = -lo * x01, - x11 = x0 + ox, - y11 = y0 + oy, - x10 = x1 + ox, - y10 = y1 + oy, - x00 = (x11 + x10) / 2, - y00 = (y11 + y10) / 2, - dx = x10 - x11, - dy = y10 - y11, - d2 = dx * dx + dy * dy, - r = r1 - rc, - D = x11 * y10 - x10 * y11, - d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)), - cx0 = (D * dy - dx * d) / d2, - cy0 = (-D * dx - dy * d) / d2, - cx1 = (D * dy + dx * d) / d2, - cy1 = (-D * dx + dy * d) / d2, - dx0 = cx0 - x00, - dy0 = cy0 - y00, - dx1 = cx1 - x00, - dy1 = cy1 - y00; - - // Pick the closer of the two intersection points. - // TODO Is there a faster way to determine which intersection to use? - if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; - - return { - cx: cx0, - cy: cy0, - x01: -ox, - y01: -oy, - x11: cx0 * (r1 / r - 1), - y11: cy0 * (r1 / r - 1) - }; -} - -function arc() { - var innerRadius = arcInnerRadius, - outerRadius = arcOuterRadius, - cornerRadius = constant$1(0), - padRadius = null, - startAngle = arcStartAngle, - endAngle = arcEndAngle, - padAngle = arcPadAngle, - context = null, - path = withPath(arc); - - function arc() { - var buffer, - r, - r0 = +innerRadius.apply(this, arguments), - r1 = +outerRadius.apply(this, arguments), - a0 = startAngle.apply(this, arguments) - halfPi, - a1 = endAngle.apply(this, arguments) - halfPi, - da = abs(a1 - a0), - cw = a1 > a0; - - if (!context) context = buffer = path(); - - // Ensure that the outer radius is always larger than the inner radius. - if (r1 < r0) r = r1, r1 = r0, r0 = r; - - // Is it a point? - if (!(r1 > epsilon)) context.moveTo(0, 0); - - // Or is it a circle or annulus? - else if (da > tau - epsilon) { - context.moveTo(r1 * cos(a0), r1 * sin(a0)); - context.arc(0, 0, r1, a0, a1, !cw); - if (r0 > epsilon) { - context.moveTo(r0 * cos(a1), r0 * sin(a1)); - context.arc(0, 0, r0, a1, a0, cw); - } - } - - // Or is it a circular or annular sector? - else { - var a01 = a0, - a11 = a1, - a00 = a0, - a10 = a1, - da0 = da, - da1 = da, - ap = padAngle.apply(this, arguments) / 2, - rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)), - rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), - rc0 = rc, - rc1 = rc, - t0, - t1; - - // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0. - if (rp > epsilon) { - var p0 = asin(rp / r0 * sin(ap)), - p1 = asin(rp / r1 * sin(ap)); - if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0; - else da0 = 0, a00 = a10 = (a0 + a1) / 2; - if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1; - else da1 = 0, a01 = a11 = (a0 + a1) / 2; - } - - var x01 = r1 * cos(a01), - y01 = r1 * sin(a01), - x10 = r0 * cos(a10), - y10 = r0 * sin(a10); - - // Apply rounded corners? - if (rc > epsilon) { - var x11 = r1 * cos(a11), - y11 = r1 * sin(a11), - x00 = r0 * cos(a00), - y00 = r0 * sin(a00), - oc; - - // Restrict the corner radius according to the sector angle. If this - // intersection fails, it’s probably because the arc is too small, so - // disable the corner radius entirely. - if (da < pi) { - if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) { - var ax = x01 - oc[0], - ay = y01 - oc[1], - bx = x11 - oc[0], - by = y11 - oc[1], - kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2), - lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]); - rc0 = min(rc, (r0 - lc) / (kc - 1)); - rc1 = min(rc, (r1 - lc) / (kc + 1)); - } else { - rc0 = rc1 = 0; - } - } - } - - // Is the sector collapsed to a line? - if (!(da1 > epsilon)) context.moveTo(x01, y01); - - // Does the sector’s outer ring have rounded corners? - else if (rc1 > epsilon) { - t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); - t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); - - context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); - - // Have the corners merged? - if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); - - // Otherwise, draw the two corners and the ring. - else { - context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw); - context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw); - context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw); - } - } - - // Or is the outer ring just a circular arc? - else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); - - // Is there no inner ring, and it’s a circular sector? - // Or perhaps it’s an annular sector collapsed due to padding? - if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10); - - // Does the sector’s inner ring (or point) have rounded corners? - else if (rc0 > epsilon) { - t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); - t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); - - context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); - - // Have the corners merged? - if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); - - // Otherwise, draw the two corners and the ring. - else { - context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw); - context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw); - context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw); - } - } - - // Or is the inner ring just a circular arc? - else context.arc(0, 0, r0, a10, a00, cw); - } - - context.closePath(); - - if (buffer) return context = null, buffer + "" || null; - } - - arc.centroid = function() { - var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, - a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2; - return [cos(a) * r, sin(a) * r]; - }; - - arc.innerRadius = function(_) { - return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant$1(+_), arc) : innerRadius; - }; - - arc.outerRadius = function(_) { - return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant$1(+_), arc) : outerRadius; - }; - - arc.cornerRadius = function(_) { - return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant$1(+_), arc) : cornerRadius; - }; - - arc.padRadius = function(_) { - return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant$1(+_), arc) : padRadius; - }; - - arc.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$1(+_), arc) : startAngle; - }; - - arc.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$1(+_), arc) : endAngle; - }; - - arc.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$1(+_), arc) : padAngle; - }; - - arc.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), arc) : context; - }; - - return arc; -} - -var slice = Array.prototype.slice; - -function array(x) { - return typeof x === "object" && "length" in x - ? x // Array, TypedArray, NodeList, array-like - : Array.from(x); // Map, Set, iterable, string, or anything else -} - -function Linear(context) { - this._context = context; -} - -Linear.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // falls through - default: this._context.lineTo(x, y); break; - } - } -}; - -function curveLinear(context) { - return new Linear(context); -} - -function x$2(p) { - return p[0]; -} - -function y$1(p) { - return p[1]; -} - -function line(x, y) { - var defined = constant$1(true), - context = null, - curve = curveLinear, - output = null, - path = withPath(line); - - x = typeof x === "function" ? x : (x === undefined) ? x$2 : constant$1(x); - y = typeof y === "function" ? y : (y === undefined) ? y$1 : constant$1(y); - - function line(data) { - var i, - n = (data = array(data)).length, - d, - defined0 = false, - buffer; - - if (context == null) output = curve(buffer = path()); - - for (i = 0; i <= n; ++i) { - if (!(i < n && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) output.lineStart(); - else output.lineEnd(); - } - if (defined0) output.point(+x(d, i, data), +y(d, i, data)); - } - - if (buffer) return output = null, buffer + "" || null; - } - - line.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$1(+_), line) : x; - }; - - line.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$1(+_), line) : y; - }; - - line.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$1(!!_), line) : defined; - }; - - line.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; - }; - - line.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; - }; - - return line; -} - -function area(x0, y0, y1) { - var x1 = null, - defined = constant$1(true), - context = null, - curve = curveLinear, - output = null, - path = withPath(area); - - x0 = typeof x0 === "function" ? x0 : (x0 === undefined) ? x$2 : constant$1(+x0); - y0 = typeof y0 === "function" ? y0 : (y0 === undefined) ? constant$1(0) : constant$1(+y0); - y1 = typeof y1 === "function" ? y1 : (y1 === undefined) ? y$1 : constant$1(+y1); - - function area(data) { - var i, - j, - k, - n = (data = array(data)).length, - d, - defined0 = false, - buffer, - x0z = new Array(n), - y0z = new Array(n); - - if (context == null) output = curve(buffer = path()); - - for (i = 0; i <= n; ++i) { - if (!(i < n && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) { - j = i; - output.areaStart(); - output.lineStart(); - } else { - output.lineEnd(); - output.lineStart(); - for (k = i - 1; k >= j; --k) { - output.point(x0z[k], y0z[k]); - } - output.lineEnd(); - output.areaEnd(); - } - } - if (defined0) { - x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data); - output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]); - } - } - - if (buffer) return output = null, buffer + "" || null; - } - - function arealine() { - return line().defined(defined).curve(curve).context(context); - } - - area.x = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$1(+_), x1 = null, area) : x0; - }; - - area.x0 = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$1(+_), area) : x0; - }; - - area.x1 = function(_) { - return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : constant$1(+_), area) : x1; - }; - - area.y = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$1(+_), y1 = null, area) : y0; - }; - - area.y0 = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$1(+_), area) : y0; - }; - - area.y1 = function(_) { - return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : constant$1(+_), area) : y1; - }; - - area.lineX0 = - area.lineY0 = function() { - return arealine().x(x0).y(y0); - }; - - area.lineY1 = function() { - return arealine().x(x0).y(y1); - }; - - area.lineX1 = function() { - return arealine().x(x1).y(y0); - }; - - area.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$1(!!_), area) : defined; - }; - - area.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve; - }; - - area.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context; - }; - - return area; -} - -function descending$1(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -} - -function identity$1(d) { - return d; -} - -function pie() { - var value = identity$1, - sortValues = descending$1, - sort = null, - startAngle = constant$1(0), - endAngle = constant$1(tau), - padAngle = constant$1(0); - - function pie(data) { - var i, - n = (data = array(data)).length, - j, - k, - sum = 0, - index = new Array(n), - arcs = new Array(n), - a0 = +startAngle.apply(this, arguments), - da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)), - a1, - p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), - pa = p * (da < 0 ? -1 : 1), - v; - - for (i = 0; i < n; ++i) { - if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { - sum += v; - } - } - - // Optionally sort the arcs by previously-computed values or by data. - if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); }); - else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); }); - - // Compute the arcs! They are stored in the original data's order. - for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { - j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { - data: data[j], - index: i, - value: v, - startAngle: a0, - endAngle: a1, - padAngle: p - }; - } - - return arcs; - } - - pie.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$1(+_), pie) : value; - }; - - pie.sortValues = function(_) { - return arguments.length ? (sortValues = _, sort = null, pie) : sortValues; - }; - - pie.sort = function(_) { - return arguments.length ? (sort = _, sortValues = null, pie) : sort; - }; - - pie.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$1(+_), pie) : startAngle; - }; - - pie.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$1(+_), pie) : endAngle; - }; - - pie.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$1(+_), pie) : padAngle; - }; - - return pie; -} - -var curveRadialLinear = curveRadial(curveLinear); - -function Radial(curve) { - this._curve = curve; -} - -Radial.prototype = { - areaStart: function() { - this._curve.areaStart(); - }, - areaEnd: function() { - this._curve.areaEnd(); - }, - lineStart: function() { - this._curve.lineStart(); - }, - lineEnd: function() { - this._curve.lineEnd(); - }, - point: function(a, r) { - this._curve.point(r * Math.sin(a), r * -Math.cos(a)); - } -}; - -function curveRadial(curve) { - - function radial(context) { - return new Radial(curve(context)); - } - - radial._curve = curve; - - return radial; -} - -function lineRadial(l) { - var c = l.curve; - - l.angle = l.x, delete l.x; - l.radius = l.y, delete l.y; - - l.curve = function(_) { - return arguments.length ? c(curveRadial(_)) : c()._curve; - }; - - return l; -} - -function lineRadial$1() { - return lineRadial(line().curve(curveRadialLinear)); -} - -function areaRadial() { - var a = area().curve(curveRadialLinear), - c = a.curve, - x0 = a.lineX0, - x1 = a.lineX1, - y0 = a.lineY0, - y1 = a.lineY1; - - a.angle = a.x, delete a.x; - a.startAngle = a.x0, delete a.x0; - a.endAngle = a.x1, delete a.x1; - a.radius = a.y, delete a.y; - a.innerRadius = a.y0, delete a.y0; - a.outerRadius = a.y1, delete a.y1; - a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0; - a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1; - a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0; - a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1; - - a.curve = function(_) { - return arguments.length ? c(curveRadial(_)) : c()._curve; - }; - - return a; -} - -function pointRadial(x, y) { - return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)]; -} - -class Bump { - constructor(context, x) { - this._context = context; - this._x = x; - } - areaStart() { - this._line = 0; - } - areaEnd() { - this._line = NaN; - } - lineStart() { - this._point = 0; - } - lineEnd() { - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - } - point(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: { - this._point = 1; - if (this._line) this._context.lineTo(x, y); - else this._context.moveTo(x, y); - break; - } - case 1: this._point = 2; // falls through - default: { - if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y); - else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y); - break; - } - } - this._x0 = x, this._y0 = y; - } -} - -class BumpRadial { - constructor(context) { - this._context = context; - } - lineStart() { - this._point = 0; - } - lineEnd() {} - point(x, y) { - x = +x, y = +y; - if (this._point === 0) { - this._point = 1; - } else { - const p0 = pointRadial(this._x0, this._y0); - const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2); - const p2 = pointRadial(x, this._y0); - const p3 = pointRadial(x, y); - this._context.moveTo(...p0); - this._context.bezierCurveTo(...p1, ...p2, ...p3); - } - this._x0 = x, this._y0 = y; - } -} - -function bumpX(context) { - return new Bump(context, true); -} - -function bumpY(context) { - return new Bump(context, false); -} - -function bumpRadial(context) { - return new BumpRadial(context); -} - -function linkSource(d) { - return d.source; -} - -function linkTarget(d) { - return d.target; -} - -function link(curve) { - let source = linkSource, - target = linkTarget, - x = x$2, - y = y$1, - context = null, - output = null, - path = withPath(link); - - function link() { - let buffer; - const argv = slice.call(arguments); - const s = source.apply(this, argv); - const t = target.apply(this, argv); - if (context == null) output = curve(buffer = path()); - output.lineStart(); - argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv)); - argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv)); - output.lineEnd(); - if (buffer) return output = null, buffer + "" || null; - } - - link.source = function(_) { - return arguments.length ? (source = _, link) : source; - }; - - link.target = function(_) { - return arguments.length ? (target = _, link) : target; - }; - - link.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$1(+_), link) : x; - }; - - link.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$1(+_), link) : y; - }; - - link.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context; - }; - - return link; -} - -function linkHorizontal() { - return link(bumpX); -} - -function linkVertical() { - return link(bumpY); -} - -function linkRadial() { - const l = link(bumpRadial); - l.angle = l.x, delete l.x; - l.radius = l.y, delete l.y; - return l; -} - -const sqrt3$2 = sqrt(3); - -var asterisk = { - draw(context, size) { - const r = sqrt(size + min(size / 28, 0.75)) * 0.59436; - const t = r / 2; - const u = t * sqrt3$2; - context.moveTo(0, r); - context.lineTo(0, -r); - context.moveTo(-u, -t); - context.lineTo(u, t); - context.moveTo(-u, t); - context.lineTo(u, -t); - } -}; - -var circle = { - draw(context, size) { - const r = sqrt(size / pi); - context.moveTo(r, 0); - context.arc(0, 0, r, 0, tau); - } -}; - -var cross = { - draw(context, size) { - const r = sqrt(size / 5) / 2; - context.moveTo(-3 * r, -r); - context.lineTo(-r, -r); - context.lineTo(-r, -3 * r); - context.lineTo(r, -3 * r); - context.lineTo(r, -r); - context.lineTo(3 * r, -r); - context.lineTo(3 * r, r); - context.lineTo(r, r); - context.lineTo(r, 3 * r); - context.lineTo(-r, 3 * r); - context.lineTo(-r, r); - context.lineTo(-3 * r, r); - context.closePath(); - } -}; - -const tan30 = sqrt(1 / 3); -const tan30_2 = tan30 * 2; - -var diamond = { - draw(context, size) { - const y = sqrt(size / tan30_2); - const x = y * tan30; - context.moveTo(0, -y); - context.lineTo(x, 0); - context.lineTo(0, y); - context.lineTo(-x, 0); - context.closePath(); - } -}; - -var diamond2 = { - draw(context, size) { - const r = sqrt(size) * 0.62625; - context.moveTo(0, -r); - context.lineTo(r, 0); - context.lineTo(0, r); - context.lineTo(-r, 0); - context.closePath(); - } -}; - -var plus = { - draw(context, size) { - const r = sqrt(size - min(size / 7, 2)) * 0.87559; - context.moveTo(-r, 0); - context.lineTo(r, 0); - context.moveTo(0, r); - context.lineTo(0, -r); - } -}; - -var square = { - draw(context, size) { - const w = sqrt(size); - const x = -w / 2; - context.rect(x, x, w, w); - } -}; - -var square2 = { - draw(context, size) { - const r = sqrt(size) * 0.4431; - context.moveTo(r, r); - context.lineTo(r, -r); - context.lineTo(-r, -r); - context.lineTo(-r, r); - context.closePath(); - } -}; - -const ka$1 = 0.89081309152928522810; -const kr = sin(pi / 10) / sin(7 * pi / 10); -const kx = sin(tau / 10) * kr; -const ky = -cos(tau / 10) * kr; - -var star = { - draw(context, size) { - const r = sqrt(size * ka$1); - const x = kx * r; - const y = ky * r; - context.moveTo(0, -r); - context.lineTo(x, y); - for (let i = 1; i < 5; ++i) { - const a = tau * i / 5; - const c = cos(a); - const s = sin(a); - context.lineTo(s * r, -c * r); - context.lineTo(c * x - s * y, s * x + c * y); - } - context.closePath(); - } -}; - -const sqrt3$1 = sqrt(3); - -var triangle = { - draw(context, size) { - const y = -sqrt(size / (sqrt3$1 * 3)); - context.moveTo(0, y * 2); - context.lineTo(-sqrt3$1 * y, -y); - context.lineTo(sqrt3$1 * y, -y); - context.closePath(); - } -}; - -const sqrt3 = sqrt(3); - -var triangle2 = { - draw(context, size) { - const s = sqrt(size) * 0.6824; - const t = s / 2; - const u = (s * sqrt3) / 2; // cos(Math.PI / 6) - context.moveTo(0, -s); - context.lineTo(u, t); - context.lineTo(-u, t); - context.closePath(); - } -}; - -const c$1 = -0.5; -const s$1 = sqrt(3) / 2; -const k$1 = 1 / sqrt(12); -const a$1 = (k$1 / 2 + 1) * 3; - -var wye = { - draw(context, size) { - const r = sqrt(size / a$1); - const x0 = r / 2, y0 = r * k$1; - const x1 = x0, y1 = r * k$1 + r; - const x2 = -x1, y2 = y1; - context.moveTo(x0, y0); - context.lineTo(x1, y1); - context.lineTo(x2, y2); - context.lineTo(c$1 * x0 - s$1 * y0, s$1 * x0 + c$1 * y0); - context.lineTo(c$1 * x1 - s$1 * y1, s$1 * x1 + c$1 * y1); - context.lineTo(c$1 * x2 - s$1 * y2, s$1 * x2 + c$1 * y2); - context.lineTo(c$1 * x0 + s$1 * y0, c$1 * y0 - s$1 * x0); - context.lineTo(c$1 * x1 + s$1 * y1, c$1 * y1 - s$1 * x1); - context.lineTo(c$1 * x2 + s$1 * y2, c$1 * y2 - s$1 * x2); - context.closePath(); - } -}; - -var times = { - draw(context, size) { - const r = sqrt(size - min(size / 6, 1.7)) * 0.6189; - context.moveTo(-r, -r); - context.lineTo(r, r); - context.moveTo(-r, r); - context.lineTo(r, -r); - } -}; - -// These symbols are designed to be filled. -const symbolsFill = [ - circle, - cross, - diamond, - square, - star, - triangle, - wye -]; - -// These symbols are designed to be stroked (with a width of 1.5px and round caps). -const symbolsStroke = [ - circle, - plus, - times, - triangle2, - asterisk, - square2, - diamond2 -]; - -function Symbol$1(type, size) { - let context = null, - path = withPath(symbol); - - type = typeof type === "function" ? type : constant$1(type || circle); - size = typeof size === "function" ? size : constant$1(size === undefined ? 64 : +size); - - function symbol() { - let buffer; - if (!context) context = buffer = path(); - type.apply(this, arguments).draw(context, +size.apply(this, arguments)); - if (buffer) return context = null, buffer + "" || null; - } - - symbol.type = function(_) { - return arguments.length ? (type = typeof _ === "function" ? _ : constant$1(_), symbol) : type; - }; - - symbol.size = function(_) { - return arguments.length ? (size = typeof _ === "function" ? _ : constant$1(+_), symbol) : size; - }; - - symbol.context = function(_) { - return arguments.length ? (context = _ == null ? null : _, symbol) : context; - }; - - return symbol; -} - -function noop() {} - -function point$3(that, x, y) { - that._context.bezierCurveTo( - (2 * that._x0 + that._x1) / 3, - (2 * that._y0 + that._y1) / 3, - (that._x0 + 2 * that._x1) / 3, - (that._y0 + 2 * that._y1) / 3, - (that._x0 + 4 * that._x1 + x) / 6, - (that._y0 + 4 * that._y1 + y) / 6 - ); -} - -function Basis(context) { - this._context = context; -} - -Basis.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 3: point$3(this, this._x1, this._y1); // falls through - case 2: this._context.lineTo(this._x1, this._y1); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basis(context) { - return new Basis(context); -} - -function BasisClosed(context) { - this._context = context; -} - -BasisClosed.prototype = { - areaStart: noop, - areaEnd: noop, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x2, this._y2); - this._context.closePath(); - break; - } - case 2: { - this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); - this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x2, this._y2); - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._x2 = x, this._y2 = y; break; - case 1: this._point = 2; this._x3 = x, this._y3 = y; break; - case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break; - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basisClosed(context) { - return new BasisClosed(context); -} - -function BasisOpen(context) { - this._context = context; -} - -BasisOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; - case 3: this._point = 4; // falls through - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basisOpen(context) { - return new BasisOpen(context); -} - -function Bundle(context, beta) { - this._basis = new Basis(context); - this._beta = beta; -} - -Bundle.prototype = { - lineStart: function() { - this._x = []; - this._y = []; - this._basis.lineStart(); - }, - lineEnd: function() { - var x = this._x, - y = this._y, - j = x.length - 1; - - if (j > 0) { - var x0 = x[0], - y0 = y[0], - dx = x[j] - x0, - dy = y[j] - y0, - i = -1, - t; - - while (++i <= j) { - t = i / j; - this._basis.point( - this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), - this._beta * y[i] + (1 - this._beta) * (y0 + t * dy) - ); - } - } - - this._x = this._y = null; - this._basis.lineEnd(); - }, - point: function(x, y) { - this._x.push(+x); - this._y.push(+y); - } -}; - -var bundle = (function custom(beta) { - - function bundle(context) { - return beta === 1 ? new Basis(context) : new Bundle(context, beta); - } - - bundle.beta = function(beta) { - return custom(+beta); - }; - - return bundle; -})(0.85); - -function point$2(that, x, y) { - that._context.bezierCurveTo( - that._x1 + that._k * (that._x2 - that._x0), - that._y1 + that._k * (that._y2 - that._y0), - that._x2 + that._k * (that._x1 - x), - that._y2 + that._k * (that._y1 - y), - that._x2, - that._y2 - ); -} - -function Cardinal(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -Cardinal.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x2, this._y2); break; - case 3: point$2(this, this._x1, this._y1); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; this._x1 = x, this._y1 = y; break; - case 2: this._point = 3; // falls through - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinal = (function custom(tension) { - - function cardinal(context) { - return new Cardinal(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function CardinalClosed(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -CardinalClosed.prototype = { - areaStart: noop, - areaEnd: noop, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._x3 = x, this._y3 = y; break; - case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; - case 2: this._point = 3; this._x5 = x, this._y5 = y; break; - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinalClosed = (function custom(tension) { - - function cardinal(context) { - return new CardinalClosed(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function CardinalOpen(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -CardinalOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; - case 3: this._point = 4; // falls through - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinalOpen = (function custom(tension) { - - function cardinal(context) { - return new CardinalOpen(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function point$1(that, x, y) { - var x1 = that._x1, - y1 = that._y1, - x2 = that._x2, - y2 = that._y2; - - if (that._l01_a > epsilon) { - var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, - n = 3 * that._l01_a * (that._l01_a + that._l12_a); - x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n; - y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n; - } - - if (that._l23_a > epsilon) { - var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, - m = 3 * that._l23_a * (that._l23_a + that._l12_a); - x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m; - y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m; - } - - that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2); -} - -function CatmullRom(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRom.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x2, this._y2); break; - case 3: this.point(this._x2, this._y2); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; // falls through - default: point$1(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRom = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function CatmullRomClosed(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRomClosed.prototype = { - areaStart: noop, - areaEnd: noop, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; this._x3 = x, this._y3 = y; break; - case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; - case 2: this._point = 3; this._x5 = x, this._y5 = y; break; - default: point$1(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRomClosed = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function CatmullRomOpen(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRomOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; - case 3: this._point = 4; // falls through - default: point$1(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRomOpen = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function LinearClosed(context) { - this._context = context; -} - -LinearClosed.prototype = { - areaStart: noop, - areaEnd: noop, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._point) this._context.closePath(); - }, - point: function(x, y) { - x = +x, y = +y; - if (this._point) this._context.lineTo(x, y); - else this._point = 1, this._context.moveTo(x, y); - } -}; - -function linearClosed(context) { - return new LinearClosed(context); -} - -function sign(x) { - return x < 0 ? -1 : 1; -} - -// Calculate the slopes of the tangents (Hermite-type interpolation) based on -// the following paper: Steffen, M. 1990. A Simple Method for Monotonic -// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. -// NOV(II), P. 443, 1990. -function slope3(that, x2, y2) { - var h0 = that._x1 - that._x0, - h1 = x2 - that._x1, - s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), - s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), - p = (s0 * h1 + s1 * h0) / (h0 + h1); - return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; -} - -// Calculate a one-sided slope. -function slope2(that, t) { - var h = that._x1 - that._x0; - return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; -} - -// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations -// "you can express cubic Hermite interpolation in terms of cubic Bézier curves -// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1". -function point(that, t0, t1) { - var x0 = that._x0, - y0 = that._y0, - x1 = that._x1, - y1 = that._y1, - dx = (x1 - x0) / 3; - that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1); -} - -function MonotoneX(context) { - this._context = context; -} - -MonotoneX.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = - this._t0 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x1, this._y1); break; - case 3: point(this, this._t0, slope2(this, this._t0)); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - var t1 = NaN; - - x = +x, y = +y; - if (x === this._x1 && y === this._y1) return; // Ignore coincident points. - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break; - default: point(this, this._t0, t1 = slope3(this, x, y)); break; - } - - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - this._t0 = t1; - } -}; - -function MonotoneY(context) { - this._context = new ReflectContext(context); -} - -(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) { - MonotoneX.prototype.point.call(this, y, x); -}; - -function ReflectContext(context) { - this._context = context; -} - -ReflectContext.prototype = { - moveTo: function(x, y) { this._context.moveTo(y, x); }, - closePath: function() { this._context.closePath(); }, - lineTo: function(x, y) { this._context.lineTo(y, x); }, - bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); } -}; - -function monotoneX(context) { - return new MonotoneX(context); -} - -function monotoneY(context) { - return new MonotoneY(context); -} - -function Natural(context) { - this._context = context; -} - -Natural.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = []; - this._y = []; - }, - lineEnd: function() { - var x = this._x, - y = this._y, - n = x.length; - - if (n) { - this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]); - if (n === 2) { - this._context.lineTo(x[1], y[1]); - } else { - var px = controlPoints(x), - py = controlPoints(y); - for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { - this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]); - } - } - } - - if (this._line || (this._line !== 0 && n === 1)) this._context.closePath(); - this._line = 1 - this._line; - this._x = this._y = null; - }, - point: function(x, y) { - this._x.push(+x); - this._y.push(+y); - } -}; - -// See https://www.particleincell.com/2012/bezier-splines/ for derivation. -function controlPoints(x) { - var i, - n = x.length - 1, - m, - a = new Array(n), - b = new Array(n), - r = new Array(n); - a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1]; - for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1]; - a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n]; - for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; - a[n - 1] = r[n - 1] / b[n - 1]; - for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i]; - b[n - 1] = (x[n] + a[n - 1]) / 2; - for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1]; - return [a, b]; -} - -function natural(context) { - return new Natural(context); -} - -function Step(context, t) { - this._context = context; - this._t = t; -} - -Step.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = this._y = NaN; - this._point = 0; - }, - lineEnd: function() { - if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // falls through - default: { - if (this._t <= 0) { - this._context.lineTo(this._x, y); - this._context.lineTo(x, y); - } else { - var x1 = this._x * (1 - this._t) + x * this._t; - this._context.lineTo(x1, this._y); - this._context.lineTo(x1, y); - } - break; - } - } - this._x = x, this._y = y; - } -}; - -function step(context) { - return new Step(context, 0.5); -} - -function stepBefore(context) { - return new Step(context, 0); -} - -function stepAfter(context) { - return new Step(context, 1); -} - -function none$1(series, order) { - if (!((n = series.length) > 1)) return; - for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) { - s0 = s1, s1 = series[order[i]]; - for (j = 0; j < m; ++j) { - s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1]; - } - } -} - -function none(series) { - var n = series.length, o = new Array(n); - while (--n >= 0) o[n] = n; - return o; -} - -function stackValue(d, key) { - return d[key]; -} - -function stackSeries(key) { - const series = []; - series.key = key; - return series; -} - -function stack() { - var keys = constant$1([]), - order = none, - offset = none$1, - value = stackValue; - - function stack(data) { - var sz = Array.from(keys.apply(this, arguments), stackSeries), - i, n = sz.length, j = -1, - oz; - - for (const d of data) { - for (i = 0, ++j; i < n; ++i) { - (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d; - } - } - - for (i = 0, oz = array(order(sz)); i < n; ++i) { - sz[oz[i]].index = i; - } - - offset(sz, oz); - return sz; - } - - stack.keys = function(_) { - return arguments.length ? (keys = typeof _ === "function" ? _ : constant$1(Array.from(_)), stack) : keys; - }; - - stack.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$1(+_), stack) : value; - }; - - stack.order = function(_) { - return arguments.length ? (order = _ == null ? none : typeof _ === "function" ? _ : constant$1(Array.from(_)), stack) : order; - }; - - stack.offset = function(_) { - return arguments.length ? (offset = _ == null ? none$1 : _, stack) : offset; - }; - - return stack; -} - -function expand(series, order) { - if (!((n = series.length) > 0)) return; - for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) { - for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0; - if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y; - } - none$1(series, order); -} - -function diverging(series, order) { - if (!((n = series.length) > 0)) return; - for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) { - for (yp = yn = 0, i = 0; i < n; ++i) { - if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) { - d[0] = yp, d[1] = yp += dy; - } else if (dy < 0) { - d[1] = yn, d[0] = yn += dy; - } else { - d[0] = 0, d[1] = dy; - } - } - } -} - -function silhouette(series, order) { - if (!((n = series.length) > 0)) return; - for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) { - for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0; - s0[j][1] += s0[j][0] = -y / 2; - } - none$1(series, order); -} - -function wiggle(series, order) { - if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return; - for (var y = 0, j = 1, s0, m, n; j < m; ++j) { - for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) { - var si = series[order[i]], - sij0 = si[j][1] || 0, - sij1 = si[j - 1][1] || 0, - s3 = (sij0 - sij1) / 2; - for (var k = 0; k < i; ++k) { - var sk = series[order[k]], - skj0 = sk[j][1] || 0, - skj1 = sk[j - 1][1] || 0; - s3 += skj0 - skj1; - } - s1 += sij0, s2 += s3 * sij0; - } - s0[j - 1][1] += s0[j - 1][0] = y; - if (s1) y -= s2 / s1; - } - s0[j - 1][1] += s0[j - 1][0] = y; - none$1(series, order); -} - -function appearance(series) { - var peaks = series.map(peak); - return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; }); -} - -function peak(series) { - var i = -1, j = 0, n = series.length, vi, vj = -Infinity; - while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i; - return j; -} - -function ascending(series) { - var sums = series.map(sum); - return none(series).sort(function(a, b) { return sums[a] - sums[b]; }); -} - -function sum(series) { - var s = 0, i = -1, n = series.length, v; - while (++i < n) if (v = +series[i][1]) s += v; - return s; -} - -function descending(series) { - return ascending(series).reverse(); -} - -function insideOut(series) { - var n = series.length, - i, - j, - sums = series.map(sum), - order = appearance(series), - top = 0, - bottom = 0, - tops = [], - bottoms = []; - - for (i = 0; i < n; ++i) { - j = order[i]; - if (top < bottom) { - top += sums[j]; - tops.push(j); - } else { - bottom += sums[j]; - bottoms.push(j); - } - } - - return bottoms.reverse().concat(tops); -} - -function reverse(series) { - return none(series).reverse(); -} - -var constant = x => () => x; - -function ZoomEvent(type, { - sourceEvent, - target, - transform, - dispatch -}) { - Object.defineProperties(this, { - type: {value: type, enumerable: true, configurable: true}, - sourceEvent: {value: sourceEvent, enumerable: true, configurable: true}, - target: {value: target, enumerable: true, configurable: true}, - transform: {value: transform, enumerable: true, configurable: true}, - _: {value: dispatch} - }); -} - -function Transform(k, x, y) { - this.k = k; - this.x = x; - this.y = y; -} - -Transform.prototype = { - constructor: Transform, - scale: function(k) { - return k === 1 ? this : new Transform(this.k * k, this.x, this.y); - }, - translate: function(x, y) { - return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y); - }, - apply: function(point) { - return [point[0] * this.k + this.x, point[1] * this.k + this.y]; - }, - applyX: function(x) { - return x * this.k + this.x; - }, - applyY: function(y) { - return y * this.k + this.y; - }, - invert: function(location) { - return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; - }, - invertX: function(x) { - return (x - this.x) / this.k; - }, - invertY: function(y) { - return (y - this.y) / this.k; - }, - rescaleX: function(x) { - return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x)); - }, - rescaleY: function(y) { - return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y)); - }, - toString: function() { - return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; - } -}; - -var identity = new Transform(1, 0, 0); - -transform.prototype = Transform.prototype; - -function transform(node) { - while (!node.__zoom) if (!(node = node.parentNode)) return identity; - return node.__zoom; -} - -function nopropagation(event) { - event.stopImmediatePropagation(); -} - -function noevent(event) { - event.preventDefault(); - event.stopImmediatePropagation(); -} - -// Ignore right-click, since that should open the context menu. -// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event -function defaultFilter(event) { - return (!event.ctrlKey || event.type === 'wheel') && !event.button; -} - -function defaultExtent() { - var e = this; - if (e instanceof SVGElement) { - e = e.ownerSVGElement || e; - if (e.hasAttribute("viewBox")) { - e = e.viewBox.baseVal; - return [[e.x, e.y], [e.x + e.width, e.y + e.height]]; - } - return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]; - } - return [[0, 0], [e.clientWidth, e.clientHeight]]; -} - -function defaultTransform() { - return this.__zoom || identity; -} - -function defaultWheelDelta(event) { - return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1); -} - -function defaultTouchable() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -function defaultConstrain(transform, extent, translateExtent) { - var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], - dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], - dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], - dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1]; - return transform.translate( - dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), - dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) - ); -} - -function zoom() { - var filter = defaultFilter, - extent = defaultExtent, - constrain = defaultConstrain, - wheelDelta = defaultWheelDelta, - touchable = defaultTouchable, - scaleExtent = [0, Infinity], - translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], - duration = 250, - interpolate = interpolateZoom, - listeners = dispatch("start", "zoom", "end"), - touchstarting, - touchfirst, - touchending, - touchDelay = 500, - wheelDelay = 150, - clickDistance2 = 0, - tapDistance = 10; - - function zoom(selection) { - selection - .property("__zoom", defaultTransform) - .on("wheel.zoom", wheeled, {passive: false}) - .on("mousedown.zoom", mousedowned) - .on("dblclick.zoom", dblclicked) - .filter(touchable) - .on("touchstart.zoom", touchstarted) - .on("touchmove.zoom", touchmoved) - .on("touchend.zoom touchcancel.zoom", touchended) - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - zoom.transform = function(collection, transform, point, event) { - var selection = collection.selection ? collection.selection() : collection; - selection.property("__zoom", defaultTransform); - if (collection !== selection) { - schedule(collection, transform, point, event); - } else { - selection.interrupt().each(function() { - gesture(this, arguments) - .event(event) - .start() - .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform) - .end(); - }); - } - }; - - zoom.scaleBy = function(selection, k, p, event) { - zoom.scaleTo(selection, function() { - var k0 = this.__zoom.k, - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return k0 * k1; - }, p, event); - }; - - zoom.scaleTo = function(selection, k, p, event) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t0 = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, - p1 = t0.invert(p0), - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent); - }, p, event); - }; - - zoom.translateBy = function(selection, x, y, event) { - zoom.transform(selection, function() { - return constrain(this.__zoom.translate( - typeof x === "function" ? x.apply(this, arguments) : x, - typeof y === "function" ? y.apply(this, arguments) : y - ), extent.apply(this, arguments), translateExtent); - }, null, event); - }; - - zoom.translateTo = function(selection, x, y, p, event) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p; - return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate( - typeof x === "function" ? -x.apply(this, arguments) : -x, - typeof y === "function" ? -y.apply(this, arguments) : -y - ), e, translateExtent); - }, p, event); - }; - - function scale(transform, k) { - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k)); - return k === transform.k ? transform : new Transform(k, transform.x, transform.y); - } - - function translate(transform, p0, p1) { - var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k; - return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y); - } - - function centroid(extent) { - return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2]; - } - - function schedule(transition, transform, point, event) { - transition - .on("start.zoom", function() { gesture(this, arguments).event(event).start(); }) - .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).event(event).end(); }) - .tween("zoom", function() { - var that = this, - args = arguments, - g = gesture(that, args).event(event), - e = extent.apply(that, args), - p = point == null ? centroid(e) : typeof point === "function" ? point.apply(that, args) : point, - w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), - a = that.__zoom, - b = typeof transform === "function" ? transform.apply(that, args) : transform, - i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k)); - return function(t) { - if (t === 1) t = b; // Avoid rounding error on end. - else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); } - g.zoom(null, t); - }; - }); - } - - function gesture(that, args, clean) { - return (!clean && that.__zooming) || new Gesture(that, args); - } - - function Gesture(that, args) { - this.that = that; - this.args = args; - this.active = 0; - this.sourceEvent = null; - this.extent = extent.apply(that, args); - this.taps = 0; - } - - Gesture.prototype = { - event: function(event) { - if (event) this.sourceEvent = event; - return this; - }, - start: function() { - if (++this.active === 1) { - this.that.__zooming = this; - this.emit("start"); - } - return this; - }, - zoom: function(key, transform) { - if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]); - if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]); - if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]); - this.that.__zoom = transform; - this.emit("zoom"); - return this; - }, - end: function() { - if (--this.active === 0) { - delete this.that.__zooming; - this.emit("end"); - } - return this; - }, - emit: function(type) { - var d = select(this.that).datum(); - listeners.call( - type, - this.that, - new ZoomEvent(type, { - sourceEvent: this.sourceEvent, - target: zoom, - type, - transform: this.that.__zoom, - dispatch: listeners - }), - d - ); - } - }; - - function wheeled(event, ...args) { - if (!filter.apply(this, arguments)) return; - var g = gesture(this, args).event(event), - t = this.__zoom, - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), - p = pointer(event); - - // If the mouse is in the same location as before, reuse it. - // If there were recent wheel events, reset the wheel idle timeout. - if (g.wheel) { - if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { - g.mouse[1] = t.invert(g.mouse[0] = p); - } - clearTimeout(g.wheel); - } - - // If this wheel event won’t trigger a transform change, ignore it. - else if (t.k === k) return; - - // Otherwise, capture the mouse point and location at the start. - else { - g.mouse = [p, t.invert(p)]; - interrupt(this); - g.start(); - } - - noevent(event); - g.wheel = setTimeout(wheelidled, wheelDelay); - g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent)); - - function wheelidled() { - g.wheel = null; - g.end(); - } - } - - function mousedowned(event, ...args) { - if (touchending || !filter.apply(this, arguments)) return; - var currentTarget = event.currentTarget, - g = gesture(this, args, true).event(event), - v = select(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), - p = pointer(event, currentTarget), - x0 = event.clientX, - y0 = event.clientY; - - dragDisable(event.view); - nopropagation(event); - g.mouse = [p, this.__zoom.invert(p)]; - interrupt(this); - g.start(); - - function mousemoved(event) { - noevent(event); - if (!g.moved) { - var dx = event.clientX - x0, dy = event.clientY - y0; - g.moved = dx * dx + dy * dy > clickDistance2; - } - g.event(event) - .zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent)); - } - - function mouseupped(event) { - v.on("mousemove.zoom mouseup.zoom", null); - yesdrag(event.view, g.moved); - noevent(event); - g.event(event).end(); - } - } - - function dblclicked(event, ...args) { - if (!filter.apply(this, arguments)) return; - var t0 = this.__zoom, - p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this), - p1 = t0.invert(p0), - k1 = t0.k * (event.shiftKey ? 0.5 : 2), - t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent); - - noevent(event); - if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event); - else select(this).call(zoom.transform, t1, p0, event); - } - - function touchstarted(event, ...args) { - if (!filter.apply(this, arguments)) return; - var touches = event.touches, - n = touches.length, - g = gesture(this, args, event.changedTouches.length === n).event(event), - started, i, t, p; - - nopropagation(event); - for (i = 0; i < n; ++i) { - t = touches[i], p = pointer(t, this); - p = [p, this.__zoom.invert(p), t.identifier]; - if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting; - else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0; - } - - if (touchstarting) touchstarting = clearTimeout(touchstarting); - - if (started) { - if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay); - interrupt(this); - g.start(); - } - } - - function touchmoved(event, ...args) { - if (!this.__zooming) return; - var g = gesture(this, args).event(event), - touches = event.changedTouches, - n = touches.length, i, t, p, l; - - noevent(event); - for (i = 0; i < n; ++i) { - t = touches[i], p = pointer(t, this); - if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p; - else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p; - } - t = g.that.__zoom; - if (g.touch1) { - var p0 = g.touch0[0], l0 = g.touch0[1], - p1 = g.touch1[0], l1 = g.touch1[1], - dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, - dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; - t = scale(t, Math.sqrt(dp / dl)); - p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; - l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; - } - else if (g.touch0) p = g.touch0[0], l = g.touch0[1]; - else return; - - g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent)); - } - - function touchended(event, ...args) { - if (!this.__zooming) return; - var g = gesture(this, args).event(event), - touches = event.changedTouches, - n = touches.length, i, t; - - nopropagation(event); - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, touchDelay); - for (i = 0; i < n; ++i) { - t = touches[i]; - if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0; - else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1; - } - if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1; - if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]); - else { - g.end(); - // If this was a dbltap, reroute to the (optional) dblclick.zoom handler. - if (g.taps === 2) { - t = pointer(t, this); - if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) { - var p = select(this).on("dblclick.zoom"); - if (p) p.apply(this, arguments); - } - } - } - } - - zoom.wheelDelta = function(_) { - return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant(+_), zoom) : wheelDelta; - }; - - zoom.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), zoom) : filter; - }; - - zoom.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant(!!_), zoom) : touchable; - }; - - zoom.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; - }; - - zoom.scaleExtent = function(_) { - return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]]; - }; - - zoom.translateExtent = function(_) { - return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]]; - }; - - zoom.constrain = function(_) { - return arguments.length ? (constrain = _, zoom) : constrain; - }; - - zoom.duration = function(_) { - return arguments.length ? (duration = +_, zoom) : duration; - }; - - zoom.interpolate = function(_) { - return arguments.length ? (interpolate = _, zoom) : interpolate; - }; - - zoom.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? zoom : value; - }; - - zoom.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); - }; - - zoom.tapDistance = function(_) { - return arguments.length ? (tapDistance = +_, zoom) : tapDistance; - }; - - return zoom; -} - -var d3 = /*#__PURE__*/Object.freeze({ - __proto__: null, - Adder: Adder, - Delaunay: Delaunay, - FormatSpecifier: FormatSpecifier, - InternMap: InternMap, - InternSet: InternSet, - Node: Node$1, - Path: Path$1, - Voronoi: Voronoi, - ZoomTransform: Transform, - active: active, - arc: arc, - area: area, - areaRadial: areaRadial, - ascending: ascending$3, - autoType: autoType, - axisBottom: axisBottom, - axisLeft: axisLeft, - axisRight: axisRight, - axisTop: axisTop, - bin: bin, - bisect: bisectRight, - bisectCenter: bisectCenter, - bisectLeft: bisectLeft, - bisectRight: bisectRight, - bisector: bisector, - blob: blob, - blur: blur, - blur2: blur2, - blurImage: blurImage, - brush: brush, - brushSelection: brushSelection, - brushX: brushX, - brushY: brushY, - buffer: buffer, - chord: chord, - chordDirected: chordDirected, - chordTranspose: chordTranspose, - cluster: cluster, - color: color, - contourDensity: density, - contours: Contours, - count: count$1, - create: create$1, - creator: creator, - cross: cross$2, - csv: csv, - csvFormat: csvFormat, - csvFormatBody: csvFormatBody, - csvFormatRow: csvFormatRow, - csvFormatRows: csvFormatRows, - csvFormatValue: csvFormatValue, - csvParse: csvParse, - csvParseRows: csvParseRows, - cubehelix: cubehelix$3, - cumsum: cumsum, - curveBasis: basis, - curveBasisClosed: basisClosed, - curveBasisOpen: basisOpen, - curveBumpX: bumpX, - curveBumpY: bumpY, - curveBundle: bundle, - curveCardinal: cardinal, - curveCardinalClosed: cardinalClosed, - curveCardinalOpen: cardinalOpen, - curveCatmullRom: catmullRom, - curveCatmullRomClosed: catmullRomClosed, - curveCatmullRomOpen: catmullRomOpen, - curveLinear: curveLinear, - curveLinearClosed: linearClosed, - curveMonotoneX: monotoneX, - curveMonotoneY: monotoneY, - curveNatural: natural, - curveStep: step, - curveStepAfter: stepAfter, - curveStepBefore: stepBefore, - descending: descending$2, - deviation: deviation, - difference: difference, - disjoint: disjoint, - dispatch: dispatch, - drag: drag, - dragDisable: dragDisable, - dragEnable: yesdrag, - dsv: dsv, - dsvFormat: dsvFormat, - easeBack: backInOut, - easeBackIn: backIn, - easeBackInOut: backInOut, - easeBackOut: backOut, - easeBounce: bounceOut, - easeBounceIn: bounceIn, - easeBounceInOut: bounceInOut, - easeBounceOut: bounceOut, - easeCircle: circleInOut, - easeCircleIn: circleIn, - easeCircleInOut: circleInOut, - easeCircleOut: circleOut, - easeCubic: cubicInOut, - easeCubicIn: cubicIn, - easeCubicInOut: cubicInOut, - easeCubicOut: cubicOut, - easeElastic: elasticOut, - easeElasticIn: elasticIn, - easeElasticInOut: elasticInOut, - easeElasticOut: elasticOut, - easeExp: expInOut, - easeExpIn: expIn, - easeExpInOut: expInOut, - easeExpOut: expOut, - easeLinear: linear$1, - easePoly: polyInOut, - easePolyIn: polyIn, - easePolyInOut: polyInOut, - easePolyOut: polyOut, - easeQuad: quadInOut, - easeQuadIn: quadIn, - easeQuadInOut: quadInOut, - easeQuadOut: quadOut, - easeSin: sinInOut, - easeSinIn: sinIn, - easeSinInOut: sinInOut, - easeSinOut: sinOut, - every: every, - extent: extent$1, - fcumsum: fcumsum, - filter: filter$1, - flatGroup: flatGroup, - flatRollup: flatRollup, - forceCenter: center, - forceCollide: collide, - forceLink: link$2, - forceManyBody: manyBody, - forceRadial: radial$1, - forceSimulation: simulation, - forceX: x$3, - forceY: y$2, - get format () { return format; }, - formatDefaultLocale: defaultLocale$1, - formatLocale: formatLocale$1, - get formatPrefix () { return formatPrefix; }, - formatSpecifier: formatSpecifier, - fsum: fsum, - geoAlbers: albers, - geoAlbersUsa: albersUsa, - geoArea: area$2, - geoAzimuthalEqualArea: azimuthalEqualArea, - geoAzimuthalEqualAreaRaw: azimuthalEqualAreaRaw, - geoAzimuthalEquidistant: azimuthalEquidistant, - geoAzimuthalEquidistantRaw: azimuthalEquidistantRaw, - geoBounds: bounds, - geoCentroid: centroid$1, - geoCircle: circle$1, - geoClipAntimeridian: clipAntimeridian, - geoClipCircle: clipCircle, - geoClipExtent: extent, - geoClipRectangle: clipRectangle, - geoConicConformal: conicConformal, - geoConicConformalRaw: conicConformalRaw, - geoConicEqualArea: conicEqualArea, - geoConicEqualAreaRaw: conicEqualAreaRaw, - geoConicEquidistant: conicEquidistant, - geoConicEquidistantRaw: conicEquidistantRaw, - geoContains: contains$1, - geoDistance: distance, - geoEqualEarth: equalEarth, - geoEqualEarthRaw: equalEarthRaw, - geoEquirectangular: equirectangular, - geoEquirectangularRaw: equirectangularRaw, - geoGnomonic: gnomonic, - geoGnomonicRaw: gnomonicRaw, - geoGraticule: graticule, - geoGraticule10: graticule10, - geoIdentity: identity$4, - geoInterpolate: interpolate, - geoLength: length$1, - geoMercator: mercator, - geoMercatorRaw: mercatorRaw, - geoNaturalEarth1: naturalEarth1, - geoNaturalEarth1Raw: naturalEarth1Raw, - geoOrthographic: orthographic, - geoOrthographicRaw: orthographicRaw, - geoPath: index$2, - geoProjection: projection, - geoProjectionMutator: projectionMutator, - geoRotation: rotation, - geoStereographic: stereographic, - geoStereographicRaw: stereographicRaw, - geoStream: geoStream, - geoTransform: transform$1, - geoTransverseMercator: transverseMercator, - geoTransverseMercatorRaw: transverseMercatorRaw, - gray: gray, - greatest: greatest, - greatestIndex: greatestIndex, - group: group, - groupSort: groupSort, - groups: groups, - hcl: hcl$2, - hierarchy: hierarchy, - histogram: bin, - hsl: hsl$2, - html: html, - image: image, - index: index$4, - indexes: indexes, - interpolate: interpolate$2, - interpolateArray: array$3, - interpolateBasis: basis$2, - interpolateBasisClosed: basisClosed$1, - interpolateBlues: Blues, - interpolateBrBG: BrBG, - interpolateBuGn: BuGn, - interpolateBuPu: BuPu, - interpolateCividis: cividis, - interpolateCool: cool, - interpolateCubehelix: cubehelix$2, - interpolateCubehelixDefault: cubehelix, - interpolateCubehelixLong: cubehelixLong, - interpolateDate: date$1, - interpolateDiscrete: discrete, - interpolateGnBu: GnBu, - interpolateGreens: Greens, - interpolateGreys: Greys, - interpolateHcl: hcl$1, - interpolateHclLong: hclLong, - interpolateHsl: hsl$1, - interpolateHslLong: hslLong, - interpolateHue: hue, - interpolateInferno: inferno, - interpolateLab: lab, - interpolateMagma: magma, - interpolateNumber: interpolateNumber, - interpolateNumberArray: numberArray, - interpolateObject: object$1, - interpolateOrRd: OrRd, - interpolateOranges: Oranges, - interpolatePRGn: PRGn, - interpolatePiYG: PiYG, - interpolatePlasma: plasma, - interpolatePuBu: PuBu, - interpolatePuBuGn: PuBuGn, - interpolatePuOr: PuOr, - interpolatePuRd: PuRd, - interpolatePurples: Purples, - interpolateRainbow: rainbow, - interpolateRdBu: RdBu, - interpolateRdGy: RdGy, - interpolateRdPu: RdPu, - interpolateRdYlBu: RdYlBu, - interpolateRdYlGn: RdYlGn, - interpolateReds: Reds, - interpolateRgb: interpolateRgb, - interpolateRgbBasis: rgbBasis, - interpolateRgbBasisClosed: rgbBasisClosed, - interpolateRound: interpolateRound, - interpolateSinebow: sinebow, - interpolateSpectral: Spectral, - interpolateString: interpolateString, - interpolateTransformCss: interpolateTransformCss, - interpolateTransformSvg: interpolateTransformSvg, - interpolateTurbo: turbo, - interpolateViridis: viridis, - interpolateWarm: warm, - interpolateYlGn: YlGn, - interpolateYlGnBu: YlGnBu, - interpolateYlOrBr: YlOrBr, - interpolateYlOrRd: YlOrRd, - interpolateZoom: interpolateZoom, - interrupt: interrupt, - intersection: intersection, - interval: interval, - isoFormat: formatIso, - isoParse: parseIso, - json: json, - lab: lab$1, - lch: lch, - least: least, - leastIndex: leastIndex, - line: line, - lineRadial: lineRadial$1, - link: link, - linkHorizontal: linkHorizontal, - linkRadial: linkRadial, - linkVertical: linkVertical, - local: local$1, - map: map$1, - matcher: matcher, - max: max$3, - maxIndex: maxIndex, - mean: mean, - median: median, - medianIndex: medianIndex, - merge: merge, - min: min$2, - minIndex: minIndex, - mode: mode, - namespace: namespace, - namespaces: namespaces, - nice: nice$1, - now: now, - pack: index$1, - packEnclose: enclose, - packSiblings: siblings, - pairs: pairs, - partition: partition, - path: path, - pathRound: pathRound, - permute: permute, - pie: pie, - piecewise: piecewise, - pointRadial: pointRadial, - pointer: pointer, - pointers: pointers, - polygonArea: area$1, - polygonCentroid: centroid, - polygonContains: contains, - polygonHull: hull, - polygonLength: length, - precisionFixed: precisionFixed, - precisionPrefix: precisionPrefix, - precisionRound: precisionRound, - quadtree: quadtree, - quantile: quantile$1, - quantileIndex: quantileIndex, - quantileSorted: quantileSorted, - quantize: quantize$1, - quickselect: quickselect, - radialArea: areaRadial, - radialLine: lineRadial$1, - randomBates: bates, - randomBernoulli: bernoulli, - randomBeta: beta, - randomBinomial: binomial, - randomCauchy: cauchy, - randomExponential: exponential, - randomGamma: gamma, - randomGeometric: geometric, - randomInt: int, - randomIrwinHall: irwinHall, - randomLcg: lcg, - randomLogNormal: logNormal, - randomLogistic: logistic, - randomNormal: normal, - randomPareto: pareto, - randomPoisson: poisson, - randomUniform: uniform, - randomWeibull: weibull, - range: range$2, - rank: rank, - reduce: reduce, - reverse: reverse$1, - rgb: rgb, - ribbon: ribbon$1, - ribbonArrow: ribbonArrow, - rollup: rollup, - rollups: rollups, - scaleBand: band, - scaleDiverging: diverging$1, - scaleDivergingLog: divergingLog, - scaleDivergingPow: divergingPow, - scaleDivergingSqrt: divergingSqrt, - scaleDivergingSymlog: divergingSymlog, - scaleIdentity: identity$2, - scaleImplicit: implicit, - scaleLinear: linear, - scaleLog: log, - scaleOrdinal: ordinal, - scalePoint: point$4, - scalePow: pow, - scaleQuantile: quantile, - scaleQuantize: quantize, - scaleRadial: radial, - scaleSequential: sequential, - scaleSequentialLog: sequentialLog, - scaleSequentialPow: sequentialPow, - scaleSequentialQuantile: sequentialQuantile, - scaleSequentialSqrt: sequentialSqrt, - scaleSequentialSymlog: sequentialSymlog, - scaleSqrt: sqrt$1, - scaleSymlog: symlog, - scaleThreshold: threshold, - scaleTime: time, - scaleUtc: utcTime, - scan: scan, - schemeAccent: Accent, - schemeBlues: scheme$5, - schemeBrBG: scheme$q, - schemeBuGn: scheme$h, - schemeBuPu: scheme$g, - schemeCategory10: category10, - schemeDark2: Dark2, - schemeGnBu: scheme$f, - schemeGreens: scheme$4, - schemeGreys: scheme$3, - schemeObservable10: observable10, - schemeOrRd: scheme$e, - schemeOranges: scheme, - schemePRGn: scheme$p, - schemePaired: Paired, - schemePastel1: Pastel1, - schemePastel2: Pastel2, - schemePiYG: scheme$o, - schemePuBu: scheme$c, - schemePuBuGn: scheme$d, - schemePuOr: scheme$n, - schemePuRd: scheme$b, - schemePurples: scheme$2, - schemeRdBu: scheme$m, - schemeRdGy: scheme$l, - schemeRdPu: scheme$a, - schemeRdYlBu: scheme$k, - schemeRdYlGn: scheme$j, - schemeReds: scheme$1, - schemeSet1: Set1, - schemeSet2: Set2, - schemeSet3: Set3, - schemeSpectral: scheme$i, - schemeTableau10: Tableau10, - schemeYlGn: scheme$8, - schemeYlGnBu: scheme$9, - schemeYlOrBr: scheme$7, - schemeYlOrRd: scheme$6, - select: select, - selectAll: selectAll, - selection: selection, - selector: selector, - selectorAll: selectorAll, - shuffle: shuffle$1, - shuffler: shuffler, - some: some, - sort: sort, - stack: stack, - stackOffsetDiverging: diverging, - stackOffsetExpand: expand, - stackOffsetNone: none$1, - stackOffsetSilhouette: silhouette, - stackOffsetWiggle: wiggle, - stackOrderAppearance: appearance, - stackOrderAscending: ascending, - stackOrderDescending: descending, - stackOrderInsideOut: insideOut, - stackOrderNone: none, - stackOrderReverse: reverse, - stratify: stratify, - style: styleValue, - subset: subset, - sum: sum$2, - superset: superset, - svg: svg, - symbol: Symbol$1, - symbolAsterisk: asterisk, - symbolCircle: circle, - symbolCross: cross, - symbolDiamond: diamond, - symbolDiamond2: diamond2, - symbolPlus: plus, - symbolSquare: square, - symbolSquare2: square2, - symbolStar: star, - symbolTimes: times, - symbolTriangle: triangle, - symbolTriangle2: triangle2, - symbolWye: wye, - symbolX: times, - symbols: symbolsFill, - symbolsFill: symbolsFill, - symbolsStroke: symbolsStroke, - text: text, - thresholdFreedmanDiaconis: thresholdFreedmanDiaconis, - thresholdScott: thresholdScott, - thresholdSturges: thresholdSturges, - tickFormat: tickFormat, - tickIncrement: tickIncrement, - tickStep: tickStep, - ticks: ticks, - timeDay: timeDay, - timeDays: timeDays, - get timeFormat () { return timeFormat; }, - timeFormatDefaultLocale: defaultLocale, - timeFormatLocale: formatLocale, - timeFriday: timeFriday, - timeFridays: timeFridays, - timeHour: timeHour, - timeHours: timeHours, - timeInterval: timeInterval, - timeMillisecond: millisecond, - timeMilliseconds: milliseconds, - timeMinute: timeMinute, - timeMinutes: timeMinutes, - timeMonday: timeMonday, - timeMondays: timeMondays, - timeMonth: timeMonth, - timeMonths: timeMonths, - get timeParse () { return timeParse; }, - timeSaturday: timeSaturday, - timeSaturdays: timeSaturdays, - timeSecond: second, - timeSeconds: seconds, - timeSunday: timeSunday, - timeSundays: timeSundays, - timeThursday: timeThursday, - timeThursdays: timeThursdays, - timeTickInterval: timeTickInterval, - timeTicks: timeTicks, - timeTuesday: timeTuesday, - timeTuesdays: timeTuesdays, - timeWednesday: timeWednesday, - timeWednesdays: timeWednesdays, - timeWeek: timeSunday, - timeWeeks: timeSundays, - timeYear: timeYear, - timeYears: timeYears, - timeout: timeout, - timer: timer, - timerFlush: timerFlush, - transition: transition, - transpose: transpose, - tree: tree, - treemap: index, - treemapBinary: binary, - treemapDice: treemapDice, - treemapResquarify: resquarify, - treemapSlice: treemapSlice, - treemapSliceDice: sliceDice, - treemapSquarify: squarify, - tsv: tsv, - tsvFormat: tsvFormat, - tsvFormatBody: tsvFormatBody, - tsvFormatRow: tsvFormatRow, - tsvFormatRows: tsvFormatRows, - tsvFormatValue: tsvFormatValue, - tsvParse: tsvParse, - tsvParseRows: tsvParseRows, - union: union, - unixDay: unixDay, - unixDays: unixDays, - utcDay: utcDay, - utcDays: utcDays, - get utcFormat () { return utcFormat; }, - utcFriday: utcFriday, - utcFridays: utcFridays, - utcHour: utcHour, - utcHours: utcHours, - utcMillisecond: millisecond, - utcMilliseconds: milliseconds, - utcMinute: utcMinute, - utcMinutes: utcMinutes, - utcMonday: utcMonday, - utcMondays: utcMondays, - utcMonth: utcMonth, - utcMonths: utcMonths, - get utcParse () { return utcParse; }, - utcSaturday: utcSaturday, - utcSaturdays: utcSaturdays, - utcSecond: second, - utcSeconds: seconds, - utcSunday: utcSunday, - utcSundays: utcSundays, - utcThursday: utcThursday, - utcThursdays: utcThursdays, - utcTickInterval: utcTickInterval, - utcTicks: utcTicks, - utcTuesday: utcTuesday, - utcTuesdays: utcTuesdays, - utcWednesday: utcWednesday, - utcWednesdays: utcWednesdays, - utcWeek: utcSunday, - utcWeeks: utcSundays, - utcYear: utcYear, - utcYears: utcYears, - variance: variance, - window: defaultView, - xml: xml, - zip: zip, - zoom: zoom, - zoomIdentity: identity, - zoomTransform: transform -}); - -class TSRootContainer extends HTMLDivElement { - main_svg = null; - tree_data = {}; - static observeAttributes = ['backgroundPattern', 'backgroundSize', 'customBackground']; - backgroundPattern = null; - backgroundSize = undefined; - customBackground = undefined; - backgroundPosition = 'center'; - constructor() { - super(); - } - connectedCallback() { - this.className = "ts-root-wrapper-element tree-spider"; - this.backgroundPattern = this.getAttribute('backgroundPattern') || 'default'; - this.backgroundSize = this.getAttribute('backgroundSize'); - this.backgroundSize = this.backgroundSize == 'undefined' ? undefined : this.backgroundSize; - this.customBackground = this.getAttribute('customBackground'); - this.customBackground = this.customBackground == 'undefined' ? undefined : this.customBackground; - this.backgroundPosition = this.getAttribute('backgroundPosition'); - this.backgroundPosition = this.backgroundPosition == 'undefined' ? undefined : this.backgroundPosition; - this.setCanvasBg(); - } - setCanvasBg() { - const patterns = { - default: () => this.defaultDotsPatternBg(), - flux: () => this.fluxPatternBg(), - quad: () => this.quadPatternBg(), - blurry: () => this.blurryBg(), - chaos: () => this.chaosPatternBg(), - flurry: () => this.flurryPatternBg(), - spiral: () => this.spiralPatternBg(), - whirling: () => this.whirlingPatternBg(), - replicate: () => this.replicatePatternBg(), - scribble: () => this.scribblePatternBg(), - squiggly: () => this.squigglyPatternBg(), - gyrrate: () => this.gyrratePatternBg(), - leaves: () => this.leavesPatternBg(), - spot: () => this.spotPatternBg() - }; - if (this.backgroundPattern == 'none') - return; - const svgPattern = this.customBackground || patterns[this.backgroundPattern](); - let svgData; - if (typeof svgPattern == 'object') { - svgData = new XMLSerializer().serializeToString(svgPattern.node()); - } - else { - svgData = svgPattern; - } - const encodeSVG = encodeURIComponent(svgData) - .replace(/\(/g, '%28') - .replace(/\)/g, '%29'); - this.backgroundSize != undefined && (this.style.backgroundSize = this.backgroundSize || '40%'); - this.backgroundPosition != undefined && (this.style.backgroundPosition = this.backgroundPosition || 'center'); - const svgDataUrl = "data:image/svg+xml;charset=utf-8," + encodeSVG; - this.style.setProperty('--ts-root-el-bg-image', 'url(' + svgDataUrl + ')'); - } - defaultDotsPatternBg() { - const svg = create$1('svg') - .attr("width", "20") - .attr("height", "20"); - svg.append('rect') - .attr("width", "20") - .attr("height", "20") - .attr("fill", "transparent"); - svg.append('circle') - .attr("cx", "10") - .attr("cy", "10") - .attr("r", "1") - .attr("fill", "rgb(150,150,150)"); - this.style.backgroundSize = this.backgroundSize || '2%'; - return svg; - } - fluxPatternBg() { - this.style.backgroundSize = this.backgroundSize || '20%'; - return backgrounds['flux']; - } - quadPatternBg() { - this.style.backgroundSize = this.backgroundSize || '20%'; - return backgrounds['quad']; - } - blurryBg() { - this.style.backgroundSize = '20%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['blurry']; - } - chaosPatternBg() { - this.style.backgroundSize = this.backgroundSize || '50%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['chaos']; - } - spiralPatternBg() { - this.style.backgroundSize = this.backgroundSize || '100%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['spiral']; - } - flurryPatternBg() { - this.style.backgroundSize = this.backgroundSize || '30%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['flurry']; - } - whirlingPatternBg() { - this.style.backgroundSize = this.backgroundSize || '20%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['whirling']; - } - replicatePatternBg() { - this.style.backgroundSize = this.backgroundSize || '100%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['replicate']; - } - scribblePatternBg() { - this.style.backgroundSize = this.backgroundSize || '30%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['scribble']; - } - squigglyPatternBg() { - this.style.backgroundSize = this.backgroundSize || '20%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['squiggly']; - } - gyrratePatternBg() { - this.style.backgroundSize = this.backgroundSize || '100%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['gyrate']; - } - leavesPatternBg() { - this.style.backgroundSize = this.backgroundSize || '40%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['leaves']; - } - reflectionPatternBg() { - this.style.backgroundSize = this.backgroundSize || '20%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['reflection']; - } - spotPatternBg() { - this.style.backgroundSize = this.backgroundSize || '40%'; - this.style.backgroundPosition = this.backgroundPosition || 'center'; - return backgrounds['spot']; - } -} -window.customElements.define("ts-root-container", TSRootContainer, { extends: 'div' }); - -class TSElement extends HTMLDivElement { - constructor() { - super(); - } - connectedCallback() { } -} -window.customElements.define('ts-element', TSElement, { extends: 'div' }); - -var e=[{name:"Aegean Airlines",iataCode:"A3"},{name:"Aeroflot",iataCode:"SU"},{name:"Aerolineas Argentinas",iataCode:"AR"},{name:"Aeromexico",iataCode:"AM"},{name:"Air Algerie",iataCode:"AH"},{name:"Air Arabia",iataCode:"G9"},{name:"Air Canada",iataCode:"AC"},{name:"Air China",iataCode:"CA"},{name:"Air Europa",iataCode:"UX"},{name:"Air France-KLM",iataCode:"AF"},{name:"Air India",iataCode:"AI"},{name:"Air Mauritius",iataCode:"MK"},{name:"Air New Zealand",iataCode:"NZ"},{name:"Air Niugini",iataCode:"PX"},{name:"Air Tahiti",iataCode:"VT"},{name:"Air Tahiti Nui",iataCode:"TN"},{name:"Air Transat",iataCode:"TS"},{name:"AirAsia X",iataCode:"D7"},{name:"AirAsia",iataCode:"AK"},{name:"Aircalin",iataCode:"SB"},{name:"Alaska Airlines",iataCode:"AS"},{name:"Alitalia",iataCode:"AZ"},{name:"All Nippon Airways",iataCode:"NH"},{name:"Allegiant Air",iataCode:"G4"},{name:"American Airlines",iataCode:"AA"},{name:"Asiana Airlines",iataCode:"OZ"},{name:"Avianca",iataCode:"AV"},{name:"Azul Linhas Aereas Brasileiras",iataCode:"AD"},{name:"Azur Air",iataCode:"ZF"},{name:"Beijing Capital Airlines",iataCode:"JD"},{name:"Boliviana de Aviacion",iataCode:"OB"},{name:"British Airways",iataCode:"BA"},{name:"Cathay Pacific",iataCode:"CX"},{name:"Cebu Pacific Air",iataCode:"5J"},{name:"China Airlines",iataCode:"CI"},{name:"China Eastern Airlines",iataCode:"MU"},{name:"China Southern Airlines",iataCode:"CZ"},{name:"Condor",iataCode:"DE"},{name:"Copa Airlines",iataCode:"CM"},{name:"Delta Air Lines",iataCode:"DL"},{name:"Easyfly",iataCode:"VE"},{name:"EasyJet",iataCode:"U2"},{name:"EcoJet",iataCode:"8J"},{name:"Egyptair",iataCode:"MS"},{name:"El Al",iataCode:"LY"},{name:"Emirates Airlines",iataCode:"EK"},{name:"Ethiopian Airlines",iataCode:"ET"},{name:"Etihad Airways",iataCode:"EY"},{name:"EVA Air",iataCode:"BR"},{name:"Fiji Airways",iataCode:"FJ"},{name:"Finnair",iataCode:"AY"},{name:"Flybondi",iataCode:"FO"},{name:"Flydubai",iataCode:"FZ"},{name:"FlySafair",iataCode:"FA"},{name:"Frontier Airlines",iataCode:"F9"},{name:"Garuda Indonesia",iataCode:"GA"},{name:"Go First",iataCode:"G8"},{name:"Gol Linhas Aereas Inteligentes",iataCode:"G3"},{name:"Hainan Airlines",iataCode:"HU"},{name:"Hawaiian Airlines",iataCode:"HA"},{name:"IndiGo Airlines",iataCode:"6E"},{name:"Japan Airlines",iataCode:"JL"},{name:"Jeju Air",iataCode:"7C"},{name:"Jet2",iataCode:"LS"},{name:"JetBlue Airways",iataCode:"B6"},{name:"JetSMART",iataCode:"JA"},{name:"Juneyao Airlines",iataCode:"HO"},{name:"Kenya Airways",iataCode:"KQ"},{name:"Korean Air",iataCode:"KE"},{name:"Kulula.com",iataCode:"MN"},{name:"LATAM Airlines",iataCode:"LA"},{name:"Lion Air",iataCode:"JT"},{name:"LOT Polish Airlines",iataCode:"LO"},{name:"Lufthansa",iataCode:"LH"},{name:"Libyan Airlines",iataCode:"LN"},{name:"Linea Aerea Amaszonas",iataCode:"Z8"},{name:"Malaysia Airlines",iataCode:"MH"},{name:"Nordwind Airlines",iataCode:"N4"},{name:"Norwegian Air Shuttle",iataCode:"DY"},{name:"Oman Air",iataCode:"WY"},{name:"Pakistan International Airlines",iataCode:"PK"},{name:"Pegasus Airlines",iataCode:"PC"},{name:"Philippine Airlines",iataCode:"PR"},{name:"Qantas Group",iataCode:"QF"},{name:"Qatar Airways",iataCode:"QR"},{name:"Republic Airways",iataCode:"YX"},{name:"Royal Air Maroc",iataCode:"AT"},{name:"Ryanair",iataCode:"FR"},{name:"S7 Airlines",iataCode:"S7"},{name:"SAS",iataCode:"SK"},{name:"Satena",iataCode:"9R"},{name:"Saudia",iataCode:"SV"},{name:"Shandong Airlines",iataCode:"SC"},{name:"Sichuan Airlines",iataCode:"3U"},{name:"Singapore Airlines",iataCode:"SQ"},{name:"Sky Airline",iataCode:"H2"},{name:"SkyWest Airlines",iataCode:"OO"},{name:"South African Airways",iataCode:"SA"},{name:"Southwest Airlines",iataCode:"WN"},{name:"SpiceJet",iataCode:"SG"},{name:"Spirit Airlines",iataCode:"NK"},{name:"Spring Airlines",iataCode:"9S"},{name:"SriLankan Airlines",iataCode:"UL"},{name:"Star Peru",iataCode:"2I"},{name:"Sun Country Airlines",iataCode:"SY"},{name:"SunExpress",iataCode:"XQ"},{name:"TAP Air Portugal",iataCode:"TP"},{name:"Thai AirAsia",iataCode:"FD"},{name:"Thai Airways",iataCode:"TG"},{name:"TUI Airways",iataCode:"BY"},{name:"Tunisair",iataCode:"TU"},{name:"Turkish Airlines",iataCode:"TK"},{name:"Ukraine International",iataCode:"PS"},{name:"United Airlines",iataCode:"UA"},{name:"Ural Airlines",iataCode:"U6"},{name:"VietJet Air",iataCode:"VJ"},{name:"Vietnam Airlines",iataCode:"VN"},{name:"Virgin Atlantic Airways",iataCode:"VS"},{name:"Virgin Australia",iataCode:"VA"},{name:"VivaAerobus",iataCode:"VB"},{name:"VOEPASS Linhas Aereas",iataCode:"2Z"},{name:"Volaris",iataCode:"Y4"},{name:"WestJet",iataCode:"WS"},{name:"Wingo",iataCode:"P5"},{name:"Wizz Air",iataCode:"W6"}];var a=[{name:"Aerospatiale/BAC Concorde",iataTypeCode:"SSC"},{name:"Airbus A300",iataTypeCode:"AB3"},{name:"Airbus A310",iataTypeCode:"310"},{name:"Airbus A310-200",iataTypeCode:"312"},{name:"Airbus A310-300",iataTypeCode:"313"},{name:"Airbus A318",iataTypeCode:"318"},{name:"Airbus A319",iataTypeCode:"319"},{name:"Airbus A319neo",iataTypeCode:"31N"},{name:"Airbus A320",iataTypeCode:"320"},{name:"Airbus A320neo",iataTypeCode:"32N"},{name:"Airbus A321",iataTypeCode:"321"},{name:"Airbus A321neo",iataTypeCode:"32Q"},{name:"Airbus A330",iataTypeCode:"330"},{name:"Airbus A330-200",iataTypeCode:"332"},{name:"Airbus A330-300",iataTypeCode:"333"},{name:"Airbus A330-800neo",iataTypeCode:"338"},{name:"Airbus A330-900neo",iataTypeCode:"339"},{name:"Airbus A340",iataTypeCode:"340"},{name:"Airbus A340-200",iataTypeCode:"342"},{name:"Airbus A340-300",iataTypeCode:"343"},{name:"Airbus A340-500",iataTypeCode:"345"},{name:"Airbus A340-600",iataTypeCode:"346"},{name:"Airbus A350",iataTypeCode:"350"},{name:"Airbus A350-900",iataTypeCode:"359"},{name:"Airbus A350-1000",iataTypeCode:"351"},{name:"Airbus A380",iataTypeCode:"380"},{name:"Airbus A380-800",iataTypeCode:"388"},{name:"Antonov An-12",iataTypeCode:"ANF"},{name:"Antonov An-24",iataTypeCode:"AN4"},{name:"Antonov An-26",iataTypeCode:"A26"},{name:"Antonov An-28",iataTypeCode:"A28"},{name:"Antonov An-30",iataTypeCode:"A30"},{name:"Antonov An-32",iataTypeCode:"A32"},{name:"Antonov An-72",iataTypeCode:"AN7"},{name:"Antonov An-124 Ruslan",iataTypeCode:"A4F"},{name:"Antonov An-140",iataTypeCode:"A40"},{name:"Antonov An-148",iataTypeCode:"A81"},{name:"Antonov An-158",iataTypeCode:"A58"},{name:"Antonov An-225 Mriya",iataTypeCode:"A5F"},{name:"Boeing 707",iataTypeCode:"703"},{name:"Boeing 717",iataTypeCode:"717"},{name:"Boeing 720B",iataTypeCode:"B72"},{name:"Boeing 727",iataTypeCode:"727"},{name:"Boeing 727-100",iataTypeCode:"721"},{name:"Boeing 727-200",iataTypeCode:"722"},{name:"Boeing 737 MAX 7",iataTypeCode:"7M7"},{name:"Boeing 737 MAX 8",iataTypeCode:"7M8"},{name:"Boeing 737 MAX 9",iataTypeCode:"7M9"},{name:"Boeing 737 MAX 10",iataTypeCode:"7MJ"},{name:"Boeing 737",iataTypeCode:"737"},{name:"Boeing 737-100",iataTypeCode:"731"},{name:"Boeing 737-200",iataTypeCode:"732"},{name:"Boeing 737-300",iataTypeCode:"733"},{name:"Boeing 737-400",iataTypeCode:"734"},{name:"Boeing 737-500",iataTypeCode:"735"},{name:"Boeing 737-600",iataTypeCode:"736"},{name:"Boeing 737-700",iataTypeCode:"73G"},{name:"Boeing 737-800",iataTypeCode:"738"},{name:"Boeing 737-900",iataTypeCode:"739"},{name:"Boeing 747",iataTypeCode:"747"},{name:"Boeing 747-100",iataTypeCode:"741"},{name:"Boeing 747-200",iataTypeCode:"742"},{name:"Boeing 747-300",iataTypeCode:"743"},{name:"Boeing 747-400",iataTypeCode:"744"},{name:"Boeing 747-400D",iataTypeCode:"74J"},{name:"Boeing 747-8",iataTypeCode:"748"},{name:"Boeing 747SP",iataTypeCode:"74L"},{name:"Boeing 747SR",iataTypeCode:"74R"},{name:"Boeing 757",iataTypeCode:"757"},{name:"Boeing 757-200",iataTypeCode:"752"},{name:"Boeing 757-300",iataTypeCode:"753"},{name:"Boeing 767",iataTypeCode:"767"},{name:"Boeing 767-200",iataTypeCode:"762"},{name:"Boeing 767-300",iataTypeCode:"763"},{name:"Boeing 767-400",iataTypeCode:"764"},{name:"Boeing 777",iataTypeCode:"777"},{name:"Boeing 777-200",iataTypeCode:"772"},{name:"Boeing 777-200LR",iataTypeCode:"77L"},{name:"Boeing 777-300",iataTypeCode:"773"},{name:"Boeing 777-300ER",iataTypeCode:"77W"},{name:"Boeing 787",iataTypeCode:"787"},{name:"Boeing 787-8",iataTypeCode:"788"},{name:"Boeing 787-9",iataTypeCode:"789"},{name:"Boeing 787-10",iataTypeCode:"781"},{name:"Canadair Challenger",iataTypeCode:"CCJ"},{name:"Canadair CL-44",iataTypeCode:"CL4"},{name:"Canadair Regional Jet 100",iataTypeCode:"CR1"},{name:"Canadair Regional Jet 200",iataTypeCode:"CR2"},{name:"Canadair Regional Jet 700",iataTypeCode:"CR7"},{name:"Canadair Regional Jet 705",iataTypeCode:"CRA"},{name:"Canadair Regional Jet 900",iataTypeCode:"CR9"},{name:"Canadair Regional Jet 1000",iataTypeCode:"CRK"},{name:"De Havilland Canada DHC-2 Beaver",iataTypeCode:"DHP"},{name:"De Havilland Canada DHC-2 Turbo-Beaver",iataTypeCode:"DHR"},{name:"De Havilland Canada DHC-3 Otter",iataTypeCode:"DHL"},{name:"De Havilland Canada DHC-4 Caribou",iataTypeCode:"DHC"},{name:"De Havilland Canada DHC-6 Twin Otter",iataTypeCode:"DHT"},{name:"De Havilland Canada DHC-7 Dash 7",iataTypeCode:"DH7"},{name:"De Havilland Canada DHC-8-100 Dash 8 / 8Q",iataTypeCode:"DH1"},{name:"De Havilland Canada DHC-8-200 Dash 8 / 8Q",iataTypeCode:"DH2"},{name:"De Havilland Canada DHC-8-300 Dash 8 / 8Q",iataTypeCode:"DH3"},{name:"De Havilland Canada DHC-8-400 Dash 8Q",iataTypeCode:"DH4"},{name:"De Havilland DH.104 Dove",iataTypeCode:"DHD"},{name:"De Havilland DH.114 Heron",iataTypeCode:"DHH"},{name:"Douglas DC-3",iataTypeCode:"D3F"},{name:"Douglas DC-6",iataTypeCode:"D6F"},{name:"Douglas DC-8-50",iataTypeCode:"D8T"},{name:"Douglas DC-8-62",iataTypeCode:"D8L"},{name:"Douglas DC-8-72",iataTypeCode:"D8Q"},{name:"Douglas DC-9-10",iataTypeCode:"D91"},{name:"Douglas DC-9-20",iataTypeCode:"D92"},{name:"Douglas DC-9-30",iataTypeCode:"D93"},{name:"Douglas DC-9-40",iataTypeCode:"D94"},{name:"Douglas DC-9-50",iataTypeCode:"D95"},{name:"Douglas DC-10",iataTypeCode:"D10"},{name:"Douglas DC-10-10",iataTypeCode:"D1X"},{name:"Douglas DC-10-30",iataTypeCode:"D1Y"},{name:"Embraer 170",iataTypeCode:"E70"},{name:"Embraer 175",iataTypeCode:"E75"},{name:"Embraer 190",iataTypeCode:"E90"},{name:"Embraer 195",iataTypeCode:"E95"},{name:"Embraer E190-E2",iataTypeCode:"290"},{name:"Embraer E195-E2",iataTypeCode:"295"},{name:"Embraer EMB.110 Bandeirante",iataTypeCode:"EMB"},{name:"Embraer EMB.120 Brasilia",iataTypeCode:"EM2"},{name:"Embraer Legacy 600",iataTypeCode:"ER3"},{name:"Embraer Phenom 100",iataTypeCode:"EP1"},{name:"Embraer Phenom 300",iataTypeCode:"EP3"},{name:"Embraer RJ135",iataTypeCode:"ER3"},{name:"Embraer RJ140",iataTypeCode:"ERD"},{name:"Embraer RJ145 Amazon",iataTypeCode:"ER4"},{name:"Ilyushin IL18",iataTypeCode:"IL8"},{name:"Ilyushin IL62",iataTypeCode:"IL6"},{name:"Ilyushin IL76",iataTypeCode:"IL7"},{name:"Ilyushin IL86",iataTypeCode:"ILW"},{name:"Ilyushin IL96-300",iataTypeCode:"I93"},{name:"Ilyushin IL114",iataTypeCode:"I14"},{name:"Lockheed L-182 / 282 / 382 (L-100) Hercules",iataTypeCode:"LOH"},{name:"Lockheed L-188 Electra",iataTypeCode:"LOE"},{name:"Lockheed L-1011 Tristar",iataTypeCode:"L10"},{name:"Lockheed L-1049 Super Constellation",iataTypeCode:"L49"},{name:"McDonnell Douglas MD11",iataTypeCode:"M11"},{name:"McDonnell Douglas MD80",iataTypeCode:"M80"},{name:"McDonnell Douglas MD81",iataTypeCode:"M81"},{name:"McDonnell Douglas MD82",iataTypeCode:"M82"},{name:"McDonnell Douglas MD83",iataTypeCode:"M83"},{name:"McDonnell Douglas MD87",iataTypeCode:"M87"},{name:"McDonnell Douglas MD88",iataTypeCode:"M88"},{name:"McDonnell Douglas MD90",iataTypeCode:"M90"},{name:"Sukhoi Superjet 100-95",iataTypeCode:"SU9"},{name:"Tupolev Tu-134",iataTypeCode:"TU3"},{name:"Tupolev Tu-154",iataTypeCode:"TU5"},{name:"Tupolev Tu-204",iataTypeCode:"T20"},{name:"Yakovlev Yak-40",iataTypeCode:"YK4"},{name:"Yakovlev Yak-42",iataTypeCode:"YK2"}];var o=[{name:"Adelaide International Airport",iataCode:"ADL"},{name:"Adolfo Suarez Madrid-Barajas Airport",iataCode:"MAD"},{name:"Aeroparque Jorge Newbery Airport",iataCode:"AEP"},{name:"Afonso Pena International Airport",iataCode:"CWB"},{name:"Alfonso Bonilla Aragon International Airport",iataCode:"CLO"},{name:"Amsterdam Airport Schiphol",iataCode:"AMS"},{name:"Arturo Merino Benitez International Airport",iataCode:"SCL"},{name:"Auckland International Airport",iataCode:"AKL"},{name:"Beijing Capital International Airport",iataCode:"PEK"},{name:"Belem Val de Cans International Airport",iataCode:"BEL"},{name:"Belo Horizonte Tancredo Neves International Airport",iataCode:"CNF"},{name:"Berlin-Tegel Airport",iataCode:"TXL"},{name:"Bole International Airport",iataCode:"ADD"},{name:"Brasilia-Presidente Juscelino Kubitschek International Airport",iataCode:"BSB"},{name:"Brisbane International Airport",iataCode:"BNE"},{name:"Brussels Airport",iataCode:"BRU"},{name:"Cairns Airport",iataCode:"CNS"},{name:"Cairo International Airport",iataCode:"CAI"},{name:"Canberra Airport",iataCode:"CBR"},{name:"Capetown International Airport",iataCode:"CPT"},{name:"Charles de Gaulle International Airport",iataCode:"CDG"},{name:"Charlotte Douglas International Airport",iataCode:"CLT"},{name:"Chengdu Shuangliu International Airport",iataCode:"CTU"},{name:"Chhatrapati Shivaji International Airport",iataCode:"BOM"},{name:"Chicago O'Hare International Airport",iataCode:"ORD"},{name:"Chongqing Jiangbei International Airport",iataCode:"CKG"},{name:"Christchurch International Airport",iataCode:"CHC"},{name:"Copenhagen Kastrup Airport",iataCode:"CPH"},{name:"Dallas Fort Worth International Airport",iataCode:"DFW"},{name:"Daniel K. Inouye International Airport",iataCode:"HNL"},{name:"Denver International Airport",iataCode:"DEN"},{name:"Don Mueang International Airport",iataCode:"DMK"},{name:"Dubai International Airport",iataCode:"DXB"},{name:"Dublin Airport",iataCode:"DUB"},{name:"Dusseldorf Airport",iataCode:"DUS"},{name:"El Dorado International Airport",iataCode:"BOG"},{name:"Eleftherios Venizelos International Airport",iataCode:"ATH"},{name:"Faa'a International Airport",iataCode:"PPT"},{name:"Fort Lauderdale Hollywood International Airport",iataCode:"FLL"},{name:"Fortaleza Pinto Martins International Airport",iataCode:"FOR"},{name:"Frankfurt am Main Airport",iataCode:"FRA"},{name:"George Bush Intercontinental Houston Airport",iataCode:"IAH"},{name:"Gold Coast Airport",iataCode:"OOL"},{name:"Guarulhos - Governador Andre Franco Montoro International Airport",iataCode:"GRU"},{name:"Hartsfield-Jackson Atlanta International Airport",iataCode:"ATL"},{name:"Helsinki Vantaa Airport",iataCode:"HEL"},{name:"Hobart International Airport",iataCode:"HBA"},{name:"Hong Kong International Airport",iataCode:"HKG"},{name:"Houari Boumediene Airport",iataCode:"ALG"},{name:"Hurgada International Airport",iataCode:"HRG"},{name:"Incheon International Airport",iataCode:"ICN"},{name:"Indira Gandhi International Airport",iataCode:"DEL"},{name:"Istanbul Airport",iataCode:"IST"},{name:"Jacksons International Airport",iataCode:"POM"},{name:"Jeju International Airport",iataCode:"CJU"},{name:"John F Kennedy International Airport",iataCode:"JFK"},{name:"Jorge Chavez International Airport",iataCode:"LIM"},{name:"Jose Maria Cordova International Airport",iataCode:"MDE"},{name:"Josep Tarradellas Barcelona-El Prat Airport",iataCode:"BCN"},{name:"Kahului Airport",iataCode:"OGG"},{name:"King Abdulaziz International Airport",iataCode:"JED"},{name:"Kuala Lumpur International Airport",iataCode:"KUL"},{name:"Kunming Changshui International Airport",iataCode:"KMG"},{name:"La Tontouta International Airport",iataCode:"NOU"},{name:"Leonardo da Vinci-Fiumicino Airport",iataCode:"FCO"},{name:"London Heathrow Airport",iataCode:"LHR"},{name:"Los Angeles International Airport",iataCode:"LAX"},{name:"McCarran International Airport",iataCode:"LAS"},{name:"Melbourne International Airport",iataCode:"MEL"},{name:"Mexico City International Airport",iataCode:"MEX"},{name:"Miami International Airport",iataCode:"MIA"},{name:"Ministro Pistarini International Airport",iataCode:"EZE"},{name:"Minneapolis-St Paul International/Wold-Chamberlain Airport",iataCode:"MSP"},{name:"Mohammed V International Airport",iataCode:"CMN"},{name:"Moscow Domodedovo Airport",iataCode:"DME"},{name:"Munich Airport",iataCode:"MUC"},{name:"Murtala Muhammed International Airport",iataCode:"LOS"},{name:"Nadi International Airport",iataCode:"NAN"},{name:"Nairobi Jomo Kenyatta International Airport",iataCode:"NBO"},{name:"Narita International Airport",iataCode:"NRT"},{name:"Newark Liberty International Airport",iataCode:"EWR"},{name:"Ninoy Aquino International Airport",iataCode:"MNL"},{name:"Noumea Magenta Airport",iataCode:"GEA"},{name:"O. R. Tambo International Airport",iataCode:"JNB"},{name:"Orlando International Airport",iataCode:"MCO"},{name:"Oslo Lufthavn",iataCode:"OSL"},{name:"Perth Airport",iataCode:"PER"},{name:"Phoenix Sky Harbor International Airport",iataCode:"PHX"},{name:"Recife Guararapes-Gilberto Freyre International Airport",iataCode:"REC"},{name:"Rio de Janeiro Galeao International Airport",iataCode:"GIG"},{name:"Salgado Filho International Airport",iataCode:"POA"},{name:"Salvador Deputado Luis Eduardo Magalhaes International Airport",iataCode:"SSA"},{name:"San Francisco International Airport",iataCode:"SFO"},{name:"Santos Dumont Airport",iataCode:"SDU"},{name:"Sao Paulo-Congonhas Airport",iataCode:"CGH"},{name:"Seattle Tacoma International Airport",iataCode:"SEA"},{name:"Shanghai Hongqiao International Airport",iataCode:"SHA"},{name:"Shanghai Pudong International Airport",iataCode:"PVG"},{name:"Shenzhen Bao'an International Airport",iataCode:"SZX"},{name:"Sheremetyevo International Airport",iataCode:"SVO"},{name:"Singapore Changi Airport",iataCode:"SIN"},{name:"Soekarno-Hatta International Airport",iataCode:"CGK"},{name:'Stockholm-Arlanda Airport"',iataCode:"ARN"},{name:"Suvarnabhumi Airport",iataCode:"BKK"},{name:"Sydney Kingsford Smith International Airport",iataCode:"SYD"},{name:"Taiwan Taoyuan International Airport",iataCode:"TPE"},{name:"Tan Son Nhat International Airport",iataCode:"SGN"},{name:"Tokyo Haneda International Airport",iataCode:"HND"},{name:"Toronto Pearson International Airport",iataCode:"YYZ"},{name:"Tunis Carthage International Airport",iataCode:"TUN"},{name:"Vancouver International Airport",iataCode:"YVR"},{name:"Vienna International Airport",iataCode:"VIE"},{name:"Viracopos International Airport",iataCode:"VCP"},{name:"Vnukovo International Airport",iataCode:"VKO"},{name:"Wellington International Airport",iataCode:"WLG"},{name:"Xi'an Xianyang International Airport",iataCode:"XIY"},{name:"Zhukovsky International Airport",iataCode:"ZIA"},{name:"Zurich Airport",iataCode:"ZRH"}];var Ja={airline:e,airplane:a,airport:o},r=Ja;var n=["American black bear","Asian black bear","Brown bear","Giant panda","Polar bear","Sloth bear","Spectacled bear","Sun bear"];var i=["Abert's Towhee","Acadian Flycatcher","Acorn Woodpecker","Alder Flycatcher","Aleutian Tern","Allen's Hummingbird","Altamira Oriole","American Avocet","American Bittern","American Black Duck","American Coot","American Crow","American Dipper","American Golden-Plover","American Goldfinch","American Kestrel","American Oystercatcher","American Pipit","American Redstart","American Robin","American Tree Sparrow","American White Pelican","American Wigeon","American Woodcock","Ancient Murrelet","Anhinga","Anna's Hummingbird","Antillean Nighthawk","Antillean Palm Swift","Aplomado Falcon","Arctic Loon","Arctic Tern","Arctic Warbler","Ash-throated Flycatcher","Ashy Storm-Petrel","Asian Brown Flycatcher","Atlantic Puffin","Audubon's Oriole","Audubon's Shearwater","Aztec Thrush","Azure Gallinule","Bachman's Sparrow","Bachman's Warbler","Bahama Mockingbird","Bahama Swallow","Bahama Woodstar","Baikal Teal","Baird's Sandpiper","Baird's Sparrow","Bald Eagle","Baltimore Oriole","Bananaquit","Band-rumped Storm-Petrel","Band-tailed Gull","Band-tailed Pigeon","Bank Swallow","Bar-tailed Godwit","Barn Owl","Barn Swallow","Barnacle Goose","Barred Owl","Barrow's Goldeneye","Bay-breasted Warbler","Bean Goose","Bell's Vireo","Belted Kingfisher","Bendire's Thrasher","Berylline Hummingbird","Bewick's Wren","Bicknell's Thrush","Black Catbird","Black Guillemot","Black Noddy","Black Oystercatcher","Black Phoebe","Black Rail","Black Rosy-Finch","Black Scoter","Black Skimmer","Black Storm-Petrel","Black Swift","Black Tern","Black Turnstone","Black Vulture","Black-and-white Warbler","Black-backed Wagtail","Black-backed Woodpecker","Black-bellied Plover","Black-bellied Whistling-Duck","Black-billed Cuckoo","Black-billed Magpie","Black-browed Albatross","Black-capped Chickadee","Black-capped Gnatcatcher","Black-capped Petrel","Black-capped Vireo","Black-chinned Hummingbird","Black-chinned Sparrow","Black-crowned Night-Heron","Black-faced Grassquit","Black-footed Albatross","Black-headed Grosbeak","Black-headed Gull","Black-legged Kittiwake","Black-necked Stilt","Black-tailed Gnatcatcher","Black-tailed Godwit","Black-tailed Gull","Black-throated Blue Warbler","Black-throated Gray Warbler","Black-throated Green Warbler","Black-throated Sparrow","Black-vented Oriole","Black-vented Shearwater","Black-whiskered Vireo","Black-winged Stilt","Blackburnian Warbler","Blackpoll Warbler","Blue Bunting","Blue Grosbeak","Blue Grouse","Blue Jay","Blue Mockingbird","Blue-footed Booby","Blue-gray Gnatcatcher","Blue-headed Vireo","Blue-throated Hummingbird","Blue-winged Teal","Blue-winged Warbler","Bluethroat","Boat-tailed Grackle","Bobolink","Bohemian Waxwing","Bonaparte's Gull","Boreal Chickadee","Boreal Owl","Botteri's Sparrow","Brambling","Brandt's Cormorant","Brant","Brewer's Blackbird","Brewer's Sparrow","Bridled Tern","Bridled Titmouse","Bristle-thighed Curlew","Broad-billed Hummingbird","Broad-billed Sandpiper","Broad-tailed Hummingbird","Broad-winged Hawk","Bronzed Cowbird","Brown Booby","Brown Creeper","Brown Jay","Brown Noddy","Brown Pelican","Brown Shrike","Brown Thrasher","Brown-capped Rosy-Finch","Brown-chested Martin","Brown-crested Flycatcher","Brown-headed Cowbird","Brown-headed Nuthatch","Budgerigar","Buff-bellied Hummingbird","Buff-breasted Flycatcher","Buff-breasted Sandpiper","Buff-collared Nightjar","Bufflehead","Buller's Shearwater","Bullock's Oriole","Bumblebee Hummingbird","Burrowing Owl","Bushtit","Cactus Wren","California Condor","California Gnatcatcher","California Gull","California Quail","California Thrasher","California Towhee","Calliope Hummingbird","Canada Goose","Canada Warbler","Canvasback","Canyon Towhee","Canyon Wren","Cape May Warbler","Caribbean Elaenia","Carolina Chickadee","Carolina Parakeet","Carolina Wren","Caspian Tern","Cassin's Auklet","Cassin's Finch","Cassin's Kingbird","Cassin's Sparrow","Cassin's Vireo","Cattle Egret","Cave Swallow","Cedar Waxwing","Cerulean Warbler","Chestnut-backed Chickadee","Chestnut-collared Longspur","Chestnut-sided Warbler","Chihuahuan Raven","Chimney Swift","Chinese Egret","Chipping Sparrow","Chuck-will's-widow","Chukar","Cinnamon Hummingbird","Cinnamon Teal","Citrine Wagtail","Clapper Rail","Clark's Grebe","Clark's Nutcracker","Clay-colored Robin","Clay-colored Sparrow","Cliff Swallow","Colima Warbler","Collared Forest-Falcon","Collared Plover","Common Black-Hawk","Common Chaffinch","Common Crane","Common Cuckoo","Common Eider","Common Goldeneye","Common Grackle","Common Greenshank","Common Ground-Dove","Common House-Martin","Common Loon","Common Merganser","Common Moorhen","Common Murre","Common Nighthawk","Common Pauraque","Common Pochard","Common Poorwill","Common Raven","Common Redpoll","Common Ringed Plover","Common Rosefinch","Common Sandpiper","Common Snipe","Common Swift","Common Tern","Common Yellowthroat","Connecticut Warbler","Cook's Petrel","Cooper's Hawk","Cordilleran Flycatcher","Corn Crake","Cory's Shearwater","Costa's Hummingbird","Couch's Kingbird","Crane Hawk","Craveri's Murrelet","Crescent-chested Warbler","Crested Auklet","Crested Caracara","Crested Myna","Crimson-collared Grosbeak","Crissal Thrasher","Cuban Martin","Curlew Sandpiper","Curve-billed Thrasher","Dark-eyed Junco","Dickcissel","Double-crested Cormorant","Double-striped Thick-knee","Dovekie","Downy Woodpecker","Dunlin","Dusky Flycatcher","Dusky Thrush","Dusky Warbler","Dusky-capped Flycatcher","Eared Grebe","Eared Trogon","Eastern Bluebird","Eastern Kingbird","Eastern Meadowlark","Eastern Phoebe","Eastern Screech-Owl","Eastern Towhee","Eastern Wood-Pewee","Elegant Tern","Elegant Trogon","Elf Owl","Emperor Goose","Eskimo Curlew","Eurasian Blackbird","Eurasian Bullfinch","Eurasian Collared-Dove","Eurasian Coot","Eurasian Curlew","Eurasian Dotterel","Eurasian Hobby","Eurasian Jackdaw","Eurasian Kestrel","Eurasian Oystercatcher","Eurasian Siskin","Eurasian Tree Sparrow","Eurasian Wigeon","Eurasian Woodcock","Eurasian Wryneck","European Golden-Plover","European Starling","European Storm-Petrel","European Turtle-Dove","Evening Grosbeak","Eyebrowed Thrush","Falcated Duck","Fan-tailed Warbler","Far Eastern Curlew","Ferruginous Hawk","Ferruginous Pygmy-Owl","Field Sparrow","Fieldfare","Fish Crow","Five-striped Sparrow","Flame-colored Tanager","Flammulated Owl","Flesh-footed Shearwater","Florida Scrub-Jay","Fork-tailed Flycatcher","Fork-tailed Storm-Petrel","Fork-tailed Swift","Forster's Tern","Fox Sparrow","Franklin's Gull","Fulvous Whistling-Duck","Gadwall","Gambel's Quail","Garganey","Gila Woodpecker","Gilded Flicker","Glaucous Gull","Glaucous-winged Gull","Glossy Ibis","Golden Eagle","Golden-cheeked Warbler","Golden-crowned Kinglet","Golden-crowned Sparrow","Golden-crowned Warbler","Golden-fronted Woodpecker","Golden-winged Warbler","Grace's Warbler","Grasshopper Sparrow","Gray Bunting","Gray Catbird","Gray Flycatcher","Gray Hawk","Gray Jay","Gray Kingbird","Gray Partridge","Gray Silky-flycatcher","Gray Vireo","Gray Wagtail","Gray-breasted Martin","Gray-cheeked Thrush","Gray-crowned Rosy-Finch","Gray-crowned Yellowthroat","Gray-headed Chickadee","Gray-spotted Flycatcher","Gray-tailed Tattler","Great Auk","Great Black-backed Gull","Great Blue Heron","Great Cormorant","Great Crested Flycatcher","Great Egret","Great Frigatebird","Great Gray Owl","Great Horned Owl","Great Kiskadee","Great Knot","Great Skua","Great Spotted Woodpecker","Great-tailed Grackle","Greater Flamingo","Greater Pewee","Greater Prairie-chicken","Greater Roadrunner","Greater Scaup","Greater Shearwater","Greater White-fronted Goose","Greater Yellowlegs","Green Heron","Green Jay","Green Kingfisher","Green Sandpiper","Green Violet-ear","Green-breasted Mango","Green-tailed Towhee","Green-winged Teal","Greenish Elaenia","Groove-billed Ani","Gull-billed Tern","Gyrfalcon","Hairy Woodpecker","Hammond's Flycatcher","Harlequin Duck","Harris's Hawk","Harris's Sparrow","Hawfinch","Heermann's Gull","Henslow's Sparrow","Hepatic Tanager","Herald Petrel","Hermit Thrush","Hermit Warbler","Herring Gull","Himalayan Snowcock","Hoary Redpoll","Hooded Merganser","Hooded Oriole","Hooded Warbler","Hook-billed Kite","Hoopoe","Horned Grebe","Horned Lark","Horned Puffin","House Finch","House Sparrow","House Wren","Hudsonian Godwit","Hutton's Vireo","Iceland Gull","Inca Dove","Indigo Bunting","Island Scrub-Jay","Ivory Gull","Ivory-billed Woodpecker","Jabiru","Jack Snipe","Jungle Nightjar","Juniper Titmouse","Kentucky Warbler","Key West Quail-Dove","Killdeer","King Eider","King Rail","Kirtland's Warbler","Kittlitz's Murrelet","La Sagra's Flycatcher","Labrador Duck","Ladder-backed Woodpecker","Lanceolated Warbler","Lapland Longspur","Large-billed Tern","Lark Bunting","Lark Sparrow","Laughing Gull","Lawrence's Goldfinch","Laysan Albatross","Lazuli Bunting","Le Conte's Sparrow","Le Conte's Thrasher","Leach's Storm-Petrel","Least Auklet","Least Bittern","Least Flycatcher","Least Grebe","Least Sandpiper","Least Storm-Petrel","Least Tern","Lesser Black-backed Gull","Lesser Frigatebird","Lesser Goldfinch","Lesser Nighthawk","Lesser Prairie-chicken","Lesser Scaup","Lesser White-fronted Goose","Lesser Yellowlegs","Lewis's Woodpecker","Limpkin","Lincoln's Sparrow","Little Blue Heron","Little Bunting","Little Curlew","Little Egret","Little Gull","Little Ringed Plover","Little Shearwater","Little Stint","Loggerhead Kingbird","Loggerhead Shrike","Long-billed Curlew","Long-billed Dowitcher","Long-billed Murrelet","Long-billed Thrasher","Long-eared Owl","Long-tailed Jaeger","Long-toed Stint","Louisiana Waterthrush","Lucifer Hummingbird","Lucy's Warbler","MacGillivray's Warbler","Magnificent Frigatebird","Magnificent Hummingbird","Magnolia Warbler","Mallard","Mangrove Cuckoo","Manx Shearwater","Marbled Godwit","Marbled Murrelet","Marsh Sandpiper","Marsh Wren","Masked Booby","Masked Duck","Masked Tityra","McCown's Longspur","McKay's Bunting","Merlin","Mew Gull","Mexican Chickadee","Mexican Jay","Middendorff's Grasshopper-Warbler","Mississippi Kite","Mongolian Plover","Monk Parakeet","Montezuma Quail","Mottled Duck","Mottled Owl","Mottled Petrel","Mountain Bluebird","Mountain Chickadee","Mountain Plover","Mountain Quail","Mourning Dove","Mourning Warbler","Mugimaki Flycatcher","Murphy's Petrel","Muscovy Duck","Mute Swan","Narcissus Flycatcher","Nashville Warbler","Nelson's Sharp-tailed Sparrow","Neotropic Cormorant","Northern Beardless-Tyrannulet","Northern Bobwhite","Northern Cardinal","Northern Flicker","Northern Fulmar","Northern Gannet","Northern Goshawk","Northern Harrier","Northern Hawk Owl","Northern Jacana","Northern Lapwing","Northern Mockingbird","Northern Parula","Northern Pintail","Northern Pygmy-Owl","Northern Rough-winged Swallow","Northern Saw-whet Owl","Northern Shoveler","Northern Shrike","Northern Waterthrush","Northern Wheatear","Northwestern Crow","Nuttall's Woodpecker","Nutting's Flycatcher","Oak Titmouse","Oldsquaw","Olive Sparrow","Olive Warbler","Olive-backed Pipit","Olive-sided Flycatcher","Orange-crowned Warbler","Orchard Oriole","Oriental Cuckoo","Oriental Greenfinch","Oriental Pratincole","Oriental Scops-Owl","Oriental Turtle-Dove","Osprey","Ovenbird","Pacific Golden-Plover","Pacific Loon","Pacific-slope Flycatcher","Paint-billed Crake","Painted Bunting","Painted Redstart","Pallas's Bunting","Palm Warbler","Parakeet Auklet","Parasitic Jaeger","Passenger Pigeon","Pechora Pipit","Pectoral Sandpiper","Pelagic Cormorant","Peregrine Falcon","Phainopepla","Philadelphia Vireo","Pied-billed Grebe","Pigeon Guillemot","Pileated Woodpecker","Pin-tailed Snipe","Pine Bunting","Pine Grosbeak","Pine Siskin","Pine Warbler","Pink-footed Goose","Pink-footed Shearwater","Pinyon Jay","Piping Plover","Plain Chachalaca","Plain-capped Starthroat","Plumbeous Vireo","Pomarine Jaeger","Prairie Falcon","Prairie Warbler","Prothonotary Warbler","Purple Finch","Purple Gallinule","Purple Martin","Purple Sandpiper","Pygmy Nuthatch","Pyrrhuloxia","Razorbill","Red Crossbill","Red Knot","Red Phalarope","Red-bellied Woodpecker","Red-billed Pigeon","Red-billed Tropicbird","Red-breasted Flycatcher","Red-breasted Merganser","Red-breasted Nuthatch","Red-breasted Sapsucker","Red-cockaded Woodpecker","Red-crowned Parrot","Red-eyed Vireo","Red-faced Cormorant","Red-faced Warbler","Red-flanked Bluetail","Red-footed Booby","Red-headed Woodpecker","Red-legged Kittiwake","Red-naped Sapsucker","Red-necked Grebe","Red-necked Phalarope","Red-necked Stint","Red-shouldered Hawk","Red-tailed Hawk","Red-tailed Tropicbird","Red-throated Loon","Red-throated Pipit","Red-whiskered Bulbul","Red-winged Blackbird","Reddish Egret","Redhead","Redwing","Reed Bunting","Rhinoceros Auklet","Ring-billed Gull","Ring-necked Duck","Ring-necked Pheasant","Ringed Kingfisher","Roadside Hawk","Rock Dove","Rock Ptarmigan","Rock Sandpiper","Rock Wren","Rose-breasted Grosbeak","Rose-throated Becard","Roseate Spoonbill","Roseate Tern","Ross's Goose","Ross's Gull","Rough-legged Hawk","Royal Tern","Ruby-crowned Kinglet","Ruby-throated Hummingbird","Ruddy Duck","Ruddy Ground-Dove","Ruddy Quail-Dove","Ruddy Turnstone","Ruff","Ruffed Grouse","Rufous Hummingbird","Rufous-backed Robin","Rufous-capped Warbler","Rufous-crowned Sparrow","Rufous-winged Sparrow","Rustic Bunting","Rusty Blackbird","Sabine's Gull","Sage Grouse","Sage Sparrow","Sage Thrasher","Saltmarsh Sharp-tailed Sparrow","Sanderling","Sandhill Crane","Sandwich Tern","Savannah Sparrow","Say's Phoebe","Scaled Quail","Scaly-naped Pigeon","Scarlet Ibis","Scarlet Tanager","Scissor-tailed Flycatcher","Scott's Oriole","Seaside Sparrow","Sedge Wren","Semipalmated Plover","Semipalmated Sandpiper","Sharp-shinned Hawk","Sharp-tailed Grouse","Sharp-tailed Sandpiper","Shiny Cowbird","Short-billed Dowitcher","Short-eared Owl","Short-tailed Albatross","Short-tailed Hawk","Short-tailed Shearwater","Shy Albatross","Siberian Accentor","Siberian Blue Robin","Siberian Flycatcher","Siberian Rubythroat","Sky Lark","Slate-throated Redstart","Slaty-backed Gull","Slender-billed Curlew","Smew","Smith's Longspur","Smooth-billed Ani","Snail Kite","Snow Bunting","Snow Goose","Snowy Egret","Snowy Owl","Snowy Plover","Solitary Sandpiper","Song Sparrow","Sooty Shearwater","Sooty Tern","Sora","South Polar Skua","Southern Martin","Spectacled Eider","Spoonbill Sandpiper","Spot-billed Duck","Spot-breasted Oriole","Spotted Dove","Spotted Owl","Spotted Rail","Spotted Redshank","Spotted Sandpiper","Spotted Towhee","Sprague's Pipit","Spruce Grouse","Stejneger's Petrel","Steller's Eider","Steller's Jay","Steller's Sea-Eagle","Stilt Sandpiper","Stonechat","Streak-backed Oriole","Streaked Shearwater","Strickland's Woodpecker","Stripe-headed Tanager","Sulphur-bellied Flycatcher","Summer Tanager","Surf Scoter","Surfbird","Swainson's Hawk","Swainson's Thrush","Swainson's Warbler","Swallow-tailed Kite","Swamp Sparrow","Tamaulipas Crow","Tawny-shouldered Blackbird","Temminck's Stint","Tennessee Warbler","Terek Sandpiper","Thayer's Gull","Thick-billed Kingbird","Thick-billed Murre","Thick-billed Parrot","Thick-billed Vireo","Three-toed Woodpecker","Townsend's Solitaire","Townsend's Warbler","Tree Pipit","Tree Swallow","Tricolored Blackbird","Tricolored Heron","Tropical Kingbird","Tropical Parula","Trumpeter Swan","Tufted Duck","Tufted Flycatcher","Tufted Puffin","Tufted Titmouse","Tundra Swan","Turkey Vulture","Upland Sandpiper","Varied Bunting","Varied Thrush","Variegated Flycatcher","Vaux's Swift","Veery","Verdin","Vermilion Flycatcher","Vesper Sparrow","Violet-crowned Hummingbird","Violet-green Swallow","Virginia Rail","Virginia's Warbler","Wandering Albatross","Wandering Tattler","Warbling Vireo","Wedge-rumped Storm-Petrel","Wedge-tailed Shearwater","Western Bluebird","Western Grebe","Western Gull","Western Kingbird","Western Meadowlark","Western Reef-Heron","Western Sandpiper","Western Screech-Owl","Western Scrub-Jay","Western Tanager","Western Wood-Pewee","Whimbrel","Whip-poor-will","Whiskered Auklet","Whiskered Screech-Owl","Whiskered Tern","White Ibis","White Wagtail","White-breasted Nuthatch","White-cheeked Pintail","White-chinned Petrel","White-collared Seedeater","White-collared Swift","White-crowned Pigeon","White-crowned Sparrow","White-eared Hummingbird","White-eyed Vireo","White-faced Ibis","White-faced Storm-Petrel","White-headed Woodpecker","White-rumped Sandpiper","White-tailed Eagle","White-tailed Hawk","White-tailed Kite","White-tailed Ptarmigan","White-tailed Tropicbird","White-throated Needletail","White-throated Robin","White-throated Sparrow","White-throated Swift","White-tipped Dove","White-winged Crossbill","White-winged Dove","White-winged Parakeet","White-winged Scoter","White-winged Tern","Whooper Swan","Whooping Crane","Wild Turkey","Willet","Williamson's Sapsucker","Willow Flycatcher","Willow Ptarmigan","Wilson's Phalarope","Wilson's Plover","Wilson's Storm-Petrel","Wilson's Warbler","Winter Wren","Wood Duck","Wood Sandpiper","Wood Stork","Wood Thrush","Wood Warbler","Worm-eating Warbler","Worthen's Sparrow","Wrentit","Xantus's Hummingbird","Xantus's Murrelet","Yellow Bittern","Yellow Grosbeak","Yellow Rail","Yellow Wagtail","Yellow Warbler","Yellow-bellied Flycatcher","Yellow-bellied Sapsucker","Yellow-billed Cuckoo","Yellow-billed Loon","Yellow-billed Magpie","Yellow-breasted Bunting","Yellow-breasted Chat","Yellow-crowned Night-Heron","Yellow-eyed Junco","Yellow-faced Grassquit","Yellow-footed Gull","Yellow-green Vireo","Yellow-headed Blackbird","Yellow-legged Gull","Yellow-nosed Albatross","Yellow-rumped Warbler","Yellow-throated Vireo","Yellow-throated Warbler","Yucatan Vireo","Zenaida Dove","Zone-tailed Hawk"];var t=["Abyssinian","American Bobtail","American Curl","American Shorthair","American Wirehair","Balinese","Bengal","Birman","Bombay","British Shorthair","Burmese","Chartreux","Chausie","Cornish Rex","Devon Rex","Donskoy","Egyptian Mau","Exotic Shorthair","Havana","Highlander","Himalayan","Japanese Bobtail","Korat","Kurilian Bobtail","LaPerm","Maine Coon","Manx","Minskin","Munchkin","Nebelung","Norwegian Forest Cat","Ocicat","Ojos Azules","Oriental","Persian","Peterbald","Pixiebob","Ragdoll","Russian Blue","Savannah","Scottish Fold","Selkirk Rex","Serengeti","Siamese","Siberian","Singapura","Snowshoe","Sokoke","Somali","Sphynx","Thai","Tonkinese","Toyger","Turkish Angora","Turkish Van"];var l=["Amazon River Dolphin","Arnoux's Beaked Whale","Atlantic Humpbacked Dolphin","Atlantic Spotted Dolphin","Atlantic White-Sided Dolphin","Australian Snubfin Dolphin","Australian humpback Dolphin","Blue Whale","Bottlenose Dolphin","Bryde\u2019s whale","Burrunan Dolphin","Chilean Dolphin","Chinese River Dolphin","Chinese White Dolphin","Clymene Dolphin","Commerson\u2019s Dolphin","Costero","Dusky Dolphin","False Killer Whale","Fin Whale","Fraser\u2019s Dolphin","Ganges River Dolphin","Guiana Dolphin","Heaviside\u2019s Dolphin","Hector\u2019s Dolphin","Hourglass Dolphin","Humpback whale","Indo-Pacific Bottlenose Dolphin","Indo-Pacific Hump-backed Dolphin","Irrawaddy Dolphin","Killer Whale (Orca)","La Plata Dolphin","Long-Beaked Common Dolphin","Long-finned Pilot Whale","Longman's Beaked Whale","Melon-headed Whale","Northern Rightwhale Dolphin","Omura\u2019s whale","Pacific White-Sided Dolphin","Pantropical Spotted Dolphin","Peale\u2019s Dolphin","Pygmy Killer Whale","Risso\u2019s Dolphin","Rough-Toothed Dolphin","Sei Whale","Short-Beaked Common Dolphin","Short-finned Pilot Whale","Southern Bottlenose Whale","Southern Rightwhale Dolphin","Sperm Whale","Spinner Dolphin","Striped Dolphin","Tucuxi","White-Beaked Dolphin"];var s=["Aberdeen Angus","Abergele","Abigar","Abondance","Abyssinian Shorthorned Zebu","Aceh","Achham","Adamawa","Adaptaur","Afar","Africangus","Afrikaner","Agerolese","Alambadi","Alatau","Albanian","Albera","Alderney","Alentejana","Aleutian wild cattle","Aliad Dinka","Alistana-Sanabresa","Allmogekor","Alur","American","American Angus","American Beef Friesian","American Brown Swiss","American Milking Devon","American White Park","Amerifax","Amrit Mahal","Amsterdam Island cattle","Anatolian Black","Andalusian Black","Andalusian Blond","Andalusian Grey","Angeln","Angoni","Ankina","Ankole","Ankole-Watusi","Aracena","Arado","Argentine Criollo","Argentine Friesian","Armorican","Arouquesa","Arsi","Asturian Mountain","Asturian Valley","Aubrac","Aulie-Ata","Aure et Saint-Girons","Australian Braford","Australian Brangus","Australian Charbray","Australian Friesian Sahiwal","Australian Lowline","Australian Milking Zebu","Australian Shorthorn","Austrian Simmental","Austrian Yellow","Avile\xF1a-Negra Ib\xE9rica","Av\xE9tonou","Aweil Dinka","Ayrshire","Azaouak","Azebuado","Azerbaijan Zebu","Azores","Bachaur cattle","Baherie cattle","Bakosi cattle","Balancer","Baoule","Bargur cattle","Barros\xE3","Barzona","Bazadaise","Bedit","Beef Freisian","Beefalo","Beefmaker","Beefmaster","Begayt","Belgian Blue","Belgian Red","Belgian Red Pied","Belgian White-and-Red","Belmont Red","Belted Galloway","Bernese","Berrenda cattle","Betizu","Bianca Modenese","Blaarkop","Black Angus","Black Baldy","Black Hereford","Blanca Cacere\xF1a","Blanco Orejinegro BON","Blonde d'Aquitaine","Blue Albion","Blue Grey","Bohuskulla","Bonsmara","Boran","Bo\u0161karin","Braford","Brahman","Brahmousin","Brangus","Braunvieh","Brava","Breed","British Friesian","British White","Brown Carpathian","Brown Caucasian","Brown Swiss","Bue Lingo","Burlina","Bushuyev","Butana cattle","Bu\u0161a cattle","Cachena","Caldelana","Camargue","Campbell Island cattle","Canadian Speckle Park","Canadienne","Canaria","Canchim","Caracu","Carinthian Blondvieh","Carora","Cedit","Charbray","Charolais","Chateaubriand","Chiangus","Chianina","Chillingham cattle","Chinese Black Pied","Cholistani","Coloursided White Back","Commercial","Corriente","Corsican cattle","Coste\xF1o con Cuernos","Crioulo Lageano","C\xE1rdena Andaluza","Dajal","Dangi cattle","Danish Black-Pied","Danish Jersey","Danish Red","Dedit","Deep Red cattle","Deoni","Devon","Dexter cattle","Dhanni","Doayo cattle","Doela","Drakensberger","Droughtmaster","Dulong'","Dutch Belted","Dutch Friesian","Dwarf Lulu","D\xF8lafe","East Anatolian Red","Eastern Finncattle","Eastern Red Polled","Eedit","Enderby Island cattle","English Longhorn","Ennstaler Bergscheck","Estonian Holstein","Estonian Native","Estonian Red cattle","Fedit","Finncattle","Finnish Ayrshire","Finnish Holstein-Friesian","Fj\xE4ll","Fleckvieh","Florida Cracker cattle","Fogera","French Simmental","Fribourgeoise","Friesian Red and White","Fulani Sudanese","F\u0113ng Cattle","Galician Blond","Galloway cattle","Gangatiri","Gaolao","Garvonesa","Gascon cattle","Gedit","Gelbvieh","Georgian Mountain cattle","German Angus","German Black Pied Dairy","German Black Pied cattle","German Red Pied","Gir","Glan cattle","Gloucester","Gobra","Greek Shorthorn","Greek Steppe","Greyman cattle","Gudali","Guernsey cattle","Guzer\xE1","Hallikar4","Hanwoo","Hariana cattle","Hart\xF3n del Valle","Harzer Rotvieh","Hays Converter","Heck cattle","Hedit","Hereford","Herens","Highland cattle","Hinterwald","Holando-Argentino","Holstein Friesian cattle","Horro","Hungarian Grey","Hu\xE1ng Cattle","Hybridmaster","Iberian cattle","Icelandic","Iedit","Illawarra cattle","Improved Red and White","Indo-Brazilian","Irish Moiled","Israeli Holstein","Israeli Red","Istoben cattle","Istrian cattle","Jamaica Black","Jamaica Hope","Jamaica Red","Japanese Brown","Jarmelista","Javari cattle","Jedit","Jersey cattle","Jutland cattle","Kabin Buri cattle","Kalmyk cattle","Kamphaeng Saen cattle","Kangayam","Kankrej","Karan Swiss","Kasaragod Dwarf cattle","Kathiawadi","Kazakh Whiteheaded","Kedit","Kenana cattle","Kenkatha cattle","Kerry cattle","Kherigarh","Khillari cattle","Kholomogory","Korat Wagyu","Kostroma cattle","Krishna Valley cattle","Kurgan cattle","Kuri","La Reina cattle","Lakenvelder cattle","Lampurger","Latvian Blue","Latvian Brown","Latvian Danish Red","Lebedyn","Ledit","Levantina","Limia cattle","Limousin","Limpurger","Lincoln Red","Lineback","Lithuanian Black-and-White","Lithuanian Light Grey","Lithuanian Red","Lithuanian White-Backed","Lohani cattle","Lourdais","Lucerna cattle","Luing","Madagascar Zebu","Madura","Maine-Anjou","Malnad Gidda","Malvi","Mandalong Special","Mantequera Leonesa","Maramure\u015F Brown","Marchigiana","Maremmana","Marinhoa","Maronesa","Masai","Mashona","Medit","Menorquina","Mertolenga","Meuse-Rhine-Issel","Mewati","Milking Shorthorn","Minhota","Mirandesa","Mirkadim","Moc\u0103ni\u0163\u0103","Mollie","Monchina","Mongolian","Montb\xE9liarde","Morucha","Murboden","Murnau-Werdenfels","Murray Grey","Muturu","N'Dama","Nagori","Nedit","Negra Andaluza","Nelore","Nguni","Nimari","Normande","North Bengal Grey","Northern Finncattle","Northern Shorthorn","Norwegian Red","Oedit]","Ongole","Original Simmental","Pajuna","Palmera","Pantaneiro","Parda Alpina","Parthenaise","Pasiega","Pedit","Pembroke","Philippine Native","Pie Rouge des Plaines","Piedmontese cattle","Pineywoods","Pinzgauer","Pirenaica","Podolac","Podolica","Polish Black-and-White","Polish Red","Poll Shorthorn","Polled Hereford","Polled Shorthorn","Ponwar","Preta","Pulikulam","Punganur","Pustertaler Sprinzen","Qedit","Qinchaun","Queensland Miniature Boran","RX3","Ramo Grande","Randall","Raramuri Criollo","Rathi","Raya","Red Angus","Red Brangus","Red Chittagong","Red Fulani","Red Gorbatov","Red Holstein","Red Kandhari","Red Mingrelian","Red Poll","Red Polled \xD8stland","Red Sindhi","Redit","Retinta","Riggit Galloway","Ringam\xE5la","Rohjan","Romagnola","Romanian B\u0103l\u0163ata","Romanian Steppe Gray","Romosinuano","Russian Black Pied","R\xE4tisches Grauvieh","Sahiwal","Salers","Salorn","Sanga","Sanhe","Santa Cruz","Santa Gertrudis","Sayaguesa","Schwyz","Sedit","Selembu","Senepol","Serbian Pied","Serbian Steppe","Sheko","Shetland","Shorthorn","Siboney de Cuba","Simbrah","Simford","Simmental","Siri","South Devon","Spanish Fighting Bull","Speckle Park","Square Meater","Sussex","Swedish Friesian","Swedish Polled","Swedish Red Pied","Swedish Red Polled","Swedish Red-and-White","Tabapu\xE3","Tarentaise","Tasmanian Grey","Tauros","Tedit","Telemark","Texas Longhorn","Texon","Thai Black","Thai Fighting Bull","Thai Friesian","Thai Milking Zebu","Tharparkar","Tswana","Tudanca","Tuli","Tulim","Turkish Grey Steppe","Tux-Zillertal","Tyrol Grey","Uedit","Ukrainian Grey","Umblachery","Valdostana Castana","Valdostana Pezzata Nera","Valdostana Pezzata Rossa","Vaynol","Vechur8","Vedit","Vestland Fjord","Vestland Red Polled","Vianesa","Volinian Beef","Vorderwald","Vosgienne","V\xE4neko","Waguli","Wagyu","Wangus","Wedit","Welsh Black","Western Finncattle","White C\xE1ceres","White Fulani","White Lamphun","White Park","Whitebred Shorthorn","Xedit","Xingjiang Brown","Yakutian","Yanbian","Yanhuang","Yedit","Yurino","Zebu","Zedit","\xC9vol\xE8ne cattle","\u017Bubro\u0144"];var d=["African Slender-snouted Crocodile","Alligator mississippiensis","American Crocodile","Australian Freshwater Crocodile","Black Caiman","Broad-snouted Caiman","Chinese Alligator","Cuban Crocodile","Cuvier\u2019s Dwarf Caiman","Dwarf Crocodile","Gharial","Morelet\u2019s Crocodile","Mugger Crocodile","New Guinea Freshwater Crocodile","Nile Crocodile","Orinoco Crocodile","Philippine Crocodile","Saltwater Crocodile","Schneider\u2019s Smooth-fronted Caiman","Siamese Crocodile","Spectacled Caiman","Tomistoma","West African Crocodile","Yacare Caiman"];var u=["Affenpinscher","Afghan Hound","Aidi","Airedale Terrier","Akbash","Akita","Alano Espa\xF1ol","Alapaha Blue Blood Bulldog","Alaskan Husky","Alaskan Klee Kai","Alaskan Malamute","Alopekis","Alpine Dachsbracke","American Bulldog","American Bully","American Cocker Spaniel","American English Coonhound","American Foxhound","American Hairless Terrier","American Pit Bull Terrier","American Staffordshire Terrier","American Water Spaniel","Andalusian Hound","Anglo-Fran\xE7ais de Petite V\xE9nerie","Appenzeller Sennenhund","Ariegeois","Armant","Armenian Gampr dog","Artois Hound","Australian Cattle Dog","Australian Kelpie","Australian Shepherd","Australian Stumpy Tail Cattle Dog","Australian Terrier","Austrian Black and Tan Hound","Austrian Pinscher","Azawakh","Bakharwal dog","Banjara Hound","Barbado da Terceira","Barbet","Basenji","Basque Shepherd Dog","Basset Art\xE9sien Normand","Basset Bleu de Gascogne","Basset Fauve de Bretagne","Basset Hound","Bavarian Mountain Hound","Beagle","Beagle-Harrier","Bearded Collie","Beauceron","Bedlington Terrier","Belgian Shepherd","Bergamasco Shepherd","Berger Picard","Bernese Mountain Dog","Bhotia","Bichon Fris\xE9","Billy","Black Mouth Cur","Black Norwegian Elkhound","Black Russian Terrier","Black and Tan Coonhound","Bloodhound","Blue Lacy","Blue Picardy Spaniel","Bluetick Coonhound","Boerboel","Bohemian Shepherd","Bolognese","Border Collie","Border Terrier","Borzoi","Bosnian Coarse-haired Hound","Boston Terrier","Bouvier des Ardennes","Bouvier des Flandres","Boxer","Boykin Spaniel","Bracco Italiano","Braque Francais","Braque Saint-Germain","Braque d'Auvergne","Braque de l'Ari\xE8ge","Braque du Bourbonnais","Briard","Briquet Griffon Vend\xE9en","Brittany","Broholmer","Bruno Jura Hound","Brussels Griffon","Bucovina Shepherd Dog","Bull Arab","Bull Terrier","Bulldog","Bullmastiff","Bully Kutta","Burgos Pointer","Cairn Terrier","Campeiro Bulldog","Can de Chira","Canaan Dog","Canadian Eskimo Dog","Cane Corso","Cane Paratore","Cane di Oropa","Cantabrian Water Dog","Cardigan Welsh Corgi","Carea Castellano Manchego","Carolina Dog","Carpathian Shepherd Dog","Catahoula Leopard Dog","Catalan Sheepdog","Caucasian Shepherd Dog","Cavalier King Charles Spaniel","Central Asian Shepherd Dog","Cesky Fousek","Cesky Terrier","Chesapeake Bay Retriever","Chien Fran\xE7ais Blanc et Noir","Chien Fran\xE7ais Blanc et Orange","Chien Fran\xE7ais Tricolore","Chihuahua","Chilean Terrier","Chinese Chongqing Dog","Chinese Crested Dog","Chinook","Chippiparai","Chongqing dog","Chortai","Chow Chow","Cimarr\xF3n Uruguayo","Cirneco dell'Etna","Clumber Spaniel","Colombian fino hound","Coton de Tulear","Cretan Hound","Croatian Sheepdog","Curly-Coated Retriever","Cursinu","Czechoslovakian Wolfdog","C\xE3o Fila de S\xE3o Miguel","C\xE3o da Serra de Aires","C\xE3o de Castro Laboreiro","C\xE3o de Gado Transmontano","Dachshund","Dalmatian","Dandie Dinmont Terrier","Danish-Swedish Farmdog","Denmark Feist","Dingo","Doberman Pinscher","Dogo Argentino","Dogo Guatemalteco","Dogo Sardesco","Dogue Brasileiro","Dogue de Bordeaux","Drentse Patrijshond","Drever","Dunker","Dutch Shepherd","Dutch Smoushond","East European Shepherd","East Siberian Laika","English Cocker Spaniel","English Foxhound","English Mastiff","English Setter","English Shepherd","English Springer Spaniel","English Toy Terrier","Entlebucher Mountain Dog","Estonian Hound","Estrela Mountain Dog","Eurasier","Field Spaniel","Fila Brasileiro","Finnish Hound","Finnish Lapphund","Finnish Spitz","Flat-Coated Retriever","French Bulldog","French Spaniel","Galgo Espa\xF1ol","Galician Shepherd Dog","Garafian Shepherd","Gascon Saintongeois","Georgian Shepherd","German Hound","German Longhaired Pointer","German Pinscher","German Roughhaired Pointer","German Shepherd Dog","German Shorthaired Pointer","German Spaniel","German Spitz","German Wirehaired Pointer","Giant Schnauzer","Glen of Imaal Terrier","Golden Retriever","Gordon Setter","Go\u0144czy Polski","Grand Anglo-Fran\xE7ais Blanc et Noir","Grand Anglo-Fran\xE7ais Blanc et Orange","Grand Anglo-Fran\xE7ais Tricolore","Grand Basset Griffon Vend\xE9en","Grand Bleu de Gascogne","Grand Griffon Vend\xE9en","Great Dane","Greater Swiss Mountain Dog","Greek Harehound","Greek Shepherd","Greenland Dog","Greyhound","Griffon Bleu de Gascogne","Griffon Fauve de Bretagne","Griffon Nivernais","Gull Dong","Gull Terrier","Hamiltonst\xF6vare","Hanover Hound","Harrier","Havanese","Hierran Wolfdog","Hokkaido","Hovawart","Huntaway","Hygen Hound","H\xE4llefors Elkhound","Ibizan Hound","Icelandic Sheepdog","Indian Spitz","Indian pariah dog","Irish Red and White Setter","Irish Setter","Irish Terrier","Irish Water Spaniel","Irish Wolfhound","Istrian Coarse-haired Hound","Istrian Shorthaired Hound","Italian Greyhound","Jack Russell Terrier","Jagdterrier","Japanese Chin","Japanese Spitz","Japanese Terrier","Jindo","Jonangi","Kai Ken","Kaikadi","Kangal Shepherd Dog","Kanni","Karakachan dog","Karelian Bear Dog","Kars","Karst Shepherd","Keeshond","Kerry Beagle","Kerry Blue Terrier","King Charles Spaniel","King Shepherd","Kintamani","Kishu","Kokoni","Kombai","Komondor","Kooikerhondje","Koolie","Koyun dog","Kromfohrl\xE4nder","Kuchi","Kuvasz","Labrador Retriever","Lagotto Romagnolo","Lakeland Terrier","Lancashire Heeler","Landseer","Lapponian Herder","Large M\xFCnsterl\xE4nder","Leonberger","Levriero Sardo","Lhasa Apso","Lithuanian Hound","Lupo Italiano","L\xF6wchen","Mackenzie River Husky","Magyar ag\xE1r","Mahratta Greyhound","Maltese","Manchester Terrier","Maremmano-Abruzzese Sheepdog","McNab dog","Miniature American Shepherd","Miniature Bull Terrier","Miniature Fox Terrier","Miniature Pinscher","Miniature Schnauzer","Molossus of Epirus","Montenegrin Mountain Hound","Mountain Cur","Mountain Feist","Mucuchies","Mudhol Hound","Mudi","Neapolitan Mastiff","New Guinea Singing Dog","New Zealand Heading Dog","Newfoundland","Norfolk Terrier","Norrbottenspets","Northern Inuit Dog","Norwegian Buhund","Norwegian Elkhound","Norwegian Lundehund","Norwich Terrier","Nova Scotia Duck Tolling Retriever","Old Croatian Sighthound","Old Danish Pointer","Old English Sheepdog","Old English Terrier","Olde English Bulldogge","Otterhound","Pachon Navarro","Paisley Terrier","Pampas Deerhound","Papillon","Parson Russell Terrier","Pastore della Lessinia e del Lagorai","Patagonian Sheepdog","Patterdale Terrier","Pekingese","Pembroke Welsh Corgi","Perro Majorero","Perro de Pastor Mallorquin","Perro de Presa Canario","Perro de Presa Mallorquin","Peruvian Inca Orchid","Petit Basset Griffon Vend\xE9en","Petit Bleu de Gascogne","Phal\xE8ne","Pharaoh Hound","Phu Quoc Ridgeback","Picardy Spaniel","Plott Hound","Plummer Terrier","Podenco Canario","Podenco Valenciano","Pointer","Poitevin","Polish Greyhound","Polish Hound","Polish Lowland Sheepdog","Polish Tatra Sheepdog","Pomeranian","Pont-Audemer Spaniel","Poodle","Porcelaine","Portuguese Podengo","Portuguese Pointer","Portuguese Water Dog","Posavac Hound","Pra\u017Esk\xFD Krysa\u0159\xEDk","Pshdar Dog","Pudelpointer","Pug","Puli","Pumi","Pungsan Dog","Pyrenean Mastiff","Pyrenean Mountain Dog","Pyrenean Sheepdog","Rafeiro do Alentejo","Rajapalayam","Rampur Greyhound","Rat Terrier","Ratonero Bodeguero Andaluz","Ratonero Mallorquin","Ratonero Murciano de Huerta","Ratonero Valenciano","Redbone Coonhound","Rhodesian Ridgeback","Romanian Mioritic Shepherd Dog","Romanian Raven Shepherd Dog","Rottweiler","Rough Collie","Russian Spaniel","Russian Toy","Russo-European Laika","Saarloos Wolfdog","Sabueso Espa\xF1ol","Saint Bernard","Saint Hubert Jura Hound","Saint-Usuge Spaniel","Saluki","Samoyed","Sapsali","Sarabi dog","Sardinian Shepherd Dog","Schapendoes","Schillerst\xF6vare","Schipperke","Schweizer Laufhund","Schweizerischer Niederlaufhund","Scottish Deerhound","Scottish Terrier","Sealyham Terrier","Segugio Italiano","Segugio Maremmano","Segugio dell'Appennino","Seppala Siberian Sleddog","Serbian Hound","Serbian Tricolour Hound","Serrano Bulldog","Shar Pei","Shetland Sheepdog","Shiba Inu","Shih Tzu","Shikoku","Shiloh Shepherd","Siberian Husky","Silken Windhound","Silky Terrier","Sinhala Hound","Skye Terrier","Sloughi","Slovakian Wirehaired Pointer","Slovensk\xFD Cuvac","Slovensk\xFD Kopov","Smalandst\xF6vare","Small Greek domestic dog","Small M\xFCnsterl\xE4nder","Smooth Collie","Smooth Fox Terrier","Soft-Coated Wheaten Terrier","South Russian Ovcharka","Spanish Mastiff","Spanish Water Dog","Spinone Italiano","Sporting Lucas Terrier","Stabyhoun","Staffordshire Bull Terrier","Standard Schnauzer","Stephens Stock","Styrian Coarse-haired Hound","Sussex Spaniel","Swedish Elkhound","Swedish Lapphund","Swedish Vallhund","Swedish White Elkhound","Taigan","Taiwan Dog","Tamaskan Dog","Teddy Roosevelt Terrier","Telomian","Tenterfield Terrier","Terrier Brasileiro","Thai Bangkaew Dog","Thai Ridgeback","Tibetan Mastiff","Tibetan Spaniel","Tibetan Terrier","Tornjak","Tosa","Toy Fox Terrier","Toy Manchester Terrier","Transylvanian Hound","Treeing Cur","Treeing Feist","Treeing Tennessee Brindle","Treeing Walker Coonhound","Trigg Hound","Tyrolean Hound","Vikhan","Villano de Las Encartaciones","Villanuco de Las Encartaciones","Vizsla","Volpino Italiano","Weimaraner","Welsh Sheepdog","Welsh Springer Spaniel","Welsh Terrier","West Highland White Terrier","West Siberian Laika","Westphalian Dachsbracke","Wetterhoun","Whippet","White Shepherd","White Swiss Shepherd Dog","Wire Fox Terrier","Wirehaired Pointing Griffon","Wirehaired Vizsla","Xiasi Dog","Xoloitzcuintli","Yakutian Laika","Yorkshire Terrier","\u0160arplaninac"];var c=["Alaska pollock","Albacore","Amur catfish","Araucanian herring","Argentine hake","Asari","Asian swamp eel","Atlantic cod","Atlantic herring","Atlantic horse mackerel","Atlantic mackerel","Atlantic menhaden","Atlantic salmon","Bigeye scad","Bigeye tuna","Bighead carp","Black carp","Blood cockle","Blue swimming crab","Blue whiting","Bombay-duck","Bonga shad","California pilchard","Cape horse mackerel","Capelin","Catla","Channel catfish","Chilean jack mackerel","Chinese perch","Chinese softshell turtle","Chub mackerel","Chum salmon","Common carp","Crucian carp","Daggertooth pike conger","European anchovy","European pilchard","European sprat","Filipino Venus","Gazami crab","Goldstripe sardinella","Grass carp","Gulf menhaden","Haddock","Hilsa shad","Indian mackerel","Indian oil sardine","Iridescent shark","Japanese anchovy","Japanese cockle","Japanese common catfish","Japanese flying squid","Japanese jack mackerel","Japanese littleneck","Japanese pilchard","Jumbo flying squid","Kawakawa","Korean bullhead","Largehead hairtail","Longtail tuna","Madeiran sardinella","Mandarin fish","Milkfish","Mrigal carp","Narrow-barred Spanish mackerel","Nile perch","Nile tilapia","North Pacific hake","Northern snakehead","Pacific anchoveta","Pacific cod","Pacific herring","Pacific sand lance","Pacific sandlance","Pacific saury","Pacific thread herring","Peruvian anchoveta","Pink salmon","Pollock","Pond loach","Rainbow trout","Rohu","Round sardinella","Short mackerel","Silver carp","Silver cyprinid","Skipjack tuna","Southern African anchovy","Southern rough shrimp","Whiteleg shrimp","Wuchang bream","Yellow croaker","Yellowfin tuna","Yellowhead catfish","Yellowstripe scad"];var m$1=["Abaco Barb","Abtenauer","Abyssinian","Aegidienberger","Akhal-Teke","Albanian Horse","Altai Horse","Alt\xE8r Real","American Albino","American Cream Draft","American Indian Horse","American Paint Horse","American Quarter Horse","American Saddlebred","American Warmblood","Andalusian Horse","Andravida Horse","Anglo-Arabian","Anglo-Arabo-Sardo","Anglo-Kabarda","Appaloosa","AraAppaloosa","Arabian Horse","Ardennes Horse","Arenberg-Nordkirchen","Argentine Criollo","Asian wild Horse","Assateague Horse","Asturc\xF3n","Augeron","Australian Brumby","Australian Draught Horse","Australian Stock Horse","Austrian Warmblood","Auvergne Horse","Auxois","Azerbaijan Horse","Azteca Horse","Baise Horse","Bale","Balearic Horse","Balikun Horse","Baluchi Horse","Banker Horse","Barb Horse","Bardigiano","Bashkir Curly","Basque Mountain Horse","Bavarian Warmblood","Belgian Half-blood","Belgian Horse","Belgian Warmblood ","Bhutia Horse","Black Forest Horse","Blazer Horse","Boerperd","Borana","Boulonnais Horse","Brabant","Brandenburger","Brazilian Sport Horse","Breton Horse","Brumby","Budyonny Horse","Burguete Horse","Burmese Horse","Byelorussian Harness Horse","Calabrese Horse","Camargue Horse","Camarillo White Horse","Campeiro","Campolina","Canadian Horse","Canadian Pacer","Carolina Marsh Tacky","Carthusian Horse","Caspian Horse","Castilian Horse","Castillonnais","Catria Horse","Cavallo Romano della Maremma Laziale","Cerbat Mustang","Chickasaw Horse","Chilean Corralero","Choctaw Horse","Cleveland Bay","Clydesdale Horse","Cob","Coldblood Trotter","Colonial Spanish Horse","Colorado Ranger","Comtois Horse","Corsican Horse","Costa Rican Saddle Horse","Cretan Horse","Criollo Horse","Croatian Coldblood","Cuban Criollo","Cumberland Island Horse","Curly Horse","Czech Warmblood","Daliboz","Danish Warmblood","Danube Delta Horse","Dole Gudbrandsdal","Don","Dongola Horse","Draft Trotter","Dutch Harness Horse","Dutch Heavy Draft","Dutch Warmblood","Dzungarian Horse","East Bulgarian","East Friesian Horse","Estonian Draft","Estonian Horse","Falabella","Faroese","Finnhorse","Fjord Horse","Fleuve","Florida Cracker Horse","Foutank\xE9","Frederiksborg Horse","Freiberger","French Trotter","Friesian Cross","Friesian Horse","Friesian Sporthorse","Furioso-North Star","Galice\xF1o","Galician Pony","Gelderland Horse","Georgian Grande Horse","German Warmblood","Giara Horse","Gidran","Groningen Horse","Gypsy Horse","Hackney Horse","Haflinger","Hanoverian Horse","Heck Horse","Heihe Horse","Henson Horse","Hequ Horse","Hirzai","Hispano-Bret\xF3n","Holsteiner Horse","Horro","Hungarian Warmblood","Icelandic Horse","Iomud","Irish Draught","Irish Sport Horse sometimes called Irish Hunter","Italian Heavy Draft","Italian Trotter","Jaca Navarra","Jeju Horse","Jutland Horse","Kabarda Horse","Kafa","Kaimanawa Horses","Kalmyk Horse","Karabair","Karabakh Horse","Karachai Horse","Karossier","Kathiawari","Kazakh Horse","Kentucky Mountain Saddle Horse","Kiger Mustang","Kinsky Horse","Kisber Felver","Kiso Horse","Kladruber","Knabstrupper","Konik","Kundudo","Kustanair","Kyrgyz Horse","Latvian Horse","Lipizzan","Lithuanian Heavy Draught","Lokai","Losino Horse","Lusitano","Lyngshest","M'Bayar","M'Par","Mallorqu\xEDn","Malopolski","Mangalarga","Mangalarga Marchador","Maremmano","Marisme\xF1o Horse","Marsh Tacky","Marwari Horse","Mecklenburger","Menorqu\xEDn","Messara Horse","Metis Trotter","Mez\u0151hegyesi Sport Horse","Me\u0111imurje Horse","Miniature Horse","Misaki Horse","Missouri Fox Trotter","Monchina","Mongolian Horse","Mongolian Wild Horse","Monterufolino","Morab","Morgan Horse","Mountain Pleasure Horse","Moyle Horse","Murakoz Horse","Murgese","Mustang Horse","M\xE9rens Horse","Namib Desert Horse","Nangchen Horse","National Show Horse","Nez Perce Horse","Nivernais Horse","Nokota Horse","Noma","Nonius Horse","Nooitgedachter","Nordlandshest","Noriker Horse","Norman Cob","North American Single-Footer Horse","North Swedish Horse","Norwegian Coldblood Trotter","Norwegian Fjord","Novokirghiz","Oberlander Horse","Ogaden","Oldenburg Horse","Orlov trotter","Ostfriesen","Paint","Pampa Horse","Paso Fino","Pentro Horse","Percheron","Persano Horse","Peruvian Paso","Pintabian","Pleven Horse","Poitevin Horse","Posavac Horse","Pottok","Pryor Mountain Mustang","Przewalski's Horse","Pura Raza Espa\xF1ola","Purosangue Orientale","Qatgani","Quarab","Quarter Horse","Racking Horse","Retuerta Horse","Rhenish German Coldblood","Rhinelander Horse","Riwoche Horse","Rocky Mountain Horse","Romanian Sporthorse","Rottaler","Russian Don","Russian Heavy Draft","Russian Trotter","Saddlebred","Salerno Horse","Samolaco Horse","San Fratello Horse","Sarcidano Horse","Sardinian Anglo-Arab","Schleswig Coldblood","Schwarzw\xE4lder Kaltblut","Selale","Sella Italiano","Selle Fran\xE7ais","Shagya Arabian","Shan Horse","Shire Horse","Siciliano Indigeno","Silesian Horse","Sokolsky Horse","Sorraia","South German Coldblood","Soviet Heavy Draft","Spanish Anglo-Arab","Spanish Barb","Spanish Jennet Horse","Spanish Mustang","Spanish Tarpan","Spanish-Norman Horse","Spiti Horse","Spotted Saddle Horse","Standardbred Horse","Suffolk Punch","Swedish Ardennes","Swedish Warmblood","Swedish coldblood trotter","Swiss Warmblood","Taish\u016B Horse","Takhi","Tawleed","Tchernomor","Tennessee Walking Horse","Tersk Horse","Thoroughbred","Tiger Horse","Tinker Horse","Tolfetano","Tori Horse","Trait Du Nord","Trakehner","Tsushima","Tuigpaard","Ukrainian Riding Horse","Unmol Horse","Uzunyayla","Ventasso Horse","Virginia Highlander","Vlaamperd","Vladimir Heavy Draft","Vyatka","Waler","Waler Horse","Walkaloosa","Warlander","Warmblood","Welsh Cob","Westphalian Horse","Wielkopolski","W\xFCrttemberger","Xilingol Horse","Yakutian Horse","Yili Horse","Yonaguni Horse","Zaniskari","Zhemaichu","Zweibr\xFCcker","\u017Demaitukas"];var h=["Acacia-ants","Acorn-plum gall","Aerial yellowjacket","Africanized honey bee","Allegheny mound ant","Almond stone wasp","Ant","Arboreal ant","Argentine ant","Asian paper wasp","Baldfaced hornet","Bee","Bigheaded ant","Black and yellow mud dauber","Black carpenter ant","Black imported fire ant","Blue horntail woodwasp","Blue orchard bee","Braconid wasp","Bumble bee","Carpenter ant","Carpenter wasp","Chalcid wasp","Cicada killer","Citrus blackfly parasitoid","Common paper wasp","Crazy ant","Cuckoo wasp","Cynipid gall wasp","Eastern Carpenter bee","Eastern yellowjacket","Elm sawfly","Encyrtid wasp","Erythrina gall wasp","Eulophid wasp","European hornet","European imported fire ant","False honey ant","Fire ant","Forest bachac","Forest yellowjacket","German yellowjacket","Ghost ant","Giant ichneumon wasp","Giant resin bee","Giant wood wasp","Golden northern bumble bee","Golden paper wasp","Gouty oak gall","Grass Carrying Wasp","Great black wasp","Great golden digger wasp","Hackberry nipple gall parasitoid","Honey bee","Horned oak gall","Horse guard wasp","Hunting wasp","Ichneumonid wasp","Keyhole wasp","Knopper gall","Large garden bumble bee","Large oak-apple gall","Leafcutting bee","Little fire ant","Little yellow ant","Long-horned bees","Long-legged ant","Macao paper wasp","Mallow bee","Marble gall","Mossyrose gall wasp","Mud-daubers","Multiflora rose seed chalcid","Oak apple gall wasp","Oak rough bulletgall wasp","Oak saucer gall","Oak shoot sawfly","Odorous house ant","Orange-tailed bumble bee","Orangetailed potter wasp","Oriental chestnut gall wasp","Paper wasp","Pavement ant","Pigeon tremex","Pip gall wasp","Prairie yellowjacket","Pteromalid wasp","Pyramid ant","Raspberry Horntail","Red ant","Red carpenter ant","Red harvester ant","Red imported fire ant","Red wasp","Red wood ant","Red-tailed wasp","Reddish carpenter ant","Rough harvester ant","Sawfly parasitic wasp","Scale parasitoid","Silky ant","Sirex woodwasp","Siricid woodwasp","Smaller yellow ant","Southeastern blueberry bee","Southern fire ant","Southern yellowjacket","Sphecid wasp","Stony gall","Sweat bee","Texas leafcutting ant","Tiphiid wasp","Torymid wasp","Tramp ant","Valentine ant","Velvet ant","Vespid wasp","Weevil parasitoid","Western harvester ant","Western paper wasp","Western thatching ant","Western yellowjacket","White-horned horntail","Willow shoot sawfly","Woodwasp","Wool sower gall maker","Yellow Crazy Ant","Yellow and black potter wasp","Yellow-horned horntail"];var y=["Asiatic Lion","Barbary Lion","Cape lion","Masai Lion","Northeast Congo Lion","Transvaal lion","West African Lion"];var p$1=["American","American Chinchilla","American Fuzzy Lop","American Sable","Argente Brun","Belgian Hare","Beveren","Blanc de Hotot","Britannia Petite","Californian","Champagne D\u2019Argent","Checkered Giant","Cinnamon","Cr\xE8me D\u2019Argent","Dutch","Dwarf Hotot","English Angora","English Lop","English Spot","Flemish Giant","Florida White","French Angora","French Lop","Giant Angora","Giant Chinchilla","Harlequin","Havana","Himalayan","Holland Lop","Jersey Wooly","Lilac","Lionhead","Mini Lop","Mini Rex","Mini Satin","Netherland Dwarf","New Zealand","Palomino","Polish","Rex","Rhinelander","Satin","Satin Angora","Silver","Silver Fox","Silver Marten","Standard Chinchilla","Tan","Thrianta"];var g=["Abrocoma","Abrocoma schistacea","Aconaemys","Aconaemys porteri","African brush-tailed porcupine","Andean mountain cavy","Argentine tuco-tuco","Ashy chinchilla rat","Asiatic brush-tailed porcupine","Atherurus","Azara's agouti","Azara's tuco-tuco","Bahia porcupine","Bathyergus","Bathyergus janetta","Bathyergus suillus","Bennett's chinchilla rat","Bicolored-spined porcupine","Black agouti","Black dwarf porcupine","Black-rumped agouti","Black-tailed hairy dwarf porcupine","Bolivian chinchilla rat","Bolivian tuco-tuco","Bonetto's tuco-tuco","Brandt's yellow-toothed cavy","Brazilian guinea pig","Brazilian porcupine","Brazilian tuco-tuco","Bridge's degu","Brown hairy dwarf porcupine","Budin's chinchilla rat, A. budini","Cape porcupine","Catamarca tuco-tuco","Cavia","Central American agouti","Chacoan tuco-tuco","Chilean rock rat","Chinchilla","Coendou","Coiban agouti","Colburn's tuco-tuco","Collared tuco-tuco","Common degu","Common yellow-toothed cavy","Conover's tuco-tuco","Coruro","Crested agouti","Crested porcupine","Cryptomys","Cryptomys bocagei","Cryptomys damarensis","Cryptomys foxi","Cryptomys hottentotus","Cryptomys mechowi","Cryptomys ochraceocinereus","Cryptomys zechi","Ctenomys","Cuniculus","Cuscomys","Cuscomys ashanika","Dactylomys","Dactylomys boliviensis","Dactylomys dactylinus","Dactylomys peruanus","Dasyprocta","Domestic guinea pig","Emily's tuco-tuco","Erethizon","Famatina chinchilla rat","Frosted hairy dwarf porcupine","Fukomys","Fukomys amatus","Fukomys anselli","Fukomys bocagei","Fukomys damarensis","Fukomys darlingi","Fukomys foxi","Fukomys ilariae","Fukomys kafuensis","Fukomys mechowii","Fukomys micklemi","Fukomys occlusus","Fukomys ochraceocinereus","Fukomys whytei","Fukomys zechi","Furtive tuco-tuco","Galea","Georychus","Georychus capensis","Golden viscacha-rat","Goya tuco-tuco","Greater guinea pig","Green acouchi","Haig's tuco-tuco","Heliophobius","Heliophobius argenteocinereus","Heterocephalus","Heterocephalus glaber","Highland tuco-tuco","Hystrix","Indian porcupine","Isla Mocha degu","Kalinowski agouti","Kannabateomys","Kannabateomys amblyonyx","Lagidium","Lagostomus","Lewis' tuco-tuco","Long-tailed chinchilla","Long-tailed porcupine","Los Chalchaleros' viscacha-rat","Lowland paca","Magellanic tuco-tuco","Malayan porcupine","Maule tuco-tuco","Mendoza tuco-tuco","Mexican agouti","Mexican hairy dwarf porcupine","Microcavia","Montane guinea pig","Moon-toothed degu","Mottled tuco-tuco","Mountain degu","Mountain paca","Mountain viscacha-rat","Myoprocta","Natterer's tuco-tuco","North American porcupine","Northern viscacha","Octodon","Octodontomys","Octomys","Olallamys","Olallamys albicauda","Olallamys edax","Orinoco agouti","Paraguaian hairy dwarf porcupine","Pearson's tuco-tuco","Peruvian tuco-tuco","Philippine porcupine","Pipanacoctomys","Plains viscacha","Plains viscacha-rat","Porteous' tuco-tuco","Punta de Vacas chinchilla rat","Red acouchi","Red-rumped agouti","Reddish tuco-tuco","Rio Negro tuco-tuco","Robust tuco-tuco","Roosmalen's dwarf porcupine","Rothschild's porcupine","Ruatan Island agouti","Sage's rock rat","Salinoctomys","Salta tuco-tuco","San Luis tuco-tuco","Santa Catarina's guinea pig","Shiny guinea pig","Shipton's mountain cavy","Short-tailed chinchilla","Silky tuco-tuco","Social tuco-tuco","Southern mountain cavy","Southern tuco-tuco","Southern viscacha","Spalacopus","Spix's yellow-toothed cavy","Steinbach's tuco-tuco","Streaked dwarf porcupine","Strong tuco-tuco","Stump-tailed porcupine","Sumatran porcupine","Sunda porcupine","Talas tuco-tuco","Tawny tuco-tuco","Thick-spined porcupine","Tiny tuco-tuco","Trichys","Tucuman tuco-tuco","Tympanoctomys","Uspallata chinchilla rat","White-toothed tuco-tuco","Wolffsohn's viscacha"];var b=["Abaco Island boa","Aesculapian snake","African beaked snake","African puff adder","African rock python","African twig snake","African wolf snake","Amazon tree boa","Amazonian palm viper","American Vine Snake","American copperhead","Amethystine python","Anaconda","Andaman cat snake","Andaman cobra","Angolan python","Annulated sea snake","Arabian cobra","Arafura file snake","Arizona black rattlesnake","Arizona coral snake","Aruba rattlesnake","Asian Vine Snake, Whip Snake","Asian cobra","Asian keelback","Asian pipe snake","Asp","Asp viper","Assam keelback","Australian copperhead","Australian scrub python","Baird's rat snake","Baja California lyresnake","Ball Python","Ball python","Bamboo pitviper","Bamboo viper","Banded Flying Snake","Banded cat-eyed snake","Banded krait","Banded pitviper","Banded water cobra","Barbour's pit viper","Barred wolf snake","Beaked sea snake","Beauty rat snake","Beddome's cat snake","Beddome's coral snake","Bimini racer","Bird snake","Bismarck ringed python","Black headed python","Black krait","Black mamba","Black rat snake","Black snake","Black tree cobra","Black-banded trinket snake","Black-headed snake","Black-necked cobra","Black-necked spitting cobra","Black-speckled palm-pitviper","Black-striped keelback","Black-tailed horned pit viper","Blanding's tree snake","Blind snake","Blonde hognose snake","Blood python","Blue krait","Blunt-headed tree snake","Bluntnose viper","Boa","Boa constrictor","Bocourt's water snake","Boelen python","Boiga","Bolivian anaconda","Boomslang","Bornean pitviper","Borneo short-tailed python","Brahminy blind snake","Brazilian coral snake","Brazilian mud Viper","Brazilian smooth snake","Bredl's python","Brongersma's pitviper","Brown snake","Brown spotted pitviper[4]","Brown tree snake","Brown water python","Brown white-lipped python","Buff striped keelback","Bull snake","Burmese keelback","Burmese krait","Burmese python","Burrowing cobra","Burrowing viper","Bush viper","Bushmaster","Buttermilk racer","Calabar python","California kingsnake","Canebrake","Cantil","Cantor's pitviper","Cape cobra","Cape coral snake","Cape gopher snake","Carpet viper","Cascabel","Caspian cobra","Cat snake","Cat-eyed night snake","Cat-eyed snake","Central American lyre snake","Central ranges taipan","Centralian carpet python","Ceylon krait","Chappell Island tiger snake","Checkered garter snake","Checkered keelback","Chicken snake","Chihuahuan ridge-nosed rattlesnake","Children's python","Chinese tree viper","Coachwhip snake","Coastal carpet python","Coastal taipan","Cobra","Collett's snake","Colorado desert sidewinder","Common adder","Common cobra","Common garter snake","Common ground snake","Common keelback","Common lancehead","Common tiger snake","Common worm snake","Congo snake","Congo water cobra","Copperhead","Coral snake","Corn snake","Coronado Island rattlesnake","Cottonmouth","Crossed viper","Crowned snake","Cuban boa","Cuban wood snake","Cyclades blunt-nosed viper","Dauan Island water python","De Schauensee's anaconda","Death Adder","Desert death adder","Desert kingsnake","Desert woma python","Diamond python","Dog-toothed cat snake","Down's tiger snake","Dubois's sea snake","Dumeril's boa","Durango rock rattlesnake","Dusky pigmy rattlesnake","Dusty hognose snake","Dwarf beaked snake","Dwarf boa","Dwarf pipe snake","Dwarf sand adder","Eastern brown snake","Eastern coral snake","Eastern diamondback rattlesnake","Eastern green mamba","Eastern hognose snake","Eastern lyre snake","Eastern mud snake","Eastern racer","Eastern tiger snake","Eastern water cobra","Eastern yellowbelly sad racer","Egg-eater","Egyptian asp","Egyptian cobra","Elegant pitviper","Emerald tree boa","Equatorial spitting cobra","European asp","European smooth snake","Eyelash palm-pitviper","Eyelash pit viper","Eyelash viper","False cobra","False horned viper","False water cobra","Fan-Si-Pan horned pitviper","Fea's viper","Fer-de-lance","Fierce snake","Fifty pacer","Fishing snake","Flat-nosed pitviper","Flinders python","Flying snake","Forest cobra","Forest flame snake","Forsten's cat snake","Fox snake, three species of Pantherophis","Gaboon viper","Garter snake","Giant Malagasy hognose snake","Godman's pit viper","Gold tree cobra","Gold-ringed cat snake","Golden tree snake","Grand Canyon rattlesnake","Grass snake","Gray cat snake","Great Basin rattlesnake","Great Lakes bush viper","Great Plains rat snake","Green anaconda","Green cat-eyed snake","Green mamba","Green palm viper","Green rat snake","Green snake","Green tree pit viper","Green tree python","Grey Lora","Grey-banded kingsnake","Ground snake","Guatemalan palm viper","Guatemalan tree viper","Habu","Habu pit viper","Hagen's pitviper","Hairy bush viper","Halmahera python","Hardwicke's sea snake","Harlequin coral snake","High Woods coral snake","Hill keelback","Himalayan keelback","Hogg Island boa","Hognose snake","Hognosed viper","Honduran palm viper","Hook Nosed Sea Snake","Hopi rattlesnake","Horned adder","Horned desert viper","Horned viper","Horseshoe pitviper","Hundred pacer","Hutton's tree viper","Ikaheka snake","Indian cobra","Indian flying snake","Indian krait","Indian python","Indian tree viper","Indigo snake","Indochinese spitting cobra","Indonesian water python","Inland carpet python","Inland taipan","Jamaican Tree Snake","Jamaican boa","Jan's hognose snake","Japanese forest rat snake","Japanese rat snake","Japanese striped snake","Javan spitting cobra","Jerdon's pitviper","Jumping viper","Jungle carpet python","Kanburian pit viper","Kaulback's lance-headed pitviper","Kayaudi dwarf reticulated python","Kaznakov's viper","Keelback","Kham Plateau pitviper","Khasi Hills keelback","King Island tiger snake","King brown","King cobra","King rat snake","King snake","Krait","Krefft's tiger snake","Lance-headed rattlesnake","Lancehead","Large shield snake","Large-eyed pitviper","Large-scaled tree viper","Leaf viper","Leaf-nosed viper","Lesser black krait","Levant viper","Long-nosed adder","Long-nosed tree snake","Long-nosed viper","Long-nosed whip snake","Long-tailed rattlesnake","Longnosed worm snake","Lora","Lyre snake","Machete savane","Macklot's python","Madagascar ground boa","Madagascar tree boa","Malabar rock pitviper","Malayan krait","Malayan long-glanded coral snake","Malayan pit viper","Malcolm's tree viper","Mamba","Mamushi","Manchurian Black Water Snake","Mandalay cobra","Mandarin rat snake","Mangrove pit viper","Mangrove snake","Mangshan pitviper","Many-banded krait","Many-banded tree snake","Many-horned adder","Many-spotted cat snake","Massasauga rattlesnake","McMahon's viper","Mexican black kingsnake","Mexican green rattlesnake","Mexican hognose snake","Mexican palm-pitviper","Mexican parrot snake","Mexican racer","Mexican vine snake","Mexican west coast rattlesnake","Midget faded rattlesnake","Milk snake","Moccasin snake","Modest keelback","Mojave desert sidewinder","Mojave rattlesnake","Mole viper","Mollucan python","Moluccan flying snake","Montpellier snake","Motuo bamboo pitviper","Mountain adder","Mozambique spitting cobra","Mud adder","Mud snake","Mussurana","Namaqua dwarf adder","Namib dwarf sand adder","Narrowhead Garter Snake","New Guinea carpet python","Nichell snake","Nicobar Island keelback","Nicobar bamboo pitviper","Night snake","Nightingale adder","Nilgiri keelback","Nitsche's bush viper","Nitsche's tree viper","North Philippine cobra","North eastern king snake","Northeastern hill krait","Northern black-tailed rattlesnake","Northern tree snake","Northern water snake","Northern white-lipped python","Northwestern carpet python","Nose-horned viper","Nubian spitting cobra","Oaxacan small-headed rattlesnake","Oenpelli python","Olive python","Olive sea snake","Orange-collared keelback","Ornate flying snake","Palestine viper","Pallas' viper","Palm viper","Papuan python","Paradise flying snake","Parrot snake","Patchnose snake","Paupan taipan","Pelagic sea snake","Peninsula tiger snake","Peringuey's adder","Perrotet's shieldtail snake","Persian rat snake","Philippine cobra","Philippine pitviper","Pine snake","Pipe snake","Pit viper","Pointed-scaled pit viper[5]","Pope's tree viper","Portuguese viper","Prairie kingsnake","Puerto Rican boa","Puff adder","Pygmy python","Python","Queen snake","Racer","Raddysnake","Rainbow boa","Rat snake","Rattler","Rattlesnake","Red blood python","Red diamond rattlesnake","Red spitting cobra","Red-backed rat snake","Red-bellied black snake","Red-headed krait","Red-necked keelback","Red-tailed bamboo pitviper","Red-tailed boa","Red-tailed pipe snake","Reticulated python","Rhinoceros viper","Rhombic night adder","Ribbon snake","Rinkhals","Rinkhals cobra","River jack","Rosy boa","Rough green snake","Rough-scaled bush viper","Rough-scaled python","Rough-scaled tree viper","Royal python","Rubber boa","Rufous beaked snake","Rungwe tree viper","San Francisco garter snake","Sand adder","Sand boa","Savu python","Saw-scaled viper","Scarlet kingsnake","Schlegel's viper","Schultze's pitviper","Sea snake","Sedge viper","Selayer reticulated python","Sharp-nosed viper","Shield-nosed cobra","Shield-tailed snake","Siamese palm viper","Side-striped palm-pitviper","Sidewinder","Sikkim keelback","Sinai desert cobra","Sind krait","Small-eyed snake","Smooth green snake","Smooth snake","Snorkel viper","Snouted cobra","Sonoran sidewinder","South American hognose snake","South eastern corn snake","Southern Indonesian spitting cobra","Southern Pacific rattlesnake","Southern Philippine cobra","Southern black racer","Southern white-lipped python","Southwestern black spitting cobra","Southwestern blackhead snake","Southwestern carpet python","Southwestern speckled rattlesnake","Speckle-bellied keelback","Speckled kingsnake","Spectacled cobra","Spiny bush viper","Spitting cobra","Spotted python","Sri Lankan pit viper","Stejneger's bamboo pitviper","Stiletto snake","Stimson's python","Stoke's sea snake","Storm water cobra","Striped snake","Sumatran short-tailed python","Sumatran tree viper","Sunbeam snake","Taipan","Taiwan cobra","Tan racer","Tancitaran dusky rattlesnake","Tanimbar python","Tasmanian tiger snake","Tawny cat snake","Temple pit viper","Temple viper","Tentacled snake","Texas Coral Snake","Texas blind snake","Texas garter snake","Texas lyre snake","Texas night snake","Thai cobra","Three-lined ground snake","Tibetan bamboo pitviper","Tic polonga","Tiger pit viper","Tiger rattlesnake","Tiger snake","Tigre snake","Timber rattlesnake","Timor python","Titanboa","Tree boa","Tree snake","Tree viper","Trinket snake","Tropical rattlesnake","Twig snake","Twin Headed King Snake","Twin-Barred tree snake","Twin-spotted rat snake","Twin-spotted rattlesnake","Undulated pit viper","Uracoan rattlesnake","Ursini's viper","Urutu","Vine snake","Viper","Viper Adder","Vipera ammodytes","Wagler's pit viper","Wart snake","Water adder","Water moccasin","Water snake","West Indian racer","Western blind snake","Western carpet python","Western coral snake","Western diamondback rattlesnake","Western green mamba","Western ground snake","Western hog-nosed viper","Western mud snake","Western tiger snake","Western woma python","Wetar Island python","Whip snake","White-lipped keelback","White-lipped python","White-lipped tree viper","Wirot's pit viper","Wolf snake","Woma python","Worm snake","Wutu","Wynaad keelback","Yarara","Yellow anaconda","Yellow-banded sea snake","Yellow-bellied sea snake","Yellow-lined palm viper","Yellow-lipped sea snake","Yellow-striped rat snake","Yunnan keelback","Zebra snake","Zebra spitting cobra"];var S=["bat","bear","bee","bird","butterfly","cat","cow","crocodile","deer","dog","dolphin","eagle","elephant","fish","flamingo","fox","frog","gecko","giraffe","gorilla","hamster","hippopotamus","horse","kangaroo","koala","lion","monkey","ostrich","panda","parrot","peacock","penguin","polar bear","rabbit","rhinoceros","sea lion","shark","snake","squirrel","tiger","turtle","whale","wolf","zebra"];var Ia={bear:n,bird:i,cat:t,cetacean:l,cow:s,crocodilia:d,dog:u,fish:c,horse:m$1,insect:h,lion:y,rabbit:p$1,rodent:g,snake:b,type:S},k=Ia;var C$1=["{{person.name}}","{{company.name}}"];var f$1=["Redhold","Treeflex","Trippledex","Kanlam","Bigtax","Daltfresh","Toughjoyfax","Mat Lam Tam","Otcom","Tres-Zap","Y-Solowarm","Tresom","Voltsillam","Biodex","Greenlam","Viva","Matsoft","Temp","Zoolab","Subin","Rank","Job","Stringtough","Tin","It","Home Ing","Zamit","Sonsing","Konklab","Alpha","Latlux","Voyatouch","Alphazap","Holdlamis","Zaam-Dox","Sub-Ex","Quo Lux","Bamity","Ventosanzap","Lotstring","Hatity","Tempsoft","Overhold","Fixflex","Konklux","Zontrax","Tampflex","Span","Namfix","Transcof","Stim","Fix San","Sonair","Stronghold","Fintone","Y-find","Opela","Lotlux","Ronstring","Zathin","Duobam","Keylex"];var v$1=["0.#.#","0.##","#.##","#.#","#.#.#"];var Ka={author:C$1,name:f$1,version:v$1},A=Ka;var B$1=["###-###-####","(###) ###-####","1-###-###-####","###.###.####"];var Oa={formats:B$1},w$1=Oa;var M$1=["azure","black","blue","cyan","fuchsia","gold","green","grey","indigo","ivory","lavender","lime","magenta","maroon","mint green","olive","orange","orchid","pink","plum","purple","red","salmon","silver","sky blue","tan","teal","turquoise","violet","white","yellow"];var xa={human:M$1},T=xa;var L$1=["Automotive","Baby","Beauty","Books","Clothing","Computers","Electronics","Games","Garden","Grocery","Health","Home","Industrial","Jewelry","Kids","Movies","Music","Outdoors","Shoes","Sports","Tools","Toys"];var D$1=["Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals","Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles","Carbonite web goalkeeper gloves are ergonomically designed to give easy fit","Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support","New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016","New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart","The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design","The Football Is Good For Training And Recreational Purposes","The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J","The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive","The beautiful range of Apple Natural\xE9 that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients","The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality"];var R$1={adjective:["Awesome","Bespoke","Electronic","Elegant","Ergonomic","Fantastic","Generic","Gorgeous","Handcrafted","Handmade","Incredible","Intelligent","Licensed","Luxurious","Modern","Oriental","Practical","Recycled","Refined","Rustic","Sleek","Small","Tasty","Unbranded"],material:["Bronze","Concrete","Cotton","Fresh","Frozen","Granite","Metal","Plastic","Rubber","Soft","Steel","Wooden"],product:["Bacon","Ball","Bike","Car","Chair","Cheese","Chicken","Chips","Computer","Fish","Gloves","Hat","Keyboard","Mouse","Pants","Pizza","Salad","Sausages","Shirt","Shoes","Soap","Table","Towels","Tuna"]};var za={department:L$1,product_description:D$1,product_name:R$1},H$1=za;var P=["Adaptive","Advanced","Ameliorated","Assimilated","Automated","Balanced","Business-focused","Centralized","Cloned","Compatible","Configurable","Cross-group","Cross-platform","Customer-focused","Customizable","De-engineered","Decentralized","Devolved","Digitized","Distributed","Diverse","Down-sized","Enhanced","Enterprise-wide","Ergonomic","Exclusive","Expanded","Extended","Face to face","Focused","Front-line","Fully-configurable","Function-based","Fundamental","Future-proofed","Grass-roots","Horizontal","Implemented","Innovative","Integrated","Intuitive","Inverse","Managed","Mandatory","Monitored","Multi-channelled","Multi-lateral","Multi-layered","Multi-tiered","Networked","Object-based","Open-architected","Open-source","Operative","Optimized","Optional","Organic","Organized","Persevering","Persistent","Phased","Polarised","Pre-emptive","Proactive","Profit-focused","Profound","Programmable","Progressive","Public-key","Quality-focused","Re-contextualized","Re-engineered","Reactive","Realigned","Reduced","Reverse-engineered","Right-sized","Robust","Seamless","Secured","Self-enabling","Sharable","Stand-alone","Streamlined","Switchable","Synchronised","Synergistic","Synergized","Team-oriented","Total","Triple-buffered","Universal","Up-sized","Upgradable","User-centric","User-friendly","Versatile","Virtual","Vision-oriented","Visionary"];var W$1=["24/365","24/7","B2B","B2C","back-end","best-of-breed","bleeding-edge","bricks-and-clicks","clicks-and-mortar","collaborative","compelling","cross-media","cross-platform","customized","cutting-edge","distributed","dot-com","dynamic","e-business","efficient","end-to-end","enterprise","extensible","frictionless","front-end","global","granular","holistic","impactful","innovative","integrated","interactive","intuitive","killer","leading-edge","magnetic","mission-critical","next-generation","one-to-one","open-source","out-of-the-box","plug-and-play","proactive","real-time","revolutionary","rich","robust","scalable","seamless","sexy","sticky","strategic","synergistic","transparent","turn-key","ubiquitous","user-centric","value-added","vertical","viral","virtual","visionary","web-enabled","wireless","world-class"];var G$1=["ROI","action-items","applications","architectures","bandwidth","blockchains","channels","communities","content","convergence","deliverables","e-business","e-commerce","e-markets","experiences","eyeballs","functionalities","infrastructures","initiatives","interfaces","lifetime value","markets","methodologies","metrics","mindshare","models","networks","niches","paradigms","partnerships","platforms","portals","relationships","schemas","solutions","supply-chains","synergies","systems","technologies","users","web services"];var N$1=["aggregate","architect","benchmark","brand","cultivate","deliver","deploy","disintermediate","drive","e-enable","embrace","empower","enable","engage","engineer","enhance","envisioneer","evolve","expedite","exploit","extend","facilitate","generate","grow","harness","implement","incentivize","incubate","innovate","integrate","iterate","leverage","matrix","maximize","mesh","monetize","morph","optimize","orchestrate","productize","recontextualize","redefine","reintermediate","reinvent","repurpose","revolutionize","scale","seize","strategize","streamline","syndicate","synergize","synthesize","target","transform","transition","unleash","utilize","visualize","whiteboard"];var E$1=["24 hour","24/7","3rd generation","4th generation","5th generation","6th generation","actuating","analyzing","asymmetric","asynchronous","attitude-oriented","background","bandwidth-monitored","bi-directional","bifurcated","bottom-line","clear-thinking","client-driven","client-server","coherent","cohesive","composite","content-based","context-sensitive","contextually-based","dedicated","demand-driven","didactic","directional","discrete","disintermediate","dynamic","eco-centric","empowering","encompassing","even-keeled","executive","explicit","exuding","fault-tolerant","foreground","fresh-thinking","full-range","global","grid-enabled","heuristic","high-level","holistic","homogeneous","human-resource","hybrid","impactful","incremental","intangible","interactive","intermediate","leading edge","local","logistical","maximized","methodical","mission-critical","mobile","modular","motivating","multi-state","multi-tasking","multimedia","national","needs-based","neutral","next generation","non-volatile","object-oriented","optimal","optimizing","radical","real-time","reciprocal","regional","responsive","scalable","secondary","solution-oriented","stable","static","system-worthy","systematic","systemic","tangible","tertiary","transitional","uniform","upward-trending","user-facing","value-added","web-enabled","well-modulated","zero administration","zero defect","zero tolerance"];var F$1=["Group","Inc","LLC","and Sons"];var J$1=["{{person.last_name.generic}} - {{person.last_name.generic}}","{{person.last_name.generic}} {{company.legal_entity_type}}","{{person.last_name.generic}}, {{person.last_name.generic}} and {{person.last_name.generic}}"];var I$1=["Graphic Interface","Graphical User Interface","ability","access","adapter","algorithm","alliance","analyzer","application","approach","architecture","archive","array","artificial intelligence","attitude","benchmark","budgetary management","capability","capacity","challenge","circuit","collaboration","complexity","concept","conglomeration","contingency","core","customer loyalty","data-warehouse","database","definition","emulation","encoding","encryption","extranet","firmware","flexibility","focus group","forecast","frame","framework","function","functionalities","groupware","hardware","help-desk","hierarchy","hub","implementation","info-mediaries","infrastructure","initiative","installation","instruction set","interface","internet solution","intranet","knowledge base","knowledge user","leverage","local area network","matrices","matrix","methodology","middleware","migration","model","moderator","monitoring","moratorium","neural-net","open architecture","open system","orchestration","paradigm","parallelism","policy","portal","pricing structure","process improvement","product","productivity","project","projection","protocol","secured line","service-desk","software","solution","standardization","strategy","structure","success","superstructure","support","synergy","system engine","task-force","throughput","time-frame","toolset","utilisation","website","workforce"];var Va={adjective:P,buzz_adjective:W$1,buzz_noun:G$1,buzz_verb:N$1,descriptor:E$1,legal_entity_type:F$1,name_pattern:J$1,noun:I$1},K$1=Va;var O$1=["avatar","category","comment","createdAt","email","group","id","name","password","phone","status","title","token","updatedAt"];var Ya={column:O$1},x$1=Ya;var z$1={wide:["April","August","December","February","January","July","June","March","May","November","October","September"],abbr:["Apr","Aug","Dec","Feb","Jan","Jul","Jun","Mar","May","Nov","Oct","Sep"]};var V$1={wide:["Friday","Monday","Saturday","Sunday","Thursday","Tuesday","Wednesday"],abbr:["Fri","Mon","Sat","Sun","Thu","Tue","Wed"]};var ja={month:z$1,weekday:V$1},Y$1=ja;var j$1=["Auto Loan","Checking","Credit Card","Home Loan","Investment","Money Market","Personal Loan","Savings"];var q$1=["34##-######-####L","37##-######-####L"];var U$1=["30[0-5]#-######-###L","36##-######-###L","54##-####-####-###L"];var Z$1=["6011-####-####-###L","6011-62##-####-####-###L","64[4-9]#-####-####-###L","64[4-9]#-62##-####-####-###L","65##-####-####-###L","65##-62##-####-####-###L"];var _$1=["3528-####-####-###L","3529-####-####-###L","35[3-8]#-####-####-###L"];var Q$1=["2[221-720]-####-####-###L","5[1-5]##-####-####-###L"];var X$1=["4###########L","4###-####-####-###L"];var qa={american_express:q$1,diners_club:U$1,discover:Z$1,jcb:_$1,mastercard:Q$1,visa:X$1},$$1=qa;var ee$1=[{name:"UAE Dirham",code:"AED",symbol:""},{name:"Afghani",code:"AFN",symbol:"\u060B"},{name:"Lek",code:"ALL",symbol:"Lek"},{name:"Armenian Dram",code:"AMD",symbol:""},{name:"Netherlands Antillian Guilder",code:"ANG",symbol:"\u0192"},{name:"Kwanza",code:"AOA",symbol:""},{name:"Argentine Peso",code:"ARS",symbol:"$"},{name:"Australian Dollar",code:"AUD",symbol:"$"},{name:"Aruban Guilder",code:"AWG",symbol:"\u0192"},{name:"Azerbaijanian Manat",code:"AZN",symbol:"\u043C\u0430\u043D"},{name:"Convertible Marks",code:"BAM",symbol:"KM"},{name:"Barbados Dollar",code:"BBD",symbol:"$"},{name:"Taka",code:"BDT",symbol:""},{name:"Bulgarian Lev",code:"BGN",symbol:"\u043B\u0432"},{name:"Bahraini Dinar",code:"BHD",symbol:""},{name:"Burundi Franc",code:"BIF",symbol:""},{name:"Bermudian Dollar (customarily known as Bermuda Dollar)",code:"BMD",symbol:"$"},{name:"Brunei Dollar",code:"BND",symbol:"$"},{name:"Boliviano boliviano",code:"BOB",symbol:"Bs"},{name:"Brazilian Real",code:"BRL",symbol:"R$"},{name:"Bahamian Dollar",code:"BSD",symbol:"$"},{name:"Pula",code:"BWP",symbol:"P"},{name:"Belarusian Ruble",code:"BYN",symbol:"Rbl"},{name:"Belize Dollar",code:"BZD",symbol:"BZ$"},{name:"Canadian Dollar",code:"CAD",symbol:"$"},{name:"Congolese Franc",code:"CDF",symbol:""},{name:"Swiss Franc",code:"CHF",symbol:"CHF"},{name:"Chilean Peso",code:"CLP",symbol:"$"},{name:"Yuan Renminbi",code:"CNY",symbol:"\xA5"},{name:"Colombian Peso",code:"COP",symbol:"$"},{name:"Costa Rican Colon",code:"CRC",symbol:"\u20A1"},{name:"Cuban Peso",code:"CUP",symbol:"\u20B1"},{name:"Cape Verde Escudo",code:"CVE",symbol:""},{name:"Czech Koruna",code:"CZK",symbol:"K\u010D"},{name:"Djibouti Franc",code:"DJF",symbol:""},{name:"Danish Krone",code:"DKK",symbol:"kr"},{name:"Dominican Peso",code:"DOP",symbol:"RD$"},{name:"Algerian Dinar",code:"DZD",symbol:""},{name:"Egyptian Pound",code:"EGP",symbol:"\xA3"},{name:"Nakfa",code:"ERN",symbol:""},{name:"Ethiopian Birr",code:"ETB",symbol:""},{name:"Euro",code:"EUR",symbol:"\u20AC"},{name:"Fiji Dollar",code:"FJD",symbol:"$"},{name:"Falkland Islands Pound",code:"FKP",symbol:"\xA3"},{name:"Pound Sterling",code:"GBP",symbol:"\xA3"},{name:"Lari",code:"GEL",symbol:""},{name:"Cedi",code:"GHS",symbol:""},{name:"Gibraltar Pound",code:"GIP",symbol:"\xA3"},{name:"Dalasi",code:"GMD",symbol:""},{name:"Guinea Franc",code:"GNF",symbol:""},{name:"Quetzal",code:"GTQ",symbol:"Q"},{name:"Guyana Dollar",code:"GYD",symbol:"$"},{name:"Hong Kong Dollar",code:"HKD",symbol:"$"},{name:"Lempira",code:"HNL",symbol:"L"},{name:"Gourde",code:"HTG",symbol:""},{name:"Forint",code:"HUF",symbol:"Ft"},{name:"Rupiah",code:"IDR",symbol:"Rp"},{name:"New Israeli Sheqel",code:"ILS",symbol:"\u20AA"},{name:"Bhutanese Ngultrum",code:"BTN",symbol:"Nu"},{name:"Indian Rupee",code:"INR",symbol:"\u20B9"},{name:"Iraqi Dinar",code:"IQD",symbol:""},{name:"Iranian Rial",code:"IRR",symbol:"\uFDFC"},{name:"Iceland Krona",code:"ISK",symbol:"kr"},{name:"Jamaican Dollar",code:"JMD",symbol:"J$"},{name:"Jordanian Dinar",code:"JOD",symbol:""},{name:"Yen",code:"JPY",symbol:"\xA5"},{name:"Kenyan Shilling",code:"KES",symbol:""},{name:"Som",code:"KGS",symbol:"\u043B\u0432"},{name:"Riel",code:"KHR",symbol:"\u17DB"},{name:"Comoro Franc",code:"KMF",symbol:""},{name:"North Korean Won",code:"KPW",symbol:"\u20A9"},{name:"Won",code:"KRW",symbol:"\u20A9"},{name:"Kuwaiti Dinar",code:"KWD",symbol:""},{name:"Cayman Islands Dollar",code:"KYD",symbol:"$"},{name:"Tenge",code:"KZT",symbol:"\u043B\u0432"},{name:"Kip",code:"LAK",symbol:"\u20AD"},{name:"Lebanese Pound",code:"LBP",symbol:"\xA3"},{name:"Sri Lanka Rupee",code:"LKR",symbol:"\u20A8"},{name:"Liberian Dollar",code:"LRD",symbol:"$"},{name:"Libyan Dinar",code:"LYD",symbol:""},{name:"Moroccan Dirham",code:"MAD",symbol:""},{name:"Moldovan Leu",code:"MDL",symbol:""},{name:"Malagasy Ariary",code:"MGA",symbol:""},{name:"Denar",code:"MKD",symbol:"\u0434\u0435\u043D"},{name:"Kyat",code:"MMK",symbol:""},{name:"Tugrik",code:"MNT",symbol:"\u20AE"},{name:"Pataca",code:"MOP",symbol:""},{name:"Ouguiya",code:"MRU",symbol:""},{name:"Mauritius Rupee",code:"MUR",symbol:"\u20A8"},{name:"Rufiyaa",code:"MVR",symbol:""},{name:"Kwacha",code:"MWK",symbol:""},{name:"Mexican Peso",code:"MXN",symbol:"$"},{name:"Malaysian Ringgit",code:"MYR",symbol:"RM"},{name:"Metical",code:"MZN",symbol:"MT"},{name:"Naira",code:"NGN",symbol:"\u20A6"},{name:"Cordoba Oro",code:"NIO",symbol:"C$"},{name:"Norwegian Krone",code:"NOK",symbol:"kr"},{name:"Nepalese Rupee",code:"NPR",symbol:"\u20A8"},{name:"New Zealand Dollar",code:"NZD",symbol:"$"},{name:"Rial Omani",code:"OMR",symbol:"\uFDFC"},{name:"Balboa",code:"PAB",symbol:"B/."},{name:"Nuevo Sol",code:"PEN",symbol:"S/."},{name:"Kina",code:"PGK",symbol:""},{name:"Philippine Peso",code:"PHP",symbol:"Php"},{name:"Pakistan Rupee",code:"PKR",symbol:"\u20A8"},{name:"Zloty",code:"PLN",symbol:"z\u0142"},{name:"Guarani",code:"PYG",symbol:"Gs"},{name:"Qatari Rial",code:"QAR",symbol:"\uFDFC"},{name:"New Leu",code:"RON",symbol:"lei"},{name:"Serbian Dinar",code:"RSD",symbol:"\u0414\u0438\u043D."},{name:"Russian Ruble",code:"RUB",symbol:"\u0440\u0443\u0431"},{name:"Rwanda Franc",code:"RWF",symbol:""},{name:"Saudi Riyal",code:"SAR",symbol:"\uFDFC"},{name:"Solomon Islands Dollar",code:"SBD",symbol:"$"},{name:"Seychelles Rupee",code:"SCR",symbol:"\u20A8"},{name:"Sudanese Pound",code:"SDG",symbol:""},{name:"Swedish Krona",code:"SEK",symbol:"kr"},{name:"Singapore Dollar",code:"SGD",symbol:"$"},{name:"Saint Helena Pound",code:"SHP",symbol:"\xA3"},{name:"Leone",code:"SLE",symbol:""},{name:"Somali Shilling",code:"SOS",symbol:"S"},{name:"Surinam Dollar",code:"SRD",symbol:"$"},{name:"South Sudanese pound",code:"SSP",symbol:""},{name:"Dobra",code:"STN",symbol:"Db"},{name:"Syrian Pound",code:"SYP",symbol:"\xA3"},{name:"Lilangeni",code:"SZL",symbol:""},{name:"Baht",code:"THB",symbol:"\u0E3F"},{name:"Somoni",code:"TJS",symbol:""},{name:"Manat",code:"TMT",symbol:""},{name:"Tunisian Dinar",code:"TND",symbol:""},{name:"Pa'anga",code:"TOP",symbol:""},{name:"Turkish Lira",code:"TRY",symbol:"\u20BA"},{name:"Trinidad and Tobago Dollar",code:"TTD",symbol:"TT$"},{name:"New Taiwan Dollar",code:"TWD",symbol:"NT$"},{name:"Tanzanian Shilling",code:"TZS",symbol:""},{name:"Hryvnia",code:"UAH",symbol:"\u20B4"},{name:"Uganda Shilling",code:"UGX",symbol:""},{name:"US Dollar",code:"USD",symbol:"$"},{name:"Peso Uruguayo",code:"UYU",symbol:"$U"},{name:"Uzbekistan Sum",code:"UZS",symbol:"\u043B\u0432"},{name:"Venezuelan bol\xEDvar",code:"VES",symbol:"Bs"},{name:"Dong",code:"VND",symbol:"\u20AB"},{name:"Vatu",code:"VUV",symbol:""},{name:"Tala",code:"WST",symbol:""},{name:"CFA Franc BEAC",code:"XAF",symbol:""},{name:"East Caribbean Dollar",code:"XCD",symbol:"$"},{name:"CFA Franc BCEAO",code:"XOF",symbol:""},{name:"CFP Franc",code:"XPF",symbol:""},{name:"Yemeni Rial",code:"YER",symbol:"\uFDFC"},{name:"Rand",code:"ZAR",symbol:"R"},{name:"Lesotho Loti",code:"LSL",symbol:""},{name:"Namibia Dollar",code:"NAD",symbol:"N$"},{name:"Zambian Kwacha",code:"ZMW",symbol:"K"},{name:"Zimbabwe Dollar",code:"ZWL",symbol:""}];var ae$1=["deposit","invoice","payment","withdrawal"];var Ua={account_type:j$1,credit_card:$$1,currency:ee$1,transaction_type:ae$1},oe$1=Ua;var re$1=["bitter","creamy","crispy","crunchy","delicious","fluffy","fresh","golden","juicy","moist","rich","salty","savory","smoky","sour","spicy","sweet","tangy","tender","zesty"];var ne$1=["A classic pie filled with delicious {{food.meat}} and {{food.adjective}} {{food.ingredient}}, baked in a {{food.adjective}} pastry crust and topped with a golden-brown lattice.","A delightful tart combining {{food.adjective}} {{food.vegetable}} and sweet {{food.fruit}}, set in a buttery pastry shell and finished with a hint of {{food.spice}}.","A heartwarming {{food.ethnic_category}} soup, featuring fresh {{food.ingredient}} and an aromatic blend of traditional spices.","A robust {{food.adjective}} stew featuring {{food.ethnic_category}} flavors, loaded with {{food.adjective}} meat, {{food.adjective}} vegetables, and a {{food.adjective}}, {{food.adjective}} broth.","A simple {{food.fruit}} pie. No fancy stuff. Just pie.","A slow-roasted {{animal.bird}} with a {{food.adjective}}, {{food.adjective}} exterior. Stuffed with {{food.fruit}} and covered in {{food.fruit}} sauce. Sides with {{food.vegetable}} puree and wild {{food.vegetable}}.","A special {{color.human}} {{food.ingredient}} from {{location.country}}. To support the strong flavor it is sided with a tablespoon of {{food.spice}}.","A succulent {{food.meat}} steak, encased in a {{food.adjective}} {{food.spice}} crust, served with a side of {{food.spice}} mashed {{food.vegetable}}.","An exquisite {{food.meat}} roast, infused with the essence of {{food.fruit}}, slow-roasted to bring out its natural flavors and served with a side of creamy {{food.vegetable}}","Baked {{food.ingredient}}-stuffed {{food.meat}}, seasoned with {{food.spice}} and {{food.adjective}} herbs, accompanied by roasted {{food.vegetable}} medley.","Crispy fried {{food.meat}} bites, seasoned with {{food.spice}} and served with a tangy {{food.fruit}} dipping sauce.","Fresh mixed greens tossed with {{food.spice}}-rubbed {{food.meat}}, {{food.vegetable}}, and a light dressing.","Fresh {{food.ingredient}} with a pinch of {{food.spice}}, topped by a caramelized {{food.fruit}} with whipped cream","Grilled {{food.meat}} kebabs, marinated in {{food.ethnic_category}} spices and served with a fresh {{food.vegetable}} and {{food.fruit}} salad.","Hearty {{food.ingredient}} and {{food.meat}} stew, slow-cooked with {{food.spice}} and {{food.vegetable}} for a comforting, flavorful meal.","Juicy {{food.meat}}, grilled to your liking and drizzled with a bold {{food.spice}} sauce, served alongside roasted {{food.vegetable}}.","Our {{food.adjective}} {{food.meat}}, slow-cooked to perfection, accompanied by steamed {{food.vegetable}} and a rich, savory gravy.","Tender {{food.meat}} skewers, glazed with a sweet and tangy {{food.fruit}} sauce, served over a bed of fragrant jasmine rice.","Tenderly braised {{food.meat}} in a rich {{food.spice}} and {{food.vegetable}} sauce, served with a side of creamy {{food.vegetable}}.","Three {{food.ingredient}} with {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}} and {{food.ingredient}}. With a side of baked {{food.fruit}}, and your choice of {{food.ingredient}} or {{food.ingredient}}.",'{{number.int({"min":1, "max":99})}}-day aged {{food.meat}} steak, with choice of {{number.int({"min":2, "max":4})}} sides.'];var ie$1=["California maki","Peking duck","Philadelphia maki","arepas","barbecue ribs","bruschette with tomato","bunny chow","caesar salad","caprese salad","cauliflower penne","cheeseburger","chicken fajitas","chicken milanese","chicken parm","chicken wings","chilli con carne","ebiten maki","fettuccine alfredo","fish and chips","french fries with sausages","french toast","hummus","katsu curry","kebab","lasagne","linguine with clams","massaman curry","meatballs with sauce","mushroom risotto","pappardelle alla bolognese","pasta and beans","pasta carbonara","pasta with tomato and basil","pho","pierogi","pizza","poke","pork belly buns","pork sausage roll","poutine","ricotta stuffed ravioli","risotto with seafood","salmon nigiri","scotch eggs","seafood paella","som tam","souvlaki","stinky tofu","sushi","tacos","teriyaki chicken donburi","tiramis\xF9","tuna sashimi","vegetable soup"];var te$1=["{{food.adjective}} {{food.ethnic_category}} stew","{{food.adjective}} {{food.meat}} with {{food.vegetable}}","{{food.ethnic_category}} {{food.ingredient}} soup","{{food.fruit}} and {{food.fruit}} tart","{{food.fruit}} pie","{{food.fruit}}-glazed {{food.meat}} skewers","{{food.fruit}}-infused {{food.meat}} roast","{{food.ingredient}} and {{food.meat}} pie","{{food.ingredient}}-infused {{food.meat}}","{{food.meat}} steak","{{food.meat}} with {{food.fruit}} sauce","{{food.spice}}-crusted {{food.meat}}","{{food.spice}}-rubbed {{food.meat}} salad","{{food.vegetable}} salad","{{person.first_name.generic}}'s special {{food.ingredient}}"];var le$1=["Ainu","Albanian","American","Andhra","Anglo-Indian","Arab","Argentine","Armenian","Assyrian","Awadhi","Azerbaijani","Balochi","Bangladeshi","Bashkir","Belarusian","Bengali","Berber","Brazilian","British","Buddhist","Bulgarian","Cajun","Cantonese","Caribbean","Chechen","Chinese","Chinese Islamic","Circassian","Crimean Tatar","Cypriot","Czech","Danish","Egyptian","English","Eritrean","Estonian","Ethiopian","Filipino","French","Georgian","German","Goan","Goan Catholic","Greek","Gujarati","Hyderabad","Indian","Indian Chinese","Indian Singaporean","Indonesian","Inuit","Irish","Italian","Italian-American","Jamaican","Japanese","Jewish - Israeli","Karnataka","Kazakh","Keralite","Korean","Kurdish","Laotian","Latvian","Lebanese","Lithuanian","Louisiana Creole","Maharashtrian","Malay","Malaysian Chinese","Malaysian Indian","Mangalorean","Mediterranean","Mennonite","Mexican","Mordovian","Mughal","Native American","Nepalese","New Mexican","Odia","Pakistani","Parsi","Pashtun","Pennsylvania Dutch","Peranakan","Persian","Peruvian","Polish","Portuguese","Punjabi","Qu\xE9b\xE9cois","Rajasthani","Romani","Romanian","Russian","Sami","Serbian","Sindhi","Slovak","Slovenian","Somali","South Indian","Soviet","Spanish","Sri Lankan","Taiwanese","Tamil","Tatar","Texan","Thai","Turkish","Udupi","Ukrainian","Vietnamese","Yamal","Zambian","Zanzibari"];var se$1=["apple","apricot","aubergine","avocado","banana","berry","blackberry","blood orange","blueberry","bush tomato","butternut pumpkin","cantaloupe","cavalo","cherry","corella pear","cranberry","cumquat","currant","custard apple","custard apples daikon","date","dragonfruit","dried apricot","elderberry","feijoa","fig","fingerlime","goji berry","grape","grapefruit","guava","honeydew melon","incaberry","jarrahdale pumpkin","juniper berry","kiwi fruit","kiwiberry","lemon","lime","longan","loquat","lychee","mandarin","mango","mangosteen","melon","mulberry","nashi pear","nectarine","olive","orange","papaw","papaya","passionfruit","peach","pear","pineapple","plum","pomegranate","prune","rockmelon","snowpea","sprout","starfruit","strawberry","sultana","tangelo","tomato","watermelon"];var de=["achacha","adzuki beans","agar","agave syrup","ajowan seed","albacore tuna","alfalfa","allspice","almond oil","almonds","amaranth","amchur","anchovies","aniseed","annatto seed","apple cider vinegar","apple juice","apple juice concentrate","apples","apricots","arborio rice","arrowroot","artichoke","arugula","asafoetida","asian greens","asian noodles","asparagus","aubergine","avocado","avocado oil","avocado spread","bacon","baking powder","baking soda","balsamic vinegar","bamboo shoots","banana","barberry","barley","barramundi","basil basmati rice","bay leaves","bean shoots","bean sprouts","beans","beef","beef stock","beetroot","berries","besan","black eyed beans","blackberries","blood oranges","blue cheese","blue eye trevalla","blue swimmer crab","blueberries","bocconcini","bok choy","bonito flakes","bonza","borlotti beans","bran","brazil nut","bread","brie","broccoli","broccolini","brown flour","brown mushrooms","brown rice","brown rice vinegar","brussels sprouts","buckwheat","buckwheat flour","buckwheat noodles","bulghur","bush tomato","butter","butter beans","buttermilk","butternut lettuce","butternut pumpkin","cabbage","cacao","cake","calamari","camellia tea oil","camembert","camomile","candle nut","cannellini beans","canola oil","cantaloupe","capers","capsicum","caraway seed","cardamom","carob carrot","carrot","cashews","cassia bark","cauliflower","cavalo","cayenne","celery","celery seed","cheddar","cherries","chestnut","chia seeds","chicken","chicken stock","chickory","chickpea","chilli pepper","chinese cabbage","chinese five spice","chives","choy sum","cinnamon","clams","cloves","cocoa powder","coconut","coconut oil","coconut water","coffee","common cultivated mushrooms","corella pear","coriander leaves","coriander seed","corn oil","corn syrup","corn tortilla","cornichons","cornmeal","cos lettuce","cottage cheese","cous cous","crabs","cranberry","cream","cream cheese","cucumber","cumin","cumquat","currants","curry leaves","curry powder","custard apples","dandelion","dark chocolate","dashi","dates","dill","dragonfruit","dried apricots","dried chinese broccoli","duck","edam","edamame","eggplant","eggs","elderberry","endive","english spinach","enoki mushrooms","extra virgin olive oil","farmed prawns","feijoa","fennel","fennel seeds","fenugreek","feta","figs","file powder","fingerlime","fish sauce","fish stock","flat mushrooms","flathead","flaxseed","flaxseed oil","flounder","flour","freekeh","french eschallots","fresh chillies","fromage blanc","fruit","galangal","garam masala","garlic","goat cheese","goat milk","goji berry","grape seed oil","grapefruit","grapes","green beans","green pepper","green tea","green tea noodles","greenwheat freekeh","gruyere","guava","gula melaka","haloumi","ham","haricot beans","harissa","hazelnut","hijiki","hiramasa kingfish","hokkien noodles","honey","honeydew melon","horseradish","hot smoked salmon","hummus","iceberg lettuce","incaberries","jarrahdale pumpkin","jasmine rice","jelly","jerusalem artichoke","jewfish","jicama","juniper berries","kale","kangaroo","kecap manis","kenchur","kidney beans","kidneys","kiwi berries","kiwi fruit","kohlrabi","kokam","kombu","koshihikari rice","kudzu","kumera","lamb","lavender flowers","leeks","lemon","lemongrass","lentils","lettuce","licorice","lime leaves","limes","liver","lobster","longan","loquats","lotus root","lychees","macadamia nut","macadamia oil","mace","mackerel","mahi mahi","mahlab","malt vinegar","mandarins","mango","mangosteens","maple syrup","margarine","marigold","marjoram","mastic","melon","milk","milk chocolate","mint","miso","molasses","monkfish","morwong","mountain bread","mozzarella","muesli","mulberries","mullet","mung beans","mussels","mustard","mustard seed","nashi pear","nasturtium","nectarines","nori","nutmeg","nutritional yeast","nuts","oat flour","oatmeal","oats","octopus","okra","olive oil","olives","omega spread","onion","oranges","oregano","oyster mushrooms","oyster sauce","oysters","pandanus leaves","papaw","papaya","paprik","parmesan cheese","parrotfish","parsley","parsnip","passionfruit","pasta","peaches","peanuts","pear","pear juice","pears","peas","pecan nut","pecorino","pepitas","peppercorns","peppermint","peppers","persimmon","pine nut","pineapple","pinto beans","pistachio nut","plums","polenta","pomegranate","poppy seed","porcini mushrooms","pork","potato flour","potatoes","provolone","prunes","pumpkin","pumpkin seed","purple carrot","purple rice","quark","quince","quinoa","radicchio","radish","raisin","raspberry","red cabbage","red lentils","red pepper","red wine","red wine vinegar","redfish","rhubarb","rice flour","rice noodles","rice paper","rice syrup","ricemilk","ricotta","rockmelon","rose water","rosemary","rye","rye bread","safflower oil","saffron","sage","sake","salmon","sardines","sausages","scallops","sea salt","semolina","sesame oil","sesame seeds","shark","shiitake mushrooms","silverbeet","slivered almonds","smoked trout","snapper","snowpea sprouts","snowpeas","soba","sour dough bread","soy","soy beans","soy flour","soy milk","soy sauce","soymilk","spearmint","spelt","spelt bread","spinach","spring onions","sprouts","squash","squid","star anise","star fruit","starfruit","stevia","strawberries","sugar","sultanas","sun-dried tomatoes","sunflower oil","sunflower seeds","sweet chilli sauce","sweet potato","swiss chard","swordfish","szechuan pepperberry","tabasco","tahini","taleggio cheese","tamari","tamarillo","tangelo","tapioca","tapioca flour","tarragon","tea","tea oil","tempeh","thyme","tinned","tofu","tom yum","tomatoes","trout","tuna","turkey","turmeric","turnips","unbleached flour","vanilla beans","vegetable oil","vegetable spaghetti","vegetable stock","vermicelli noodles","vinegar","wakame","walnut","warehou","wasabi","water","watercress","watermelon","wattleseed","wheat","wheatgrass juice","white bread","white flour","white rice","white wine","white wine vinegar","whiting wild rice","wholegrain bread","wholemeal","wholewheat flour","william pear","yeast","yellow papaw","yellowtail kingfish","yoghurt","yogurt","zucchini"];var ue$1=["beef","chicken","crocodile","duck","emu","goose","kangaroo","lamb","ostrich","pigeon","pork","quail","rabbit","salmon","turkey","venison"];var ce$1=["achiote seed","ajwain seed","ajwan seed","allspice","amchoor","anise","anise star","aniseed","annatto seed","arrowroot","asafoetida","baharat","balti masala","balti stir fry mix","basil","bay leaves","bbq","caraway seed","cardamom","cassia","cayenne pepper","celery","chamomile","chervil","chilli","chilli pepper","chillies","china star","chives","cinnamon","cloves","colombo","coriander","cumin","curly leaf parsley","curry","dhansak","dill","fennel seed","fenugreek","fines herbes","five spice","french lavender","galangal","garam masala","garlic","german chamomile","ginger","green cardamom","herbes de provence","jalfrezi","jerk","kaffir leaves","korma","lavender","lemon grass","lemon pepper","lime leaves","liquorice root","mace","mango","marjoram","methi","mint","mustard","nutmeg","onion seed","orange zest","oregano","paprika","parsley","pepper","peppercorns","pimento","piri piri","poppy seed","pot marjoram","poudre de colombo","ras-el-hanout","rice paper","rogan josh","rose baie","rosemary","saffron","sage","sesame seed","spearmint","sumac","sweet basil","sweet laurel","tagine","tandoori masala","tarragon","thyme","tikka masala","turmeric","vanilla","zahtar"];var me$1=["artichoke","arugula","asian greens","asparagus","bean shoots","bean sprouts","beans","beetroot","bok choy","broccoli","broccolini","brussels sprouts","butternut lettuce","cabbage","capers","carob carrot","carrot","cauliflower","celery","chilli pepper","chinese cabbage","chives","cornichons","cos lettuce","cucumber","dried chinese broccoli","eggplant","endive","english spinach","french eschallots","fresh chillies","garlic","green beans","green pepper","hijiki","iceberg lettuce","jerusalem artichoke","jicama","kale","kohlrabi","leeks","lettuce","okra","onion","parsnip","peas","peppers","potatoes","pumpkin","purple carrot","radicchio","radish","raspberry","red cabbage","red pepper","rhubarb","snowpea sprouts","spinach","squash","sun dried tomatoes","sweet potato","swiss chard","turnips","zucchini"];var Za={adjective:re$1,description_pattern:ne$1,dish:ie$1,dish_pattern:te$1,ethnic_category:le$1,fruit:se$1,ingredient:de,meat:ue$1,spice:ce$1,vegetable:me$1},he$1=Za;var ye$1=["1080p","auxiliary","back-end","bluetooth","cross-platform","digital","haptic","mobile","multi-byte","neural","online","open-source","optical","primary","redundant","solid state","virtual","wireless"];var pe$1=["backing up","bypassing","calculating","compressing","connecting","copying","generating","hacking","indexing","navigating","overriding","parsing","programming","quantifying","synthesizing","transmitting"];var ge$1=["alarm","application","array","bandwidth","bus","capacitor","card","circuit","driver","feed","firewall","hard drive","interface","matrix","microchip","monitor","panel","pixel","port","program","protocol","sensor","system","transmitter"];var be$1=["I'll {{verb}} the {{adjective}} {{abbreviation}} {{noun}}, that should {{noun}} the {{abbreviation}} {{noun}}!","If we {{verb}} the {{noun}}, we can get to the {{abbreviation}} {{noun}} through the {{adjective}} {{abbreviation}} {{noun}}!","The {{abbreviation}} {{noun}} is down, {{verb}} the {{adjective}} {{noun}} so we can {{verb}} the {{abbreviation}} {{noun}}!","Try to {{verb}} the {{abbreviation}} {{noun}}, maybe it will {{verb}} the {{adjective}} {{noun}}!","Use the {{adjective}} {{abbreviation}} {{noun}}, then you can {{verb}} the {{adjective}} {{noun}}!","We need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!","You can't {{verb}} the {{noun}} without {{ingverb}} the {{adjective}} {{abbreviation}} {{noun}}!","{{ingverb}} the {{noun}} won't do anything, we need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!"];var Se$1=["back up","bypass","calculate","compress","connect","copy","generate","hack","index","input","navigate","override","parse","program","quantify","reboot","synthesize","transmit"];var _a={adjective:ye$1,ingverb:pe$1,noun:ge$1,phrase:be$1,verb:Se$1},ke$1=_a;var Ce$1=["com","biz","info","name","net","org"];var fe$1=["example.org","example.com","example.net"];var ve$1=["gmail.com","yahoo.com","hotmail.com"];var Qa$1={domain_suffix:Ce$1,example_email:fe$1,free_email:ve$1},Ae$1=Qa$1;var Be$1=["#####","####","###"];var we$1=["Abilene","Akron","Alafaya","Alameda","Albany","Albuquerque","Alexandria","Alhambra","Aliso Viejo","Allen","Allentown","Aloha","Alpharetta","Altadena","Altamonte Springs","Altoona","Amarillo","Ames","Anaheim","Anchorage","Anderson","Ankeny","Ann Arbor","Annandale","Antelope","Antioch","Apex","Apopka","Apple Valley","Appleton","Arcadia","Arden-Arcade","Arecibo","Arlington","Arlington Heights","Arvada","Ashburn","Asheville","Aspen Hill","Atascocita","Athens-Clarke County","Atlanta","Attleboro","Auburn","Augusta-Richmond County","Aurora","Austin","Avondale","Azusa","Bakersfield","Baldwin Park","Baltimore","Barnstable Town","Bartlett","Baton Rouge","Battle Creek","Bayamon","Bayonne","Baytown","Beaumont","Beavercreek","Beaverton","Bedford","Bel Air South","Bell Gardens","Belleville","Bellevue","Bellflower","Bellingham","Bend","Bentonville","Berkeley","Berwyn","Bethesda","Bethlehem","Billings","Biloxi","Binghamton","Birmingham","Bismarck","Blacksburg","Blaine","Bloomington","Blue Springs","Boca Raton","Boise City","Bolingbrook","Bonita Springs","Bossier City","Boston","Bothell","Boulder","Bountiful","Bowie","Bowling Green","Boynton Beach","Bozeman","Bradenton","Brandon","Brentwood","Bridgeport","Bristol","Brockton","Broken Arrow","Brookhaven","Brookline","Brooklyn Park","Broomfield","Brownsville","Bryan","Buckeye","Buena Park","Buffalo","Buffalo Grove","Burbank","Burien","Burke","Burleson","Burlington","Burnsville","Caguas","Caldwell","Camarillo","Cambridge","Camden","Canton","Cape Coral","Carlsbad","Carmel","Carmichael","Carolina","Carrollton","Carson","Carson City","Cary","Casa Grande","Casas Adobes","Casper","Castle Rock","Castro Valley","Catalina Foothills","Cathedral City","Catonsville","Cedar Hill","Cedar Park","Cedar Rapids","Centennial","Centreville","Ceres","Cerritos","Champaign","Chandler","Chapel Hill","Charleston","Charlotte","Charlottesville","Chattanooga","Cheektowaga","Chesapeake","Chesterfield","Cheyenne","Chicago","Chico","Chicopee","Chino","Chino Hills","Chula Vista","Cicero","Cincinnati","Citrus Heights","Clarksville","Clearwater","Cleveland","Cleveland Heights","Clifton","Clovis","Coachella","Coconut Creek","Coeur d'Alene","College Station","Collierville","Colorado Springs","Colton","Columbia","Columbus","Commerce City","Compton","Concord","Conroe","Conway","Coon Rapids","Coral Gables","Coral Springs","Corona","Corpus Christi","Corvallis","Costa Mesa","Council Bluffs","Country Club","Covina","Cranston","Cupertino","Cutler Bay","Cuyahoga Falls","Cypress","Dale City","Dallas","Daly City","Danbury","Danville","Davenport","Davie","Davis","Dayton","Daytona Beach","DeKalb","DeSoto","Dearborn","Dearborn Heights","Decatur","Deerfield Beach","Delano","Delray Beach","Deltona","Denton","Denver","Des Moines","Des Plaines","Detroit","Diamond Bar","Doral","Dothan","Downers Grove","Downey","Draper","Dublin","Dubuque","Duluth","Dundalk","Dunwoody","Durham","Eagan","East Hartford","East Honolulu","East Lansing","East Los Angeles","East Orange","East Providence","Eastvale","Eau Claire","Eden Prairie","Edina","Edinburg","Edmond","El Cajon","El Centro","El Dorado Hills","El Monte","El Paso","Elgin","Elizabeth","Elk Grove","Elkhart","Ellicott City","Elmhurst","Elyria","Encinitas","Enid","Enterprise","Erie","Escondido","Euclid","Eugene","Euless","Evanston","Evansville","Everett","Fairfield","Fall River","Fargo","Farmington","Farmington Hills","Fayetteville","Federal Way","Findlay","Fishers","Flagstaff","Flint","Florence-Graham","Florin","Florissant","Flower Mound","Folsom","Fond du Lac","Fontana","Fort Collins","Fort Lauderdale","Fort Myers","Fort Pierce","Fort Smith","Fort Wayne","Fort Worth","Fountain Valley","Fountainebleau","Framingham","Franklin","Frederick","Freeport","Fremont","Fresno","Frisco","Fullerton","Gainesville","Gaithersburg","Galveston","Garden Grove","Gardena","Garland","Gary","Gastonia","Georgetown","Germantown","Gilbert","Gilroy","Glen Burnie","Glendale","Glendora","Glenview","Goodyear","Grand Forks","Grand Island","Grand Junction","Grand Prairie","Grand Rapids","Grapevine","Great Falls","Greeley","Green Bay","Greensboro","Greenville","Greenwood","Gresham","Guaynabo","Gulfport","Hacienda Heights","Hackensack","Haltom City","Hamilton","Hammond","Hampton","Hanford","Harlingen","Harrisburg","Harrisonburg","Hartford","Hattiesburg","Haverhill","Hawthorne","Hayward","Hemet","Hempstead","Henderson","Hendersonville","Hesperia","Hialeah","Hicksville","High Point","Highland","Highlands Ranch","Hillsboro","Hilo","Hoboken","Hoffman Estates","Hollywood","Homestead","Honolulu","Hoover","Houston","Huntersville","Huntington","Huntington Beach","Huntington Park","Huntsville","Hutchinson","Idaho Falls","Independence","Indianapolis","Indio","Inglewood","Iowa City","Irondequoit","Irvine","Irving","Jackson","Jacksonville","Janesville","Jefferson City","Jeffersonville","Jersey City","Johns Creek","Johnson City","Joliet","Jonesboro","Joplin","Jupiter","Jurupa Valley","Kalamazoo","Kannapolis","Kansas City","Kearny","Keller","Kendale Lakes","Kendall","Kenner","Kennewick","Kenosha","Kent","Kentwood","Kettering","Killeen","Kingsport","Kirkland","Kissimmee","Knoxville","Kokomo","La Crosse","La Habra","La Mesa","La Mirada","Lacey","Lafayette","Laguna Niguel","Lake Charles","Lake Elsinore","Lake Forest","Lake Havasu City","Lake Ridge","Lakeland","Lakeville","Lakewood","Lancaster","Lansing","Laredo","Largo","Las Cruces","Las Vegas","Lauderhill","Lawrence","Lawton","Layton","League City","Lee's Summit","Leesburg","Lehi","Lehigh Acres","Lenexa","Levittown","Lewisville","Lexington-Fayette","Lincoln","Linden","Little Rock","Littleton","Livermore","Livonia","Lodi","Logan","Lombard","Lompoc","Long Beach","Longmont","Longview","Lorain","Los Angeles","Louisville/Jefferson County","Loveland","Lowell","Lubbock","Lynchburg","Lynn","Lynwood","Macon-Bibb County","Madera","Madison","Malden","Manchester","Manhattan","Mansfield","Manteca","Maple Grove","Margate","Maricopa","Marietta","Marysville","Mayaguez","McAllen","McKinney","McLean","Medford","Melbourne","Memphis","Menifee","Mentor","Merced","Meriden","Meridian","Mesa","Mesquite","Metairie","Methuen Town","Miami","Miami Beach","Miami Gardens","Middletown","Midland","Midwest City","Milford","Millcreek","Milpitas","Milwaukee","Minneapolis","Minnetonka","Minot","Miramar","Mishawaka","Mission","Mission Viejo","Missoula","Missouri City","Mobile","Modesto","Moline","Monroe","Montebello","Monterey Park","Montgomery","Moore","Moreno Valley","Morgan Hill","Mount Pleasant","Mount Prospect","Mount Vernon","Mountain View","Muncie","Murfreesboro","Murray","Murrieta","Nampa","Napa","Naperville","Nashua","Nashville-Davidson","National City","New Bedford","New Braunfels","New Britain","New Brunswick","New Haven","New Orleans","New Rochelle","New York","Newark","Newport Beach","Newport News","Newton","Niagara Falls","Noblesville","Norfolk","Normal","Norman","North Bethesda","North Charleston","North Highlands","North Las Vegas","North Lauderdale","North Little Rock","North Miami","North Miami Beach","North Port","North Richland Hills","Norwalk","Novato","Novi","O'Fallon","Oak Lawn","Oak Park","Oakland","Oakland Park","Ocala","Oceanside","Odessa","Ogden","Oklahoma City","Olathe","Olympia","Omaha","Ontario","Orange","Orem","Orland Park","Orlando","Oro Valley","Oshkosh","Overland Park","Owensboro","Oxnard","Palatine","Palm Bay","Palm Beach Gardens","Palm Coast","Palm Desert","Palm Harbor","Palm Springs","Palmdale","Palo Alto","Paradise","Paramount","Parker","Parma","Pasadena","Pasco","Passaic","Paterson","Pawtucket","Peabody","Pearl City","Pearland","Pembroke Pines","Pensacola","Peoria","Perris","Perth Amboy","Petaluma","Pflugerville","Pharr","Philadelphia","Phoenix","Pico Rivera","Pine Bluff","Pine Hills","Pinellas Park","Pittsburg","Pittsburgh","Pittsfield","Placentia","Plainfield","Plano","Plantation","Pleasanton","Plymouth","Pocatello","Poinciana","Pomona","Pompano Beach","Ponce","Pontiac","Port Arthur","Port Charlotte","Port Orange","Port St. Lucie","Portage","Porterville","Portland","Portsmouth","Potomac","Poway","Providence","Provo","Pueblo","Quincy","Racine","Raleigh","Rancho Cordova","Rancho Cucamonga","Rancho Palos Verdes","Rancho Santa Margarita","Rapid City","Reading","Redding","Redlands","Redmond","Redondo Beach","Redwood City","Reno","Renton","Reston","Revere","Rialto","Richardson","Richland","Richmond","Rio Rancho","Riverside","Riverton","Riverview","Roanoke","Rochester","Rochester Hills","Rock Hill","Rockford","Rocklin","Rockville","Rockwall","Rocky Mount","Rogers","Rohnert Park","Rosemead","Roseville","Roswell","Round Rock","Rowland Heights","Rowlett","Royal Oak","Sacramento","Saginaw","Salem","Salina","Salinas","Salt Lake City","Sammamish","San Angelo","San Antonio","San Bernardino","San Bruno","San Buenaventura (Ventura)","San Clemente","San Diego","San Francisco","San Jacinto","San Jose","San Juan","San Leandro","San Luis Obispo","San Marcos","San Mateo","San Rafael","San Ramon","San Tan Valley","Sandy","Sandy Springs","Sanford","Santa Ana","Santa Barbara","Santa Clara","Santa Clarita","Santa Cruz","Santa Fe","Santa Maria","Santa Monica","Santa Rosa","Santee","Sarasota","Savannah","Sayreville","Schaumburg","Schenectady","Scottsdale","Scranton","Seattle","Severn","Shawnee","Sheboygan","Shoreline","Shreveport","Sierra Vista","Silver Spring","Simi Valley","Sioux City","Sioux Falls","Skokie","Smyrna","Somerville","South Bend","South Gate","South Hill","South Jordan","South San Francisco","South Valley","South Whittier","Southaven","Southfield","Sparks","Spokane","Spokane Valley","Spring","Spring Hill","Spring Valley","Springdale","Springfield","St. Charles","St. Clair Shores","St. Cloud","St. George","St. Joseph","St. Louis","St. Louis Park","St. Paul","St. Peters","St. Petersburg","Stamford","State College","Sterling Heights","Stillwater","Stockton","Stratford","Strongsville","Suffolk","Sugar Land","Summerville","Sunnyvale","Sunrise","Sunrise Manor","Surprise","Syracuse","Tacoma","Tallahassee","Tamarac","Tamiami","Tampa","Taunton","Taylor","Taylorsville","Temecula","Tempe","Temple","Terre Haute","Texas City","The Hammocks","The Villages","The Woodlands","Thornton","Thousand Oaks","Tigard","Tinley Park","Titusville","Toledo","Toms River","Tonawanda","Topeka","Torrance","Town 'n' Country","Towson","Tracy","Trenton","Troy","Trujillo Alto","Tuckahoe","Tucson","Tulare","Tulsa","Turlock","Tuscaloosa","Tustin","Twin Falls","Tyler","Union City","University","Upland","Urbana","Urbandale","Utica","Vacaville","Valdosta","Vallejo","Vancouver","Victoria","Victorville","Vineland","Virginia Beach","Visalia","Vista","Waco","Waipahu","Waldorf","Walnut Creek","Waltham","Warner Robins","Warren","Warwick","Washington","Waterbury","Waterloo","Watsonville","Waukegan","Waukesha","Wauwatosa","Wellington","Wesley Chapel","West Allis","West Babylon","West Covina","West Des Moines","West Hartford","West Haven","West Jordan","West Lafayette","West New York","West Palm Beach","West Sacramento","West Seneca","West Valley City","Westfield","Westland","Westminster","Weston","Weymouth Town","Wheaton","White Plains","Whittier","Wichita","Wichita Falls","Wilmington","Wilson","Winston-Salem","Woodbury","Woodland","Worcester","Wylie","Wyoming","Yakima","Yonkers","Yorba Linda","York","Youngstown","Yuba City","Yucaipa","Yuma"];var Me$1=["{{location.city_prefix}} {{person.first_name.generic}}{{location.city_suffix}}","{{location.city_prefix}} {{person.first_name.generic}}","{{person.first_name.generic}}{{location.city_suffix}}","{{person.last_name.generic}}{{location.city_suffix}}","{{location.city_name}}"];var Te$1=["North","East","West","South","New","Lake","Port","Fort"];var Le$1=["town","ton","land","ville","berg","burgh","boro","borough","bury","view","port","mouth","stad","stead","furt","chester","cester","fort","field","haven","side","shire","worth"];var De$1=["Afghanistan","Aland Islands","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bonaire, Sint Eustatius and Saba","Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory (Chagos Archipelago)","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo","Cook Islands","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Curacao","Cyprus","Czechia","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Faroe Islands","Falkland Islands (Malvinas)","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Holy See (Vatican City State)","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Democratic People's Republic of Korea","Republic of Korea","Kuwait","Kyrgyz Republic","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macao","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saint Barthelemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard & Jan Mayen Islands","Sweden","Switzerland","Syrian Arab Republic","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Virgin Islands, British","Virgin Islands, U.S.","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"];var Re$1=["Adams County","Calhoun County","Carroll County","Clark County","Clay County","Crawford County","Douglas County","Fayette County","Franklin County","Grant County","Greene County","Hamilton County","Hancock County","Henry County","Jackson County","Jefferson County","Johnson County","Lake County","Lawrence County","Lee County","Lincoln County","Logan County","Madison County","Marion County","Marshall County","Monroe County","Montgomery County","Morgan County","Perry County","Pike County","Polk County","Scott County","Union County","Warren County","Washington County","Wayne County","Avon","Bedfordshire","Berkshire","Borders","Buckinghamshire","Cambridgeshire","Central","Cheshire","Cleveland","Clwyd","Cornwall","County Antrim","County Armagh","County Down","County Fermanagh","County Londonderry","County Tyrone","Cumbria","Derbyshire","Devon","Dorset","Dumfries and Galloway","Durham","Dyfed","East Sussex","Essex","Fife","Gloucestershire","Grampian","Greater Manchester","Gwent","Gwynedd County","Hampshire","Herefordshire","Hertfordshire","Highlands and Islands","Humberside","Isle of Wight","Kent","Lancashire","Leicestershire","Lincolnshire","Lothian","Merseyside","Mid Glamorgan","Norfolk","North Yorkshire","Northamptonshire","Northumberland","Nottinghamshire","Oxfordshire","Powys","Rutland","Shropshire","Somerset","South Glamorgan","South Yorkshire","Staffordshire","Strathclyde","Suffolk","Surrey","Tayside","Tyne and Wear","Warwickshire","West Glamorgan","West Midlands","West Sussex","West Yorkshire","Wiltshire","Worcestershire"];var He$1={cardinal:["North","East","South","West"],cardinal_abbr:["N","E","S","W"],ordinal:["Northeast","Northwest","Southeast","Southwest"],ordinal_abbr:["NE","NW","SE","SW"]};var Pe$1=["#####","#####-####"];var We$1=["Apt. ###","Suite ###"];var Ge$1=["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"];var Ne$1=["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"];var Ee$1={normal:"{{location.buildingNumber}} {{location.street}}",full:"{{location.buildingNumber}} {{location.street}} {{location.secondaryAddress}}"};var Fe$1=["10th Street","11th Street","12th Street","13th Street","14th Street","15th Street","16th Street","1st Avenue","1st Street","2nd Avenue","2nd Street","3rd Avenue","3rd Street","4th Avenue","4th Street","5th Avenue","5th Street","6th Avenue","6th Street","7th Avenue","7th Street","8th Avenue","8th Street","9th Street","A Street","Abbey Road","Adams Avenue","Adams Street","Airport Road","Albany Road","Albert Road","Albion Street","Alexandra Road","Alfred Street","Alma Street","Ash Close","Ash Grove","Ash Road","Ash Street","Aspen Close","Atlantic Avenue","Avenue Road","Back Lane","Baker Street","Balmoral Road","Barn Close","Barton Road","Bath Road","Bath Street","Bay Street","Beach Road","Bedford Road","Beech Close","Beech Drive","Beech Grove","Beech Road","Beechwood Avenue","Bell Lane","Belmont Road","Birch Avenue","Birch Close","Birch Grove","Birch Road","Blind Lane","Bluebell Close","Boundary Road","Bramble Close","Bramley Close","Bridge Road","Bridge Street","Broad Lane","Broad Street","Broadway","Broadway Avenue","Broadway Street","Brook Lane","Brook Road","Brook Street","Brookside","Buckingham Road","Cambridge Street","Canal Street","Castle Close","Castle Lane","Castle Road","Castle Street","Cavendish Road","Cedar Avenue","Cedar Close","Cedar Grove","Cedar Road","Cedar Street","Cemetery Road","Center Avenue","Center Road","Center Street","Central Avenue","Central Street","Chapel Close","Chapel Hill","Chapel Road","Chapel Street","Charles Street","Cherry Close","Cherry Street","Cherry Tree Close","Chester Road","Chestnut Close","Chestnut Drive","Chestnut Grove","Chestnut Street","Church Avenue","Church Close","Church Hill","Church Lane","Church Path","Church Road","Church Street","Church View","Church Walk","Claremont Road","Clarence Road","Clarence Street","Clarendon Road","Clark Street","Clay Lane","Cleveland Street","Cliff Road","Clifton Road","Clinton Street","College Avenue","College Street","Columbia Avenue","Commerce Street","Commercial Road","Commercial Street","Common Lane","Coronation Avenue","Coronation Road","County Line Road","County Road","Court Street","Cow Lane","Crescent Road","Cromwell Road","Cross Lane","Cross Street","Crown Street","Cumberland Street","Dale Street","Dark Lane","Davis Street","Depot Street","Derby Road","Derwent Close","Devonshire Road","Division Street","Douglas Road","Duke Street","E 10th Street","E 11th Street","E 12th Street","E 14th Street","E 1st Street","E 2nd Street","E 3rd Street","E 4th Avenue","E 4th Street","E 5th Street","E 6th Avenue","E 6th Street","E 7th Street","E 8th Street","E 9th Street","E Bridge Street","E Broad Street","E Broadway","E Broadway Street","E Cedar Street","E Center Street","E Central Avenue","E Church Street","E Elm Street","E Franklin Street","E Front Street","E Grand Avenue","E High Street","E Jackson Street","E Jefferson Street","E Main","E Main Street","E Maple Street","E Market Street","E North Street","E Oak Street","E Park Avenue","E Pine Street","E River Road","E South Street","E State Street","E Union Street","E Walnut Street","E Washington Avenue","E Washington Street","E Water Street","East Avenue","East Road","East Street","Edward Street","Elm Close","Elm Grove","Elm Road","Elm Street","Euclid Avenue","Fairfield Road","Farm Close","Ferry Road","Field Close","Field Lane","First Avenue","First Street","Fore Street","Forest Avenue","Forest Road","Fourth Avenue","Franklin Avenue","Franklin Road","Franklin Street","Front Street","Frontage Road","Garden Close","Garden Street","George Street","Gladstone Road","Glebe Close","Gloucester Road","Gordon Road","Gordon Street","Grand Avenue","Grange Avenue","Grange Close","Grange Road","Grant Street","Green Close","Green Lane","Green Street","Greenville Road","Greenway","Greenwood Road","Grove Lane","Grove Road","Grove Street","Hall Lane","Hall Street","Harrison Avenue","Harrison Street","Hawthorn Avenue","Hawthorn Close","Hazel Close","Hazel Grove","Heath Road","Heather Close","Henry Street","Heron Close","Hickory Street","High Road","High Street","Highfield Avenue","Highfield Close","Highfield Road","Highland Avenue","Hill Road","Hill Street","Hillside","Hillside Avenue","Hillside Close","Hillside Road","Holly Close","Honeysuckle Close","Howard Road","Howard Street","Jackson Avenue","Jackson Street","James Street","Jefferson Avenue","Jefferson Street","Johnson Street","Jubilee Close","Juniper Close","Kent Road","Kestrel Close","King Street","King's Road","Kingfisher Close","Kings Highway","Kingsway","Laburnum Grove","Lafayette Street","Lake Avenue","Lake Drive","Lake Road","Lake Street","Lancaster Road","Lansdowne Road","Larch Close","Laurel Close","Lawrence Street","Lee Street","Liberty Street","Lime Grove","Lincoln Avenue","Lincoln Highway","Lincoln Road","Lincoln Street","Locust Street","Lodge Close","Lodge Lane","London Road","Long Lane","Low Road","Madison Avenue","Madison Street","Main","Main Avenue","Main Road","Main Street","Main Street E","Main Street N","Main Street S","Main Street W","Manchester Road","Manor Close","Manor Drive","Manor Gardens","Manor Road","Manor Way","Maple Avenue","Maple Close","Maple Drive","Maple Road","Maple Street","Market Place","Market Square","Market Street","Marlborough Road","Marsh Lane","Martin Luther King Boulevard","Martin Luther King Drive","Martin Luther King Jr Boulevard","Mary Street","Mayfield Road","Meadow Close","Meadow Drive","Meadow Lane","Meadow View","Meadow Way","Memorial Drive","Middle Street","Mill Close","Mill Lane","Mill Road","Mill Street","Milton Road","Milton Street","Monroe Street","Moor Lane","Moss Lane","Mount Pleasant","Mount Street","Mulberry Street","N 1st Street","N 2nd Street","N 3rd Street","N 4th Street","N 5th Street","N 6th Street","N 7th Street","N 8th Street","N 9th Street","N Bridge Street","N Broad Street","N Broadway","N Broadway Street","N Cedar Street","N Center Street","N Central Avenue","N Chestnut Street","N Church Street","N College Street","N Court Street","N Division Street","N East Street","N Elm Street","N Franklin Street","N Front Street","N Harrison Street","N High Street","N Jackson Street","N Jefferson Street","N Lincoln Street","N Locust Street","N Main","N Main Avenue","N Main Street","N Maple Street","N Market Street","N Monroe Street","N Oak Street","N Park Street","N Pearl Street","N Pine Street","N Poplar Street","N Railroad Street","N State Street","N Union Street","N Walnut Street","N Washington Avenue","N Washington Street","N Water Street","Nelson Road","Nelson Street","New Lane","New Road","New Street","Newton Road","Nightingale Close","Norfolk Road","North Avenue","North Lane","North Road","North Street","Northfield Road","Oak Avenue","Oak Drive","Oak Lane","Oak Road","Oak Street","Oakfield Road","Oaklands","Old Lane","Old Military Road","Old Road","Old State Road","Orchard Drive","Orchard Lane","Orchard Road","Orchard Street","Oxford Road","Oxford Street","Park Avenue","Park Crescent","Park Drive","Park Lane","Park Place","Park Road","Park Street","Park View","Parkside","Pearl Street","Pennsylvania Avenue","Pine Close","Pine Grove","Pine Street","Pinfold Lane","Pleasant Street","Poplar Avenue","Poplar Close","Poplar Road","Poplar Street","Post Road","Pound Lane","Princes Street","Princess Street","Priory Close","Priory Road","Prospect Avenue","Prospect Place","Prospect Road","Prospect Street","Quarry Lane","Quarry Road","Queen's Road","Railroad Avenue","Railroad Street","Railway Street","Rectory Close","Rectory Lane","Richmond Close","Richmond Road","Ridge Road","River Road","River Street","Riverside","Riverside Avenue","Riverside Drive","Roman Road","Roman Way","Rowan Close","Russell Street","S 10th Street","S 14th Street","S 1st Avenue","S 1st Street","S 2nd Street","S 3rd Street","S 4th Street","S 5th Street","S 6th Street","S 7th Street","S 8th Street","S 9th Street","S Bridge Street","S Broad Street","S Broadway","S Broadway Street","S Center Street","S Central Avenue","S Chestnut Street","S Church Street","S College Street","S Division Street","S East Street","S Elm Street","S Franklin Street","S Front Street","S Grand Avenue","S High Street","S Jackson Street","S Jefferson Street","S Lincoln Street","S Main","S Main Avenue","S Main Street","S Maple Street","S Market Street","S Mill Street","S Monroe Street","S Oak Street","S Park Street","S Pine Street","S Railroad Street","S State Street","S Union Street","S Walnut Street","S Washington Avenue","S Washington Street","S Water Street","S West Street","Salisbury Road","Sandringham Road","Sandy Lane","School Close","School Lane","School Road","School Street","Second Avenue","Silver Street","Skyline Drive","Smith Street","Somerset Road","South Avenue","South Drive","South Road","South Street","South View","Spring Gardens","Spring Street","Springfield Close","Springfield Road","Spruce Street","St Andrew's Road","St Andrews Close","St George's Road","St John's Road","St Mary's Close","St Mary's Road","Stanley Road","Stanley Street","State Avenue","State Line Road","State Road","State Street","Station Road","Station Street","Stoney Lane","Sycamore Avenue","Sycamore Close","Sycamore Drive","Sycamore Street","Talbot Road","Tennyson Road","The Avenue","The Beeches","The Causeway","The Chase","The Coppice","The Copse","The Crescent","The Croft","The Dell","The Drive","The Fairway","The Glebe","The Grange","The Green","The Grove","The Hawthorns","The Lane","The Laurels","The Limes","The Maltings","The Meadows","The Mews","The Mount","The Oaks","The Orchard","The Oval","The Paddock","The Paddocks","The Poplars","The Ridgeway","The Ridings","The Rise","The Sidings","The Spinney","The Square","The Willows","The Woodlands","Third Avenue","Third Street","Tower Road","Trinity Road","Tudor Close","Union Avenue","Union Street","University Avenue","University Drive","Valley Road","Veterans Memorial Drive","Veterans Memorial Highway","Vicarage Close","Vicarage Lane","Vicarage Road","Victoria Place","Victoria Road","Victoria Street","Vine Street","W 10th Street","W 11th Street","W 12th Street","W 14th Street","W 1st Street","W 2nd Street","W 3rd Street","W 4th Avenue","W 4th Street","W 5th Street","W 6th Avenue","W 6th Street","W 7th Street","W 8th Street","W 9th Street","W Bridge Street","W Broad Street","W Broadway","W Broadway Avenue","W Broadway Street","W Center Street","W Central Avenue","W Chestnut Street","W Church Street","W Division Street","W Elm Street","W Franklin Street","W Front Street","W Grand Avenue","W High Street","W Jackson Street","W Jefferson Street","W Lake Street","W Main","W Main Street","W Maple Street","W Market Street","W Monroe Street","W North Street","W Oak Street","W Park Street","W Pine Street","W River Road","W South Street","W State Street","W Union Street","W Walnut Street","W Washington Avenue","W Washington Street","Walnut Close","Walnut Street","Warren Close","Warren Road","Washington Avenue","Washington Boulevard","Washington Road","Washington Street","Water Lane","Water Street","Waterloo Road","Waterside","Watery Lane","Waverley Road","Well Lane","Wellington Road","Wellington Street","West Avenue","West End","West Lane","West Road","West Street","West View","Western Avenue","Western Road","Westfield Road","Westgate","William Street","Willow Close","Willow Drive","Willow Grove","Willow Road","Willow Street","Windermere Road","Windmill Close","Windmill Lane","Windsor Avenue","Windsor Close","Windsor Drive","Wood Lane","Wood Street","Woodland Close","Woodland Road","Woodlands","Woodlands Avenue","Woodlands Close","Woodlands Road","Woodside","Woodside Road","Wren Close","Yew Tree Close","York Road","York Street"];var Je$1=["{{person.first_name.generic}} {{location.street_suffix}}","{{person.last_name.generic}} {{location.street_suffix}}","{{location.street_name}}"];var Ie$1=["Alley","Avenue","Branch","Bridge","Brook","Brooks","Burg","Burgs","Bypass","Camp","Canyon","Cape","Causeway","Center","Centers","Circle","Circles","Cliff","Cliffs","Club","Common","Corner","Corners","Course","Court","Courts","Cove","Coves","Creek","Crescent","Crest","Crossing","Crossroad","Curve","Dale","Dam","Divide","Drive","Drives","Estate","Estates","Expressway","Extension","Extensions","Fall","Falls","Ferry","Field","Fields","Flat","Flats","Ford","Fords","Forest","Forge","Forges","Fork","Forks","Fort","Freeway","Garden","Gardens","Gateway","Glen","Glens","Green","Greens","Grove","Groves","Harbor","Harbors","Haven","Heights","Highway","Hill","Hills","Hollow","Inlet","Island","Islands","Isle","Junction","Junctions","Key","Keys","Knoll","Knolls","Lake","Lakes","Land","Landing","Lane","Light","Lights","Loaf","Lock","Locks","Lodge","Loop","Mall","Manor","Manors","Meadow","Meadows","Mews","Mill","Mills","Mission","Motorway","Mount","Mountain","Mountains","Neck","Orchard","Oval","Overpass","Park","Parks","Parkway","Parkways","Pass","Passage","Path","Pike","Pine","Pines","Place","Plain","Plains","Plaza","Point","Points","Port","Ports","Prairie","Radial","Ramp","Ranch","Rapid","Rapids","Rest","Ridge","Ridges","River","Road","Roads","Route","Row","Rue","Run","Shoal","Shoals","Shore","Shores","Skyway","Spring","Springs","Spur","Spurs","Square","Squares","Station","Stravenue","Stream","Street","Streets","Summit","Terrace","Throughway","Trace","Track","Trafficway","Trail","Tunnel","Turnpike","Underpass","Union","Unions","Valley","Valleys","Via","Viaduct","View","Views","Village","Villages","Ville","Vista","Walk","Walks","Wall","Way","Ways","Well","Wells"];var Xa={building_number:Be$1,city_name:we$1,city_pattern:Me$1,city_prefix:Te$1,city_suffix:Le$1,country:De$1,county:Re$1,direction:He$1,postcode:Pe$1,secondary_address:We$1,state:Ge$1,state_abbr:Ne$1,street_address:Ee$1,street_name:Fe$1,street_pattern:Je$1,street_suffix:Ie$1},Ke$1=Xa;var Oe$1=["a","ab","abbas","abduco","abeo","abscido","absconditus","absens","absorbeo","absque","abstergo","absum","abundans","abutor","accedo","accendo","acceptus","accommodo","accusamus","accusantium","accusator","acer","acerbitas","acervus","acidus","acies","acquiro","acsi","ad","adamo","adaugeo","addo","adduco","ademptio","adeo","adeptio","adfectus","adfero","adficio","adflicto","adhaero","adhuc","adicio","adimpleo","adinventitias","adipisci","adipiscor","adiuvo","administratio","admiratio","admitto","admoneo","admoveo","adnuo","adopto","adsidue","adstringo","adsuesco","adsum","adulatio","adulescens","aduro","advenio","adversus","advoco","aedificium","aeger","aegre","aegrotatio","aegrus","aeneus","aequitas","aequus","aer","aestas","aestivus","aestus","aetas","aeternus","ager","aggero","aggredior","agnitio","agnosco","ago","ait","aiunt","alias","alienus","alii","alioqui","aliqua","aliquam","aliquid","alius","allatus","alo","alter","altus","alveus","amaritudo","ambitus","ambulo","amet","amicitia","amiculum","amissio","amita","amitto","amo","amor","amoveo","amplexus","amplitudo","amplus","ancilla","angelus","angulus","angustus","animadverto","animi","animus","annus","anser","ante","antea","antepono","antiquus","aperiam","aperio","aperte","apostolus","apparatus","appello","appono","appositus","approbo","apto","aptus","apud","aqua","ara","aranea","arbitro","arbor","arbustum","arca","arceo","arcesso","architecto","arcus","argentum","argumentum","arguo","arma","armarium","aro","ars","articulus","artificiose","arto","arx","ascisco","ascit","asper","asperiores","aspernatur","aspicio","asporto","assentator","assumenda","astrum","at","atavus","ater","atque","atqui","atrocitas","atrox","attero","attollo","attonbitus","auctor","auctus","audacia","audax","audentia","audeo","audio","auditor","aufero","aureus","aurum","aut","autem","autus","auxilium","avaritia","avarus","aveho","averto","baiulus","balbus","barba","bardus","basium","beatae","beatus","bellicus","bellum","bene","beneficium","benevolentia","benigne","bestia","bibo","bis","blandior","blanditiis","bonus","bos","brevis","cado","caecus","caelestis","caelum","calamitas","calcar","calco","calculus","callide","campana","candidus","canis","canonicus","canto","capillus","capio","capitulus","capto","caput","carbo","carcer","careo","caries","cariosus","caritas","carmen","carpo","carus","casso","caste","casus","catena","caterva","cattus","cauda","causa","caute","caveo","cavus","cedo","celebrer","celer","celo","cena","cenaculum","ceno","censura","centum","cerno","cernuus","certe","certus","cervus","cetera","charisma","chirographum","cibo","cibus","cicuta","cilicium","cimentarius","ciminatio","cinis","circumvenio","cito","civis","civitas","clam","clamo","claro","clarus","claudeo","claustrum","clementia","clibanus","coadunatio","coaegresco","coepi","coerceo","cogito","cognatus","cognomen","cogo","cohaero","cohibeo","cohors","colligo","collum","colo","color","coma","combibo","comburo","comedo","comes","cometes","comis","comitatus","commemoro","comminor","commodi","commodo","communis","comparo","compello","complectus","compono","comprehendo","comptus","conatus","concedo","concido","conculco","condico","conduco","confero","confido","conforto","confugo","congregatio","conicio","coniecto","conitor","coniuratio","conor","conqueror","conscendo","consectetur","consequatur","consequuntur","conservo","considero","conspergo","constans","consuasor","contabesco","contego","contigo","contra","conturbo","conventus","convoco","copia","copiose","cornu","corona","corporis","corpus","correptius","corrigo","corroboro","corrumpo","corrupti","coruscus","cotidie","crapula","cras","crastinus","creator","creber","crebro","credo","creo","creptio","crepusculum","cresco","creta","cribro","crinis","cruciamentum","crudelis","cruentus","crur","crustulum","crux","cubicularis","cubitum","cubo","cui","cuius","culpa","culpo","cultellus","cultura","cum","cumque","cunabula","cunae","cunctatio","cupiditas","cupiditate","cupio","cuppedia","cupressus","cur","cura","curatio","curia","curiositas","curis","curo","curriculum","currus","cursim","curso","cursus","curto","curtus","curvo","custodia","damnatio","damno","dapifer","debeo","debilito","debitis","decens","decerno","decet","decimus","decipio","decor","decretum","decumbo","dedecor","dedico","deduco","defaeco","defendo","defero","defessus","defetiscor","deficio","defleo","defluo","defungo","degenero","degero","degusto","deinde","delectatio","delectus","delego","deleniti","deleo","delibero","delicate","delinquo","deludo","demens","demergo","demitto","demo","demonstro","demoror","demulceo","demum","denego","denique","dens","denuncio","denuo","deorsum","depereo","depono","depopulo","deporto","depraedor","deprecator","deprimo","depromo","depulso","deputo","derelinquo","derideo","deripio","deserunt","desidero","desino","desipio","desolo","desparatus","despecto","dicta","dignissimos","distinctio","dolor","dolore","dolorem","doloremque","dolores","doloribus","dolorum","ducimus","ea","eaque","earum","eius","eligendi","enim","eos","error","esse","est","et","eum","eveniet","ex","excepturi","exercitationem","expedita","explicabo","facere","facilis","fuga","fugiat","fugit","harum","hic","id","illo","illum","impedit","in","incidunt","infit","inflammatio","inventore","ipsa","ipsam","ipsum","iste","itaque","iure","iusto","labore","laboriosam","laborum","laudantium","libero","magnam","magni","maiores","maxime","minima","minus","modi","molestiae","molestias","mollitia","nam","natus","necessitatibus","nemo","neque","nesciunt","nihil","nisi","nobis","non","nostrum","nulla","numquam","occaecati","ocer","odio","odit","officia","officiis","omnis","optio","paens","pariatur","patior","patria","patrocinor","patruus","pauci","paulatim","pauper","pax","peccatus","pecco","pecto","pectus","pecus","peior","pel","perferendis","perspiciatis","placeat","porro","possimus","praesentium","provident","quae","quaerat","quam","quas","quasi","qui","quia","quibusdam","quidem","quis","quisquam","quo","quod","quos","ratione","recusandae","reiciendis","rem","repellat","repellendus","reprehenderit","repudiandae","rerum","saepe","sapiente","sed","sequi","similique","sint","sit","socius","sodalitas","sol","soleo","solio","solitudo","solium","sollers","sollicito","solum","solus","soluta","solutio","solvo","somniculosus","somnus","sonitus","sono","sophismata","sopor","sordeo","sortitus","spargo","speciosus","spectaculum","speculum","sperno","spero","spes","spiculum","spiritus","spoliatio","sponte","stabilis","statim","statua","stella","stillicidium","stipes","stips","sto","strenuus","strues","studio","stultus","suadeo","suasoria","sub","subito","subiungo","sublime","subnecto","subseco","substantia","subvenio","succedo","succurro","sufficio","suffoco","suffragium","suggero","sui","sulum","sum","summa","summisse","summopere","sumo","sumptus","sunt","supellex","super","suppellex","supplanto","suppono","supra","surculus","surgo","sursum","suscipio","suscipit","suspendo","sustineo","suus","synagoga","tabella","tabernus","tabesco","tabgo","tabula","taceo","tactus","taedium","talio","talis","talus","tam","tamdiu","tamen","tametsi","tamisium","tamquam","tandem","tantillus","tantum","tardus","tego","temeritas","temperantia","templum","tempora","tempore","temporibus","temptatio","tempus","tenax","tendo","teneo","tener","tenetur","tenuis","tenus","tepesco","tepidus","ter","terebro","teres","terga","tergeo","tergiversatio","tergo","tergum","termes","terminatio","tero","terra","terreo","territo","terror","tersus","tertius","testimonium","texo","textilis","textor","textus","thalassinus","theatrum","theca","thema","theologus","thermae","thesaurus","thesis","thorax","thymbra","thymum","tibi","timidus","timor","titulus","tolero","tollo","tondeo","tonsor","torqueo","torrens","tot","totam","totidem","toties","totus","tracto","trado","traho","trans","tredecim","tremo","trepide","tres","tribuo","tricesimus","triduana","tripudio","tristis","triumphus","trucido","truculenter","tubineus","tui","tum","tumultus","tunc","turba","turbo","turpis","tutamen","tutis","tyrannus","uberrime","ubi","ulciscor","ullam","ullus","ulterius","ultio","ultra","umbra","umerus","umquam","una","unde","undique","universe","unus","urbanus","urbs","uredo","usitas","usque","ustilo","ustulo","usus","ut","uter","uterque","utilis","utique","utor","utpote","utrimque","utroque","utrum","uxor","vaco","vacuus","vado","vae","valde","valens","valeo","valetudo","validus","vallum","vapulus","varietas","varius","vehemens","vel","velit","velociter","velum","velut","venia","veniam","venio","ventito","ventosus","ventus","venustas","ver","verbera","verbum","vere","verecundia","vereor","vergo","veritas","veritatis","vero","versus","verto","verumtamen","verus","vesco","vesica","vesper","vespillo","vester","vestigium","vestrum","vetus","via","vicinus","vicissitudo","victoria","victus","videlicet","video","viduo","vigilo","vigor","vilicus","vilis","vilitas","villa","vinco","vinculum","vindico","vinitor","vinum","vir","virga","virgo","viridis","viriliter","virtus","vis","viscus","vita","vitae","vitiosus","vitium","vito","vivo","vix","vobis","vociferor","voco","volaticus","volo","volubilis","voluntarius","volup","voluptas","voluptate","voluptatem","voluptates","voluptatibus","voluptatum","volutabrum","volva","vomer","vomica","vomito","vorago","vorax","voro","vos","votum","voveo","vox","vulariter","vulgaris","vulgivagus","vulgo","vulgus","vulnero","vulnus","vulpes","vulticulus","xiphias"];var $a={word:Oe$1},xe$1=$a;var eo={title:"English",code:"en",language:"en",endonym:"English",dir:"ltr",script:"Latn"},ze$1=eo;var Ve$1=['"Awaken, My Love!"',"(What's The Story) Morning Glory?","- Tragedy +","13 Reasons Why (Season 3)","21st Century Breakdown","30 De Febrero","432 Hz Deep Healing","5-Star","528 Hz Meditation Music","54+1","8 Mile","808s & Heartbreak","9 To 5 And Odd Jobs","A Beautiful Lie","A Day At The Races","A Day Without Rain","A Fever You Can't Sweat Out","A Gangsta's Pain","A Gift & A Curse","A Hard Day's Night","A Head Full Of Dreams","A Kind Of Magic","A Million Ways To Murder","A Moment Apart","A Song For Every Moon","A Thousand Suns","A Winter Romance","ABBA","AI YoungBoy","AJ Tracey","Act One","After Hours","Agent Provocateur","All About You","All I Know So Far: Setlist","All Or Nothing","All Out","All Over The Place","All Stand Together","All The Lost Souls","All The Things I Never Said","All Things Must Pass","Alleen","Alright, Still","Alta Suciedad","America","American Heartbreak","American Teen","And Justice For None","Animal Songs","Another Friday Night","Anything Goes","Ao Vivo Em S\xE3o Paulo","Ao Vivo No Ibirapuera","Apricot Princess","Aqui E Agora (Ao Vivo)","Arcane League Of Legends","Ardipithecus","Aretha Now","Around The Fur","Arrival","Artist 2.0","As She Pleases","Ascend","Ashlyn","Astro Lounge","At Night, Alone.","At. Long. Last. ASAP","Atlas","Audioslave","Aura","Austin","Awake","Away From The Sun","Ayayay!","Baby On Baby","Back For Everything","Back From The Edge","Back In Black","Back To Black","Back To The Game","Bad","Bah\xEDa Ducati","Baila","Barbie The Album","Battleground","Bayou Country","Bcos U Will Never B Free","Be","Be Here Now","Beautiful Mind","Beautiful Thugger Girls","Beautiful Trauma","Beauty And The Beast","Beggars Banquet","Being Funny In A Foreign Language","Berlin Lebt","Berry Is On Top","Best White Noise For Baby Sleep - Loopable With No Fade","Big Baby DRAM","Bigger, Better, Faster, More!","Billy Talent II","Black Star Elephant","Blackout","Blank Face LP","Bleach","Blizzard Of Ozz","Blonde","Blood Sugar Sex Magik","Bloom","Blowin' Your Mind!","Blu Celeste","Blue","Blue Banisters","Blue Hawaii","Blue Neighbourhood","Bluebird Days","Bobby Tarantino","Bobby Tarantino II","Bon Iver","Born Pink","Born To Run","Brand New Eyes","Break The Cycle","Breakfast In America","Breakthrough","Brett Young","Bridge Over Troubled Water","Bright: The Album","Brol","Buds","Buena Vista Social Club","Built On Glass","Bury Me At Makeout Creek","Busyhead","By The Way","CB6","CNCO","California Sunrise","Californication","Call Me Irresponsible","Calm","Camino Palmero","Camp","Caracal","Carbon Fiber Hits","Carnival","Carry On","Cartel De Santa","Certified Lover Boy","Chaaama","Chama Meu Nome","Chapter 1: Snake Oil","Chapter 2: Swamp Savant","Chapter One","Charlie's Angels","Cherry Bomb","Chief","Chocolate Factory","Chosen","Chris Brown","Christina Aguilera","Chromatica","Church","City Of Evil","Clandestino","Clouds","Coco","Collision Course","Colour Vision","Combat Rock","Come Around Sundown","Come Away With Me","Come Home The Kids Miss You","Come What(ever) May","Commando","Common Sense","Communion","Conditions","Confident","Confrontation","Control The Streets, Volume 2","Corinne Bailey Rae","Costello Music","Cottonwood","Covers, Vol. 2","Cozy Tapes Vol. 2: Too Cozy","Crash Talk","Crazy Love","Crazysexycool","Crowded House","Cruisin' With Junior H","Culture","Current Mood","DS2","Dale","Danger Days: The True Lives Of The Fabulous Killjoys","Dangerous Woman","Dangerous: The Double Album","Dark Horse","Day69","Daydream","De Fiesta","De Viaje","DeAnn","Death Race For Love","Delirium","Delta","Demidevil","Depression Cherry","Descendants","Desgenerados Mixtape","Destin","Destiny Fulfilled","Desvelado","Detroit 2","Dex Meets Dexter","Dharma","Die A Legend","Different World","Dig Your Roots","Digital Druglord","Dirt","Disclaimer I / II","Discovery","Disraeli Gears","Disumano","Dizzy Up The Girl","Don't Play That Song","Donda","Donde Quiero Estar","Doo-Wops & Hooligans","Down The Way","Dr. Feelgood","Dream Your Life Away","Dreaming Out Loud","Drip Harder","Drive","Drones","Dropped Outta College","Drowning","Dua Warna Cinta","Dulce Beat","Dusty In Memphis","Dutty Rock","Dying To Live","ENR","East Atlanta Love Letter","Editorial","Edna","El Abayarde","El Amor En Los Tiempos Del Perreo","El Camino","El Comienzo","El Dorado","El Karma","El Mal Querer","El Malo","El Trabajo Es La Suerte","El Viaje De Copperpot","Electric Ladyland","Emotion","En Tus Planes","Endless Summer Vacation","Enter The Wu-Tang (36 Chambers)","Equals (=)","Estrella","Euphoria","Europop","Evermore","Every Kingdom","Everyday Life","Evolve","Expectations","Face Yourself","Facelift","Fallin'","Fancy You","Fantas\xEDa","Favourite Worst Nightmare","Fear Of The Dark","Fearless","Feel Something","Feels Like Home","Femme Fatale","Ferxxocalipsis","Fifty Shades Darker","Fifty Shades Freed","Fifty Shades Of Grey","Final (Vol.1)","Finding Beauty In Negative Spaces","Fine Line","First Impressions Of Earth","First Steps","Five Seconds Flat","Folklore","For Emma, Forever Ago","Forajido EP 1","Forever","Forever Young","Formula Of Love: O+T=<3","Free 6lack","Freudian","Frozen II","Full Moon Fever","Funhouse","Funk Wav Bounces Vol.1","Future History","FutureSex/LoveSounds","Fuzzybrain","Gallery","Gangsta's Paradise","Gemini","Gemini Rights","Generationwhy","Get A Grip","Get Up","Gettin' Old","Girl","Gladiator","Glisten","Globalization","Gloria","Glory Days","God's Project","Gold Skies","Golden","Good Evening","Good Thing","Goodbye Yellow Brick Road","Gossip Columns","Got Your Six","Graceland","Graduation","Grand Champ","Grandson, Vol. 1","Green River","Guerra","Ha*Ash Primera Fila - Hecho Realidad","Haiz","Hamilton","Happy Endings","Harry Styles","Hasta La Ra\xEDz","Hatful Of Hollow","Head In The Clouds","Heard It In A Past Life","Heart Shaped World","Heartbeat City","Heartbreak On A Full Moon / Cuffing Season - 12 Days Of Christmas","Heaven Or Hell","Heaven knows","Hellbilly Deluxe","Hellboy","Help!","Her Loss","Here Comes The Cowboy","Hey World","High School Musical","High Tide In The Snake's Nest","Historias De Un Capricornio","Hndrxx","Hombres G (Devu\xE9lveme A Mi Chica)","Homerun","Homework","Hot Fuss","Hot Pink","Hot Sauce / Hello Future","Hot Space","Hotel Diablo","Houses Of The Holy","How Big, How Blue, How Beautiful","How I'm Feeling","How To Be Human","How To Save A Life","How To: Friend, Love, Freefall","Hozier","Human","Huncho Jack, Jack Huncho","Hunter Hayes","Hysteria","I Am...Sasha Fierce","I Can't Handle Change","I Met You When I Was 18. (The Playlist)","I Never Liked You","I Never Loved A Man The Way I Love You","I See You","I Think You Think Too Much Of Me","I Used To Know Her","I Used To Think I Could Fly","I'm Comin' Over","Ich & Keine Maske","If You Can Believe Your Eyes & Ears","Il Ballo Della Vita","Ill Communication","Imagination & The Misfit Kid","Imagine","Immortalized","In A Perfect World...","In Colour","In My Own Words","In Rainbows","In Return","In The Lonely Hour","Infest","Innuendo","Inter Shibuya - La Mafia","Interstellar","Is This It","It Was Written","It's Not Me, It's You","It's Only Me","Ivory","JackBoys","Jamie","Jazz","Jibrail & Iblis","Jordi","Jordin Sparks","Jose","Just As I Am","Just Cause Y'all Waited 2","Just Like You","Justified","K-12 / After School","K.I.D.S.","K.O.","K.O.B. Live","KG0516","KOD","Kane Brown","Kid A","Kid Krow","Kids See Ghosts","Kids in Love","Kinks (You Really Got Me)","Know-It-All","Konvicted","Kring","LANY","LM5","La Criatura","La Flaca","La Melodia De La Calle","La Revolucion","Lady Lady","Lady Wood","Langit Mong Bughaw","Las Que No Iban A Salir","Last Day Of Summer","Last Year Was Complicated","Layers","Layover","Lazarus","Led Zeppelin","Left Of The Middle","Leftoverture","Legends Never Die","Let's Skip To The Wedding","Let's Talk About Love","Licensed To Ill","Life In Cartoon Motion","Life Thru A Lens","Lifelines","Like..?","Lil Big Pac","Lil Boat","Lil Boat 2","Lil Boat 3.5","Lil Kiwi","Lil Pump","Limon Y Sal","Listen Without Prejudice","Little Voice","Live On Red Barn Radio I & II","Lo Que And\xE1bamos Buscando","Lofi Fruits Music 2021","London Calling","Los Campeones Del Pueblo","Los Extraterrestres","Los Favoritos 2","Lost","Lost In Love","Loud","Love Sick","Love Story","Love Stuff","Love Yourself: Tear","Lover","Luca Brasi 2: Gangsta Grillz","Lust For Life","Luv Is Rage","M!ssundaztood","Ma Fleur","Made In Lagos","Mafia Bidness","Magazines Or Novels","Mainstream Sellout","Majestic","Make It Big","Make Yourself","Making Mirrors","Mamma Mia! Here We Go Again","Man Of The Woods","Manic","Me And My Gang","Meduza","Meet The Orphans","Meet The Woo","Melim","Mellon Collie And The Infinite Sadness","Melly vs. Melvin","Memories...Do Not Open","Menagerie","Midnights","Minecraft - Volume Alpha","Minutes To Midnight","Mix Pa Llorar En Tu Cuarto","Modo Avi\xF3n","Monkey Business","Mono.","Montana","Montevallo","Moosetape","Morning View","Motivan2","Moving Pictures","Mr. Davis","Mr. Misunderstood","Mulan","Mura Masa","Music From The Edge Of Heaven","Music Of The Sun","My House","My Kinda Party","My Krazy Life","My Liver Will Handle What My Heart Can't","My Moment","My Own Lane","My Turn","My Worlds","Na Praia (Ao Vivo)","Nakamura","Nation Of Two","Navegando","Need You Now","Neon Future III","Neotheater","Never Trust A Happy Song","New English","News Of The World","Nicole","Night & Day","Nimmerland","Nimrod","Nine Track Mind","No Angel","No Me Pidas Perd\xF3n","No More Drama","No Protection","No Strings Attached","No Time To Die","Nobody Is Listening","Non Stop Erotic Cabaret","Non-Fiction","Northsbest","Nostalgia","Nostalgia, Ultra","Notes On A Conditional Form","Now Or Never","O Embaixador (Ao Vivo)","O My Heart","OK Computer","Ocean","Ocean Avenue","Ocean Eyes","Odisea","Oh My My","Oh, What A Life","On The 6","One In A Million","One More Light","One Of These Nights","Open Up And Say...Ahh!","Ordinary Man","Origins","Out Of The Blue","Over It","OzuTochi","PTSD","Pa Las Baby's Y Belikeada","Pa Que Hablen","Pa' Luego Es Tarde","Pa' Otro La 'O","Pablo Honey","Pain Is Love","Pain Is Temporary","Painting Pictures","Palmen Aus Plastik 2","Para Mi Ex","Para Siempre","Partners In Crime","Pawn Shop","Pegasus / Neon Shark VS Pegasus","Pet Sounds","Piece By Piece","Pier Pressure","Pineapple Sunrise","Piseiro 2020 Ao Vivo","Planet Pit","Plans","Play Deep","Playa Saturno","Por Primera Vez","Por Vida","Positions","Post Human: Survival Horror","Poster Girl","Prazer, Eu Sou Ferrugem (Ao Vivo)","Pretty Girls Like Trap Music","Pretty. Odd.","Prince Royce","Prisma","Prometo","Providence","Puberty 2","Punisher","Purgatory","Purple Rain","Que Bendici\xF3n","Queen Of The Clouds","Quiero Volver","R&G (Rhythm & Gangsta): The Masterpiece","Raise!","Ransom 2","Rapunzel","Rare","Re Mida","Ready To Die","Realer","Rebelde","Reclassified","Recovery","Recuerden Mi Estilo","Reggatta De Blanc","Regulate\u2026 G Funk Era","Reik","Reise, Reise","Relapse","Relaxing Piano Lullabies And Natural Sleep Aid For Baby Sleep Music","Religiously. The Album.","Replay","Results May Vary","Revenge","Revolve","Revolver","Ricky Martin","Rien 100 Rien","Ripcord","Rise And Fall, Rage And Grace","Rise Of An Empire","Robin Hood: Prince Of Thieves","Rock N Roll Jesus","Romance","Romances","Ronan","Royal Blood","Rumours","Sad Boyz 4 Life II","San Lucas","Santana World","Saturation III","Sauce Boyz","Savage Mode","Saxobeats","Scarlet","Schwarzes Herz","Seal The Deal & Let's Boogie","Section.80","Segundo Romance","Sehnsucht","Shake The Snow Globe","Shang-Chi And The Legend Of The Ten Rings: The Album","Sheer Heart Attack","Shiesty Season","Shock Value","Shoot For The Stars, Aim For The Moon","Signed Sealed And Delivered","Signos","Silent Alarm","Simplemente Gracias","Sin Bandera","Sing Me A Lullaby, My Sweet Temptation","Sinner","Sirio","Sit Still, Look Pretty","Skin","Slowhand","Smash","Smithereens","Snow Cougar","Social Cues","Some Girls","Song Hits From Holiday Inn","Songs For Dads","Songs For The Deaf","Songs For You, Truths For Me","Songs In The Key Of Life","Souled Out","Sounds Of Silence","Soy Como Quiero Ser","Speak Now","Speak Your Mind","Speakerboxxx/The Love Below","Spider-Man: Into The Spider-Verse","Split Decision","Square Up","SremmLife","Starboy","Stay +","Stay Dangerous","Staying At Tamara's","Steppenwolf","Stick Season","Still Bill","Straight Outta Compton","Strange Trails","Stronger","Suavemente","Sublime","Suck It and See","Sucker","Sue\xF1os","Sugar","Summer Forever","Summer,","Sunset Season","Sunshine On Leith","Surfer Rosa","Sweet Talker","SweetSexySavage","System Of A Down","TA13OO","Talk That Talk","Talking Heads: 77","Tangled Up","Tango In The Night","Taxi Driver","Taylor Swift","Tell Me It's Real","Ten","Ten Summoner's Tales","Terra Sem Cep (Ao Vivo)","Terral","Testing","Tha Carter III","Thank Me Later","That's Christmas To Me","The Academy","The Adventures Of Bobby Ray","The Album","The Andy Williams Christmas Album","The Aviary","The Balcony","The Battle Of Los Angeles","The Beatles (White Album)","The Beginning","The Better Life","The Big Day","The Book","The Breakfast Club","The Cars","The Colour And The Shape","The Death Of Peace Of Mind","The Diary Of Alicia Keys","The Documentary","The Emancipation Of Mimi","The Eminem Show","The End Of Everything","The Final Countdown","The Forever Story","The Foundation","The Goat","The Golden Child","The Good Parts","The Greatest Showman: Reimagined","The Green Trip","The Hardest Love","The Head And The Heart","The Human Condition","The Infamous","The Lady Killer","The Last Don II","The Lion King","The Lockdown Sessions","The London Sessions","The Lord Of The Rings: The Fellowship Of The Ring","The Lost Boy","The Magic Of Christmas / The Christmas Song","The Marshall Mathers LP","The Martin Garrix Collection","The Melodic Blue","The Mockingbird & The Crow","The Pains Of Growing","The Papercut Chronicles","The Perfect Luv Tape","The Pinkprint","The Predator","The Queen Is Dead","The ReVe Festival: Finale","The Rise And Fall Of Ziggy Stardust And The Spiders From Mars","The Rising Tied","The River","The Stone Roses","The Story Of Us","The Stranger","The Sufferer & The Witness","The Sun's Tirade","The Temptations Sing Smokey","The Time Of Our Lives","The Way It Is","The Wonderful World Of Sam Cooke","The Writing's On The Wall","The Young And The Hopeless","Therapy","Therapy Session","There Is More (Live)","There Is Nothing Left To Lose","These Things Happen","Third Eye Blind","This Is Me...Then","This Unruly Mess I've Made","Threat to Survival","Thrill Of The Chase","Time","Timelezz","To Let A Good Thing Die","To Pimp A Butterfly","Toast To Our Differences","Todos Os Cantos, Vol. 1 (Ao Vivo)","Too Hard","Torches X","Total Xanarchy","Toto IV","Toulouse Street","Tourist History","Toxicity","Tragic Kingdom","Tranquility Base Hotel & Casino","Traumazine","Traveler","Tres Hombres","Trip At Knight","Tron: Legacy","True Blue","True Colors","Trustfall","Tu Veneno Mortal","Tudo Em Paz","Ubuntu","Ugly Is Beautiful","Ultra 2021","Una Mattina","Unbroken","Uncovered","Under Pressure","Unsponsored Content","Unstoppable","Unwritten","Urban Flora","Urban Hymns","Use Your Illusion I","Veneer","Versions Of Me","Vibes","Vice Versa","Vices & Virtues","Victory","Vida","Viejo Marihuano","Visual\xEDzate","Walk Away","Walk Me Home...","Watch The Throne","Wave","We Broke The Rules","We Love You Tecca","We Love You Tecca 2","Weezer (Green Album)","Welcome To The Madhouse","Westlife","What A Time To Be Alive","What Do You Think About The Car?","What Is Love?","What Makes You Country","What Separates Me From You","What You See Is What You Get / What You See Ain't Always What You Get","When It's Dark Out","When We All Fall Asleep, Where Do We Go?","Where The Light Is","While The World Was Burning","White Pony","Whitney","Who Really Cares","Who You Are","Who's Next","Wide Open","Wilder Mind","Wildfire","Willy And The Poor Boys","Wings / You Never Walk Alone","Wish","Wish You Were Here","Without Warning","Wonder","X&Y","XOXO","Y Que Quede Claro","YBN: The Mixtape","Yo Creo","You Will Regret","Youngblood","Younger Now","Youth"];var Ye$1=["$NOT","$uicideboy$","(G)I-DLE","*NSYNC","2 Chainz","21 Savage","6LACK","? & The Mysterians","A Boogie Wit da Hoodie","A Taste of Honey","A Tribe Called Quest","A-Ha","ABBA","AC/DC","AJ Tracey","ATEEZ","Ace of Base","Adele","Ado","Aerosmith","Agust D","Aitana","Al Dexter & his Troopers","Al Green","Al Jolson","Al Martino","Alan Jackson","Alannah Myles","Alec Benjamin","Alejandro Sanz","Alesso","Alfredo Olivas","Ali Gatie","Alice In Chains","Alina Baraz","All Time Low","All-4-One","All-American Rejects","Alok","America","American Quartet","Amii Stewart","Amitabh Bhattacharya","Ana Castela","Anderson .Paak","Andy Grammer","Angus & Julia Stone","Anirudh Ravichander","Anita Ward","Anitta","Anton Karas","Anuel AA","Arcade Fire","Archie Bell & The Drells","Archies","Aretha Franklin","Arizona Zervas","Armin van Buuren","Arthur Conley","Artie Shaw","Asake","Asees Kaur","Association","Atif Aslam","Audioslave","Aventura","Avril Lavigne","Aya Nakamura","B J Thomas","B.o.B","BLACKPINK","BONES","BROCKHAMPTON","BTS","Baby Keem","Bachman-Turner Overdrive","Backstreet Boys","Bad Bunny","Badshah","Bailey Zimmerman","Banda El Recodo","Barbra Streisand","Barry White","Bazzi","Bebe Rexha","Becky G","Becky Hill","Bee Gees","Ben Bernie","Ben Howard","Ben Selvin","Berlin","Bessie Smith","Bethel Music","Bette Midler","Beyonce","Bibi Blocksberg","Bibi und Tina","BigXthaPlug","Bill Doggett","Bill Haley & his Comets","Bill Withers","Billy Davis Jr","Billy Joel","Billy Paul","Billy Preston","Billy Swan","Birdy","Bizarrap","Blake Shelton","Blur","Bob Marley & The Wailers","Bob Seger","Bobby Darin","Bobby Lewis","Bobby McFerrin","Bobby Vinton","Boney M.","Bonez MC","Bonnie Tyler","Booba","Boston","BoyWithUke","Boyce Avenue","Bradley Cooper","Bread","Brent Faiyaz","Brett Young","Bring Me The Horizon","Britney Spears","Brooks & Dunn","Bruce Channel","Bruno & Marrone","Bryan Adams","Bryce Vine","Buddy Holly","Burna Boy","C. Tangana","CKay","CRO","Camilo","Capital Bra","Captain & Tennille","Cardi B","Carin Leon","Carlos Vives","Carly Simon","Carpenters","Cavetown","Celine Dion","Central Cee","Chaka Khan","Champs","Charlie Rich","Chayanne","Cheat Codes","Cher","Chic","Chicago","Chris Brown","Chris Isaak","Chris Young","Christina Aguilera","Christina Perri","Christopher Cross","Chuck Berry","Ciara","Cigarettes After Sex","Cliff Edwards (Ukelele Ike)","Cody Johnson","Colbie Caillat","Colby O'Donis","Cole Swindell","Coleman Hawkins","Contours","Coolio","Count Basie","Cris Mj","Culture Club","Cyndi Lauper","D-Block Europe","DAY6","DJ Khaled","DJ Luian","DJ Nelson","DMX","DNCE","DaVido","Dadju","Daft Punk","Dan + Shay","Daniel Powter","Danny Ocean","Darius Rucker","Dave","David Bowie","David Guetta","Daya","Dean Martin","Deee-Lite","Deep Purple","Deftones","Demi Lovato","Dennis Lloyd","Denzel Curry","Dermot Kennedy","Desiigner","Devo","Dewa 19","Dexys Midnight Runners","Diddy","Dido","Die drei !!!","Diego & Victor Hugo","Diljit Dosanjh","Dimitri Vegas & Like Mike","Dinah Shore","Dionne Warwick","Dire Straits","Disclosure","Dixie Cups","Doja Cat","Dolly Parton","Don Diablo","Don Henley","Don McLean","Don Omar","Donna Summer","Donovan","Dr. Dre","Drake","Dreamville","Dua Lipa","EMF","ENHYPEN","Earth, Wind & Fire","Ed Sheeran","Eddie Cantor","Eddie Cochran","Eddy Howard","Edgar Winter Group","Edwin Hawkins Singers","Edwin Starr","El Alfa","Eladio Carrion","Electric Light Orchestra","Elevation Worship","Ella Henderson","Ellie Goulding","Elton John","Elvis Presley","Empire of the Sun","En Vogue","Enrique Iglesias","Eslabon Armado","Ethel Waters","Etta James","Evanescence","Exile","Extreme","Faith Hill","Fall Out Boy","Fanny Brice","Farruko","Fats Domino","Fats Waller","Feid","Felix Jaehn","Fergie","Fetty Wap","Fiersa Besari","Fifth Harmony","Fine Young Cannibals","Five Finger Death Punch","Fleetwood Mac","Flo-Rida","Florence + The Machine","Flume","Foo Fighters","Foreigner","Foster The People","Four Aces","Frank Ocean","Frank Sinatra","Frankie Avalon","Frankie Valli","Fred Astaire","Freda Payne","Freddie Dredd","Freddy Fender","French Montana","Fuerza Regida","Fujii Kaze","Future","G-Eazy","Garfunkel and Oates","Gary Lewis & The Playboys","Gary Numan","Gene Autry","Gene Chandler","Gene Vincent","George Michael","George Strait","Gera MX","Ghost","Ghostemane","Gigi D'Agostino","Gladys Knight & The Pips","Glass Animals","Glee Cast","Gloria Gaynor","Godsmack","Gorillaz","Gotye","Grand Funk Railroad","Green Day","Grouplove","Grupo Firme","Grupo Marca Registrada","Gryffin","Gucci Mane","Guess Who","Gunna","Gusttavo Lima","Guy Mitchell","Gwen Stefani","Gzuz","H.E.R.","HARDY","Hailee Steinfeld","Halsey","Hans Zimmer","Harris Jayaraj","Harry Chapin","Harry James","Harry Nilsson","Harry Styles","Hayley Williams","Herb Alpert","Herman's Hermits","Hillsong UNITED","Hillsong Worship","Hollywood Undead","Honey Cone","Hoobastank","Hues Corporation","I Prevail","ITZY","IVE","Ice Cube","Ice Spice","Iggy Azalea","Imagine Dragons","Incubus","Internet Money","Isaac Hayes","J Geils Band","J. Cole","JAY-Z","JJ Lin","JP Saxe","JVKE","Jack Harlow","Jack Johnson","Jackie Wilson","Jacquees","James Arthur","James Brown","James TW","James Taylor","Jamie Foxx","Janet Jackson","Janis Joplin","Jason Aldean","Jason Mraz","Jay Chou","Jay Sean","Jay Wheeler","Jaymes Young","Jean Knight","Jeezy","Jennifer Lopez","Jennifer Warnes","Jeremih","Jeremy Zucker","Jerry Lee Lewis","Jerry Murad's Harmonicats","Jess Glynne","Jessie J","Jewel","Jimi Hendrix","Jimin","Jimmie Rodgers","Jimmy Dean","Jo Stafford","Joan Jett & The Blackhearts","Joao Gilberto","Joel Corry","John Fred & The Playboy Band","John Legend","John Mayer","John Williams","Johnnie Ray","Johnnie Taylor","Johnny Cash","Johnny Horton","Johnny Mathis","Johnny Mercer","Johnny Nash","Joji","Jon Bellion","Jonas Blue","Jonas Brothers","Joni James","Jorja Smith","Juan Gabriel","Juan Luis Guerra 4.40","Juanes","Juice Newton","Julia Michaels","Justin Bieber","Justin Quiles","KALEO","KAROL G","KAYTRANADA","KK","KSI","KYLE","Kacey Musgraves","Kane Brown","Kanye West","Karan Aujla","Kate Smith","Katy Perry","Kay Kyser","Ke$ha","Kehlani","Kelly Clarkson","Kenny Chesney","Kenny Loggins","Kenny Rogers","Kenshi Yonezu","Kenya Grace","Kevin Gates","Key Glock","Khalid","Kim Carnes","Kim Petras","Kimbra","Kina","King Gnu","Kings of Leon","Kingsmen","Kitty Kallen","Kodak Black","Kodaline","Kollegah","Kool & The Gang","Kungs","Kygo","Kylie Minogue","LE SSERAFIM","LISA","LMFAO","LUDMILLA","La Adictiva Banda San Jos\xE9 de Mesillas","La Oreja de Van Gogh","Labrinth","Lady Antebellum","Lady GaGa","Lainey Wilson","Lana Del Rey","Latto","Lauryn Hill","Lauv","League of Legends","Lee Brice","Leon Bridges","Leona Lewis","Lesley Gore","Leslie Odom Jr.","Liam Payne","Lifehouse","Lil Baby","Lil Dicky","Lil Durk","Lil Mosey","Lil Nas X","Lil Pump","Lil Skies","Lil Tjay","Lil Uzi Vert","Lil Yachty","Lil' Kim","Lil' Wayne","Lin-Manuel Miranda","Linkin Park","Lionel Richie","Lipps Inc","Lisa Loeb","Little Peggy March","Little Richard","Lofi Fruits Music","Lord Huron","Los Del Rio","Los Dos Carnales","Los Lobos","Los Temerarios","Los Tigres Del Norte","Los Tucanes De Tijuana","Lou Reed","Loud Luxury","Louis Jordan","Louis Tomlinson","Love Unlimited","Lovin' Spoonful","Luan Santana","Luciano","Luis Miguel","Luis R Conriquez","Lulu","Lunay","Lupe Fiasco","M","MAX","MC Hammer","MC Ryan SP","MKTO","Mabel","Machine Gun Kelly","Madison Beer","Madonna","Mahalini","Major Lazer","Mambo Kingz","Maneskin","Marco Antonio Sol\xEDs","Margaret Whiting","Maria Becerra","Mario","Mario Lanza","Mark Ronson","Maroon 5","Marshmello","Martin Garrix","Mary Ford","Mary J Blige","Mary J. Blige","Mary Wells","Matoma","Mau y Ricky","Meek Mill","Megadeth","Melanie","Melanie Martinez","Melendi","Men At Work","Metro Boomin","Michael Bubl\xE9","Michael Jackson","Michael McDonald","Michael Sembello","Miguel","Mike Posner","Miley Cyrus","Milky Chance","Minnie Riperton","Miracle Tones","Miranda Lambert","Mohit Chauhan","Mon Laferte","Moneybagg Yo","Monsta X","Mora","Morad","Morat","Mother Mother","Motley Crue","Ms. Lauryn Hill","Mumford & Sons","Muse","Mya","Myke Towers","NCT 127","NCT DREAM","NEFFEX","Nadin Amizah","Nancy Sinatra","Nat King Cole","Nate Smith","Natti Natasha","Nayer","Neil Diamond","Neil Sedaka","Nekfeu","Nelly","New Vaudeville Band","Next","Nickelback","Nicki Minaj","Nicki Nicole","Nicky Jam","Nina Simone","Ninho","Nipsey Hussle","Nirvana","Niska","No Doubt","Norah Jones","Normani","OMI","ONE OK ROCK","Oasis","Official HIGE DANdism","Offset","Old Dominion","Oliver Heldens","Olivia Rodrigo","Omah Lay","One Direction","Otis Redding","OutKast","Owl City","P Diddy","P!nk","PLK","PNL","Pamungkas","Passenger","Pat Boone","Patsy Cline","Patti LaBelle","Patti Page","Paul & Paula","Paul Revere & the Raiders","Paul Robeson","Paul Russell","Paul Whiteman","Paula Abdul","Peaches & Herb","Pearl Jam","Pee Wee Hunt","Pee Wee King","Pentatonix","Percy Faith","Percy Sledge","Peso Pluma","Peter Cetera","Peter Gabriel","Peter, Paul & Mary","Pharrell Williams","Pierce The Veil","Pineapple StormTv","Pink Floyd","Pink Sweat$","Piso 21","Pitbull","Plan B","Player","Polo G","Pop Smoke","Portugal. The Man","Pouya","Prince","Prince Royce","Pusha T","Quality Control","Queen","Quinn XCII","R. Kelly","RAF Camora","RAYE","REM","REO Speedwagon","Radiohead","Rag'n'Bone Man","Rage Against The Machine","Rahat Fateh Ali Khan","Rainbow Kitten Surprise","Rammstein","Rauw Alejandro","Ray Charles","Ray Parker Jr","Ray Stevens","Red Foley","Red Hot Chili Peppers","Red Velvet","Regard","Regina Belle","Reik","Rels B","Rema","Ricardo Arjona","Rich The Kid","Rick Astley","Rick Dees & his Cast of Idiots","Rick Ross","Rick Springfield","Ricky Martin","Ricky Nelson","Rihanna","Rita Ora","Ritchie Valens","Rizky Febian","Rob Thomas","Roberta Flack","Robin Schulz","Robin Thicke","Rod Stewart","Rod Wave","Roddy Ricch","Roger Miller","Romeo Santos","Rosemary Clooney","Roxette","Roy Acuff","Roy Orbison","Rudimental","Ruel","Ruth B.","Ryan Lewis","SCH","SEVENTEEN","SWV","Sabaton","Sabrina Carpenter","Sachet Tandon","Sachin-Jigar","Sade","Sam Cooke","Sam Feldt","Sam Hunt","Sam Smith","Sam The Sham & The Pharaohs","Sammy Davis Jr","Sammy Kaye","Santana","Sasha Alex Sloan","Savage Garden","Saweetie","Scorpions","Sean Kingston","Sean Paul","Sebastian Yatra","Sech","Seeb","Sezen Aksu","Sfera Ebbasta","Shaggy","Shania Twain","Shawn Mendes","Sheena Easton","Shinedown","Shubh","Sia","Sid Sriram","Sidhu Moose Wala","Silk","Silver Convention","Simon & Garfunkel","Sinead O'Connor","Sir Mix-a-Lot","Sister Sledge","Ski Mask The Slump God","Skillet","Skrillex","Sleeping At Last","Smokey Robinson","Snoop Dogg","Snow Patrol","Soda Stereo","Sonu Nigam","Sophie Ellis-Bextor","Spencer Davis Group","Spice Girls","Stan Getz","Starland Vocal Band","Stephen Sanchez","Steve Aoki","Steve Lacy","Steve Winwood","Stevie B","Sting","Stormzy","Strawberry Alarm Clock","Stray Kids","Stromae","Sublime","Sum 41","Summer Walker","Supertramp","Survivor","Swedish House Mafia","System Of A Down","T-Pain","T.I.","TAEYEON","TKKG","TLC","TOMORROW X TOGETHER","TOTO","TWICE","Tag Team","Tainy","Tammi Terrell","Tanishk Bagchi","Tate McRae","Taylor Swift","Tears For Fears","Tems","Tennessee Ernie Ford","Terence Trent D'Arby","Teresa Brewer","Terry Jacks","The Ames Brothers","The Animals","The B52s","The Bangles","The Beatles","The Black Eyed Peas","The Black Keys","The Box Tops","The Chainsmokers","The Chiffons","The Chordettes","The Clash","The Coasters","The Commodores","The Cowsills","The Cranberries","The Crew-Cuts","The Cure","The Detroit Spinners","The Diamonds","The Doobie Brothers","The Doors","The Drifters","The Emotions","The Eurythmics","The Fireballs","The Flamingos","The Foundations","The Four Seasons","The Fray","The Game","The Go Gos","The Goo Goo Dolls","The Head And The Heart","The Hollies","The Ink Spots","The Isley Brothers","The Jackson 5","The Kid LAROI","The Killers","The Kingston Trio","The Kooks","The Lemon Pipers","The Living Tombstone","The Lumineers","The Mamas & The Papas","The Marvelettes","The McCoys","The Mills Brothers","The Miracles","The Monkees","The Moody Blues","The National","The Neighbourhood","The Notorious B.I.G.","The O'Jays","The Offspring","The Osmonds","The Partridge Family","The Penguins","The Pet Shop Boys","The Platters","The Righteous Brothers","The Rolling Stones","The Ronettes","The Score","The Script","The Seekers","The Shangri-Las","The Smashing Pumpkins","The Staple Singers","The Strokes","The Supremes","The Temptations","The Turtles","The Vamps","The Verve","The Village People","The Weavers","The White Stripes","The Young Rascals","The Zombies","Thelma Houston","Thomas Rhett","Three Days Grace","Three Dog Night","Three Man Down","Timbaland","Timmy Trumpet","Toby Keith","Tom Jones","Tom Petty and the Heartbreakers","Tommy Dorsey","Tommy Edwards","Tommy James & the Shondells","Tone Loc","Toni Braxton","Topic","Tory Lanez","Tove Lo","Trevor Daniel","Trey Songz","Trippie Redd","Trueno","Tulsi Kumar","Tulus","Twenty One Pilots","Two Feet","Ty Dolla $ign","Tyga","Tyler Hubbard","U2","UB40","UZI","Ufo361","Upchurch","V","Vampire Weekend","Van McCoy","Van Morrison","Vance Joy","Vanessa Carlton","Vanessa Williams","Vera Lynn","Vernon Dalhart","Vicente Fernandez","Vishal-Shekhar","Volbeat","WILLOW","Wale","Wallows","Weezer","Wham!","Whitney Houston","Why Don't We","Wilbert Harrison","Wilson Phillips","Wiz Khalifa","Woody Guthrie","Wyclef Jean","XXXTENTACION","Xavi","YG","YNW Melly","YOASOBI","Yandel","Years & Years","Yeat","Yo Gotti","Young Dolph","Young Miko","Young Thug","YoungBoy Never Broke Again","Yung Gravy","Yuuri","Yuvan Shankar Raja","ZAYN","ZZ Top","Zac Brown Band","Zach Bryan","Zara Larsson","aespa","benny blanco","blink-182","d4vd","deadmau5","girl in red","gnash","iann dior","will.i.am"];var je$1=["Acid House","Acid Jazz","Acid Rock","Acoustic","Acoustic Blues","Afro-Pop","Afrobeat","Alt-Rock","Alternative","Ambient","American Trad Rock","Americana","Anime","Arena Rock","Art-Rock","Avant-Garde","Avant-Punk","Baladas y Boleros","Barbershop","Baroque","Bebop","Big Band","Black Metal","Blue Note","Bluegrass","Blues","Boogaloo","Bop","Bossa Nova","Bounce","Brazilian Funk","Breakbeat","Britpop","CCM","Cajun","Cantopop","Celtic","Celtic Folk","Chamber Music","Chant","Chanukah","Chicago Blues","Chicago House","Chicano","Children\u2019s Music","Chill","Choral","Christian","Christmas","Classical","Club","College Rock","Conjunto","Cool Jazz","Country","Crunk","Dance","Dancehall","Death Metal","Deep House","Delta Blues","Detroit Techno","Dirty South","Disco","Disney","Dixieland","Doo-wop","Downtempo","Dream Pop","Drill","Drinking Songs","Drone","Drum'n'bass","Dub","Dubstep","EDM","Early Music","East Coast Rap","Easter","Easy Listening","Eclectic","Electric Blues","Electro","Electronic","Electronica","Emo","Enka","Environmental","Ethio-jazz","Experimental","Experimental Rock","Flamenco","Folk","Folk-Rock","Forro","French Pop","Funk","Fusion","Gangsta Rap","Garage","German Folk","German Pop","Glam Rock","Gospel","Goth","Grime","Grindcore","Groove","Grunge","Hair Metal","Halloween","Happy","Hard Bop","Hard Dance","Hard Rock","Hardcore","Hardcore Punk","Hardcore Rap","Hardstyle","Healing","Heavy Metal","High Classical","Hip Hop","Holiday","Honky Tonk","House","IDM","Impressionist","Indie","Industrial","Instrumental","J-Dance","J-Idol","J-Pop","J-Punk","J-Rock","J-Ska","J-Synth","Jackin House","Jam Bands","Japanese Pop","Jazz","Jungle","K-Pop","Karaoke","Kayokyoku","Kids","Kitsch","Klezmer","Krautrock","Latin","Latin Jazz","Latin Rap","Local","Lounge","Lullabies","MPB","Mainstream Jazz","Malay","Mandopop","March","Mariachi","Mawwal","Medieval","Meditation","Metal","Metalcore","Minimal Techno","Minimalism","Modern","Motown","Mugham","Musicals","Musique Concr\xE8te","Nature","Neo-Soul","Nerdcore","New Acoustic","New Age","New Mex","New Wave","No Wave","Noise","Nordic","Novelty","OPM","Oi!","Old School Rap","Opera","Orchestral","Original Score","Outlaw Country","Pagode","Party","Piano","Polka","Pop","Pop Film","Pop Latino","Post Dubstep","Power Pop","Praise & Worship","Progressive House","Progressive Rock","Proto-punk","Psych Rock","Psychedelic","Punk","Punk Rock","Qawwali","Quiet Storm","R&B","Ragtime","Rainy Day","Rap","Reggae","Reggaeton","Regional Mexicano","Relaxation","Renaissance","Retro","Rock","Rockabilly","Rocksteady","Romance","Romantic","Roots Reggae","Roots Rock","SKA","Sad","Salsa","Samba","Second Line","Sertanejo","Shaabi","Shoegaze","Sleep","Smooth Jazz","Soft Rock","Soul","Soundtrack","Southern Gospel","Southern Rock","Space Rock","Stage And Screen","Steampunk","Summer","Surf","Swamp Pop","Swing","Synth Pop","Tango","Techno","Teen Pop","Tejano","Tex-Mex","Thanksgiving","Traditional","Trance","Trip Hop","Tropical","Underground Rap","Urban","Urban Cowboy","West Coast Rap","Western Swing","World","Worldbeat","Zydeco"];var qe$1=["(Everything I Do) I Do it For You","(Ghost) Riders in the Sky","(I Can't Get No) Satisfaction","(I've Got a Gal In) Kalamazoo","(I've Had) the Time of My Life","(It's No) Sin","(Just Like) Starting Over","(Let Me Be Your) Teddy Bear","(Put Another Nickel In) Music! Music! Music!","(Sexual) Healing","(Sittin' On) the Dock of the Bay","(They Long to Be) Close to You","(You Keep Me) Hangin' On","(You're My) Soul & Inspiration","(Your Love Keeps Lifting Me) Higher & Higher","12th Street Rag","1999","19th Nervous Breakdown","50 Ways to Leave Your Lover","9 to 5","96 Tears","A Boy Named Sue","A Hard Day's Night","A String of Pearls","A Thousand Miles","A Tree in the Meadow","A Whiter Shade of Pale","A Whole New World (Aladdin's Theme)","A Woman in Love","A-Tisket A-Tasket","ABC","Abracadabra","Ac-cent-tchu-ate the Positive","Addicted to Love","After You've Gone","Afternoon Delight","Again","Against All Odds (Take a Look At Me Now)","Ain't Misbehavin'","Ain't No Mountain High Enough","Ain't No Sunshine","Ain't That a Shame","Airplanes","All Along the Watchtower","All I Have to Do is Dream","All I Wanna Do","All My Lovin' (You're Never Gonna Get It)","All Night Long (All Night)","All Out of Love","All Shook Up","All You Need is Love","Alone","Alone Again (Naturally)","Always On My Mind","American Pie","American Woman","Angie","Another Brick in the Wall (part 2)","Another Day in Paradise","Another Night","Another One Bites the Dust","Apologize","April Showers","Aquarius/Let The Sunshine In","Are You Lonesome Tonight?","Arthur's Theme (Best That You Can Do)","As Time Goes By","At Last","At the Hop","Auf Wiederseh'n Sweetheart","Baby Baby","Baby Come Back","Baby Got Back","Baby Love","Baby One More Time","Bad","Bad Day","Bad Girls","Bad Moon Rising","Bad Romance","Baker Street","Ball of Confusion (That's What the World is Today)","Ballad of the Green Berets","Ballerina","Band On the Run","Band of Gold","Battle of New Orleans","Be Bop a Lula","Be My Baby","Be My Love","Beat It","Beautiful Day","Beauty & the Beast","Because I Love You (The Postman Song)","Because You Loved Me","Because of You","Before The Next Teardrop Falls","Begin the Beguine","Behind Closed Doors","Being With You","Believe","Ben","Bennie & the Jets","Besame Mucho","Best of My Love","Bette Davis Eyes","Big Bad John","Big Girls Don't Cry","Billie Jean","Bitter Sweet Symphony","Black Or White","Black Velvet","Blaze of Glory","Bleeding Love","Blue Suede Shoes","Blue Tango","Blueberry Hill","Blurred Lines","Body & Soul","Bohemian Rhapsody","Boogie Oogie Oogie","Boogie Woogie Bugle Boy","Boom Boom Pow","Born in the USA","Born to Be Wild","Born to Run","Boulevard of Broken Dreams","Brand New Key","Brandy (You're A Fine Girl)","Breaking Up is Hard to Do","Breathe","Bridge Over Troubled Water","Brother","Brother Louie","Brown Eyed Girl","Brown Sugar","Build Me Up Buttercup","Burn","Buttons & Bows","Bye","Bye Bye","Bye Bye Love","Caldonia Boogie (What Makes Your Big Head So Hard)","California Dreamin'","California Girls","Call Me","Call Me Maybe","Can You Feel the Love Tonight","Can't Buy Me Love","Can't Get Enough of Your Love","Can't Help Falling in Love","Candle in the Wind '97","Candy Man","Car Wash","Careless Whisper","Cars","Cat's in the Cradle","Cathy's Clown","Celebration","Centerfold","Chain of Fools","Chances Are","Change the World","Chapel of Love","Chattanooga Choo Choo","Chattanoogie Shoe-Shine Boy","Check On It","Cheek to Cheek","Cherish","Cherry Pink & Apple Blossom White","Cold","Colors of the Wind","Come On Eileen","Come On-a My House","Come Together","Coming Up","Cracklin' Rosie","Crazy","Crazy For You","Crazy Little Thing Called Love","Crazy in Love","Creep","Crimson & Clover","Crocodile Rock","Cry","Cry Like a Baby","Crying","Da Doo Ron Ron (When He Walked Me Home)","Dance to the Music","Dancing Queen","Dancing in the Dark","Dancing in the Street","Dardanella","Daydream Believer","December 1963 (Oh What a Night)","Delicado","Dilemma","Disco Duck","Disco Lady","Disturbia","Dizzy","Do That to Me One More Time","Do Wah Diddy Diddy","Do Ya Think I'm Sexy?","Do You Love Me?","Don't Be Cruel","Don't Fence Me In","Don't Go Breaking My Heart","Don't Leave Me This Way","Don't Let the Stars Get in Your Eyes","Don't Let the Sun Go Down On Me","Don't Speak","Don't Stop 'Til You Get Enough","Don't Worry Be Happy","Don't You (Forget About Me)","Don't You Want Me","Doo Wop (That Thing)","Down","Down Hearted Blues","Down Under","Downtown","Dreamlover","Dreams","Drop it Like It's Hot","Drops of Jupiter (Tell Me)","Duke of Earl","E.T.","Earth Angel","Ebony & Ivory","Eight Days a Week","Empire State Of Mind","End of the Road","Endless Love","Escape (The Pina Colada Song)","Eve of Destruction","Every Breath You Take","Every Little Thing She Does is Magic","Everybody Loves Somebody","Everybody Wants to Rule the World","Everyday People","Eye of the Tiger","Faith","Fallin'","Fame","Family Affair","Fantasy","Fast Car","Feel Good Inc","Feel Like Making Love","Fire & Rain","Firework","Flashdance. What a Feeling","Fly Robin Fly","Foolish Games","Footloose","For What It's Worth (Stop","Fortunate Son","Frankenstein","Freak Me","Freebird","Frenesi","Funkytown","Gangsta's Paradise","Georgia On My Mind","Georgy Girl","Get Back","Get Down Tonight","Get Off of My Cloud","Ghostbusters","Gimme Some Lovin'","Girls Just Wanna Have Fun","Give Me Everything","Gives You Hell","Glamorous","Glory of Love","Go Your Own Way","God Bless America","God Bless the Child","Gold Digger","Gonna Make You Sweat (Everybody Dance Now)","Good Lovin'","Good Times","Good Vibrations","Goodbye Yellow Brick Road","Goodnight","Got to Give it Up","Grease","Great Balls of Fire","Greatest Love of All","Green Onions","Green River","Green Tambourine","Grenade","Groove is in the Heart","Groovin'","Gypsies","Hair","Hang On Sloopy","Hanging by a Moment","Hanky Panky","Happy Days Are Here Again","Happy Together","Harbour Lights","Hard to Say I'm Sorry","Harper Valley PTA","Have You Ever Really Loved a Woman?","He'll Have to Go","He's So Fine","He's a Rebel","Heart of Glass","Heart of Gold","Heartbreak Hotel","Hello","Hello Dolly","Help Me","Help!","Here Without You","Here in My Heart","Hero","Hey Baby","Hey Jude","Hey Paula","Hey There","Hey There Delilah","Hey Ya!","Higher Love","Hips don't lie","Hit the Road","Hold On","Hollaback Girl","Honey","Honky Tonk","Honky Tonk Woman","Horse With No Name","Hot Child In The City","Hot Stuff","Hotel California","Hound Dog","House of the Rising Sun","How Deep is Your Love?","How Do I Live?","How Do You Mend a Broken Heart","How High the Moon","How Much is That Doggy in the Window?","How Will I Know","How You Remind Me","How to Save a Life","Hungry Heart","Hurt So Good","I Believe I Can Fly","I Can Dream","I Can Help","I Can See Clearly Now","I Can't Get Next to You","I Can't Get Started","I Can't Go For That (No Can Do)","I Can't Help Myself (Sugar Pie","I Can't Stop Loving You","I Don't Want to Miss a Thing","I Fall to Pieces","I Feel Fine","I Feel For You","I Feel Love","I Get Around","I Got You (I Feel Good)","I Got You Babe","I Gotta Feeling","I Heard it Through the Grapevine","I Honestly Love You","I Just Called to Say I Love You","I Just Wanna Be Your Everything","I Kissed A Girl","I Love Rock 'n' Roll","I Need You Now","I Only Have Eyes For You","I Shot the Sheriff","I Still Haven't Found What I'm Looking For","I Swear","I Think I Love You","I Walk the Line","I Wanna Dance With Somebody (Who Loves Me)","I Wanna Love You","I Want You Back","I Want to Hold Your Hand","I Want to Know What Love Is","I Went to Your Wedding","I Will Always Love You","I Will Follow Him","I Will Survive","I Write the Songs","I'll Be Missing You","I'll Be There","I'll Make Love to You","I'll Never Smile Again","I'll Take You There","I'll Walk Alone","I'll be seeing you","I'm Looking Over a Four Leaf Clover","I'm So Lonesome I Could Cry","I'm Sorry","I'm Walking Behind You","I'm Your Boogie Man","I'm Yours","I'm a Believer","I've Heard That Song Before","If (They Made Me a King)","If I Didn't Care","If You Don't Know Me By Now","If You Leave Me Now","Imagine","In Da Club","In the End","In the Ghetto","In the Mood","In the Summertime","In the Year 2525 (Exordium & Terminus)","Incense & Peppermints","Indian Reservation (The Lament Of The Cherokee Reservation Indian)","Instant Karma","Iris","Ironic","Irreplaceable","It Had to Be You","It's All in the Game","It's My Party","It's Now Or Never","It's Still Rock 'n' Roll to Me","It's Too Late","Jack & Diane","Jailhouse Rock","Jessie's Girl","Jive Talkin'","Johnny B Goode","Joy to the World","Judy in Disguise (With Glasses)","Jump","Jumpin' Jack Flash","Just Dance","Just My Imagination (Running Away With Me)","Just the Way You Are","Kansas City","Karma Chameleon","Keep On Loving You","Killing Me Softly With His Song","King of the Road","Kiss","Kiss & Say Goodbye","Kiss From a Rose","Kiss Me","Kiss On My List","Kiss You All Over","Knock On Wood","Knock Three Times","Kokomo","Kryptonite","Kung Fu Fighting","La Bamba","Lady","Lady Marmalade (Voulez-Vous Coucher Aver Moi Ce Soir?)","Last Train to Clarksville","Layla","Le Freak","Leader of the Pack","Lean On Me","Leaving","Let Me Call You Sweetheart","Let Me Love You","Let it Be","Let it Snow! Let it Snow! Let it Snow!","Let's Dance","Let's Get it On","Let's Groove","Let's Hear it For the Boy","Let's Stay Together","Light My Fire","Lights","Like a Prayer","Like a Rolling Stone","Like a Virgin","Little Darlin'","Little Things Mean a Lot","Live & Let Die","Livin' La Vida Loca","Livin' On a Prayer","Living For the City","Locked Out Of Heaven","Lola","Lonely Boy","Long Cool Woman in a Black Dress","Long Tall Sally","Look Away","Lookin' Out My Back Door","Lose Yourself","Losing My Religion","Louie Louie","Love Child","Love Hangover","Love In This Club","Love Is Blue (L'Amour Est Bleu)","Love Letters in the Sand","Love Me Do","Love Me Tender","Love Shack","Love Theme From 'A Star is Born' (Evergreen)","Love Train","Love Will Keep Us Together","Love is a Many Splendoured Thing","Love to Love You Baby","Love's Theme","Loving You","Low","Macarena","Mack the Knife","Maggie May","Magic","Magic Carpet Ride","Make Love to Me","Make it With You","Makin' Whoopee","Mama Told Me Not to Come","Man in the Mirror","Manana (Is Soon Enough For Me)","Maneater","Maniac","Maybellene","Me & Bobby McGee","Me & Mrs Jones","Memories Are Made of This","Mercy Mercy Me (The Ecology)","Mickey","Midnight Train to Georgia","Minnie the Moocher","Miss You","Miss You Much","Mister Sandman","Mmmbop","Mona Lisa","Monday Monday","Money For Nothing","Mony Mony","Mood Indigo","Moonlight Cocktail","Moonlight Serenade","More Than Words","More Than a Feeling","Morning Train (Nine to Five)","Mr Big Stuff","Mr Brightside","Mr Tambourine Man","Mrs Brown You've Got a Lovely Daughter","Mrs Robinson","Mule Train","Music","My Blue Heaven","My Boyfriend's Back","My Eyes Adored You","My Girl","My Guy","My Heart Will Go On","My Life","My Love","My Man","My Prayer","My Sharona","My Sweet Lord","Na Na Hey Hey (Kiss Him Goodbye)","Nature Boy","Near You","Need You Now","Need You Tonight","Never Gonna Give You Up","Night & Day","Night Fever","Nights in White Satin","No One","No Scrubs","Nobody Does it Better","Nothin' on You","Nothing Compares 2 U","Nothing's Gonna Stop Us Now","Ode To Billie Joe","Oh","Oh Happy Day","Oh My Papa (O Mein Papa)","Ol' Man River","Ole Buttermilk Sky","On Bended Knee","On My Own","On the Atchison","One","One Bad Apple","One More Try","One O'Clock Jump","One Sweet Day","One of These Nights","One of Us","Only The Lonely (Know The Way I Feel)","Only You (And You Alone)","Open Arms","Over There","Over the Rainbow","Paint it Black","Papa Don't Preach","Papa Was a Rolling Stone","Papa's Got a Brand New Bag","Paper Doll","Paper Planes","Paperback Writer","Party Rock Anthem","Peg o' My Heart","Peggy Sue","Pennies From Heaven","Penny Lane","People","People Got to Be Free","Personality","Philadelphia Freedom","Physical","Piano Man","Pick Up the Pieces","Pistol Packin' Mama","Play That Funky Music","Please Mr Postman","Poker Face","Pon De Replay","Pony Time","Pop Muzik","Prisoner of Love","Private Eyes","Promiscuous","Proud Mary","Purple Haze","Purple Rain","Puttin' on the Ritz","Que sera sera (Whatever will be will be)","Queen of Hearts","Rag Doll","Rag Mop","Rags to Riches","Raindrops Keep Falling On My Head","Rapture","Ray of Light","Reach Out (I'll Be There)","Red Red Wine","Rehab","Respect","Return to Sender","Reunited","Revolution","Rhapsody in Blue","Rhinestone Cowboy","Rich Girl","Riders On the Storm","Right Back Where We Started From","Ring My Bell","Ring of Fire","Rock Around the Clock","Rock With You","Rock Your Baby","Rock the Boat","Rock the Casbah","Roll Over Beethoven","Roll With It","Rolling In The Deep","Rosanna","Roses Are Red","Royals","Ruby Tuesday","Rudolph","Rum & Coca-Cola","Runaround Sue","Runaway","Running Scared","Rush Rush","Sailing","Save the Best For Last","Save the Last Dance For Me","Say It Right","Say My Name","Say Say Say","Say You","School's Out","Seasons in the Sun","Secret Love","Sentimental Journey","Sexyback","Sh-Boom (Life Could Be a Dream)","Shadow Dancing","Shake Down","Shake You Down","She Drives Me Crazy","She Loves You","She's a Lady","Shining Star","Shop Around","Shout","Silly Love Songs","Since U Been Gone","Sing","Singing The Blues","Single Ladies (Put A Ring On It)","Sir Duke","Sixteen Tons","Sledgehammer","Sleep Walk","Sleepy Lagoon","Slow Poke","Smells Like Teen Spirit","Smoke Gets in Your Eyes","Smoke On the Water","Smoke! Smoke! Smoke! (That Cigarette)","Smooth","So Much in Love","Soldier Boy","Some Enchanted Evening","Some of These Days","Somebody That I Used to Know","Somebody to Love","Someday","Somethin' Stupid","Something","Soul Man","Spanish Harlem","Spill the Wine","Spinning Wheel","Spirit in the Sky","St George & the Dragonette","St Louis Blues","Stagger Lee","Stairway to Heaven","Stand By Me","Stardust","Stars & Stripes Forever","Stay (I Missed You)","Stayin' Alive","Stop! in the Name of Love","Stormy Weather (Keeps Rainin' All the Time)","Straight Up","Strange Fruit","Stranger On the Shore","Strangers in the Night","Strawberry Fields Forever","Streets of Philadelphia","Stronger","Stuck On You","Sugar Shack","Sugar Sugar","Summer in the City","Summertime Blues","Sunday","Sunshine Superman","Sunshine of Your Love","Superstar","Superstition","Surfin' USA","Suspicious Minds","Swanee","Sweet Caroline (Good Times Never Seemed So Good)","Sweet Child O' Mine","Sweet Dreams (Are Made of This)","Sweet Georgia Brown","Sweet Home Alabama","Sweet Soul Music","Swinging On a Star","T For Texas (Blue Yodel No 1)","TSOP (The Sound of Philadelphia)","Take Me Home","Take My Breath Away","Take On Me","Take The 'A' Train","Take a Bow","Tammy","Tangerine","Tears in Heaven","Tears of a Clown","Temperature","Tennessee Waltz","Tequila","Tha Crossroads","Thank You (Falettinme be Mice Elf Again)","That Lucky Old Sun (Just Rolls Around Heaven All Day)","That Old Black Magic","That'll Be the Day","That's Amore","That's What Friends Are For","That's the Way (I Like It)","That's the Way Love Goes","The Boy is Mine","The Boys of Summer","The Christmas Song (Chestnuts Roasting On An Open Fire)","The End of the World","The First Time Ever I Saw Your Face","The Girl From Ipanema","The Glow-Worm","The Great Pretender","The Gypsy","The Hustle","The Joker","The Last Dance","The Letter","The Loco-Motion","The Long & Winding Road","The Love You Save","The Morning After","The Power of Love","The Prisoner's Song","The Reason","The Rose","The Sign","The Song From Moulin Rouge (Where Is Your Heart)","The Sounds of Silence","The Streak","The Sweet Escape","The Thing","The Tide is High","The Tracks of My Tears","The Twist","The Wanderer","The Way We Were","The Way You Look Tonight","The Way You Move","Theme From 'A Summer Place'","Theme From 'Greatest American Hero' (Believe It Or Not)","Theme From 'Shaft'","There goes my baby","These Boots Are Made For Walking","Third Man Theme","This Diamond Ring","This Guy's in Love With You","This Land is Your Land","This Love","This Ole House","This Used to Be My Playground","Three Coins in the Fountain","Three Times a Lady","Thrift Shop","Thriller","Ticket to Ride","Tie a Yellow Ribbon 'round the Old Oak Tree","Tiger Rag","Tighten Up","Tik-Toc","Till I Waltz Again With You","Till The End of Time","Time After Time","Time of the Season","To Sir","Tom Dooley","Tonight's the Night (Gonna Be Alright)","Too Close","Too Young","Tossing & Turning","Total Eclipse of the Heart","Touch Me","Toxic","Travellin' Band","Travellin' Man","Truly Madly Deeply","Turn! Turn! Turn! (To Everything There is a Season)","Tutti Frutti","Twist & Shout","Two Hearts","U Can't Touch This","U Got it Bad","Umbrella","Un-Break My Heart","Unbelievable","Unchained Melody","Uncle Albert (Admiral Halsey)","Under the Boardwalk","Under the Bridge","Unforgettable","Up Around the Bend","Up Up & Away","Up Where We Belong","Upside Down","Use Somebody","Vaya Con Dios (may God Be With You)","Venus","Vision of Love","Viva La Vida","Vogue","Volare","Wabash Cannonball","Waiting For a Girl Like You","Wake Me Up Before You Go Go","Wake Up Little Susie","Walk Don't Run","Walk Like a Man","Walk Like an Egyptian","Walk On By","Walk On the Wild Side","Walk This Way","Wannabe","Want Ads","Wanted","War","Waterfalls","Wayward Wind","We Are Family","We Are Young","We Are the Champions","We Are the World","We Belong Together","We Built This City","We Can Work it Out","We Didn't Start the Fire","We Found Love","We Got The Beat","We Will Rock You","We've Only Just Begun","Weak","Wedding Bell Blues","West End Blues","West End Girls","What Goes Around Comes Around","What a Fool Believes","What'd I Say","What's Going On?","What's Love Got to Do With It?","Whatcha Say","Wheel of Fortune","When Doves Cry","When You Wish Upon a Star","When a Man Loves a Woman","Where Did Our Love Go","Where is the Love?","Whip It","Whispering","White Christmas","White Rabbit","Whole Lotta Love","Whole Lotta Shakin' Goin' On","Whoomp! (There it Is)","Why Do Fools Fall in Love?","Why Don't You Believe Me?","Wichita Lineman","Wicked Game","Wild Thing","Wild Wild West","Will It Go Round In Circles","Will You Love Me Tomorrow","Winchester Cathedral","Wind Beneath My Wings","Wipe Out","Wishing Well","With Or Without You","Without Me","Without You","Woman","Won't Get Fooled Again","Wooly Bully","Working My Way Back to You","YMCA","Yakety Yak","Yeah!","Yellow Rose of Texas","Yesterday","You Ain't Seen Nothin' Yet","You Always Hurt the One You Love","You Are the Sunshine of My Life","You Belong With Me","You Belong to Me","You Can't Hurry Love","You Don't Bring Me Flowers","You Don't Have to Be a Star (To Be in My Show)","You Light Up My Life","You Make Me Feel Brand New","You Make Me Feel Like Dancing","You Really Got Me","You Send Me","You Sexy Thing","You Were Meant for Me","You make Me Wanna","You'll Never Know","You're Beautiful","You're So Vain","You're Still the One","You're the One That I Want","You've Got a Friend","You've Lost That Lovin' Feelin'","Your Cheatin' Heart","Your Song"];var ao={album:Ve$1,artist:Ye$1,genre:je$1,song_name:qe$1},Ue$1=ao;var Ze$1=["activist","artist","author","blogger","business owner","coach","creator","designer","developer","dreamer","educator","engineer","entrepreneur","environmentalist","film lover","filmmaker","foodie","founder","friend","gamer","geek","grad","inventor","leader","model","musician","nerd","parent","patriot","person","philosopher","photographer","public speaker","scientist","singer","streamer","student","teacher","traveler","veteran","writer"];var _e$1=["{{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}","{{word.noun}} {{person.bio_supporter}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}} {{internet.emoji}}"];var Qe$1=["advocate","devotee","enthusiast","fan","junkie","lover","supporter"];var Xe$1={generic:["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aimee","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arden","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","Edd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gayle","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"],female:["Mary","Patricia","Linda","Barbara","Elizabeth","Jennifer","Maria","Susan","Margaret","Dorothy","Lisa","Nancy","Karen","Betty","Helen","Sandra","Donna","Carol","Ruth","Sharon","Michelle","Laura","Sarah","Kimberly","Deborah","Jessica","Shirley","Cynthia","Angela","Melissa","Brenda","Amy","Anna","Rebecca","Virginia","Kathleen","Pamela","Martha","Debra","Amanda","Stephanie","Carolyn","Christine","Marie","Janet","Catherine","Frances","Ann","Joyce","Diane","Alice","Julie","Heather","Teresa","Doris","Gloria","Evelyn","Jean","Cheryl","Mildred","Katherine","Joan","Ashley","Judith","Rose","Janice","Kelly","Nicole","Judy","Christina","Kathy","Theresa","Beverly","Denise","Tammy","Irene","Jane","Lori","Rachel","Marilyn","Andrea","Kathryn","Louise","Sara","Anne","Jacqueline","Wanda","Bonnie","Julia","Ruby","Lois","Tina","Phyllis","Norma","Paula","Diana","Annie","Lillian","Emily","Robin","Peggy","Crystal","Gladys","Rita","Dawn","Connie","Florence","Tracy","Edna","Tiffany","Carmen","Rosa","Cindy","Grace","Wendy","Victoria","Edith","Kim","Sherry","Sylvia","Josephine","Thelma","Shannon","Sheila","Ethel","Ellen","Elaine","Marjorie","Carrie","Charlotte","Monica","Esther","Pauline","Emma","Juanita","Anita","Rhonda","Hazel","Amber","Eva","Debbie","April","Leslie","Clara","Lucille","Jamie","Joanne","Eleanor","Valerie","Danielle","Megan","Alicia","Suzanne","Michele","Gail","Bertha","Darlene","Veronica","Jill","Erin","Geraldine","Lauren","Cathy","Joann","Lorraine","Lynn","Sally","Regina","Erica","Beatrice","Dolores","Bernice","Audrey","Yvonne","Annette","June","Samantha","Marion","Dana","Stacy","Ana","Renee","Ida","Vivian","Roberta","Holly","Brittany","Melanie","Loretta","Yolanda","Jeanette","Laurie","Katie","Kristen","Vanessa","Alma","Sue","Elsie","Beth","Jeanne","Vicki","Carla","Tara","Rosemary","Eileen","Terri","Gertrude","Lucy","Tonya","Ella","Stacey","Wilma","Gina","Kristin","Jessie","Natalie","Agnes","Vera","Willie","Charlene","Bessie","Delores","Melinda","Pearl","Arlene","Maureen","Colleen","Allison","Tamara","Joy","Georgia","Constance","Lillie","Claudia","Jackie","Marcia","Tanya","Nellie","Minnie","Marlene","Heidi","Glenda","Lydia","Viola","Courtney","Marian","Stella","Caroline","Dora","Jo","Vickie","Mattie","Terry","Maxine","Irma","Mabel","Marsha","Myrtle","Lena","Christy","Deanna","Patsy","Hilda","Gwendolyn","Jennie","Nora","Margie","Nina","Cassandra","Leah","Penny","Kay","Priscilla","Naomi","Carole","Brandy","Olga","Billie","Dianne","Tracey","Leona","Jenny","Felicia","Sonia","Miriam","Velma","Becky","Bobbie","Violet","Kristina","Toni","Misty","Mae","Shelly","Daisy","Ramona","Sherri","Erika","Katrina","Claire","Lindsey","Lindsay","Geneva","Guadalupe","Belinda","Margarita","Sheryl","Cora","Faye","Ada","Natasha","Sabrina","Isabel","Marguerite","Hattie","Harriet","Molly","Cecilia","Kristi","Brandi","Blanche","Sandy","Rosie","Joanna","Iris","Eunice","Angie","Inez","Lynda","Madeline","Amelia","Alberta","Genevieve","Monique","Jodi","Janie","Maggie","Kayla","Sonya","Jan","Lee","Kristine","Candace","Fannie","Maryann","Opal","Alison","Yvette","Melody","Luz","Susie","Olivia","Flora","Shelley","Kristy","Mamie","Lula","Lola","Verna","Beulah","Antoinette","Candice","Juana","Jeannette","Pam","Kelli","Hannah","Whitney","Bridget","Karla","Celia","Latoya","Patty","Shelia","Gayle","Della","Vicky","Lynne","Sheri","Marianne","Kara","Jacquelyn","Erma","Blanca","Myra","Leticia","Pat","Krista","Roxanne","Angelica","Johnnie","Robyn","Francis","Adrienne","Rosalie","Alexandra","Brooke","Bethany","Sadie","Bernadette","Traci","Jody","Kendra","Jasmine","Nichole","Rachael","Chelsea","Mable","Ernestine","Muriel","Marcella","Elena","Krystal","Angelina","Nadine","Kari","Estelle","Dianna","Paulette","Lora","Mona","Doreen","Rosemarie","Angel","Desiree","Antonia","Hope","Ginger","Janis","Betsy","Christie","Freda","Mercedes","Meredith","Lynette","Teri","Cristina","Eula","Leigh","Meghan","Sophia","Eloise","Rochelle","Gretchen","Cecelia","Raquel","Henrietta","Alyssa","Jana","Kelley","Gwen","Kerry","Jenna","Tricia","Laverne","Olive","Alexis","Tasha","Silvia","Elvira","Casey","Delia","Sophie","Kate","Patti","Lorena","Kellie","Sonja","Lila","Lana","Darla","May","Mindy","Essie","Mandy","Lorene","Elsa","Josefina","Jeannie","Miranda","Dixie","Lucia","Marta","Faith","Lela","Johanna","Shari","Camille","Tami","Shawna","Elisa","Ebony","Melba","Ora","Nettie","Tabitha","Ollie","Jaime","Winifred","Kristie"],male:["James","John","Robert","Michael","William","David","Richard","Charles","Joseph","Thomas","Christopher","Daniel","Paul","Mark","Donald","George","Kenneth","Steven","Edward","Brian","Ronald","Anthony","Kevin","Jason","Matthew","Gary","Timothy","Jose","Larry","Jeffrey","Frank","Scott","Eric","Stephen","Andrew","Raymond","Gregory","Joshua","Jerry","Dennis","Walter","Patrick","Peter","Harold","Douglas","Henry","Carl","Arthur","Ryan","Roger","Joe","Juan","Jack","Albert","Jonathan","Justin","Terry","Gerald","Keith","Samuel","Willie","Ralph","Lawrence","Nicholas","Roy","Benjamin","Bruce","Brandon","Adam","Harry","Fred","Wayne","Billy","Steve","Louis","Jeremy","Aaron","Randy","Howard","Eugene","Carlos","Russell","Bobby","Victor","Martin","Ernest","Phillip","Todd","Jesse","Craig","Alan","Shawn","Clarence","Sean","Philip","Chris","Johnny","Earl","Jimmy","Antonio","Danny","Bryan","Tony","Luis","Mike","Stanley","Leonard","Nathan","Dale","Manuel","Rodney","Curtis","Norman","Allen","Marvin","Vincent","Glenn","Jeffery","Travis","Jeff","Chad","Jacob","Lee","Melvin","Alfred","Kyle","Francis","Bradley","Jesus","Herbert","Frederick","Ray","Joel","Edwin","Don","Eddie","Ricky","Troy","Randall","Barry","Alexander","Bernard","Mario","Leroy","Francisco","Marcus","Micheal","Theodore","Clifford","Miguel","Oscar","Jay","Jim","Tom","Calvin","Alex","Jon","Ronnie","Bill","Lloyd","Tommy","Leon","Derek","Warren","Darrell","Jerome","Floyd","Leo","Alvin","Tim","Wesley","Gordon","Dean","Greg","Jorge","Dustin","Pedro","Derrick","Dan","Lewis","Zachary","Corey","Herman","Maurice","Vernon","Roberto","Clyde","Glen","Hector","Shane","Ricardo","Sam","Rick","Lester","Brent","Ramon","Charlie","Tyler","Gilbert","Gene","Marc","Reginald","Ruben","Brett","Angel","Nathaniel","Rafael","Leslie","Edgar","Milton","Raul","Ben","Chester","Cecil","Duane","Franklin","Andre","Elmer","Brad","Gabriel","Ron","Mitchell","Roland","Arnold","Harvey","Jared","Adrian","Karl","Cory","Claude","Erik","Darryl","Jamie","Neil","Jessie","Christian","Javier","Fernando","Clinton","Ted","Mathew","Tyrone","Darren","Lonnie","Lance","Cody","Julio","Kelly","Kurt","Allan","Nelson","Guy","Clayton","Hugh","Max","Dwayne","Dwight","Armando","Felix","Jimmie","Everett","Jordan","Ian","Wallace","Ken","Bob","Jaime","Casey","Alfredo","Alberto","Dave","Ivan","Johnnie","Sidney","Byron","Julian","Isaac","Morris","Clifton","Willard","Daryl","Ross","Virgil","Andy","Marshall","Salvador","Perry","Kirk","Sergio","Marion","Tracy","Seth","Kent","Terrance","Rene","Eduardo","Terrence","Enrique","Freddie","Wade","Austin","Stuart","Fredrick","Arturo","Alejandro","Jackie","Joey","Nick","Luther","Wendell","Jeremiah","Evan","Julius","Dana","Donnie","Otis","Shannon","Trevor","Oliver","Luke","Homer","Gerard","Doug","Kenny","Hubert","Angelo","Shaun","Lyle","Matt","Lynn","Alfonso","Orlando","Rex","Carlton","Ernesto","Cameron","Neal","Pablo","Lorenzo","Omar","Wilbur","Blake","Grant","Horace","Roderick","Kerry","Abraham","Willis","Rickey","Jean","Ira","Andres","Cesar","Johnathan","Malcolm","Rudolph","Damon","Kelvin","Rudy","Preston","Alton","Archie","Marco","Wm","Pete","Randolph","Garry","Geoffrey","Jonathon","Felipe","Bennie","Gerardo","Ed","Dominic","Robin","Loren","Delbert","Colin","Guillermo","Earnest","Lucas","Benny","Noel","Spencer","Rodolfo","Myron","Edmund","Garrett","Salvatore","Cedric","Lowell","Gregg","Sherman","Wilson","Devin","Sylvester","Kim","Roosevelt","Israel","Jermaine","Forrest","Wilbert","Leland","Simon","Guadalupe","Clark","Irving","Carroll","Bryant","Owen","Rufus","Woodrow","Sammy","Kristopher","Mack","Levi","Marcos","Gustavo","Jake","Lionel","Marty","Taylor","Ellis","Dallas","Gilberto","Clint","Nicolas","Laurence","Ismael","Orville","Drew","Jody","Ervin","Dewey","Al","Wilfred","Josh","Hugo","Ignacio","Caleb","Tomas","Sheldon","Erick","Frankie","Stewart","Doyle","Darrel","Rogelio","Terence","Santiago","Alonzo","Elias","Bert","Elbert","Ramiro","Conrad","Pat","Noah","Grady","Phil","Cornelius","Lamar","Rolando","Clay","Percy","Dexter","Bradford","Merle","Darin","Amos","Terrell","Moses","Irvin","Saul","Roman","Darnell","Randal","Tommie","Timmy","Darrin","Winston","Brendan","Toby","Van","Abel","Dominick","Boyd","Courtney","Jan","Emilio","Elijah","Cary","Domingo","Santos","Aubrey","Emmett","Marlon","Emanuel","Jerald","Edmond"]};var $e$1=["Agender","Androgyne","Androgynous","Bigender","Cis female","Cis male","Cis man","Cis woman","Cis","Cisgender female","Cisgender male","Cisgender man","Cisgender woman","Cisgender","Demi-boy","Demi-girl","Demi-man","Demi-woman","Demiflux","Demigender","F2M","FTM","Female to male trans man","Female to male transgender man","Female to male transsexual man","Female to male","Gender fluid","Gender neutral","Gender nonconforming","Gender questioning","Gender variant","Genderflux","Genderqueer","Hermaphrodite","Intersex man","Intersex person","Intersex woman","Intersex","M2F","MTF","Male to female trans woman","Male to female transgender woman","Male to female transsexual woman","Male to female","Man","Multigender","Neither","Neutrois","Non-binary","Omnigender","Other","Pangender","Polygender","T* man","T* woman","Trans female","Trans male","Trans man","Trans person","Trans woman","Trans","Transsexual female","Transsexual male","Transsexual man","Transsexual person","Transsexual woman","Transsexual","Transgender female","Transgender person","Transmasculine","Trigender","Two* person","Two-spirit person","Two-spirit","Woman","Xenogender"];var ea=["Solutions","Program","Brand","Security","Research","Marketing","Directives","Implementation","Integration","Functionality","Response","Paradigm","Tactics","Identity","Markets","Group","Division","Applications","Optimization","Operations","Infrastructure","Intranet","Communications","Web","Branding","Quality","Assurance","Mobility","Accounts","Data","Creative","Configuration","Accountability","Interactions","Factors","Usability","Metrics"];var aa=["Lead","Senior","Direct","Corporate","Dynamic","Future","Product","National","Regional","District","Central","Global","Customer","Investor","International","Legacy","Forward","Internal","Human","Chief","Principal"];var oa=["{{person.jobDescriptor}} {{person.jobArea}} {{person.jobType}}"];var ra=["Supervisor","Associate","Executive","Liaison","Officer","Manager","Engineer","Specialist","Director","Coordinator","Administrator","Architect","Analyst","Designer","Planner","Orchestrator","Technician","Developer","Producer","Consultant","Assistant","Facilitator","Agent","Representative","Strategist"];var na={generic:["Abbott","Abernathy","Abshire","Adams","Altenwerth","Anderson","Ankunding","Armstrong","Auer","Aufderhar","Bahringer","Bailey","Balistreri","Barrows","Bartell","Bartoletti","Barton","Bashirian","Batz","Bauch","Baumbach","Bayer","Beahan","Beatty","Bechtelar","Becker","Bednar","Beer","Beier","Berge","Bergnaum","Bergstrom","Bernhard","Bernier","Bins","Blanda","Blick","Block","Bode","Boehm","Bogan","Bogisich","Borer","Bosco","Botsford","Boyer","Boyle","Bradtke","Brakus","Braun","Breitenberg","Brekke","Brown","Bruen","Buckridge","Carroll","Carter","Cartwright","Casper","Cassin","Champlin","Christiansen","Cole","Collier","Collins","Conn","Connelly","Conroy","Considine","Corkery","Cormier","Corwin","Cremin","Crist","Crona","Cronin","Crooks","Cruickshank","Cummerata","Cummings","Dach","D'Amore","Daniel","Dare","Daugherty","Davis","Deckow","Denesik","Dibbert","Dickens","Dicki","Dickinson","Dietrich","Donnelly","Dooley","Douglas","Doyle","DuBuque","Durgan","Ebert","Effertz","Emard","Emmerich","Erdman","Ernser","Fadel","Fahey","Farrell","Fay","Feeney","Feest","Feil","Ferry","Fisher","Flatley","Frami","Franecki","Franey","Friesen","Fritsch","Funk","Gerhold","Gerlach","Gibson","Gislason","Gleason","Gleichner","Glover","Goldner","Goodwin","Gorczany","Gottlieb","Goyette","Grady","Graham","Grant","Green","Greenfelder","Greenholt","Grimes","Gulgowski","Gusikowski","Gutkowski","Gutmann","Haag","Hackett","Hagenes","Hahn","Haley","Halvorson","Hamill","Hammes","Hand","Hane","Hansen","Harber","Harris","Hartmann","Harvey","Hauck","Hayes","Heaney","Heathcote","Hegmann","Heidenreich","Heller","Herman","Hermann","Hermiston","Herzog","Hessel","Hettinger","Hickle","Hilll","Hills","Hilpert","Hintz","Hirthe","Hodkiewicz","Hoeger","Homenick","Hoppe","Howe","Howell","Hudson","Huel","Huels","Hyatt","Jacobi","Jacobs","Jacobson","Jakubowski","Jaskolski","Jast","Jenkins","Jerde","Johns","Johnson","Johnston","Jones","Kassulke","Kautzer","Keebler","Keeling","Kemmer","Kerluke","Kertzmann","Kessler","Kiehn","Kihn","Kilback","King","Kirlin","Klein","Kling","Klocko","Koch","Koelpin","Koepp","Kohler","Konopelski","Koss","Kovacek","Kozey","Krajcik","Kreiger","Kris","Kshlerin","Kub","Kuhic","Kuhlman","Kuhn","Kulas","Kunde","Kunze","Kuphal","Kutch","Kuvalis","Labadie","Lakin","Lang","Langosh","Langworth","Larkin","Larson","Leannon","Lebsack","Ledner","Leffler","Legros","Lehner","Lemke","Lesch","Leuschke","Lind","Lindgren","Littel","Little","Lockman","Lowe","Lubowitz","Lueilwitz","Luettgen","Lynch","Macejkovic","MacGyver","Maggio","Mann","Mante","Marks","Marquardt","Marvin","Mayer","Mayert","McClure","McCullough","McDermott","McGlynn","McKenzie","McLaughlin","Medhurst","Mertz","Metz","Miller","Mills","Mitchell","Moen","Mohr","Monahan","Moore","Morar","Morissette","Mosciski","Mraz","Mueller","Muller","Murazik","Murphy","Murray","Nader","Nicolas","Nienow","Nikolaus","Nitzsche","Nolan","Oberbrunner","O'Connell","O'Conner","O'Hara","O'Keefe","O'Kon","Okuneva","Olson","Ondricka","O'Reilly","Orn","Ortiz","Osinski","Pacocha","Padberg","Pagac","Parisian","Parker","Paucek","Pfannerstill","Pfeffer","Pollich","Pouros","Powlowski","Predovic","Price","Prohaska","Prosacco","Purdy","Quigley","Quitzon","Rath","Ratke","Rau","Raynor","Reichel","Reichert","Reilly","Reinger","Rempel","Renner","Reynolds","Rice","Rippin","Ritchie","Robel","Roberts","Rodriguez","Rogahn","Rohan","Rolfson","Romaguera","Roob","Rosenbaum","Rowe","Ruecker","Runolfsdottir","Runolfsson","Runte","Russel","Rutherford","Ryan","Sanford","Satterfield","Sauer","Sawayn","Schaden","Schaefer","Schamberger","Schiller","Schimmel","Schinner","Schmeler","Schmidt","Schmitt","Schneider","Schoen","Schowalter","Schroeder","Schulist","Schultz","Schumm","Schuppe","Schuster","Senger","Shanahan","Shields","Simonis","Sipes","Skiles","Smith","Smitham","Spencer","Spinka","Sporer","Stamm","Stanton","Stark","Stehr","Steuber","Stiedemann","Stokes","Stoltenberg","Stracke","Streich","Stroman","Strosin","Swaniawski","Swift","Terry","Thiel","Thompson","Tillman","Torp","Torphy","Towne","Toy","Trantow","Tremblay","Treutel","Tromp","Turcotte","Turner","Ullrich","Upton","Vandervort","Veum","Volkman","Von","VonRueden","Waelchi","Walker","Walsh","Walter","Ward","Waters","Watsica","Weber","Wehner","Weimann","Weissnat","Welch","West","White","Wiegand","Wilderman","Wilkinson","Will","Williamson","Willms","Windler","Wintheiser","Wisoky","Wisozk","Witting","Wiza","Wolf","Wolff","Wuckert","Wunsch","Wyman","Yost","Yundt","Zboncak","Zemlak","Ziemann","Zieme","Zulauf"]};var ia={generic:[{value:"{{person.last_name.generic}}",weight:95},{value:"{{person.last_name.generic}}-{{person.last_name.generic}}",weight:5}]};var ta={generic:["Addison","Alex","Anderson","Angel","Arden","August","Austin","Avery","Bailey","Billie","Blake","Bowie","Brooklyn","Cameron","Charlie","Corey","Dakota","Drew","Elliott","Ellis","Emerson","Finley","Gray","Greer","Harper","Hayden","Jaden","James","Jamie","Jordan","Jules","Kai","Kendall","Kennedy","Kyle","Leslie","Logan","London","Marlowe","Micah","Nico","Noah","North","Parker","Phoenix","Quinn","Reagan","Reese","Reign","Riley","River","Robin","Rory","Rowan","Ryan","Sage","Sasha","Sawyer","Shawn","Shiloh","Skyler","Taylor"],female:["Abigail","Adele","Alex","Alice","Alisha","Amber","Amelia","Amora","Ana\xEFs","Angelou","Anika","Anise","Annabel","Anne","Aphrodite","Aretha","Arya","Ashton","Aster","Audrey","Avery","Bailee","Bay","Belle","Beth","Billie","Blair","Blaise","Blake","Blanche","Blue","Bree","Brielle","Brienne","Brooke","Caleen","Candice","Caprice","Carelyn","Caylen","Celine","Cerise","Cia","Claire","Claudia","Clementine","Coral","Coraline","Dahlia","Dakota","Dawn","Della","Demi","Denise","Denver","Devine","Devon","Diana","Dylan","Ebony","Eden","Eleanor","Elein","Elizabeth","Ellen","Elodie","Eloise","Ember","Emma","Erin","Eyre","Faith","Farrah","Fawn","Fayre","Fern","France","Francis","Frida","Genisis","Georgia","Grace","Gwen","Harley","Harper","Hazel","Helen","Hippolyta","Holly","Hope","Imani","Iowa","Ireland","Irene","Iris","Isa","Isla","Ivy","Jade","Jane","Jazz","Jean","Jess","Jett","Jo","Joan","Jolie","Jordan","Josie","Journey","Joy","Jules","Julien","Juliet","Juniper","Justice","Kali","Karma","Kat","Kate","Kennedy","Keva","Kylie","Lake","Lane","Lark","Layla","Lee","Leigh","Leona","Lexi","London","Lou","Louise","Love","Luna","Lux","Lynn","Lyric","Maddie","Mae","Marie","Matilda","Maude","Maybel","Meadow","Medusa","Mercy","Michelle","Mirabel","Monroe","Morgan","Nalia","Naomi","Nova","Olive","Paige","Parker","Pax","Pearl","Penelope","Phoenix","Quinn","Rae","Rain","Raven","Ray","Raye","Rebel","Reese","Reeve","Regan","Riley","River","Robin","Rory","Rose","Royal","Ruth","Rylie","Sage","Sam","Saturn","Scout","Serena","Sky","Skylar","Sofia","Sophia","Storm","Sue","Suzanne","Sydney","Taylen","Taylor","Teagan","Tempest","Tenley","Thea","Trinity","Valerie","Venus","Vera","Violet","Willow","Winter","Xena","Zaylee","Zion","Zoe"],male:["Ace","Aiden","Alexander","Ander","Anthony","Asher","August","Aziel","Bear","Beckham","Benjamin","Buddy","Calvin","Carter","Charles","Christopher","Clyde","Cooper","Daniel","David","Dior","Dylan","Elijah","Ellis","Emerson","Ethan","Ezra","Fletcher","Flynn","Gabriel","Grayson","Gus","Hank","Harrison","Hendrix","Henry","Houston","Hudson","Hugh","Isaac","Jack","Jackson","Jacob","Jakobe","James","Jaxon","Jaxtyn","Jayden","John","Joseph","Josiah","Jude","Julian","Karsyn","Kenji","Kobe","Kylo","Lennon","Leo","Levi","Liam","Lincoln","Logan","Louis","Lucas","Lucky","Luke","Mason","Mateo","Matthew","Maverick","Michael","Monroe","Nixon","Ocean","Oliver","Otis","Otto","Owen","Ozzy","Parker","Rocky","Samuel","Sebastian","Sonny","Teddy","Theo","Theodore","Thomas","Truett","Walter","Warren","Watson","William","Wison","Wyatt","Ziggy","Zyair"]};var la=[{value:"{{person.firstName}} {{person.lastName}}",weight:49},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}}",weight:7},{value:"{{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:7},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:1}];var sa={generic:["Dr.","Miss","Mr.","Mrs.","Ms."],female:["Mrs.","Ms.","Miss","Dr."],male:["Mr.","Dr."]};var da=["female","male"];var ua=["Jr.","Sr.","I","II","III","IV","V","MD","DDS","PhD","DVM"];var ca=["Aquarius","Pisces","Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn"];var oo={bio_part:Ze$1,bio_pattern:_e$1,bio_supporter:Qe$1,first_name:Xe$1,gender:$e$1,job_area:ea,job_descriptor:aa,job_title_pattern:oa,job_type:ra,last_name:na,last_name_pattern:ia,middle_name:ta,name:la,prefix:sa,sex:da,suffix:ua,western_zodiac_sign:ca},ma=oo;var ha=["!##-!##-####","(!##) !##-####","1-!##-!##-####","!##.!##.####","!##-!##-#### x###","(!##) !##-#### x###","1-!##-!##-#### x###","!##.!##.#### x###","!##-!##-#### x####","(!##) !##-#### x####","1-!##-!##-#### x####","!##.!##.#### x####","!##-!##-#### x#####","(!##) !##-#### x#####","1-!##-!##-#### x#####","!##.!##.#### x#####"];var ya=["+1!##!######"];var pa=["(!##) !##-####"];var ro={human:ha,international:ya,national:pa},ga=ro;var no={format:ga},ba=no;var Sa=[{symbol:"H",name:"Hydrogen",atomicNumber:1},{symbol:"He",name:"Helium",atomicNumber:2},{symbol:"Li",name:"Lithium",atomicNumber:3},{symbol:"Be",name:"Beryllium",atomicNumber:4},{symbol:"B",name:"Boron",atomicNumber:5},{symbol:"C",name:"Carbon",atomicNumber:6},{symbol:"N",name:"Nitrogen",atomicNumber:7},{symbol:"O",name:"Oxygen",atomicNumber:8},{symbol:"F",name:"Fluorine",atomicNumber:9},{symbol:"Ne",name:"Neon",atomicNumber:10},{symbol:"Na",name:"Sodium",atomicNumber:11},{symbol:"Mg",name:"Magnesium",atomicNumber:12},{symbol:"Al",name:"Aluminium",atomicNumber:13},{symbol:"Si",name:"Silicon",atomicNumber:14},{symbol:"P",name:"Phosphorus",atomicNumber:15},{symbol:"S",name:"Sulfur",atomicNumber:16},{symbol:"Cl",name:"Chlorine",atomicNumber:17},{symbol:"Ar",name:"Argon",atomicNumber:18},{symbol:"K",name:"Potassium",atomicNumber:19},{symbol:"Ca",name:"Calcium",atomicNumber:20},{symbol:"Sc",name:"Scandium",atomicNumber:21},{symbol:"Ti",name:"Titanium",atomicNumber:22},{symbol:"V",name:"Vanadium",atomicNumber:23},{symbol:"Cr",name:"Chromium",atomicNumber:24},{symbol:"Mn",name:"Manganese",atomicNumber:25},{symbol:"Fe",name:"Iron",atomicNumber:26},{symbol:"Co",name:"Cobalt",atomicNumber:27},{symbol:"Ni",name:"Nickel",atomicNumber:28},{symbol:"Cu",name:"Copper",atomicNumber:29},{symbol:"Zn",name:"Zinc",atomicNumber:30},{symbol:"Ga",name:"Gallium",atomicNumber:31},{symbol:"Ge",name:"Germanium",atomicNumber:32},{symbol:"As",name:"Arsenic",atomicNumber:33},{symbol:"Se",name:"Selenium",atomicNumber:34},{symbol:"Br",name:"Bromine",atomicNumber:35},{symbol:"Kr",name:"Krypton",atomicNumber:36},{symbol:"Rb",name:"Rubidium",atomicNumber:37},{symbol:"Sr",name:"Strontium",atomicNumber:38},{symbol:"Y",name:"Yttrium",atomicNumber:39},{symbol:"Zr",name:"Zirconium",atomicNumber:40},{symbol:"Nb",name:"Niobium",atomicNumber:41},{symbol:"Mo",name:"Molybdenum",atomicNumber:42},{symbol:"Tc",name:"Technetium",atomicNumber:43},{symbol:"Ru",name:"Ruthenium",atomicNumber:44},{symbol:"Rh",name:"Rhodium",atomicNumber:45},{symbol:"Pd",name:"Palladium",atomicNumber:46},{symbol:"Ag",name:"Silver",atomicNumber:47},{symbol:"Cd",name:"Cadmium",atomicNumber:48},{symbol:"In",name:"Indium",atomicNumber:49},{symbol:"Sn",name:"Tin",atomicNumber:50},{symbol:"Sb",name:"Antimony",atomicNumber:51},{symbol:"Te",name:"Tellurium",atomicNumber:52},{symbol:"I",name:"Iodine",atomicNumber:53},{symbol:"Xe",name:"Xenon",atomicNumber:54},{symbol:"Cs",name:"Caesium",atomicNumber:55},{symbol:"Ba",name:"Barium",atomicNumber:56},{symbol:"La",name:"Lanthanum",atomicNumber:57},{symbol:"Ce",name:"Cerium",atomicNumber:58},{symbol:"Pr",name:"Praseodymium",atomicNumber:59},{symbol:"Nd",name:"Neodymium",atomicNumber:60},{symbol:"Pm",name:"Promethium",atomicNumber:61},{symbol:"Sm",name:"Samarium",atomicNumber:62},{symbol:"Eu",name:"Europium",atomicNumber:63},{symbol:"Gd",name:"Gadolinium",atomicNumber:64},{symbol:"Tb",name:"Terbium",atomicNumber:65},{symbol:"Dy",name:"Dysprosium",atomicNumber:66},{symbol:"Ho",name:"Holmium",atomicNumber:67},{symbol:"Er",name:"Erbium",atomicNumber:68},{symbol:"Tm",name:"Thulium",atomicNumber:69},{symbol:"Yb",name:"Ytterbium",atomicNumber:70},{symbol:"Lu",name:"Lutetium",atomicNumber:71},{symbol:"Hf",name:"Hafnium",atomicNumber:72},{symbol:"Ta",name:"Tantalum",atomicNumber:73},{symbol:"W",name:"Tungsten",atomicNumber:74},{symbol:"Re",name:"Rhenium",atomicNumber:75},{symbol:"Os",name:"Osmium",atomicNumber:76},{symbol:"Ir",name:"Iridium",atomicNumber:77},{symbol:"Pt",name:"Platinum",atomicNumber:78},{symbol:"Au",name:"Gold",atomicNumber:79},{symbol:"Hg",name:"Mercury",atomicNumber:80},{symbol:"Tl",name:"Thallium",atomicNumber:81},{symbol:"Pb",name:"Lead",atomicNumber:82},{symbol:"Bi",name:"Bismuth",atomicNumber:83},{symbol:"Po",name:"Polonium",atomicNumber:84},{symbol:"At",name:"Astatine",atomicNumber:85},{symbol:"Rn",name:"Radon",atomicNumber:86},{symbol:"Fr",name:"Francium",atomicNumber:87},{symbol:"Ra",name:"Radium",atomicNumber:88},{symbol:"Ac",name:"Actinium",atomicNumber:89},{symbol:"Th",name:"Thorium",atomicNumber:90},{symbol:"Pa",name:"Protactinium",atomicNumber:91},{symbol:"U",name:"Uranium",atomicNumber:92},{symbol:"Np",name:"Neptunium",atomicNumber:93},{symbol:"Pu",name:"Plutonium",atomicNumber:94},{symbol:"Am",name:"Americium",atomicNumber:95},{symbol:"Cm",name:"Curium",atomicNumber:96},{symbol:"Bk",name:"Berkelium",atomicNumber:97},{symbol:"Cf",name:"Californium",atomicNumber:98},{symbol:"Es",name:"Einsteinium",atomicNumber:99},{symbol:"Fm",name:"Fermium",atomicNumber:100},{symbol:"Md",name:"Mendelevium",atomicNumber:101},{symbol:"No",name:"Nobelium",atomicNumber:102},{symbol:"Lr",name:"Lawrencium",atomicNumber:103},{symbol:"Rf",name:"Rutherfordium",atomicNumber:104},{symbol:"Db",name:"Dubnium",atomicNumber:105},{symbol:"Sg",name:"Seaborgium",atomicNumber:106},{symbol:"Bh",name:"Bohrium",atomicNumber:107},{symbol:"Hs",name:"Hassium",atomicNumber:108},{symbol:"Mt",name:"Meitnerium",atomicNumber:109},{symbol:"Ds",name:"Darmstadtium",atomicNumber:110},{symbol:"Rg",name:"Roentgenium",atomicNumber:111},{symbol:"Cn",name:"Copernicium",atomicNumber:112},{symbol:"Nh",name:"Nihonium",atomicNumber:113},{symbol:"Fl",name:"Flerovium",atomicNumber:114},{symbol:"Mc",name:"Moscovium",atomicNumber:115},{symbol:"Lv",name:"Livermorium",atomicNumber:116},{symbol:"Ts",name:"Tennessine",atomicNumber:117},{symbol:"Og",name:"Oganesson",atomicNumber:118}];var ka=[{name:"meter",symbol:"m"},{name:"second",symbol:"s"},{name:"mole",symbol:"mol"},{name:"ampere",symbol:"A"},{name:"kelvin",symbol:"K"},{name:"candela",symbol:"cd"},{name:"kilogram",symbol:"kg"},{name:"radian",symbol:"rad"},{name:"hertz",symbol:"Hz"},{name:"newton",symbol:"N"},{name:"pascal",symbol:"Pa"},{name:"joule",symbol:"J"},{name:"watt",symbol:"W"},{name:"coulomb",symbol:"C"},{name:"volt",symbol:"V"},{name:"ohm",symbol:"\u03A9"},{name:"tesla",symbol:"T"},{name:"degree Celsius",symbol:"\xB0C"},{name:"lumen",symbol:"lm"},{name:"becquerel",symbol:"Bq"},{name:"gray",symbol:"Gy"},{name:"sievert",symbol:"Sv"},{name:"steradian",symbol:"sr"},{name:"farad",symbol:"F"},{name:"siemens",symbol:"S"},{name:"weber",symbol:"Wb"},{name:"henry",symbol:"H"},{name:"lux",symbol:"lx"},{name:"katal",symbol:"kat"}];var io={chemical_element:Sa,unit:ka},Ca=io;var fa=["ants","bats","bears","bees","birds","buffalo","cats","chickens","cattle","dogs","dolphins","ducks","elephants","fishes","foxes","frogs","geese","goats","horses","kangaroos","lions","monkeys","owls","oxen","penguins","people","pigs","rabbits","sheep","tigers","whales","wolves","zebras","banshees","crows","black cats","chimeras","ghosts","conspirators","dragons","dwarves","elves","enchanters","exorcists","sons","foes","giants","gnomes","goblins","gooses","griffins","lycanthropes","nemesis","ogres","oracles","prophets","sorcerors","spiders","spirits","vampires","warlocks","vixens","werewolves","witches","worshipers","zombies","druids"];var va=["{{location.state}} {{team.creature}}"];var to={creature:fa,name:va},Aa=to;var Ba=["Adventure Road Bicycle","BMX Bicycle","City Bicycle","Cruiser Bicycle","Cyclocross Bicycle","Dual-Sport Bicycle","Fitness Bicycle","Flat-Foot Comfort Bicycle","Folding Bicycle","Hybrid Bicycle","Mountain Bicycle","Recumbent Bicycle","Road Bicycle","Tandem Bicycle","Touring Bicycle","Track/Fixed-Gear Bicycle","Triathlon/Time Trial Bicycle","Tricycle"];var wa=["Diesel","Electric","Gasoline","Hybrid"];var Ma=["Aston Martin","Audi","BMW","Bentley","Bugatti","Cadillac","Chevrolet","Chrysler","Dodge","Ferrari","Fiat","Ford","Honda","Hyundai","Jaguar","Jeep","Kia","Lamborghini","Land Rover","Maserati","Mazda","Mercedes Benz","Mini","Nissan","Polestar","Porsche","Rolls Royce","Smart","Tesla","Toyota","Volkswagen","Volvo"];var Ta=["1","2","911","A4","A8","ATS","Accord","Alpine","Altima","Aventador","Beetle","CTS","CX-9","Camaro","Camry","Challenger","Charger","Civic","Colorado","Corvette","Countach","Cruze","Durango","El Camino","Element","Escalade","Expedition","Explorer","F-150","Fiesta","Focus","Fortwo","Golf","Grand Caravan","Grand Cherokee","Impala","Jetta","Land Cruiser","LeBaron","Malibu","Mercielago","Model 3","Model S","Model T","Model X","Model Y","Mustang","PT Cruiser","Prius","Ranchero","Roadster","Sentra","Silverado","Spyder","Taurus","V90","Volt","Wrangler","XC90","XTS"];var La=["Cargo Van","Convertible","Coupe","Crew Cab Pickup","Extended Cab Pickup","Hatchback","Minivan","Passenger Van","SUV","Sedan","Wagon"];var lo={bicycle_type:Ba,fuel:wa,manufacturer:Ma,model:Ta,type:La},Da=lo;var Ra=["abandoned","able","acceptable","acclaimed","accomplished","accurate","aching","acidic","actual","admired","adolescent","advanced","affectionate","afraid","aged","aggravating","aggressive","agile","agitated","agreeable","ajar","alarmed","alert","alienated","alive","all","altruistic","amazing","ambitious","ample","amused","angelic","anguished","animated","annual","another","antique","any","apprehensive","appropriate","apt","arid","artistic","ashamed","assured","astonishing","athletic","austere","authentic","authorized","avaricious","average","aware","awesome","awful","babyish","back","bad","baggy","bare","basic","beloved","beneficial","best","better","big","biodegradable","bitter","black","black-and-white","blank","blaring","bleak","blind","blond","blue","blushing","bogus","boiling","bony","boring","bossy","both","bouncy","bowed","brave","breakable","bright","brilliant","brisk","broken","brown","bruised","bulky","burdensome","burly","bustling","busy","buttery","buzzing","calculating","candid","carefree","careless","caring","cautious","cavernous","celebrated","charming","cheap","cheerful","chilly","chubby","circular","classic","clean","clear","clear-cut","close","closed","cloudy","clueless","clumsy","cluttered","coarse","colorful","colorless","colossal","comfortable","common","compassionate","competent","complete","complicated","concerned","concrete","confused","considerate","content","cool","cooperative","coordinated","corny","corrupt","courageous","courteous","crafty","crazy","creamy","creative","criminal","critical","crooked","crowded","cruel","crushing","cuddly","cultivated","cumbersome","curly","cute","damaged","damp","dapper","dark","darling","dazzling","dead","deadly","deafening","dearest","decent","decisive","deep","defenseless","defensive","deficient","definite","definitive","delectable","delicious","delirious","dense","dental","dependable","dependent","descriptive","deserted","determined","devoted","different","difficult","digital","diligent","dim","direct","dirty","discrete","disloyal","dismal","distant","distinct","distorted","doting","downright","drab","dramatic","dreary","dual","dull","dutiful","each","early","earnest","easy","ecstatic","edible","educated","elastic","elderly","electric","elegant","elementary","elliptical","eminent","emotional","empty","enchanted","enchanting","energetic","enlightened","enraged","entire","equatorial","essential","esteemed","ethical","everlasting","every","evil","exalted","excellent","excitable","excited","exhausted","exotic","expensive","experienced","expert","extra-large","extroverted","failing","faint","fair","fake","familiar","fantastic","far","far-flung","far-off","faraway","fat","fatal","fatherly","favorable","favorite","fearless","feline","filthy","fine","finished","firm","first","firsthand","fixed","flashy","flawed","flawless","flickering","flimsy","flowery","fluffy","flustered","focused","fond","foolhardy","foolish","forceful","formal","forsaken","fortunate","fragrant","frail","frank","free","french","frequent","friendly","frightened","frilly","frivolous","frizzy","front","frozen","frugal","fruitful","functional","funny","fussy","fuzzy","gaseous","general","gentle","genuine","gifted","gigantic","giving","glaring","glass","gleaming","glittering","gloomy","glorious","glossy","glum","golden","good","good-natured","gorgeous","graceful","gracious","grandiose","granular","grave","gray","great","greedy","grim","grimy","gripping","grizzled","grouchy","grounded","growing","grown","grubby","gruesome","grumpy","guilty","gullible","gummy","hairy","handsome","handy","happy","happy-go-lucky","hard-to-find","harmful","hasty","hateful","haunting","heartfelt","heavenly","heavy","hefty","helpful","helpless","hidden","hoarse","hollow","homely","honorable","honored","hopeful","hospitable","hot","huge","humble","humiliating","hungry","hurtful","husky","icy","ideal","idealistic","idolized","ignorant","ill","ill-fated","illiterate","illustrious","imaginary","imaginative","immaculate","immediate","immense","impartial","impassioned","impeccable","impish","impolite","important","impossible","impractical","impressionable","impressive","improbable","impure","inborn","incomparable","incomplete","inconsequential","indelible","indolent","inexperienced","infamous","infatuated","inferior","infinite","informal","innocent","insecure","insidious","insignificant","insistent","instructive","intelligent","intent","interesting","internal","international","intrepid","ironclad","irresponsible","jagged","jam-packed","jaunty","jealous","jittery","joyful","joyous","jubilant","judicious","juicy","jumbo","junior","juvenile","kaleidoscopic","key","knotty","knowledgeable","known","kooky","kosher","lanky","last","lasting","late","lavish","lawful","lazy","leading","lean","left","legal","light","lighthearted","likable","likely","limited","limp","limping","linear","lined","liquid","little","live","lively","livid","lone","lonely","long","long-term","lost","lovable","lovely","low","lucky","lumbering","lumpy","lustrous","mad","made-up","magnificent","majestic","major","male","mammoth","married","marvelous","massive","mature","meager","mealy","mean","measly","meaty","mediocre","medium","memorable","menacing","merry","messy","metallic","mild","milky","mindless","minor","minty","miserable","miserly","misguided","mixed","moist","monstrous","monthly","monumental","moral","motionless","muddy","muffled","multicolored","mundane","murky","mushy","musty","muted","mysterious","narrow","natural","naughty","nautical","near","neat","necessary","needy","negative","neglected","negligible","neighboring","nervous","new","next","nice","nifty","nimble","nippy","nocturnal","normal","noted","noteworthy","noxious","numb","nutritious","obedient","oblong","obvious","odd","oddball","official","oily","old","old-fashioned","only","optimal","optimistic","orange","orderly","ordinary","ornate","ornery","other","our","outgoing","outlandish","outlying","outrageous","outstanding","oval","overcooked","overdue","palatable","pale","paltry","parallel","parched","partial","passionate","pastel","peaceful","peppery","perfumed","perky","personal","pertinent","pessimistic","petty","phony","physical","pink","pitiful","plain","pleasant","pleased","pleasing","plump","pointed","pointless","polished","polite","political","poor","portly","posh","possible","potable","powerful","powerless","practical","precious","present","prestigious","pretty","pricey","prickly","primary","prime","private","probable","productive","profitable","profuse","proper","proud","prudent","punctual","puny","pure","purple","pushy","putrid","puzzled","qualified","quarrelsome","quarterly","queasy","querulous","questionable","quick","quick-witted","quiet","quintessential","quixotic","radiant","ragged","rapid","rare","raw","realistic","reasonable","recent","reckless","rectangular","red","reflecting","regal","regular","remarkable","remorseful","repentant","respectful","responsible","rewarding","rich","right","rigid","ripe","roasted","robust","rosy","rotating","rotten","rough","round","rowdy","royal","rubbery","ruddy","rundown","runny","rural","rusty","sad","salty","same","sandy","sarcastic","sardonic","scaly","scared","scary","scented","scientific","scornful","scratchy","second","second-hand","secondary","secret","self-assured","self-reliant","selfish","sentimental","separate","serene","serpentine","severe","shabby","shadowy","shady","shallow","shameful","shameless","shimmering","shiny","shocked","shoddy","short","short-term","showy","shrill","shy","sick","silent","silky","silver","similar","simple","simplistic","sinful","sizzling","skeletal","sleepy","slight","slimy","slow","slushy","small","smart","smoggy","smooth","smug","snappy","snarling","sneaky","sniveling","snoopy","sociable","soft","soggy","somber","some","sophisticated","sore","sorrowful","soulful","soupy","sour","spanish","sparkling","sparse","specific","speedy","spherical","spiffy","spirited","spiteful","splendid","spotless","square","squeaky","squiggly","stable","staid","stained","stale","standard","stark","steel","steep","sticky","stiff","stingy","stormy","straight","strange","strict","strident","striking","strong","stunning","stupendous","sturdy","stylish","subdued","submissive","substantial","subtle","suburban","sudden","sugary","sunny","super","superb","superficial","superior","supportive","sure-footed","surprised","svelte","sweet","swift","talkative","tall","tame","tangible","tasty","tattered","taut","tedious","teeming","tempting","tender","tense","tepid","terrible","that","these","thick","thin","thorny","thorough","those","thrifty","tidy","tight","timely","tinted","tiny","tired","torn","total","tough","tragic","trained","triangular","tricky","trim","trivial","troubled","true","trusting","trustworthy","trusty","turbulent","twin","ugly","ultimate","unaware","uncomfortable","uncommon","unconscious","understated","uneven","unfinished","unfit","unfortunate","unhappy","unhealthy","uniform","unimportant","unique","unkempt","unknown","unlawful","unlined","unlucky","unpleasant","unrealistic","unripe","unruly","unselfish","unsightly","unsteady","unsung","untidy","untimely","untried","untrue","unused","unusual","unwelcome","unwieldy","unwilling","unwritten","upbeat","upright","upset","urban","usable","useless","utilized","utter","vague","vain","valuable","variable","vast","velvety","vengeful","vibrant","victorious","violent","vivacious","vivid","voluminous","warlike","warm","warmhearted","warped","wasteful","waterlogged","watery","wavy","wealthy","weary","webbed","wee","weekly","weighty","weird","well-documented","well-groomed","well-lit","well-made","well-off","well-to-do","well-worn","which","whimsical","whirlwind","whispered","white","whole","whopping","wicked","wide","wide-eyed","wiggly","willing","wilted","winding","windy","winged","wise","witty","wobbly","woeful","wonderful","wordy","worldly","worse","worst","worthless","worthwhile","worthy","wrathful","wretched","writhing","wrong","wry","yearly","yellow","yellowish","young","youthful","yummy","zany","zealous","zesty"];var Ha=["abnormally","absentmindedly","accidentally","acidly","actually","adventurously","afterwards","almost","always","angrily","annually","anxiously","arrogantly","awkwardly","badly","bashfully","beautifully","bitterly","bleakly","blindly","blissfully","boastfully","boldly","bravely","briefly","brightly","briskly","broadly","busily","calmly","carefully","carelessly","cautiously","certainly","cheerfully","clearly","cleverly","closely","coaxingly","colorfully","commonly","continually","coolly","correctly","courageously","crossly","cruelly","curiously","daily","daintily","dearly","deceivingly","deeply","defiantly","deliberately","delightfully","diligently","dimly","doubtfully","dreamily","easily","elegantly","energetically","enormously","enthusiastically","equally","especially","even","evenly","eventually","exactly","excitedly","extremely","fairly","faithfully","famously","far","fast","fatally","ferociously","fervently","fiercely","fondly","foolishly","fortunately","frankly","frantically","freely","frenetically","frightfully","fully","furiously","generally","generously","gently","gladly","gleefully","gracefully","gratefully","greatly","greedily","happily","hastily","healthily","heavily","helpfully","helplessly","highly","honestly","hopelessly","hourly","hungrily","immediately","innocently","inquisitively","instantly","intensely","intently","interestingly","inwardly","irritably","jaggedly","jealously","joshingly","jovially","joyfully","joyously","jubilantly","judgementally","justly","keenly","kiddingly","kindheartedly","kindly","kissingly","knavishly","knottily","knowingly","knowledgeably","kookily","lazily","less","lightly","likely","limply","lively","loftily","longingly","loosely","loudly","lovingly","loyally","madly","majestically","meaningfully","mechanically","merrily","miserably","mockingly","monthly","more","mortally","mostly","mysteriously","naturally","nearly","neatly","needily","nervously","never","nicely","noisily","not","obediently","obnoxiously","oddly","offensively","officially","often","only","openly","optimistically","overconfidently","owlishly","painfully","partially","patiently","perfectly","physically","playfully","politely","poorly","positively","potentially","powerfully","promptly","properly","punctually","quaintly","quarrelsomely","queasily","questionably","questioningly","quicker","quickly","quietly","quirkily","quizzically","rapidly","rarely","readily","really","reassuringly","recklessly","regularly","reluctantly","repeatedly","reproachfully","restfully","righteously","rightfully","rigidly","roughly","rudely","sadly","safely","scarcely","scarily","searchingly","sedately","seemingly","seldom","selfishly","separately","seriously","shakily","sharply","sheepishly","shrilly","shyly","silently","sleepily","slowly","smoothly","softly","solemnly","solidly","sometimes","soon","speedily","stealthily","sternly","strictly","successfully","suddenly","surprisingly","suspiciously","sweetly","swiftly","sympathetically","tenderly","tensely","terribly","thankfully","thoroughly","thoughtfully","tightly","tomorrow","too","tremendously","triumphantly","truly","truthfully","ultimately","unabashedly","unaccountably","unbearably","unethically","unexpectedly","unfortunately","unimpressively","unnaturally","unnecessarily","upbeat","upliftingly","upright","upside-down","upward","upwardly","urgently","usefully","uselessly","usually","utterly","vacantly","vaguely","vainly","valiantly","vastly","verbally","very","viciously","victoriously","violently","vivaciously","voluntarily","warmly","weakly","wearily","well","wetly","wholly","wildly","willfully","wisely","woefully","wonderfully","worriedly","wrongly","yawningly","yearly","yearningly","yesterday","yieldingly","youthfully"];var Pa=["after","although","and","as","because","before","but","consequently","even","finally","for","furthermore","hence","how","however","if","inasmuch","incidentally","indeed","instead","lest","likewise","meanwhile","nor","now","once","or","provided","since","so","supposing","than","that","though","till","unless","until","what","when","whenever","where","whereas","wherever","whether","which","while","who","whoever","whose","why","yet"];var Wa=["yuck","oh","phooey","blah","boo","whoa","yowza","huzzah","boohoo","fooey","geez","pfft","ew","ah","yum","brr","hm","yahoo","aha","woot","drat","gah","meh","psst","aw","ugh","yippee","eek","gee","bah","gadzooks","duh","ha","mmm","ouch","phew","ack","uh-huh","gosh","hmph","pish","zowie","er","ick","oof","um"];var Ga=["CD","SUV","abacus","academics","accelerator","accompanist","account","accountability","acquaintance","ad","adaptation","address","adrenalin","adult","advancement","advertisement","adviser","affect","affiliate","aftermath","agreement","airbus","aircraft","airline","airmail","airman","airport","alb","alert","allegation","alliance","alligator","allocation","almighty","amendment","amnesty","analogy","angle","annual","antelope","anticodon","apparatus","appliance","approach","apricot","arcade","archaeology","armchair","armoire","asset","assist","atrium","attraction","availability","avalanche","awareness","babushka","backbone","backburn","bakeware","bandwidth","bar","barge","baritone","barracks","baseboard","basket","bathhouse","bathrobe","battle","begonia","behest","bell","bench","bend","beret","best-seller","bid","bidet","bin","birdbath","birdcage","birth","blight","blossom","blowgun","bob","bog","bonfire","bonnet","bookcase","bookend","boulevard","bourgeoisie","bowler","bowling","boyfriend","brace","bracelet","bran","breastplate","brief","brochure","brook","brush","bug","bump","bungalow","cafe","cake","calculus","cannon","cantaloupe","cap","cappelletti","captain","caption","carboxyl","cardboard","carnival","case","casement","cash","casket","cassava","castanet","catalyst","cauliflower","cellar","celsius","cemetery","ceramic","ceramics","certification","chainstay","chairperson","challenge","championship","chap","chapel","character","characterization","charlatan","charm","chasuble","cheese","cheetah","chiffonier","chops","chow","cinder","cinema","circumference","citizen","clamp","clavicle","cleaner","climb","co-producer","coal","coast","cod","coil","coin","coliseum","collaboration","collectivization","colon","colonialism","comestible","commercial","commodity","community","comparison","completion","complication","compromise","concentration","configuration","confusion","conservation","conservative","consistency","contractor","contrail","convection","conversation","cook","coordination","cop-out","cope","cork","cornet","corporation","corral","cosset","costume","couch","council","councilman","countess","courtroom","cow","creator","creature","crest","cricket","crocodile","cross-contamination","cruelty","cuckoo","curl","custody","custom","cutlet","cutover","cycle","daddy","dandelion","dash","daughter","dead","decision","deck","declaration","decongestant","decryption","deduction","deed","deer","defendant","density","department","dependency","deployment","depot","derby","descendant","descent","design","designation","desk","detective","devastation","developing","developmental","devil","diagram","digestive","digit","dime","director","disadvantage","disappointment","disclosure","disconnection","discourse","dish","disk","disposer","distinction","diver","diversity","dividend","divine","doing","doorpost","doubter","draft","draw","dream","dredger","dress","drive","drug","duffel","dulcimer","dusk","duster","dwell","e-mail","earth","ecliptic","ectoderm","edge","editor","effector","eggplant","electronics","elevation","elevator","elver","embarrassment","embossing","emergent","encouragement","entry","epic","equal","essence","eternity","ethyl","euphonium","event","exasperation","excess","executor","exhaust","expansion","expense","experience","exploration","extension","extent","exterior","eyebrow","eyeliner","farm","farmer","fat","fax","feather","fedora","fellow","fen","fencing","ferret","festival","fibre","filter","final","finding","finer","finger","fireplace","fisherman","fishery","fit","flame","flat","fledgling","flight","flint","flood","flu","fog","fold","folklore","follower","following","foodstuffs","footrest","forage","forager","forgery","fork","formamide","formation","formula","fort","fowl","fraudster","freckle","freezing","freight","fuel","fun","fund","fundraising","futon","gallery","galoshes","gastropod","gazebo","gerbil","ghost","giant","gift","giggle","glider","gloom","goat","godfather","godparent","going","goodwill","governance","government","gown","gradient","graffiti","grandpa","grandson","granny","grass","gray","gripper","grouper","guacamole","guard","guidance","guide","gym","gymnast","habit","haircut","halt","hamburger","hammock","handful","handle","handover","harp","haversack","hawk","heartache","heartbeat","heating","hello","help","hepatitis","heroine","hexagon","hierarchy","hippodrome","honesty","hoof","hope","horde","hornet","horst","hose","hospitalization","hovel","hovercraft","hubris","humidity","humor","hundred","hunger","hunt","husband","hutch","hydrant","hydrocarbon","hydrolyse","hydrolyze","hyena","hygienic","hyphenation","ice-cream","icebreaker","igloo","ignorance","illusion","impact","import","importance","impostor","in-joke","incandescence","independence","individual","information","injunction","innovation","insolence","inspection","instance","institute","instruction","instructor","integer","intellect","intent","interchange","interior","intervention","interviewer","invite","iridescence","issue","jacket","jazz","jellyfish","jet","jogging","joy","juggernaut","jump","jungle","junior","jury","kettledrum","kick","kielbasa","kinase","king","kiss","kit","knickers","knight","knitting","knuckle","label","labourer","lace","lady","lamp","language","larva","lashes","laughter","lava","lawmaker","lay","leading","league","legend","legging","legislature","lender","license","lid","lieu","lifestyle","lift","linseed","litter","loaf","lobster","longboat","lotion","lounge","louse","lox","loyalty","luck","lyre","maestro","mainstream","maintainer","majority","makeover","making","mallard","management","manner","mantua","marathon","march","marimba","marketplace","marksman","markup","marten","massage","masterpiece","mathematics","meadow","meal","meander","meatloaf","mechanic","median","membership","mentor","merit","metabolite","metal","middle","midwife","milestone","millet","minion","minister","minor","minority","mixture","mobility","molasses","mom","moment","monasticism","monocle","monster","morbidity","morning","mortise","mountain","mouser","mousse","mozzarella","muscat","mythology","napkin","necklace","nectarine","negotiation","nephew","nerve","netsuke","newsletter","newsprint","newsstand","nightlife","noon","nougat","nucleotidase","nudge","numeracy","numeric","nun","obedience","obesity","object","obligation","ocelot","octave","offset","oil","omelet","onset","opera","operating","optimal","orchid","order","ostrich","other","outlaw","outrun","outset","overcoat","overheard","overload","ownership","pacemaker","packaging","paintwork","palate","pants","pantyhose","papa","parade","parsnip","partridge","passport","pasta","patroller","pear","pearl","pecan","pendant","peninsula","pension","peony","pepper","perfection","permafrost","perp","petal","petticoat","pharmacopoeia","phrase","pick","piglet","pigpen","pigsty","pile","pillbox","pillow","pilot","pine","pinstripe","place","plain","planula","plastic","platter","platypus","pleasure","pliers","plugin","plumber","pneumonia","pocket-watch","poetry","polarisation","polyester","pomelo","pop","poppy","popularity","populist","porter","possession","postbox","precedent","premeditation","premier","premise","premium","pressure","presume","priesthood","printer","privilege","procurement","produce","programme","prohibition","promise","pronoun","providence","provider","provision","publication","publicity","pulse","punctuation","pupil","puppet","puritan","quart","quinoa","quit","railway","range","rationale","ravioli","rawhide","reach","reasoning","reboot","receptor","recommendation","reconsideration","recovery","redesign","relative","release","remark","reorganisation","repeat","replacement","reporter","representation","republican","request","requirement","reservation","resolve","resource","responsibility","restaurant","retention","retrospectivity","reward","ribbon","rim","riser","roadway","role","rosemary","roundabout","rubric","ruin","rule","runway","rust","safe","sailor","saloon","sand","sandbar","sanity","sarong","sauerkraut","saw","scaffold","scale","scarification","scenario","schedule","schnitzel","scholarship","scorn","scorpion","scout","scrap","scratch","seafood","seagull","seal","season","secrecy","secret","section","sediment","self-confidence","sermon","sesame","settler","shadowbox","shark","shipper","shore","shoulder","sideboard","siege","sightseeing","signature","silk","simple","singing","skean","skeleton","skyline","skyscraper","slide","slime","slipper","smog","smoke","sock","soliloquy","solution","solvency","someplace","sonar","sonata","sonnet","soup","soybean","space","spear","spirit","spork","sport","spring","sprinkles","squid","stall","starboard","statue","status","stay","steak","steeple","step","step-mother","sticker","stir-fry","stitcher","stock","stool","story","strait","stranger","strategy","straw","stump","subexpression","submitter","subsidy","substitution","suitcase","summary","summer","sunbeam","sundae","supplier","surface","sushi","suspension","sustenance","swanling","swath","sweatshop","swim","swine","swing","switch","switchboard","swordfish","synergy","t-shirt","tabletop","tackle","tail","tapioca","taro","tarragon","taxicab","teammate","technician","technologist","tectonics","tenant","tenement","tennis","tentacle","teriyaki","term","testimonial","testing","thigh","thongs","thorn","thread","thunderbolt","thyme","tinderbox","toaster","tomatillo","tomb","tomography","tool","tooth","toothbrush","toothpick","topsail","traditionalism","traffic","translation","transom","transparency","trash","travel","tray","trench","tribe","tributary","trick","trolley","tuba","tuber","tune-up","turret","tusk","tuxedo","typeface","typewriter","unblinking","underneath","underpants","understanding","unibody","unique","unit","utilization","valentine","validity","valley","valuable","vanadyl","vein","velocity","venom","version","verve","vestment","veto","viability","vibraphone","vibration","vicinity","video","violin","vision","vista","vol","volleyball","wafer","waist","wallaby","warming","wasabi","waterspout","wear","wedding","whack","whale","wheel","widow","wilderness","willow","window","wombat","word","worth","wriggler","yak","yarmulke","yeast","yin","yogurt","zebra","zen"];var Na=["a","abaft","aboard","about","above","absent","across","afore","after","against","along","alongside","amid","amidst","among","amongst","an","anenst","anti","apropos","apud","around","as","aside","astride","at","athwart","atop","barring","before","behind","below","beneath","beside","besides","between","beyond","but","by","circa","concerning","considering","despite","down","during","except","excepting","excluding","failing","following","for","forenenst","from","given","in","including","inside","into","lest","like","mid","midst","minus","modulo","near","next","notwithstanding","of","off","on","onto","opposite","out","outside","over","pace","past","per","plus","pro","qua","regarding","round","sans","save","since","than","the","through","throughout","till","times","to","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","via","vice","with","within","without","worth"];var Ea=["abnegate","abscond","abseil","absolve","accentuate","accept","access","accessorise","accompany","account","accredit","achieve","acknowledge","acquire","adjourn","adjudge","admonish","adumbrate","advocate","afford","airbrush","ameliorate","amend","amount","anaesthetise","analyse","anesthetize","anneal","annex","antagonize","ape","apologise","apostrophize","appertain","appreciate","appropriate","approximate","arbitrate","archive","arraign","arrange","ascertain","ascribe","assail","atomize","attend","attest","attribute","augment","avow","axe","baa","banish","bank","baptise","battle","beard","beep","behold","belabor","bemuse","besmirch","bestride","better","bewail","bicycle","bide","bind","biodegrade","blacken","blaspheme","bleach","blend","blink","bliss","bloom","bludgeon","bobble","boggle","bolster","book","boom","bootleg","border","bore","boss","braid","brand","brandish","break","breed","broadcast","broadside","brood","browse","buck","burgeon","bus","butter","buzzing","camouflage","cannibalise","canter","cap","capitalise","capitalize","capsize","card","carouse","carp","carpool","catalog","catalyze","catch","categorise","cease","celebrate","censor","certify","char","charter","chase","chatter","chime","chip","christen","chromakey","chunder","chunter","cinch","circle","circulate","circumnavigate","clamor","clamour","claw","cleave","clinch","clinking","clone","clonk","coagulate","coexist","coincide","collaborate","colligate","colorize","colour","comb","come","commandeer","commemorate","communicate","compete","conceal","conceptualize","conclude","concrete","condense","cone","confide","confirm","confiscate","confound","confute","congregate","conjecture","connect","consign","construe","contradict","contrast","contravene","controvert","convalesce","converse","convince","convoke","coop","cop","corner","covenant","cow","crackle","cram","crank","creak","creaking","cripple","croon","cross","crumble","crystallize","culminate","culture","curry","curse","customise","cycle","dally","dampen","darn","debit","debut","decide","decode","decouple","decriminalize","deduce","deduct","deflate","deflect","deform","defrag","degenerate","degrease","delete","delight","deliquesce","demob","demobilise","democratize","demonstrate","denitrify","deny","depart","depend","deplore","deploy","deprave","depute","dereference","describe","desecrate","deselect","destock","detain","develop","devise","dial","dicker","digitize","dilate","disapprove","disarm","disbar","discontinue","disgorge","dishearten","dishonor","disinherit","dislocate","dispense","display","dispose","disrespect","dissemble","ditch","divert","dock","doodle","downchange","downshift","dowse","draft","drag","drain","dramatize","drowse","drum","dwell","economise","edge","efface","egg","eke","electrify","embalm","embed","embody","emboss","emerge","emphasise","emphasize","emulsify","encode","endow","enfold","engage","engender","enhance","enlist","enrage","enrich","enroll","entice","entomb","entrench","entwine","equate","essay","etch","eulogise","even","evince","exacerbate","exaggerate","exalt","exempt","exonerate","expatiate","explode","expostulate","extract","extricate","eyeglasses","fabricate","facilitate","factorise","factorize","fail","fall","familiarize","fashion","father","fathom","fax","federate","feminize","fence","fess","fictionalize","fiddle","fidget","fill","flash","fleck","flight","floodlight","floss","fluctuate","fluff","fly","focalise","foot","forearm","forecast","foretell","forgather","forgo","fork","form","forswear","founder","fraternise","fray","frizz","fumigate","function","furlough","fuss","gad","gallivant","galvanize","gape","garage","garrote","gasp","gestate","give","glimmer","glisten","gloat","gloss","glow","gnash","gnaw","goose","govern","grade","graduate","graft","grok","guest","guilt","gulp","gum","gurn","gust","gut","guzzle","ham","harangue","harvest","hassle","haul","haze","headline","hearten","heighten","highlight","hoick","hold","hole","hollow","holster","home","homeschool","hoot","horn","horse","hotfoot","house","hover","howl","huddle","huff","hunger","hunt","husk","hype","hypothesise","hypothesize","idle","ignite","imagineer","impact","impanel","implode","incinerate","incline","inculcate","industrialize","ingratiate","inhibit","inject","innovate","inscribe","insert","insist","inspect","institute","institutionalize","intend","intermarry","intermesh","intermix","internalise","internalize","internationalize","intrigue","inure","inveigle","inventory","investigate","irk","iterate","jaywalk","jell","jeopardise","jiggle","jive","joint","jot","jut","keel","knife","knit","know","kowtow","lack","lampoon","large","leap","lecture","legitimize","lend","libel","liberalize","license","ligate","list","lobotomise","lock","log","loose","low","lowball","machine","magnetize","major","make","malfunction","manage","manipulate","maroon","masculinize","mash","mask","masquerade","massage","masticate","materialise","matter","maul","memorise","merge","mesh","metabolise","microblog","microchip","micromanage","militate","mill","minister","minor","misappropriate","miscalculate","misfire","misjudge","miskey","mismatch","mispronounce","misread","misreport","misspend","mob","mobilise","mobilize","moisten","mooch","moor","moralise","mortar","mosh","mothball","motivate","motor","mould","mount","muddy","mummify","mutate","mystify","nab","narrate","narrowcast","nasalise","nauseate","navigate","neaten","neck","neglect","norm","notarize","object","obscure","observe","obsess","obstruct","obtrude","offend","offset","option","orchestrate","orient","orientate","outbid","outdo","outfit","outflank","outfox","outnumber","outrank","outrun","outsource","overburden","overcharge","overcook","overdub","overfeed","overload","overplay","overproduce","overreact","override","overspend","overstay","overtrain","overvalue","overwork","own","oxidise","oxidize","oxygenate","pace","pack","pale","pant","paralyse","parody","part","pause","pave","penalise","persecute","personalise","perspire","pertain","peter","pike","pillory","pinion","pip","pity","pivot","pixellate","plagiarise","plait","plan","please","pluck","ponder","popularize","portray","prance","preclude","preheat","prejudge","preregister","presell","preside","pretend","print","prioritize","probate","probe","proceed","procrastinate","profane","progress","proliferate","proofread","propound","proselytise","provision","pry","publicize","puff","pull","pulp","pulverize","purse","put","putrefy","quadruple","quaff","quantify","quarrel","quash","quaver","question","quiet","quintuple","quip","quit","rag","rally","ramp","randomize","rationalise","rationalize","ravage","ravel","react","readies","readjust","readmit","ready","reapply","rear","reassemble","rebel","reboot","reborn","rebound","rebuff","rebuild","rebuke","recede","reckon","reclassify","recompense","reconstitute","record","recount","redact","redevelop","redound","redraw","redress","reel","refer","reference","refine","reflate","refute","regulate","reiterate","rejigger","rejoin","rekindle","relaunch","relieve","remand","remark","reopen","reorient","replicate","repossess","represent","reprimand","reproach","reprove","repurpose","requite","reschedule","resort","respray","restructure","retool","retract","revere","revitalise","revoke","reword","rewrite","ride","ridge","rim","ring","rise","rival","roger","rosin","rot","rout","row","rue","rule","safeguard","sashay","sate","satirise","satirize","satisfy","saturate","savour","scale","scamper","scar","scare","scarper","scent","schematise","scheme","schlep","scoff","scoop","scope","scotch","scowl","scrabble","scram","scramble","scrape","screw","scruple","scrutinise","scuffle","scuttle","search","secularize","see","segregate","sell","sense","sensitize","sequester","serenade","serialize","serve","service","settle","sew","shaft","sham","shampoo","shanghai","shear","sheathe","shell","shinny","shirk","shoot","shoulder","shout","shovel","showboat","shred","shrill","shudder","shush","sidetrack","sign","silt","sin","singe","sit","sizzle","skateboard","ski","slake","slap","slather","sleet","slink","slip","slope","slump","smarten","smuggle","snack","sneak","sniff","snoop","snow","snowplow","snuggle","soap","solace","solder","solicit","source","spark","spattering","spectacles","spectate","spellcheck","spew","spice","spirit","splash","splay","split","splosh","splurge","spook","square","squirm","stabilise","stable","stack","stage","stake","starch","state","statement","stiffen","stigmatize","sting","stint","stoop","store","storyboard","stratify","structure","stuff","stunt","substantiate","subtract","suckle","suffice","suffocate","summarise","sun","sunbathe","sunder","sup","surge","surprise","swat","swathe","sway","swear","swelter","swerve","swill","swing","symbolise","synthesise","syringe","table","tabulate","tag","tame","tank","tankful","tarry","task","taxicab","team","telescope","tenant","terraform","terrorise","testify","think","throbbing","thump","tighten","toady","toe","tough","tousle","traduce","train","transcend","transplant","trash","treasure","treble","trek","trial","tromp","trouser","trust","tune","tut","twine","twist","typify","unbalance","uncork","uncover","underachieve","undergo","underplay","unearth","unfreeze","unfurl","unlearn","unscramble","unzip","uproot","upsell","usher","vacation","vamoose","vanish","vary","veg","venture","verify","vet","veto","volunteer","vulgarise","waft","wallop","waltz","warp","wash","waver","weary","weatherize","wedge","weep","weight","welcome","westernise","westernize","while","whine","whisper","whistle","whitewash","whup","wilt","wing","wire","wisecrack","wolf","wound","wring","writ","yak","yawn","yearn","yuppify"];var so={adjective:Ra,adverb:Ha,conjunction:Pa,interjection:Wa,noun:Ga,preposition:Na,verb:Ea},Fa=so;var uo={airline:r,animal:k,app:A,cell_phone:w$1,color:T,commerce:H$1,company:K$1,database:x$1,date:Y$1,finance:oe$1,food:he$1,hacker:ke$1,internet:Ae$1,location:Ke$1,lorem:xe$1,metadata:ze$1,music:Ue$1,person:ma,phone_number:ba,science:Ca,team:Aa,vehicle:Da,word:Fa},Gl=uo; - -var m=class extends Error{};function ge(i){let e=Object.getPrototypeOf(i);do{for(let t of Object.getOwnPropertyNames(e))typeof i[t]=="function"&&t!=="constructor"&&(i[t]=i[t].bind(i));e=Object.getPrototypeOf(e);}while(e!==Object.prototype)}var x=class{constructor(e){this.faker=e;ge(this);}},p=class extends x{constructor(t){super(t);this.faker=t;}};var ye=(r=>(r.Narrowbody="narrowbody",r.Regional="regional",r.Widebody="widebody",r))(ye||{}),nt=["0","1","2","3","4","5","6","7","8","9"],at=["0","O","1","I","L"],it={regional:20,narrowbody:35,widebody:60},ot={regional:["A","B","C","D"],narrowbody:["A","B","C","D","E","F"],widebody:["A","B","C","D","E","F","G","H","J","K"]},v=class extends p{airport(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airport)}airline(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airline)}airplane(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airplane)}recordLocator(e={}){let{allowNumerics:t=!1,allowVisuallySimilarCharacters:r=!1}=e,n=[];return t||n.push(...nt),r||n.push(...at),this.faker.string.alphanumeric({length:6,casing:"upper",exclude:n})}seat(e={}){let{aircraftType:t="narrowbody"}=e,r=it[t],n=ot[t],a=this.faker.number.int({min:1,max:r}),o=this.faker.helpers.arrayElement(n);return `${a}${o}`}aircraftType(){return this.faker.helpers.enumValue(ye)}flightNumber(e={}){let{length:t={min:1,max:4},addLeadingZeros:r=!1}=e,n=this.faker.string.numeric({length:t,allowLeadingZeros:!1});return r?n.padStart(4,"0"):n}};var ke=(a=>(a.SRGB="sRGB",a.DisplayP3="display-p3",a.REC2020="rec2020",a.A98RGB="a98-rgb",a.ProphotoRGB="prophoto-rgb",a))(ke||{}),xe=(c=>(c.RGB="rgb",c.RGBA="rgba",c.HSL="hsl",c.HSLA="hsla",c.HWB="hwb",c.CMYK="cmyk",c.LAB="lab",c.LCH="lch",c.COLOR="color",c))(xe||{});function st(i,e){let{prefix:t,casing:r}=e;switch(r){case"upper":{i=i.toUpperCase();break}case"lower":{i=i.toLowerCase();break}}return t&&(i=t+i),i}function Ae(i){return i.map(t=>{if(t%1!==0){let n=new ArrayBuffer(4);new DataView(n).setFloat32(0,t);let a=new Uint8Array(n);return Ae([...a]).replaceAll(" ","")}return (t>>>0).toString(2).padStart(8,"0")}).join(" ")}function ct(i,e="rgb",t="sRGB"){let r=n=>Math.round(n*100);switch(e){case"rgba":return `rgba(${i[0]}, ${i[1]}, ${i[2]}, ${i[3]})`;case"color":return `color(${t} ${i[0]} ${i[1]} ${i[2]})`;case"cmyk":return `cmyk(${r(i[0])}%, ${r(i[1])}%, ${r(i[2])}%, ${r(i[3])}%)`;case"hsl":return `hsl(${i[0]}deg ${r(i[1])}% ${r(i[2])}%)`;case"hsla":return `hsl(${i[0]}deg ${r(i[1])}% ${r(i[2])}% / ${r(i[3])})`;case"hwb":return `hwb(${i[0]} ${r(i[1])}% ${r(i[2])}%)`;case"lab":return `lab(${r(i[0])}% ${i[1]} ${i[2]})`;case"lch":return `lch(${r(i[0])}% ${i[1]} ${i[2]})`;case"rgb":return `rgb(${i[0]}, ${i[1]}, ${i[2]})`}}function C(i,e,t="rgb",r="sRGB"){switch(e){case"css":return ct(i,t,r);case"binary":return Ae(i);case"decimal":return i}}var I=class extends p{human(){return this.faker.helpers.arrayElement(this.faker.definitions.color.human)}space(){return this.faker.helpers.arrayElement(this.faker.definitions.color.space)}cssSupportedFunction(){return this.faker.helpers.enumValue(xe)}cssSupportedSpace(){return this.faker.helpers.enumValue(ke)}rgb(e={}){let{format:t="hex",includeAlpha:r=!1,prefix:n="#",casing:a="lower"}=e,o,s="rgb";return t==="hex"?(o=this.faker.string.hexadecimal({length:r?8:6,prefix:""}),o=st(o,{prefix:n,casing:a}),o):(o=Array.from({length:3},()=>this.faker.number.int(255)),r&&(o.push(this.faker.number.float({multipleOf:.01})),s="rgba"),C(o,t,s))}cmyk(e={}){let{format:t="decimal"}=e,r=Array.from({length:4},()=>this.faker.number.float({multipleOf:.01}));return C(r,t,"cmyk")}hsl(e={}){let{format:t="decimal",includeAlpha:r=!1}=e,n=[this.faker.number.int(360)];for(let a=0;a<(e?.includeAlpha?3:2);a++)n.push(this.faker.number.float({multipleOf:.01}));return C(n,t,r?"hsla":"hsl")}hwb(e={}){let{format:t="decimal"}=e,r=[this.faker.number.int(360)];for(let n=0;n<2;n++)r.push(this.faker.number.float({multipleOf:.01}));return C(r,t,"hwb")}lab(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let n=0;n<2;n++)r.push(this.faker.number.float({min:-100,max:100,multipleOf:1e-4}));return C(r,t,"lab")}lch(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let n=0;n<2;n++)r.push(this.faker.number.float({max:230,multipleOf:.1}));return C(r,t,"lch")}colorByCSSColorSpace(e={}){let{format:t="decimal",space:r="sRGB"}=e,n=Array.from({length:3},()=>this.faker.number.float({multipleOf:1e-4}));return C(n,t,"color",r)}};var he=(n=>(n.Legacy="legacy",n.Segwit="segwit",n.Bech32="bech32",n.Taproot="taproot",n))(he||{}),Ee=(t=>(t.Mainnet="mainnet",t.Testnet="testnet",t))(Ee||{}),we={legacy:{prefix:{mainnet:"1",testnet:"m"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},segwit:{prefix:{mainnet:"3",testnet:"2"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},bech32:{prefix:{mainnet:"bc1",testnet:"tb1"},length:{min:42,max:42},casing:"lower",exclude:"1bBiIoO"},taproot:{prefix:{mainnet:"bc1p",testnet:"tb1p"},length:{min:62,max:62},casing:"lower",exclude:"1bBiIoO"}};var Se=(t=>(t.Female="female",t.Male="male",t))(Se||{});function N(i,e,t){let{generic:r,female:n,male:a}=t;switch(e){case"female":return n??r;case"male":return a??r;default:return r??i.helpers.arrayElement([n,a])??[]}}var _=class extends p{firstName(e){return this.faker.helpers.arrayElement(N(this.faker,e,this.faker.definitions.person.first_name))}lastName(e){if(this.faker.rawDefinitions.person?.last_name_pattern!=null){let t=this.faker.helpers.weightedArrayElement(N(this.faker,e,this.faker.rawDefinitions.person.last_name_pattern));return this.faker.helpers.fake(t)}return this.faker.helpers.arrayElement(N(this.faker,e,this.faker.definitions.person.last_name))}middleName(e){return this.faker.helpers.arrayElement(N(this.faker,e,this.faker.definitions.person.middle_name))}fullName(e={}){let{sex:t=this.faker.helpers.arrayElement(["female","male"]),firstName:r=this.firstName(t),lastName:n=this.lastName(t)}=e,a=this.faker.helpers.weightedArrayElement(this.faker.definitions.person.name);return this.faker.helpers.mustache(a,{"person.prefix":()=>this.prefix(t),"person.firstName":()=>r,"person.middleName":()=>this.middleName(t),"person.lastName":()=>n,"person.suffix":()=>this.suffix()})}gender(){return this.faker.helpers.arrayElement(this.faker.definitions.person.gender)}sex(){return this.faker.helpers.arrayElement(this.faker.definitions.person.sex)}sexType(){return this.faker.helpers.enumValue(Se)}bio(){let{bio_pattern:e}=this.faker.definitions.person;return this.faker.helpers.fake(e)}prefix(e){return this.faker.helpers.arrayElement(N(this.faker,e,this.faker.definitions.person.prefix))}suffix(){return this.faker.helpers.arrayElement(this.faker.definitions.person.suffix)}jobTitle(){return this.faker.helpers.fake(this.faker.definitions.person.job_title_pattern)}jobDescriptor(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_descriptor)}jobArea(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_area)}jobType(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_type)}zodiacSign(){return this.faker.helpers.arrayElement(this.faker.definitions.person.western_zodiac_sign)}};var D=class{N=624;M=397;MATRIX_A=2567483615;UPPER_MASK=2147483648;LOWER_MASK=2147483647;mt=Array.from({length:this.N});mti=this.N+1;unsigned32(e){return e<0?(e^this.UPPER_MASK)+this.UPPER_MASK:e}subtraction32(e,t){return e>>n&1&&(r=this.addition32(r,this.unsigned32(t<>>30)),this.mti),this.mt[this.mti]=this.unsigned32(this.mt[this.mti]&4294967295);}initByArray(e,t){this.initGenrand(19650218);let r=1,n=0,a=this.N>t?this.N:t;for(;a;a--)this.mt[r]=this.addition32(this.addition32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1664525)),e[n]),n),this.mt[r]=this.unsigned32(this.mt[r]&4294967295),r++,n++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1),n>=t&&(n=0);for(a=this.N-1;a;a--)this.mt[r]=this.subtraction32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1566083941)),r),this.mt[r]=this.unsigned32(this.mt[r]&4294967295),r++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1);this.mt[0]=2147483648;}mag01=[0,this.MATRIX_A];genrandInt32(){let e;if(this.mti>=this.N){let t;for(this.mti===this.N+1&&this.initGenrand(5489),t=0;t>>1^this.mag01[e&1]);for(;t>>1^this.mag01[e&1]);e=this.unsigned32(this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK),this.mt[this.N-1]=this.unsigned32(this.mt[this.M-1]^e>>>1^this.mag01[e&1]),this.mti=0;}return e=this.mt[this.mti++],e=this.unsigned32(e^e>>>11),e=this.unsigned32(e^e<<7&2636928640),e=this.unsigned32(e^e<<15&4022730752),e=this.unsigned32(e^e>>>18),e}genrandInt31(){return this.genrandInt32()>>>1}genrandReal1(){return this.genrandInt32()*(1/4294967295)}genrandReal2(){return this.genrandInt32()*(1/4294967296)}genrandReal3(){return (this.genrandInt32()+.5)*(1/4294967296)}genrandRes53(){let e=this.genrandInt32()>>>5,t=this.genrandInt32()>>>6;return (e*67108864+t)*(1/9007199254740992)}};function Te(){let i=new D;return i.initGenrand(Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)),{next(){return i.genrandRes53()},seed(e){typeof e=="number"?i.initGenrand(e):Array.isArray(e)&&i.initByArray(e,e.length);}}}var G=class extends x{boolean(e={}){typeof e=="number"&&(e={probability:e});let{probability:t=.5}=e;return t<=0?!1:t>=1?!0:this.faker.number.float(){throw new m("You cannot edit the locale data on the faker instance")};function Me(i){let e={};return new Proxy(i,{has(){return !0},get(t,r){return typeof r=="symbol"||r==="nodeType"?t[r]:r in e?e[r]:e[r]=lt(r,t[r])},set:F,deleteProperty:F})}function O(i,...e){if(i===null)throw new m(`The locale data for '${e.join(".")}' aren't applicable to this locale. - If you think this is a bug, please report it at: https://github.com/faker-js/faker`);if(i===void 0)throw new m(`The locale data for '${e.join(".")}' are missing in this locale. - Please contribute the missing data to the project or use a locale/Faker instance that has these data. - For more information see https://fakerjs.dev/guide/localization.html`)}function lt(i,e={}){return new Proxy(e,{has(t,r){return t[r]!=null},get(t,r){let n=t[r];return typeof r=="symbol"||r==="nodeType"||O(n,i,r.toString()),n},set:F,deleteProperty:F})}function M(i,e="refDate"){let t=new Date(i);if(Number.isNaN(t.valueOf()))throw new m(`Invalid ${e} date: ${i.toString()}`);return t}var R=class extends x{anytime(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=M(t).getTime();return this.between({from:r-1e3*60*60*24*365,to:r+1e3*60*60*24*365})}past(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new m("Years must be greater than 0.");let n=M(r).getTime();return this.between({from:n-t*365*24*3600*1e3,to:n-1e3})}future(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new m("Years must be greater than 0.");let n=M(r).getTime();return this.between({from:n+1e3,to:n+t*365*24*3600*1e3})}between(e){if(e==null||e.from==null||e.to==null)throw new m("Must pass an options object with `from` and `to` values.");let{from:t,to:r}=e,n=M(t,"from").getTime(),a=M(r,"to").getTime();if(n>a)throw new m("`from` date must be before `to` date.");return new Date(this.faker.number.int({min:n,max:a}))}betweens(e){if(e==null||e.from==null||e.to==null)throw new m("Must pass an options object with `from` and `to` values.");let{from:t,to:r,count:n=3}=e;return this.faker.helpers.multiple(()=>this.between({from:t,to:r}),{count:n}).sort((a,o)=>a.getTime()-o.getTime())}recent(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new m("Days must be greater than 0.");let n=M(r).getTime();return this.between({from:n-t*24*3600*1e3,to:n-1e3})}soon(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new m("Days must be greater than 0.");let n=M(r).getTime();return this.between({from:n+1e3,to:n+t*24*3600*1e3})}birthdate(e={}){let{mode:t="age",min:r=18,max:n=80,refDate:a=this.faker.defaultRefDate(),mode:o,min:s,max:l}=e;if([s,l,o].filter(f=>f!=null).length%3!==0)throw new m("The 'min', 'max', and 'mode' options must be set together.");let u=M(a),h=u.getUTCFullYear();switch(t){case"age":{let g=new Date(u).setUTCFullYear(h-n-1)+864e5,b=new Date(u).setUTCFullYear(h-r);if(g>b)throw new m(`Max age ${n} should be greater than or equal to min age ${r}.`);return this.between({from:g,to:b})}case"year":{let f=new Date(Date.UTC(0,0,2)).setUTCFullYear(r),g=new Date(Date.UTC(0,11,30)).setUTCFullYear(n);if(f>g)throw new m(`Max year ${n} should be greater than or equal to min year ${r}.`);return this.between({from:f,to:g})}}}},K=class extends R{constructor(t){super(t);this.faker=t;}month(t={}){let{abbreviated:r=!1,context:n=!1}=t,a=this.faker.definitions.date.month,o;r?o=n&&a.abbr_context!=null?"abbr_context":"abbr":o=n&&a.wide_context!=null?"wide_context":"wide";let s=a[o];return O(s,"date.month",o),this.faker.helpers.arrayElement(s)}weekday(t={}){let{abbreviated:r=!1,context:n=!1}=t,a=this.faker.definitions.date.weekday,o;r?o=n&&a.abbr_context!=null?"abbr_context":"abbr":o=n&&a.wide_context!=null?"wide_context":"wide";let s=a[o];return O(s,"date.weekday",o),this.faker.helpers.arrayElement(s)}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.date.time_zone)}};var mt=/\.|\(/;function Ce(i,e,t=[e,e.rawDefinitions]){if(i.length===0)throw new m("Eval expression cannot be empty.");if(t.length===0)throw new m("Eval entrypoints cannot be empty.");let r=t,n=i;do{let o;n.startsWith("(")?[o,r]=ut(n,r,i):[o,r]=pt(n,r),n=n.substring(o),r=r.filter(s=>s!=null).map(s=>Array.isArray(s)?e.helpers.arrayElement(s):s);}while(n.length>0&&r.length>0);if(r.length===0)throw new m(`Cannot resolve expression '${i}'`);let a=r[0];return typeof a=="function"?a():a}function ut(i,e,t){let[r,n]=ht(i),a=i[r+1];switch(a){case".":case"(":case void 0:break;default:throw new m(`Expected dot ('.'), open parenthesis ('('), or nothing after function call but got '${a}'`)}return [r+(a==="."?2:1),e.map(o=>typeof o=="function"?o(...n):(console.warn(`[@faker-js/faker]: Invoking expressions which are not functions is deprecated since v9.0 and will be removed in v10.0. -Please remove the parentheses or replace the expression with an actual function. -${t} -${" ".repeat(t.length-i.length)}^`),o))]}function ht(i){let e=i.indexOf(")",1);if(e===-1)throw new m(`Missing closing parenthesis in '${i}'`);for(;e!==-1;){let r=i.substring(1,e);try{return [e,JSON.parse(`[${r}]`)]}catch{if(!r.includes("'")&&!r.includes('"'))try{return [e,JSON.parse(`["${r}"]`)]}catch{}}e=i.indexOf(")",e+1);}e=i.lastIndexOf(")");let t=i.substring(1,e);return [e,[t]]}function pt(i,e){let t=mt.exec(i),r=(t?.[0]??"")===".",n=t?.index??i.length,a=i.substring(0,n);if(a.length===0)throw new m(`Expression parts cannot be empty in '${i}'`);let o=i[n+1];if(r&&(o==null||o==="."||o==="("))throw new m(`Found dot without property name in '${i}'`);return [n+(r?1:0),e.map(s=>ft(s,a))]}function ft(i,e){switch(typeof i){case"function":{try{i=i();}catch{return}return i?.[e]}case"object":return i?.[e];default:return}}function Ne(i){let e=bt(i.replace(/L?$/,"0"));return e===0?0:10-e}function bt(i){i=i.replaceAll(/[\s-]/g,"");let e=0,t=!1;for(let r=i.length-1;r>=0;r--){let n=Number.parseInt(i[r]);t&&(n*=2,n>9&&(n=n%10+1)),e+=n,t=!t;}return e%10}function De(i,e,t,r){let n=1;if(e)switch(e){case"?":{n=i.datatype.boolean()?0:1;break}case"*":{let a=1;for(;i.datatype.boolean();)a*=2;n=i.number.int({min:0,max:a});break}case"+":{let a=1;for(;i.datatype.boolean();)a*=2;n=i.number.int({min:1,max:a});break}default:throw new m("Unknown quantifier symbol provided.")}else t!=null&&r!=null?n=i.number.int({min:Number.parseInt(t),max:Number.parseInt(r)}):t!=null&&r==null&&(n=Number.parseInt(t));return n}function dt(i,e=""){let t=/(.)\{(\d+),(\d+)\}/,r=/(.)\{(\d+)\}/,n=/\[(\d+)-(\d+)\]/,a,o,s,l,c=t.exec(e);for(;c!=null;)a=Number.parseInt(c[2]),o=Number.parseInt(c[3]),a>o&&(s=o,o=a,a=s),l=i.number.int({min:a,max:o}),e=e.slice(0,c.index)+c[1].repeat(l)+e.slice(c.index+c[0].length),c=t.exec(e);for(c=r.exec(e);c!=null;)l=Number.parseInt(c[2]),e=e.slice(0,c.index)+c[1].repeat(l)+e.slice(c.index+c[0].length),c=r.exec(e);for(c=n.exec(e);c!=null;)a=Number.parseInt(c[1]),o=Number.parseInt(c[2]),a>o&&(s=o,o=a,a=s),e=e.slice(0,c.index)+i.number.int({min:a,max:o}).toString()+e.slice(c.index+c[0].length),c=n.exec(e);return e}function pe(i,e="",t="#"){let r="";for(let n=0;nd.codePointAt(0)??Number.NaN);if(r=A[0],n=A[1],r>n)throw new m("Character range provided is out of order.");for(let d=r;d<=n;d++)if(t&&Number.isNaN(Number(String.fromCodePoint(d)))){let de=String.fromCodePoint(d);y.push(de.toUpperCase().codePointAt(0)??Number.NaN,de.toLowerCase().codePointAt(0)??Number.NaN);}else y.push(d);}else t&&Number.isNaN(Number(S[0]))?y.push(S[0].toUpperCase().codePointAt(0)??Number.NaN,S[0].toLowerCase().codePointAt(0)??Number.NaN):y.push(S[0].codePointAt(0)??Number.NaN);P=P.substring(S[0].length),S=l.exec(P);}if(a=De(this.faker,T,b,k),f){let A=-1;for(let d=48;d<=57;d++){if(A=y.indexOf(d),A>-1){y.splice(A,1);continue}y.push(d);}for(let d=65;d<=90;d++){if(A=y.indexOf(d),A>-1){y.splice(A,1);continue}y.push(d);}for(let d=97;d<=122;d++){if(A=y.indexOf(d),A>-1){y.splice(A,1);continue}y.push(d);}}let rt=this.multiple(()=>String.fromCodePoint(this.arrayElement(y)),{count:a}).join("");e=e.slice(0,s.index)+rt+e.slice(s.index+s[0].length),s=c.exec(e);}let u=/(.)\{(\d+),(\d+)\}/;for(s=u.exec(e);s!=null;){if(r=Number.parseInt(s[2]),n=Number.parseInt(s[3]),r>n)throw new m("Numbers out of order in {} quantifier.");a=this.faker.number.int({min:r,max:n}),e=e.slice(0,s.index)+s[1].repeat(a)+e.slice(s.index+s[0].length),s=u.exec(e);}let h=/(.)\{(\d+)\}/;for(s=h.exec(e);s!=null;)a=Number.parseInt(s[2]),e=e.slice(0,s.index)+s[1].repeat(a)+e.slice(s.index+s[0].length),s=h.exec(e);return e}shuffle(e,t={}){let{inplace:r=!1}=t;r||(e=[...e]);for(let n=e.length-1;n>0;--n){let a=this.faker.number.int(n);[e[n],e[a]]=[e[a],e[n]];}return e}uniqueArray(e,t){if(Array.isArray(e)){let a=[...new Set(e)];return this.shuffle(a).splice(0,t)}let r=new Set;try{if(typeof e=="function"){let n=1e3*t,a=0;for(;r.size1?this.faker.number.int({max:e.length-1}):0;return e[t]}weightedArrayElement(e){if(e.length===0)throw new m("weightedArrayElement expects an array with at least one element");if(!e.every(a=>a.weight>0))throw new m("weightedArrayElement expects an array of { weight, value } objects where weight is a positive number");let t=e.reduce((a,{weight:o})=>a+o,0),r=this.faker.number.float({min:0,max:t}),n=0;for(let{weight:a,value:o}of e)if(n+=a,r=e.length)return this.shuffle(e);if(r<=0)return [];let n=[...e],a=e.length,o=a-r,s,l;for(;a-- >o;)l=this.faker.number.int(a),s=n[l],n[l]=n[a],n[a]=s;return n.slice(o)}enumValue(e){let t=Object.keys(e).filter(n=>Number.isNaN(Number(n))),r=this.arrayElement(t);return e[r]}rangeToNumber(e){return typeof e=="number"?e:this.faker.number.int(e)}multiple(e,t={}){let r=this.rangeToNumber(t.count??3);return r<=0?[]:Array.from({length:r},e)}},U=class extends L{constructor(t){super(t);this.faker=t;}fake(t){t=typeof t=="string"?t:this.arrayElement(t);let r=t.search(/{{[a-z]/),n=t.indexOf("}}",r);if(r===-1||n===-1)return t;let o=t.substring(r+2,n+2).replace("}}","").replace("{{",""),s=Ce(o,this.faker),l=String(s),c=t.substring(0,r)+l+t.substring(n+2);return this.fake(c)}};var j=class extends x{int(e={}){typeof e=="number"&&(e={max:e});let{min:t=0,max:r=Number.MAX_SAFE_INTEGER,multipleOf:n=1}=e;if(!Number.isInteger(n))throw new m("multipleOf should be an integer.");if(n<=0)throw new m("multipleOf should be greater than 0.");let a=Math.ceil(t/n),o=Math.floor(r/n);if(a===o)return a*n;if(o=t?new m(`No suitable integer value between ${t} and ${r} found.`):new m(`Max ${r} should be greater than min ${t}.`);let l=this.faker._randomizer.next(),c=o-a+1;return Math.floor(l*c+a)*n}float(e={}){typeof e=="number"&&(e={max:e});let{min:t=0,max:r=1,fractionDigits:n,multipleOf:a,multipleOf:o=n==null?void 0:10**-n}=e;if(r===t)return t;if(rthis.faker.helpers.arrayElement(e),{count:t}).join("")}alpha(e={}){typeof e=="number"&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return "";let{casing:r="mixed"}=e,{exclude:n=[]}=e;typeof n=="string"&&(n=[...n]);let a;switch(r){case"upper":{a=[...H];break}case"lower":{a=[...V];break}case"mixed":{a=[...V,...H];break}}return a=a.filter(o=>!n.includes(o)),this.fromCharacters(a,t)}alphanumeric(e={}){typeof e=="number"&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return "";let{casing:r="mixed"}=e,{exclude:n=[]}=e;typeof n=="string"&&(n=[...n]);let a=[...Re];switch(r){case"upper":{a.push(...H);break}case"lower":{a.push(...V);break}case"mixed":{a.push(...V,...H);break}}return a=a.filter(o=>!n.includes(o)),this.fromCharacters(a,t)}binary(e={}){let{prefix:t="0b"}=e,r=t;return r+=this.fromCharacters(["0","1"],e.length??1),r}octal(e={}){let{prefix:t="0o"}=e,r=t;return r+=this.fromCharacters(["0","1","2","3","4","5","6","7"],e.length??1),r}hexadecimal(e={}){let{casing:t="mixed",prefix:r="0x"}=e,n=this.faker.helpers.rangeToNumber(e.length??1);if(n<=0)return r;let a=this.fromCharacters(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","A","B","C","D","E","F"],n);return t==="upper"?a=a.toUpperCase():t==="lower"&&(a=a.toLowerCase()),`${r}${a}`}numeric(e={}){typeof e=="number"&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return "";let{allowLeadingZeros:r=!0}=e,{exclude:n=[]}=e;typeof n=="string"&&(n=[...n]);let a=Re.filter(s=>!n.includes(s));if(a.length===0||a.length===1&&!r&&a[0]==="0")throw new m("Unable to generate numeric string, because all possible digits are excluded.");let o="";return !r&&!n.includes("0")&&(o+=this.faker.helpers.arrayElement(a.filter(s=>s!=="0"))),o+=this.fromCharacters(a,t-o.length),o}sample(e=10){e=this.faker.helpers.rangeToNumber(e);let t={min:33,max:125},r="";for(;r.lengththis.faker.number.hex({min:0,max:15})).replaceAll("y",()=>this.faker.number.hex({min:8,max:11}))}nanoid(e=21){if(e=this.faker.helpers.rangeToNumber(e),e<=0)return "";let t=[{value:()=>this.alphanumeric(1),weight:62},{value:()=>this.faker.helpers.arrayElement(["_","-"]),weight:2}],r="";for(;r.length","?","@","[","\\","]","^","_","`","{","|","}","~"],e)}};var $=class{_defaultRefDate=()=>new Date;get defaultRefDate(){return this._defaultRefDate}setDefaultRefDate(e=()=>new Date){typeof e=="function"?this._defaultRefDate=e:this._defaultRefDate=()=>new Date(e);}_randomizer;datatype=new G(this);date=new R(this);helpers=new L(this);number=new j(this);string=new z(this);constructor(e={}){let{randomizer:t=Te()}=e;this._randomizer=t;}seed(e=Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)){return this._randomizer.seed(e),e}};new $;function Le(i){let e={};for(let t of i)for(let r in t){let n=t[r];e[r]===void 0?e[r]={...n}:e[r]={...n,...e[r]};}return e}function B(i){let e=`[@faker-js/faker]: ${i.deprecated} is deprecated`;i.since&&(e+=` since v${i.since}`),i.until&&(e+=` and will be removed in v${i.until}`),i.proposed&&(e+=`. Please use ${i.proposed} instead`),console.warn(`${e}.`);}var Y=class extends p{dog(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.dog)}cat(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cat)}snake(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.snake)}bear(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bear)}lion(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.lion)}cetacean(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cetacean)}horse(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.horse)}bird(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bird)}cow(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cow)}fish(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.fish)}crocodilia(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.crocodilia)}insect(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.insect)}rabbit(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rabbit)}rodent(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rodent)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.type)}};var gt={0:[[1999999,2],[2279999,3],[2289999,4],[3689999,3],[3699999,4],[6389999,3],[6397999,4],[6399999,7],[6449999,3],[6459999,7],[6479999,3],[6489999,7],[6549999,3],[6559999,4],[6999999,3],[8499999,4],[8999999,5],[9499999,6],[9999999,7]],1:[[99999,3],[299999,2],[349999,3],[399999,4],[499999,3],[699999,2],[999999,4],[3979999,3],[5499999,4],[6499999,5],[6799999,4],[6859999,5],[7139999,4],[7169999,3],[7319999,4],[7399999,7],[7749999,5],[7753999,7],[7763999,5],[7764999,7],[7769999,5],[7782999,7],[7899999,5],[7999999,4],[8004999,5],[8049999,5],[8379999,5],[8384999,7],[8671999,5],[8675999,4],[8697999,5],[9159999,6],[9165059,7],[9168699,6],[9169079,7],[9195999,6],[9196549,7],[9729999,6],[9877999,4],[9911499,6],[9911999,7],[9989899,6],[9999999,7]]},W=class extends p{department(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.department)}productName(){return `${this.productAdjective()} ${this.productMaterial()} ${this.product()}`}price(e={}){let{dec:t=2,max:r=1e3,min:n=1,symbol:a=""}=e;if(n<0||r<0)return `${a}0`;if(n===r)return `${a}${n.toFixed(t)}`;let o=this.faker.number.float({min:n,max:r,fractionDigits:t});if(t===0)return `${a}${o.toFixed(t)}`;let s=o*10**t%10,l=this.faker.helpers.weightedArrayElement([{weight:5,value:9},{weight:3,value:5},{weight:1,value:0},{weight:1,value:this.faker.number.int({min:0,max:9})}]),c=(1/10)**t,u=s*c,h=l*c,f=o-u+h;return n<=f&&f<=r?`${a}${f.toFixed(t)}`:`${a}${o.toFixed(t)}`}productAdjective(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.adjective)}productMaterial(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.material)}product(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.product)}productDescription(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_description)}isbn(e={}){typeof e=="number"&&(e={variant:e});let{variant:t=13,separator:r="-"}=e,n="978",[a,o]=this.faker.helpers.objectEntry(gt),s=this.faker.string.numeric(8),l=Number.parseInt(s.slice(0,-1)),c=o.find(([k])=>l<=k)?.[1];if(!c)throw new m(`Unable to find a registrant length for the group ${a}`);let u=s.slice(0,c),h=s.slice(c),f=[n,a,u,h];t===10&&f.shift();let g=f.join(""),b=0;for(let k=0;k{let e=0;for(let t of i)e=(e*10+ +t)%97;return e},pattern10:["01","02","03","04","05","06","07","08","09"],pattern100:["001","002","003","004","005","006","007","008","009"],toDigitString:i=>i.replaceAll(/[A-Z]/gi,e=>String((e.toUpperCase().codePointAt(0)??Number.NaN)-55))},E=yt;function kt(i){let e="";for(let t=0;tc.country===t):this.faker.helpers.arrayElement(E.formats);if(!n)throw new m(`Country code ${t} not supported.`);let a="",o=0;for(let c of n.bban){let u=c.count;for(o+=c.count;u>0;)c.type==="a"?a+=this.faker.helpers.arrayElement(E.alpha):c.type==="c"?this.faker.datatype.boolean(.8)?a+=this.faker.number.int(9):a+=this.faker.helpers.arrayElement(E.alpha):u>=3&&this.faker.datatype.boolean(.3)?this.faker.datatype.boolean()?(a+=this.faker.helpers.arrayElement(E.pattern100),u-=2):(a+=this.faker.helpers.arrayElement(E.pattern10),u--):a+=this.faker.number.int(9),u--;a=a.substring(0,o);}let s=98-E.mod97(E.toDigitString(`${a}${n.country}00`));s<10&&(s=`0${s}`);let l=`${n.country}${s}${a}`;return r?kt(l):l}bic(e={}){let{includeBranchCode:t=this.faker.datatype.boolean()}=e,r=this.faker.string.alpha({length:4,casing:"upper"}),n=this.faker.helpers.arrayElement(E.iso3166),a=this.faker.string.alphanumeric({length:2,casing:"upper"}),o=t?this.faker.datatype.boolean()?this.faker.string.alphanumeric({length:3,casing:"upper"}):"XXX":"";return `${r}${n}${a}${o}`}transactionDescription(){let e=this.amount(),t=this.faker.company.name(),r=this.transactionType(),n=this.accountNumber(),a=this.maskedNumber(),o=this.currencyCode();return `${r} transaction at ${t} using card ending with ***${a} for ${o} ${e} in account ***${n}`}};var Q=class extends p{adjective(){return this.faker.helpers.fake(this.faker.definitions.food.adjective)}description(){return this.faker.helpers.fake(this.faker.definitions.food.description_pattern)}dish(){let e=t=>t.split(" ").map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" ");return this.faker.datatype.boolean()?e(this.faker.helpers.fake(this.faker.definitions.food.dish_pattern)):e(this.faker.helpers.arrayElement(this.faker.definitions.food.dish))}ethnicCategory(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ethnic_category)}fruit(){return this.faker.helpers.arrayElement(this.faker.definitions.food.fruit)}ingredient(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ingredient)}meat(){return this.faker.helpers.arrayElement(this.faker.definitions.food.meat)}spice(){return this.faker.helpers.arrayElement(this.faker.definitions.food.spice)}vegetable(){return this.faker.helpers.arrayElement(this.faker.definitions.food.vegetable)}};var xt="\xA0",q=class extends p{branch(){let e=this.faker.hacker.noun().replace(" ","-"),t=this.faker.hacker.verb().replace(" ","-");return `${e}-${t}`}commitEntry(e={}){let{merge:t=this.faker.datatype.boolean({probability:.2}),eol:r="CRLF",refDate:n}=e,a=[`commit ${this.faker.git.commitSha()}`];t&&a.push(`Merge: ${this.commitSha({length:7})} ${this.commitSha({length:7})}`);let o=this.faker.person.firstName(),s=this.faker.person.lastName(),l=this.faker.person.fullName({firstName:o,lastName:s}),c=this.faker.internet.userName({firstName:o,lastName:s}),u=this.faker.helpers.arrayElement([l,c]),h=this.faker.internet.email({firstName:o,lastName:s});u=u.replaceAll(/^[.,:;"\\']|[<>\n]|[.,:;"\\']$/g,""),a.push(`Author: ${u} <${h}>`,`Date: ${this.commitDate({refDate:n})}`,"",`${xt.repeat(4)}${this.commitMessage()}`,"");let f=r==="CRLF"?`\r -`:` -`;return a.join(f)}commitMessage(){return `${this.faker.hacker.verb()} ${this.faker.hacker.adjective()} ${this.faker.hacker.noun()}`}commitDate(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],a=this.faker.date.recent({days:1,refDate:t}),o=r[a.getUTCDay()],s=n[a.getUTCMonth()],l=a.getUTCDate(),c=a.getUTCHours().toString().padStart(2,"0"),u=a.getUTCMinutes().toString().padStart(2,"0"),h=a.getUTCSeconds().toString().padStart(2,"0"),f=a.getUTCFullYear(),g=this.faker.number.int({min:-11,max:12}),b=Math.abs(g).toString().padStart(2,"0"),k="00",T=g>=0?"+":"-";return `${o} ${s} ${l} ${c}:${u}:${h} ${f} ${T}${b}${k}`}commitSha(e={}){let{length:t=40}=e;return this.faker.string.hexadecimal({length:t,casing:"lower",prefix:""})}};var ee=class extends p{abbreviation(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.abbreviation)}adjective(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.adjective)}noun(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.noun)}verb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.verb)}ingverb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.ingverb)}phrase(){let e={abbreviation:this.abbreviation,adjective:this.adjective,ingverb:this.ingverb,noun:this.noun,verb:this.verb},t=this.faker.helpers.arrayElement(this.faker.definitions.hacker.phrase);return this.faker.helpers.mustache(t,e)}};var $e=typeof Buffer>"u"?i=>{let e=new TextEncoder().encode(i),t=Array.from(e,r=>String.fromCodePoint(r)).join("");return btoa(t)}:i=>Buffer.from(i).toString("base64");var te=class extends p{avatar(){return this.avatarGitHub()}avatarGitHub(){return `https://avatars.githubusercontent.com/u/${this.faker.number.int(1e8)}`}avatarLegacy(){return B({deprecated:"faker.image.avatarLegacy()",proposed:"faker.image.avatar()",since:"9.0.2",until:"10.0.0"}),`https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/${this.faker.number.int(1249)}.jpg`}url(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999})}=e;return this.faker.helpers.arrayElement([this.urlLoremFlickr,({width:a,height:o})=>this.urlPicsumPhotos({width:a,height:o,grayscale:!1,blur:0})])({width:t,height:r})}urlLoremFlickr(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),category:n}=e;return `https://loremflickr.com/${t}/${r}${n==null?"":`/${n}`}?lock=${this.faker.number.int()}`}urlPicsumPhotos(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),grayscale:n=this.faker.datatype.boolean(),blur:a=this.faker.number.int({max:10})}=e,o=`https://picsum.photos/seed/${this.faker.string.alphanumeric({length:{min:5,max:10}})}/${t}/${r}`,s=typeof a=="number"&&a>=1&&a<=10;return (n||s)&&(o+="?",n&&(o+="grayscale"),n&&s&&(o+="&"),s&&(o+=`blur=${a}`)),o}urlPlaceholder(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),backgroundColor:n=this.faker.color.rgb({format:"hex",prefix:""}),textColor:a=this.faker.color.rgb({format:"hex",prefix:""}),format:o=this.faker.helpers.arrayElement(["gif","jpeg","jpg","png","webp"]),text:s=this.faker.lorem.words()}=e,l="https://via.placeholder.com";return l+=`/${t}`,l+=`x${r}`,l+=`/${n}`,l+=`/${a}`,l+=`.${o}`,l+=`?text=${encodeURIComponent(s)}`,l}dataUri(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),color:n=this.faker.color.rgb(),type:a=this.faker.helpers.arrayElements(["svg-uri","svg-base64"])}=e,o=`${t}x${r}`;return a==="svg-uri"?`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(o)}`:`data:image/svg+xml;base64,${$e(o)}`}};var At=Object.fromEntries([["\u0410","A"],["\u0430","a"],["\u0411","B"],["\u0431","b"],["\u0412","V"],["\u0432","v"],["\u0413","G"],["\u0433","g"],["\u0414","D"],["\u0434","d"],["\u044A\u0435","ye"],["\u042A\u0435","Ye"],["\u044A\u0415","yE"],["\u042A\u0415","YE"],["\u0415","E"],["\u0435","e"],["\u0401","Yo"],["\u0451","yo"],["\u0416","Zh"],["\u0436","zh"],["\u0417","Z"],["\u0437","z"],["\u0418","I"],["\u0438","i"],["\u044B\u0439","iy"],["\u042B\u0439","Iy"],["\u042B\u0419","IY"],["\u044B\u0419","iY"],["\u0419","Y"],["\u0439","y"],["\u041A","K"],["\u043A","k"],["\u041B","L"],["\u043B","l"],["\u041C","M"],["\u043C","m"],["\u041D","N"],["\u043D","n"],["\u041E","O"],["\u043E","o"],["\u041F","P"],["\u043F","p"],["\u0420","R"],["\u0440","r"],["\u0421","S"],["\u0441","s"],["\u0422","T"],["\u0442","t"],["\u0423","U"],["\u0443","u"],["\u0424","F"],["\u0444","f"],["\u0425","Kh"],["\u0445","kh"],["\u0426","Ts"],["\u0446","ts"],["\u0427","Ch"],["\u0447","ch"],["\u0428","Sh"],["\u0448","sh"],["\u0429","Sch"],["\u0449","sch"],["\u042A",""],["\u044A",""],["\u042B","Y"],["\u044B","y"],["\u042C",""],["\u044C",""],["\u042D","E"],["\u044D","e"],["\u042E","Yu"],["\u044E","yu"],["\u042F","Ya"],["\u044F","ya"]]),Et=Object.fromEntries([["\u03B1","a"],["\u03B2","v"],["\u03B3","g"],["\u03B4","d"],["\u03B5","e"],["\u03B6","z"],["\u03B7","i"],["\u03B8","th"],["\u03B9","i"],["\u03BA","k"],["\u03BB","l"],["\u03BC","m"],["\u03BD","n"],["\u03BE","ks"],["\u03BF","o"],["\u03C0","p"],["\u03C1","r"],["\u03C3","s"],["\u03C4","t"],["\u03C5","y"],["\u03C6","f"],["\u03C7","x"],["\u03C8","ps"],["\u03C9","o"],["\u03AC","a"],["\u03AD","e"],["\u03AF","i"],["\u03CC","o"],["\u03CD","y"],["\u03AE","i"],["\u03CE","o"],["\u03C2","s"],["\u03CA","i"],["\u03B0","y"],["\u03CB","y"],["\u0390","i"],["\u0391","A"],["\u0392","B"],["\u0393","G"],["\u0394","D"],["\u0395","E"],["\u0396","Z"],["\u0397","I"],["\u0398","TH"],["\u0399","I"],["\u039A","K"],["\u039B","L"],["\u039C","M"],["\u039D","N"],["\u039E","KS"],["\u039F","O"],["\u03A0","P"],["\u03A1","R"],["\u03A3","S"],["\u03A4","T"],["\u03A5","Y"],["\u03A6","F"],["\u03A7","X"],["\u03A8","PS"],["\u03A9","O"],["\u0386","A"],["\u0388","E"],["\u038A","I"],["\u038C","O"],["\u038E","Y"],["\u0389","I"],["\u038F","O"],["\u03AA","I"],["\u03AB","Y"]]),wt=Object.fromEntries([["\u0621","e"],["\u0622","a"],["\u0623","a"],["\u0624","w"],["\u0625","i"],["\u0626","y"],["\u0627","a"],["\u0628","b"],["\u0629","t"],["\u062A","t"],["\u062B","th"],["\u062C","j"],["\u062D","h"],["\u062E","kh"],["\u062F","d"],["\u0630","dh"],["\u0631","r"],["\u0632","z"],["\u0633","s"],["\u0634","sh"],["\u0635","s"],["\u0636","d"],["\u0637","t"],["\u0638","z"],["\u0639","e"],["\u063A","gh"],["\u0640","_"],["\u0641","f"],["\u0642","q"],["\u0643","k"],["\u0644","l"],["\u0645","m"],["\u0646","n"],["\u0647","h"],["\u0648","w"],["\u0649","a"],["\u064A","y"],["\u064E\u200E","a"],["\u064F","u"],["\u0650\u200E","i"]]),St=Object.fromEntries([["\u0561","a"],["\u0531","A"],["\u0562","b"],["\u0532","B"],["\u0563","g"],["\u0533","G"],["\u0564","d"],["\u0534","D"],["\u0565","ye"],["\u0535","Ye"],["\u0566","z"],["\u0536","Z"],["\u0567","e"],["\u0537","E"],["\u0568","y"],["\u0538","Y"],["\u0569","t"],["\u0539","T"],["\u056A","zh"],["\u053A","Zh"],["\u056B","i"],["\u053B","I"],["\u056C","l"],["\u053C","L"],["\u056D","kh"],["\u053D","Kh"],["\u056E","ts"],["\u053E","Ts"],["\u056F","k"],["\u053F","K"],["\u0570","h"],["\u0540","H"],["\u0571","dz"],["\u0541","Dz"],["\u0572","gh"],["\u0542","Gh"],["\u0573","tch"],["\u0543","Tch"],["\u0574","m"],["\u0544","M"],["\u0575","y"],["\u0545","Y"],["\u0576","n"],["\u0546","N"],["\u0577","sh"],["\u0547","Sh"],["\u0578","vo"],["\u0548","Vo"],["\u0579","ch"],["\u0549","Ch"],["\u057A","p"],["\u054A","P"],["\u057B","j"],["\u054B","J"],["\u057C","r"],["\u054C","R"],["\u057D","s"],["\u054D","S"],["\u057E","v"],["\u054E","V"],["\u057F","t"],["\u054F","T"],["\u0580","r"],["\u0550","R"],["\u0581","c"],["\u0551","C"],["\u0578\u0582","u"],["\u0548\u0552","U"],["\u0548\u0582","U"],["\u0583","p"],["\u0553","P"],["\u0584","q"],["\u0554","Q"],["\u0585","o"],["\u0555","O"],["\u0586","f"],["\u0556","F"],["\u0587","yev"]]),Tt=Object.fromEntries([["\u0686","ch"],["\u06A9","k"],["\u06AF","g"],["\u067E","p"],["\u0698","zh"],["\u06CC","y"]]),Mt=Object.fromEntries([["\u05D0","a"],["\u05D1","b"],["\u05D2","g"],["\u05D3","d"],["\u05D4","h"],["\u05D5","v"],["\u05D6","z"],["\u05D7","ch"],["\u05D8","t"],["\u05D9","y"],["\u05DB","k"],["\u05DA","kh"],["\u05DC","l"],["\u05DD","m"],["\u05DE","m"],["\u05DF","n"],["\u05E0","n"],["\u05E1","s"],["\u05E2","a"],["\u05E4","f"],["\u05E3","ph"],["\u05E6","ts"],["\u05E5","ts"],["\u05E7","k"],["\u05E8","r"],["\u05E9","sh"],["\u05EA","t"],["\u05D5","v"]]),fe={...At,...Et,...wt,...Tt,...St,...Mt};function Be(i){let e=()=>i.helpers.arrayElement(["AB","AF","AN","AR","AS","AZ","BE","BG","BN","BO","BR","BS","CA","CE","CO","CS","CU","CY","DA","DE","EL","EN","EO","ES","ET","EU","FA","FI","FJ","FO","FR","FY","GA","GD","GL","GV","HE","HI","HR","HT","HU","HY","ID","IS","IT","JA","JV","KA","KG","KO","KU","KW","KY","LA","LB","LI","LN","LT","LV","MG","MK","MN","MO","MS","MT","MY","NB","NE","NL","NN","NO","OC","PL","PT","RM","RO","RU","SC","SE","SK","SL","SO","SQ","SR","SV","SW","TK","TR","TY","UK","UR","UZ","VI","VO","YI","ZH"]),t=()=>{let c={chrome:["win","mac","lin"],firefox:["win","mac","lin"],opera:["win","mac","lin"],safari:["win","mac"],iexplorer:["win"]},u=i.helpers.objectKey(c),h=i.helpers.arrayElement(c[u]);return [u,h]},r=c=>i.helpers.arrayElement({lin:["i686","x86_64"],mac:["Intel","PPC","U; Intel","U; PPC"],win:["","WOW64","Win64; x64"]}[c]),n=c=>{let u="";for(let h=0;h=11?`Mozilla/5.0 (Windows NT 6.${i.number.int({min:1,max:3})}; Trident/7.0; ${i.datatype.boolean()?"Touch; ":""}rv:11.0) like Gecko`:`Mozilla/5.0 (compatible; MSIE ${c}.0; Windows NT ${a.nt()}; Trident/${a.trident()}${i.datatype.boolean()?`; .NET CLR ${a.net()}`:""})`},opera(c){let u=` Presto/${a.presto()} Version/${a.presto2()})`,h=c==="win"?`(Windows NT ${a.nt()}; U; ${e()}${u}`:c==="lin"?`(X11; Linux ${r(c)}; U; ${e()}${u}`:`(Macintosh; Intel Mac OS X ${a.osx()} U; ${e()} Presto/${a.presto()} Version/${a.presto2()})`;return `Opera/${i.number.int({min:9,max:14})}.${i.number.int(99)} ${h}`},safari(c){let u=a.safari(),h=`${i.number.int({min:4,max:7})}.${i.number.int(1)}.${i.number.int(10)}`;return `Mozilla/5.0 ${c==="mac"?`(Macintosh; ${r("mac")} Mac OS X ${a.osx("_")} rv:${i.number.int({min:2,max:6})}.0; ${e()}) `:`(Windows; U; Windows NT ${a.nt()})`}AppleWebKit/${u} (KHTML, like Gecko) Version/${h} Safari/${u}`},chrome(c){let u=a.safari();return `Mozilla/5.0 ${c==="mac"?`(Macintosh; ${r("mac")} Mac OS X ${a.osx("_")}) `:c==="win"?`(Windows; U; Windows NT ${a.nt()})`:`(X11; Linux ${r(c)}`} AppleWebKit/${u} (KHTML, like Gecko) Chrome/${a.chrome()} Safari/${u}`}},[s,l]=t();return o[s](l)}var re=class extends p{email(e={}){let{firstName:t,lastName:r,provider:n=this.faker.helpers.arrayElement(this.faker.definitions.internet.free_email),allowSpecialCharacters:a=!1}=e,o=this.userName({firstName:t,lastName:r});if(o=o.replaceAll(/[^A-Za-z0-9._+-]+/g,""),o=o.substring(0,50),a){let s=[..."._-"],l=[...".!#$%&'*+-/=?^_`{|}~"];o=o.replace(this.faker.helpers.arrayElement(s),this.faker.helpers.arrayElement(l));}return o=o.replaceAll(/\.{2,}/g,"."),o=o.replace(/^\./,""),o=o.replace(/\.$/,""),`${o}@${n}`}exampleEmail(e={}){let{firstName:t,lastName:r,allowSpecialCharacters:n=!1}=e,a=this.faker.helpers.arrayElement(this.faker.definitions.internet.example_email);return this.email({firstName:t,lastName:r,provider:a,allowSpecialCharacters:n})}userName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName(),lastName:n}=e,a=this.faker.helpers.arrayElement([".","_"]),o=this.faker.number.int(99),s=[()=>`${t}${a}${r}${o}`,()=>`${t}${a}${r}`];n||s.push(()=>`${t}${o}`);let l=this.faker.helpers.arrayElement(s)();return l=l.normalize("NFKD").replaceAll(/[\u0300-\u036F]/g,""),l=[...l].map(c=>{if(fe[c])return fe[c];let u=c.codePointAt(0)??Number.NaN;return u<128?c:u.toString(36)}).join(""),l=l.toString().replaceAll("'",""),l=l.replaceAll(" ",""),l}displayName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName()}=e,n=this.faker.helpers.arrayElement([".","_"]),a=this.faker.number.int(99),o=[()=>`${t}${a}`,()=>`${t}${n}${r}`,()=>`${t}${n}${r}${a}`],s=this.faker.helpers.arrayElement(o)();return s=s.toString().replaceAll("'",""),s=s.replaceAll(" ",""),s}protocol(){let e=["http","https"];return this.faker.helpers.arrayElement(e)}httpMethod(){let e=["GET","POST","PUT","DELETE","PATCH"];return this.faker.helpers.arrayElement(e)}httpStatusCode(e={}){let{types:t=Object.keys(this.faker.definitions.internet.http_status_code)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.http_status_code[r])}url(e={}){let{appendSlash:t=this.faker.datatype.boolean(),protocol:r="https"}=e;return `${r}://${this.domainName()}${t?"/":""}`}domainName(){return `${this.domainWord()}.${this.domainSuffix()}`}domainSuffix(){return this.faker.helpers.arrayElement(this.faker.definitions.internet.domain_suffix)}domainWord(){return this.faker.helpers.slugify(`${this.faker.word.adjective()}-${this.faker.word.noun()}`).toLowerCase()}ip(){return this.faker.datatype.boolean()?this.ipv4():this.ipv6()}ipv4(){return Array.from({length:4},()=>this.faker.number.int(255)).join(".")}ipv6(){return Array.from({length:8},()=>this.faker.string.hexadecimal({length:4,casing:"lower",prefix:""})).join(":")}port(){return this.faker.number.int(65535)}userAgent(){return Be(this.faker)}color(e={}){let{redBase:t=0,greenBase:r=0,blueBase:n=0}=e,a=c=>Math.floor((this.faker.number.int(256)+c)/2).toString(16).padStart(2,"0"),o=a(t),s=a(r),l=a(n);return `#${o}${s}${l}`}mac(e={}){typeof e=="string"&&(e={separator:e});let{separator:t=":"}=e,r,n="";for([":","-",""].includes(t)||(t=":"),r=0;r<12;r++)n+=this.faker.number.hex(15),r%2===1&&r!==11&&(n+=t);return n}password(e={}){let t=/[aeiouAEIOU]$/,r=/[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/,n=(c,u,h,f)=>{if(f.length>=c)return f;u&&(h=r.test(f)?t:r);let g=this.faker.number.int(94)+33,b=String.fromCodePoint(g);return u&&(b=b.toLowerCase()),h.test(b)?n(c,u,h,f+b):n(c,u,h,f)},{length:a=15,memorable:o=!1,pattern:s=/\w/,prefix:l=""}=e;return n(a,o,s,l)}emoji(e={}){let{types:t=Object.keys(this.faker.definitions.internet.emoji)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.emoji[r])}};var ne=class extends p{zipCode(e={}){typeof e=="string"&&(e={format:e});let{state:t}=e;if(t!=null){let n=this.faker.definitions.location.postcode_by_state[t];if(n==null)throw new m(`No zip code definition found for state "${t}"`);return this.faker.helpers.fake(n)}let{format:r=this.faker.definitions.location.postcode}=e;return typeof r=="string"&&(r=[r]),r=this.faker.helpers.arrayElement(r),this.faker.helpers.replaceSymbols(r)}city(){return this.faker.helpers.fake(this.faker.definitions.location.city_pattern)}buildingNumber(){return this.faker.helpers.arrayElement(this.faker.definitions.location.building_number).replaceAll(/#+/g,e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1}))}street(){return this.faker.helpers.fake(this.faker.definitions.location.street_pattern)}streetAddress(e={}){typeof e=="boolean"&&(e={useFullAddress:e});let{useFullAddress:t}=e,n=this.faker.definitions.location.street_address[t?"full":"normal"];return this.faker.helpers.fake(n)}secondaryAddress(){return this.faker.helpers.fake(this.faker.definitions.location.secondary_address).replaceAll(/#+/g,e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1}))}county(){return this.faker.helpers.arrayElement(this.faker.definitions.location.county)}country(){return this.faker.helpers.arrayElement(this.faker.definitions.location.country)}countryCode(e={}){typeof e=="string"&&(e={variant:e});let{variant:t="alpha-2"}=e,r=(()=>{switch(t){case"numeric":return "numeric";case"alpha-3":return "alpha3";case"alpha-2":return "alpha2"}})();return this.faker.helpers.arrayElement(this.faker.definitions.location.country_code)[r]}state(e={}){let{abbreviated:t=!1}=e,r=t?this.faker.definitions.location.state_abbr:this.faker.definitions.location.state;return this.faker.helpers.arrayElement(r)}latitude(e={}){let{max:t=90,min:r=-90,precision:n=4}=e;return this.faker.number.float({min:r,max:t,fractionDigits:n})}longitude(e={}){let{max:t=180,min:r=-180,precision:n=4}=e;return this.faker.number.float({max:t,min:r,fractionDigits:n})}direction(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal_abbr,...this.faker.definitions.location.direction.ordinal_abbr]):this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal,...this.faker.definitions.location.direction.ordinal])}cardinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal)}ordinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal)}nearbyGPSCoordinate(e={}){let{origin:t,radius:r=10,isMetric:n=!1}=e;if(t==null)return [this.latitude(),this.longitude()];let a=this.faker.number.float({max:2*Math.PI,fractionDigits:5}),o=n?r:r*1.60934,l=this.faker.number.float({max:o,fractionDigits:3})*.995,c=4e4/360,u=l/c,h=[t[0]+Math.sin(a)*u,t[1]+Math.cos(a)*u];return h[0]=h[0]%180,(h[0]<-90||h[0]>90)&&(h[0]=Math.sign(h[0])*180-h[0],h[1]+=180),h[1]=(h[1]%360+540)%360-180,[h[0],h[1]]}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.location.time_zone)}};function Pe(i,e,t=r=>r){let r={};for(let n of i){let a=e(n);r[a]===void 0&&(r[a]=[]),r[a].push(t(n));}return r}var be={fail:()=>{throw new m("No words found that match the given length.")},closest:(i,e)=>{let t=Pe(i,s=>s.length),r=Object.keys(t).map(Number),n=Math.min(...r),a=Math.max(...r),o=Math.min(e.min-n,a-e.max);return i.filter(s=>s.length===e.min-o||s.length===e.max+o)},shortest:i=>{let e=Math.min(...i.map(t=>t.length));return i.filter(t=>t.length===e)},longest:i=>{let e=Math.max(...i.map(t=>t.length));return i.filter(t=>t.length===e)},"any-length":i=>[...i]};function w(i){let{wordList:e,length:t,strategy:r="any-length"}=i;if(t){let n=typeof t=="number"?o=>o.length===t:o=>o.length>=t.min&&o.length<=t.max,a=e.filter(n);return a.length>0?a:typeof t=="number"?be[r](e,{min:t,max:t}):be[r](e,t)}else if(r==="shortest"||r==="longest")return be[r](e);return [...e]}var ae=class extends p{word(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.lorem.word}))}words(e=3){return this.faker.helpers.multiple(()=>this.word(),{count:e}).join(" ")}sentence(e={min:3,max:10}){let t=this.words(e);return `${t.charAt(0).toUpperCase()+t.substring(1)}.`}slug(e=3){let t=this.words(e);return this.faker.helpers.slugify(t)}sentences(e={min:2,max:6},t=" "){return this.faker.helpers.multiple(()=>this.sentence(),{count:e}).join(t)}paragraph(e=3){return this.sentences(e)}paragraphs(e=3,t=` -`){return this.faker.helpers.multiple(()=>this.paragraph(),{count:e}).join(t)}text(){let e=["sentence","sentences","paragraph","paragraphs","lines"],t=this.faker.helpers.arrayElement(e);return this[t]()}lines(e={min:1,max:5}){return this.sentences(e,` -`)}};var ie=class extends p{album(){return this.faker.helpers.arrayElement(this.faker.definitions.music.album)}artist(){return this.faker.helpers.arrayElement(this.faker.definitions.music.artist)}genre(){return this.faker.helpers.arrayElement(this.faker.definitions.music.genre)}songName(){return this.faker.helpers.arrayElement(this.faker.definitions.music.song_name)}};var oe=class extends p{number(e={}){let{style:t="human"}=e,n=this.faker.definitions.phone_number.format[t];if(!n)throw new Error(`No definitions for ${t} in this locale`);let a=this.faker.helpers.arrayElement(n);return pe(this.faker,a)}imei(){return this.faker.helpers.replaceCreditCardSymbols("##-######-######-L","#")}};var se=class extends p{chemicalElement(){return this.faker.helpers.arrayElement(this.faker.definitions.science.chemical_element)}unit(){return this.faker.helpers.arrayElement(this.faker.definitions.science.unit)}};var Nt=["video","audio","image","text","application"],Dt=["application/pdf","audio/mpeg","audio/wav","image/png","image/jpeg","image/gif","video/mp4","video/mpeg","text/html"],Rt=["en","wl","ww"],ve={index:"o",slot:"s",mac:"x",pci:"p"},Lt=["SUN","MON","TUE","WED","THU","FRI","SAT"],ce=class extends p{fileName(e={}){let{extensionCount:t=1}=e,r=this.faker.word.words().toLowerCase().replaceAll(/\W/g,"_"),n=this.faker.helpers.multiple(()=>this.fileExt(),{count:t}).join(".");return n.length===0?r:`${r}.${n}`}commonFileName(e){return `${this.fileName({extensionCount:0})}.${e||this.commonFileExt()}`}mimeType(){let e=Object.keys(this.faker.definitions.system.mime_type);return this.faker.helpers.arrayElement(e)}commonFileType(){return this.faker.helpers.arrayElement(Nt)}commonFileExt(){return this.fileExt(this.faker.helpers.arrayElement(Dt))}fileType(){let e=this.faker.definitions.system.mime_type,t=new Set(Object.keys(e).map(r=>r.split("/")[0]));return this.faker.helpers.arrayElement([...t])}fileExt(e){let t=this.faker.definitions.system.mime_type;if(typeof e=="string")return this.faker.helpers.arrayElement(t[e].extensions);let r=new Set(Object.values(t).flatMap(({extensions:n})=>n));return this.faker.helpers.arrayElement([...r])}directoryPath(){let e=this.faker.definitions.system.directory_path;return this.faker.helpers.arrayElement(e)}filePath(){return `${this.directoryPath()}/${this.fileName()}`}semver(){return [this.faker.number.int(9),this.faker.number.int(9),this.faker.number.int(9)].join(".")}networkInterface(e={}){let{interfaceType:t=this.faker.helpers.arrayElement(Rt),interfaceSchema:r=this.faker.helpers.objectKey(ve)}=e,n,a="",o=()=>this.faker.string.numeric({allowLeadingZeros:!0});switch(r){case"index":{n=o();break}case"slot":{n=`${o()}${this.faker.helpers.maybe(()=>`f${o()}`)??""}${this.faker.helpers.maybe(()=>`d${o()}`)??""}`;break}case"mac":{n=this.faker.internet.mac("");break}case"pci":{a=this.faker.helpers.maybe(()=>`P${o()}`)??"",n=`${o()}s${o()}${this.faker.helpers.maybe(()=>`f${o()}`)??""}${this.faker.helpers.maybe(()=>`d${o()}`)??""}`;break}}return `${a}${t}${ve[r]}${n}`}cron(e={}){let{includeYear:t=!1,includeNonStandard:r=!1}=e,n=[this.faker.number.int(59),"*"],a=[this.faker.number.int(23),"*"],o=[this.faker.number.int({min:1,max:31}),"*","?"],s=[this.faker.number.int({min:1,max:12}),"*"],l=[this.faker.number.int(6),this.faker.helpers.arrayElement(Lt),"*","?"],c=[this.faker.number.int({min:1970,max:2099}),"*"],u=this.faker.helpers.arrayElement(n),h=this.faker.helpers.arrayElement(a),f=this.faker.helpers.arrayElement(o),g=this.faker.helpers.arrayElement(s),b=this.faker.helpers.arrayElement(l),k=this.faker.helpers.arrayElement(c),T=`${u} ${h} ${f} ${g} ${b}`;t&&(T+=` ${k}`);let y=["@annually","@daily","@hourly","@monthly","@reboot","@weekly","@yearly"];return !r||this.faker.datatype.boolean()?T:this.faker.helpers.arrayElement(y)}};var le=class extends p{vehicle(){return `${this.manufacturer()} ${this.model()}`}manufacturer(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.manufacturer)}model(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.model)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.type)}fuel(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.fuel)}vin(){let e=["o","i","q","O","I","Q"];return `${this.faker.string.alphanumeric({length:10,casing:"upper",exclude:e})}${this.faker.string.alpha({length:1,casing:"upper",exclude:e})}${this.faker.string.alphanumeric({length:1,casing:"upper",exclude:e})}${this.faker.string.numeric({length:5,allowLeadingZeros:!0})}`}color(){return this.faker.color.human()}vrm(){return `${this.faker.string.alpha({length:2,casing:"upper"})}${this.faker.string.numeric({length:2,allowLeadingZeros:!0})}${this.faker.string.alpha({length:3,casing:"upper"})}`}bicycle(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.bicycle_type)}};var me=class extends p{adjective(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.adjective}))}adverb(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.adverb}))}conjunction(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.conjunction}))}interjection(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.interjection}))}noun(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.noun}))}preposition(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.preposition}))}verb(e={}){let t=typeof e=="number"?{length:e}:e;return this.faker.helpers.arrayElement(w({...t,wordList:this.faker.definitions.word.verb}))}sample(e={}){let t=this.faker.helpers.shuffle([this.adjective,this.adverb,this.conjunction,this.interjection,this.noun,this.preposition,this.verb]);for(let r of t)try{return r(e)}catch{continue}throw new m("No matching word data available for the current locale")}words(e={}){typeof e=="number"&&(e={count:e});let{count:t={min:1,max:3}}=e;return this.faker.helpers.multiple(()=>this.sample(),{count:t}).join(" ")}};var Ie=class extends ${rawDefinitions;definitions;airline=new v(this);animal=new Y(this);color=new I(this);commerce=new W(this);company=new Z(this);database=new J(this);date=new K(this);finance=new X(this);food=new Q(this);git=new q(this);hacker=new ee(this);helpers=new U(this);image=new te(this);internet=new re(this);location=new ne(this);lorem=new ae(this);music=new ie(this);person=new _(this);phone=new oe(this);science=new se(this);system=new ce(this);vehicle=new le(this);word=new me(this);get address(){return B({deprecated:"faker.address",proposed:"faker.location",since:"8.0",until:"10.0"}),this.location}get name(){return B({deprecated:"faker.name",proposed:"faker.person",since:"8.0",until:"10.0"}),this.person}constructor(e){super({randomizer:e.randomizer});let{locale:t}=e;if(Array.isArray(t)){if(t.length===0)throw new m("The locale option must contain at least one locale definition.");t=Le(t);}this.rawDefinitions=t,this.definitions=Me(this.rawDefinitions);}getMetadata(){return this.rawDefinitions.metadata??{}}};var _e=["Academy Color Encoding System (ACES)","Adobe RGB","Adobe Wide Gamut RGB","British Standard Colour (BS)","CIE 1931 XYZ","CIELAB","CIELUV","CIEUVW","CMY","CMYK","DCI-P3","Display-P3","Federal Standard 595C","HKS","HSL","HSLA","HSLuv","HSV","HWB","LCh","LMS","Munsell Color System","Natural Color System (NSC)","Pantone Matching System (PMS)","ProPhoto RGB Color Space","RAL","RG","RGBA","RGK","Rec. 2020","Rec. 2100","Rec. 601","Rec. 709","Uniform Color Spaces (UCSs)","YDbDr","YIQ","YPbPr","sRGB","sYCC","scRGB","xvYCC"];var $t={space:_e},Ge=$t;var Fe=["ascii_bin","ascii_general_ci","cp1250_bin","cp1250_general_ci","utf8_bin","utf8_general_ci","utf8_unicode_ci"];var Oe=["ARCHIVE","BLACKHOLE","CSV","InnoDB","MEMORY","MyISAM"];var Ke=["bigint","binary","bit","blob","boolean","date","datetime","decimal","double","enum","float","geometry","int","mediumint","point","real","serial","set","smallint","text","time","timestamp","tinyint","varchar"];var Bt={collation:Fe,engine:Oe,type:Ke},Ue=Bt;var ue=["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New_York","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"];var Pt={time_zone:ue},je=Pt;var He=["ADP","AGP","AI","API","ASCII","CLI","COM","CSS","DNS","DRAM","EXE","FTP","GB","HDD","HEX","HTTP","IB","IP","JBOD","JSON","OCR","PCI","PNG","RAM","RSS","SAS","SCSI","SDD","SMS","SMTP","SQL","SSD","SSL","TCP","THX","TLS","UDP","USB","UTF8","VGA","XML","XSS"];var vt={abbreviation:He},Ve=vt;var ze={smiley:["\u{1F600}","\u{1F603}","\u{1F604}","\u{1F601}","\u{1F606}","\u{1F605}","\u{1F923}","\u{1F602}","\u{1F642}","\u{1F643}","\u{1F609}","\u{1F60A}","\u{1F607}","\u{1F970}","\u{1F60D}","\u{1F929}","\u{1F618}","\u{1F617}","\u263A\uFE0F","\u{1F61A}","\u{1F619}","\u{1F972}","\u{1F60B}","\u{1F61B}","\u{1F61C}","\u{1F92A}","\u{1F61D}","\u{1F911}","\u{1F917}","\u{1F92D}","\u{1F92B}","\u{1F914}","\u{1F910}","\u{1F928}","\u{1F610}","\u{1F611}","\u{1F636}","\u{1F636}\u200D\u{1F32B}\uFE0F","\u{1F60F}","\u{1F612}","\u{1F644}","\u{1F62C}","\u{1F62E}\u200D\u{1F4A8}","\u{1F925}","\u{1F60C}","\u{1F614}","\u{1F62A}","\u{1F924}","\u{1F634}","\u{1F637}","\u{1F912}","\u{1F915}","\u{1F922}","\u{1F92E}","\u{1F927}","\u{1F975}","\u{1F976}","\u{1F974}","\u{1F635}","\u{1F635}\u200D\u{1F4AB}","\u{1F92F}","\u{1F920}","\u{1F973}","\u{1F978}","\u{1F60E}","\u{1F913}","\u{1F9D0}","\u{1F615}","\u{1F61F}","\u{1F641}","\u2639\uFE0F","\u{1F62E}","\u{1F62F}","\u{1F632}","\u{1F633}","\u{1F97A}","\u{1F626}","\u{1F627}","\u{1F628}","\u{1F630}","\u{1F625}","\u{1F622}","\u{1F62D}","\u{1F631}","\u{1F616}","\u{1F623}","\u{1F61E}","\u{1F613}","\u{1F629}","\u{1F62B}","\u{1F971}","\u{1F624}","\u{1F621}","\u{1F620}","\u{1F92C}","\u{1F608}","\u{1F47F}","\u{1F480}","\u2620\uFE0F","\u{1F4A9}","\u{1F921}","\u{1F479}","\u{1F47A}","\u{1F47B}","\u{1F47D}","\u{1F47E}","\u{1F916}","\u{1F63A}","\u{1F638}","\u{1F639}","\u{1F63B}","\u{1F63C}","\u{1F63D}","\u{1F640}","\u{1F63F}","\u{1F63E}","\u{1F648}","\u{1F649}","\u{1F64A}","\u{1F48B}","\u{1F48C}","\u{1F498}","\u{1F49D}","\u{1F496}","\u{1F497}","\u{1F493}","\u{1F49E}","\u{1F495}","\u{1F49F}","\u2763\uFE0F","\u{1F494}","\u2764\uFE0F\u200D\u{1F525}","\u2764\uFE0F\u200D\u{1FA79}","\u2764\uFE0F","\u{1F9E1}","\u{1F49B}","\u{1F49A}","\u{1F499}","\u{1F49C}","\u{1F90E}","\u{1F5A4}","\u{1F90D}","\u{1F4AF}","\u{1F4A2}","\u{1F4A5}","\u{1F4AB}","\u{1F4A6}","\u{1F4A8}","\u{1F573}\uFE0F","\u{1F4A3}","\u{1F4AC}","\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F","\u{1F5E8}\uFE0F","\u{1F5EF}\uFE0F","\u{1F4AD}","\u{1F4A4}"],body:["\u{1F44B}","\u{1F44B}\u{1F3FB}","\u{1F44B}\u{1F3FC}","\u{1F44B}\u{1F3FD}","\u{1F44B}\u{1F3FE}","\u{1F44B}\u{1F3FF}","\u{1F91A}","\u{1F91A}\u{1F3FB}","\u{1F91A}\u{1F3FC}","\u{1F91A}\u{1F3FD}","\u{1F91A}\u{1F3FE}","\u{1F91A}\u{1F3FF}","\u{1F590}\uFE0F","\u{1F590}\u{1F3FB}","\u{1F590}\u{1F3FC}","\u{1F590}\u{1F3FD}","\u{1F590}\u{1F3FE}","\u{1F590}\u{1F3FF}","\u270B","\u270B\u{1F3FB}","\u270B\u{1F3FC}","\u270B\u{1F3FD}","\u270B\u{1F3FE}","\u270B\u{1F3FF}","\u{1F596}","\u{1F596}\u{1F3FB}","\u{1F596}\u{1F3FC}","\u{1F596}\u{1F3FD}","\u{1F596}\u{1F3FE}","\u{1F596}\u{1F3FF}","\u{1F44C}","\u{1F44C}\u{1F3FB}","\u{1F44C}\u{1F3FC}","\u{1F44C}\u{1F3FD}","\u{1F44C}\u{1F3FE}","\u{1F44C}\u{1F3FF}","\u{1F90C}","\u{1F90C}\u{1F3FB}","\u{1F90C}\u{1F3FC}","\u{1F90C}\u{1F3FD}","\u{1F90C}\u{1F3FE}","\u{1F90C}\u{1F3FF}","\u{1F90F}","\u{1F90F}\u{1F3FB}","\u{1F90F}\u{1F3FC}","\u{1F90F}\u{1F3FD}","\u{1F90F}\u{1F3FE}","\u{1F90F}\u{1F3FF}","\u270C\uFE0F","\u270C\u{1F3FB}","\u270C\u{1F3FC}","\u270C\u{1F3FD}","\u270C\u{1F3FE}","\u270C\u{1F3FF}","\u{1F91E}","\u{1F91E}\u{1F3FB}","\u{1F91E}\u{1F3FC}","\u{1F91E}\u{1F3FD}","\u{1F91E}\u{1F3FE}","\u{1F91E}\u{1F3FF}","\u{1F91F}","\u{1F91F}\u{1F3FB}","\u{1F91F}\u{1F3FC}","\u{1F91F}\u{1F3FD}","\u{1F91F}\u{1F3FE}","\u{1F91F}\u{1F3FF}","\u{1F918}","\u{1F918}\u{1F3FB}","\u{1F918}\u{1F3FC}","\u{1F918}\u{1F3FD}","\u{1F918}\u{1F3FE}","\u{1F918}\u{1F3FF}","\u{1F919}","\u{1F919}\u{1F3FB}","\u{1F919}\u{1F3FC}","\u{1F919}\u{1F3FD}","\u{1F919}\u{1F3FE}","\u{1F919}\u{1F3FF}","\u{1F448}","\u{1F448}\u{1F3FB}","\u{1F448}\u{1F3FC}","\u{1F448}\u{1F3FD}","\u{1F448}\u{1F3FE}","\u{1F448}\u{1F3FF}","\u{1F449}","\u{1F449}\u{1F3FB}","\u{1F449}\u{1F3FC}","\u{1F449}\u{1F3FD}","\u{1F449}\u{1F3FE}","\u{1F449}\u{1F3FF}","\u{1F446}","\u{1F446}\u{1F3FB}","\u{1F446}\u{1F3FC}","\u{1F446}\u{1F3FD}","\u{1F446}\u{1F3FE}","\u{1F446}\u{1F3FF}","\u{1F595}","\u{1F595}\u{1F3FB}","\u{1F595}\u{1F3FC}","\u{1F595}\u{1F3FD}","\u{1F595}\u{1F3FE}","\u{1F595}\u{1F3FF}","\u{1F447}","\u{1F447}\u{1F3FB}","\u{1F447}\u{1F3FC}","\u{1F447}\u{1F3FD}","\u{1F447}\u{1F3FE}","\u{1F447}\u{1F3FF}","\u261D\uFE0F","\u261D\u{1F3FB}","\u261D\u{1F3FC}","\u261D\u{1F3FD}","\u261D\u{1F3FE}","\u261D\u{1F3FF}","\u{1F44D}","\u{1F44D}\u{1F3FB}","\u{1F44D}\u{1F3FC}","\u{1F44D}\u{1F3FD}","\u{1F44D}\u{1F3FE}","\u{1F44D}\u{1F3FF}","\u{1F44E}","\u{1F44E}\u{1F3FB}","\u{1F44E}\u{1F3FC}","\u{1F44E}\u{1F3FD}","\u{1F44E}\u{1F3FE}","\u{1F44E}\u{1F3FF}","\u270A","\u270A\u{1F3FB}","\u270A\u{1F3FC}","\u270A\u{1F3FD}","\u270A\u{1F3FE}","\u270A\u{1F3FF}","\u{1F44A}","\u{1F44A}\u{1F3FB}","\u{1F44A}\u{1F3FC}","\u{1F44A}\u{1F3FD}","\u{1F44A}\u{1F3FE}","\u{1F44A}\u{1F3FF}","\u{1F91B}","\u{1F91B}\u{1F3FB}","\u{1F91B}\u{1F3FC}","\u{1F91B}\u{1F3FD}","\u{1F91B}\u{1F3FE}","\u{1F91B}\u{1F3FF}","\u{1F91C}","\u{1F91C}\u{1F3FB}","\u{1F91C}\u{1F3FC}","\u{1F91C}\u{1F3FD}","\u{1F91C}\u{1F3FE}","\u{1F91C}\u{1F3FF}","\u{1F44F}","\u{1F44F}\u{1F3FB}","\u{1F44F}\u{1F3FC}","\u{1F44F}\u{1F3FD}","\u{1F44F}\u{1F3FE}","\u{1F44F}\u{1F3FF}","\u{1F64C}","\u{1F64C}\u{1F3FB}","\u{1F64C}\u{1F3FC}","\u{1F64C}\u{1F3FD}","\u{1F64C}\u{1F3FE}","\u{1F64C}\u{1F3FF}","\u{1F450}","\u{1F450}\u{1F3FB}","\u{1F450}\u{1F3FC}","\u{1F450}\u{1F3FD}","\u{1F450}\u{1F3FE}","\u{1F450}\u{1F3FF}","\u{1F932}","\u{1F932}\u{1F3FB}","\u{1F932}\u{1F3FC}","\u{1F932}\u{1F3FD}","\u{1F932}\u{1F3FE}","\u{1F932}\u{1F3FF}","\u{1F91D}","\u{1F64F}","\u{1F64F}\u{1F3FB}","\u{1F64F}\u{1F3FC}","\u{1F64F}\u{1F3FD}","\u{1F64F}\u{1F3FE}","\u{1F64F}\u{1F3FF}","\u270D\uFE0F","\u270D\u{1F3FB}","\u270D\u{1F3FC}","\u270D\u{1F3FD}","\u270D\u{1F3FE}","\u270D\u{1F3FF}","\u{1F485}","\u{1F485}\u{1F3FB}","\u{1F485}\u{1F3FC}","\u{1F485}\u{1F3FD}","\u{1F485}\u{1F3FE}","\u{1F485}\u{1F3FF}","\u{1F933}","\u{1F933}\u{1F3FB}","\u{1F933}\u{1F3FC}","\u{1F933}\u{1F3FD}","\u{1F933}\u{1F3FE}","\u{1F933}\u{1F3FF}","\u{1F4AA}","\u{1F4AA}\u{1F3FB}","\u{1F4AA}\u{1F3FC}","\u{1F4AA}\u{1F3FD}","\u{1F4AA}\u{1F3FE}","\u{1F4AA}\u{1F3FF}","\u{1F9BE}","\u{1F9BF}","\u{1F9B5}","\u{1F9B5}\u{1F3FB}","\u{1F9B5}\u{1F3FC}","\u{1F9B5}\u{1F3FD}","\u{1F9B5}\u{1F3FE}","\u{1F9B5}\u{1F3FF}","\u{1F9B6}","\u{1F9B6}\u{1F3FB}","\u{1F9B6}\u{1F3FC}","\u{1F9B6}\u{1F3FD}","\u{1F9B6}\u{1F3FE}","\u{1F9B6}\u{1F3FF}","\u{1F442}","\u{1F442}\u{1F3FB}","\u{1F442}\u{1F3FC}","\u{1F442}\u{1F3FD}","\u{1F442}\u{1F3FE}","\u{1F442}\u{1F3FF}","\u{1F9BB}","\u{1F9BB}\u{1F3FB}","\u{1F9BB}\u{1F3FC}","\u{1F9BB}\u{1F3FD}","\u{1F9BB}\u{1F3FE}","\u{1F9BB}\u{1F3FF}","\u{1F443}","\u{1F443}\u{1F3FB}","\u{1F443}\u{1F3FC}","\u{1F443}\u{1F3FD}","\u{1F443}\u{1F3FE}","\u{1F443}\u{1F3FF}","\u{1F9E0}","\u{1FAC0}","\u{1FAC1}","\u{1F9B7}","\u{1F9B4}","\u{1F440}","\u{1F441}\uFE0F","\u{1F445}","\u{1F444}"],person:["\u{1F476}","\u{1F476}\u{1F3FB}","\u{1F476}\u{1F3FC}","\u{1F476}\u{1F3FD}","\u{1F476}\u{1F3FE}","\u{1F476}\u{1F3FF}","\u{1F9D2}","\u{1F9D2}\u{1F3FB}","\u{1F9D2}\u{1F3FC}","\u{1F9D2}\u{1F3FD}","\u{1F9D2}\u{1F3FE}","\u{1F9D2}\u{1F3FF}","\u{1F466}","\u{1F466}\u{1F3FB}","\u{1F466}\u{1F3FC}","\u{1F466}\u{1F3FD}","\u{1F466}\u{1F3FE}","\u{1F466}\u{1F3FF}","\u{1F467}","\u{1F467}\u{1F3FB}","\u{1F467}\u{1F3FC}","\u{1F467}\u{1F3FD}","\u{1F467}\u{1F3FE}","\u{1F467}\u{1F3FF}","\u{1F9D1}","\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FF}","\u{1F471}","\u{1F471}\u{1F3FB}","\u{1F471}\u{1F3FC}","\u{1F471}\u{1F3FD}","\u{1F471}\u{1F3FE}","\u{1F471}\u{1F3FF}","\u{1F468}","\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FF}","\u{1F9D4}","\u{1F9D4}\u{1F3FB}","\u{1F9D4}\u{1F3FC}","\u{1F9D4}\u{1F3FD}","\u{1F9D4}\u{1F3FE}","\u{1F9D4}\u{1F3FF}","\u{1F9D4}\u200D\u2642\uFE0F","\u{1F9D4}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9D4}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9D4}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9D4}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9D4}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D4}\u200D\u2640\uFE0F","\u{1F9D4}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9D4}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9D4}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9D4}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9D4}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F468}\u200D\u{1F9B0}","\u{1F468}\u{1F3FB}\u200D\u{1F9B0}","\u{1F468}\u{1F3FC}\u200D\u{1F9B0}","\u{1F468}\u{1F3FD}\u200D\u{1F9B0}","\u{1F468}\u{1F3FE}\u200D\u{1F9B0}","\u{1F468}\u{1F3FF}\u200D\u{1F9B0}","\u{1F468}\u200D\u{1F9B1}","\u{1F468}\u{1F3FB}\u200D\u{1F9B1}","\u{1F468}\u{1F3FC}\u200D\u{1F9B1}","\u{1F468}\u{1F3FD}\u200D\u{1F9B1}","\u{1F468}\u{1F3FE}\u200D\u{1F9B1}","\u{1F468}\u{1F3FF}\u200D\u{1F9B1}","\u{1F468}\u200D\u{1F9B3}","\u{1F468}\u{1F3FB}\u200D\u{1F9B3}","\u{1F468}\u{1F3FC}\u200D\u{1F9B3}","\u{1F468}\u{1F3FD}\u200D\u{1F9B3}","\u{1F468}\u{1F3FE}\u200D\u{1F9B3}","\u{1F468}\u{1F3FF}\u200D\u{1F9B3}","\u{1F468}\u200D\u{1F9B2}","\u{1F468}\u{1F3FB}\u200D\u{1F9B2}","\u{1F468}\u{1F3FC}\u200D\u{1F9B2}","\u{1F468}\u{1F3FD}\u200D\u{1F9B2}","\u{1F468}\u{1F3FE}\u200D\u{1F9B2}","\u{1F468}\u{1F3FF}\u200D\u{1F9B2}","\u{1F469}","\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FF}","\u{1F469}\u200D\u{1F9B0}","\u{1F469}\u{1F3FB}\u200D\u{1F9B0}","\u{1F469}\u{1F3FC}\u200D\u{1F9B0}","\u{1F469}\u{1F3FD}\u200D\u{1F9B0}","\u{1F469}\u{1F3FE}\u200D\u{1F9B0}","\u{1F469}\u{1F3FF}\u200D\u{1F9B0}","\u{1F9D1}\u200D\u{1F9B0}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9B0}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9B0}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9B0}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9B0}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9B0}","\u{1F469}\u200D\u{1F9B1}","\u{1F469}\u{1F3FB}\u200D\u{1F9B1}","\u{1F469}\u{1F3FC}\u200D\u{1F9B1}","\u{1F469}\u{1F3FD}\u200D\u{1F9B1}","\u{1F469}\u{1F3FE}\u200D\u{1F9B1}","\u{1F469}\u{1F3FF}\u200D\u{1F9B1}","\u{1F9D1}\u200D\u{1F9B1}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9B1}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9B1}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9B1}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9B1}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9B1}","\u{1F469}\u200D\u{1F9B3}","\u{1F469}\u{1F3FB}\u200D\u{1F9B3}","\u{1F469}\u{1F3FC}\u200D\u{1F9B3}","\u{1F469}\u{1F3FD}\u200D\u{1F9B3}","\u{1F469}\u{1F3FE}\u200D\u{1F9B3}","\u{1F469}\u{1F3FF}\u200D\u{1F9B3}","\u{1F9D1}\u200D\u{1F9B3}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9B3}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9B3}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9B3}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9B3}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9B3}","\u{1F469}\u200D\u{1F9B2}","\u{1F469}\u{1F3FB}\u200D\u{1F9B2}","\u{1F469}\u{1F3FC}\u200D\u{1F9B2}","\u{1F469}\u{1F3FD}\u200D\u{1F9B2}","\u{1F469}\u{1F3FE}\u200D\u{1F9B2}","\u{1F469}\u{1F3FF}\u200D\u{1F9B2}","\u{1F9D1}\u200D\u{1F9B2}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9B2}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9B2}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9B2}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9B2}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9B2}","\u{1F471}\u200D\u2640\uFE0F","\u{1F471}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F471}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F471}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F471}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F471}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F471}\u200D\u2642\uFE0F","\u{1F471}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F471}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F471}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F471}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F471}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D3}","\u{1F9D3}\u{1F3FB}","\u{1F9D3}\u{1F3FC}","\u{1F9D3}\u{1F3FD}","\u{1F9D3}\u{1F3FE}","\u{1F9D3}\u{1F3FF}","\u{1F474}","\u{1F474}\u{1F3FB}","\u{1F474}\u{1F3FC}","\u{1F474}\u{1F3FD}","\u{1F474}\u{1F3FE}","\u{1F474}\u{1F3FF}","\u{1F475}","\u{1F475}\u{1F3FB}","\u{1F475}\u{1F3FC}","\u{1F475}\u{1F3FD}","\u{1F475}\u{1F3FE}","\u{1F475}\u{1F3FF}","\u{1F64D}","\u{1F64D}\u{1F3FB}","\u{1F64D}\u{1F3FC}","\u{1F64D}\u{1F3FD}","\u{1F64D}\u{1F3FE}","\u{1F64D}\u{1F3FF}","\u{1F64D}\u200D\u2642\uFE0F","\u{1F64D}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F64D}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F64D}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F64D}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F64D}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F64D}\u200D\u2640\uFE0F","\u{1F64D}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F64D}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F64D}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F64D}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F64D}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F64E}","\u{1F64E}\u{1F3FB}","\u{1F64E}\u{1F3FC}","\u{1F64E}\u{1F3FD}","\u{1F64E}\u{1F3FE}","\u{1F64E}\u{1F3FF}","\u{1F64E}\u200D\u2642\uFE0F","\u{1F64E}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F64E}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F64E}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F64E}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F64E}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F64E}\u200D\u2640\uFE0F","\u{1F64E}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F64E}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F64E}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F64E}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F64E}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F645}","\u{1F645}\u{1F3FB}","\u{1F645}\u{1F3FC}","\u{1F645}\u{1F3FD}","\u{1F645}\u{1F3FE}","\u{1F645}\u{1F3FF}","\u{1F645}\u200D\u2642\uFE0F","\u{1F645}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F645}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F645}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F645}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F645}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F645}\u200D\u2640\uFE0F","\u{1F645}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F645}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F645}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F645}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F645}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F646}","\u{1F646}\u{1F3FB}","\u{1F646}\u{1F3FC}","\u{1F646}\u{1F3FD}","\u{1F646}\u{1F3FE}","\u{1F646}\u{1F3FF}","\u{1F646}\u200D\u2642\uFE0F","\u{1F646}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F646}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F646}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F646}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F646}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F646}\u200D\u2640\uFE0F","\u{1F646}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F646}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F646}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F646}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F646}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F481}","\u{1F481}\u{1F3FB}","\u{1F481}\u{1F3FC}","\u{1F481}\u{1F3FD}","\u{1F481}\u{1F3FE}","\u{1F481}\u{1F3FF}","\u{1F481}\u200D\u2642\uFE0F","\u{1F481}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F481}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F481}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F481}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F481}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F481}\u200D\u2640\uFE0F","\u{1F481}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F481}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F481}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F481}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F481}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F64B}","\u{1F64B}\u{1F3FB}","\u{1F64B}\u{1F3FC}","\u{1F64B}\u{1F3FD}","\u{1F64B}\u{1F3FE}","\u{1F64B}\u{1F3FF}","\u{1F64B}\u200D\u2642\uFE0F","\u{1F64B}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F64B}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F64B}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F64B}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F64B}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F64B}\u200D\u2640\uFE0F","\u{1F64B}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F64B}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F64B}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F64B}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F64B}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9CF}","\u{1F9CF}\u{1F3FB}","\u{1F9CF}\u{1F3FC}","\u{1F9CF}\u{1F3FD}","\u{1F9CF}\u{1F3FE}","\u{1F9CF}\u{1F3FF}","\u{1F9CF}\u200D\u2642\uFE0F","\u{1F9CF}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9CF}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9CF}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9CF}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9CF}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9CF}\u200D\u2640\uFE0F","\u{1F9CF}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9CF}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9CF}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9CF}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9CF}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F647}","\u{1F647}\u{1F3FB}","\u{1F647}\u{1F3FC}","\u{1F647}\u{1F3FD}","\u{1F647}\u{1F3FE}","\u{1F647}\u{1F3FF}","\u{1F647}\u200D\u2642\uFE0F","\u{1F647}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F647}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F647}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F647}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F647}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F647}\u200D\u2640\uFE0F","\u{1F647}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F647}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F647}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F647}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F647}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F926}","\u{1F926}\u{1F3FB}","\u{1F926}\u{1F3FC}","\u{1F926}\u{1F3FD}","\u{1F926}\u{1F3FE}","\u{1F926}\u{1F3FF}","\u{1F926}\u200D\u2642\uFE0F","\u{1F926}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F926}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F926}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F926}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F926}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F926}\u200D\u2640\uFE0F","\u{1F926}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F926}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F926}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F926}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F926}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F937}","\u{1F937}\u{1F3FB}","\u{1F937}\u{1F3FC}","\u{1F937}\u{1F3FD}","\u{1F937}\u{1F3FE}","\u{1F937}\u{1F3FF}","\u{1F937}\u200D\u2642\uFE0F","\u{1F937}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F937}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F937}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F937}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F937}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F937}\u200D\u2640\uFE0F","\u{1F937}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F937}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F937}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F937}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F937}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9D1}\u200D\u2695\uFE0F","\u{1F9D1}\u{1F3FB}\u200D\u2695\uFE0F","\u{1F9D1}\u{1F3FC}\u200D\u2695\uFE0F","\u{1F9D1}\u{1F3FD}\u200D\u2695\uFE0F","\u{1F9D1}\u{1F3FE}\u200D\u2695\uFE0F","\u{1F9D1}\u{1F3FF}\u200D\u2695\uFE0F","\u{1F468}\u200D\u2695\uFE0F","\u{1F468}\u{1F3FB}\u200D\u2695\uFE0F","\u{1F468}\u{1F3FC}\u200D\u2695\uFE0F","\u{1F468}\u{1F3FD}\u200D\u2695\uFE0F","\u{1F468}\u{1F3FE}\u200D\u2695\uFE0F","\u{1F468}\u{1F3FF}\u200D\u2695\uFE0F","\u{1F469}\u200D\u2695\uFE0F","\u{1F469}\u{1F3FB}\u200D\u2695\uFE0F","\u{1F469}\u{1F3FC}\u200D\u2695\uFE0F","\u{1F469}\u{1F3FD}\u200D\u2695\uFE0F","\u{1F469}\u{1F3FE}\u200D\u2695\uFE0F","\u{1F469}\u{1F3FF}\u200D\u2695\uFE0F","\u{1F9D1}\u200D\u{1F393}","\u{1F9D1}\u{1F3FB}\u200D\u{1F393}","\u{1F9D1}\u{1F3FC}\u200D\u{1F393}","\u{1F9D1}\u{1F3FD}\u200D\u{1F393}","\u{1F9D1}\u{1F3FE}\u200D\u{1F393}","\u{1F9D1}\u{1F3FF}\u200D\u{1F393}","\u{1F468}\u200D\u{1F393}","\u{1F468}\u{1F3FB}\u200D\u{1F393}","\u{1F468}\u{1F3FC}\u200D\u{1F393}","\u{1F468}\u{1F3FD}\u200D\u{1F393}","\u{1F468}\u{1F3FE}\u200D\u{1F393}","\u{1F468}\u{1F3FF}\u200D\u{1F393}","\u{1F469}\u200D\u{1F393}","\u{1F469}\u{1F3FB}\u200D\u{1F393}","\u{1F469}\u{1F3FC}\u200D\u{1F393}","\u{1F469}\u{1F3FD}\u200D\u{1F393}","\u{1F469}\u{1F3FE}\u200D\u{1F393}","\u{1F469}\u{1F3FF}\u200D\u{1F393}","\u{1F9D1}\u200D\u{1F3EB}","\u{1F9D1}\u{1F3FB}\u200D\u{1F3EB}","\u{1F9D1}\u{1F3FC}\u200D\u{1F3EB}","\u{1F9D1}\u{1F3FD}\u200D\u{1F3EB}","\u{1F9D1}\u{1F3FE}\u200D\u{1F3EB}","\u{1F9D1}\u{1F3FF}\u200D\u{1F3EB}","\u{1F468}\u200D\u{1F3EB}","\u{1F468}\u{1F3FB}\u200D\u{1F3EB}","\u{1F468}\u{1F3FC}\u200D\u{1F3EB}","\u{1F468}\u{1F3FD}\u200D\u{1F3EB}","\u{1F468}\u{1F3FE}\u200D\u{1F3EB}","\u{1F468}\u{1F3FF}\u200D\u{1F3EB}","\u{1F469}\u200D\u{1F3EB}","\u{1F469}\u{1F3FB}\u200D\u{1F3EB}","\u{1F469}\u{1F3FC}\u200D\u{1F3EB}","\u{1F469}\u{1F3FD}\u200D\u{1F3EB}","\u{1F469}\u{1F3FE}\u200D\u{1F3EB}","\u{1F469}\u{1F3FF}\u200D\u{1F3EB}","\u{1F9D1}\u200D\u2696\uFE0F","\u{1F9D1}\u{1F3FB}\u200D\u2696\uFE0F","\u{1F9D1}\u{1F3FC}\u200D\u2696\uFE0F","\u{1F9D1}\u{1F3FD}\u200D\u2696\uFE0F","\u{1F9D1}\u{1F3FE}\u200D\u2696\uFE0F","\u{1F9D1}\u{1F3FF}\u200D\u2696\uFE0F","\u{1F468}\u200D\u2696\uFE0F","\u{1F468}\u{1F3FB}\u200D\u2696\uFE0F","\u{1F468}\u{1F3FC}\u200D\u2696\uFE0F","\u{1F468}\u{1F3FD}\u200D\u2696\uFE0F","\u{1F468}\u{1F3FE}\u200D\u2696\uFE0F","\u{1F468}\u{1F3FF}\u200D\u2696\uFE0F","\u{1F469}\u200D\u2696\uFE0F","\u{1F469}\u{1F3FB}\u200D\u2696\uFE0F","\u{1F469}\u{1F3FC}\u200D\u2696\uFE0F","\u{1F469}\u{1F3FD}\u200D\u2696\uFE0F","\u{1F469}\u{1F3FE}\u200D\u2696\uFE0F","\u{1F469}\u{1F3FF}\u200D\u2696\uFE0F","\u{1F9D1}\u200D\u{1F33E}","\u{1F9D1}\u{1F3FB}\u200D\u{1F33E}","\u{1F9D1}\u{1F3FC}\u200D\u{1F33E}","\u{1F9D1}\u{1F3FD}\u200D\u{1F33E}","\u{1F9D1}\u{1F3FE}\u200D\u{1F33E}","\u{1F9D1}\u{1F3FF}\u200D\u{1F33E}","\u{1F468}\u200D\u{1F33E}","\u{1F468}\u{1F3FB}\u200D\u{1F33E}","\u{1F468}\u{1F3FC}\u200D\u{1F33E}","\u{1F468}\u{1F3FD}\u200D\u{1F33E}","\u{1F468}\u{1F3FE}\u200D\u{1F33E}","\u{1F468}\u{1F3FF}\u200D\u{1F33E}","\u{1F469}\u200D\u{1F33E}","\u{1F469}\u{1F3FB}\u200D\u{1F33E}","\u{1F469}\u{1F3FC}\u200D\u{1F33E}","\u{1F469}\u{1F3FD}\u200D\u{1F33E}","\u{1F469}\u{1F3FE}\u200D\u{1F33E}","\u{1F469}\u{1F3FF}\u200D\u{1F33E}","\u{1F9D1}\u200D\u{1F373}","\u{1F9D1}\u{1F3FB}\u200D\u{1F373}","\u{1F9D1}\u{1F3FC}\u200D\u{1F373}","\u{1F9D1}\u{1F3FD}\u200D\u{1F373}","\u{1F9D1}\u{1F3FE}\u200D\u{1F373}","\u{1F9D1}\u{1F3FF}\u200D\u{1F373}","\u{1F468}\u200D\u{1F373}","\u{1F468}\u{1F3FB}\u200D\u{1F373}","\u{1F468}\u{1F3FC}\u200D\u{1F373}","\u{1F468}\u{1F3FD}\u200D\u{1F373}","\u{1F468}\u{1F3FE}\u200D\u{1F373}","\u{1F468}\u{1F3FF}\u200D\u{1F373}","\u{1F469}\u200D\u{1F373}","\u{1F469}\u{1F3FB}\u200D\u{1F373}","\u{1F469}\u{1F3FC}\u200D\u{1F373}","\u{1F469}\u{1F3FD}\u200D\u{1F373}","\u{1F469}\u{1F3FE}\u200D\u{1F373}","\u{1F469}\u{1F3FF}\u200D\u{1F373}","\u{1F9D1}\u200D\u{1F527}","\u{1F9D1}\u{1F3FB}\u200D\u{1F527}","\u{1F9D1}\u{1F3FC}\u200D\u{1F527}","\u{1F9D1}\u{1F3FD}\u200D\u{1F527}","\u{1F9D1}\u{1F3FE}\u200D\u{1F527}","\u{1F9D1}\u{1F3FF}\u200D\u{1F527}","\u{1F468}\u200D\u{1F527}","\u{1F468}\u{1F3FB}\u200D\u{1F527}","\u{1F468}\u{1F3FC}\u200D\u{1F527}","\u{1F468}\u{1F3FD}\u200D\u{1F527}","\u{1F468}\u{1F3FE}\u200D\u{1F527}","\u{1F468}\u{1F3FF}\u200D\u{1F527}","\u{1F469}\u200D\u{1F527}","\u{1F469}\u{1F3FB}\u200D\u{1F527}","\u{1F469}\u{1F3FC}\u200D\u{1F527}","\u{1F469}\u{1F3FD}\u200D\u{1F527}","\u{1F469}\u{1F3FE}\u200D\u{1F527}","\u{1F469}\u{1F3FF}\u200D\u{1F527}","\u{1F9D1}\u200D\u{1F3ED}","\u{1F9D1}\u{1F3FB}\u200D\u{1F3ED}","\u{1F9D1}\u{1F3FC}\u200D\u{1F3ED}","\u{1F9D1}\u{1F3FD}\u200D\u{1F3ED}","\u{1F9D1}\u{1F3FE}\u200D\u{1F3ED}","\u{1F9D1}\u{1F3FF}\u200D\u{1F3ED}","\u{1F468}\u200D\u{1F3ED}","\u{1F468}\u{1F3FB}\u200D\u{1F3ED}","\u{1F468}\u{1F3FC}\u200D\u{1F3ED}","\u{1F468}\u{1F3FD}\u200D\u{1F3ED}","\u{1F468}\u{1F3FE}\u200D\u{1F3ED}","\u{1F468}\u{1F3FF}\u200D\u{1F3ED}","\u{1F469}\u200D\u{1F3ED}","\u{1F469}\u{1F3FB}\u200D\u{1F3ED}","\u{1F469}\u{1F3FC}\u200D\u{1F3ED}","\u{1F469}\u{1F3FD}\u200D\u{1F3ED}","\u{1F469}\u{1F3FE}\u200D\u{1F3ED}","\u{1F469}\u{1F3FF}\u200D\u{1F3ED}","\u{1F9D1}\u200D\u{1F4BC}","\u{1F9D1}\u{1F3FB}\u200D\u{1F4BC}","\u{1F9D1}\u{1F3FC}\u200D\u{1F4BC}","\u{1F9D1}\u{1F3FD}\u200D\u{1F4BC}","\u{1F9D1}\u{1F3FE}\u200D\u{1F4BC}","\u{1F9D1}\u{1F3FF}\u200D\u{1F4BC}","\u{1F468}\u200D\u{1F4BC}","\u{1F468}\u{1F3FB}\u200D\u{1F4BC}","\u{1F468}\u{1F3FC}\u200D\u{1F4BC}","\u{1F468}\u{1F3FD}\u200D\u{1F4BC}","\u{1F468}\u{1F3FE}\u200D\u{1F4BC}","\u{1F468}\u{1F3FF}\u200D\u{1F4BC}","\u{1F469}\u200D\u{1F4BC}","\u{1F469}\u{1F3FB}\u200D\u{1F4BC}","\u{1F469}\u{1F3FC}\u200D\u{1F4BC}","\u{1F469}\u{1F3FD}\u200D\u{1F4BC}","\u{1F469}\u{1F3FE}\u200D\u{1F4BC}","\u{1F469}\u{1F3FF}\u200D\u{1F4BC}","\u{1F9D1}\u200D\u{1F52C}","\u{1F9D1}\u{1F3FB}\u200D\u{1F52C}","\u{1F9D1}\u{1F3FC}\u200D\u{1F52C}","\u{1F9D1}\u{1F3FD}\u200D\u{1F52C}","\u{1F9D1}\u{1F3FE}\u200D\u{1F52C}","\u{1F9D1}\u{1F3FF}\u200D\u{1F52C}","\u{1F468}\u200D\u{1F52C}","\u{1F468}\u{1F3FB}\u200D\u{1F52C}","\u{1F468}\u{1F3FC}\u200D\u{1F52C}","\u{1F468}\u{1F3FD}\u200D\u{1F52C}","\u{1F468}\u{1F3FE}\u200D\u{1F52C}","\u{1F468}\u{1F3FF}\u200D\u{1F52C}","\u{1F469}\u200D\u{1F52C}","\u{1F469}\u{1F3FB}\u200D\u{1F52C}","\u{1F469}\u{1F3FC}\u200D\u{1F52C}","\u{1F469}\u{1F3FD}\u200D\u{1F52C}","\u{1F469}\u{1F3FE}\u200D\u{1F52C}","\u{1F469}\u{1F3FF}\u200D\u{1F52C}","\u{1F9D1}\u200D\u{1F4BB}","\u{1F9D1}\u{1F3FB}\u200D\u{1F4BB}","\u{1F9D1}\u{1F3FC}\u200D\u{1F4BB}","\u{1F9D1}\u{1F3FD}\u200D\u{1F4BB}","\u{1F9D1}\u{1F3FE}\u200D\u{1F4BB}","\u{1F9D1}\u{1F3FF}\u200D\u{1F4BB}","\u{1F468}\u200D\u{1F4BB}","\u{1F468}\u{1F3FB}\u200D\u{1F4BB}","\u{1F468}\u{1F3FC}\u200D\u{1F4BB}","\u{1F468}\u{1F3FD}\u200D\u{1F4BB}","\u{1F468}\u{1F3FE}\u200D\u{1F4BB}","\u{1F468}\u{1F3FF}\u200D\u{1F4BB}","\u{1F469}\u200D\u{1F4BB}","\u{1F469}\u{1F3FB}\u200D\u{1F4BB}","\u{1F469}\u{1F3FC}\u200D\u{1F4BB}","\u{1F469}\u{1F3FD}\u200D\u{1F4BB}","\u{1F469}\u{1F3FE}\u200D\u{1F4BB}","\u{1F469}\u{1F3FF}\u200D\u{1F4BB}","\u{1F9D1}\u200D\u{1F3A4}","\u{1F9D1}\u{1F3FB}\u200D\u{1F3A4}","\u{1F9D1}\u{1F3FC}\u200D\u{1F3A4}","\u{1F9D1}\u{1F3FD}\u200D\u{1F3A4}","\u{1F9D1}\u{1F3FE}\u200D\u{1F3A4}","\u{1F9D1}\u{1F3FF}\u200D\u{1F3A4}","\u{1F468}\u200D\u{1F3A4}","\u{1F468}\u{1F3FB}\u200D\u{1F3A4}","\u{1F468}\u{1F3FC}\u200D\u{1F3A4}","\u{1F468}\u{1F3FD}\u200D\u{1F3A4}","\u{1F468}\u{1F3FE}\u200D\u{1F3A4}","\u{1F468}\u{1F3FF}\u200D\u{1F3A4}","\u{1F469}\u200D\u{1F3A4}","\u{1F469}\u{1F3FB}\u200D\u{1F3A4}","\u{1F469}\u{1F3FC}\u200D\u{1F3A4}","\u{1F469}\u{1F3FD}\u200D\u{1F3A4}","\u{1F469}\u{1F3FE}\u200D\u{1F3A4}","\u{1F469}\u{1F3FF}\u200D\u{1F3A4}","\u{1F9D1}\u200D\u{1F3A8}","\u{1F9D1}\u{1F3FB}\u200D\u{1F3A8}","\u{1F9D1}\u{1F3FC}\u200D\u{1F3A8}","\u{1F9D1}\u{1F3FD}\u200D\u{1F3A8}","\u{1F9D1}\u{1F3FE}\u200D\u{1F3A8}","\u{1F9D1}\u{1F3FF}\u200D\u{1F3A8}","\u{1F468}\u200D\u{1F3A8}","\u{1F468}\u{1F3FB}\u200D\u{1F3A8}","\u{1F468}\u{1F3FC}\u200D\u{1F3A8}","\u{1F468}\u{1F3FD}\u200D\u{1F3A8}","\u{1F468}\u{1F3FE}\u200D\u{1F3A8}","\u{1F468}\u{1F3FF}\u200D\u{1F3A8}","\u{1F469}\u200D\u{1F3A8}","\u{1F469}\u{1F3FB}\u200D\u{1F3A8}","\u{1F469}\u{1F3FC}\u200D\u{1F3A8}","\u{1F469}\u{1F3FD}\u200D\u{1F3A8}","\u{1F469}\u{1F3FE}\u200D\u{1F3A8}","\u{1F469}\u{1F3FF}\u200D\u{1F3A8}","\u{1F9D1}\u200D\u2708\uFE0F","\u{1F9D1}\u{1F3FB}\u200D\u2708\uFE0F","\u{1F9D1}\u{1F3FC}\u200D\u2708\uFE0F","\u{1F9D1}\u{1F3FD}\u200D\u2708\uFE0F","\u{1F9D1}\u{1F3FE}\u200D\u2708\uFE0F","\u{1F9D1}\u{1F3FF}\u200D\u2708\uFE0F","\u{1F468}\u200D\u2708\uFE0F","\u{1F468}\u{1F3FB}\u200D\u2708\uFE0F","\u{1F468}\u{1F3FC}\u200D\u2708\uFE0F","\u{1F468}\u{1F3FD}\u200D\u2708\uFE0F","\u{1F468}\u{1F3FE}\u200D\u2708\uFE0F","\u{1F468}\u{1F3FF}\u200D\u2708\uFE0F","\u{1F469}\u200D\u2708\uFE0F","\u{1F469}\u{1F3FB}\u200D\u2708\uFE0F","\u{1F469}\u{1F3FC}\u200D\u2708\uFE0F","\u{1F469}\u{1F3FD}\u200D\u2708\uFE0F","\u{1F469}\u{1F3FE}\u200D\u2708\uFE0F","\u{1F469}\u{1F3FF}\u200D\u2708\uFE0F","\u{1F9D1}\u200D\u{1F680}","\u{1F9D1}\u{1F3FB}\u200D\u{1F680}","\u{1F9D1}\u{1F3FC}\u200D\u{1F680}","\u{1F9D1}\u{1F3FD}\u200D\u{1F680}","\u{1F9D1}\u{1F3FE}\u200D\u{1F680}","\u{1F9D1}\u{1F3FF}\u200D\u{1F680}","\u{1F468}\u200D\u{1F680}","\u{1F468}\u{1F3FB}\u200D\u{1F680}","\u{1F468}\u{1F3FC}\u200D\u{1F680}","\u{1F468}\u{1F3FD}\u200D\u{1F680}","\u{1F468}\u{1F3FE}\u200D\u{1F680}","\u{1F468}\u{1F3FF}\u200D\u{1F680}","\u{1F469}\u200D\u{1F680}","\u{1F469}\u{1F3FB}\u200D\u{1F680}","\u{1F469}\u{1F3FC}\u200D\u{1F680}","\u{1F469}\u{1F3FD}\u200D\u{1F680}","\u{1F469}\u{1F3FE}\u200D\u{1F680}","\u{1F469}\u{1F3FF}\u200D\u{1F680}","\u{1F9D1}\u200D\u{1F692}","\u{1F9D1}\u{1F3FB}\u200D\u{1F692}","\u{1F9D1}\u{1F3FC}\u200D\u{1F692}","\u{1F9D1}\u{1F3FD}\u200D\u{1F692}","\u{1F9D1}\u{1F3FE}\u200D\u{1F692}","\u{1F9D1}\u{1F3FF}\u200D\u{1F692}","\u{1F468}\u200D\u{1F692}","\u{1F468}\u{1F3FB}\u200D\u{1F692}","\u{1F468}\u{1F3FC}\u200D\u{1F692}","\u{1F468}\u{1F3FD}\u200D\u{1F692}","\u{1F468}\u{1F3FE}\u200D\u{1F692}","\u{1F468}\u{1F3FF}\u200D\u{1F692}","\u{1F469}\u200D\u{1F692}","\u{1F469}\u{1F3FB}\u200D\u{1F692}","\u{1F469}\u{1F3FC}\u200D\u{1F692}","\u{1F469}\u{1F3FD}\u200D\u{1F692}","\u{1F469}\u{1F3FE}\u200D\u{1F692}","\u{1F469}\u{1F3FF}\u200D\u{1F692}","\u{1F46E}","\u{1F46E}\u{1F3FB}","\u{1F46E}\u{1F3FC}","\u{1F46E}\u{1F3FD}","\u{1F46E}\u{1F3FE}","\u{1F46E}\u{1F3FF}","\u{1F46E}\u200D\u2642\uFE0F","\u{1F46E}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F46E}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F46E}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F46E}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F46E}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F46E}\u200D\u2640\uFE0F","\u{1F46E}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F46E}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F46E}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F46E}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F46E}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F575}\uFE0F","\u{1F575}\u{1F3FB}","\u{1F575}\u{1F3FC}","\u{1F575}\u{1F3FD}","\u{1F575}\u{1F3FE}","\u{1F575}\u{1F3FF}","\u{1F575}\uFE0F\u200D\u2642\uFE0F","\u{1F575}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F575}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F575}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F575}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F575}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F575}\uFE0F\u200D\u2640\uFE0F","\u{1F575}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F575}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F575}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F575}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F575}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F482}","\u{1F482}\u{1F3FB}","\u{1F482}\u{1F3FC}","\u{1F482}\u{1F3FD}","\u{1F482}\u{1F3FE}","\u{1F482}\u{1F3FF}","\u{1F482}\u200D\u2642\uFE0F","\u{1F482}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F482}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F482}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F482}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F482}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F482}\u200D\u2640\uFE0F","\u{1F482}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F482}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F482}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F482}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F482}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F977}","\u{1F977}\u{1F3FB}","\u{1F977}\u{1F3FC}","\u{1F977}\u{1F3FD}","\u{1F977}\u{1F3FE}","\u{1F977}\u{1F3FF}","\u{1F477}","\u{1F477}\u{1F3FB}","\u{1F477}\u{1F3FC}","\u{1F477}\u{1F3FD}","\u{1F477}\u{1F3FE}","\u{1F477}\u{1F3FF}","\u{1F477}\u200D\u2642\uFE0F","\u{1F477}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F477}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F477}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F477}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F477}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F477}\u200D\u2640\uFE0F","\u{1F477}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F477}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F477}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F477}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F477}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F934}","\u{1F934}\u{1F3FB}","\u{1F934}\u{1F3FC}","\u{1F934}\u{1F3FD}","\u{1F934}\u{1F3FE}","\u{1F934}\u{1F3FF}","\u{1F478}","\u{1F478}\u{1F3FB}","\u{1F478}\u{1F3FC}","\u{1F478}\u{1F3FD}","\u{1F478}\u{1F3FE}","\u{1F478}\u{1F3FF}","\u{1F473}","\u{1F473}\u{1F3FB}","\u{1F473}\u{1F3FC}","\u{1F473}\u{1F3FD}","\u{1F473}\u{1F3FE}","\u{1F473}\u{1F3FF}","\u{1F473}\u200D\u2642\uFE0F","\u{1F473}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F473}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F473}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F473}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F473}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F473}\u200D\u2640\uFE0F","\u{1F473}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F473}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F473}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F473}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F473}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F472}","\u{1F472}\u{1F3FB}","\u{1F472}\u{1F3FC}","\u{1F472}\u{1F3FD}","\u{1F472}\u{1F3FE}","\u{1F472}\u{1F3FF}","\u{1F9D5}","\u{1F9D5}\u{1F3FB}","\u{1F9D5}\u{1F3FC}","\u{1F9D5}\u{1F3FD}","\u{1F9D5}\u{1F3FE}","\u{1F9D5}\u{1F3FF}","\u{1F935}","\u{1F935}\u{1F3FB}","\u{1F935}\u{1F3FC}","\u{1F935}\u{1F3FD}","\u{1F935}\u{1F3FE}","\u{1F935}\u{1F3FF}","\u{1F935}\u200D\u2642\uFE0F","\u{1F935}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F935}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F935}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F935}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F935}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F935}\u200D\u2640\uFE0F","\u{1F935}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F935}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F935}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F935}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F935}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F470}","\u{1F470}\u{1F3FB}","\u{1F470}\u{1F3FC}","\u{1F470}\u{1F3FD}","\u{1F470}\u{1F3FE}","\u{1F470}\u{1F3FF}","\u{1F470}\u200D\u2642\uFE0F","\u{1F470}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F470}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F470}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F470}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F470}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F470}\u200D\u2640\uFE0F","\u{1F470}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F470}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F470}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F470}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F470}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F930}","\u{1F930}\u{1F3FB}","\u{1F930}\u{1F3FC}","\u{1F930}\u{1F3FD}","\u{1F930}\u{1F3FE}","\u{1F930}\u{1F3FF}","\u{1F931}","\u{1F931}\u{1F3FB}","\u{1F931}\u{1F3FC}","\u{1F931}\u{1F3FD}","\u{1F931}\u{1F3FE}","\u{1F931}\u{1F3FF}","\u{1F469}\u200D\u{1F37C}","\u{1F469}\u{1F3FB}\u200D\u{1F37C}","\u{1F469}\u{1F3FC}\u200D\u{1F37C}","\u{1F469}\u{1F3FD}\u200D\u{1F37C}","\u{1F469}\u{1F3FE}\u200D\u{1F37C}","\u{1F469}\u{1F3FF}\u200D\u{1F37C}","\u{1F468}\u200D\u{1F37C}","\u{1F468}\u{1F3FB}\u200D\u{1F37C}","\u{1F468}\u{1F3FC}\u200D\u{1F37C}","\u{1F468}\u{1F3FD}\u200D\u{1F37C}","\u{1F468}\u{1F3FE}\u200D\u{1F37C}","\u{1F468}\u{1F3FF}\u200D\u{1F37C}","\u{1F9D1}\u200D\u{1F37C}","\u{1F9D1}\u{1F3FB}\u200D\u{1F37C}","\u{1F9D1}\u{1F3FC}\u200D\u{1F37C}","\u{1F9D1}\u{1F3FD}\u200D\u{1F37C}","\u{1F9D1}\u{1F3FE}\u200D\u{1F37C}","\u{1F9D1}\u{1F3FF}\u200D\u{1F37C}","\u{1F47C}","\u{1F47C}\u{1F3FB}","\u{1F47C}\u{1F3FC}","\u{1F47C}\u{1F3FD}","\u{1F47C}\u{1F3FE}","\u{1F47C}\u{1F3FF}","\u{1F385}","\u{1F385}\u{1F3FB}","\u{1F385}\u{1F3FC}","\u{1F385}\u{1F3FD}","\u{1F385}\u{1F3FE}","\u{1F385}\u{1F3FF}","\u{1F936}","\u{1F936}\u{1F3FB}","\u{1F936}\u{1F3FC}","\u{1F936}\u{1F3FD}","\u{1F936}\u{1F3FE}","\u{1F936}\u{1F3FF}","\u{1F9D1}\u200D\u{1F384}","\u{1F9D1}\u{1F3FB}\u200D\u{1F384}","\u{1F9D1}\u{1F3FC}\u200D\u{1F384}","\u{1F9D1}\u{1F3FD}\u200D\u{1F384}","\u{1F9D1}\u{1F3FE}\u200D\u{1F384}","\u{1F9D1}\u{1F3FF}\u200D\u{1F384}","\u{1F9B8}","\u{1F9B8}\u{1F3FB}","\u{1F9B8}\u{1F3FC}","\u{1F9B8}\u{1F3FD}","\u{1F9B8}\u{1F3FE}","\u{1F9B8}\u{1F3FF}","\u{1F9B8}\u200D\u2642\uFE0F","\u{1F9B8}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9B8}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9B8}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9B8}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9B8}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9B8}\u200D\u2640\uFE0F","\u{1F9B8}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9B8}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9B8}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9B8}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9B8}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9B9}","\u{1F9B9}\u{1F3FB}","\u{1F9B9}\u{1F3FC}","\u{1F9B9}\u{1F3FD}","\u{1F9B9}\u{1F3FE}","\u{1F9B9}\u{1F3FF}","\u{1F9B9}\u200D\u2642\uFE0F","\u{1F9B9}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9B9}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9B9}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9B9}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9B9}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9B9}\u200D\u2640\uFE0F","\u{1F9B9}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9B9}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9B9}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9B9}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9B9}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9D9}","\u{1F9D9}\u{1F3FB}","\u{1F9D9}\u{1F3FC}","\u{1F9D9}\u{1F3FD}","\u{1F9D9}\u{1F3FE}","\u{1F9D9}\u{1F3FF}","\u{1F9D9}\u200D\u2642\uFE0F","\u{1F9D9}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9D9}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9D9}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9D9}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9D9}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D9}\u200D\u2640\uFE0F","\u{1F9D9}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9D9}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9D9}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9D9}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9D9}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9DA}","\u{1F9DA}\u{1F3FB}","\u{1F9DA}\u{1F3FC}","\u{1F9DA}\u{1F3FD}","\u{1F9DA}\u{1F3FE}","\u{1F9DA}\u{1F3FF}","\u{1F9DA}\u200D\u2642\uFE0F","\u{1F9DA}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9DA}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9DA}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9DA}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9DA}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9DA}\u200D\u2640\uFE0F","\u{1F9DA}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9DA}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9DA}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9DA}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9DA}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9DB}","\u{1F9DB}\u{1F3FB}","\u{1F9DB}\u{1F3FC}","\u{1F9DB}\u{1F3FD}","\u{1F9DB}\u{1F3FE}","\u{1F9DB}\u{1F3FF}","\u{1F9DB}\u200D\u2642\uFE0F","\u{1F9DB}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9DB}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9DB}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9DB}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9DB}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9DB}\u200D\u2640\uFE0F","\u{1F9DB}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9DB}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9DB}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9DB}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9DB}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9DC}","\u{1F9DC}\u{1F3FB}","\u{1F9DC}\u{1F3FC}","\u{1F9DC}\u{1F3FD}","\u{1F9DC}\u{1F3FE}","\u{1F9DC}\u{1F3FF}","\u{1F9DC}\u200D\u2642\uFE0F","\u{1F9DC}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9DC}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9DC}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9DC}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9DC}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9DC}\u200D\u2640\uFE0F","\u{1F9DC}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9DC}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9DC}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9DC}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9DC}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9DD}","\u{1F9DD}\u{1F3FB}","\u{1F9DD}\u{1F3FC}","\u{1F9DD}\u{1F3FD}","\u{1F9DD}\u{1F3FE}","\u{1F9DD}\u{1F3FF}","\u{1F9DD}\u200D\u2642\uFE0F","\u{1F9DD}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9DD}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9DD}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9DD}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9DD}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9DD}\u200D\u2640\uFE0F","\u{1F9DD}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9DD}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9DD}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9DD}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9DD}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9DE}","\u{1F9DE}\u200D\u2642\uFE0F","\u{1F9DE}\u200D\u2640\uFE0F","\u{1F9DF}","\u{1F9DF}\u200D\u2642\uFE0F","\u{1F9DF}\u200D\u2640\uFE0F","\u{1F486}","\u{1F486}\u{1F3FB}","\u{1F486}\u{1F3FC}","\u{1F486}\u{1F3FD}","\u{1F486}\u{1F3FE}","\u{1F486}\u{1F3FF}","\u{1F486}\u200D\u2642\uFE0F","\u{1F486}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F486}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F486}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F486}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F486}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F486}\u200D\u2640\uFE0F","\u{1F486}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F486}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F486}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F486}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F486}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F487}","\u{1F487}\u{1F3FB}","\u{1F487}\u{1F3FC}","\u{1F487}\u{1F3FD}","\u{1F487}\u{1F3FE}","\u{1F487}\u{1F3FF}","\u{1F487}\u200D\u2642\uFE0F","\u{1F487}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F487}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F487}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F487}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F487}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F487}\u200D\u2640\uFE0F","\u{1F487}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F487}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F487}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F487}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F487}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F6B6}","\u{1F6B6}\u{1F3FB}","\u{1F6B6}\u{1F3FC}","\u{1F6B6}\u{1F3FD}","\u{1F6B6}\u{1F3FE}","\u{1F6B6}\u{1F3FF}","\u{1F6B6}\u200D\u2642\uFE0F","\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F6B6}\u200D\u2640\uFE0F","\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9CD}","\u{1F9CD}\u{1F3FB}","\u{1F9CD}\u{1F3FC}","\u{1F9CD}\u{1F3FD}","\u{1F9CD}\u{1F3FE}","\u{1F9CD}\u{1F3FF}","\u{1F9CD}\u200D\u2642\uFE0F","\u{1F9CD}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9CD}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9CD}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9CD}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9CD}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9CD}\u200D\u2640\uFE0F","\u{1F9CD}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9CD}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9CD}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9CD}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9CD}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9CE}","\u{1F9CE}\u{1F3FB}","\u{1F9CE}\u{1F3FC}","\u{1F9CE}\u{1F3FD}","\u{1F9CE}\u{1F3FE}","\u{1F9CE}\u{1F3FF}","\u{1F9CE}\u200D\u2642\uFE0F","\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9CE}\u200D\u2640\uFE0F","\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9D1}\u200D\u{1F9AF}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}","\u{1F468}\u200D\u{1F9AF}","\u{1F468}\u{1F3FB}\u200D\u{1F9AF}","\u{1F468}\u{1F3FC}\u200D\u{1F9AF}","\u{1F468}\u{1F3FD}\u200D\u{1F9AF}","\u{1F468}\u{1F3FE}\u200D\u{1F9AF}","\u{1F468}\u{1F3FF}\u200D\u{1F9AF}","\u{1F469}\u200D\u{1F9AF}","\u{1F469}\u{1F3FB}\u200D\u{1F9AF}","\u{1F469}\u{1F3FC}\u200D\u{1F9AF}","\u{1F469}\u{1F3FD}\u200D\u{1F9AF}","\u{1F469}\u{1F3FE}\u200D\u{1F9AF}","\u{1F469}\u{1F3FF}\u200D\u{1F9AF}","\u{1F9D1}\u200D\u{1F9BC}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}","\u{1F468}\u200D\u{1F9BC}","\u{1F468}\u{1F3FB}\u200D\u{1F9BC}","\u{1F468}\u{1F3FC}\u200D\u{1F9BC}","\u{1F468}\u{1F3FD}\u200D\u{1F9BC}","\u{1F468}\u{1F3FE}\u200D\u{1F9BC}","\u{1F468}\u{1F3FF}\u200D\u{1F9BC}","\u{1F469}\u200D\u{1F9BC}","\u{1F469}\u{1F3FB}\u200D\u{1F9BC}","\u{1F469}\u{1F3FC}\u200D\u{1F9BC}","\u{1F469}\u{1F3FD}\u200D\u{1F9BC}","\u{1F469}\u{1F3FE}\u200D\u{1F9BC}","\u{1F469}\u{1F3FF}\u200D\u{1F9BC}","\u{1F9D1}\u200D\u{1F9BD}","\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}","\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}","\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}","\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}","\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}","\u{1F468}\u200D\u{1F9BD}","\u{1F468}\u{1F3FB}\u200D\u{1F9BD}","\u{1F468}\u{1F3FC}\u200D\u{1F9BD}","\u{1F468}\u{1F3FD}\u200D\u{1F9BD}","\u{1F468}\u{1F3FE}\u200D\u{1F9BD}","\u{1F468}\u{1F3FF}\u200D\u{1F9BD}","\u{1F469}\u200D\u{1F9BD}","\u{1F469}\u{1F3FB}\u200D\u{1F9BD}","\u{1F469}\u{1F3FC}\u200D\u{1F9BD}","\u{1F469}\u{1F3FD}\u200D\u{1F9BD}","\u{1F469}\u{1F3FE}\u200D\u{1F9BD}","\u{1F469}\u{1F3FF}\u200D\u{1F9BD}","\u{1F3C3}","\u{1F3C3}\u{1F3FB}","\u{1F3C3}\u{1F3FC}","\u{1F3C3}\u{1F3FD}","\u{1F3C3}\u{1F3FE}","\u{1F3C3}\u{1F3FF}","\u{1F3C3}\u200D\u2642\uFE0F","\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F3C3}\u200D\u2640\uFE0F","\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F483}","\u{1F483}\u{1F3FB}","\u{1F483}\u{1F3FC}","\u{1F483}\u{1F3FD}","\u{1F483}\u{1F3FE}","\u{1F483}\u{1F3FF}","\u{1F57A}","\u{1F57A}\u{1F3FB}","\u{1F57A}\u{1F3FC}","\u{1F57A}\u{1F3FD}","\u{1F57A}\u{1F3FE}","\u{1F57A}\u{1F3FF}","\u{1F574}\uFE0F","\u{1F574}\u{1F3FB}","\u{1F574}\u{1F3FC}","\u{1F574}\u{1F3FD}","\u{1F574}\u{1F3FE}","\u{1F574}\u{1F3FF}","\u{1F46F}","\u{1F46F}\u200D\u2642\uFE0F","\u{1F46F}\u200D\u2640\uFE0F","\u{1F9D6}","\u{1F9D6}\u{1F3FB}","\u{1F9D6}\u{1F3FC}","\u{1F9D6}\u{1F3FD}","\u{1F9D6}\u{1F3FE}","\u{1F9D6}\u{1F3FF}","\u{1F9D6}\u200D\u2642\uFE0F","\u{1F9D6}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9D6}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9D6}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9D6}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9D6}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D6}\u200D\u2640\uFE0F","\u{1F9D6}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9D6}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9D6}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9D6}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9D6}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9D7}","\u{1F9D7}\u{1F3FB}","\u{1F9D7}\u{1F3FC}","\u{1F9D7}\u{1F3FD}","\u{1F9D7}\u{1F3FE}","\u{1F9D7}\u{1F3FF}","\u{1F9D7}\u200D\u2642\uFE0F","\u{1F9D7}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9D7}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9D7}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9D7}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9D7}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D7}\u200D\u2640\uFE0F","\u{1F9D7}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9D7}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9D7}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9D7}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9D7}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F93A}","\u{1F3C7}","\u{1F3C7}\u{1F3FB}","\u{1F3C7}\u{1F3FC}","\u{1F3C7}\u{1F3FD}","\u{1F3C7}\u{1F3FE}","\u{1F3C7}\u{1F3FF}","\u26F7\uFE0F","\u{1F3C2}","\u{1F3C2}\u{1F3FB}","\u{1F3C2}\u{1F3FC}","\u{1F3C2}\u{1F3FD}","\u{1F3C2}\u{1F3FE}","\u{1F3C2}\u{1F3FF}","\u{1F3CC}\uFE0F","\u{1F3CC}\u{1F3FB}","\u{1F3CC}\u{1F3FC}","\u{1F3CC}\u{1F3FD}","\u{1F3CC}\u{1F3FE}","\u{1F3CC}\u{1F3FF}","\u{1F3CC}\uFE0F\u200D\u2642\uFE0F","\u{1F3CC}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F3CC}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F3CC}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F3CC}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F3CC}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F3CC}\uFE0F\u200D\u2640\uFE0F","\u{1F3CC}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F3CC}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F3CC}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F3CC}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F3CC}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F3C4}","\u{1F3C4}\u{1F3FB}","\u{1F3C4}\u{1F3FC}","\u{1F3C4}\u{1F3FD}","\u{1F3C4}\u{1F3FE}","\u{1F3C4}\u{1F3FF}","\u{1F3C4}\u200D\u2642\uFE0F","\u{1F3C4}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F3C4}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F3C4}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F3C4}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F3C4}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F3C4}\u200D\u2640\uFE0F","\u{1F3C4}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F3C4}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F3C4}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F3C4}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F3C4}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F6A3}","\u{1F6A3}\u{1F3FB}","\u{1F6A3}\u{1F3FC}","\u{1F6A3}\u{1F3FD}","\u{1F6A3}\u{1F3FE}","\u{1F6A3}\u{1F3FF}","\u{1F6A3}\u200D\u2642\uFE0F","\u{1F6A3}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F6A3}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F6A3}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F6A3}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F6A3}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F6A3}\u200D\u2640\uFE0F","\u{1F6A3}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F6A3}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F6A3}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F6A3}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F6A3}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F3CA}","\u{1F3CA}\u{1F3FB}","\u{1F3CA}\u{1F3FC}","\u{1F3CA}\u{1F3FD}","\u{1F3CA}\u{1F3FE}","\u{1F3CA}\u{1F3FF}","\u{1F3CA}\u200D\u2642\uFE0F","\u{1F3CA}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F3CA}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F3CA}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F3CA}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F3CA}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F3CA}\u200D\u2640\uFE0F","\u{1F3CA}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F3CA}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F3CA}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F3CA}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F3CA}\u{1F3FF}\u200D\u2640\uFE0F","\u26F9\uFE0F","\u26F9\u{1F3FB}","\u26F9\u{1F3FC}","\u26F9\u{1F3FD}","\u26F9\u{1F3FE}","\u26F9\u{1F3FF}","\u26F9\uFE0F\u200D\u2642\uFE0F","\u26F9\u{1F3FB}\u200D\u2642\uFE0F","\u26F9\u{1F3FC}\u200D\u2642\uFE0F","\u26F9\u{1F3FD}\u200D\u2642\uFE0F","\u26F9\u{1F3FE}\u200D\u2642\uFE0F","\u26F9\u{1F3FF}\u200D\u2642\uFE0F","\u26F9\uFE0F\u200D\u2640\uFE0F","\u26F9\u{1F3FB}\u200D\u2640\uFE0F","\u26F9\u{1F3FC}\u200D\u2640\uFE0F","\u26F9\u{1F3FD}\u200D\u2640\uFE0F","\u26F9\u{1F3FE}\u200D\u2640\uFE0F","\u26F9\u{1F3FF}\u200D\u2640\uFE0F","\u{1F3CB}\uFE0F","\u{1F3CB}\u{1F3FB}","\u{1F3CB}\u{1F3FC}","\u{1F3CB}\u{1F3FD}","\u{1F3CB}\u{1F3FE}","\u{1F3CB}\u{1F3FF}","\u{1F3CB}\uFE0F\u200D\u2642\uFE0F","\u{1F3CB}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F3CB}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F3CB}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F3CB}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F3CB}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F3CB}\uFE0F\u200D\u2640\uFE0F","\u{1F3CB}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F3CB}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F3CB}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F3CB}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F3CB}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F6B4}","\u{1F6B4}\u{1F3FB}","\u{1F6B4}\u{1F3FC}","\u{1F6B4}\u{1F3FD}","\u{1F6B4}\u{1F3FE}","\u{1F6B4}\u{1F3FF}","\u{1F6B4}\u200D\u2642\uFE0F","\u{1F6B4}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F6B4}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F6B4}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F6B4}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F6B4}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F6B4}\u200D\u2640\uFE0F","\u{1F6B4}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F6B4}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F6B4}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F6B4}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F6B4}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F6B5}","\u{1F6B5}\u{1F3FB}","\u{1F6B5}\u{1F3FC}","\u{1F6B5}\u{1F3FD}","\u{1F6B5}\u{1F3FE}","\u{1F6B5}\u{1F3FF}","\u{1F6B5}\u200D\u2642\uFE0F","\u{1F6B5}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F6B5}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F6B5}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F6B5}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F6B5}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F6B5}\u200D\u2640\uFE0F","\u{1F6B5}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F6B5}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F6B5}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F6B5}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F6B5}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F938}","\u{1F938}\u{1F3FB}","\u{1F938}\u{1F3FC}","\u{1F938}\u{1F3FD}","\u{1F938}\u{1F3FE}","\u{1F938}\u{1F3FF}","\u{1F938}\u200D\u2642\uFE0F","\u{1F938}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F938}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F938}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F938}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F938}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F938}\u200D\u2640\uFE0F","\u{1F938}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F938}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F938}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F938}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F938}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F93C}","\u{1F93C}\u200D\u2642\uFE0F","\u{1F93C}\u200D\u2640\uFE0F","\u{1F93D}","\u{1F93D}\u{1F3FB}","\u{1F93D}\u{1F3FC}","\u{1F93D}\u{1F3FD}","\u{1F93D}\u{1F3FE}","\u{1F93D}\u{1F3FF}","\u{1F93D}\u200D\u2642\uFE0F","\u{1F93D}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F93D}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F93D}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F93D}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F93D}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F93D}\u200D\u2640\uFE0F","\u{1F93D}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F93D}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F93D}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F93D}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F93D}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F93E}","\u{1F93E}\u{1F3FB}","\u{1F93E}\u{1F3FC}","\u{1F93E}\u{1F3FD}","\u{1F93E}\u{1F3FE}","\u{1F93E}\u{1F3FF}","\u{1F93E}\u200D\u2642\uFE0F","\u{1F93E}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F93E}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F93E}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F93E}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F93E}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F93E}\u200D\u2640\uFE0F","\u{1F93E}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F93E}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F93E}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F93E}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F93E}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F939}","\u{1F939}\u{1F3FB}","\u{1F939}\u{1F3FC}","\u{1F939}\u{1F3FD}","\u{1F939}\u{1F3FE}","\u{1F939}\u{1F3FF}","\u{1F939}\u200D\u2642\uFE0F","\u{1F939}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F939}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F939}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F939}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F939}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F939}\u200D\u2640\uFE0F","\u{1F939}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F939}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F939}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F939}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F939}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F9D8}","\u{1F9D8}\u{1F3FB}","\u{1F9D8}\u{1F3FC}","\u{1F9D8}\u{1F3FD}","\u{1F9D8}\u{1F3FE}","\u{1F9D8}\u{1F3FF}","\u{1F9D8}\u200D\u2642\uFE0F","\u{1F9D8}\u{1F3FB}\u200D\u2642\uFE0F","\u{1F9D8}\u{1F3FC}\u200D\u2642\uFE0F","\u{1F9D8}\u{1F3FD}\u200D\u2642\uFE0F","\u{1F9D8}\u{1F3FE}\u200D\u2642\uFE0F","\u{1F9D8}\u{1F3FF}\u200D\u2642\uFE0F","\u{1F9D8}\u200D\u2640\uFE0F","\u{1F9D8}\u{1F3FB}\u200D\u2640\uFE0F","\u{1F9D8}\u{1F3FC}\u200D\u2640\uFE0F","\u{1F9D8}\u{1F3FD}\u200D\u2640\uFE0F","\u{1F9D8}\u{1F3FE}\u200D\u2640\uFE0F","\u{1F9D8}\u{1F3FF}\u200D\u2640\uFE0F","\u{1F6C0}","\u{1F6C0}\u{1F3FB}","\u{1F6C0}\u{1F3FC}","\u{1F6C0}\u{1F3FD}","\u{1F6C0}\u{1F3FE}","\u{1F6C0}\u{1F3FF}","\u{1F6CC}","\u{1F6CC}\u{1F3FB}","\u{1F6CC}\u{1F3FC}","\u{1F6CC}\u{1F3FD}","\u{1F6CC}\u{1F3FE}","\u{1F6CC}\u{1F3FF}","\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}","\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}","\u{1F46D}","\u{1F46D}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}","\u{1F46D}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}","\u{1F46D}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}","\u{1F46D}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}","\u{1F46D}\u{1F3FF}","\u{1F46B}","\u{1F46B}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F46B}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F46B}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F46B}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F46B}\u{1F3FF}","\u{1F46C}","\u{1F46C}\u{1F3FB}","\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F46C}\u{1F3FC}","\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F46C}\u{1F3FD}","\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F46C}\u{1F3FE}","\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}","\u{1F46C}\u{1F3FF}","\u{1F48F}","\u{1F48F}\u{1F3FB}","\u{1F48F}\u{1F3FC}","\u{1F48F}\u{1F3FD}","\u{1F48F}\u{1F3FE}","\u{1F48F}\u{1F3FF}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}","\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}","\u{1F491}","\u{1F491}\u{1F3FB}","\u{1F491}\u{1F3FC}","\u{1F491}\u{1F3FD}","\u{1F491}\u{1F3FE}","\u{1F491}\u{1F3FF}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}","\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}","\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}","\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}","\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}","\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}","\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}","\u{1F46A}","\u{1F468}\u200D\u{1F469}\u200D\u{1F466}","\u{1F468}\u200D\u{1F469}\u200D\u{1F467}","\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","\u{1F468}\u200D\u{1F468}\u200D\u{1F466}","\u{1F468}\u200D\u{1F468}\u200D\u{1F467}","\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","\u{1F469}\u200D\u{1F469}\u200D\u{1F466}","\u{1F469}\u200D\u{1F469}\u200D\u{1F467}","\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","\u{1F468}\u200D\u{1F466}","\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","\u{1F468}\u200D\u{1F467}","\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","\u{1F469}\u200D\u{1F466}","\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","\u{1F469}\u200D\u{1F467}","\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","\u{1F5E3}\uFE0F","\u{1F464}","\u{1F465}","\u{1FAC2}","\u{1F463}"],nature:["\u{1F435}","\u{1F412}","\u{1F98D}","\u{1F9A7}","\u{1F436}","\u{1F415}","\u{1F9AE}","\u{1F415}\u200D\u{1F9BA}","\u{1F429}","\u{1F43A}","\u{1F98A}","\u{1F99D}","\u{1F431}","\u{1F408}","\u{1F408}\u200D\u2B1B","\u{1F981}","\u{1F42F}","\u{1F405}","\u{1F406}","\u{1F434}","\u{1F40E}","\u{1F984}","\u{1F993}","\u{1F98C}","\u{1F9AC}","\u{1F42E}","\u{1F402}","\u{1F403}","\u{1F404}","\u{1F437}","\u{1F416}","\u{1F417}","\u{1F43D}","\u{1F40F}","\u{1F411}","\u{1F410}","\u{1F42A}","\u{1F42B}","\u{1F999}","\u{1F992}","\u{1F418}","\u{1F9A3}","\u{1F98F}","\u{1F99B}","\u{1F42D}","\u{1F401}","\u{1F400}","\u{1F439}","\u{1F430}","\u{1F407}","\u{1F43F}\uFE0F","\u{1F9AB}","\u{1F994}","\u{1F987}","\u{1F43B}","\u{1F43B}\u200D\u2744\uFE0F","\u{1F428}","\u{1F43C}","\u{1F9A5}","\u{1F9A6}","\u{1F9A8}","\u{1F998}","\u{1F9A1}","\u{1F43E}","\u{1F983}","\u{1F414}","\u{1F413}","\u{1F423}","\u{1F424}","\u{1F425}","\u{1F426}","\u{1F427}","\u{1F54A}\uFE0F","\u{1F985}","\u{1F986}","\u{1F9A2}","\u{1F989}","\u{1F9A4}","\u{1FAB6}","\u{1F9A9}","\u{1F99A}","\u{1F99C}","\u{1F438}","\u{1F40A}","\u{1F422}","\u{1F98E}","\u{1F40D}","\u{1F432}","\u{1F409}","\u{1F995}","\u{1F996}","\u{1F433}","\u{1F40B}","\u{1F42C}","\u{1F9AD}","\u{1F41F}","\u{1F420}","\u{1F421}","\u{1F988}","\u{1F419}","\u{1F41A}","\u{1F40C}","\u{1F98B}","\u{1F41B}","\u{1F41C}","\u{1F41D}","\u{1FAB2}","\u{1F41E}","\u{1F997}","\u{1FAB3}","\u{1F577}\uFE0F","\u{1F578}\uFE0F","\u{1F982}","\u{1F99F}","\u{1FAB0}","\u{1FAB1}","\u{1F9A0}","\u{1F490}","\u{1F338}","\u{1F4AE}","\u{1F3F5}\uFE0F","\u{1F339}","\u{1F940}","\u{1F33A}","\u{1F33B}","\u{1F33C}","\u{1F337}","\u{1F331}","\u{1FAB4}","\u{1F332}","\u{1F333}","\u{1F334}","\u{1F335}","\u{1F33E}","\u{1F33F}","\u2618\uFE0F","\u{1F340}","\u{1F341}","\u{1F342}","\u{1F343}"],food:["\u{1F347}","\u{1F348}","\u{1F349}","\u{1F34A}","\u{1F34B}","\u{1F34C}","\u{1F34D}","\u{1F96D}","\u{1F34E}","\u{1F34F}","\u{1F350}","\u{1F351}","\u{1F352}","\u{1F353}","\u{1FAD0}","\u{1F95D}","\u{1F345}","\u{1FAD2}","\u{1F965}","\u{1F951}","\u{1F346}","\u{1F954}","\u{1F955}","\u{1F33D}","\u{1F336}\uFE0F","\u{1FAD1}","\u{1F952}","\u{1F96C}","\u{1F966}","\u{1F9C4}","\u{1F9C5}","\u{1F344}","\u{1F95C}","\u{1F330}","\u{1F35E}","\u{1F950}","\u{1F956}","\u{1FAD3}","\u{1F968}","\u{1F96F}","\u{1F95E}","\u{1F9C7}","\u{1F9C0}","\u{1F356}","\u{1F357}","\u{1F969}","\u{1F953}","\u{1F354}","\u{1F35F}","\u{1F355}","\u{1F32D}","\u{1F96A}","\u{1F32E}","\u{1F32F}","\u{1FAD4}","\u{1F959}","\u{1F9C6}","\u{1F95A}","\u{1F373}","\u{1F958}","\u{1F372}","\u{1FAD5}","\u{1F963}","\u{1F957}","\u{1F37F}","\u{1F9C8}","\u{1F9C2}","\u{1F96B}","\u{1F371}","\u{1F358}","\u{1F359}","\u{1F35A}","\u{1F35B}","\u{1F35C}","\u{1F35D}","\u{1F360}","\u{1F362}","\u{1F363}","\u{1F364}","\u{1F365}","\u{1F96E}","\u{1F361}","\u{1F95F}","\u{1F960}","\u{1F961}","\u{1F980}","\u{1F99E}","\u{1F990}","\u{1F991}","\u{1F9AA}","\u{1F366}","\u{1F367}","\u{1F368}","\u{1F369}","\u{1F36A}","\u{1F382}","\u{1F370}","\u{1F9C1}","\u{1F967}","\u{1F36B}","\u{1F36C}","\u{1F36D}","\u{1F36E}","\u{1F36F}","\u{1F37C}","\u{1F95B}","\u2615","\u{1FAD6}","\u{1F375}","\u{1F376}","\u{1F37E}","\u{1F377}","\u{1F378}","\u{1F379}","\u{1F37A}","\u{1F37B}","\u{1F942}","\u{1F943}","\u{1F964}","\u{1F9CB}","\u{1F9C3}","\u{1F9C9}","\u{1F9CA}","\u{1F962}","\u{1F37D}\uFE0F","\u{1F374}","\u{1F944}","\u{1F52A}","\u{1F3FA}"],travel:["\u{1F30D}","\u{1F30E}","\u{1F30F}","\u{1F310}","\u{1F5FA}\uFE0F","\u{1F5FE}","\u{1F9ED}","\u{1F3D4}\uFE0F","\u26F0\uFE0F","\u{1F30B}","\u{1F5FB}","\u{1F3D5}\uFE0F","\u{1F3D6}\uFE0F","\u{1F3DC}\uFE0F","\u{1F3DD}\uFE0F","\u{1F3DE}\uFE0F","\u{1F3DF}\uFE0F","\u{1F3DB}\uFE0F","\u{1F3D7}\uFE0F","\u{1F9F1}","\u{1FAA8}","\u{1FAB5}","\u{1F6D6}","\u{1F3D8}\uFE0F","\u{1F3DA}\uFE0F","\u{1F3E0}","\u{1F3E1}","\u{1F3E2}","\u{1F3E3}","\u{1F3E4}","\u{1F3E5}","\u{1F3E6}","\u{1F3E8}","\u{1F3E9}","\u{1F3EA}","\u{1F3EB}","\u{1F3EC}","\u{1F3ED}","\u{1F3EF}","\u{1F3F0}","\u{1F492}","\u{1F5FC}","\u{1F5FD}","\u26EA","\u{1F54C}","\u{1F6D5}","\u{1F54D}","\u26E9\uFE0F","\u{1F54B}","\u26F2","\u26FA","\u{1F301}","\u{1F303}","\u{1F3D9}\uFE0F","\u{1F304}","\u{1F305}","\u{1F306}","\u{1F307}","\u{1F309}","\u2668\uFE0F","\u{1F3A0}","\u{1F3A1}","\u{1F3A2}","\u{1F488}","\u{1F3AA}","\u{1F682}","\u{1F683}","\u{1F684}","\u{1F685}","\u{1F686}","\u{1F687}","\u{1F688}","\u{1F689}","\u{1F68A}","\u{1F69D}","\u{1F69E}","\u{1F68B}","\u{1F68C}","\u{1F68D}","\u{1F68E}","\u{1F690}","\u{1F691}","\u{1F692}","\u{1F693}","\u{1F694}","\u{1F695}","\u{1F696}","\u{1F697}","\u{1F698}","\u{1F699}","\u{1F6FB}","\u{1F69A}","\u{1F69B}","\u{1F69C}","\u{1F3CE}\uFE0F","\u{1F3CD}\uFE0F","\u{1F6F5}","\u{1F9BD}","\u{1F9BC}","\u{1F6FA}","\u{1F6B2}","\u{1F6F4}","\u{1F6F9}","\u{1F6FC}","\u{1F68F}","\u{1F6E3}\uFE0F","\u{1F6E4}\uFE0F","\u{1F6E2}\uFE0F","\u26FD","\u{1F6A8}","\u{1F6A5}","\u{1F6A6}","\u{1F6D1}","\u{1F6A7}","\u2693","\u26F5","\u{1F6F6}","\u{1F6A4}","\u{1F6F3}\uFE0F","\u26F4\uFE0F","\u{1F6E5}\uFE0F","\u{1F6A2}","\u2708\uFE0F","\u{1F6E9}\uFE0F","\u{1F6EB}","\u{1F6EC}","\u{1FA82}","\u{1F4BA}","\u{1F681}","\u{1F69F}","\u{1F6A0}","\u{1F6A1}","\u{1F6F0}\uFE0F","\u{1F680}","\u{1F6F8}","\u{1F6CE}\uFE0F","\u{1F9F3}","\u231B","\u23F3","\u231A","\u23F0","\u23F1\uFE0F","\u23F2\uFE0F","\u{1F570}\uFE0F","\u{1F55B}","\u{1F567}","\u{1F550}","\u{1F55C}","\u{1F551}","\u{1F55D}","\u{1F552}","\u{1F55E}","\u{1F553}","\u{1F55F}","\u{1F554}","\u{1F560}","\u{1F555}","\u{1F561}","\u{1F556}","\u{1F562}","\u{1F557}","\u{1F563}","\u{1F558}","\u{1F564}","\u{1F559}","\u{1F565}","\u{1F55A}","\u{1F566}","\u{1F311}","\u{1F312}","\u{1F313}","\u{1F314}","\u{1F315}","\u{1F316}","\u{1F317}","\u{1F318}","\u{1F319}","\u{1F31A}","\u{1F31B}","\u{1F31C}","\u{1F321}\uFE0F","\u2600\uFE0F","\u{1F31D}","\u{1F31E}","\u{1FA90}","\u2B50","\u{1F31F}","\u{1F320}","\u{1F30C}","\u2601\uFE0F","\u26C5","\u26C8\uFE0F","\u{1F324}\uFE0F","\u{1F325}\uFE0F","\u{1F326}\uFE0F","\u{1F327}\uFE0F","\u{1F328}\uFE0F","\u{1F329}\uFE0F","\u{1F32A}\uFE0F","\u{1F32B}\uFE0F","\u{1F32C}\uFE0F","\u{1F300}","\u{1F308}","\u{1F302}","\u2602\uFE0F","\u2614","\u26F1\uFE0F","\u26A1","\u2744\uFE0F","\u2603\uFE0F","\u26C4","\u2604\uFE0F","\u{1F525}","\u{1F4A7}","\u{1F30A}"],activity:["\u{1F383}","\u{1F384}","\u{1F386}","\u{1F387}","\u{1F9E8}","\u2728","\u{1F388}","\u{1F389}","\u{1F38A}","\u{1F38B}","\u{1F38D}","\u{1F38E}","\u{1F38F}","\u{1F390}","\u{1F391}","\u{1F9E7}","\u{1F380}","\u{1F381}","\u{1F397}\uFE0F","\u{1F39F}\uFE0F","\u{1F3AB}","\u{1F396}\uFE0F","\u{1F3C6}","\u{1F3C5}","\u{1F947}","\u{1F948}","\u{1F949}","\u26BD","\u26BE","\u{1F94E}","\u{1F3C0}","\u{1F3D0}","\u{1F3C8}","\u{1F3C9}","\u{1F3BE}","\u{1F94F}","\u{1F3B3}","\u{1F3CF}","\u{1F3D1}","\u{1F3D2}","\u{1F94D}","\u{1F3D3}","\u{1F3F8}","\u{1F94A}","\u{1F94B}","\u{1F945}","\u26F3","\u26F8\uFE0F","\u{1F3A3}","\u{1F93F}","\u{1F3BD}","\u{1F3BF}","\u{1F6F7}","\u{1F94C}","\u{1F3AF}","\u{1FA80}","\u{1FA81}","\u{1F3B1}","\u{1F52E}","\u{1FA84}","\u{1F9FF}","\u{1F3AE}","\u{1F579}\uFE0F","\u{1F3B0}","\u{1F3B2}","\u{1F9E9}","\u{1F9F8}","\u{1FA85}","\u{1FA86}","\u2660\uFE0F","\u2665\uFE0F","\u2666\uFE0F","\u2663\uFE0F","\u265F\uFE0F","\u{1F0CF}","\u{1F004}","\u{1F3B4}","\u{1F3AD}","\u{1F5BC}\uFE0F","\u{1F3A8}","\u{1F9F5}","\u{1FAA1}","\u{1F9F6}","\u{1FAA2}"],object:["\u{1F453}","\u{1F576}\uFE0F","\u{1F97D}","\u{1F97C}","\u{1F9BA}","\u{1F454}","\u{1F455}","\u{1F456}","\u{1F9E3}","\u{1F9E4}","\u{1F9E5}","\u{1F9E6}","\u{1F457}","\u{1F458}","\u{1F97B}","\u{1FA71}","\u{1FA72}","\u{1FA73}","\u{1F459}","\u{1F45A}","\u{1F45B}","\u{1F45C}","\u{1F45D}","\u{1F6CD}\uFE0F","\u{1F392}","\u{1FA74}","\u{1F45E}","\u{1F45F}","\u{1F97E}","\u{1F97F}","\u{1F460}","\u{1F461}","\u{1FA70}","\u{1F462}","\u{1F451}","\u{1F452}","\u{1F3A9}","\u{1F393}","\u{1F9E2}","\u{1FA96}","\u26D1\uFE0F","\u{1F4FF}","\u{1F484}","\u{1F48D}","\u{1F48E}","\u{1F507}","\u{1F508}","\u{1F509}","\u{1F50A}","\u{1F4E2}","\u{1F4E3}","\u{1F4EF}","\u{1F514}","\u{1F515}","\u{1F3BC}","\u{1F3B5}","\u{1F3B6}","\u{1F399}\uFE0F","\u{1F39A}\uFE0F","\u{1F39B}\uFE0F","\u{1F3A4}","\u{1F3A7}","\u{1F4FB}","\u{1F3B7}","\u{1FA97}","\u{1F3B8}","\u{1F3B9}","\u{1F3BA}","\u{1F3BB}","\u{1FA95}","\u{1F941}","\u{1FA98}","\u{1F4F1}","\u{1F4F2}","\u260E\uFE0F","\u{1F4DE}","\u{1F4DF}","\u{1F4E0}","\u{1F50B}","\u{1F50C}","\u{1F4BB}","\u{1F5A5}\uFE0F","\u{1F5A8}\uFE0F","\u2328\uFE0F","\u{1F5B1}\uFE0F","\u{1F5B2}\uFE0F","\u{1F4BD}","\u{1F4BE}","\u{1F4BF}","\u{1F4C0}","\u{1F9EE}","\u{1F3A5}","\u{1F39E}\uFE0F","\u{1F4FD}\uFE0F","\u{1F3AC}","\u{1F4FA}","\u{1F4F7}","\u{1F4F8}","\u{1F4F9}","\u{1F4FC}","\u{1F50D}","\u{1F50E}","\u{1F56F}\uFE0F","\u{1F4A1}","\u{1F526}","\u{1F3EE}","\u{1FA94}","\u{1F4D4}","\u{1F4D5}","\u{1F4D6}","\u{1F4D7}","\u{1F4D8}","\u{1F4D9}","\u{1F4DA}","\u{1F4D3}","\u{1F4D2}","\u{1F4C3}","\u{1F4DC}","\u{1F4C4}","\u{1F4F0}","\u{1F5DE}\uFE0F","\u{1F4D1}","\u{1F516}","\u{1F3F7}\uFE0F","\u{1F4B0}","\u{1FA99}","\u{1F4B4}","\u{1F4B5}","\u{1F4B6}","\u{1F4B7}","\u{1F4B8}","\u{1F4B3}","\u{1F9FE}","\u{1F4B9}","\u2709\uFE0F","\u{1F4E7}","\u{1F4E8}","\u{1F4E9}","\u{1F4E4}","\u{1F4E5}","\u{1F4E6}","\u{1F4EB}","\u{1F4EA}","\u{1F4EC}","\u{1F4ED}","\u{1F4EE}","\u{1F5F3}\uFE0F","\u270F\uFE0F","\u2712\uFE0F","\u{1F58B}\uFE0F","\u{1F58A}\uFE0F","\u{1F58C}\uFE0F","\u{1F58D}\uFE0F","\u{1F4DD}","\u{1F4BC}","\u{1F4C1}","\u{1F4C2}","\u{1F5C2}\uFE0F","\u{1F4C5}","\u{1F4C6}","\u{1F5D2}\uFE0F","\u{1F5D3}\uFE0F","\u{1F4C7}","\u{1F4C8}","\u{1F4C9}","\u{1F4CA}","\u{1F4CB}","\u{1F4CC}","\u{1F4CD}","\u{1F4CE}","\u{1F587}\uFE0F","\u{1F4CF}","\u{1F4D0}","\u2702\uFE0F","\u{1F5C3}\uFE0F","\u{1F5C4}\uFE0F","\u{1F5D1}\uFE0F","\u{1F512}","\u{1F513}","\u{1F50F}","\u{1F510}","\u{1F511}","\u{1F5DD}\uFE0F","\u{1F528}","\u{1FA93}","\u26CF\uFE0F","\u2692\uFE0F","\u{1F6E0}\uFE0F","\u{1F5E1}\uFE0F","\u2694\uFE0F","\u{1F52B}","\u{1FA83}","\u{1F3F9}","\u{1F6E1}\uFE0F","\u{1FA9A}","\u{1F527}","\u{1FA9B}","\u{1F529}","\u2699\uFE0F","\u{1F5DC}\uFE0F","\u2696\uFE0F","\u{1F9AF}","\u{1F517}","\u26D3\uFE0F","\u{1FA9D}","\u{1F9F0}","\u{1F9F2}","\u{1FA9C}","\u2697\uFE0F","\u{1F9EA}","\u{1F9EB}","\u{1F9EC}","\u{1F52C}","\u{1F52D}","\u{1F4E1}","\u{1F489}","\u{1FA78}","\u{1F48A}","\u{1FA79}","\u{1FA7A}","\u{1F6AA}","\u{1F6D7}","\u{1FA9E}","\u{1FA9F}","\u{1F6CF}\uFE0F","\u{1F6CB}\uFE0F","\u{1FA91}","\u{1F6BD}","\u{1FAA0}","\u{1F6BF}","\u{1F6C1}","\u{1FAA4}","\u{1FA92}","\u{1F9F4}","\u{1F9F7}","\u{1F9F9}","\u{1F9FA}","\u{1F9FB}","\u{1FAA3}","\u{1F9FC}","\u{1FAA5}","\u{1F9FD}","\u{1F9EF}","\u{1F6D2}","\u{1F6AC}","\u26B0\uFE0F","\u{1FAA6}","\u26B1\uFE0F","\u{1F5FF}","\u{1FAA7}"],symbol:["\u{1F3E7}","\u{1F6AE}","\u{1F6B0}","\u267F","\u{1F6B9}","\u{1F6BA}","\u{1F6BB}","\u{1F6BC}","\u{1F6BE}","\u{1F6C2}","\u{1F6C3}","\u{1F6C4}","\u{1F6C5}","\u26A0\uFE0F","\u{1F6B8}","\u26D4","\u{1F6AB}","\u{1F6B3}","\u{1F6AD}","\u{1F6AF}","\u{1F6B1}","\u{1F6B7}","\u{1F4F5}","\u{1F51E}","\u2622\uFE0F","\u2623\uFE0F","\u2B06\uFE0F","\u2197\uFE0F","\u27A1\uFE0F","\u2198\uFE0F","\u2B07\uFE0F","\u2199\uFE0F","\u2B05\uFE0F","\u2196\uFE0F","\u2195\uFE0F","\u2194\uFE0F","\u21A9\uFE0F","\u21AA\uFE0F","\u2934\uFE0F","\u2935\uFE0F","\u{1F503}","\u{1F504}","\u{1F519}","\u{1F51A}","\u{1F51B}","\u{1F51C}","\u{1F51D}","\u{1F6D0}","\u269B\uFE0F","\u{1F549}\uFE0F","\u2721\uFE0F","\u2638\uFE0F","\u262F\uFE0F","\u271D\uFE0F","\u2626\uFE0F","\u262A\uFE0F","\u262E\uFE0F","\u{1F54E}","\u{1F52F}","\u2648","\u2649","\u264A","\u264B","\u264C","\u264D","\u264E","\u264F","\u2650","\u2651","\u2652","\u2653","\u26CE","\u{1F500}","\u{1F501}","\u{1F502}","\u25B6\uFE0F","\u23E9","\u23ED\uFE0F","\u23EF\uFE0F","\u25C0\uFE0F","\u23EA","\u23EE\uFE0F","\u{1F53C}","\u23EB","\u{1F53D}","\u23EC","\u23F8\uFE0F","\u23F9\uFE0F","\u23FA\uFE0F","\u23CF\uFE0F","\u{1F3A6}","\u{1F505}","\u{1F506}","\u{1F4F6}","\u{1F4F3}","\u{1F4F4}","\u2640\uFE0F","\u2642\uFE0F","\u26A7\uFE0F","\u2716\uFE0F","\u2795","\u2796","\u2797","\u267E\uFE0F","\u203C\uFE0F","\u2049\uFE0F","\u2753","\u2754","\u2755","\u2757","\u3030\uFE0F","\u{1F4B1}","\u{1F4B2}","\u2695\uFE0F","\u267B\uFE0F","\u269C\uFE0F","\u{1F531}","\u{1F4DB}","\u{1F530}","\u2B55","\u2705","\u2611\uFE0F","\u2714\uFE0F","\u274C","\u274E","\u27B0","\u27BF","\u303D\uFE0F","\u2733\uFE0F","\u2734\uFE0F","\u2747\uFE0F","\xA9\uFE0F","\xAE\uFE0F","\u2122\uFE0F","#\uFE0F\u20E3","*\uFE0F\u20E3","0\uFE0F\u20E3","1\uFE0F\u20E3","2\uFE0F\u20E3","3\uFE0F\u20E3","4\uFE0F\u20E3","5\uFE0F\u20E3","6\uFE0F\u20E3","7\uFE0F\u20E3","8\uFE0F\u20E3","9\uFE0F\u20E3","\u{1F51F}","\u{1F520}","\u{1F521}","\u{1F522}","\u{1F523}","\u{1F524}","\u{1F170}\uFE0F","\u{1F18E}","\u{1F171}\uFE0F","\u{1F191}","\u{1F192}","\u{1F193}","\u2139\uFE0F","\u{1F194}","\u24C2\uFE0F","\u{1F195}","\u{1F196}","\u{1F17E}\uFE0F","\u{1F197}","\u{1F17F}\uFE0F","\u{1F198}","\u{1F199}","\u{1F19A}","\u{1F201}","\u{1F202}\uFE0F","\u{1F237}\uFE0F","\u{1F236}","\u{1F22F}","\u{1F250}","\u{1F239}","\u{1F21A}","\u{1F232}","\u{1F251}","\u{1F238}","\u{1F234}","\u{1F233}","\u3297\uFE0F","\u3299\uFE0F","\u{1F23A}","\u{1F235}","\u{1F534}","\u{1F7E0}","\u{1F7E1}","\u{1F7E2}","\u{1F535}","\u{1F7E3}","\u{1F7E4}","\u26AB","\u26AA","\u{1F7E5}","\u{1F7E7}","\u{1F7E8}","\u{1F7E9}","\u{1F7E6}","\u{1F7EA}","\u{1F7EB}","\u2B1B","\u2B1C","\u25FC\uFE0F","\u25FB\uFE0F","\u25FE","\u25FD","\u25AA\uFE0F","\u25AB\uFE0F","\u{1F536}","\u{1F537}","\u{1F538}","\u{1F539}","\u{1F53A}","\u{1F53B}","\u{1F4A0}","\u{1F518}","\u{1F533}","\u{1F532}"],flag:["\u{1F3C1}","\u{1F6A9}","\u{1F38C}","\u{1F3F4}","\u{1F3F3}\uFE0F","\u{1F3F3}\uFE0F\u200D\u{1F308}","\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F","\u{1F3F4}\u200D\u2620\uFE0F","\u{1F1E6}\u{1F1E8}","\u{1F1E6}\u{1F1E9}","\u{1F1E6}\u{1F1EA}","\u{1F1E6}\u{1F1EB}","\u{1F1E6}\u{1F1EC}","\u{1F1E6}\u{1F1EE}","\u{1F1E6}\u{1F1F1}","\u{1F1E6}\u{1F1F2}","\u{1F1E6}\u{1F1F4}","\u{1F1E6}\u{1F1F6}","\u{1F1E6}\u{1F1F7}","\u{1F1E6}\u{1F1F8}","\u{1F1E6}\u{1F1F9}","\u{1F1E6}\u{1F1FA}","\u{1F1E6}\u{1F1FC}","\u{1F1E6}\u{1F1FD}","\u{1F1E6}\u{1F1FF}","\u{1F1E7}\u{1F1E6}","\u{1F1E7}\u{1F1E7}","\u{1F1E7}\u{1F1E9}","\u{1F1E7}\u{1F1EA}","\u{1F1E7}\u{1F1EB}","\u{1F1E7}\u{1F1EC}","\u{1F1E7}\u{1F1ED}","\u{1F1E7}\u{1F1EE}","\u{1F1E7}\u{1F1EF}","\u{1F1E7}\u{1F1F1}","\u{1F1E7}\u{1F1F2}","\u{1F1E7}\u{1F1F3}","\u{1F1E7}\u{1F1F4}","\u{1F1E7}\u{1F1F6}","\u{1F1E7}\u{1F1F7}","\u{1F1E7}\u{1F1F8}","\u{1F1E7}\u{1F1F9}","\u{1F1E7}\u{1F1FB}","\u{1F1E7}\u{1F1FC}","\u{1F1E7}\u{1F1FE}","\u{1F1E7}\u{1F1FF}","\u{1F1E8}\u{1F1E6}","\u{1F1E8}\u{1F1E8}","\u{1F1E8}\u{1F1E9}","\u{1F1E8}\u{1F1EB}","\u{1F1E8}\u{1F1EC}","\u{1F1E8}\u{1F1ED}","\u{1F1E8}\u{1F1EE}","\u{1F1E8}\u{1F1F0}","\u{1F1E8}\u{1F1F1}","\u{1F1E8}\u{1F1F2}","\u{1F1E8}\u{1F1F3}","\u{1F1E8}\u{1F1F4}","\u{1F1E8}\u{1F1F5}","\u{1F1E8}\u{1F1F7}","\u{1F1E8}\u{1F1FA}","\u{1F1E8}\u{1F1FB}","\u{1F1E8}\u{1F1FC}","\u{1F1E8}\u{1F1FD}","\u{1F1E8}\u{1F1FE}","\u{1F1E8}\u{1F1FF}","\u{1F1E9}\u{1F1EA}","\u{1F1E9}\u{1F1EC}","\u{1F1E9}\u{1F1EF}","\u{1F1E9}\u{1F1F0}","\u{1F1E9}\u{1F1F2}","\u{1F1E9}\u{1F1F4}","\u{1F1E9}\u{1F1FF}","\u{1F1EA}\u{1F1E6}","\u{1F1EA}\u{1F1E8}","\u{1F1EA}\u{1F1EA}","\u{1F1EA}\u{1F1EC}","\u{1F1EA}\u{1F1ED}","\u{1F1EA}\u{1F1F7}","\u{1F1EA}\u{1F1F8}","\u{1F1EA}\u{1F1F9}","\u{1F1EA}\u{1F1FA}","\u{1F1EB}\u{1F1EE}","\u{1F1EB}\u{1F1EF}","\u{1F1EB}\u{1F1F0}","\u{1F1EB}\u{1F1F2}","\u{1F1EB}\u{1F1F4}","\u{1F1EB}\u{1F1F7}","\u{1F1EC}\u{1F1E6}","\u{1F1EC}\u{1F1E7}","\u{1F1EC}\u{1F1E9}","\u{1F1EC}\u{1F1EA}","\u{1F1EC}\u{1F1EB}","\u{1F1EC}\u{1F1EC}","\u{1F1EC}\u{1F1ED}","\u{1F1EC}\u{1F1EE}","\u{1F1EC}\u{1F1F1}","\u{1F1EC}\u{1F1F2}","\u{1F1EC}\u{1F1F3}","\u{1F1EC}\u{1F1F5}","\u{1F1EC}\u{1F1F6}","\u{1F1EC}\u{1F1F7}","\u{1F1EC}\u{1F1F8}","\u{1F1EC}\u{1F1F9}","\u{1F1EC}\u{1F1FA}","\u{1F1EC}\u{1F1FC}","\u{1F1EC}\u{1F1FE}","\u{1F1ED}\u{1F1F0}","\u{1F1ED}\u{1F1F2}","\u{1F1ED}\u{1F1F3}","\u{1F1ED}\u{1F1F7}","\u{1F1ED}\u{1F1F9}","\u{1F1ED}\u{1F1FA}","\u{1F1EE}\u{1F1E8}","\u{1F1EE}\u{1F1E9}","\u{1F1EE}\u{1F1EA}","\u{1F1EE}\u{1F1F1}","\u{1F1EE}\u{1F1F2}","\u{1F1EE}\u{1F1F3}","\u{1F1EE}\u{1F1F4}","\u{1F1EE}\u{1F1F6}","\u{1F1EE}\u{1F1F7}","\u{1F1EE}\u{1F1F8}","\u{1F1EE}\u{1F1F9}","\u{1F1EF}\u{1F1EA}","\u{1F1EF}\u{1F1F2}","\u{1F1EF}\u{1F1F4}","\u{1F1EF}\u{1F1F5}","\u{1F1F0}\u{1F1EA}","\u{1F1F0}\u{1F1EC}","\u{1F1F0}\u{1F1ED}","\u{1F1F0}\u{1F1EE}","\u{1F1F0}\u{1F1F2}","\u{1F1F0}\u{1F1F3}","\u{1F1F0}\u{1F1F5}","\u{1F1F0}\u{1F1F7}","\u{1F1F0}\u{1F1FC}","\u{1F1F0}\u{1F1FE}","\u{1F1F0}\u{1F1FF}","\u{1F1F1}\u{1F1E6}","\u{1F1F1}\u{1F1E7}","\u{1F1F1}\u{1F1E8}","\u{1F1F1}\u{1F1EE}","\u{1F1F1}\u{1F1F0}","\u{1F1F1}\u{1F1F7}","\u{1F1F1}\u{1F1F8}","\u{1F1F1}\u{1F1F9}","\u{1F1F1}\u{1F1FA}","\u{1F1F1}\u{1F1FB}","\u{1F1F1}\u{1F1FE}","\u{1F1F2}\u{1F1E6}","\u{1F1F2}\u{1F1E8}","\u{1F1F2}\u{1F1E9}","\u{1F1F2}\u{1F1EA}","\u{1F1F2}\u{1F1EB}","\u{1F1F2}\u{1F1EC}","\u{1F1F2}\u{1F1ED}","\u{1F1F2}\u{1F1F0}","\u{1F1F2}\u{1F1F1}","\u{1F1F2}\u{1F1F2}","\u{1F1F2}\u{1F1F3}","\u{1F1F2}\u{1F1F4}","\u{1F1F2}\u{1F1F5}","\u{1F1F2}\u{1F1F6}","\u{1F1F2}\u{1F1F7}","\u{1F1F2}\u{1F1F8}","\u{1F1F2}\u{1F1F9}","\u{1F1F2}\u{1F1FA}","\u{1F1F2}\u{1F1FB}","\u{1F1F2}\u{1F1FC}","\u{1F1F2}\u{1F1FD}","\u{1F1F2}\u{1F1FE}","\u{1F1F2}\u{1F1FF}","\u{1F1F3}\u{1F1E6}","\u{1F1F3}\u{1F1E8}","\u{1F1F3}\u{1F1EA}","\u{1F1F3}\u{1F1EB}","\u{1F1F3}\u{1F1EC}","\u{1F1F3}\u{1F1EE}","\u{1F1F3}\u{1F1F1}","\u{1F1F3}\u{1F1F4}","\u{1F1F3}\u{1F1F5}","\u{1F1F3}\u{1F1F7}","\u{1F1F3}\u{1F1FA}","\u{1F1F3}\u{1F1FF}","\u{1F1F4}\u{1F1F2}","\u{1F1F5}\u{1F1E6}","\u{1F1F5}\u{1F1EA}","\u{1F1F5}\u{1F1EB}","\u{1F1F5}\u{1F1EC}","\u{1F1F5}\u{1F1ED}","\u{1F1F5}\u{1F1F0}","\u{1F1F5}\u{1F1F1}","\u{1F1F5}\u{1F1F2}","\u{1F1F5}\u{1F1F3}","\u{1F1F5}\u{1F1F7}","\u{1F1F5}\u{1F1F8}","\u{1F1F5}\u{1F1F9}","\u{1F1F5}\u{1F1FC}","\u{1F1F5}\u{1F1FE}","\u{1F1F6}\u{1F1E6}","\u{1F1F7}\u{1F1EA}","\u{1F1F7}\u{1F1F4}","\u{1F1F7}\u{1F1F8}","\u{1F1F7}\u{1F1FA}","\u{1F1F7}\u{1F1FC}","\u{1F1F8}\u{1F1E6}","\u{1F1F8}\u{1F1E7}","\u{1F1F8}\u{1F1E8}","\u{1F1F8}\u{1F1E9}","\u{1F1F8}\u{1F1EA}","\u{1F1F8}\u{1F1EC}","\u{1F1F8}\u{1F1ED}","\u{1F1F8}\u{1F1EE}","\u{1F1F8}\u{1F1EF}","\u{1F1F8}\u{1F1F0}","\u{1F1F8}\u{1F1F1}","\u{1F1F8}\u{1F1F2}","\u{1F1F8}\u{1F1F3}","\u{1F1F8}\u{1F1F4}","\u{1F1F8}\u{1F1F7}","\u{1F1F8}\u{1F1F8}","\u{1F1F8}\u{1F1F9}","\u{1F1F8}\u{1F1FB}","\u{1F1F8}\u{1F1FD}","\u{1F1F8}\u{1F1FE}","\u{1F1F8}\u{1F1FF}","\u{1F1F9}\u{1F1E6}","\u{1F1F9}\u{1F1E8}","\u{1F1F9}\u{1F1E9}","\u{1F1F9}\u{1F1EB}","\u{1F1F9}\u{1F1EC}","\u{1F1F9}\u{1F1ED}","\u{1F1F9}\u{1F1EF}","\u{1F1F9}\u{1F1F0}","\u{1F1F9}\u{1F1F1}","\u{1F1F9}\u{1F1F2}","\u{1F1F9}\u{1F1F3}","\u{1F1F9}\u{1F1F4}","\u{1F1F9}\u{1F1F7}","\u{1F1F9}\u{1F1F9}","\u{1F1F9}\u{1F1FB}","\u{1F1F9}\u{1F1FC}","\u{1F1F9}\u{1F1FF}","\u{1F1FA}\u{1F1E6}","\u{1F1FA}\u{1F1EC}","\u{1F1FA}\u{1F1F2}","\u{1F1FA}\u{1F1F3}","\u{1F1FA}\u{1F1F8}","\u{1F1FA}\u{1F1FE}","\u{1F1FA}\u{1F1FF}","\u{1F1FB}\u{1F1E6}","\u{1F1FB}\u{1F1E8}","\u{1F1FB}\u{1F1EA}","\u{1F1FB}\u{1F1EC}","\u{1F1FB}\u{1F1EE}","\u{1F1FB}\u{1F1F3}","\u{1F1FB}\u{1F1FA}","\u{1F1FC}\u{1F1EB}","\u{1F1FC}\u{1F1F8}","\u{1F1FD}\u{1F1F0}","\u{1F1FE}\u{1F1EA}","\u{1F1FE}\u{1F1F9}","\u{1F1FF}\u{1F1E6}","\u{1F1FF}\u{1F1F2}","\u{1F1FF}\u{1F1FC}"]};var Ye={informational:[100,101,102,103],success:[200,201,202,203,204,205,206,207,208,226],redirection:[300,301,302,303,304,305,306,307,308],clientError:[400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,421,422,423,424,425,426,428,429,431,451],serverError:[500,501,502,503,504,505,506,507,508,510,511]};var It={emoji:ze,http_status_code:Ye},We=It;var Ze=[{alpha2:"AD",alpha3:"AND",numeric:"020"},{alpha2:"AE",alpha3:"ARE",numeric:"784"},{alpha2:"AF",alpha3:"AFG",numeric:"004"},{alpha2:"AG",alpha3:"ATG",numeric:"028"},{alpha2:"AI",alpha3:"AIA",numeric:"660"},{alpha2:"AL",alpha3:"ALB",numeric:"008"},{alpha2:"AM",alpha3:"ARM",numeric:"051"},{alpha2:"AO",alpha3:"AGO",numeric:"024"},{alpha2:"AQ",alpha3:"ATA",numeric:"010"},{alpha2:"AR",alpha3:"ARG",numeric:"032"},{alpha2:"AS",alpha3:"ASM",numeric:"016"},{alpha2:"AT",alpha3:"AUT",numeric:"040"},{alpha2:"AU",alpha3:"AUS",numeric:"036"},{alpha2:"AW",alpha3:"ABW",numeric:"533"},{alpha2:"AX",alpha3:"ALA",numeric:"248"},{alpha2:"AZ",alpha3:"AZE",numeric:"031"},{alpha2:"BA",alpha3:"BIH",numeric:"070"},{alpha2:"BB",alpha3:"BRB",numeric:"052"},{alpha2:"BD",alpha3:"BGD",numeric:"050"},{alpha2:"BE",alpha3:"BEL",numeric:"056"},{alpha2:"BF",alpha3:"BFA",numeric:"854"},{alpha2:"BG",alpha3:"BGR",numeric:"100"},{alpha2:"BH",alpha3:"BHR",numeric:"048"},{alpha2:"BI",alpha3:"BDI",numeric:"108"},{alpha2:"BJ",alpha3:"BEN",numeric:"204"},{alpha2:"BL",alpha3:"BLM",numeric:"652"},{alpha2:"BM",alpha3:"BMU",numeric:"060"},{alpha2:"BN",alpha3:"BRN",numeric:"096"},{alpha2:"BO",alpha3:"BOL",numeric:"068"},{alpha2:"BQ",alpha3:"BES",numeric:"535"},{alpha2:"BR",alpha3:"BRA",numeric:"076"},{alpha2:"BS",alpha3:"BHS",numeric:"044"},{alpha2:"BT",alpha3:"BTN",numeric:"064"},{alpha2:"BV",alpha3:"BVT",numeric:"074"},{alpha2:"BW",alpha3:"BWA",numeric:"072"},{alpha2:"BY",alpha3:"BLR",numeric:"112"},{alpha2:"BZ",alpha3:"BLZ",numeric:"084"},{alpha2:"CA",alpha3:"CAN",numeric:"124"},{alpha2:"CC",alpha3:"CCK",numeric:"166"},{alpha2:"CD",alpha3:"COD",numeric:"180"},{alpha2:"CF",alpha3:"CAF",numeric:"140"},{alpha2:"CG",alpha3:"COG",numeric:"178"},{alpha2:"CH",alpha3:"CHE",numeric:"756"},{alpha2:"CI",alpha3:"CIV",numeric:"384"},{alpha2:"CK",alpha3:"COK",numeric:"184"},{alpha2:"CL",alpha3:"CHL",numeric:"152"},{alpha2:"CM",alpha3:"CMR",numeric:"120"},{alpha2:"CN",alpha3:"CHN",numeric:"156"},{alpha2:"CO",alpha3:"COL",numeric:"170"},{alpha2:"CR",alpha3:"CRI",numeric:"188"},{alpha2:"CU",alpha3:"CUB",numeric:"192"},{alpha2:"CV",alpha3:"CPV",numeric:"132"},{alpha2:"CW",alpha3:"CUW",numeric:"531"},{alpha2:"CX",alpha3:"CXR",numeric:"162"},{alpha2:"CY",alpha3:"CYP",numeric:"196"},{alpha2:"CZ",alpha3:"CZE",numeric:"203"},{alpha2:"DE",alpha3:"DEU",numeric:"276"},{alpha2:"DJ",alpha3:"DJI",numeric:"262"},{alpha2:"DK",alpha3:"DNK",numeric:"208"},{alpha2:"DM",alpha3:"DMA",numeric:"212"},{alpha2:"DO",alpha3:"DOM",numeric:"214"},{alpha2:"DZ",alpha3:"DZA",numeric:"012"},{alpha2:"EC",alpha3:"ECU",numeric:"218"},{alpha2:"EE",alpha3:"EST",numeric:"233"},{alpha2:"EG",alpha3:"EGY",numeric:"818"},{alpha2:"EH",alpha3:"ESH",numeric:"732"},{alpha2:"ER",alpha3:"ERI",numeric:"232"},{alpha2:"ES",alpha3:"ESP",numeric:"724"},{alpha2:"ET",alpha3:"ETH",numeric:"231"},{alpha2:"FI",alpha3:"FIN",numeric:"246"},{alpha2:"FJ",alpha3:"FJI",numeric:"242"},{alpha2:"FK",alpha3:"FLK",numeric:"238"},{alpha2:"FM",alpha3:"FSM",numeric:"583"},{alpha2:"FO",alpha3:"FRO",numeric:"234"},{alpha2:"FR",alpha3:"FRA",numeric:"250"},{alpha2:"GA",alpha3:"GAB",numeric:"266"},{alpha2:"GB",alpha3:"GBR",numeric:"826"},{alpha2:"GD",alpha3:"GRD",numeric:"308"},{alpha2:"GE",alpha3:"GEO",numeric:"268"},{alpha2:"GF",alpha3:"GUF",numeric:"254"},{alpha2:"GG",alpha3:"GGY",numeric:"831"},{alpha2:"GH",alpha3:"GHA",numeric:"288"},{alpha2:"GI",alpha3:"GIB",numeric:"292"},{alpha2:"GL",alpha3:"GRL",numeric:"304"},{alpha2:"GM",alpha3:"GMB",numeric:"270"},{alpha2:"GN",alpha3:"GIN",numeric:"324"},{alpha2:"GP",alpha3:"GLP",numeric:"312"},{alpha2:"GQ",alpha3:"GNQ",numeric:"226"},{alpha2:"GR",alpha3:"GRC",numeric:"300"},{alpha2:"GS",alpha3:"SGS",numeric:"239"},{alpha2:"GT",alpha3:"GTM",numeric:"320"},{alpha2:"GU",alpha3:"GUM",numeric:"316"},{alpha2:"GW",alpha3:"GNB",numeric:"624"},{alpha2:"GY",alpha3:"GUY",numeric:"328"},{alpha2:"HK",alpha3:"HKG",numeric:"344"},{alpha2:"HM",alpha3:"HMD",numeric:"334"},{alpha2:"HN",alpha3:"HND",numeric:"340"},{alpha2:"HR",alpha3:"HRV",numeric:"191"},{alpha2:"HT",alpha3:"HTI",numeric:"332"},{alpha2:"HU",alpha3:"HUN",numeric:"348"},{alpha2:"ID",alpha3:"IDN",numeric:"360"},{alpha2:"IE",alpha3:"IRL",numeric:"372"},{alpha2:"IL",alpha3:"ISR",numeric:"376"},{alpha2:"IM",alpha3:"IMN",numeric:"833"},{alpha2:"IN",alpha3:"IND",numeric:"356"},{alpha2:"IO",alpha3:"IOT",numeric:"086"},{alpha2:"IQ",alpha3:"IRQ",numeric:"368"},{alpha2:"IR",alpha3:"IRN",numeric:"364"},{alpha2:"IS",alpha3:"ISL",numeric:"352"},{alpha2:"IT",alpha3:"ITA",numeric:"380"},{alpha2:"JE",alpha3:"JEY",numeric:"832"},{alpha2:"JM",alpha3:"JAM",numeric:"388"},{alpha2:"JO",alpha3:"JOR",numeric:"400"},{alpha2:"JP",alpha3:"JPN",numeric:"392"},{alpha2:"KE",alpha3:"KEN",numeric:"404"},{alpha2:"KG",alpha3:"KGZ",numeric:"417"},{alpha2:"KH",alpha3:"KHM",numeric:"116"},{alpha2:"KI",alpha3:"KIR",numeric:"296"},{alpha2:"KM",alpha3:"COM",numeric:"174"},{alpha2:"KN",alpha3:"KNA",numeric:"659"},{alpha2:"KP",alpha3:"PRK",numeric:"408"},{alpha2:"KR",alpha3:"KOR",numeric:"410"},{alpha2:"KW",alpha3:"KWT",numeric:"414"},{alpha2:"KY",alpha3:"CYM",numeric:"136"},{alpha2:"KZ",alpha3:"KAZ",numeric:"398"},{alpha2:"LA",alpha3:"LAO",numeric:"418"},{alpha2:"LB",alpha3:"LBN",numeric:"422"},{alpha2:"LC",alpha3:"LCA",numeric:"662"},{alpha2:"LI",alpha3:"LIE",numeric:"438"},{alpha2:"LK",alpha3:"LKA",numeric:"144"},{alpha2:"LR",alpha3:"LBR",numeric:"430"},{alpha2:"LS",alpha3:"LSO",numeric:"426"},{alpha2:"LT",alpha3:"LTU",numeric:"440"},{alpha2:"LU",alpha3:"LUX",numeric:"442"},{alpha2:"LV",alpha3:"LVA",numeric:"428"},{alpha2:"LY",alpha3:"LBY",numeric:"434"},{alpha2:"MA",alpha3:"MAR",numeric:"504"},{alpha2:"MC",alpha3:"MCO",numeric:"492"},{alpha2:"MD",alpha3:"MDA",numeric:"498"},{alpha2:"ME",alpha3:"MNE",numeric:"499"},{alpha2:"MF",alpha3:"MAF",numeric:"663"},{alpha2:"MG",alpha3:"MDG",numeric:"450"},{alpha2:"MH",alpha3:"MHL",numeric:"584"},{alpha2:"MK",alpha3:"MKD",numeric:"807"},{alpha2:"ML",alpha3:"MLI",numeric:"466"},{alpha2:"MM",alpha3:"MMR",numeric:"104"},{alpha2:"MN",alpha3:"MNG",numeric:"496"},{alpha2:"MO",alpha3:"MAC",numeric:"446"},{alpha2:"MP",alpha3:"MNP",numeric:"580"},{alpha2:"MQ",alpha3:"MTQ",numeric:"474"},{alpha2:"MR",alpha3:"MRT",numeric:"478"},{alpha2:"MS",alpha3:"MSR",numeric:"500"},{alpha2:"MT",alpha3:"MLT",numeric:"470"},{alpha2:"MU",alpha3:"MUS",numeric:"480"},{alpha2:"MV",alpha3:"MDV",numeric:"462"},{alpha2:"MW",alpha3:"MWI",numeric:"454"},{alpha2:"MX",alpha3:"MEX",numeric:"484"},{alpha2:"MY",alpha3:"MYS",numeric:"458"},{alpha2:"MZ",alpha3:"MOZ",numeric:"508"},{alpha2:"NA",alpha3:"NAM",numeric:"516"},{alpha2:"NC",alpha3:"NCL",numeric:"540"},{alpha2:"NE",alpha3:"NER",numeric:"562"},{alpha2:"NF",alpha3:"NFK",numeric:"574"},{alpha2:"NG",alpha3:"NGA",numeric:"566"},{alpha2:"NI",alpha3:"NIC",numeric:"558"},{alpha2:"NL",alpha3:"NLD",numeric:"528"},{alpha2:"NO",alpha3:"NOR",numeric:"578"},{alpha2:"NP",alpha3:"NPL",numeric:"524"},{alpha2:"NR",alpha3:"NRU",numeric:"520"},{alpha2:"NU",alpha3:"NIU",numeric:"570"},{alpha2:"NZ",alpha3:"NZL",numeric:"554"},{alpha2:"OM",alpha3:"OMN",numeric:"512"},{alpha2:"PA",alpha3:"PAN",numeric:"591"},{alpha2:"PE",alpha3:"PER",numeric:"604"},{alpha2:"PF",alpha3:"PYF",numeric:"258"},{alpha2:"PG",alpha3:"PNG",numeric:"598"},{alpha2:"PH",alpha3:"PHL",numeric:"608"},{alpha2:"PK",alpha3:"PAK",numeric:"586"},{alpha2:"PL",alpha3:"POL",numeric:"616"},{alpha2:"PM",alpha3:"SPM",numeric:"666"},{alpha2:"PN",alpha3:"PCN",numeric:"612"},{alpha2:"PR",alpha3:"PRI",numeric:"630"},{alpha2:"PS",alpha3:"PSE",numeric:"275"},{alpha2:"PT",alpha3:"PRT",numeric:"620"},{alpha2:"PW",alpha3:"PLW",numeric:"585"},{alpha2:"PY",alpha3:"PRY",numeric:"600"},{alpha2:"QA",alpha3:"QAT",numeric:"634"},{alpha2:"RE",alpha3:"REU",numeric:"638"},{alpha2:"RO",alpha3:"ROU",numeric:"642"},{alpha2:"RS",alpha3:"SRB",numeric:"688"},{alpha2:"RU",alpha3:"RUS",numeric:"643"},{alpha2:"RW",alpha3:"RWA",numeric:"646"},{alpha2:"SA",alpha3:"SAU",numeric:"682"},{alpha2:"SB",alpha3:"SLB",numeric:"090"},{alpha2:"SC",alpha3:"SYC",numeric:"690"},{alpha2:"SD",alpha3:"SDN",numeric:"729"},{alpha2:"SE",alpha3:"SWE",numeric:"752"},{alpha2:"SG",alpha3:"SGP",numeric:"702"},{alpha2:"SH",alpha3:"SHN",numeric:"654"},{alpha2:"SI",alpha3:"SVN",numeric:"705"},{alpha2:"SJ",alpha3:"SJM",numeric:"744"},{alpha2:"SK",alpha3:"SVK",numeric:"703"},{alpha2:"SL",alpha3:"SLE",numeric:"694"},{alpha2:"SM",alpha3:"SMR",numeric:"674"},{alpha2:"SN",alpha3:"SEN",numeric:"686"},{alpha2:"SO",alpha3:"SOM",numeric:"706"},{alpha2:"SR",alpha3:"SUR",numeric:"740"},{alpha2:"SS",alpha3:"SSD",numeric:"728"},{alpha2:"ST",alpha3:"STP",numeric:"678"},{alpha2:"SV",alpha3:"SLV",numeric:"222"},{alpha2:"SX",alpha3:"SXM",numeric:"534"},{alpha2:"SY",alpha3:"SYR",numeric:"760"},{alpha2:"SZ",alpha3:"SWZ",numeric:"748"},{alpha2:"TC",alpha3:"TCA",numeric:"796"},{alpha2:"TD",alpha3:"TCD",numeric:"148"},{alpha2:"TF",alpha3:"ATF",numeric:"260"},{alpha2:"TG",alpha3:"TGO",numeric:"768"},{alpha2:"TH",alpha3:"THA",numeric:"764"},{alpha2:"TJ",alpha3:"TJK",numeric:"762"},{alpha2:"TK",alpha3:"TKL",numeric:"772"},{alpha2:"TL",alpha3:"TLS",numeric:"626"},{alpha2:"TM",alpha3:"TKM",numeric:"795"},{alpha2:"TN",alpha3:"TUN",numeric:"788"},{alpha2:"TO",alpha3:"TON",numeric:"776"},{alpha2:"TR",alpha3:"TUR",numeric:"792"},{alpha2:"TT",alpha3:"TTO",numeric:"780"},{alpha2:"TV",alpha3:"TUV",numeric:"798"},{alpha2:"TW",alpha3:"TWN",numeric:"158"},{alpha2:"TZ",alpha3:"TZA",numeric:"834"},{alpha2:"UA",alpha3:"UKR",numeric:"804"},{alpha2:"UG",alpha3:"UGA",numeric:"800"},{alpha2:"UM",alpha3:"UMI",numeric:"581"},{alpha2:"US",alpha3:"USA",numeric:"840"},{alpha2:"UY",alpha3:"URY",numeric:"858"},{alpha2:"UZ",alpha3:"UZB",numeric:"860"},{alpha2:"VA",alpha3:"VAT",numeric:"336"},{alpha2:"VC",alpha3:"VCT",numeric:"670"},{alpha2:"VE",alpha3:"VEN",numeric:"862"},{alpha2:"VG",alpha3:"VGB",numeric:"092"},{alpha2:"VI",alpha3:"VIR",numeric:"850"},{alpha2:"VN",alpha3:"VNM",numeric:"704"},{alpha2:"VU",alpha3:"VUT",numeric:"548"},{alpha2:"WF",alpha3:"WLF",numeric:"876"},{alpha2:"WS",alpha3:"WSM",numeric:"882"},{alpha2:"YE",alpha3:"YEM",numeric:"887"},{alpha2:"YT",alpha3:"MYT",numeric:"175"},{alpha2:"ZA",alpha3:"ZAF",numeric:"710"},{alpha2:"ZM",alpha3:"ZMB",numeric:"894"},{alpha2:"ZW",alpha3:"ZWE",numeric:"716"}];var Je=ue;var _t={country_code:Ze,time_zone:Je},Xe=_t;var Gt={title:"Base",code:"base"},Qe=Gt;var qe=["/Applications","/bin","/boot","/boot/defaults","/dev","/etc","/etc/defaults","/etc/mail","/etc/namedb","/etc/periodic","/etc/ppp","/home","/home/user","/home/user/dir","/lib","/Library","/lost+found","/media","/mnt","/net","/Network","/opt","/opt/bin","/opt/include","/opt/lib","/opt/sbin","/opt/share","/private","/private/tmp","/private/var","/proc","/rescue","/root","/sbin","/selinux","/srv","/sys","/System","/tmp","/Users","/usr","/usr/X11R6","/usr/bin","/usr/include","/usr/lib","/usr/libdata","/usr/libexec","/usr/local/bin","/usr/local/src","/usr/obj","/usr/ports","/usr/sbin","/usr/share","/usr/src","/var","/var/log","/var/mail","/var/spool","/var/tmp","/var/yp"];var et={"application/epub+zip":{extensions:["epub"]},"application/gzip":{extensions:["gz"]},"application/java-archive":{extensions:["jar","war","ear"]},"application/json":{extensions:["json","map"]},"application/ld+json":{extensions:["jsonld"]},"application/msword":{extensions:["doc","dot"]},"application/octet-stream":{extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/ogg":{extensions:["ogx"]},"application/pdf":{extensions:["pdf"]},"application/rtf":{extensions:["rtf"]},"application/vnd.amazon.ebook":{extensions:["azw"]},"application/vnd.apple.installer+xml":{extensions:["mpkg"]},"application/vnd.mozilla.xul+xml":{extensions:["xul"]},"application/vnd.ms-excel":{extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-fontobject":{extensions:["eot"]},"application/vnd.ms-powerpoint":{extensions:["ppt","pps","pot"]},"application/vnd.oasis.opendocument.presentation":{extensions:["odp"]},"application/vnd.oasis.opendocument.spreadsheet":{extensions:["ods"]},"application/vnd.oasis.opendocument.text":{extensions:["odt"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{extensions:["docx"]},"application/vnd.rar":{extensions:["rar"]},"application/vnd.visio":{extensions:["vsd","vst","vss","vsw"]},"application/x-7z-compressed":{extensions:["7z"]},"application/x-abiword":{extensions:["abw"]},"application/x-bzip":{extensions:["bz"]},"application/x-bzip2":{extensions:["bz2","boz"]},"application/x-csh":{extensions:["csh"]},"application/x-freearc":{extensions:["arc"]},"application/x-httpd-php":{extensions:["php"]},"application/x-sh":{extensions:["sh"]},"application/x-tar":{extensions:["tar"]},"application/xhtml+xml":{extensions:["xhtml","xht"]},"application/xml":{extensions:["xml","xsl","xsd","rng"]},"application/zip":{extensions:["zip"]},"audio/3gpp":{extensions:["3gpp"]},"audio/3gpp2":{extensions:["3g2"]},"audio/aac":{extensions:["aac"]},"audio/midi":{extensions:["mid","midi","kar","rmi"]},"audio/mpeg":{extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/ogg":{extensions:["oga","ogg","spx","opus"]},"audio/opus":{extensions:["opus"]},"audio/wav":{extensions:["wav"]},"audio/webm":{extensions:["weba"]},"font/otf":{extensions:["otf"]},"font/ttf":{extensions:["ttf"]},"font/woff":{extensions:["woff"]},"font/woff2":{extensions:["woff2"]},"image/avif":{extensions:["avif"]},"image/bmp":{extensions:["bmp"]},"image/gif":{extensions:["gif"]},"image/jpeg":{extensions:["jpeg","jpg","jpe"]},"image/png":{extensions:["png"]},"image/svg+xml":{extensions:["svg","svgz"]},"image/tiff":{extensions:["tif","tiff"]},"image/vnd.microsoft.icon":{extensions:["ico"]},"image/webp":{extensions:["webp"]},"text/calendar":{extensions:["ics","ifb"]},"text/css":{extensions:["css"]},"text/csv":{extensions:["csv"]},"text/html":{extensions:["html","htm","shtml"]},"text/javascript":{extensions:["js","mjs"]},"text/plain":{extensions:["txt","text","conf","def","list","log","in","ini"]},"video/3gpp":{extensions:["3gp","3gpp"]},"video/3gpp2":{extensions:["3g2"]},"video/mp2t":{extensions:["ts"]},"video/mp4":{extensions:["mp4","mp4v","mpg4"]},"video/mpeg":{extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/ogg":{extensions:["ogv"]},"video/webm":{extensions:["webm"]},"video/x-msvideo":{extensions:["avi"]}};var Ft={directory_path:qe,mime_type:et},tt=Ft;var Ot={color:Ge,database:Ue,date:je,hacker:Ve,internet:We,location:Xe,metadata:Qe,system:tt},Qa=Ot; - -var f=new Ie({locale:[Gl,Qa]}); - -class RandomDataGenerator { - data_length = 50; - generated_data = []; - auto_proceed = true; - locale = "en_GB"; // locale implementation suspended - imgAPIs = [ - 'https://picsum.photos/500/500?random=', - 'https://avatar.iran.liara.run/public/' - ]; - constructor({ length, auto_proceed, locale }) { - length !== undefined && (this.data_length = length); - auto_proceed !== undefined && (this.auto_proceed = auto_proceed); - locale !== undefined && (this.locale = locale.replace('-', '_')); - if (this.auto_proceed) { - this.generate(); - } - } - generate() { - return this.make_data(); - } - make_data() { - for (let i = 0; i < this.data_length; i++) { - const _data = this.generate_data((i + 1).toString()); - if (i > 0) { - _data.parentId = this.get_parent_id(i); - } - this.generated_data.push(_data); - } - return this.generated_data; - } - get_parent_id(index) { - let parentId = Math.floor(Math.random() * this.generated_data.length).toString(); - parentId = parseInt(parentId) == 0 ? "1" : parentId; - if (parentId == (index + 1).toString()) { - parentId = this.get_parent_id(index); - } - return parentId; - } - generate_data(id) { - const should_add_image = Math.floor(Math.random() * 2); - const img_endpoints = this.imgAPIs[Math.floor(Math.random() * this.imgAPIs.length)] + id; - return { - id, - name: f.person.fullName(), - role: f.person.jobTitle(), - location: f.location.city() + ", " + f.location.country(), - image: should_add_image ? img_endpoints : '' - }; - } -} - -class ChartMainHelper { - tree_data = []; - handleCollapseChildren = () => { }; - center_elem = ({}) => null; - itemHierarchy = []; - tmp_tree_data = []; - tree_level_step = 2; - display_tree_in_step = true; - auto_display_tree_in_step = true; - link_point_position = { - top: (rect) => `translate(${parseInt(rect.attr('width')) / 2}, 0)`, - bottom: (rect) => `translate(${parseInt(rect.attr('width')) / 2}, ${rect.attr('height')})`, - right: (rect) => `translate(${rect.attr('width')}, ${rect.attr('height') / 2})`, - left: (rect) => `translate(0, ${rect.attr('height') / 2})`, - }; - inverse_link_point_position = { - "top": "bottom", - "bottom": "top", - "left": "right", - "right": "left", - }; - chartHeadWidth = 120; - chartHeadHeight = 130; - chartHeadLandscapeWidth = 240; - chartHeadLandscapeHeight = 80; - chartHeadRoundedWidth = 120; - chartHeadRoundedHeight = 180; - color_handler = {}; - chart_head_type = 'default'; - show_chart_head_border = true; - animation_rotation_speed = 50; - animation_rotation_interval = 1; - head_linker_thumb_circle_radius = 8; - linker_thumb_icon_color = 'bright500'; - linker_thumb_shape = 'symbolDiamond2'; - head_image_shape = 'symbolCircle'; - head_image_surface_area = 60; - chart_head_bg = '#ffffff'; - auto_set_chart_head_bg = false; - emitEvent = () => false; - tree_link_types = { - curveBumpX: bumpX, - curveBumpY: bumpY, - curveBasisClosed: basisClosed, - curveLinear: curveLinear, - curveStep: step, - curveStepAfter: stepAfter, - curveStepBefore: stepBefore - }; - tree_link_type = undefined; - rootWrapperContainer = null; - app_unique_id = ''; - app_root_unique_selector = ''; - constructor() { - setTimeout(() => { - this.app_root_unique_selector = `[data-ts-unique-id='${this.app_unique_id}']`; - }, 0); - } - createDynamicEl() { - return new TSElement(); - } - splitStringIntoBatch(text, len) { - let arr = []; - for (let i = 0; i < text?.length; i += len) { - arr.push(text.substring(i, Math.min(i + len, text.length))); - } - return arr; - } - get_user_initials(name) { - const split_name = name?.split(' '); - return split_name?.length > 1 ? split_name?.[0][0] + split_name?.at(-1)?.[0] : split_name?.[0][0]; - } - format_employee_name(name, length = 15) { - const split_name = name?.split(' '); - const make_name = split_name?.length > 2 ? split_name?.[0] + " " + split_name?.at(-1) : split_name?.join(' '); - const clip_name = this.splitStringIntoBatch(make_name, length); - return clip_name; - } - symbol_type(symbolName) { - const fillSymbols = ['circle', 'cross', 'diamond', 'square', 'star', 'triangle', 'wye']; - const strokeSymbols = ['plus', 'x', 'triangle2', 'asterisk', 'square2', 'diamond2']; - const trim_name = symbolName.replace(/symbol/, '').toLowerCase(); - return fillSymbols.includes(trim_name) ? 'fill' : strokeSymbols.includes(trim_name) ? 'stroke' : 'fill'; - } - get_page_body_bg() { - const page_style = document.body.style.getPropertyValue('background-color'); - return page_style == '' ? '#ffffff' : page_style; - } - get_chart_head_bg() { - if (this.auto_set_chart_head_bg) - return this.get_page_body_bg(); - return this.chart_head_bg; - } - get_image_shape_spacing(symbol) { - const spacings = { - symbolCircle: 10, - symbolCross: 10, - symbolDiamond: 25, - symbolDiamond2: 10, - symbolSquare: 0, - symbolSquare2: -8, - symbolStar: 20, - symbolTriangle: 20, - symbolTriangle2: 10, - symbolWye: 20 - }; - return spacings[symbol]; - } - makeHead(head_data, doubleVerticalPoints = false, pointPosition = { parent: "bottom", children: "top" }) { - if (this.chart_head_type == 'default') { - return this.defaultHead(head_data, doubleVerticalPoints, pointPosition); - } - else if (this.chart_head_type == 'landscape') { - return this.landscapeHead(head_data, doubleVerticalPoints, pointPosition); - } - else if (this.chart_head_type == 'rounded') { - return this.roundedHead(head_data, doubleVerticalPoints, pointPosition); - } - else { - return this.defaultHead(head_data, doubleVerticalPoints, pointPosition); - } - } - handleCenterHead(e) { - e.stopPropagation(); - const curr_target = e.currentTarget; - const rect = curr_target.getBoundingClientRect(); - this.center_elem(rect); - } - defaultHead(head_data, doubleVerticalPoints = false, pointPosition = { parent: "bottom", children: "top" }) { - const has_children = this.tree_data.filter(data => data.parentId === head_data.id).length > 0; - const has_parent = this.tree_data.filter(data => data.id === head_data.parentId).length > 0; - const color_set = this.color_handler.getColor(head_data.id); - let move_down = 0; - const chart_head_bg = this.get_chart_head_bg(); - const svgNode = create$1('svg') - .attr("class", "main-svg-el" + (this.getIsElRootTreeChild(head_data.id) ? ' root-svg-el' : '')) - .attr('width', this.chartHeadWidth) - .attr('height', this.chartHeadHeight) - .attr('style', 'background-color: ' + chart_head_bg) - .on('dblclick', (e) => this.handleCenterHead(e)); - // Gaussian blur - create$1('defs') - .append('filter') - .attr('id', 'blur1') - .attr('x', 0) - .attr('y', 0) - .append('feGaussianBlur') - .attr('in', 'SourceGraphic') - .attr('stdDeviation', '3'); - const all_group = svgNode.append('g'); - const rect = all_group?.append('rect') - .attr('rx', 16) - .attr('ry', 16) - .attr('width', this.chartHeadWidth) - .attr('height', this.chartHeadHeight) - .attr('stroke', this.show_chart_head_border ? color_set.color : 'none') - .attr('fill', 'none') - .attr('stroke-width', 0); - const rect_half_width = parseInt(rect.attr('width')) / 2; - const firstSection = all_group?.append('g') - .attr('y', 100); - const chart_head_image_size = Math.pow(this.head_image_surface_area - this.get_image_shape_spacing(this.head_image_shape), 2); - if (!head_data.image) { - move_down = rect_half_width - this.head_image_surface_area < 1 ? Math.abs(rect_half_width - this.head_image_surface_area) + 15 : 0; - firstSection?.append('path') - .attr('d', Symbol$1().type(d3[this.head_image_shape]).size(chart_head_image_size)) - .attr('stroke', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : 'none') - .attr('stroke-width', this.symbol_type(this.head_image_shape) == 'stroke' ? 1 : 0) - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? 'transparent' : color_set.color) - .attr('transform', `translate(${parseInt(rect.attr('width')) / 2}, 50)`); - firstSection?.append('text') - .attr('class', '') - .attr('text-anchor', 'middle') - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : color_set.bright500) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', 56) - .attr('font-size', '95%') - .text(this.get_user_initials(head_data.name)); // employee name - } - else { - let extra_y_dist = rect_half_width - this.head_image_surface_area; - extra_y_dist = extra_y_dist > 10 ? 0 : extra_y_dist - 10; - extra_y_dist = extra_y_dist > 0 ? -extra_y_dist : extra_y_dist; - extra_y_dist = (rect_half_width - this.head_image_surface_area) <= 10 && extra_y_dist == 0 ? -10 : extra_y_dist; - move_down = rect_half_width - this.head_image_surface_area < 1 ? Math.abs(rect_half_width - this.head_image_surface_area) + 15 : 0; - firstSection.append('defs') - .append('clipPath') - .attr('id', "default-head-clip-" + head_data.id) - .append('path') - .attr('d', Symbol$1().type(d3[this.head_image_shape]).size(chart_head_image_size)) - .attr('transform', `translate(${(parseInt(rect.attr('width')) / 2)}, ${this.head_image_surface_area + extra_y_dist})`) - .attr('fill', color_set.bright500); - firstSection?.append('image') - .attr('href', head_data.image) - .attr('preserveAspectRatio', 'xMaxYMax slice') - .attr('width', this.head_image_surface_area) - .attr('height', this.head_image_surface_area) - .attr('x', (parseInt(rect.attr('width')) / 2) - (this.head_image_surface_area / 2)) - .attr('y', (this.head_image_surface_area / 2) + extra_y_dist) - .attr('clip-path', `url(#default-head-clip-${head_data.id})`); - } - const employee_name_split = this.format_employee_name(head_data.name); - employee_name_split.forEach((name, i) => { - all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', i > 0 ? 95 + move_down : 80 + move_down) - .attr('font-size', '85%') - .attr('fill', color_set.darker) - .attr('style', `text-transform: ${i > 0 ? 'none' : 'capitalize'}`) - .text(name); // employee name - i > 0 && (move_down += 15); - }); - const positionTitle = all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', 100 + move_down) - .attr('font-size', '65%'); - const titles = this.splitStringIntoBatch(head_data.role, 20); // role - titles.forEach((title, index) => { - positionTitle?.append('tspan') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('dy', index > 0 ? '.6rem' : 0) - .text(title.toString()) - .attr('fill', color_set.dark100); - index > 0 && (move_down += 10); - }); - if (head_data.location !== undefined) { - const employeeLocation = all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', 115 + move_down) - .attr('font-size', '65%') - .attr('fill', color_set.dark100); - const location_title = this.splitStringIntoBatch(head_data.location, 19); // role - location_title.forEach((title, index) => { - employeeLocation?.append('tspan') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('dy', index > 0 ? '.6rem' : 0) - .text(title.toString()); - index > 0 && (move_down += 10); - }); - } - const container_height = this.chartHeadHeight + move_down; - rect?.attr('height', container_height); - svgNode?.attr('height', container_height); - this.add_linker(all_group, has_parent, has_children, pointPosition, color_set, rect, svgNode, head_data, doubleVerticalPoints); - this.emitEvent('chart_head.create', { headNode: svgNode.node() }); - return svgNode; - } - landscapeHead(head_data, doubleVerticalPoints = false, pointPosition = { parent: "bottom", children: "top" }) { - const has_children = this.tree_data.filter(data => data.parentId === head_data.id).length > 0; - const has_parent = this.tree_data.filter(data => data.id === head_data.parentId).length > 0; - const color_set = this.color_handler.getColor(head_data.id); - let move_down = 0; - const svgNode = create$1('svg') - .attr("class", "main-svg-el" + (this.getIsElRootTreeChild(head_data.id) ? ' root-svg-el' : '')) - .attr('width', this.chartHeadLandscapeWidth) - .attr('height', this.chartHeadLandscapeHeight) - .attr('style', 'background-color: ' + this.chart_head_bg) - .on('dblclick', (e) => this.handleCenterHead(e)); - const all_group = svgNode.append('g'); - const rect = all_group?.append('rect') - .attr('rx', 16) - .attr('ry', 16) - .attr('width', this.chartHeadLandscapeWidth) - .attr('height', this.chartHeadLandscapeHeight) - .attr('stroke', this.show_chart_head_border ? color_set.color : 'none') - .attr('fill', 'none') - .attr('stroke-width', 0); - const rect_half_height = parseInt(rect.attr('height')) / 2; - const employee_name_split = this.format_employee_name(head_data.name, 18); - const rightGroup = all_group.append('g') - .attr('x', 0) - .attr('y', 0); - const leftGroup = all_group.append('g'); - const locked_height = this.chartHeadLandscapeHeight + move_down; - rect.attr('height', locked_height); - svgNode.attr('height', locked_height); - if (!head_data.image) { - const chartHeadLandscapeHeight = this.head_image_surface_area > rect_half_height ? Math.abs(this.head_image_surface_area - rect_half_height) : 0; - rect.attr('height', locked_height + chartHeadLandscapeHeight); - svgNode.attr('height', locked_height + chartHeadLandscapeHeight); - svgNode.attr('width', this.chartHeadLandscapeWidth + chartHeadLandscapeHeight); - rect.attr('width', this.chartHeadLandscapeWidth + chartHeadLandscapeHeight); - leftGroup?.append('path') - .attr('d', Symbol$1().type(d3[this.head_image_shape]).size(Math.pow(this.head_image_surface_area - this.get_image_shape_spacing(this.head_image_shape), 2))) - .attr('stroke', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : 'none') - .attr('stroke-width', this.symbol_type(this.head_image_shape) == 'stroke' ? 1 : 0) - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? 'transparent' : color_set.color) - .attr('transform', `translate(${parseInt(rect.attr('height')) / 2}, 50)`); - leftGroup?.append('text') - .attr('class', '') - .attr('text-anchor', 'middle') - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : color_set.bright500) - .attr('x', parseInt(rect.attr('height')) / 2) - .attr('y', (parseInt(rect.attr('height')) / 2) + 6) - .attr('font-size', '95%') - .text(this.get_user_initials(head_data.name)); // employee initials - } - else { - let extra_y_dist = rect_half_height - this.head_image_surface_area; - extra_y_dist = extra_y_dist > 10 ? 0 : extra_y_dist - 10; - extra_y_dist = extra_y_dist > 0 ? -extra_y_dist : extra_y_dist; - extra_y_dist = (rect_half_height - this.head_image_surface_area) <= 10 && extra_y_dist == 0 ? -10 : extra_y_dist; - const chartHeadLandscapeHeight = this.head_image_surface_area > rect_half_height ? Math.abs(this.head_image_surface_area - rect_half_height) : 0; - rect.attr('height', locked_height + chartHeadLandscapeHeight); - svgNode.attr('height', locked_height + chartHeadLandscapeHeight); - svgNode.attr('width', this.chartHeadLandscapeWidth + chartHeadLandscapeHeight); - rect.attr('width', this.chartHeadLandscapeWidth + chartHeadLandscapeHeight); - leftGroup.append('defs') - .append('clipPath') - .attr('id', "landscape-clip-" + head_data.id) - .append('path') - .attr('d', Symbol$1().type(d3[this.head_image_shape]).size(Math.pow(this.head_image_surface_area - this.get_image_shape_spacing(this.head_image_shape), 2))) - .attr('transform', `translate(${(parseInt(rect.attr('height')) / 2)}, ${this.head_image_surface_area + (extra_y_dist + 20)})`) - .attr('fill', color_set.bright500); - leftGroup?.append('image') - .attr('href', head_data.image) - .attr('preserveAspectRatio', 'xMaxYMax slice') - .attr('width', this.head_image_surface_area) - .attr('height', this.head_image_surface_area) - .attr('x', (parseInt(rect.attr('height')) / 2) - (this.head_image_surface_area / 2)) - .attr('y', (this.head_image_surface_area / 2) + (extra_y_dist + 20)) - .attr('clip-path', `url(#landscape-clip-${head_data.id})`); - } - const leftStartOrigin = parseInt(rect.attr('height')); - const employeeName = rightGroup?.append('text') - .attr('x', leftStartOrigin) - .attr('y', 30) - .attr('font-size', '95%') - .attr('fill', color_set.darker); - employee_name_split.forEach((title, index) => { - employeeName?.append('tspan') - .attr('x', leftStartOrigin) - .attr('y', 30) - .attr('dy', index > 0 ? '.7rem' : 0) - .attr('font-size', '95%') - .attr('style', "z-index: +9") - .text(title.toString()); - index > 0 && (move_down += 10); - }); - const positionTitle = rightGroup?.append('text') - .attr('x', leftStartOrigin) - .attr('y', 50 + move_down) - .attr('font-size', '65%'); - const titles = this.splitStringIntoBatch(head_data.role, 30); // role - titles.forEach((title, index) => { - positionTitle?.append('tspan') - .attr('x', leftStartOrigin) - .attr('dy', index > 0 ? '.6rem' : 0) - .attr('y', 50 + move_down) - .text(title.toString()) - .attr('fill', color_set.dark100); - index > 0 && (move_down += 10); - }); - if (head_data.location !== undefined) { - const employeeLocation = rightGroup?.append('text') - .attr('x', leftStartOrigin) - .attr('y', 65 + move_down) - .attr('font-size', '65%') - .attr('fill', color_set.dark100); - const location_title = this.splitStringIntoBatch(head_data.location, 30); // role - location_title.forEach((title, index) => { - employeeLocation?.append('tspan') - .attr('x', leftStartOrigin) - .attr('dy', index > 0 ? '.6rem' : 0) - .text(title.toString()); - index > 0 && (move_down += 10); - }); - } - this.add_linker(all_group, has_parent, has_children, pointPosition, color_set, rect, svgNode, head_data, doubleVerticalPoints); - this.emitEvent('chart_head.create', { headNode: svgNode.node() }); - return svgNode; - } - roundedHead(head_data, doubleVerticalPoints = false, pointPosition = { parent: "bottom", children: "top" }) { - const has_children = this.tree_data.filter(data => data.parentId === head_data.id).length > 0; - const has_parent = this.tree_data.filter(data => data.id === head_data.parentId).length > 0; - const color_set = this.color_handler.getColor(head_data.id); - let move_down = 0; - const svgNode = create$1('svg') - .attr('class', 'main-svg-el rounded-head' + (this.getIsElRootTreeChild(head_data.id) ? ' root-svg-el' : '')) - .attr('style', 'overflow: visible;') - .attr('width', this.chartHeadRoundedWidth) - .attr('height', this.chartHeadRoundedHeight) - .attr('fill', 'none') - .on('dblclick', (e) => this.handleCenterHead(e)); - const all_group = svgNode.append('g'); - const rect = all_group?.append('rect') - .attr('rx', 16) - .attr('ry', 16) - .attr('width', this.chartHeadRoundedWidth) - .attr('height', this.chartHeadRoundedHeight) - .attr('stroke', this.show_chart_head_border ? color_set.color : 'none') - .attr('fill', 'none') - .attr('stroke-width', 0); - const rect_half_width = parseInt(rect.attr('width')) / 2; - const firstSection = all_group?.append('g'); - const symbol_size = Math.pow((this.head_image_surface_area - this.get_image_shape_spacing(this.head_image_shape)) * 2, 2); - const head_shape_type = d3[this.head_image_shape]; - if (!head_data.image) { - let extra_y_dist = rect_half_width - this.head_image_surface_area; - extra_y_dist = extra_y_dist > 10 ? 0 : extra_y_dist - 10; - extra_y_dist = extra_y_dist > 0 ? -extra_y_dist : extra_y_dist; - extra_y_dist = (rect_half_width - this.head_image_surface_area) <= 10 && extra_y_dist == 0 ? -10 : extra_y_dist; - move_down = rect_half_width - this.head_image_surface_area < 0 ? Math.abs(rect_half_width - this.head_image_surface_area) * 2 : 0; - firstSection?.append('path') - .attr('d', Symbol$1().type(head_shape_type).size(symbol_size)) - .attr('stroke', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : 'none') - .attr('stroke-width', this.symbol_type(this.head_image_shape) == 'stroke' ? 1 : 0) - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? 'transparent' : color_set.color) - .attr('transform', `translate(${(parseInt(rect.attr('width')) / 2)}, ${(this.head_image_surface_area * 2) - ((this.head_image_surface_area))})`); - firstSection?.append('text') - .attr('class', '') - .attr('text-anchor', 'middle') - .attr('fill', this.symbol_type(this.head_image_shape) == 'stroke' ? color_set.color : color_set.bright500) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', this.head_image_surface_area + Math.sqrt(symbol_size) / 6) - .attr('font-size', (this.head_image_surface_area / 1.5) + 'px') - .text(this.get_user_initials(head_data.name)); // employee name - } - else { - let extra_y_dist = rect_half_width - this.head_image_surface_area; - extra_y_dist = extra_y_dist > 10 ? 0 : extra_y_dist - 10; - extra_y_dist = extra_y_dist > 0 ? -extra_y_dist : extra_y_dist; - extra_y_dist = (rect_half_width - this.head_image_surface_area) <= 10 && extra_y_dist == 0 ? -10 : extra_y_dist; - move_down = rect_half_width - this.head_image_surface_area < 0 ? Math.abs(rect_half_width - this.head_image_surface_area) * 2 : 0; - firstSection.append('defs') - .append('clipPath') - .attr('id', "rounded-corners-" + head_data.id) - .append('path') - .attr('d', Symbol$1().type(head_shape_type).size(symbol_size)) - .attr('transform', `translate(${(parseInt(rect.attr('width')) / 2)}, ${(this.head_image_surface_area * 2) - ((this.head_image_surface_area))})`) - .attr('fill', color_set.bright500); - firstSection?.append('image') - .attr('href', head_data.image) - .attr('preserveAspectRatio', 'xMaxYMax slice') - .attr('width', this.head_image_surface_area * 2) - .attr('height', this.head_image_surface_area * 2) - .attr('x', (parseInt(rect.attr('width')) / 2) - (this.head_image_surface_area)) - .attr('y', (this.head_image_surface_area) - ((this.head_image_surface_area))) - .attr('clip-path', `url(#rounded-corners-${head_data.id})`); - } - const employee_name_split = this.format_employee_name(head_data.name, 27); - employee_name_split.forEach((name, i) => { - all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', this.chartHeadRoundedWidth + 18) - .attr('dy', i > 0 ? 50 + move_down : 0 + move_down) - .attr('font-size', '105%') - .attr('fill', color_set.darker) - .attr('style', `text-transform: ${i > 0 ? 'none' : 'capitalize'}`) - .text(name); // employee name - i > 0 && (move_down += 15); - }); - const positionTitle = all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', this.chartHeadRoundedWidth + 35 + move_down) - .attr('font-size', '65%'); - const titles = this.splitStringIntoBatch(head_data.role, 20); // role - titles.forEach((title, index) => { - positionTitle?.append('tspan') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('dy', index > 0 ? '.6rem' : 0) - .text(title.toString()) - .attr('fill', color_set.dark100); - index > 0 && (move_down += 10); - }); - if (head_data.location !== undefined) { - const employeeLocation = all_group?.append('text') - .attr('text-anchor', 'middle') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', this.chartHeadRoundedWidth + 50 + move_down) - .attr('font-size', '65%') - .attr('fill', color_set.dark100); - const location_title = this.splitStringIntoBatch(head_data.location, 19); // role - location_title.forEach((title, index) => { - employeeLocation?.append('tspan') - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('dy', index > 0 ? '.6rem' : 0) - .text(title.toString()); - index > 0 && (move_down += 10); - }); - } - const container_height = this.chartHeadRoundedHeight + move_down; - rect?.attr('height', container_height); - svgNode?.attr('height', container_height); - this.add_linker(all_group, has_parent, has_children, pointPosition, color_set, rect, svgNode, head_data, doubleVerticalPoints); - this.emitEvent('chart_head.create', { headNode: svgNode.node() }); - return svgNode; - } - add_linker(all_group, has_parent, has_children, pointPosition, color_set, rect, svgNode, head_data, doubleVerticalPoints) { - const ts_linker = Math.PI * this.head_linker_thumb_circle_radius * this.head_linker_thumb_circle_radius; - const add_link_icon = (type, inverse_link_point_position, class_name) => { - if (this.rootWrapperContainer?.querySelector('.' + class_name) != null) - this.rootWrapperContainer?.querySelector('.' + class_name)?.remove(); - const color = this.symbol_type(this.linker_thumb_shape) == 'stroke' ? color_set.bright100 : color_set[this.linker_thumb_icon_color]; - return all_group.append('path') - .attr('d', Symbol$1().type(type == 'cross' ? cross : times).size(Math.sqrt(ts_linker))) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', rect.attr('height')) - .attr('fill', color) - .attr('stroke', type == 'minus' ? color : 'none') - .attr('class', class_name) - .attr('style', 'pointer-events: none') - .attr('stroke-width', type == 'minus' ? 2 : 0) - .attr('transform', this.link_point_position[inverse_link_point_position](rect)); - }; - if (pointPosition != false && has_parent) { - all_group?.append('path') - .attr('d', Symbol$1().type(d3[this.linker_thumb_shape]).size(ts_linker)) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', 0) - .attr('class', 'ts-linker') - .attr('fill', this.symbol_type(this.linker_thumb_shape) == 'fill' ? color_set.color : 'none') - .attr('stroke', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? color_set.gray : 'none') - .attr('stroke-width', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? 1 : 0) - .attr('transform', this.link_point_position[pointPosition.children](rect)); - } - if (pointPosition != false && has_children) { - const _class = this; - const translate_y = pointPosition.parent == "bottom" ? 0 : rect.attr('height'); - let click_counter = 0; - all_group?.append('path') - .attr('d', Symbol$1().type(d3[this.linker_thumb_shape]).size(ts_linker)) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', rect.attr('height')) - .attr('class', 'ts-linker') - .attr('style', 'cursor: pointer;') - .attr('fill', this.symbol_type(this.linker_thumb_shape) == 'fill' ? color_set.color : 'transparent') - .attr('stroke', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? color_set.gray : 'none') - .attr('stroke-width', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? 1 : 0) - .attr('transform', this.link_point_position[this.inverse_link_point_position[pointPosition.children]](rect)) - .on('click', (e) => { - const curr_target_parent = e.currentTarget.parentElement; - click_counter % 2 == 0 ? - add_link_icon('cross', this.inverse_link_point_position[pointPosition.children], 'ts-lnk-icn-' + head_data.id + '-1') : - add_link_icon('minus', this.inverse_link_point_position[pointPosition.children], 'ts-lnk-icn-' + head_data.id + '-1'); - click_counter++; - _class.handleCollapseChildren?.(svgNode, head_data.id, translate_y); - const rect = curr_target_parent.getBoundingClientRect(); - setTimeout(() => { - click_counter % 2 == 0 && this.center_elem(rect); - }, 0); - click_counter % 2 == 0 ? this.emitEvent('chart_head.expanded', { svgNode, head_data, pointPosition }, false) : - this.emitEvent('chart_head.collapsed', { svgNode, head_data, pointPosition }, false); - }); - if (!this.el_has_children(head_data.id, true)) { - click_counter++; - } - add_link_icon(!this.el_has_children(head_data.id, true) ? 'cross' : 'minus', this.inverse_link_point_position[pointPosition.children], 'ts-lnk-icn-' + head_data.id + '-1'); - if (doubleVerticalPoints) { - const translate_y_2 = translate_y == 0 ? rect.attr('height') : 0; - let click_counter_2 = 0; - all_group?.append('path') - .attr('d', Symbol$1().type(d3[this.linker_thumb_shape]).size(ts_linker)) - .attr('x', parseInt(rect.attr('width')) / 2) - .attr('y', rect.attr('height')) - .attr('class', 'ts-linker') - .attr('style', 'cursor: pointer') - .attr('fill', this.symbol_type(this.linker_thumb_shape) == 'fill' ? color_set.color : 'transparent') - .attr('stroke', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? color_set.gray : 'none') - .attr('stroke-width', this.symbol_type(this.linker_thumb_shape) == 'stroke' ? 1 : 0) - .attr('transform', this.link_point_position[this.inverse_link_point_position[pointPosition.parent]](rect)) - .on('click', (e) => { - const curr_target_parent = e.currentTarget.parentElement; - click_counter_2 % 2 == 0 ? - add_link_icon('cross', this.inverse_link_point_position[pointPosition.parent], 'ts-lnk-icn-' + head_data.id + '-2') : - add_link_icon('minus', this.inverse_link_point_position[pointPosition.parent], 'ts-lnk-icn-' + head_data.id + '-2'); - _class.handleCollapseChildren?.(svgNode, head_data.id, translate_y_2); - const rect = curr_target_parent.getBoundingClientRect(); - click_counter_2++; - setTimeout(() => { - click_counter_2 % 2 == 0 && this.center_elem(rect); - }, 0); - click_counter_2 % 2 == 0 ? this.emitEvent('chart_head.expanded', { svgNode, head_data, pointPosition }, false) : - this.emitEvent('chart_head.collapsed', { svgNode, head_data, pointPosition }, false); - }); - add_link_icon('minus', this.inverse_link_point_position[pointPosition.parent], 'ts-lnk-icn-' + head_data.id + '-2'); - } - } - } - get_tree_items_hierarchy(parentId, parent_index, action) { - const hierarchies = this.tree_data.filter(data => data.parentId == parentId); - const set_child_level = parent_index == undefined ? 1 : parent_index + 1; - const level_children_arr = []; - hierarchies.forEach(head => { - level_children_arr.push(head); - if (action != undefined && (action.item_id != undefined && action.item_id == head.id || action.level != undefined && action.level == set_child_level)) { - action.callbackFn(head, set_child_level); - } - const has_childs = this.tree_data.filter(data => data.parentId == head.id).length > 0; - if (has_childs) { - this.get_tree_items_hierarchy(head.id, set_child_level, action); - } - }); - const current_level = this.itemHierarchy.findIndex(item => item.level == set_child_level); - if (current_level == -1) { - this.itemHierarchy.push({ level: set_child_level, items: level_children_arr }); - } - else { - this.itemHierarchy[current_level].items = level_children_arr; - } - return this.itemHierarchy; - } - get_second_ancestor_item(child_id) { - const child_data = this.tree_data.find(data => data.id == child_id); - const get_parent = this.tree_data.find(data => data.id == child_data?.parentId); - const grand_parent_is_root = this.tree_data.find(data => data.id == get_parent?.parentId)?.parentId == undefined; - let second_ancestor = undefined; - if (get_parent?.parentId == undefined) { - second_ancestor = child_data; - } - else if (!grand_parent_is_root) { - second_ancestor = this.get_second_ancestor_item(get_parent?.id); - } - else { - second_ancestor = get_parent; - } - return second_ancestor; - } - getElemRelPosInTree(el_id) { - const find_el = this.tree_data.find(data => data.id == el_id); - const find_all_siblings = this.tree_data.filter(data => data.parentId == find_el.parentId); - return find_all_siblings.findIndex(data => data.id == find_el.id) + 1; - } - set_tmp_tree_data(el_id) { - if (this.display_tree_in_step || (this.tree_data.length > 500 && this.auto_display_tree_in_step)) { - const id = el_id == undefined ? '1' : el_id; - this.tmp_tree_data = this.get_children_down_to_level(id, this.tree_level_step); - if (el_id == undefined) { - this.tmp_tree_data = [this.tree_data[0], ...this.tmp_tree_data]; - } - } - else { - this.tmp_tree_data = this.tree_data; - } - } - getIsParentRootEl(parent_id) { - if (parent_id == undefined) - return false; - return this.tree_data.find(data => data.id == parent_id)?.parentId == undefined; - } - getIsElRootTreeChild(id) { - if (id == undefined) - return false; - return this.tree_data.find(data => data.id == id)?.parentId == undefined; - } - getRootTreeEl() { - return this.tree_data.find(data => data.parentId == undefined); - } - el_has_children(el_id, check_tmp_data = false) { - if (check_tmp_data) { - return this.tmp_tree_data.filter(data => data.parentId == el_id).length > 0; - } - return this.tree_data.filter(data => data.parentId == el_id).length > 0; - } - get_children_down_to_level(el_id, level_limit, current_level = 1) { - let cur_level = current_level; - let children = []; - const cur_children = this.tree_data.filter(tree => tree.parentId == el_id); - let c_levl = []; - if (cur_level < level_limit && cur_children.length > 0) { - c_levl = cur_children.map(child => this.get_children_down_to_level(child.id, level_limit, cur_level + 1)).flat(); - } - children = [...cur_children, ...c_levl]; - return children; - } - data_to_d3_format(parentId, include_stat) { - let parent_el = this.tree_data?.find(data => (parentId == undefined ? data.parentId : data.id) == parentId); - parent_el = { ...parent_el, children: [] }; - const children = this.tree_data.filter(data => data.parentId == parent_el.id); - children.forEach(child => { - include_stat && (child.stat = 1); - if (this.el_has_children(child.id)) { - parent_el.children.push(this.data_to_d3_format(child.id, include_stat)); - } - else { - parent_el.children.push(child); - } - }); - return parent_el; - } -} - -class ColorHandler { - tree_data = []; - color_range = ['#b31212', '#b34712', '#b38d12', '#9ab312', '#2fb312', '#12b362', '#12b3a8', '#1278b3', '#1712b3', '#5712b3', '#8d12b3', '#b3128d', '#b3124a', '#b31212']; - interpolated_color = (t) => ''; - pallet = { - h: 10, - s: 0.5, - l: 0.5, - darker: 0.8, - brighter: 0.8, - bright100: 0.5, - dark100: 0.5, - gray: 50, - gray85: 85 - }; - constructor({ tree_data, color_range, pallet }) { - this.tree_data = tree_data; - (color_range !== undefined && color_range.length > 0) && (this.color_range = color_range); - pallet != undefined && (this.pallet = pallet); - this.interpolateColor(); - } - getColor(index) { - const color_percentage = this.get_color_percentage(index); - const color$1 = this.interpolated_color(color_percentage); - const conv_color = color(color$1); - const to_hsl = hsl$2(conv_color); - to_hsl.h += this.pallet.h; - to_hsl.s += this.pallet.s; - const hsl_bright = hsl$2(conv_color); - hsl_bright.l += this.pallet.l; - const opac_gray80 = gray(this.pallet.gray85); - const colorSet = { - color: color$1, - darker: conv_color?.darker(this.pallet.darker).toString(), - brighter: conv_color?.brighter(this.pallet.brighter).toString(), - bright100: to_hsl.brighter(this.pallet.bright100).toString(), - dark100: to_hsl.darker(this.pallet.dark100).toString(), - bright500: hsl_bright.toString(), - gray: gray(this.pallet.gray).toString(), - gray85: opac_gray80.toString(), - }; - return colorSet; - } - get_app_gray() { - return gray(50).toString(); - } - get_color_percentage(index) { - return (index / this.tree_data.length); - } - interpolateColor() { - this.interpolated_color = rgbBasis(this.color_range); - } -} - -class DefaultTree { - chartHelper; - tree_map_arr = []; - content_wrapper = null; - tsInnerContainer = null; - current_scale = 1; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - this.chartHelper.handleCollapseChildren = this.handleCollapseChildren.bind(this); - setTimeout(() => { - this.organizeUI(); - }, 0); - } - map_children_data_to_head(parentSVGEl, parentId) { - const hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - const childElContainer = this.chartHelper.createDynamicEl(); - hierarchies.forEach(head => { - const head_UI_wrapper = this.chartHelper.createDynamicEl(); - const head_UI = this.chartHelper.makeHead(head); - head_UI_wrapper.appendChild(head_UI?.node()); - const root_el_cls = parentId == undefined ? " st-root-el" : ""; - head_UI_wrapper.className = "ts-head-node-wrapper ts-w-id-" + head.id + root_el_cls; - childElContainer.appendChild(head_UI_wrapper); - parentSVGEl != undefined && this.tree_map_arr.push({ id: head.id, svgNode: parentSVGEl, targetChild: head_UI?.node(), parentId: parentId }); - if (this.chartHelper?.el_has_children(head.id)) { - head_UI_wrapper.append(this.map_children_data_to_head(head_UI, head.id)); - } - }); - childElContainer.className = "ts-head-wrapper child-container"; - if (parentSVGEl === undefined) - this.content_wrapper?.appendChild(childElContainer); - return childElContainer; - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.content_wrapper.className = "ts-head-wrapper"; - this.chartHelper.set_tmp_tree_data(); - this.map_children_data_to_head(); - this.tsInnerContainer.appendChild(this.content_wrapper); - this.drawBranchLinkFresh(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "top"); - }, 0); - } - drawBranchLinkFresh() { - this.chartHelper.rootWrapperContainer?.querySelectorAll('.linker-line').forEach(el => el.remove()); - this.tree_map_arr.forEach(branch => this.drawBranchLink(branch.id, branch.svgNode, branch.targetChild, branch.parentId)); - } - drawBranchLink(id, svgNode, targetChild, parentId) { - const isParentChildrenHidden = this.tsInnerContainer?.querySelector('.ts-w-id-' + parentId)?.getAttribute('data-ts-head-children-hidden'); - if (isParentChildrenHidden === 'true') - return; - const color_set = this.chartHelper?.color_handler.getColor(id); - const elementBounds = targetChild.getBoundingClientRect(); - const svgSourceNodeBounds = svgNode.node().getBoundingClientRect(); - const st_linker_radius = Math.sqrt(Math.PI * this.chartHelper.head_linker_thumb_circle_radius * this.chartHelper.head_linker_thumb_circle_radius) / 2; - const lineStartX = (svgSourceNodeBounds.width / this.current_scale) / 2; - const lineStartY = (svgSourceNodeBounds.height + st_linker_radius) / this.current_scale; - const lineEndX = (elementBounds.x / this.current_scale - svgSourceNodeBounds.x / this.current_scale) + (targetChild.clientWidth / 2); - const lineEndY = (elementBounds.top / this.current_scale) - (svgSourceNodeBounds.top / this.current_scale); - const curveFactory = this.chartHelper?.tree_link_type != undefined ? this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type] : bumpY; - const link$1 = link(curveFactory); - const data = [ - { source: [lineStartX, lineStartY], target: [lineEndX, lineEndY] }, - ]; - svgNode?.append('path') - .data(data) - .attr('d', link$1) - .attr('fill', 'none') - .attr('class', 'linker-line') - .attr('stroke', color_set?.gray) - .attr('stroke-width', 1); - } - handleCollapseChildren(svgNode, id, clicked_pos) { - const nodeAncestor = svgNode.node()?.parentElement; - const nodeChildrenHidden = nodeAncestor?.getAttribute('data-ts-head-children-hidden'); - if (!nodeAncestor?.hasAttribute('data-ts-head-children-hidden') && nodeAncestor.querySelector('.child-container').innerHTML == '') { - this.chartHelper.set_tmp_tree_data(id); - nodeAncestor.querySelector('.child-container').remove(); - const remade_children_obj = this.map_children_data_to_head(svgNode, id); - nodeAncestor?.appendChild(remade_children_obj); - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else if (nodeChildrenHidden == 'true') { - const childrenContainer = nodeAncestor?.querySelector('.child-container'); - childrenContainer.style.visibility = ''; - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'false'); - setTimeout(() => { - this.drawBranchLinkFresh(); - }, 0); - } - else { - const childrenContainer = nodeAncestor?.querySelector('.child-container'); - childrenContainer.style.visibility = 'hidden'; - nodeAncestor?.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'true'); - } - } - removeNodeRecursiveFromTreeMap(node_id) { - const find_node_children = this.tree_map_arr.filter(tree => tree.parentId == node_id); - find_node_children.forEach(child => { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == child.id), 1); - this.tree_map_arr.filter(tree => tree.id == child.id).length > 0 && this.removeNodeRecursiveFromTreeMap(child.id); - }); - } -} - -class VerticalSpiderWalkTree { - content_wrapper = null; - head_child_wrapper_center = null; - head_child_wrapper_1 = null; - head_child_wrapper_2 = null; - tsInnerContainer = null; - chartHelper; - tree_map_arr = []; - current_scale = 1; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - this.chartHelper.handleCollapseChildren = this.handleCollapseChildren.bind(this); - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_1 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_2 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center.className = "ts-vs-wrapper"; - this.head_child_wrapper_1.className = "ts-vs-wrapper"; - this.head_child_wrapper_2.className = "ts-vs-wrapper"; - this.content_wrapper.appendChild(this.head_child_wrapper_1); - this.content_wrapper.appendChild(this.head_child_wrapper_center); - this.content_wrapper.appendChild(this.head_child_wrapper_2); - this.content_wrapper.className = "ts-v-spider-head-wrapper"; - this.chartHelper.set_tmp_tree_data(); - this.map_children_data_to_head(); - this.tsInnerContainer.appendChild(this.content_wrapper); - this.drawBranchLinkFresh(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "center"); - }, 0); - } - map_children_data_to_head(parentSVGEl, parentId, provided_hierarchy) { - let hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - if (!provided_hierarchy) { - hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - } - else { - hierarchies = provided_hierarchy; - } - const childElContainer = this.chartHelper.createDynamicEl(); - const isElParentRootEl = this.chartHelper.getIsParentRootEl(parentId) && parentId != undefined; - hierarchies.forEach(head => { - const head_UI_wrapper = this.chartHelper.createDynamicEl(); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(head.id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - const head_UI = this.chartHelper.makeHead(head, parentId == undefined, { parent: "bottom", children: second_ancestor_rel_pos % 2 == 0 ? "bottom" : 'top' }); - head_UI_wrapper.appendChild(head_UI?.node()); - const root_el_cls = parentId == undefined ? " st-root-el" : ""; - head_UI_wrapper.className = "ts-head-node-wrapper ts-w-id-" + head.id + root_el_cls; - second_ancestor_rel_pos % 2 == 0 && head_UI_wrapper.classList.add("top"); - if (parentSVGEl === undefined) { - this.head_child_wrapper_center?.appendChild(head_UI_wrapper); - } - else if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - this.head_child_wrapper_1?.appendChild(head_UI_wrapper); - } - else { - this.head_child_wrapper_2?.appendChild(head_UI_wrapper); - } - } - else { - childElContainer.appendChild(head_UI_wrapper); - second_ancestor_rel_pos % 2 == 0 && childElContainer.classList.add("top"); - } - parentSVGEl != undefined && this.tree_map_arr.push({ - id: head.id, - svgNode: parentSVGEl, - targetChild: head_UI?.node(), - parentId: parentId, - lineOrigin: second_ancestor_rel_pos % 2 == 0 ? "top" : "bottom" - }); - if (this.chartHelper?.el_has_children(head.id)) { - if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - head_UI_wrapper.prepend(this.map_children_data_to_head(head_UI, head.id)); - } - else { - head_UI_wrapper.append(this.map_children_data_to_head(head_UI, head.id)); - } - } - else { - const map_children = this.map_children_data_to_head(head_UI, head.id); - second_ancestor_rel_pos % 2 == 0 ? head_UI_wrapper.prepend(map_children) : head_UI_wrapper.appendChild(map_children); - } - } - }); - childElContainer.classList.add("child-container"); - return childElContainer; - } - drawBranchLinkFresh() { - this.chartHelper.rootWrapperContainer?.querySelectorAll('.linker-line').forEach(el => el.remove()); - this.tree_map_arr.forEach(branch => this.drawBranchLink(branch.id, branch.svgNode, branch.targetChild, branch.parentId, branch.lineOrigin)); - } - drawBranchLink(id, svgNode, targetChild, parentId, lineOrigin = "bottom") { - const isParentChildrenHidden = this.tsInnerContainer?.querySelector('.ts-w-id-' + parentId)?.getAttribute('data-ts-head-children-hidden'); - const isElParentRootEl = this.chartHelper.getIsParentRootEl(parentId); - if (isParentChildrenHidden === 'true' && !isElParentRootEl) - return; - const color_set = this.chartHelper?.color_handler.getColor(id); - const elementBounds = targetChild.getBoundingClientRect(); - const svgSourceNodeBounds = svgNode.node().getBoundingClientRect(); - const lineStartX = (svgSourceNodeBounds.width / this.current_scale) / 2; - const lineStartY = lineOrigin == "top" ? 0 : svgSourceNodeBounds.height / this.current_scale; - const lineEndX = (elementBounds.x / this.current_scale - svgSourceNodeBounds.x / this.current_scale) + (targetChild.clientWidth / 2); - const lineEndY = lineOrigin == "top" ? ((elementBounds.top + elementBounds.height) / this.current_scale) - (svgSourceNodeBounds.top / this.current_scale) : (elementBounds.top / this.current_scale) - (svgSourceNodeBounds.top / this.current_scale); - const curveFactory = this.chartHelper?.tree_link_type != undefined ? this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type] : bumpY; - const link$1 = link(curveFactory); - const data = [ - { source: [lineStartX, lineStartY], target: [lineEndX, lineEndY] }, - ]; - svgNode?.append('path') - .data(data) - .attr('d', link$1) - .attr('fill', 'none') - .attr('class', 'linker-line linker-' + lineOrigin) - .attr('stroke-width', 1) - .attr('stroke', color_set?.gray) - .attr('style', 'z-index: -1'); - } - handleCollapseChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const isRootTreeEl = this.chartHelper.getIsElRootTreeChild(id); - const nodeChildrenHidden = nodeParent?.getAttribute('data-ts-head-children-hidden'); - const childrenContainer = nodeParent?.querySelector('.child-container'); - if (isRootTreeEl) { - return this.handleCollapseRootElChildren(svgNode, id, clicked_pos); - } - if (!nodeParent?.hasAttribute('data-ts-head-children-hidden') && nodeParent.querySelector('.child-container').innerHTML == '') { - this.chartHelper.set_tmp_tree_data(id); - nodeParent.querySelector('.child-container').remove(); - const remade_children_obj = this.map_children_data_to_head(svgNode, id); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - if (second_ancestor_rel_pos % 2 == 0) { - nodeParent?.prepend(remade_children_obj); - } - else { - nodeParent?.appendChild(remade_children_obj); - } - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else if (nodeChildrenHidden == 'true') { - childrenContainer.style.visibility = 'visible'; - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else { - childrenContainer.style.visibility = 'hidden'; - nodeParent?.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent?.setAttribute('data-ts-head-children-hidden', 'true'); - } - } - removeNodeRecursiveFromTreeMap(node_id, inclusive) { - const find_node_children = this.tree_map_arr.filter(tree => tree.parentId == node_id); - find_node_children.forEach(child => { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == child.id), 1); - this.tree_map_arr.filter(tree => tree.id == child.id).length > 0 && this.removeNodeRecursiveFromTreeMap(child.id); - }); - if (inclusive) { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == node_id), 1); - } - } - handleCollapseRootElChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const nodeTopChildrenHidden = nodeParent?.getAttribute('data-ts-top-head-children-hidden'); - const nodeBottomChildrenHidden = nodeParent?.getAttribute('data-ts-bottom-head-children-hidden'); - if (clicked_pos == 0) { - this.chartHelper.tree_data.filter(data => data.parentId == id && this.chartHelper.getElemRelPosInTree(data.id) % 2 == 0); - } - else { - this.chartHelper.tree_data.filter(data => data.parentId == id && this.chartHelper.getElemRelPosInTree(data.id) % 2 != 0); - } - if (((!nodeTopChildrenHidden || nodeTopChildrenHidden == "false") && clicked_pos == 0) || ((!nodeBottomChildrenHidden || nodeBottomChildrenHidden == "false") && clicked_pos != 0)) { - const section = clicked_pos == 0 ? nodeParent.parentElement.nextElementSibling : nodeParent.parentElement.previousElementSibling; - section.style.visibility = 'hidden'; - nodeParent.querySelector('svg').querySelectorAll('.linker-' + (clicked_pos == 0 ? 'bottom' : 'top')).forEach((node) => node.remove()); - clicked_pos == 0 ? nodeParent?.setAttribute('data-ts-top-head-children-hidden', 'true') : - nodeParent?.setAttribute('data-ts-bottom-head-children-hidden', 'true'); - } - else { - const section = clicked_pos == 0 ? nodeParent.parentElement.nextElementSibling : nodeParent.parentElement.previousElementSibling; - section.style.visibility = ''; - setTimeout(() => { - this.drawBranchLinkFresh(); - const inverse_link_hidden = (clicked_pos == 0 ? nodeParent?.getAttribute('data-ts-bottom-head-children-hidden') : - nodeParent?.getAttribute('data-ts-top-head-children-hidden')) == 'true'; - if (inverse_link_hidden) { - nodeParent.querySelectorAll('.linker-' + (clicked_pos == 0 ? 'top' : 'bottom')).forEach((node) => node.remove()); - } - }, 0); - clicked_pos == 0 ? nodeParent?.setAttribute('data-ts-top-head-children-hidden', 'false') : - nodeParent?.setAttribute('data-ts-bottom-head-children-hidden', 'false'); - } - } -} - -class HorizontalTreeSpider { - chartHelper; - tree_map_arr = []; - content_wrapper = null; - tsInnerContainer = null; - current_scale = 1; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - this.chartHelper.handleCollapseChildren = this.handleCollapseChildren.bind(this); - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.content_wrapper.className = "ts-head-wrapper"; - this.chartHelper.set_tmp_tree_data(); - this.map_children_data_to_head(); - this.tsInnerContainer.appendChild(this.content_wrapper); - this.drawBranchLinkFresh(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "left"); - }, 0); - } - map_children_data_to_head(parentSVGEl, parentId) { - const hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - const childElContainer = this.chartHelper.createDynamicEl(); - hierarchies.forEach(head => { - const head_UI_wrapper = this.chartHelper.createDynamicEl(); - const head_UI_inner = this.chartHelper.createDynamicEl(); - const head_UI = this.chartHelper.makeHead(head, false, { parent: "right", children: "left" }); - head_UI_inner.append(head_UI?.node()); - head_UI_wrapper.appendChild(head_UI_inner); - const root_el_cls = parentId == undefined ? " st-root-el" : ""; - head_UI_wrapper.className = "ts-head-node-wrapper st-single-h ts-w-id-" + head.id + root_el_cls; - childElContainer.appendChild(head_UI_wrapper); - parentSVGEl != undefined && this.tree_map_arr.push({ id: head.id, svgNode: parentSVGEl, targetChild: head_UI?.node(), parentId: parentId }); - if (this.chartHelper?.el_has_children(head.id)) { - head_UI_wrapper.append(this.map_children_data_to_head(head_UI, head.id)); - } - }); - childElContainer.className = "ts-head-wrapper st-single-h-child-container"; - if (parentSVGEl === undefined) - this.content_wrapper?.appendChild(childElContainer); - return childElContainer; - } - drawBranchLinkFresh() { - this.chartHelper.rootWrapperContainer?.querySelectorAll('.linker-line').forEach(el => el.remove()); - this.tree_map_arr.forEach(branch => this.drawBranchLink(branch.id, branch.svgNode, branch.targetChild, branch.parentId)); - } - drawBranchLink(id, svgNode, targetChild, parentId) { - const isParentChildrenHidden = this.tsInnerContainer?.querySelector('.ts-w-id-' + parentId)?.getAttribute('data-ts-head-children-hidden'); - if (isParentChildrenHidden === 'true') - return; - const color_set = this.chartHelper?.color_handler.getColor(id); - const elementBounds = targetChild.getBoundingClientRect(); - const svgSourceNodeBounds = svgNode.node().getBoundingClientRect(); - const lineStartX = (svgSourceNodeBounds.width / this.current_scale); - const lineStartY = (svgSourceNodeBounds.height / this.current_scale) / 2; - const lineEndX = ((elementBounds.x) / this.current_scale) - ((svgSourceNodeBounds.x) / this.current_scale) + 0; - const lineEndY = (((elementBounds.top + (elementBounds.height / 2)) / this.current_scale) - ((svgSourceNodeBounds.top) / this.current_scale)); - const curveFactory = this.chartHelper?.tree_link_type != undefined ? this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type] : bumpX; - const link$1 = link(curveFactory); - const data = [ - { source: [lineStartX, lineStartY], target: [lineEndX, lineEndY] }, - ]; - svgNode?.append('path') - .data(data) - .attr('d', link$1) - .attr('fill', 'none') - .attr('class', 'linker-line') - .attr('stroke-width', 1) - .attr('stroke', color_set?.gray) - .attr('style', 'z-index: -1'); - } - handleCollapseChildren(svgNode, id, clicked_pos) { - const nodeAncestor = svgNode.node()?.parentElement.parentElement; - const nodeChildrenHidden = nodeAncestor?.getAttribute('data-ts-head-children-hidden'); - const childrenContainer = nodeAncestor?.querySelector("[class*='child-container']"); - if (!nodeAncestor?.hasAttribute('data-ts-head-children-hidden') && nodeAncestor.querySelector('.st-single-h-child-container').innerHTML == '') { - this.chartHelper.set_tmp_tree_data(id); - nodeAncestor.querySelector('.st-single-h-child-container').remove(); - const remade_children_obj = this.map_children_data_to_head(svgNode, id); - nodeAncestor?.appendChild(remade_children_obj); - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else if (nodeChildrenHidden == 'true') { - childrenContainer.style.visibility = ''; - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else { - childrenContainer.style.visibility = 'hidden'; - nodeAncestor?.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeAncestor?.setAttribute('data-ts-head-children-hidden', 'true'); - } - } - removeNodeRecursiveFromTreeMap(node_id) { - const find_node_children = this.tree_map_arr.filter(tree => tree.parentId == node_id); - find_node_children.forEach(child => { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == child.id), 1); - this.tree_map_arr.filter(tree => tree.id == child.id).length > 0 && this.removeNodeRecursiveFromTreeMap(child.id); - }); - } -} - -class HorizontalSpiderWalkTree { - content_wrapper = null; - head_child_wrapper_center = null; - head_child_wrapper_1 = null; - head_child_wrapper_2 = null; - tsInnerContainer = null; - chartHelper; - tree_map_arr = []; - current_scale = 1; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - this.chartHelper.handleCollapseChildren = this.handleCollapseChildren.bind(this); - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_1 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_2 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center.className = "st-child-wrapper"; - this.head_child_wrapper_1.className = "st-child-wrapper"; - this.head_child_wrapper_2.className = "st-child-wrapper"; - this.content_wrapper.className = "st-hsw-content-wrapper"; - this.content_wrapper.appendChild(this.head_child_wrapper_1); - this.content_wrapper.appendChild(this.head_child_wrapper_center); - this.content_wrapper.appendChild(this.head_child_wrapper_2); - this.tsInnerContainer?.append(this.content_wrapper); - this.chartHelper.set_tmp_tree_data(); - this.map_children_data_to_head(); - this.drawBranchLinkFresh(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "center"); - }, 0); - } - map_children_data_to_head(parentSVGEl, parentId, provided_hierarchy) { - let hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - if (!provided_hierarchy) { - hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - } - else { - hierarchies = provided_hierarchy; - } - const childElContainer = this.chartHelper.createDynamicEl(); - const isElParentRootEl = this.chartHelper.getIsParentRootEl(parentId) && parentId != undefined; - hierarchies.forEach(head => { - const head_UI_wrapper = this.chartHelper.createDynamicEl(); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(head.id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - const head_UI = this.chartHelper.makeHead(head, parentId == undefined, { parent: "right", children: second_ancestor_rel_pos % 2 == 0 ? "right" : 'left' }); - head_UI_wrapper.appendChild(head_UI?.node()); - const root_el_cls = parentId == undefined ? " st-root-el" : ""; - head_UI_wrapper.className = "ts-head-node-wrapper ts-w-id-" + head.id + root_el_cls; - second_ancestor_rel_pos % 2 == 0 && head_UI_wrapper.classList.add("top"); - if (parentSVGEl === undefined) { - this.head_child_wrapper_center?.appendChild(head_UI_wrapper); - } - else if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - this.head_child_wrapper_1?.appendChild(head_UI_wrapper); - } - else { - this.head_child_wrapper_2?.appendChild(head_UI_wrapper); - } - } - else { - childElContainer.appendChild(head_UI_wrapper); - second_ancestor_rel_pos % 2 == 0 && childElContainer.classList.add("top"); - } - parentSVGEl != undefined && this.tree_map_arr.push({ - id: head.id, - svgNode: parentSVGEl, - targetChild: head_UI?.node(), - parentId: parentId, - lineOrigin: second_ancestor_rel_pos % 2 == 0 ? "right" : "left" - }); - if (this.chartHelper?.el_has_children(head.id)) { - if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - head_UI_wrapper.prepend(this.map_children_data_to_head(head_UI, head.id)); - } - else { - head_UI_wrapper.append(this.map_children_data_to_head(head_UI, head.id)); - } - } - else { - const map_children = this.map_children_data_to_head(head_UI, head.id); - second_ancestor_rel_pos % 2 == 0 ? head_UI_wrapper.prepend(map_children) : head_UI_wrapper.appendChild(map_children); - } - } - }); - childElContainer.classList.add("child-container"); - return childElContainer; - } - drawBranchLinkFresh() { - this.chartHelper.rootWrapperContainer?.querySelectorAll('.linker-line').forEach(el => el.remove()); - this.tree_map_arr.forEach(branch => this.drawBranchLink(branch.id, branch.svgNode, branch.targetChild, branch.parentId, branch.lineOrigin)); - } - drawBranchLink(id, svgNode, targetChild, parentId, lineOrigin = "bottom") { - const isParentChildrenHidden = this.tsInnerContainer?.querySelector('.ts-w-id-' + parentId)?.getAttribute('data-ts-head-children-hidden'); - if (isParentChildrenHidden === 'true') - return; - const color_set = this.chartHelper?.color_handler.getColor(id); - const elementBounds = targetChild.getBoundingClientRect(); - const svgSourceNodeBounds = svgNode.node().getBoundingClientRect(); - const st_linker_radius = Math.sqrt(Math.PI * this.chartHelper.head_linker_thumb_circle_radius * this.chartHelper.head_linker_thumb_circle_radius) / 2; - const lineStartX = lineOrigin == "right" ? (0 - st_linker_radius) : ((svgSourceNodeBounds.width + st_linker_radius) / this.current_scale); - const lineStartY = (svgSourceNodeBounds.height / this.current_scale) / 2; - const lineEndX = ((elementBounds.x + (lineOrigin == "right" ? elementBounds.width : 0)) / this.current_scale) - ((svgSourceNodeBounds.x) / this.current_scale) + 0; - const lineEndY = (((elementBounds.top + (elementBounds.height / 2)) / this.current_scale) - ((svgSourceNodeBounds.top) / this.current_scale)); - const curveFactory = this.chartHelper?.tree_link_type != undefined ? this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type] : bumpX; - const link$1 = link(curveFactory); - const data = [ - { source: [lineStartX, lineStartY], target: [lineEndX, lineEndY] }, - ]; - svgNode?.append('path') - .data(data) - .attr('d', link$1) - .attr('fill', 'none') - .attr('class', 'linker-line linker-' + lineOrigin) - .attr('stroke-width', 1) - .attr('stroke', color_set?.gray) - .attr('style', 'z-index: -1'); - } - handleCollapseChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const isRootTreeEl = this.chartHelper.getIsElRootTreeChild(id); - const nodeChildrenHidden = nodeParent?.getAttribute('data-ts-head-children-hidden'); - if (isRootTreeEl) { - return this.handleCollapseRootElChildren(svgNode, id, clicked_pos); - } - if (!nodeParent?.hasAttribute('data-ts-head-children-hidden') && nodeParent.querySelector('.child-container').innerHTML == '') { - this.chartHelper.set_tmp_tree_data(id); - nodeParent.querySelector('.child-container').remove(); - const remade_children_obj = this.map_children_data_to_head(svgNode, id); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - if (second_ancestor_rel_pos % 2 == 0) { - nodeParent?.prepend(remade_children_obj); - } - else { - nodeParent?.appendChild(remade_children_obj); - } - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - setTimeout(() => { - this.drawBranchLinkFresh(); - }, 0); - } - else if (nodeChildrenHidden == 'true') { - nodeParent.querySelector('.child-container').style.visibility = ''; - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else { - nodeParent?.setAttribute('data-ts-head-children-hidden', 'true'); - nodeParent?.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent.querySelector('.child-container').style.visibility = 'hidden'; - } - } - removeNodeRecursiveFromTreeMap(node_id, inclusive) { - const find_node_children = this.tree_map_arr.filter(tree => tree.parentId == node_id); - find_node_children.forEach(child => { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == child.id), 1); - this.tree_map_arr.filter(tree => tree.id == child.id).length > 0 && this.removeNodeRecursiveFromTreeMap(child.id); - }); - if (inclusive) { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == node_id), 1); - } - } - handleCollapseRootElChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const nodeTopChildrenHidden = nodeParent?.getAttribute('data-ts-top-head-children-hidden'); - const nodeBottomChildrenHidden = nodeParent?.getAttribute('data-ts-bottom-head-children-hidden'); - if (clicked_pos == 0) { - this.chartHelper.tree_data.filter(data => data.parentId == id && this.chartHelper.getElemRelPosInTree(data.id) % 2 == 0); - } - else { - this.chartHelper.tree_data.filter(data => data.parentId == id && this.chartHelper.getElemRelPosInTree(data.id) % 2 != 0); - } - if (((!nodeTopChildrenHidden || nodeTopChildrenHidden == "false") && clicked_pos == 0) || ((!nodeBottomChildrenHidden || nodeBottomChildrenHidden == "false") && clicked_pos != 0)) { - const section = clicked_pos == 0 ? nodeParent.parentElement.previousElementSibling : nodeParent.parentElement.nextElementSibling; - section.style.visibility = 'hidden'; - section.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent.querySelectorAll('.linker-' + (clicked_pos == 0 ? 'right' : 'left')).forEach((node) => node.remove()); - clicked_pos == 0 ? nodeParent?.setAttribute('data-ts-top-head-children-hidden', 'true') : - nodeParent?.setAttribute('data-ts-bottom-head-children-hidden', 'true'); - } - else { - const section = clicked_pos == 0 ? nodeParent.parentElement.previousElementSibling : nodeParent.parentElement.nextElementSibling; - section.style.visibility = 'visible'; - setTimeout(() => { - this.drawBranchLinkFresh(); - const inverse_link_hidden = (clicked_pos == 0 ? nodeParent?.getAttribute('data-ts-bottom-head-children-hidden') : - nodeParent?.getAttribute('data-ts-top-head-children-hidden')) == 'true'; - if (inverse_link_hidden) { - nodeParent.querySelectorAll('.linker-' + (clicked_pos == 0 ? 'left' : 'right')).forEach((node) => node.remove()); - } - }, 0); - clicked_pos == 0 ? nodeParent?.setAttribute('data-ts-top-head-children-hidden', 'false') : - nodeParent?.setAttribute('data-ts-bottom-head-children-hidden', 'false'); - } - } -} - -class CellarTreeSpider { - content_wrapper = null; - head_child_wrapper_center = null; - head_child_wrapper_1 = null; - head_child_wrapper_2 = null; - tsInnerContainer = null; - chartHelper; - tree_map_arr = []; - current_scale = 1; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - this.chartHelper.handleCollapseChildren = this.handleCollapseChildren.bind(this); - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_1 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_2 = this.chartHelper.createDynamicEl(); - this.head_child_wrapper_center.className = "st-child-wrapper"; - this.head_child_wrapper_1.className = "st-child-wrapper"; - this.head_child_wrapper_2.className = "st-child-wrapper"; - this.content_wrapper.className = "st-cs-content-wrapper"; - this.content_wrapper.appendChild(this.head_child_wrapper_1); - this.content_wrapper.appendChild(this.head_child_wrapper_2); - this.content_wrapper.appendChild(this.head_child_wrapper_center); - this.tsInnerContainer?.append(this.content_wrapper); - this.chartHelper.set_tmp_tree_data(); - this.map_children_data_to_head(); - this.drawBranchLinkFresh(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "bottom"); - }, 0); - } - map_children_data_to_head(parentSVGEl, parentId, provided_hierarchy) { - let hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - if (!provided_hierarchy) { - hierarchies = this.chartHelper.tmp_tree_data.filter(data => data.parentId == parentId); - } - else { - hierarchies = provided_hierarchy; - } - const childElContainer = this.chartHelper.createDynamicEl(); - const isElParentRootEl = this.chartHelper.getIsParentRootEl(parentId) && parentId != undefined; - hierarchies.forEach(head => { - const head_UI_wrapper = this.chartHelper.createDynamicEl(); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(head.id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - const head_UI = this.chartHelper.makeHead(head, false, { parent: "right", children: parentId == undefined ? "bottom" : second_ancestor_rel_pos % 2 == 0 ? "right" : 'left' }); - head_UI_wrapper.appendChild(head_UI?.node()); - const root_el_cls = parentId == undefined ? " st-root-el" : ""; - head_UI_wrapper.className = "ts-head-node-wrapper ts-w-id-" + head.id + root_el_cls; - second_ancestor_rel_pos % 2 == 0 && head_UI_wrapper.classList.add("top"); - if (parentSVGEl === undefined) { - this.head_child_wrapper_center?.appendChild(head_UI_wrapper); - } - else if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - this.head_child_wrapper_1?.appendChild(head_UI_wrapper); - } - else { - this.head_child_wrapper_2?.appendChild(head_UI_wrapper); - } - } - else { - childElContainer.appendChild(head_UI_wrapper); - second_ancestor_rel_pos % 2 == 0 && childElContainer.classList.add("top"); - } - parentSVGEl != undefined && this.tree_map_arr.push({ - id: head.id, - svgNode: parentSVGEl, - targetChild: head_UI?.node(), - parentId: parentId, - lineOrigin: second_ancestor_rel_pos % 2 == 0 ? "right" : "left" - }); - if (this.chartHelper?.el_has_children(head.id)) { - if (isElParentRootEl) { - if (this.chartHelper.getElemRelPosInTree(head.id) % 2 == 0) { // el position relative to root parent is even - head_UI_wrapper.prepend(this.map_children_data_to_head(head_UI, head.id)); - } - else { - head_UI_wrapper.append(this.map_children_data_to_head(head_UI, head.id)); - } - } - else { - const map_children = this.map_children_data_to_head(head_UI, head.id); - second_ancestor_rel_pos % 2 == 0 ? head_UI_wrapper.prepend(map_children) : head_UI_wrapper.appendChild(map_children); - } - } - }); - childElContainer.classList.add("child-container"); - return childElContainer; - } - drawBranchLinkFresh() { - this.chartHelper.rootWrapperContainer?.querySelectorAll('.linker-line').forEach(el => el.remove()); - this.tree_map_arr.forEach(branch => this.drawBranchLink(branch.id, branch.svgNode, branch.targetChild, branch.parentId, branch.lineOrigin)); - } - drawBranchLink(id, svgNode, targetChild, parentId, lineOrigin = "bottom") { - const isParentChildrenHidden = this.tsInnerContainer?.querySelector('.ts-w-id-' + parentId)?.getAttribute('data-ts-head-children-hidden'); - if (isParentChildrenHidden === 'true') - return; - const color_set = this.chartHelper?.color_handler.getColor(id); - const parentIsRoot = this.chartHelper.getIsParentRootEl(parentId); - const elementBounds = targetChild.getBoundingClientRect(); - const svgSourceNodeBounds = svgNode.node().getBoundingClientRect(); - let lineStartX, lineStartY; - if (parentIsRoot) { - lineStartX = (svgSourceNodeBounds.width / this.current_scale) / 2; - lineStartY = 0; - } - else { - lineStartX = lineOrigin == "right" ? 0 : (svgSourceNodeBounds.width / this.current_scale); - lineStartY = (svgSourceNodeBounds.height / this.current_scale) / 2; - } - const lineEndX = ((elementBounds.x + (lineOrigin == "right" ? elementBounds.width : 0)) / this.current_scale) - ((svgSourceNodeBounds.x) / this.current_scale) + 0; - const lineEndY = (((elementBounds.top + (elementBounds.height / 2)) / this.current_scale) - ((svgSourceNodeBounds.top) / this.current_scale)); - const curveFactory = this.chartHelper?.tree_link_type != undefined ? this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type] : bumpX; - const link$1 = link(curveFactory); - const data = [ - { source: [lineStartX, lineStartY], target: [lineEndX, lineEndY] }, - ]; - svgNode?.append('path') - .data(data) - .attr('d', link$1) - .attr('fill', 'none') - .attr('class', 'linker-line') - .attr('stroke-width', 1) - .attr('stroke', color_set?.gray) - .attr('style', 'z-index: -1'); - } - handleCollapseChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const isRootTreeEl = this.chartHelper.getIsElRootTreeChild(id); - const nodeChildrenHidden = nodeParent?.getAttribute('data-ts-head-children-hidden'); - if (isRootTreeEl) { - return this.handleCollapseRootElChildren(svgNode, id, clicked_pos); - } - if (!nodeParent?.hasAttribute('data-ts-head-children-hidden') && nodeParent.querySelector('.child-container').innerHTML == '') { - this.chartHelper.set_tmp_tree_data(id); - nodeParent.querySelector('.child-container').remove(); - const remade_children_obj = this.map_children_data_to_head(svgNode, id); - const get_item_root_item = this.chartHelper.get_second_ancestor_item(id); - let second_ancestor_rel_pos = get_item_root_item == undefined ? 1 : this.chartHelper.getElemRelPosInTree(get_item_root_item?.id); - if (second_ancestor_rel_pos % 2 == 0) { - nodeParent?.prepend(remade_children_obj); - } - else { - nodeParent?.appendChild(remade_children_obj); - } - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else if (nodeChildrenHidden == 'true') { - const childrenContainer = nodeParent?.querySelector('.child-container'); - childrenContainer.style.visibility = ''; - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - this.drawBranchLinkFresh(); - } - else { - const childrenContainer = nodeParent?.querySelector('.child-container'); - childrenContainer.style.visibility = 'hidden'; - nodeParent?.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent?.setAttribute('data-ts-head-children-hidden', 'true'); - } - } - removeNodeRecursiveFromTreeMap(node_id, inclusive) { - const find_node_children = this.tree_map_arr.filter(tree => tree.parentId == node_id); - find_node_children.forEach(child => { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == child.id), 1); - this.tree_map_arr.filter(tree => tree.id == child.id).length > 0 && this.removeNodeRecursiveFromTreeMap(child.id); - }); - if (inclusive) { - this.tree_map_arr.splice(this.tree_map_arr.findIndex(tree => tree.id == node_id), 1); - } - } - handleCollapseRootElChildren(svgNode, id, clicked_pos) { - const nodeParent = svgNode.node()?.parentElement; - const nodeTopChildrenHidden = nodeParent?.getAttribute('data-ts-head-children-hidden'); - if (!nodeTopChildrenHidden || nodeTopChildrenHidden == "false") { - nodeParent.parentElement.previousElementSibling.style.visibility = 'hidden'; - nodeParent.parentElement.previousElementSibling.previousElementSibling.style.visibility = 'hidden'; - nodeParent.parentElement.previousElementSibling.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent.parentElement.previousElementSibling.previousElementSibling.querySelectorAll('.linker-line').forEach((line) => line.remove()); - nodeParent?.setAttribute('data-ts-head-children-hidden', 'true'); - } - else { - nodeParent.parentElement.previousElementSibling.style.visibility = ''; - nodeParent.parentElement.previousElementSibling.previousElementSibling.style.visibility = ''; - nodeParent?.setAttribute('data-ts-head-children-hidden', 'false'); - } - this.drawBranchLinkFresh(); - } -} - -class GoldenRodSpider { - content_wrapper = null; - head_child_wrapper = null; - tsInnerContainer = null; - chartHelper; - current_scale = 1; - nodes_group = undefined; - links_group = undefined; - rotate_deg = 0; - animation_interval = undefined; - start_animation = false; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper.className = "st-child-wrapper"; - this.content_wrapper.className = "st-grs-content-wrapper"; - this.content_wrapper.appendChild(this.head_child_wrapper); - this.tsInnerContainer?.append(this.content_wrapper); - this.map_children_data_to_head(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .root-svg-el > g`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "center"); - }, 0); - } - animate_chat(once = false, anti = false) { - if (once) { - this.rotate_deg += this.chartHelper?.animation_rotation_interval * (anti ? -1 : 1); - this.nodes_group.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - return this.links_group.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - } - this.start_animation = !this.start_animation; - if (this.start_animation) { - this.animation_interval = setInterval(() => { - this.rotate_deg += this.chartHelper?.animation_rotation_interval * (anti ? -1 : 1); - this.nodes_group.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - this.links_group.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - }, this.chartHelper?.animation_rotation_speed); - } - else { - this.animation_interval != undefined && clearInterval(this.animation_interval); - this.animation_interval = undefined; - } - } - map_children_data_to_head() { - const data = this.chartHelper.data_to_d3_format(); - const root = hierarchy(data) - .sort((a, b) => b.height - a.height || a.data.name.localeCompare(b.data.name)); - const radius = 540 * Math.sqrt(this.chartHelper.tree_data.length / 3); - const treeLayout = cluster() - .size([360, radius]) - .separation((a, b) => 50); - treeLayout(root); - const svgNode = create$1('svg'); - svgNode.attr('width', 580); - svgNode.attr('height', 250); - svgNode.attr('style', 'overflow: visible'); - const root_g = svgNode.append('g') - .attr('transform', `translate(${svgNode.attr('width') / 2},${svgNode.attr('height') / 2})`); - root_g.append('g') - .attr('class', 'links'); - root_g.append('g') - .attr('class', 'nodes'); - root.each((node) => { - const chartHead = this.chartHelper?.makeHead(node.data, false, false); - node['head'] = chartHead.node(); - node['head'].removeEventListener('dblclick', this.chartHelper.handleCenterHead); - node['head'].ondblclick = (e) => { - e.stopPropagation(); - e.preventDefault(); - const el_rect = e.currentTarget.querySelector('g').getBoundingClientRect(); - this.chartHelper?.center_elem(el_rect); - }; - node['color_set'] = this.chartHelper?.color_handler.getColor(node.data.id); - }); - // draw nodes - svgNode.select('g.nodes') - .selectAll('svg.node') - .data(root.descendants()) - .enter() - .append((d) => { - if (this.chartHelper?.chart_head_type != 'rounded' && this.chartHelper?.show_chart_head_border) { - d.head.querySelector('rect').style.fill = "white"; - d.head.querySelector('rect').style.strokeWidth = "1"; - } - return d.head; - }) - .classed('node', true) - .select('g') - .attr("transform", (d) => `rotate(${d.x}, 0, 0) translate(0, ${-d.y})`); - svgNode.select('g.nodes') - .selectAll('circle.node') - .data(root.descendants()) - .enter() - .append('circle') - .classed('node', true) - .attr('cx', 0) - .attr('cy', (d) => -d.y) - .attr('r', 5) - .attr("fill", (d) => d.color_set.color) - .attr('stroke', (d) => d.color_set.gray) - .attr('stroke-width', 1) - .attr("transform", (d) => `rotate(${d.x}, 0, 0)`); - const lineGen = lineRadial$1() - .angle((d) => d.x * Math.PI / 180) - .radius((d) => d.y); - // draw links - svgNode.select('g.links') - .selectAll('path.link') - .data(root.links()) - .enter() - .append("path") - .classed('link', true) - .attr('stroke', (d) => d.target.color_set.gray) - .attr('fill', "none") - .attr('stroke-width', 1.5) - .attr("d", (d) => lineGen([d.target, d.source])); - this.nodes_group = svgNode.select('g.nodes'); - this.links_group = svgNode.select('g.links'); - this.head_child_wrapper?.append(svgNode.node()); - } -} - -class RadialSpiderLeg { - content_wrapper = null; - head_child_wrapper = null; - tsInnerContainer = null; - chartHelper; - current_scale = 1; - root_svg = undefined; - rotate_deg = 0; - animation_interval = undefined; - start_animation = false; - constructor({ tsInnerContainer, chartHelper }) { - this.tsInnerContainer = tsInnerContainer; - this.chartHelper = chartHelper; - setTimeout(() => { - this.organizeUI(); - }, 0); - } - organizeUI() { - this.content_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper = this.chartHelper.createDynamicEl(); - this.head_child_wrapper.className = "st-child-wrapper"; - this.content_wrapper.className = "st-grs-content-wrapper"; - this.content_wrapper.appendChild(this.head_child_wrapper); - this.tsInnerContainer?.append(this.content_wrapper); - this.map_children_data_to_head(); - timeout(() => { - const first_svg_el = select(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect(); - this.chartHelper?.center_elem(first_svg_el, "center"); - }, 0); - } - animate_chat(once = false, anti = false) { - if (once) { - this.rotate_deg += this.chartHelper?.animation_rotation_interval * (anti ? -1 : 1); - return this.root_svg.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - } - this.start_animation = !this.start_animation; - if (this.start_animation) { - this.animation_interval = setInterval(() => { - this.rotate_deg += this.chartHelper?.animation_rotation_interval * (anti ? -1 : 1); - this.root_svg.attr('transform', `rotate(${this.rotate_deg}, 0, 0)`); - }, this.chartHelper?.animation_rotation_speed); - } - else { - this.animation_interval != undefined && clearInterval(this.animation_interval); - this.animation_interval = undefined; - } - } - map_children_data_to_head() { - const data = this.chartHelper.data_to_d3_format(); - const root = hierarchy(data) - .sort((a, b) => b.height - a.height || a.data.name.localeCompare(b.data.name)); - const radius = 540 * Math.sqrt(this.chartHelper.tree_data.length / 3); - const width = radius * 2; - const height = radius * 2; - const marginLeft = 110; - const marginTop = 110; - root.each((node) => { - const chartHead = this.chartHelper?.makeHead(node.data, false, false); - node['head'] = chartHead.node(); - node['color_set'] = this.chartHelper?.color_handler.getColor(node.data.id); - }); - const tree$1 = tree; - const strokeWidth = 1.5; // stroke width for links - const strokeOpacity = 1; // stroke opacity for links - const separation = (a, b) => 100; - // Compute the layout. - tree$1().size([2 * Math.PI, radius]).separation(separation)(root); - const svg = create$1("svg") - .attr("viewBox", [-marginLeft - radius, -marginTop - radius, width, height]) - .attr("width", width) - .attr("height", height) - .attr("style", "background-color: none; max-width: 100%; height: auto; overflow: visible;"); - svg.append("g") - .attr("fill", "none") - .attr("stroke", this.chartHelper?.color_handler.get_app_gray()) - .attr("stroke-opacity", strokeOpacity) - .attr("stroke-width", strokeWidth) - .selectAll("path") - .data(root.links()) - .join("path") - .attr("d", linkRadial() - .angle((d) => d.x) - .radius((d) => d.y)); - const mainNode = svg.append("g") - .selectAll("g") - .data(root.descendants()) - .join("g") - .attr("transform", (d) => `rotate(${d.x * 180 / Math.PI - 90}) translate(${d.y},0)`); - const r = 3; - mainNode.append("circle") - .attr("fill", (d) => d.color_set.color) - .attr("r", r); - mainNode.append((d) => { - if (this.chartHelper?.chart_head_type != 'rounded' && this.chartHelper?.show_chart_head_border) { - d.head.querySelector('rect').style.fill = "white"; - d.head.querySelector('rect').style.strokeWidth = "1"; - } - return d.head; - }); - mainNode.append("title") - .text(d => d.data.name + " - " + d.data.role); - this.root_svg = svg; - this.head_child_wrapper?.append(svg.node()); - } -} - -/** - * SVG icons gotten from https://svgrepo.com - */ -var icons = { - zoomIn: ` `, - zoomOut: ` zoom-out Created with Sketch Beta. `, - resetZoom: ` `, - rotate: ``, - rotate_once: ` `, - rotate_once_anti_clockwise: ` `, - rotate_anticlockwise: `` -}; - -class UITools { - root_ui_element = undefined; - zoomInOut = () => null; - resetZoom = () => null; - animate_chat = () => null; - tree_type = undefined; - animatable_trees = ['goldenRod', 'radialSpiderLeg']; - constructor({ root_ui_element, zoomInOut, resetZoom, animate_chat }) { - this.root_ui_element = root_ui_element; - this.zoomInOut = zoomInOut; - this.resetZoom = resetZoom; - this.animate_chat = animate_chat; - setTimeout(() => { - this.make_tools(); - }, 0); - } - make_tools() { - const toolWrapperEl = new TSElement(); - toolWrapperEl.className = "tools-container"; - this.root_ui_element?.appendChild(toolWrapperEl); - const zoomInIcon = document.createElement('div'); - zoomInIcon.className = "tool-item"; - zoomInIcon.innerHTML = icons.zoomIn; - zoomInIcon.title = "Zoom in"; - zoomInIcon.onclick = (e) => this.zoomInOut(); - const zoomOutIcon = document.createElement('div'); - zoomOutIcon.className = "tool-item"; - zoomOutIcon.innerHTML = icons.zoomOut; - zoomOutIcon.title = "Zoom out"; - zoomOutIcon.onclick = (e) => this.zoomInOut('out'); - const zoomResetIcon = document.createElement('div'); - zoomResetIcon.className = "tool-item"; - zoomResetIcon.innerHTML = icons.resetZoom; - zoomResetIcon.title = "Reset zoom & position"; - zoomResetIcon.onclick = (e) => this.resetZoom(); - const rotateIcon = document.createElement('div'); - rotateIcon.className = "tool-item"; - rotateIcon.innerHTML = icons.rotate; - rotateIcon.title = "Start/Stop Clockwise Rotation"; - const rotateAnticlockwiseIcon = document.createElement('div'); - rotateAnticlockwiseIcon.className = "tool-item"; - rotateAnticlockwiseIcon.innerHTML = icons.rotate_anticlockwise; - rotateAnticlockwiseIcon.title = "Start/Stop Anticlockwise Rotation"; - const rotateOnceIcon = document.createElement('div'); - rotateOnceIcon.className = "tool-item"; - rotateOnceIcon.innerHTML = icons.rotate_once; - rotateOnceIcon.title = "Rotate Clockwise Once"; - const rotateOnceAnticlockwiseIcon = document.createElement('div'); - rotateOnceAnticlockwiseIcon.className = "tool-item"; - rotateOnceAnticlockwiseIcon.innerHTML = icons.rotate_once_anti_clockwise; - rotateOnceAnticlockwiseIcon.title = "Rotate Anticlockwise Once"; - toolWrapperEl.append(zoomInIcon); - toolWrapperEl.append(zoomOutIcon); - toolWrapperEl.append(zoomResetIcon); - if (this.animatable_trees.includes(this.tree_type)) { - toolWrapperEl.append(rotateIcon); - toolWrapperEl.append(rotateAnticlockwiseIcon); - toolWrapperEl.append(rotateOnceIcon); - toolWrapperEl.append(rotateOnceAnticlockwiseIcon); - rotateIcon.onclick = (e) => this.animate_chat(); - rotateAnticlockwiseIcon.onclick = (e) => this.animate_chat(false, true); - rotateOnceIcon.onclick = (e) => this.animate_chat(true); - rotateOnceAnticlockwiseIcon.onclick = (e) => this.animate_chat(true, true); - } - } -} - -class TreeSpider extends EventTarget { - /** - * The library name - */ - libraryName = "TreeSpider"; - targetRootContainer = null; - rootWrapperContainer = null; - tsInnerContainer = null; - rootCanvasEl = null; - chartHelper = {}; - currentChartUI; - zoom_instace; - colorHandler = {}; - tree_default_point_position = ''; - instance_unique_id = ''; - /** - * TreeSpider options - */ - options = { - targetContainer: '', - width: '900px', - height: '500px', - placeEl: 'override', - tree_data: undefined, - color_range: [], - tree_type: 'default', - chart_head_type: 'default', - show_tools: true, - show_chart_head_border: false, - animation_rotation_speed: 10, - animation_rotation_interval: 1, - backgroundPattern: 'default', - backgroundSize: undefined, - customBackground: undefined, - backgroundPosition: undefined, - head_linker_thumb_circle_radius: 8, - linker_thumb_icon_color: 'bright500', - linker_thumb_shape: 'symbolCircle', - head_image_shape: 'symbolCircle', - chart_head_bg: '#ffffff', - auto_set_chart_head_bg: false, - display_tree_in_step: false, - auto_display_tree_in_step: true, - tree_level_step: 2, - pallet: { - h: 10, - s: 0.5, - l: 0.5, - darker: 3, - brighter: 0.8, - bright100: 0.5, - dark100: 0.5, - gray: 50, - gray85: 85 - }, - tree_link_type: undefined, - random_data_length: 200, - // random_data_locale: window.navigator.language, // Suspended - the user's device's locale - autoInitialize: true, - zoom_in_distance: 1.5, - zoom_out_distance: 0.5, - verticalSpace: '120px', - font_link: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap", - font_name: "Lato", - }; - constructor(options) { - super(); - if (options.targetContainer == undefined) { - throw new Error(this.libraryName + ": The target container is required"); - } - if (options.tree_data != undefined) { - this.options.tree_data = options.tree_data; - } - else { - const randData = new RandomDataGenerator({ - length: options.random_data_length || this.options.random_data_length, - }); - this.options.tree_data = randData.generated_data; - } - this.setOptions(options); - this.instance_unique_id = 'tree_spider_' + this.options.targetContainer.replace(/[\W\D]/, '_'); - this.loadFont(); - console.info(this.libraryName + ' ready!'); - this.options.autoInitialize && this.initialize(); - } - /** - * Method to programatically initialize TreeSpider - */ - initialize() { - this.targetRootContainer = document.querySelector(this.options.targetContainer); - if (this.targetRootContainer === null) - throw new Error(this.libraryName + ": target container not found"); - this.targetRootContainer.setAttribute('data-tree-spider-initialized', this.instance_unique_id); - this.createUI(); - setTimeout(() => { - this.emitEvent('library.init', { rootContainer: this.rootWrapperContainer }); - }, 0); - console.info(this.libraryName + ' initialized!'); - } - initialize_root_container() { - this.rootWrapperContainer = new TSRootContainer(); - this.rootWrapperContainer.setAttribute('data-ts-unique-id', this.instance_unique_id); - this.setCSSPropertyVar('--vertical-space-var', this.options.verticalSpace); - this.setCSSPropertyVar('--font-family', this.options.font_name); - this.setCSSPropertyVar('--root-cont-width', this.options.width); - this.setCSSPropertyVar('--root-cont-height', this.options.height); - this.rootWrapperContainer.setAttribute('backgroundPattern', this.options.backgroundPattern); - this.rootWrapperContainer.setAttribute('backgroundSize', this.options.backgroundSize); - this.rootWrapperContainer.setAttribute('customBackground', this.options.customBackground); - this.rootWrapperContainer.setAttribute('backgroundPosition', this.options.backgroundPosition); - } - setCSSPropertyVar(prop, value) { - this.rootWrapperContainer?.style.setProperty(prop, value); - } - loadFont() { - let fontLink, preconnect, crossorgin_preconnect; - if (select(`[href="https://fonts.googleapis.com"]`).node() == null) { - preconnect = create$1('link') - .attr("rel", "preconnect") - .attr("href", "https://fonts.googleapis.com"); - } - if (select(`[href="https://fonts.gstatic.com"]`).node() == null) { - crossorgin_preconnect = create$1('link') - .attr("rel", "preconnect") - .attr("href", "https://fonts.gstatic.com") - .attr("crossOrigin", ""); - } - if (this.options.font_link) { - fontLink = create$1('link') - .attr("href", this.options.font_link) - .attr("rel", "stylesheet"); - } - preconnect != undefined && document.head.appendChild(preconnect.node()); - crossorgin_preconnect != undefined && document.head.appendChild(crossorgin_preconnect.node()); - fontLink != undefined && document.head.appendChild(fontLink.node()); - } - setObjectValue(objectParent, value) { - const setObj = objectParent; - if (Object.keys(setObj).length == 0) - return value; - for (const keyx in setObj) { - if (!Object.keys(value).includes(keyx)) - continue; - if (Object.hasOwnProperty.call(setObj, keyx)) { - if (typeof setObj[keyx] == 'object' && !Array.isArray(setObj[keyx])) { - const xc = this.setObjectValue(setObj[keyx], value[keyx]); - setObj[keyx] = { ...setObj[keyx], ...xc }; - } - else { - setObj[keyx] = value[keyx]; - } - } - } - return setObj; - } - createUI() { - this.initialize_root_container(); - this.chartHelper = new ChartMainHelper(); - this.chartHelper.rootWrapperContainer = this.rootWrapperContainer; - this.chartHelper.app_unique_id = this.instance_unique_id; - this.chartHelper.tree_data = this.options.tree_data; - this.chartHelper.center_elem = this.center_elem.bind(this); - this.chartHelper.chart_head_type = this.options.chart_head_type; - this.chartHelper.animation_rotation_speed = this.options.animation_rotation_speed; - this.chartHelper.animation_rotation_interval = this.options.animation_rotation_interval; - this.chartHelper.head_linker_thumb_circle_radius = this.options.head_linker_thumb_circle_radius; - this.chartHelper.linker_thumb_icon_color = this.options.linker_thumb_icon_color; - this.chartHelper.linker_thumb_shape = this.options.linker_thumb_shape; - this.chartHelper.head_image_shape = this.options.head_image_shape; - this.chartHelper.chart_head_bg = this.options.chart_head_bg; - this.chartHelper.auto_set_chart_head_bg = this.options.auto_set_chart_head_bg; - this.chartHelper.display_tree_in_step = this.options.display_tree_in_step; - this.chartHelper.auto_display_tree_in_step = this.options.auto_display_tree_in_step; - this.chartHelper.tree_level_step = this.options.tree_level_step; - this.chartHelper.tree_link_type = this.options.tree_link_type; - this.chartHelper.emitEvent = this.emitEvent.bind(this); - this.colorHandler = new ColorHandler({ - tree_data: this.options.tree_data, - color_range: this.options.color_range, - pallet: this.options.pallet - }); - this.chartHelper.color_handler = this.colorHandler; - this.placeRootContainer(); - } - zoomInOut(dir = 'in') { - const zoom_level = (dir == 'in' ? this.options.zoom_in_distance : this.options.zoom_out_distance); - this.zoom_instace?.scaleBy(select(`[data-ts-unique-id='${this.instance_unique_id}']`), zoom_level); - } - /** - * The method to reset the zoom to the default zoom state - */ - resetZoom() { - const first_svg_el = select(`[data-ts-unique-id='${this.instance_unique_id}'] .root-svg-el > g`).node().getBoundingClientRect(); - this.center_elem(first_svg_el, this.tree_default_point_position); - } - placeRootContainer() { - this.tsInnerContainer = this.chartHelper.createDynamicEl(); - this.tsInnerContainer.className = "ts-inner-container"; - if (this.options.tree_data?.length == 0) { - const empty_content_container = new TSElement(); - empty_content_container.innerText = "No data provided!"; - this.tsInnerContainer.appendChild(empty_content_container); - } - this.rootWrapperContainer?.appendChild(this.tsInnerContainer); - if (this.options.placeEl == 'start') { - this.targetRootContainer?.prepend(this.rootWrapperContainer); - } - else if (this.options.placeEl == 'end') { - this.targetRootContainer?.append(this.rootWrapperContainer); - } - else if (typeof this.options.placeEl === 'object' && Object.keys(this.options.placeEl).length > 0) { - this.targetRootContainer?.insertBefore(this.rootWrapperContainer, this.targetRootContainer.querySelector(this.options.placeEl.beforeEl)); - } - else { - this.targetRootContainer.innerHTML = ''; - this.targetRootContainer.appendChild(this.rootWrapperContainer); - } - this.bindPanning(); - if (this.options.tree_type == 'default') { - this.currentChartUI = new DefaultTree({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'vSpiderWalk') { - this.currentChartUI = new VerticalSpiderWalkTree({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'hSpider') { - this.currentChartUI = new HorizontalTreeSpider({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'hSpiderWalk') { - this.currentChartUI = new HorizontalSpiderWalkTree({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'cellar') { - this.currentChartUI = new CellarTreeSpider({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'goldenRod') { - this.currentChartUI = new GoldenRodSpider({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else if (this.options.tree_type == 'radialSpiderLeg') { - this.currentChartUI = new RadialSpiderLeg({ - tree_data: this.options.tree_data, - tsInnerContainer: this.tsInnerContainer, - chartHelper: this.chartHelper - }); - } - else { - throw new Error('Not implemented and you are welcome to implement it :)'); - } - if (this.options.tree_data.length > 0 && this.options.show_tools) { - const uitool = new UITools({ - root_ui_element: this.rootWrapperContainer, - zoomInOut: this.zoomInOut.bind(this), - resetZoom: this.resetZoom.bind(this), - animate_chat: this.currentChartUI?.animate_chat?.bind(this.currentChartUI) - }); - uitool.tree_type = this.options.tree_type; - } - } - bindPanning() { - const root_cont_rect = this.rootWrapperContainer?.getBoundingClientRect(); - const zoomFilter = (event) => { - event.preventDefault(); - return (!event.ctrlKey || event.type === 'wheel') && !event.button; - }; - const root_container_el = select(`[data-ts-unique-id='${this.instance_unique_id}']`); - const zoomed = (e) => { - const emitedEvent = this.emitEvent('zooming', { e }); - if (!emitedEvent) - return; - this.tsInnerContainer.style.transform = `translate(${e.transform.x}px, ${e.transform.y}px) scale(${e.transform.k})`; - this.rootWrapperContainer.style.setProperty('--ts-root-container-cursor', 'grabbing'); - this.currentChartUI.current_scale = e.transform.k; - }; - this.zoom_instace = zoom() - .filter(zoomFilter) - .extent([[0, 0], [root_cont_rect.width, root_cont_rect.height]]) - .on("zoom", zoomed) - .on('end', (e) => { - this.rootWrapperContainer.style.setProperty('--ts-root-container-cursor', 'grab'); - }); - root_container_el.call(this.zoom_instace).on("dblclick.zoom", (e) => null); - } - center_elem(rect, position = 'center') { - const root_container_el = select(`[data-ts-unique-id='${this.instance_unique_id}']`); - this.tree_default_point_position == '' && (this.tree_default_point_position = position); - const root_cont_rect = root_container_el.node()?.getBoundingClientRect(); - const inner_cont_rect = this.tsInnerContainer?.getBoundingClientRect(); - const rel_posX = ((rect.left - (inner_cont_rect.left)) / this.currentChartUI.current_scale); - const rel_posY = ((rect.top - (inner_cont_rect.top)) / this.currentChartUI.current_scale); - const offsetMoveX = (root_cont_rect.width / 2) - ((rect.width / 2) / this.currentChartUI.current_scale); - const offsetMoveY = (root_cont_rect.height / 2) - (rect.height / 2) / this.currentChartUI.current_scale; - let moveX = 0; - let moveY = 0; - if (position == 'center') { - moveX = rel_posX - offsetMoveX; - moveY = rel_posY - offsetMoveY; - } - else if (position == 'top') { - moveX = rel_posX - offsetMoveX; - moveY = rel_posY - 10; - } - else if (position == 'bottom') { - moveX = rel_posX - offsetMoveX; - const el_chunk_sizes_y = (root_cont_rect.height / 2) - (rect.height / 2); - moveY = (rel_posY - (offsetMoveY + el_chunk_sizes_y)) + 10; - } - else if (position == 'left') { - moveX = rel_posX - 10; - moveY = rel_posY - offsetMoveY; - } - else if (position == 'right') { - const el_chunk_sizes_x = (root_cont_rect.width / 2) - (rect.width / 2); - moveX = (rel_posX - (offsetMoveX + el_chunk_sizes_x)) + 10; - moveY = rel_posY - offsetMoveY; - } - root_container_el.transition().duration(2500).call(this.zoom_instace?.transform, identity.translate(-moveX, -moveY)); - } - emitEvent(eventName, data, cancelable = true) { - const customEv = new CustomEvent(eventName, { detail: data, bubbles: true, cancelable }); - return this.dispatchEvent(customEv); - } - /** - * @public @method updateChartHeadBg - Method for programmatically updating all chat head's background color - * @param color - The color value to set the chart heads to, you can pass any CSS color values to it - */ - updateChartHeadBg(color) { - if (this.options.tree_type == 'goldenRod' || this.options.tree_type == 'radialSpiderLeg') { - this.rootWrapperContainer?.querySelectorAll('.main-svg-el').forEach(el => el.querySelector('rect').style.fill = color); - this.addEventListener('chart_head.expanded', () => this.rootWrapperContainer?.querySelectorAll('.main-svg-el').forEach(el => el.querySelector('rect').style.fill = color)); - } - else { - this.rootWrapperContainer?.querySelectorAll('.main-svg-el').forEach(el => el.style.backgroundColor = color); - this.addEventListener('chart_head.expanded', () => this.rootWrapperContainer?.querySelectorAll('.main-svg-el').forEach(el => el.style.backgroundColor = color)); - } - } - /** - * The short form for addEventListener - * @param eventName - The event you want to subscribe to - * @param callbackFn - The callback function - */ - on(eventName, callbackFn) { - this.addEventListener(eventName, callbackFn); - } - /** - * The method to programatically update parameters - * @param options_to_set - The parameter to update - */ - setOptions(options_to_set) { - this.setObjectValue(this.options, options_to_set); - } - /** - * The method for programatically zooming in and out - * @param dir - The direction of the zoom, in or out - */ - zoom(dir) { - this.zoomInOut(dir); - } - /** - * The method to start rotating the chart clockwisely - */ - startStopRotateCW() { - // once=false, anti=false - this.currentChartUI?.animate_chat(); - } - /** - * The method to start rotating the chart anti-clockwisely - */ - startStopRotateACW() { - // once=false, anti=false - this.currentChartUI?.animate_chat(false, true); - } - /** - * The method to rotate the chart once clockwisely - */ - rotateOnceCW() { - // once=false, anti=false - this.currentChartUI?.animate_chat(true); - } - /** - * The method to rotate the chart once clockwisely - */ - rotateOnceACW() { - // once=false, anti=false - this.currentChartUI?.animate_chat(true, true); - } -} - -export { TreeSpider as default }; diff --git a/dist/es/treeSpider.bundle.min.js b/dist/es/treeSpider.bundle.min.js deleted file mode 100644 index 7ac2e71..0000000 --- a/dist/es/treeSpider.bundle.min.js +++ /dev/null @@ -1 +0,0 @@ -var e={flux:'\n \n \n \n \n \n \n\n ',quad:'',blurry:'\n ',chaos:'',spiral:'',flurry:'',whirling:'',replicate:'\n \n \n \n \n \n ',scribble:'',squiggly:'',gyrate:'',leaves:'',reflection:'',spot:'\n \n \n \n '};function t(e,t){return null==e||null==t?NaN:et?1:e>=t?0:NaN}function r(e,t){return null==e||null==t?NaN:te?1:t>=e?0:NaN}function a(e){let a,n,o;function c(e,t,r=0,i=e.length){if(r>>1;n(e[a],t)<0?r=a+1:i=a}while(rt(e(r),a),o=(t,r)=>e(t)-r):(a=e===t||e===r?e:i,n=e,o=e),{left:c,center:function(e,t,r=0,a=e.length){const i=c(e,t,r,a-1);return i>r&&o(e[i-1],t)>-o(e[i],t)?i-1:i},right:function(e,t,r=0,i=e.length){if(r>>1;n(e[a],t)<=0?r=a+1:i=a}while(r{t(e,r,(a<<=2)+0,(i<<=2)+0,n<<=2),t(e,r,a+1,i+1,n),t(e,r,a+2,i+2,n),t(e,r,a+3,i+3,n)}}));function d(e){return function(t,r,a=r){if(!((r=+r)>=0))throw new RangeError("invalid rx");if(!((a=+a)>=0))throw new RangeError("invalid ry");let{data:i,width:n,height:o}=t;if(!((n=Math.floor(n))>=0))throw new RangeError("invalid width");if(!((o=Math.floor(void 0!==o?o:i.length/n))>=0))throw new RangeError("invalid height");if(!n||!o||!r&&!a)return t;const c=r&&e(r),l=a&&e(a),s=i.slice();return c&&l?(p(c,s,i,n,o),p(c,i,s,n,o),p(c,s,i,n,o),y(l,i,s,n,o),y(l,s,i,n,o),y(l,i,s,n,o)):c?(p(c,i,s,n,o),p(c,s,i,n,o),p(c,i,s,n,o)):l&&(y(l,i,s,n,o),y(l,s,i,n,o),y(l,i,s,n,o)),t}}function p(e,t,r,a,i){for(let n=0,o=a*i;n{if(!((n-=o)>=i))return;let c=e*a[i];const l=o*e;for(let e=i,t=i+l;e{if(!((o-=c)>=n))return;let l=t*i[n];const s=c*t,u=s+c;for(let e=n,t=n+s;e=t&&++r;else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(i=+i)>=i&&++r}return r}function g(e){return 0|e.length}function b(e){return!(e>0)}function v(e){return"object"!=typeof e||"length"in e?e:Array.from(e)}function x(e,t){let r,a=0,i=0,n=0;if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(r=t-i,i+=r/++a,n+=r*(t-i));else{let o=-1;for(let c of e)null!=(c=t(c,++o,e))&&(c=+c)>=c&&(r=c-i,i+=r/++a,n+=r*(c-i))}if(a>1)return n/(a-1)}function k(e,t){const r=x(e,t);return r?Math.sqrt(r):r}function w(e,t){let r,a;if(void 0===t)for(const t of e)null!=t&&(void 0===r?t>=t&&(r=a=t):(r>t&&(r=t),a=n&&(r=a=n):(r>n&&(r=n),a0){for(n=e[--i];i>0&&(t=n,r=e[--i],n=t+r,a=r-(n-t),!a););i>0&&(a<0&&e[i-1]<0||a>0&&e[i-1]>0)&&(r=2*a,t=n+r,r==t-n&&(n=t))}return n}}class _ extends Map{constructor(e,t=B){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const[t,r]of e)this.set(t,r)}get(e){return super.get(A(this,e))}has(e){return super.has(A(this,e))}set(e,t){return super.set(M(this,e),t)}delete(e){return super.delete(T(this,e))}}class S extends Set{constructor(e,t=B){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const t of e)this.add(t)}has(e){return super.has(A(this,e))}add(e){return super.add(M(this,e))}delete(e){return super.delete(T(this,e))}}function A({_intern:e,_key:t},r){const a=t(r);return e.has(a)?e.get(a):r}function M({_intern:e,_key:t},r){const a=t(r);return e.has(a)?e.get(a):(e.set(a,r),r)}function T({_intern:e,_key:t},r){const a=t(r);return e.has(a)&&(r=e.get(a),e.delete(a)),r}function B(e){return null!==e&&"object"==typeof e?e.valueOf():e}function L(e){return e}function E(e,...t){return G(e,L,L,t)}function R(e,...t){return G(e,Array.from,L,t)}function H(e,t){for(let r=1,a=t.length;re.pop().map((([t,r])=>[...e,t,r]))));return e}function D(e,t,...r){return G(e,L,t,r)}function P(e,t,...r){return G(e,Array.from,t,r)}function N(e){if(1!==e.length)throw new Error("duplicate key");return e[0]}function G(e,t,r,a){return function e(i,n){if(n>=a.length)return r(i);const o=new _,c=a[n++];let l=-1;for(const e of i){const t=c(e,++l,i),r=o.get(t);r?r.push(e):o.set(t,[e])}for(const[t,r]of o)o.set(t,e(r,n));return t(o)}(e,0)}function I(e,t){return Array.from(t,(t=>e[t]))}function W(e,...t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");e=Array.from(e);let[r]=t;if(r&&2!==r.length||t.length>1){const a=Uint32Array.from(e,((e,t)=>t));return t.length>1?(t=t.map((t=>e.map(t))),a.sort(((e,r)=>{for(const a of t){const t=z(a[e],a[r]);if(t)return t}}))):(r=e.map(r),a.sort(((e,t)=>z(r[e],r[t])))),I(e,a)}return e.sort(F(r))}function F(e=t){if(e===t)return z;if("function"!=typeof e)throw new TypeError("compare is not a function");return(t,r)=>{const a=e(t,r);return a||0===a?a:(0===e(r,r))-(0===e(t,t))}}function z(e,t){return(null==e||!(e>=e))-(null==t||!(t>=t))||(et?1:0)}var O=Array.prototype.slice;function K(e){return()=>e}const J=Math.sqrt(50),V=Math.sqrt(10),j=Math.sqrt(2);function Y(e,t,r){const a=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(a)),n=a/Math.pow(10,i),o=n>=J?10:n>=V?5:n>=j?2:1;let c,l,s;return i<0?(s=Math.pow(10,-i)/o,c=Math.round(e*s),l=Math.round(t*s),c/st&&--l,s=-s):(s=Math.pow(10,i)*o,c=Math.round(e/s),l=Math.round(t/s),c*st&&--l),l0))return[];if((e=+e)===(t=+t))return[e];const a=t=i))return[];const c=n-i+1,l=new Array(c);if(a)if(o<0)for(let e=0;e0?(e=Math.floor(e/i)*i,t=Math.ceil(t/i)*i):i<0&&(e=Math.ceil(e*i)/i,t=Math.floor(t*i)/i),a=i}}function Q(e){return Math.max(1,Math.ceil(Math.log(m(e))/Math.LN2)+1)}function X(){var e=L,t=w,r=Q;function a(a){Array.isArray(a)||(a=Array.from(a));var i,n,o,l=a.length,s=new Array(l);for(i=0;i=d)if(e>=d&&t===w){const e=U(h,d,r);isFinite(e)&&(e>0?d=(Math.floor(d/e)+1)*e:e<0&&(d=(Math.ceil(d*-e)+1)/-e))}else p.pop()}for(var y=p.length,f=0,m=y;p[f]<=h;)++f;for(;p[m-1]>d;)--m;(f||m0?p[i-1]:h,g.x1=i0)for(i=0;i=t)&&(r=t);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(r=i)&&(r=i)}return r}function te(e,t){let r,a=-1,i=-1;if(void 0===t)for(const t of e)++i,null!=t&&(r=t)&&(r=t,a=i);else for(let n of e)null!=(n=t(n,++i,e))&&(r=n)&&(r=n,a=i);return a}function re(e,t){let r;if(void 0===t)for(const t of e)null!=t&&(r>t||void 0===r&&t>=t)&&(r=t);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(r>i||void 0===r&&i>=i)&&(r=i)}return r}function ae(e,t){let r,a=-1,i=-1;if(void 0===t)for(const t of e)++i,null!=t&&(r>t||void 0===r&&t>=t)&&(r=t,a=i);else for(let n of e)null!=(n=t(n,++i,e))&&(r>n||void 0===r&&n>=n)&&(r=n,a=i);return a}function ie(e,t,r=0,a=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),a=Math.floor(Math.min(e.length-1,a)),!(r<=t&&t<=a))return e;for(i=void 0===i?z:F(i);a>r;){if(a-r>600){const n=a-r+1,o=t-r+1,c=Math.log(n),l=.5*Math.exp(2*c/3),s=.5*Math.sqrt(c*l*(n-l)/n)*(o-n/2<0?-1:1);ie(e,t,Math.max(r,Math.floor(t-o*l/n+s)),Math.min(a,Math.floor(t+(n-o)*l/n+s)),i)}const n=e[t];let o=r,c=a;for(ne(e,r,t),i(e[a],n)>0&&ne(e,r,a);o0;)--c}0===i(e[r],n)?ne(e,r,c):(++c,ne(e,c,a)),c<=t&&(r=c+1),t<=c&&(a=c-1)}return e}function ne(e,t,r){const a=e[t];e[t]=e[r],e[r]=a}function oe(e,r=t){let a,i=!1;if(1===r.length){let n;for(const o of e){const e=r(o);(i?t(e,n)>0:0===t(e,e))&&(a=o,n=e,i=!0)}}else for(const t of e)(i?r(t,a)>0:0===r(t,t))&&(a=t,i=!0);return a}function ce(e,t,r){if(e=Float64Array.from(function*(e,t){if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(yield t);else{let r=-1;for(let a of e)null!=(a=t(a,++r,e))&&(a=+a)>=a&&(yield a)}}(e,r)),(a=e.length)&&!isNaN(t=+t)){if(t<=0||a<2)return re(e);if(t>=1)return ee(e);var a,i=(a-1)*t,n=Math.floor(i),o=ee(ie(e,n).subarray(0,n+1));return o+(re(e.subarray(n+1))-o)*(i-n)}}function le(e,t,r=n){if((a=e.length)&&!isNaN(t=+t)){if(t<=0||a<2)return+r(e[0],0,e);if(t>=1)return+r(e[a-1],a-1,e);var a,i=(a-1)*t,o=Math.floor(i),c=+r(e[o],o,e);return c+(+r(e[o+1],o+1,e)-c)*(i-o)}}function se(e,t,r=n){if(!isNaN(t=+t)){if(a=Float64Array.from(e,((t,a)=>n(r(e[a],a,e)))),t<=0)return ae(a);if(t>=1)return te(a);var a,i=Uint32Array.from(e,((e,t)=>t)),o=a.length-1,c=Math.floor(o*t);return ie(i,c,0,o,((e,t)=>z(a[e],a[t]))),(c=oe(i.subarray(0,c+1),(e=>a[e])))>=0?c:-1}}function ue(e){return Array.from(function*(e){for(const t of e)yield*t}(e))}function he(e,t){return[e,t]}function de(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var a=-1,i=0|Math.max(0,Math.ceil((t-e)/r)),n=new Array(i);++a+e(t)}function Ae(e,t){return t=Math.max(0,e.bandwidth()-2*t)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function Me(){return!this.__axis}function Te(e,t){var r=[],a=null,i=null,n=6,o=6,c=3,l="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,s=1===e||4===e?-1:1,u=4===e||2===e?"x":"y",h=1===e||3===e?Ce:_e;function d(d){var p=null==a?t.ticks?t.ticks.apply(t,r):t.domain():a,y=null==i?t.tickFormat?t.tickFormat.apply(t,r):ke:i,f=Math.max(n,0)+c,m=t.range(),g=+m[0]+l,b=+m[m.length-1]+l,v=(t.bandwidth?Ae:Se)(t.copy(),l),x=d.selection?d.selection():d,k=x.selectAll(".domain").data([null]),w=x.selectAll(".tick").data(p,t).order(),C=w.exit(),_=w.enter().append("g").attr("class","tick"),S=w.select("line"),A=w.select("text");k=k.merge(k.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(_),S=S.merge(_.append("line").attr("stroke","currentColor").attr(u+"2",s*n)),A=A.merge(_.append("text").attr("fill","currentColor").attr(u,s*f).attr("dy",1===e?"0em":3===e?"0.71em":"0.32em")),d!==x&&(k=k.transition(d),w=w.transition(d),S=S.transition(d),A=A.transition(d),C=C.transition(d).attr("opacity",we).attr("transform",(function(e){return isFinite(e=v(e))?h(e+l):this.getAttribute("transform")})),_.attr("opacity",we).attr("transform",(function(e){var t=this.parentNode.__axis;return h((t&&isFinite(t=t(e))?t:v(e))+l)}))),C.remove(),k.attr("d",4===e||2===e?o?"M"+s*o+","+g+"H"+l+"V"+b+"H"+s*o:"M"+l+","+g+"V"+b:o?"M"+g+","+s*o+"V"+l+"H"+b+"V"+s*o:"M"+g+","+l+"H"+b),w.attr("opacity",1).attr("transform",(function(e){return h(v(e)+l)})),S.attr(u+"2",s*n),A.attr(u,s*f).text(y),x.filter(Me).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===e?"start":4===e?"end":"middle"),x.each((function(){this.__axis=v}))}return d.scale=function(e){return arguments.length?(t=e,d):t},d.ticks=function(){return r=Array.from(arguments),d},d.tickArguments=function(e){return arguments.length?(r=null==e?[]:Array.from(e),d):r.slice()},d.tickValues=function(e){return arguments.length?(a=null==e?null:Array.from(e),d):a&&a.slice()},d.tickFormat=function(e){return arguments.length?(i=e,d):i},d.tickSize=function(e){return arguments.length?(n=o=+e,d):n},d.tickSizeInner=function(e){return arguments.length?(n=+e,d):n},d.tickSizeOuter=function(e){return arguments.length?(o=+e,d):o},d.tickPadding=function(e){return arguments.length?(c=+e,d):c},d.offset=function(e){return arguments.length?(l=+e,d):l},d}var Be={value:()=>{}};function Le(){for(var e,t=0,r=arguments.length,a={};t=0&&(t=e.slice(r+1),e=e.slice(0,r)),e&&!a.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:t}}))),o=-1,c=n.length;if(!(arguments.length<2)){if(null!=t&&"function"!=typeof t)throw new Error("invalid callback: "+t);for(;++o0)for(var r,a,i=new Array(r),n=0;n=0&&"xmlns"!==(t=e.slice(0,r))&&(e=e.slice(r+1)),Pe.hasOwnProperty(t)?{space:Pe[t],local:e}:e}function Ge(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===De&&t.documentElement.namespaceURI===De?t.createElement(e):t.createElementNS(r,e)}}function Ie(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function We(e){var t=Ne(e);return(t.local?Ie:Ge)(t)}function Fe(){}function ze(e){return null==e?Fe:function(){return this.querySelector(e)}}function Oe(e){return null==e?[]:Array.isArray(e)?e:Array.from(e)}function Ke(){return[]}function Je(e){return null==e?Ke:function(){return this.querySelectorAll(e)}}function Ve(e){return function(){return this.matches(e)}}function je(e){return function(t){return t.matches(e)}}var Ye=Array.prototype.find;function $e(){return this.firstElementChild}var Ue=Array.prototype.filter;function qe(){return Array.from(this.children)}function Ze(e){return new Array(e.length)}function Qe(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function Xe(e,t,r,a,i,n){for(var o,c=0,l=t.length,s=n.length;ct?1:e>=t?0:NaN}function it(e){return function(){this.removeAttribute(e)}}function nt(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ot(e,t){return function(){this.setAttribute(e,t)}}function ct(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function lt(e,t){return function(){var r=t.apply(this,arguments);null==r?this.removeAttribute(e):this.setAttribute(e,r)}}function st(e,t){return function(){var r=t.apply(this,arguments);null==r?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function ut(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function ht(e){return function(){this.style.removeProperty(e)}}function dt(e,t,r){return function(){this.style.setProperty(e,t,r)}}function pt(e,t,r){return function(){var a=t.apply(this,arguments);null==a?this.style.removeProperty(e):this.style.setProperty(e,a,r)}}function yt(e,t){return e.style.getPropertyValue(t)||ut(e).getComputedStyle(e,null).getPropertyValue(t)}function ft(e){return function(){delete this[e]}}function mt(e,t){return function(){this[e]=t}}function gt(e,t){return function(){var r=t.apply(this,arguments);null==r?delete this[e]:this[e]=r}}function bt(e){return e.trim().split(/^|\s+/)}function vt(e){return e.classList||new xt(e)}function xt(e){this._node=e,this._names=bt(e.getAttribute("class")||"")}function kt(e,t){for(var r=vt(e),a=-1,i=t.length;++a=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var Kt=[null];function Jt(e,t){this._groups=e,this._parents=t}function Vt(){return new Jt([[document.documentElement]],Kt)}function jt(e){return"string"==typeof e?new Jt([[document.querySelector(e)]],[document.documentElement]):new Jt([[e]],Kt)}function Yt(e){return jt(We(e).call(document.documentElement))}Jt.prototype=Vt.prototype={constructor:Jt,select:function(e){"function"!=typeof e&&(e=ze(e));for(var t=this._groups,r=t.length,a=new Array(r),i=0;i=x&&(x=v+1);!(b=m[x])&&++x=0;)(a=i[n])&&(o&&4^a.compareDocumentPosition(o)&&o.parentNode.insertBefore(a,o),o=a);return this},sort:function(e){function t(t,r){return t&&r?e(t.__data__,r.__data__):!t-!r}e||(e=at);for(var r=this._groups,a=r.length,i=new Array(a),n=0;n1?this.each((null==t?ht:"function"==typeof t?pt:dt)(e,t,null==r?"":r)):yt(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?ft:"function"==typeof t?gt:mt)(e,t)):this.node()[e]},classed:function(e,t){var r=bt(e+"");if(arguments.length<2){for(var a=vt(this.node()),i=-1,n=r.length;++i=0&&(t=e.slice(r+1),e=e.slice(0,r)),{type:e,name:t}}))}(e+""),o=n.length;if(!(arguments.length<2)){for(c=t?Wt:It,a=0;a()=>e;function or(e,{sourceEvent:t,subject:r,target:a,identifier:i,active:n,x:o,y:c,dx:l,dy:s,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:a,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:n,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:c,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:s,enumerable:!0,configurable:!0},_:{value:u}})}function cr(e){return!e.ctrlKey&&!e.button}function lr(){return this.parentNode}function sr(e,t){return null==t?{x:e.x,y:e.y}:t}function ur(){return navigator.maxTouchPoints||"ontouchstart"in this}function hr(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function dr(e,t){var r=Object.create(e.prototype);for(var a in t)r[a]=t[a];return r}function pr(){}or.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};var yr=.7,fr=1/yr,mr="\\s*([+-]?\\d+)\\s*",gr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",br="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",vr=/^#([0-9a-f]{3,8})$/,xr=new RegExp(`^rgb\\(${mr},${mr},${mr}\\)$`),kr=new RegExp(`^rgb\\(${br},${br},${br}\\)$`),wr=new RegExp(`^rgba\\(${mr},${mr},${mr},${gr}\\)$`),Cr=new RegExp(`^rgba\\(${br},${br},${br},${gr}\\)$`),_r=new RegExp(`^hsl\\(${gr},${br},${br}\\)$`),Sr=new RegExp(`^hsla\\(${gr},${br},${br},${gr}\\)$`),Ar={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Mr(){return this.rgb().formatHex()}function Tr(){return this.rgb().formatRgb()}function Br(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=vr.exec(e))?(r=t[1].length,t=parseInt(t[1],16),6===r?Lr(t):3===r?new Dr(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?Er(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?Er(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=xr.exec(e))?new Dr(t[1],t[2],t[3],1):(t=kr.exec(e))?new Dr(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=wr.exec(e))?Er(t[1],t[2],t[3],t[4]):(t=Cr.exec(e))?Er(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=_r.exec(e))?Fr(t[1],t[2]/100,t[3]/100,1):(t=Sr.exec(e))?Fr(t[1],t[2]/100,t[3]/100,t[4]):Ar.hasOwnProperty(e)?Lr(Ar[e]):"transparent"===e?new Dr(NaN,NaN,NaN,0):null}function Lr(e){return new Dr(e>>16&255,e>>8&255,255&e,1)}function Er(e,t,r,a){return a<=0&&(e=t=r=NaN),new Dr(e,t,r,a)}function Rr(e){return e instanceof pr||(e=Br(e)),e?new Dr((e=e.rgb()).r,e.g,e.b,e.opacity):new Dr}function Hr(e,t,r,a){return 1===arguments.length?Rr(e):new Dr(e,t,r,null==a?1:a)}function Dr(e,t,r,a){this.r=+e,this.g=+t,this.b=+r,this.opacity=+a}function Pr(){return`#${Wr(this.r)}${Wr(this.g)}${Wr(this.b)}`}function Nr(){const e=Gr(this.opacity);return`${1===e?"rgb(":"rgba("}${Ir(this.r)}, ${Ir(this.g)}, ${Ir(this.b)}${1===e?")":`, ${e})`}`}function Gr(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ir(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Wr(e){return((e=Ir(e))<16?"0":"")+e.toString(16)}function Fr(e,t,r,a){return a<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Kr(e,t,r,a)}function zr(e){if(e instanceof Kr)return new Kr(e.h,e.s,e.l,e.opacity);if(e instanceof pr||(e=Br(e)),!e)return new Kr;if(e instanceof Kr)return e;var t=(e=e.rgb()).r/255,r=e.g/255,a=e.b/255,i=Math.min(t,r,a),n=Math.max(t,r,a),o=NaN,c=n-i,l=(n+i)/2;return c?(o=t===n?(r-a)/c+6*(r0&&l<1?0:o,new Kr(o,c,l,e.opacity)}function Or(e,t,r,a){return 1===arguments.length?zr(e):new Kr(e,t,r,null==a?1:a)}function Kr(e,t,r,a){this.h=+e,this.s=+t,this.l=+r,this.opacity=+a}function Jr(e){return(e=(e||0)%360)<0?e+360:e}function Vr(e){return Math.max(0,Math.min(1,e||0))}function jr(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}hr(pr,Br,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Mr,formatHex:Mr,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return zr(this).formatHsl()},formatRgb:Tr,toString:Tr}),hr(Dr,Hr,dr(pr,{brighter(e){return e=null==e?fr:Math.pow(fr,e),new Dr(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?yr:Math.pow(yr,e),new Dr(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Dr(Ir(this.r),Ir(this.g),Ir(this.b),Gr(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Pr,formatHex:Pr,formatHex8:function(){return`#${Wr(this.r)}${Wr(this.g)}${Wr(this.b)}${Wr(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Nr,toString:Nr})),hr(Kr,Or,dr(pr,{brighter(e){return e=null==e?fr:Math.pow(fr,e),new Kr(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?yr:Math.pow(yr,e),new Kr(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,a=r+(r<.5?r:1-r)*t,i=2*r-a;return new Dr(jr(e>=240?e-240:e+120,i,a),jr(e,i,a),jr(e<120?e+240:e-120,i,a),this.opacity)},clamp(){return new Kr(Jr(this.h),Vr(this.s),Vr(this.l),Gr(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Gr(this.opacity);return`${1===e?"hsl(":"hsla("}${Jr(this.h)}, ${100*Vr(this.s)}%, ${100*Vr(this.l)}%${1===e?")":`, ${e})`}`}}));const Yr=Math.PI/180,$r=180/Math.PI,Ur=.96422,qr=.82521,Zr=4/29,Qr=6/29,Xr=3*Qr*Qr,ea=Qr*Qr*Qr;function ta(e){if(e instanceof ia)return new ia(e.l,e.a,e.b,e.opacity);if(e instanceof ha)return da(e);e instanceof Dr||(e=Rr(e));var t,r,a=la(e.r),i=la(e.g),n=la(e.b),o=na((.2225045*a+.7168786*i+.0606169*n)/1);return a===i&&i===n?t=r=o:(t=na((.4360747*a+.3850649*i+.1430804*n)/Ur),r=na((.0139322*a+.0971045*i+.7141733*n)/qr)),new ia(116*o-16,500*(t-o),200*(o-r),e.opacity)}function ra(e,t){return new ia(e,0,0,null==t?1:t)}function aa(e,t,r,a){return 1===arguments.length?ta(e):new ia(e,t,r,null==a?1:a)}function ia(e,t,r,a){this.l=+e,this.a=+t,this.b=+r,this.opacity=+a}function na(e){return e>ea?Math.pow(e,1/3):e/Xr+Zr}function oa(e){return e>Qr?e*e*e:Xr*(e-Zr)}function ca(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function la(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function sa(e){if(e instanceof ha)return new ha(e.h,e.c,e.l,e.opacity);if(e instanceof ia||(e=ta(e)),0===e.a&&0===e.b)return new ha(NaN,0=1?(r=1,t-1):Math.floor(r*t),i=e[a],n=e[a+1],o=a>0?e[a-1]:2*i-n,c=a()=>e;function Ma(e,t){return function(r){return e+r*t}}function Ta(e,t){var r=t-e;return r?Ma(e,r>180||r<-180?r-360*Math.round(r/360):r):Aa(isNaN(e)?t:e)}function Ba(e){return 1==(e=+e)?La:function(t,r){return r-t?function(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(a){return Math.pow(e+a*t,r)}}(t,r,e):Aa(isNaN(t)?r:t)}}function La(e,t){var r=t-e;return r?Ma(e,r):Aa(isNaN(e)?t:e)}var Ea=function e(t){var r=Ba(t);function a(e,t){var a=r((e=Hr(e)).r,(t=Hr(t)).r),i=r(e.g,t.g),n=r(e.b,t.b),o=La(e.opacity,t.opacity);return function(t){return e.r=a(t),e.g=i(t),e.b=n(t),e.opacity=o(t),e+""}}return a.gamma=e,a}(1);function Ra(e){return function(t){var r,a,i=t.length,n=new Array(i),o=new Array(i),c=new Array(i);for(r=0;rn&&(i=t.slice(n,i),c[o]?c[o]+=i:c[++o]=i),(r=r[0])===(a=a[0])?c[o]?c[o]+=a:c[++o]=a:(c[++o]=null,l.push({i:o,x:Wa(r,a)})),n=Oa.lastIndex;return n180?t+=360:t-e>180&&(e+=360),n.push({i:r.push(i(r)+"rotate(",null,a)-2,x:Wa(e,t)})):t&&r.push(i(r)+"rotate("+t+a)}(n.rotate,o.rotate,c,l),function(e,t,r,n){e!==t?n.push({i:r.push(i(r)+"skewX(",null,a)-2,x:Wa(e,t)}):t&&r.push(i(r)+"skewX("+t+a)}(n.skewX,o.skewX,c,l),function(e,t,r,a,n,o){if(e!==r||t!==a){var c=n.push(i(n)+"scale(",null,",",null,")");o.push({i:c-4,x:Wa(e,r)},{i:c-2,x:Wa(t,a)})}else 1===r&&1===a||n.push(i(n)+"scale("+r+","+a+")")}(n.scaleX,n.scaleY,o.scaleX,o.scaleY,c,l),n=o=null,function(e){for(var t,r=-1,a=l.length;++r=0&&t._call.call(void 0,e),t=t._next;--pi}function Ai(){gi=(mi=vi.now())+bi,pi=yi=0;try{Si()}finally{pi=0,function(){var e,t,r=hi,a=1/0;for(;r;)r._call?(a>r._time&&(a=r._time),e=r,r=r._next):(t=r._next,r._next=null,r=e?e._next=t:hi=t);di=e,Ti(a)}(),gi=0}}function Mi(){var e=vi.now(),t=e-mi;t>1e3&&(bi-=t,mi=e)}function Ti(e){pi||(yi&&(yi=clearTimeout(yi)),e-gi>24?(e<1/0&&(yi=setTimeout(Ai,e-vi.now()-bi)),fi&&(fi=clearInterval(fi))):(fi||(mi=vi.now(),fi=setInterval(Mi,1e3)),pi=1,xi(Ai)))}function Bi(e,t,r){var a=new Ci;return t=null==t?0:+t,a.restart((r=>{a.stop(),e(r+t)}),t,r),a}Ci.prototype=_i.prototype={constructor:Ci,restart:function(e,t,r){if("function"!=typeof e)throw new TypeError("callback is not a function");r=(null==r?ki():+r)+(null==t?0:+t),this._next||di===this||(di?di._next=this:hi=this,di=this),this._call=e,this._time=r,Ti()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ti())}};var Li=Le("start","end","cancel","interrupt"),Ei=[];function Ri(e,t,r,a,i,n){var o=e.__transition;if(o){if(r in o)return}else e.__transition={};!function(e,t,r){var a,i=e.__transition;function n(e){r.state=1,r.timer.restart(o,r.delay,r.time),r.delay<=e&&o(e-r.delay)}function o(n){var s,u,h,d;if(1!==r.state)return l();for(s in i)if((d=i[s]).name===r.name){if(3===d.state)return Bi(o);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",e,e.__data__,d.index,d.group),delete i[s]):+s0)throw new Error("too late; already scheduled");return r}function Di(e,t){var r=Pi(e,t);if(r.state>3)throw new Error("too late; already running");return r}function Pi(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function Ni(e,t){var r,a,i,n=e.__transition,o=!0;if(n){for(i in t=null==t?null:t+"",n)(r=n[i]).name===t?(a=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(a?"interrupt":"cancel",e,e.__data__,r.index,r.group),delete n[i]):o=!1;o&&delete e.__transition}}function Gi(e,t){var r,a;return function(){var i=Di(this,e),n=i.tween;if(n!==r)for(var o=0,c=(a=r=n).length;o=0&&(e=e.slice(0,t)),!e||"start"===e}))}(t)?Hi:Di;return function(){var o=n(this,e),c=o.on;c!==a&&(i=(a=c).copy()).on(t,r),o.on=i}}(r,e,t))},attr:function(e,t){var r=Ne(e),a="transform"===r?Qa:Fi;return this.attrTween(e,"function"==typeof t?(r.local?ji:Vi)(r,a,Wi(this,"attr."+e,t)):null==t?(r.local?Oi:zi)(r):(r.local?Ji:Ki)(r,a,t))},attrTween:function(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==t)return this.tween(r,null);if("function"!=typeof t)throw new Error;var a=Ne(e);return this.tween(r,(a.local?Yi:$i)(a,t))},style:function(e,t,r){var a="transform"==(e+="")?Za:Fi;return null==t?this.styleTween(e,function(e,t){var r,a,i;return function(){var n=yt(this,e),o=(this.style.removeProperty(e),yt(this,e));return n===o?null:n===r&&o===a?i:i=t(r=n,a=o)}}(e,a)).on("end.style."+e,en(e)):"function"==typeof t?this.styleTween(e,function(e,t,r){var a,i,n;return function(){var o=yt(this,e),c=r(this),l=c+"";return null==c&&(this.style.removeProperty(e),l=c=yt(this,e)),o===l?null:o===a&&l===i?n:(i=l,n=t(a=o,c))}}(e,a,Wi(this,"style."+e,t))).each(function(e,t){var r,a,i,n,o="style."+t,c="end."+o;return function(){var l=Di(this,e),s=l.on,u=null==l.value[o]?n||(n=en(t)):void 0;s===r&&i===u||(a=(r=s).copy()).on(c,i=u),l.on=a}}(this._id,e)):this.styleTween(e,function(e,t,r){var a,i,n=r+"";return function(){var o=yt(this,e);return o===n?null:o===a?i:i=t(a=o,r)}}(e,a,t),r).on("end.style."+e,null)},styleTween:function(e,t,r){var a="style."+(e+="");if(arguments.length<2)return(a=this.tween(a))&&a._value;if(null==t)return this.tween(a,null);if("function"!=typeof t)throw new Error;return this.tween(a,function(e,t,r){var a,i;function n(){var n=t.apply(this,arguments);return n!==i&&(a=(i=n)&&function(e,t,r){return function(a){this.style.setProperty(e,t.call(this,a),r)}}(e,n,r)),a}return n._value=t,n}(e,t,null==r?"":r))},text:function(e){return this.tween("text","function"==typeof e?function(e){return function(){var t=e(this);this.textContent=null==t?"":t}}(Wi(this,"text",e)):function(e){return function(){this.textContent=e}}(null==e?"":e+""))},textTween:function(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(null==e)return this.tween(t,null);if("function"!=typeof e)throw new Error;return this.tween(t,function(e){var t,r;function a(){var a=e.apply(this,arguments);return a!==r&&(t=(r=a)&&function(e){return function(t){this.textContent=e.call(this,t)}}(a)),t}return a._value=e,a}(e))},remove:function(){return this.on("end.remove",function(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}(this._id))},tween:function(e,t){var r=this._id;if(e+="",arguments.length<2){for(var a,i=Pi(this.node(),r).tween,n=0,o=i.length;n()=>e;function In(e,{sourceEvent:t,target:r,selection:a,mode:i,dispatch:n}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},selection:{value:a,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:n}})}function Wn(e){e.preventDefault(),e.stopImmediatePropagation()}var Fn={name:"drag"},zn={name:"space"},On={name:"handle"},Kn={name:"center"};const{abs:Jn,max:Vn,min:jn}=Math;function Yn(e){return[+e[0],+e[1]]}function $n(e){return[Yn(e[0]),Yn(e[1])]}var Un={name:"x",handles:["w","e"].map(ao),input:function(e,t){return null==e?null:[[+e[0],t[0][1]],[+e[1],t[1][1]]]},output:function(e){return e&&[e[0][0],e[1][0]]}},qn={name:"y",handles:["n","s"].map(ao),input:function(e,t){return null==e?null:[[t[0][0],+e[0]],[t[1][0],+e[1]]]},output:function(e){return e&&[e[0][1],e[1][1]]}},Zn={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(ao),input:function(e){return null==e?null:$n(e)},output:function(e){return e}},Qn={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Xn={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},eo={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},to={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ro={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function ao(e){return{type:e}}function io(e){return!e.ctrlKey&&!e.button}function no(){var e=this.ownerSVGElement||this;return e.hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]}function oo(){return navigator.maxTouchPoints||"ontouchstart"in this}function co(e){for(;!e.__brush;)if(!(e=e.parentNode))return;return e.__brush}function lo(e){var t,r=no,a=io,i=oo,n=!0,o=Le("start","brush","end"),c=6;function l(t){var r=t.property("__brush",f).selectAll(".overlay").data([ao("overlay")]);r.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Qn.overlay).merge(r).each((function(){var e=co(this).extent;jt(this).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1])})),t.selectAll(".selection").data([ao("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Qn.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var a=t.selectAll(".handle").data(e.handles,(function(e){return e.type}));a.exit().remove(),a.enter().append("rect").attr("class",(function(e){return"handle handle--"+e.type})).attr("cursor",(function(e){return Qn[e.type]})),t.each(s).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",d).filter(i).on("touchstart.brush",d).on("touchmove.brush",p).on("touchend.brush touchcancel.brush",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function s(){var e=jt(this),t=co(this).selection;t?(e.selectAll(".selection").style("display",null).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1]),e.selectAll(".handle").style("display",null).attr("x",(function(e){return"e"===e.type[e.type.length-1]?t[1][0]-c/2:t[0][0]-c/2})).attr("y",(function(e){return"s"===e.type[0]?t[1][1]-c/2:t[0][1]-c/2})).attr("width",(function(e){return"n"===e.type||"s"===e.type?t[1][0]-t[0][0]+c:c})).attr("height",(function(e){return"e"===e.type||"w"===e.type?t[1][1]-t[0][1]+c:c}))):e.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function u(e,t,r){var a=e.__brush.emitter;return!a||r&&a.clean?new h(e,t,r):a}function h(e,t,r){this.that=e,this.args=t,this.state=e.__brush,this.active=0,this.clean=r}function d(r){if((!t||r.touches)&&a.apply(this,arguments)){var i,o,c,l,h,d,p,y,f,m,g,b=this,v=r.target.__data__.type,x="selection"===(n&&r.metaKey?v="overlay":v)?Fn:n&&r.altKey?Kn:On,k=e===qn?null:to[v],w=e===Un?null:ro[v],C=co(b),_=C.extent,S=C.selection,A=_[0][0],M=_[0][1],T=_[1][0],B=_[1][1],L=0,E=0,R=k&&w&&n&&r.shiftKey,H=Array.from(r.touches||[r],(e=>{const t=e.identifier;return(e=Qt(e,b)).point0=e.slice(),e.identifier=t,e}));Ni(b);var D=u(b,arguments,!0).beforestart();if("overlay"===v){S&&(f=!0);const t=[H[0],H[1]||H[0]];C.selection=S=[[i=e===qn?A:jn(t[0][0],t[1][0]),c=e===Un?M:jn(t[0][1],t[1][1])],[h=e===qn?T:Vn(t[0][0],t[1][0]),p=e===Un?B:Vn(t[0][1],t[1][1])]],H.length>1&&W(r)}else i=S[0][0],c=S[0][1],h=S[1][0],p=S[1][1];o=i,l=c,d=h,y=p;var P=jt(b).attr("pointer-events","none"),N=P.selectAll(".overlay").attr("cursor",Qn[v]);if(r.touches)D.moved=I,D.ended=F;else{var G=jt(r.view).on("mousemove.brush",I,!0).on("mouseup.brush",F,!0);n&&G.on("keydown.brush",(function(e){switch(e.keyCode){case 16:R=k&&w;break;case 18:x===On&&(k&&(h=d-L*k,i=o+L*k),w&&(p=y-E*w,c=l+E*w),x=Kn,W(e));break;case 32:x!==On&&x!==Kn||(k<0?h=d-L:k>0&&(i=o-L),w<0?p=y-E:w>0&&(c=l-E),x=zn,N.attr("cursor",Qn.selection),W(e));break;default:return}Wn(e)}),!0).on("keyup.brush",(function(e){switch(e.keyCode){case 16:R&&(m=g=R=!1,W(e));break;case 18:x===Kn&&(k<0?h=d:k>0&&(i=o),w<0?p=y:w>0&&(c=l),x=On,W(e));break;case 32:x===zn&&(e.altKey?(k&&(h=d-L*k,i=o+L*k),w&&(p=y-E*w,c=l+E*w),x=Kn):(k<0?h=d:k>0&&(i=o),w<0?p=y:w>0&&(c=l),x=On),N.attr("cursor",Qn[v]),W(e));break;default:return}Wn(e)}),!0),ar(r.view)}s.call(b),D.start(r,x.name)}function I(e){for(const t of e.changedTouches||[e])for(const e of H)e.identifier===t.identifier&&(e.cur=Qt(t,b));if(R&&!m&&!g&&1===H.length){const e=H[0];Jn(e.cur[0]-e[0])>Jn(e.cur[1]-e[1])?g=!0:m=!0}for(const e of H)e.cur&&(e[0]=e.cur[0],e[1]=e.cur[1]);f=!0,Wn(e),W(e)}function W(e){const t=H[0],r=t.point0;var a;switch(L=t[0]-r[0],E=t[1]-r[1],x){case zn:case Fn:k&&(L=Vn(A-i,jn(T-h,L)),o=i+L,d=h+L),w&&(E=Vn(M-c,jn(B-p,E)),l=c+E,y=p+E);break;case On:H[1]?(k&&(o=Vn(A,jn(T,H[0][0])),d=Vn(A,jn(T,H[1][0])),k=1),w&&(l=Vn(M,jn(B,H[0][1])),y=Vn(M,jn(B,H[1][1])),w=1)):(k<0?(L=Vn(A-i,jn(T-i,L)),o=i+L,d=h):k>0&&(L=Vn(A-h,jn(T-h,L)),o=i,d=h+L),w<0?(E=Vn(M-c,jn(B-c,E)),l=c+E,y=p):w>0&&(E=Vn(M-p,jn(B-p,E)),l=c,y=p+E));break;case Kn:k&&(o=Vn(A,jn(T,i-L*k)),d=Vn(A,jn(T,h+L*k))),w&&(l=Vn(M,jn(B,c-E*w)),y=Vn(M,jn(B,p+E*w)))}de+r))}function vo(e,t){var r=0,a=null,i=null,n=null;function o(o){var c,l=o.length,s=new Array(l),u=bo(0,l),h=new Array(l*l),d=new Array(l),p=0;o=Float64Array.from({length:l*l},t?(e,t)=>o[t%l][t/l|0]:(e,t)=>o[t/l|0][t%l]);for(let t=0;ta(s[e],s[t])));for(const r of u){const a=t;if(e){const e=bo(1+~l,l).filter((e=>e<0?o[~e*l+r]:o[r*l+e]));i&&e.sort(((e,t)=>i(e<0?-o[~e*l+r]:o[r*l+e],t<0?-o[~t*l+r]:o[r*l+t])));for(const a of e)if(a<0){(h[~a*l+r]||(h[~a*l+r]={source:null,target:null})).target={index:r,startAngle:t,endAngle:t+=o[~a*l+r]*p,value:o[~a*l+r]}}else{(h[r*l+a]||(h[r*l+a]={source:null,target:null})).source={index:r,startAngle:t,endAngle:t+=o[r*l+a]*p,value:o[r*l+a]}}d[r]={index:r,startAngle:a,endAngle:t,value:s[r]}}else{const e=bo(0,l).filter((e=>o[r*l+e]||o[e*l+r]));i&&e.sort(((e,t)=>i(o[r*l+e],o[r*l+t])));for(const a of e){let e;if(r=0))throw new Error(`invalid digits: ${e}`);if(t>15)return _o;const r=10**t;return function(e){this._+=e[0];for(let t=1,a=e.length;two)if(Math.abs(u*c-l*s)>wo&&i){let d=r-n,p=a-o,y=c*c+l*l,f=d*d+p*p,m=Math.sqrt(y),g=Math.sqrt(h),b=i*Math.tan((xo-Math.acos((y+h-f)/(2*m*g)))/2),v=b/g,x=b/m;Math.abs(v-1)>wo&&this._append`L${e+v*s},${t+v*u}`,this._append`A${i},${i},0,0,${+(u*d>s*p)},${this._x1=e+x*c},${this._y1=t+x*l}`}else this._append`L${this._x1=e},${this._y1=t}`;else;}arc(e,t,r,a,i,n){if(e=+e,t=+t,n=!!n,(r=+r)<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(a),c=r*Math.sin(a),l=e+o,s=t+c,u=1^n,h=n?a-i:i-a;null===this._x1?this._append`M${l},${s}`:(Math.abs(this._x1-l)>wo||Math.abs(this._y1-s)>wo)&&this._append`L${l},${s}`,r&&(h<0&&(h=h%ko+ko),h>Co?this._append`A${r},${r},0,1,${u},${e-o},${t-c}A${r},${r},0,1,${u},${this._x1=l},${this._y1=s}`:h>wo&&this._append`A${r},${r},0,${+(h>=xo)},${u},${this._x1=e+r*Math.cos(i)},${this._y1=t+r*Math.sin(i)}`)}rect(e,t,r,a){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${r=+r}v${+a}h${-r}Z`}toString(){return this._}};function Ao(){return new So}Ao.prototype=So.prototype;var Mo=Array.prototype.slice;function To(e){return function(){return e}}function Bo(e){return e.source}function Lo(e){return e.target}function Eo(e){return e.radius}function Ro(e){return e.startAngle}function Ho(e){return e.endAngle}function Do(){return 0}function Po(){return 10}function No(e){var t=Bo,r=Lo,a=Eo,i=Eo,n=Ro,o=Ho,c=Do,l=null;function s(){var s,u=t.apply(this,arguments),h=r.apply(this,arguments),d=c.apply(this,arguments)/2,p=Mo.call(arguments),y=+a.apply(this,(p[0]=u,p)),f=n.apply(this,p)-yo,m=o.apply(this,p)-yo,g=+i.apply(this,(p[0]=h,p)),b=n.apply(this,p)-yo,v=o.apply(this,p)-yo;if(l||(l=s=Ao()),d>go&&(so(m-f)>2*d+go?m>f?(f+=d,m-=d):(f-=d,m+=d):f=m=(f+m)/2,so(v-b)>2*d+go?v>b?(b+=d,v-=d):(b-=d,v+=d):b=v=(b+v)/2),l.moveTo(y*uo(f),y*ho(f)),l.arc(0,0,y,f,m),f!==b||m!==v)if(e){var x=g-+e.apply(this,arguments),k=(b+v)/2;l.quadraticCurveTo(0,0,x*uo(b),x*ho(b)),l.lineTo(g*uo(k),g*ho(k)),l.lineTo(x*uo(v),x*ho(v))}else l.quadraticCurveTo(0,0,g*uo(b),g*ho(b)),l.arc(0,0,g,b,v);if(l.quadraticCurveTo(0,0,y*uo(f),y*ho(f)),l.closePath(),s)return l=null,s+""||null}return e&&(s.headRadius=function(t){return arguments.length?(e="function"==typeof t?t:To(+t),s):e}),s.radius=function(e){return arguments.length?(a=i="function"==typeof e?e:To(+e),s):a},s.sourceRadius=function(e){return arguments.length?(a="function"==typeof e?e:To(+e),s):a},s.targetRadius=function(e){return arguments.length?(i="function"==typeof e?e:To(+e),s):i},s.startAngle=function(e){return arguments.length?(n="function"==typeof e?e:To(+e),s):n},s.endAngle=function(e){return arguments.length?(o="function"==typeof e?e:To(+e),s):o},s.padAngle=function(e){return arguments.length?(c="function"==typeof e?e:To(+e),s):c},s.source=function(e){return arguments.length?(t=e,s):t},s.target=function(e){return arguments.length?(r=e,s):r},s.context=function(e){return arguments.length?(l=null==e?null:e,s):l},s}var Go=Array.prototype.slice;function Io(e,t){return e-t}var Wo=e=>()=>e;function Fo(e,t){for(var r,a=-1,i=t.length;++aa!=p>a&&r<(d-s)*(a-u)/(p-u)+s&&(i=-i)}return i}function Oo(e,t,r){var a;return function(e,t,r){return(t[0]-e[0])*(r[1]-e[1])==(r[0]-e[0])*(t[1]-e[1])}(e,t,r)&&function(e,t,r){return e<=t&&t<=r||r<=t&&t<=e}(e[a=+(e[0]===t[0])],r[a],t[a])}function Ko(){}var Jo=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Vo(){var e=1,t=1,r=Q,a=c;function i(e){var t=r(e);if(Array.isArray(t))t=t.slice().sort(Io);else{const r=w(e,jo);for(t=$(...Z(r[0],r[1],t),t);t[t.length-1]>=r[1];)t.pop();for(;t[1]n(e,t)))}function n(r,i){const n=null==i?NaN:+i;if(isNaN(n))throw new Error(`invalid value: ${i}`);var c=[],l=[];return function(r,a,i){var n,c,l,s,u,h,d=new Array,p=new Array;n=c=-1,s=Yo(r[0],a),Jo[s<<1].forEach(y);for(;++n=a,Jo[u<<2].forEach(y);for(;++n0?c.push([e]):l.push(e)})),l.forEach((function(e){for(var t,r=0,a=c.length;r0&&n0&&o=0&&n>=0))throw new Error("invalid size");return e=a,t=n,i},i.thresholds=function(e){return arguments.length?(r="function"==typeof e?e:Array.isArray(e)?Wo(Go.call(e)):Wo(e),i):r},i.smooth=function(e){return arguments.length?(a=e?c:Ko,i):a===c},i}function jo(e){return isFinite(e)?e:NaN}function Yo(e,t){return null!=e&&+e>=t}function $o(e){return null==e||isNaN(e=+e)?-1/0:e}function Uo(e,t,r,a){const i=a-t,n=r-t,o=isFinite(i)||isFinite(n)?i/n:Math.sign(i)/Math.sign(n);return isNaN(o)?e:e+o-.5}function qo(e){return e[0]}function Zo(e){return e[1]}function Qo(){return 1}const Xo=134217729;function ec(e,t,r,a,i){let n,o,c,l,s=t[0],u=a[0],h=0,d=0;u>s==u>-s?(n=s,s=t[++h]):(n=u,u=a[++d]);let p=0;if(hs==u>-s?(o=s+n,c=n-(o-s),s=t[++h]):(o=u+n,c=n-(o-u),u=a[++d]),n=o,0!==c&&(i[p++]=c);hs==u>-s?(o=n+s,l=o-n,c=n-(o-l)+(s-l),s=t[++h]):(o=n+u,l=o-n,c=n-(o-l)+(u-l),u=a[++d]),n=o,0!==c&&(i[p++]=c);for(;h=33306690738754716e-32*s?l:-function(e,t,r,a,i,n,o){let c,l,s,u,h,d,p,y,f,m,g,b,v,x,k,w,C,_;const S=e-i,A=r-i,M=t-n,T=a-n;x=S*T,d=Xo*S,p=d-(d-S),y=S-p,d=Xo*T,f=d-(d-T),m=T-f,k=y*m-(x-p*f-y*f-p*m),w=M*A,d=Xo*M,p=d-(d-M),y=M-p,d=Xo*A,f=d-(d-A),m=A-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,rc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,rc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,rc[2]=b-(_-h)+(g-h),rc[3]=_;let B=function(e,t){let r=t[0];for(let a=1;a=L||-B>=L)return B;if(h=e-S,c=e-(S+h)+(h-i),h=r-A,s=r-(A+h)+(h-i),h=t-M,l=t-(M+h)+(h-n),h=a-T,u=a-(T+h)+(h-n),0===c&&0===l&&0===s&&0===u)return B;if(L=11093356479670487e-47*o+33306690738754706e-32*Math.abs(B),B+=S*u+T*c-(M*s+A*l),B>=L||-B>=L)return B;x=c*T,d=Xo*c,p=d-(d-c),y=c-p,d=Xo*T,f=d-(d-T),m=T-f,k=y*m-(x-p*f-y*f-p*m),w=l*A,d=Xo*l,p=d-(d-l),y=l-p,d=Xo*A,f=d-(d-A),m=A-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,oc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,oc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,oc[2]=b-(_-h)+(g-h),oc[3]=_;const E=ec(4,rc,4,oc,ac);x=S*u,d=Xo*S,p=d-(d-S),y=S-p,d=Xo*u,f=d-(d-u),m=u-f,k=y*m-(x-p*f-y*f-p*m),w=M*s,d=Xo*M,p=d-(d-M),y=M-p,d=Xo*s,f=d-(d-s),m=s-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,oc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,oc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,oc[2]=b-(_-h)+(g-h),oc[3]=_;const R=ec(E,ac,4,oc,ic);x=c*u,d=Xo*c,p=d-(d-c),y=c-p,d=Xo*u,f=d-(d-u),m=u-f,k=y*m-(x-p*f-y*f-p*m),w=l*s,d=Xo*l,p=d-(d-l),y=l-p,d=Xo*s,f=d-(d-s),m=s-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,oc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,oc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,oc[2]=b-(_-h)+(g-h),oc[3]=_;const H=ec(R,ic,4,oc,nc);return nc[H-1]}(e,t,r,a,i,n,s)}const lc=Math.pow(2,-52),sc=new Uint32Array(512);class uc{static from(e,t=mc,r=gc){const a=e.length,i=new Float64Array(2*a);for(let n=0;n>1;if(t>0&&"number"!=typeof e[0])throw new Error("Expected coords to contain numbers.");this.coords=e;const r=Math.max(2*t-5,0);this._triangles=new Uint32Array(3*r),this._halfedges=new Int32Array(3*r),this._hashSize=Math.ceil(Math.sqrt(t)),this._hullPrev=new Uint32Array(t),this._hullNext=new Uint32Array(t),this._hullTri=new Uint32Array(t),this._hullHash=new Int32Array(this._hashSize),this._ids=new Uint32Array(t),this._dists=new Float64Array(t),this.update()}update(){const{coords:e,_hullPrev:t,_hullNext:r,_hullTri:a,_hullHash:i}=this,n=e.length>>1;let o=1/0,c=1/0,l=-1/0,s=-1/0;for(let t=0;tl&&(l=r),a>s&&(s=a),this._ids[t]=t}const u=(o+l)/2,h=(c+s)/2;let d,p,y;for(let t=0,r=1/0;t0&&(p=t,r=a)}let g=e[2*p],b=e[2*p+1],v=1/0;for(let t=0;ta&&(t[r++]=i,a=n)}return this.hull=t.subarray(0,r),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(cc(f,m,g,b,x,k)<0){const e=p,t=g,r=b;p=y,g=x,b=k,y=e,x=t,k=r}const w=function(e,t,r,a,i,n){const o=r-e,c=a-t,l=i-e,s=n-t,u=o*o+c*c,h=l*l+s*s,d=.5/(o*s-c*l),p=e+(s*u-c*h)*d,y=t+(o*h-l*u)*d;return{x:p,y:y}}(f,m,g,b,x,k);this._cx=w.x,this._cy=w.y;for(let t=0;t0&&Math.abs(s-n)<=lc&&Math.abs(u-o)<=lc)continue;if(n=s,o=u,l===d||l===p||l===y)continue;let h=0;for(let e=0,t=this._hashKey(s,u);e=0;)if(m=f,m===h){m=-1;break}if(-1===m)continue;let g=this._addTriangle(m,l,r[m],-1,-1,a[m]);a[l]=this._legalize(g+2),a[m]=g,C++;let b=r[m];for(;f=r[b],cc(s,u,e[2*b],e[2*b+1],e[2*f],e[2*f+1])<0;)g=this._addTriangle(b,l,f,a[l],-1,a[b]),a[l]=this._legalize(g+2),r[b]=b,C--,b=f;if(m===h)for(;f=t[m],cc(s,u,e[2*f],e[2*f+1],e[2*m],e[2*m+1])<0;)g=this._addTriangle(f,l,m,-1,a[m],a[f]),this._legalize(g+2),a[f]=g,r[m]=m,C--,m=f;this._hullStart=t[l]=m,r[m]=t[b]=l,r[l]=b,i[this._hashKey(s,u)]=l,i[this._hashKey(e[2*m],e[2*m+1])]=m}this.hull=new Uint32Array(C);for(let e=0,t=this._hullStart;e0?3-r:1+r)/4}(e-this._cx,t-this._cy)*this._hashSize)%this._hashSize}_legalize(e){const{_triangles:t,_halfedges:r,coords:a}=this;let i=0,n=0;for(;;){const o=r[e],c=e-e%3;if(n=c+(e+2)%3,-1===o){if(0===i)break;e=sc[--i];continue}const l=o-o%3,s=c+(e+1)%3,u=l+(o+2)%3,h=t[n],d=t[e],p=t[s],y=t[u];if(dc(a[2*h],a[2*h+1],a[2*d],a[2*d+1],a[2*p],a[2*p+1],a[2*y],a[2*y+1])){t[e]=y,t[o]=h;const a=r[u];if(-1===a){let t=this._hullStart;do{if(this._hullTri[t]===u){this._hullTri[t]=e;break}t=this._hullPrev[t]}while(t!==this._hullStart)}this._link(e,a),this._link(o,r[n]),this._link(n,u);const c=l+(o+1)%3;i=r&&t[e[o]]>n;)e[o+1]=e[o--];e[o+1]=a}else{let i=r+1,n=a;fc(e,r+a>>1,i),t[e[r]]>t[e[a]]&&fc(e,r,a),t[e[i]]>t[e[a]]&&fc(e,i,a),t[e[r]]>t[e[i]]&&fc(e,r,i);const o=e[i],c=t[o];for(;;){do{i++}while(t[e[i]]c);if(n=n-r?(yc(e,t,i,a),yc(e,t,r,n-1)):(yc(e,t,r,n-1),yc(e,t,i,a))}}function fc(e,t,r){const a=e[t];e[t]=e[r],e[r]=a}function mc(e){return e[0]}function gc(e){return e[1]}const bc=1e-6;class vc{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(e,t){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(e,t){this._+=`L${this._x1=+e},${this._y1=+t}`}arc(e,t,r){const a=(e=+e)+(r=+r),i=t=+t;if(r<0)throw new Error("negative radius");null===this._x1?this._+=`M${a},${i}`:(Math.abs(this._x1-a)>bc||Math.abs(this._y1-i)>bc)&&(this._+="L"+a+","+i),r&&(this._+=`A${r},${r},0,1,1,${e-r},${t}A${r},${r},0,1,1,${this._x1=a},${this._y1=i}`)}rect(e,t,r,a){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${+r}v${+a}h${-r}Z`}value(){return this._||null}}class xc{constructor(){this._=[]}moveTo(e,t){this._.push([e,t])}closePath(){this._.push(this._[0].slice())}lineTo(e,t){this._.push([e,t])}value(){return this._.length?this._:null}}class kc{constructor(e,[t,r,a,i]=[0,0,960,500]){if(!((a=+a)>=(t=+t)&&(i=+i)>=(r=+r)))throw new Error("invalid bounds");this.delaunay=e,this._circumcenters=new Float64Array(2*e.points.length),this.vectors=new Float64Array(2*e.points.length),this.xmax=a,this.xmin=t,this.ymax=i,this.ymin=r,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:e,hull:t,triangles:r},vectors:a}=this;let i,n;const o=this.circumcenters=this._circumcenters.subarray(0,r.length/3*2);for(let a,c,l=0,s=0,u=r.length;l1;)i-=2;for(let e=2;e0){if(t>=this.ymax)return null;(i=(this.ymax-t)/a)0){if(e>=this.xmax)return null;(i=(this.xmax-e)/r)this.xmax?2:0)|(tthis.ymax?8:0)}_simplify(e){if(e&&e.length>4){for(let t=0;t2&&function(e){const{triangles:t,coords:r}=e;for(let e=0;e1e-10)return!1}return!0}(e)){this.collinear=Int32Array.from({length:t.length/2},((e,t)=>t)).sort(((e,r)=>t[2*e]-t[2*r]||t[2*e+1]-t[2*r+1]));const e=this.collinear[0],r=this.collinear[this.collinear.length-1],a=[t[2*e],t[2*e+1],t[2*r],t[2*r+1]],i=1e-8*Math.hypot(a[3]-a[1],a[2]-a[0]);for(let e=0,r=t.length/2;e0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=a[0],n[a[0]]=1,2===a.length&&(n[a[1]]=0,this.triangles[1]=a[1],this.triangles[2]=a[1]))}voronoi(e){return new kc(this,e)}*neighbors(e){const{inedges:t,hull:r,_hullIndex:a,halfedges:i,triangles:n,collinear:o}=this;if(o){const t=o.indexOf(e);return t>0&&(yield o[t-1]),void(t=0&&i!==r&&i!==a;)r=i;return i}_step(e,t,r){const{inedges:a,hull:i,_hullIndex:n,halfedges:o,triangles:c,points:l}=this;if(-1===a[e]||!l.length)return(e+1)%(l.length>>1);let s=e,u=Cc(t-l[2*e],2)+Cc(r-l[2*e+1],2);const h=a[e];let d=h;do{let a=c[d];const h=Cc(t-l[2*a],2)+Cc(r-l[2*a+1],2);if(h9999?"+"+Rc(t,6):Rc(t,4))+"-"+Rc(e.getUTCMonth()+1,2)+"-"+Rc(e.getUTCDate(),2)+(n?"T"+Rc(r,2)+":"+Rc(a,2)+":"+Rc(i,2)+"."+Rc(n,3)+"Z":i?"T"+Rc(r,2)+":"+Rc(a,2)+":"+Rc(i,2)+"Z":a||r?"T"+Rc(r,2)+":"+Rc(a,2)+"Z":"")}function Dc(e){var t=new RegExp('["'+e+"\n\r]"),r=e.charCodeAt(0);function a(e,t){var a,i=[],n=e.length,o=0,c=0,l=n<=0,s=!1;function u(){if(l)return Bc;if(s)return s=!1,Tc;var t,a,i=o;if(34===e.charCodeAt(i)){for(;o++=n?l=!0:10===(a=e.charCodeAt(o++))?s=!0:13===a&&(s=!0,10===e.charCodeAt(o)&&++o),e.slice(i+1,t-1).replace(/""/g,'"')}for(;otl(t,r).then((t=>(new DOMParser).parseFromString(t,e)))}var cl=ol("application/xml"),ll=ol("text/html"),sl=ol("image/svg+xml");function ul(e,t,r,a){if(isNaN(t)||isNaN(r))return e;var i,n,o,c,l,s,u,h,d,p=e._root,y={data:a},f=e._x0,m=e._y0,g=e._x1,b=e._y1;if(!p)return e._root=y,e;for(;p.length;)if((s=t>=(n=(f+g)/2))?f=n:g=n,(u=r>=(o=(m+b)/2))?m=o:b=o,i=p,!(p=p[h=u<<1|s]))return i[h]=y,e;if(c=+e._x.call(null,p.data),l=+e._y.call(null,p.data),t===c&&r===l)return y.next=p,i?i[h]=y:e._root=y,e;do{i=i?i[h]=new Array(4):e._root=new Array(4),(s=t>=(n=(f+g)/2))?f=n:g=n,(u=r>=(o=(m+b)/2))?m=o:b=o}while((h=u<<1|s)==(d=(l>=o)<<1|c>=n));return i[d]=p,i[h]=y,e}function hl(e,t,r,a,i){this.node=e,this.x0=t,this.y0=r,this.x1=a,this.y1=i}function dl(e){return e[0]}function pl(e){return e[1]}function yl(e,t,r){var a=new fl(null==t?dl:t,null==r?pl:r,NaN,NaN,NaN,NaN);return null==e?a:a.addAll(e)}function fl(e,t,r,a,i,n){this._x=e,this._y=t,this._x0=r,this._y0=a,this._x1=i,this._y1=n,this._root=void 0}function ml(e){for(var t={data:e.data},r=t;e=e.next;)r=r.next={data:e.data};return t}var gl=yl.prototype=fl.prototype;function bl(e){return function(){return e}}function vl(e){return 1e-6*(e()-.5)}function xl(e){return e.x+e.vx}function kl(e){return e.y+e.vy}function wl(e){return e.index}function Cl(e,t){var r=e.get(t);if(!r)throw new Error("node not found: "+t);return r}gl.copy=function(){var e,t,r=new fl(this._x,this._y,this._x0,this._y0,this._x1,this._y1),a=this._root;if(!a)return r;if(!a.length)return r._root=ml(a),r;for(e=[{source:a,target:r._root=new Array(4)}];a=e.pop();)for(var i=0;i<4;++i)(t=a.source[i])&&(t.length?e.push({source:t,target:a.target[i]=new Array(4)}):a.target[i]=ml(t));return r},gl.add=function(e){const t=+this._x.call(null,e),r=+this._y.call(null,e);return ul(this.cover(t,r),t,r,e)},gl.addAll=function(e){var t,r,a,i,n=e.length,o=new Array(n),c=new Array(n),l=1/0,s=1/0,u=-1/0,h=-1/0;for(r=0;ru&&(u=a),ih&&(h=i));if(l>u||s>h)return this;for(this.cover(l,s).cover(u,h),r=0;re||e>=i||a>t||t>=n;)switch(c=(td||(n=l.y0)>p||(o=l.x1)=g)<<1|e>=m)&&(l=y[y.length-1],y[y.length-1]=y[y.length-1-s],y[y.length-1-s]=l)}else{var b=e-+this._x.call(null,f.data),v=t-+this._y.call(null,f.data),x=b*b+v*v;if(x=(c=(y+m)/2))?y=c:m=c,(u=o>=(l=(f+g)/2))?f=l:g=l,t=p,!(p=p[h=u<<1|s]))return this;if(!p.length)break;(t[h+1&3]||t[h+2&3]||t[h+3&3])&&(r=t,d=h)}for(;p.data!==e;)if(a=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,a?(i?a.next=i:delete a.next,this):t?(i?t[h]=i:delete t[h],(p=t[0]||t[1]||t[2]||t[3])&&p===(t[3]||t[2]||t[1]||t[0])&&!p.length&&(r?r[d]=p:this._root=p),this):(this._root=i,this)},gl.removeAll=function(e){for(var t=0,r=e.length;t1?a[0]+a.slice(2):a,+e.slice(r+1)]}function Bl(e){return(e=Tl(Math.abs(e)))?e[1]:NaN}var Ll,El=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Rl(e){if(!(t=El.exec(e)))throw new Error("invalid format: "+e);var t;return new Hl({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function Hl(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function Dl(e,t){var r=Tl(e,t);if(!r)return e+"";var a=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+a:a.length>i+1?a.slice(0,i+1)+"."+a.slice(i+1):a+new Array(i-a.length+2).join("0")}Rl.prototype=Hl.prototype,Hl.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Pl={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Dl(100*e,t),r:Dl,s:function(e,t){var r=Tl(e,t);if(!r)return e+"";var a=r[0],i=r[1],n=i-(Ll=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=a.length;return n===o?a:n>o?a+new Array(n-o+1).join("0"):n>0?a.slice(0,n)+"."+a.slice(n):"0."+new Array(1-n).join("0")+Tl(e,Math.max(0,t+n-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Nl(e){return e}var Gl,Il,Wl,Fl=Array.prototype.map,zl=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Ol(e){var t,r,a=void 0===e.grouping||void 0===e.thousands?Nl:(t=Fl.call(e.grouping,Number),r=e.thousands+"",function(e,a){for(var i=e.length,n=[],o=0,c=t[0],l=0;i>0&&c>0&&(l+c+1>a&&(c=Math.max(1,a-l)),n.push(e.substring(i-=c,i+c)),!((l+=c+1)>a));)c=t[o=(o+1)%t.length];return n.reverse().join(r)}),i=void 0===e.currency?"":e.currency[0]+"",n=void 0===e.currency?"":e.currency[1]+"",o=void 0===e.decimal?".":e.decimal+"",c=void 0===e.numerals?Nl:function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(Fl.call(e.numerals,String)),l=void 0===e.percent?"%":e.percent+"",s=void 0===e.minus?"−":e.minus+"",u=void 0===e.nan?"NaN":e.nan+"";function h(e){var t=(e=Rl(e)).fill,r=e.align,h=e.sign,d=e.symbol,p=e.zero,y=e.width,f=e.comma,m=e.precision,g=e.trim,b=e.type;"n"===b?(f=!0,b="g"):Pl[b]||(void 0===m&&(m=12),g=!0,b="g"),(p||"0"===t&&"="===r)&&(p=!0,t="0",r="=");var v="$"===d?i:"#"===d&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x="$"===d?n:/[%p]/.test(b)?l:"",k=Pl[b],w=/[defgprs%]/.test(b);function C(e){var i,n,l,d=v,C=x;if("c"===b)C=k(e)+C,e="";else{var _=(e=+e)<0||1/e<0;if(e=isNaN(e)?u:k(Math.abs(e),m),g&&(e=function(e){e:for(var t,r=e.length,a=1,i=-1;a0&&(i=0)}return i>0?e.slice(0,i)+e.slice(t+1):e}(e)),_&&0==+e&&"+"!==h&&(_=!1),d=(_?"("===h?h:s:"-"===h||"("===h?"":h)+d,C=("s"===b?zl[8+Ll/3]:"")+C+(_&&"("===h?")":""),w)for(i=-1,n=e.length;++i(l=e.charCodeAt(i))||l>57){C=(46===l?o+e.slice(i+1):e.slice(i))+C,e=e.slice(0,i);break}}f&&!p&&(e=a(e,1/0));var S=d.length+e.length+C.length,A=S>1)+d+e+C+A.slice(S);break;default:e=A+d+e+C}return c(e)}return m=void 0===m?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),C.toString=function(){return e+""},C}return{format:h,formatPrefix:function(e,t){var r=h(((e=Rl(e)).type="f",e)),a=3*Math.max(-8,Math.min(8,Math.floor(Bl(t)/3))),i=Math.pow(10,-a),n=zl[8+a/3];return function(e){return r(i*e)+n}}}}function Kl(e){return Gl=Ol(e),Il=Gl.format,Wl=Gl.formatPrefix,Gl}function Jl(e){return Math.max(0,-Bl(Math.abs(e)))}function Vl(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Bl(t)/3)))-Bl(Math.abs(e)))}function jl(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Bl(t)-Bl(e))+1}Kl({thousands:",",grouping:[3],currency:["$",""]});var Yl=1e-6,$l=1e-12,Ul=Math.PI,ql=Ul/2,Zl=Ul/4,Ql=2*Ul,Xl=180/Ul,es=Ul/180,ts=Math.abs,rs=Math.atan,as=Math.atan2,is=Math.cos,ns=Math.ceil,os=Math.exp,cs=Math.hypot,ls=Math.log,ss=Math.pow,us=Math.sin,hs=Math.sign||function(e){return e>0?1:e<0?-1:0},ds=Math.sqrt,ps=Math.tan;function ys(e){return e>1?0:e<-1?Ul:Math.acos(e)}function fs(e){return e>1?ql:e<-1?-ql:Math.asin(e)}function ms(e){return(e=us(e/2))*e}function gs(){}function bs(e,t){e&&xs.hasOwnProperty(e.type)&&xs[e.type](e,t)}var vs={Feature:function(e,t){bs(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,a=-1,i=r.length;++a=0?1:-1,i=a*r,n=is(t=(t*=es)/2+Zl),o=us(t),c=Ts*o,l=Ms*n+c*is(i),s=c*a*us(i);Fs.add(as(s,l)),As=e,Ms=n,Ts=o}function Ys(e){return[as(e[1],e[0]),fs(e[2])]}function $s(e){var t=e[0],r=e[1],a=is(r);return[a*is(t),a*us(t),us(r)]}function Us(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function qs(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function Zs(e,t){e[0]+=t[0],e[1]+=t[1],e[2]+=t[2]}function Qs(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function Xs(e){var t=ds(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}var eu,tu,ru,au,iu,nu,ou,cu,lu,su,uu,hu,du,pu,yu,fu,mu={point:gu,lineStart:vu,lineEnd:xu,polygonStart:function(){mu.point=ku,mu.lineStart=wu,mu.lineEnd=Cu,Gs=new C,Os.polygonStart()},polygonEnd:function(){Os.polygonEnd(),mu.point=gu,mu.lineStart=vu,mu.lineEnd=xu,Fs<0?(Bs=-(Es=180),Ls=-(Rs=90)):Gs>Yl?Rs=90:Gs<-1e-6&&(Ls=-90),Ws[0]=Bs,Ws[1]=Es},sphere:function(){Bs=-(Es=180),Ls=-(Rs=90)}};function gu(e,t){Is.push(Ws=[Bs=e,Es=e]),tRs&&(Rs=t)}function bu(e,t){var r=$s([e*es,t*es]);if(Ns){var a=qs(Ns,r),i=qs([a[1],-a[0],0],a);Xs(i),i=Ys(i);var n,o=e-Hs,c=o>0?1:-1,l=i[0]*Xl*c,s=ts(o)>180;s^(c*HsRs&&(Rs=n):s^(c*Hs<(l=(l+360)%360-180)&&lRs&&(Rs=t)),s?e_u(Bs,Es)&&(Es=e):_u(e,Es)>_u(Bs,Es)&&(Bs=e):Es>=Bs?(eEs&&(Es=e)):e>Hs?_u(Bs,e)>_u(Bs,Es)&&(Es=e):_u(e,Es)>_u(Bs,Es)&&(Bs=e)}else Is.push(Ws=[Bs=e,Es=e]);tRs&&(Rs=t),Ns=r,Hs=e}function vu(){mu.point=bu}function xu(){Ws[0]=Bs,Ws[1]=Es,mu.point=gu,Ns=null}function ku(e,t){if(Ns){var r=e-Hs;Gs.add(ts(r)>180?r+(r>0?360:-360):r)}else Ds=e,Ps=t;Os.point(e,t),bu(e,t)}function wu(){Os.lineStart()}function Cu(){ku(Ds,Ps),Os.lineEnd(),ts(Gs)>Yl&&(Bs=-(Es=180)),Ws[0]=Bs,Ws[1]=Es,Ns=null}function _u(e,t){return(t-=e)<0?t+360:t}function Su(e,t){return e[0]-t[0]}function Au(e,t){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:tUl&&(e-=Math.round(e/Ql)*Ql),[e,t]}function zu(e,t,r){return(e%=Ql)?t||r?Wu(Ku(e),Ju(t,r)):Ku(e):t||r?Ju(t,r):Fu}function Ou(e){return function(t,r){return ts(t+=e)>Ul&&(t-=Math.round(t/Ql)*Ql),[t,r]}}function Ku(e){var t=Ou(e);return t.invert=Ou(-e),t}function Ju(e,t){var r=is(e),a=us(e),i=is(t),n=us(t);function o(e,t){var o=is(t),c=is(e)*o,l=us(e)*o,s=us(t),u=s*r+c*a;return[as(l*i-u*n,c*r-s*a),fs(u*i+l*n)]}return o.invert=function(e,t){var o=is(t),c=is(e)*o,l=us(e)*o,s=us(t),u=s*i-l*n;return[as(l*i+s*n,c*r+u*a),fs(u*r-c*a)]},o}function Vu(e){function t(t){return(t=e(t[0]*es,t[1]*es))[0]*=Xl,t[1]*=Xl,t}return e=zu(e[0]*es,e[1]*es,e.length>2?e[2]*es:0),t.invert=function(t){return(t=e.invert(t[0]*es,t[1]*es))[0]*=Xl,t[1]*=Xl,t},t}function ju(e,t,r,a,i,n){if(r){var o=is(t),c=us(t),l=a*r;null==i?(i=t+a*Ql,n=t-l/2):(i=Yu(o,i),n=Yu(o,n),(a>0?in)&&(i+=a*Ql));for(var s,u=i;a>0?u>n:u1&&t.push(t.pop().concat(t.shift()))},result:function(){var r=t;return t=[],e=null,r}}}function Uu(e,t){return ts(e[0]-t[0])=0;--n)i.point((u=s[n])[0],u[1]);else a(d.x,d.p.x,-1,i);d=d.p}s=(d=d.o).z,p=!p}while(!d.v);i.lineEnd()}}}function Qu(e){if(t=e.length){for(var t,r,a=0,i=e[0];++a=0?1:-1,M=A*S,T=M>Ul,B=m*w;if(l.add(as(B*A*us(M),g*_+B*is(M))),o+=T?S+A*Ql:S,T^y>=r^x>=r){var L=qs($s(p),$s(v));Xs(L);var E=qs(n,L);Xs(E);var R=(T^S>=0?-1:1)*fs(E[2]);(a>R||a===R&&(L[0]||L[1]))&&(c+=T^S>=0?1:-1)}}return(o<-1e-6||o0){for(h||(i.polygonStart(),h=!0),i.lineStart(),e=0;e1&&2&l&&d.push(d.pop().concat(d.shift())),o.push(d.filter(rh))}return d}}function rh(e){return e.length>1}function ah(e,t){return((e=e.x)[0]<0?e[1]-ql-Yl:ql-e[1])-((t=t.x)[0]<0?t[1]-ql-Yl:ql-t[1])}Fu.invert=Fu;var ih=th((function(){return!0}),(function(e){var t,r=NaN,a=NaN,i=NaN;return{lineStart:function(){e.lineStart(),t=1},point:function(n,o){var c=n>0?Ul:-Ul,l=ts(n-r);ts(l-Ul)0?ql:-ql),e.point(i,a),e.lineEnd(),e.lineStart(),e.point(c,a),e.point(n,a),t=0):i!==c&&l>=Ul&&(ts(r-i)Yl?rs((us(t)*(n=is(a))*us(r)-us(a)*(i=is(t))*us(e))/(i*n*o)):(t+a)/2}(r,a,n,o),e.point(i,a),e.lineEnd(),e.lineStart(),e.point(c,a),t=0),e.point(r=n,a=o),i=c},lineEnd:function(){e.lineEnd(),r=a=NaN},clean:function(){return 2-t}}}),(function(e,t,r,a){var i;if(null==e)i=r*ql,a.point(-Ul,i),a.point(0,i),a.point(Ul,i),a.point(Ul,0),a.point(Ul,-i),a.point(0,-i),a.point(-Ul,-i),a.point(-Ul,0),a.point(-Ul,i);else if(ts(e[0]-t[0])>Yl){var n=e[0]0,i=ts(t)>Yl;function n(e,r){return is(e)*is(r)>t}function o(e,r,a){var i=[1,0,0],n=qs($s(e),$s(r)),o=Us(n,n),c=n[0],l=o-c*c;if(!l)return!a&&e;var s=t*o/l,u=-t*c/l,h=qs(i,n),d=Qs(i,s);Zs(d,Qs(n,u));var p=h,y=Us(d,p),f=Us(p,p),m=y*y-f*(Us(d,d)-1);if(!(m<0)){var g=ds(m),b=Qs(p,(-y-g)/f);if(Zs(b,d),b=Ys(b),!a)return b;var v,x=e[0],k=r[0],w=e[1],C=r[1];k0^b[1]<(ts(b[0]-x)Ul^(x<=b[0]&&b[0]<=k)){var A=Qs(p,(-y+g)/f);return Zs(A,d),[b,Ys(A)]}}}function c(t,r){var i=a?e:Ul-e,n=0;return t<-i?n|=1:t>i&&(n|=2),r<-i?n|=4:r>i&&(n|=8),n}return th(n,(function(e){var t,r,l,s,u;return{lineStart:function(){s=l=!1,u=1},point:function(h,d){var p,y=[h,d],f=n(h,d),m=a?f?0:c(h,d):f?c(h+(h<0?Ul:-Ul),d):0;if(!t&&(s=l=f)&&e.lineStart(),f!==l&&(!(p=o(t,y))||Uu(t,p)||Uu(y,p))&&(y[2]=1),f!==l)u=0,f?(e.lineStart(),p=o(y,t),e.point(p[0],p[1])):(p=o(t,y),e.point(p[0],p[1],2),e.lineEnd()),t=p;else if(i&&t&&a^f){var g;m&r||!(g=o(y,t,!0))||(u=0,a?(e.lineStart(),e.point(g[0][0],g[0][1]),e.point(g[1][0],g[1][1]),e.lineEnd()):(e.point(g[1][0],g[1][1]),e.lineEnd(),e.lineStart(),e.point(g[0][0],g[0][1],3)))}!f||t&&Uu(t,y)||e.point(y[0],y[1]),t=y,l=f,r=m},lineEnd:function(){l&&e.lineEnd(),t=null},clean:function(){return u|(s&&l)<<1}}}),(function(t,a,i,n){ju(n,e,r,i,t,a)}),a?[0,-e]:[-Ul,e-Ul])}var oh,ch,lh,sh,uh=1e9,hh=-uh;function dh(e,t,r,a){function i(i,n){return e<=i&&i<=r&&t<=n&&n<=a}function n(i,n,c,s){var u=0,h=0;if(null==i||(u=o(i,c))!==(h=o(n,c))||l(i,n)<0^c>0)do{s.point(0===u||3===u?e:r,u>1?a:t)}while((u=(u+c+4)%4)!==h);else s.point(n[0],n[1])}function o(a,i){return ts(a[0]-e)0?0:3:ts(a[0]-r)0?2:1:ts(a[1]-t)0?1:0:i>0?3:2}function c(e,t){return l(e.x,t.x)}function l(e,t){var r=o(e,1),a=o(t,1);return r!==a?r-a:0===r?t[1]-e[1]:1===r?e[0]-t[0]:2===r?e[1]-t[1]:t[0]-e[0]}return function(o){var l,s,u,h,d,p,y,f,m,g,b,v=o,x=$u(),k={point:w,lineStart:function(){k.point=C,s&&s.push(u=[]);g=!0,m=!1,y=f=NaN},lineEnd:function(){l&&(C(h,d),p&&m&&x.rejoin(),l.push(x.result()));k.point=w,m&&v.lineEnd()},polygonStart:function(){v=x,l=[],s=[],b=!0},polygonEnd:function(){var t=function(){for(var t=0,r=0,i=s.length;ra&&(d-n)*(a-o)>(p-o)*(e-n)&&++t:p<=a&&(d-n)*(a-o)<(p-o)*(e-n)&&--t;return t}(),r=b&&t,i=(l=ue(l)).length;(r||i)&&(o.polygonStart(),r&&(o.lineStart(),n(null,null,1,o),o.lineEnd()),i&&Zu(l,c,t,n,o),o.polygonEnd());v=o,l=s=u=null}};function w(e,t){i(e,t)&&v.point(e,t)}function C(n,o){var c=i(n,o);if(s&&u.push([n,o]),g)h=n,d=o,p=c,g=!1,c&&(v.lineStart(),v.point(n,o));else if(c&&m)v.point(n,o);else{var l=[y=Math.max(hh,Math.min(uh,y)),f=Math.max(hh,Math.min(uh,f))],x=[n=Math.max(hh,Math.min(uh,n)),o=Math.max(hh,Math.min(uh,o))];!function(e,t,r,a,i,n){var o,c=e[0],l=e[1],s=0,u=1,h=t[0]-c,d=t[1]-l;if(o=r-c,h||!(o>0)){if(o/=h,h<0){if(o0){if(o>u)return;o>s&&(s=o)}if(o=i-c,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>s&&(s=o)}else if(h>0){if(o0)){if(o/=d,d<0){if(o0){if(o>u)return;o>s&&(s=o)}if(o=n-l,d||!(o<0)){if(o/=d,d<0){if(o>u)return;o>s&&(s=o)}else if(d>0){if(o0&&(e[0]=c+s*h,e[1]=l+s*d),u<1&&(t[0]=c+u*h,t[1]=l+u*d),!0}}}}}(l,x,e,t,r,a)?c&&(v.lineStart(),v.point(n,o),b=!1):(m||(v.lineStart(),v.point(l[0],l[1])),v.point(x[0],x[1]),c||v.lineEnd(),b=!1)}y=n,f=o,m=c}return k}}var ph={sphere:gs,point:gs,lineStart:function(){ph.point=fh,ph.lineEnd=yh},lineEnd:gs,polygonStart:gs,polygonEnd:gs};function yh(){ph.point=ph.lineEnd=gs}function fh(e,t){ch=e*=es,lh=us(t*=es),sh=is(t),ph.point=mh}function mh(e,t){e*=es;var r=us(t*=es),a=is(t),i=ts(e-ch),n=is(i),o=a*us(i),c=sh*r-lh*a*n,l=lh*r+sh*a*n;oh.add(as(ds(o*o+c*c),l)),ch=e,lh=r,sh=a}function gh(e){return oh=new C,Cs(e,ph),+oh}var bh=[null,null],vh={type:"LineString",coordinates:bh};function xh(e,t){return bh[0]=e,bh[1]=t,gh(vh)}var kh={Feature:function(e,t){return Ch(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,a=-1,i=r.length;++a0&&(i=xh(e[n],e[n-1]))>0&&r<=i&&a<=i&&(r+a-i)*(1-Math.pow((r-a)/i,2))<$l*i)return!0;r=a}return!1}function Ah(e,t){return!!eh(e.map(Mh),Th(t))}function Mh(e){return(e=e.map(Th)).pop(),e}function Th(e){return[e[0]*es,e[1]*es]}function Bh(e,t,r){var a=de(e,t-Yl,r).concat(t);return function(e){return a.map((function(t){return[e,t]}))}}function Lh(e,t,r){var a=de(e,t-Yl,r).concat(t);return function(e){return a.map((function(t){return[t,e]}))}}function Eh(){var e,t,r,a,i,n,o,c,l,s,u,h,d=10,p=d,y=90,f=360,m=2.5;function g(){return{type:"MultiLineString",coordinates:b()}}function b(){return de(ns(a/y)*y,r,y).map(u).concat(de(ns(c/f)*f,o,f).map(h)).concat(de(ns(t/d)*d,e,d).filter((function(e){return ts(e%y)>Yl})).map(l)).concat(de(ns(n/p)*p,i,p).filter((function(e){return ts(e%f)>Yl})).map(s))}return g.lines=function(){return b().map((function(e){return{type:"LineString",coordinates:e}}))},g.outline=function(){return{type:"Polygon",coordinates:[u(a).concat(h(o).slice(1),u(r).reverse().slice(1),h(c).reverse().slice(1))]}},g.extent=function(e){return arguments.length?g.extentMajor(e).extentMinor(e):g.extentMinor()},g.extentMajor=function(e){return arguments.length?(a=+e[0][0],r=+e[1][0],c=+e[0][1],o=+e[1][1],a>r&&(e=a,a=r,r=e),c>o&&(e=c,c=o,o=e),g.precision(m)):[[a,c],[r,o]]},g.extentMinor=function(r){return arguments.length?(t=+r[0][0],e=+r[1][0],n=+r[0][1],i=+r[1][1],t>e&&(r=t,t=e,e=r),n>i&&(r=n,n=i,i=r),g.precision(m)):[[t,n],[e,i]]},g.step=function(e){return arguments.length?g.stepMajor(e).stepMinor(e):g.stepMinor()},g.stepMajor=function(e){return arguments.length?(y=+e[0],f=+e[1],g):[y,f]},g.stepMinor=function(e){return arguments.length?(d=+e[0],p=+e[1],g):[d,p]},g.precision=function(d){return arguments.length?(m=+d,l=Bh(n,i,90),s=Lh(t,e,m),u=Bh(c,o,90),h=Lh(a,r,m),g):m},g.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}var Rh,Hh,Dh,Ph,Nh=e=>e,Gh=new C,Ih=new C,Wh={point:gs,lineStart:gs,lineEnd:gs,polygonStart:function(){Wh.lineStart=Fh,Wh.lineEnd=Kh},polygonEnd:function(){Wh.lineStart=Wh.lineEnd=Wh.point=gs,Gh.add(ts(Ih)),Ih=new C},result:function(){var e=Gh/2;return Gh=new C,e}};function Fh(){Wh.point=zh}function zh(e,t){Wh.point=Oh,Rh=Dh=e,Hh=Ph=t}function Oh(e,t){Ih.add(Ph*e-Dh*t),Dh=e,Ph=t}function Kh(){Oh(Rh,Hh)}var Jh=1/0,Vh=Jh,jh=-Jh,Yh=jh,$h={point:function(e,t){ejh&&(jh=e);tYh&&(Yh=t)},lineStart:gs,lineEnd:gs,polygonStart:gs,polygonEnd:gs,result:function(){var e=[[Jh,Vh],[jh,Yh]];return jh=Yh=-(Vh=Jh=1/0),e}};var Uh,qh,Zh,Qh,Xh=0,ed=0,td=0,rd=0,ad=0,id=0,nd=0,od=0,cd=0,ld={point:sd,lineStart:ud,lineEnd:pd,polygonStart:function(){ld.lineStart=yd,ld.lineEnd=fd},polygonEnd:function(){ld.point=sd,ld.lineStart=ud,ld.lineEnd=pd},result:function(){var e=cd?[nd/cd,od/cd]:id?[rd/id,ad/id]:td?[Xh/td,ed/td]:[NaN,NaN];return Xh=ed=td=rd=ad=id=nd=od=cd=0,e}};function sd(e,t){Xh+=e,ed+=t,++td}function ud(){ld.point=hd}function hd(e,t){ld.point=dd,sd(Zh=e,Qh=t)}function dd(e,t){var r=e-Zh,a=t-Qh,i=ds(r*r+a*a);rd+=i*(Zh+e)/2,ad+=i*(Qh+t)/2,id+=i,sd(Zh=e,Qh=t)}function pd(){ld.point=sd}function yd(){ld.point=md}function fd(){gd(Uh,qh)}function md(e,t){ld.point=gd,sd(Uh=Zh=e,qh=Qh=t)}function gd(e,t){var r=e-Zh,a=t-Qh,i=ds(r*r+a*a);rd+=i*(Zh+e)/2,ad+=i*(Qh+t)/2,id+=i,nd+=(i=Qh*e-Zh*t)*(Zh+e),od+=i*(Qh+t),cd+=3*i,sd(Zh=e,Qh=t)}function bd(e){this._context=e}bd.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:this._context.moveTo(e,t),this._point=1;break;case 1:this._context.lineTo(e,t);break;default:this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,Ql)}},result:gs};var vd,xd,kd,wd,Cd,_d=new C,Sd={point:gs,lineStart:function(){Sd.point=Ad},lineEnd:function(){vd&&Md(xd,kd),Sd.point=gs},polygonStart:function(){vd=!0},polygonEnd:function(){vd=null},result:function(){var e=+_d;return _d=new C,e}};function Ad(e,t){Sd.point=Md,xd=wd=e,kd=Cd=t}function Md(e,t){wd-=e,Cd-=t,_d.add(ds(wd*wd+Cd*Cd)),wd=e,Cd=t}let Td,Bd,Ld,Ed;class Rd{constructor(e){this._append=null==e?Hd:function(e){const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);if(t>15)return Hd;if(t!==Td){const e=10**t;Td=t,Bd=function(t){let r=1;this._+=t[0];for(const a=t.length;r4*t&&f--){var x=o+d,k=c+p,w=l+y,C=ds(x*x+k*k+w*w),_=fs(w/=C),S=ts(ts(w)-1)t||ts((g*B+b*L)/v-.5)>.3||o*d+c*p+l*y2?e[2]%360*es:0,B()):[m*Xl,g*Xl,b*Xl]},M.angle=function(e){return arguments.length?(v=e%360*es,B()):v*Xl},M.reflectX=function(e){return arguments.length?(x=e?-1:1,B()):x<0},M.reflectY=function(e){return arguments.length?(k=e?-1:1,B()):k<0},M.precision=function(e){return arguments.length?(o=Od(c,A=e*e),L()):ds(A)},M.fitExtent=function(e,t){return Gd(M,e,t)},M.fitSize=function(e,t){return Id(M,e,t)},M.fitWidth=function(e,t){return Wd(M,e,t)},M.fitHeight=function(e,t){return Fd(M,e,t)},function(){return t=e.apply(this,arguments),M.invert=t.invert&&T,B()}}function Yd(e){var t=0,r=Ul/3,a=jd(e),i=a(t,r);return i.parallels=function(e){return arguments.length?a(t=e[0]*es,r=e[1]*es):[t*Xl,r*Xl]},i}function $d(e,t){var r=us(e),a=(r+us(t))/2;if(ts(a)0?t<-ql+Yl&&(t=-ql+Yl):t>ql-Yl&&(t=ql-Yl);var r=i/ss(ap(t),a);return[r*us(a*e),i-r*is(a*e)]}return n.invert=function(e,t){var r=i-t,n=hs(a)*ds(e*e+r*r),o=as(e,ts(r))*hs(r);return r*a<0&&(o-=Ul*hs(e)*hs(r)),[o/a,2*rs(ss(i/n,1/a))-ql]},n}function np(e,t){return[e,t]}function op(e,t){var r=is(e),a=e===t?us(e):(r-is(t))/(t-e),i=r/a+e;if(ts(a)=0;)t+=r[a].value;else t=1;e.value=t}function Cp(e,t){e instanceof Map?(e=[void 0,e],void 0===t&&(t=Sp)):void 0===t&&(t=_p);for(var r,a,i,n,o,c=new Tp(e),l=[c];r=l.pop();)if((i=t(r.data))&&(o=(i=Array.from(i)).length))for(r.children=i,n=o-1;n>=0;--n)l.push(a=i[n]=new Tp(i[n])),a.parent=r,a.depth=r.depth+1;return c.eachBefore(Mp)}function _p(e){return e.children}function Sp(e){return Array.isArray(e)?e[1]:null}function Ap(e){void 0!==e.data.value&&(e.value=e.data.value),e.data=e.data.data}function Mp(e){var t=0;do{e.height=t}while((e=e.parent)&&e.height<++t)}function Tp(e){this.data=e,this.depth=this.height=0,this.parent=null}function Bp(e){return null==e?null:Lp(e)}function Lp(e){if("function"!=typeof e)throw new Error;return e}function Ep(){return 0}function Rp(e){return function(){return e}}dp.invert=function(e,t){for(var r,a=t,i=a*a,n=i*i*i,o=0;o<12&&(n=(i=(a-=r=(a*(cp+lp*i+n*(sp+up*i))-t)/(cp+3*lp*i+n*(7*sp+9*up*i)))*a)*i*i,!(ts(r)<$l));++o);return[hp*e*(cp+3*lp*i+n*(7*sp+9*up*i))/is(a),fs(us(a)/hp)]},pp.invert=Qd(rs),yp.invert=function(e,t){var r,a=t,i=25;do{var n=a*a,o=n*n;a-=r=(a*(1.007226+n*(.015085+o*(.028874*n-.044475-.005916*o)))-t)/(1.007226+n*(.045255+o*(.259866*n-.311325-.005916*11*o)))}while(ts(r)>Yl&&--i>0);return[e/(.8707+(n=a*a)*(n*(n*n*n*(.003971-.001529*n)-.013791)-.131979)),a]},fp.invert=Qd(fs),mp.invert=Qd((function(e){return 2*rs(e)})),gp.invert=function(e,t){return[-t,2*rs(os(e))-ql]},Tp.prototype=Cp.prototype={constructor:Tp,count:function(){return this.eachAfter(wp)},each:function(e,t){let r=-1;for(const a of this)e.call(t,a,++r,this);return this},eachAfter:function(e,t){for(var r,a,i,n=this,o=[n],c=[],l=-1;n=o.pop();)if(c.push(n),r=n.children)for(a=0,i=r.length;a=0;--a)n.push(r[a]);return this},find:function(e,t){let r=-1;for(const a of this)if(e.call(t,a,++r,this))return a},sum:function(e){return this.eachAfter((function(t){for(var r=+e(t.data)||0,a=t.children,i=a&&a.length;--i>=0;)r+=a[i].value;t.value=r}))},sort:function(e){return this.eachBefore((function(t){t.children&&t.children.sort(e)}))},path:function(e){for(var t=this,r=function(e,t){if(e===t)return e;var r=e.ancestors(),a=t.ancestors(),i=null;e=r.pop(),t=a.pop();for(;e===t;)i=e,e=r.pop(),t=a.pop();return i}(t,e),a=[t];t!==r;)t=t.parent,a.push(t);for(var i=a.length;e!==r;)a.splice(i,0,e),e=e.parent;return a},ancestors:function(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t},descendants:function(){return Array.from(this)},leaves:function(){var e=[];return this.eachBefore((function(t){t.children||e.push(t)})),e},links:function(){var e=this,t=[];return e.each((function(r){r!==e&&t.push({source:r.parent,target:r})})),t},copy:function(){return Cp(this).eachBefore(Ap)},[Symbol.iterator]:function*(){var e,t,r,a,i=this,n=[i];do{for(e=n.reverse(),n=[];i=e.pop();)if(yield i,t=i.children)for(r=0,a=t.length;r(e=(1664525*e+1013904223)%Hp)/Hp}function Pp(e,t){for(var r,a,i=0,n=(e=function(e,t){let r,a,i=e.length;for(;i;)a=t()*i--|0,r=e[i],e[i]=e[a],e[a]=r;return e}(Array.from(e),t)).length,o=[];i0&&r*r>a*a+i*i}function Wp(e,t){for(var r=0;r1e-6?(M+Math.sqrt(M*M-4*A*T))/(2*A):T/M);return{x:a+w+C*B,y:i+_+S*B,r:B}}function Kp(e,t,r){var a,i,n,o,c=e.x-t.x,l=e.y-t.y,s=c*c+l*l;s?(i=t.r+r.r,i*=i,o=e.r+r.r,i>(o*=o)?(a=(s+o-i)/(2*s),n=Math.sqrt(Math.max(0,o/s-a*a)),r.x=e.x-a*c-n*l,r.y=e.y-a*l+n*c):(a=(s+i-o)/(2*s),n=Math.sqrt(Math.max(0,i/s-a*a)),r.x=t.x+a*c-n*l,r.y=t.y+a*l+n*c)):(r.x=t.x+r.r,r.y=t.y)}function Jp(e,t){var r=e.r+t.r-1e-6,a=t.x-e.x,i=t.y-e.y;return r>0&&r*r>a*a+i*i}function Vp(e){var t=e._,r=e.next._,a=t.r+r.r,i=(t.x*r.r+r.x*t.r)/a,n=(t.y*r.r+r.y*t.r)/a;return i*i+n*n}function jp(e){this._=e,this.next=null,this.previous=null}function Yp(e,t){if(!(n=(e=function(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}(e)).length))return 0;var r,a,i,n,o,c,l,s,u,h,d;if((r=e[0]).x=0,r.y=0,!(n>1))return r.r;if(a=e[1],r.x=-a.r,a.x=r.r,a.y=0,!(n>2))return r.r+a.r;Kp(a,r,i=e[2]),r=new jp(r),a=new jp(a),i=new jp(i),r.next=i.previous=a,a.next=r.previous=i,i.next=a.previous=r;e:for(l=3;l1&&!oy(e,t););return e.slice(0,t)}function oy(e,t){if("/"===e[t]){let r=0;for(;t>0&&"\\"===e[--t];)++r;if(!(1&r))return!0}return!1}function cy(e,t){return e.parent===t.parent?1:2}function ly(e){var t=e.children;return t?t[0]:e.t}function sy(e){var t=e.children;return t?t[t.length-1]:e.t}function uy(e,t,r){var a=r/(t.i-e.i);t.c-=a,t.s+=r,e.c+=a,t.z+=r,t.m+=r}function hy(e,t,r){return e.a.parent===t.parent?e.a:r}function dy(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}function py(){var e=cy,t=1,r=1,a=null;function i(i){var l=function(e){for(var t,r,a,i,n,o=new dy(e,0),c=[o];t=c.pop();)if(a=t._.children)for(t.children=new Array(n=a.length),i=n-1;i>=0;--i)c.push(r=t.children[i]=new dy(a[i],i)),r.parent=t;return(o.parent=new dy(null,0)).children=[o],o}(i);if(l.eachAfter(n),l.parent.m=-l.z,l.eachBefore(o),a)i.eachBefore(c);else{var s=i,u=i,h=i;i.eachBefore((function(e){e.xu.x&&(u=e),e.depth>h.depth&&(h=e)}));var d=s===u?1:e(s,u)/2,p=d-s.x,y=t/(u.x+d+p),f=r/(h.depth||1);i.eachBefore((function(e){e.x=(e.x+p)*y,e.y=e.depth*f}))}return i}function n(t){var r=t.children,a=t.parent.children,i=t.i?a[t.i-1]:null;if(r){!function(e){for(var t,r=0,a=0,i=e.children,n=i.length;--n>=0;)(t=i[n]).z+=r,t.m+=r,r+=t.s+(a+=t.c)}(t);var n=(r[0].z+r[r.length-1].z)/2;i?(t.z=i.z+e(t._,i._),t.m=t.z-n):t.z=n}else i&&(t.z=i.z+e(t._,i._));t.parent.A=function(t,r,a){if(r){for(var i,n=t,o=t,c=r,l=n.parent.children[0],s=n.m,u=o.m,h=c.m,d=l.m;c=sy(c),n=ly(n),c&&n;)l=ly(l),(o=sy(o)).a=t,(i=c.z+h-n.z-s+e(c._,n._))>0&&(uy(hy(c,t,a),t,i),s+=i,u+=i),h+=c.m,s+=n.m,d+=l.m,u+=o.m;c&&!sy(o)&&(o.t=c,o.m+=h-u),n&&!ly(l)&&(l.t=n,l.m+=s-d,a=t)}return a}(t,i,t.parent.A||a[0])}function o(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function c(e){e.x*=t,e.y=e.depth*r}return i.separation=function(t){return arguments.length?(e=t,i):e},i.size=function(e){return arguments.length?(a=!1,t=+e[0],r=+e[1],i):a?null:[t,r]},i.nodeSize=function(e){return arguments.length?(a=!0,t=+e[0],r=+e[1],i):a?[t,r]:null},i}function yy(e,t,r,a,i){for(var n,o=e.children,c=-1,l=o.length,s=e.value&&(i-r)/e.value;++cd&&(d=c),m=u*u*f,(p=Math.max(d/m,m/h))>y){u-=c;break}y=p}g.push(o={value:u,dice:l1?t:1)},r}(fy);var by=function e(t){function r(e,r,a,i,n){if((o=e._squarify)&&o.ratio===t)for(var o,c,l,s,u,h=-1,d=o.length,p=e.value;++h1?t:1)},r}(fy);function vy(e,t,r){return(t[0]-e[0])*(r[1]-e[1])-(t[1]-e[1])*(r[0]-e[0])}function xy(e,t){return e[0]-t[0]||e[1]-t[1]}function ky(e){const t=e.length,r=[0,1];let a,i=2;for(a=2;a1&&vy(e[r[i-2]],e[r[i-1]],e[a])<=0;)--i;r[i++]=a}return r.slice(0,i)}var wy=Math.random,Cy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,1===arguments.length?(r=e,e=0):r-=e,function(){return t()*r+e}}return r.source=e,r}(wy),_y=function e(t){function r(e,r){return arguments.length<2&&(r=e,e=0),e=Math.floor(e),r=Math.floor(r)-e,function(){return Math.floor(t()*r+e)}}return r.source=e,r}(wy),Sy=function e(t){function r(e,r){var a,i;return e=null==e?0:+e,r=null==r?1:+r,function(){var n;if(null!=a)n=a,a=null;else do{a=2*t()-1,n=2*t()-1,i=a*a+n*n}while(!i||i>1);return e+r*n*Math.sqrt(-2*Math.log(i)/i)}}return r.source=e,r}(wy),Ay=function e(t){var r=Sy.source(t);function a(){var e=r.apply(this,arguments);return function(){return Math.exp(e())}}return a.source=e,a}(wy),My=function e(t){function r(e){return(e=+e)<=0?()=>0:function(){for(var r=0,a=e;a>1;--a)r+=t();return r+a*t()}}return r.source=e,r}(wy),Ty=function e(t){var r=My.source(t);function a(e){if(0==(e=+e))return t;var a=r(e);return function(){return a()/e}}return a.source=e,a}(wy),By=function e(t){function r(e){return function(){return-Math.log1p(-t())/e}}return r.source=e,r}(wy),Ly=function e(t){function r(e){if((e=+e)<0)throw new RangeError("invalid alpha");return e=1/-e,function(){return Math.pow(1-t(),e)}}return r.source=e,r}(wy),Ey=function e(t){function r(e){if((e=+e)<0||e>1)throw new RangeError("invalid p");return function(){return Math.floor(t()+e)}}return r.source=e,r}(wy),Ry=function e(t){function r(e){if((e=+e)<0||e>1)throw new RangeError("invalid p");return 0===e?()=>1/0:1===e?()=>1:(e=Math.log1p(-e),function(){return 1+Math.floor(Math.log1p(-t())/e)})}return r.source=e,r}(wy),Hy=function e(t){var r=Sy.source(t)();function a(e,a){if((e=+e)<0)throw new RangeError("invalid k");if(0===e)return()=>0;if(a=null==a?1:+a,1===e)return()=>-Math.log1p(-t())*a;var i=(e<1?e+1:e)-1/3,n=1/(3*Math.sqrt(i)),o=e<1?()=>Math.pow(t(),1/e):()=>1;return function(){do{do{var e=r(),c=1+n*e}while(c<=0);c*=c*c;var l=1-t()}while(l>=1-.0331*e*e*e*e&&Math.log(l)>=.5*e*e+i*(1-c+Math.log(c)));return i*c*o()*a}}return a.source=e,a}(wy),Dy=function e(t){var r=Hy.source(t);function a(e,t){var a=r(e),i=r(t);return function(){var e=a();return 0===e?0:e/(e+i())}}return a.source=e,a}(wy),Py=function e(t){var r=Ry.source(t),a=Dy.source(t);function i(e,t){return e=+e,(t=+t)>=1?()=>e:t<=0?()=>0:function(){for(var i=0,n=e,o=t;n*o>16&&n*(1-o)>16;){var c=Math.floor((n+1)*o),l=a(c,n-c+1)();l<=o?(i+=c,n-=c,o=(o-l)/(1-l)):(n=c-1,o/=l)}for(var s=o<.5,u=r(s?o:1-o),h=u(),d=0;h<=n;++d)h+=u();return i+(s?d:n-d)}}return i.source=e,i}(wy),Ny=function e(t){function r(e,r,a){var i;return 0==(e=+e)?i=e=>-Math.log(e):(e=1/e,i=t=>Math.pow(t,e)),r=null==r?0:+r,a=null==a?1:+a,function(){return r+a*i(-Math.log1p(-t()))}}return r.source=e,r}(wy),Gy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*Math.tan(Math.PI*t())}}return r.source=e,r}(wy),Iy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,function(){var a=t();return e+r*Math.log(a/(1-a))}}return r.source=e,r}(wy),Wy=function e(t){var r=Hy.source(t),a=Py.source(t);function i(e){return function(){for(var i=0,n=e;n>16;){var o=Math.floor(.875*n),c=r(o)();if(c>n)return i+a(o-1,n/c)();i+=o,n-=c}for(var l=-Math.log1p(-t()),s=0;l<=n;++s)l-=Math.log1p(-t());return i+s}}return i.source=e,i}(wy);const Fy=1/4294967296;function zy(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function Oy(e,t){switch(arguments.length){case 0:break;case 1:"function"==typeof e?this.interpolator(e):this.range(e);break;default:this.domain(e),"function"==typeof t?this.interpolator(t):this.range(t)}return this}const Ky=Symbol("implicit");function Jy(){var e=new _,t=[],r=[],a=Ky;function i(i){let n=e.get(i);if(void 0===n){if(a!==Ky)return a;e.set(i,n=t.push(i)-1)}return r[n%r.length]}return i.domain=function(r){if(!arguments.length)return t.slice();t=[],e=new _;for(const a of r)e.has(a)||e.set(a,t.push(a)-1);return i},i.range=function(e){return arguments.length?(r=Array.from(e),i):r.slice()},i.unknown=function(e){return arguments.length?(a=e,i):a},i.copy=function(){return Jy(t,r).unknown(a)},zy.apply(i,arguments),i}function Vy(){var e,t,r=Jy().unknown(void 0),a=r.domain,i=r.range,n=0,o=1,c=!1,l=0,s=0,u=.5;function h(){var r=a().length,h=ot&&(r=e,e=t,t=r),function(r){return Math.max(e,Math.min(t,r))}}(o[0],o[e-1])),a=e>2?Qy:Zy,i=n=null,h}function h(t){return null==t||isNaN(t=+t)?r:(i||(i=a(o.map(e),c,l)))(e(s(t)))}return h.invert=function(r){return s(t((n||(n=a(c,o.map(e),Wa)))(r)))},h.domain=function(e){return arguments.length?(o=Array.from(e,Yy),u()):o.slice()},h.range=function(e){return arguments.length?(c=Array.from(e),u()):c.slice()},h.rangeRound=function(e){return c=Array.from(e),l=Va,u()},h.clamp=function(e){return arguments.length?(s=!!e||Uy,u()):s!==Uy},h.interpolate=function(e){return arguments.length?(l=e,u()):l},h.unknown=function(e){return arguments.length?(r=e,h):r},function(r,a){return e=r,t=a,u()}}function tf(){return ef()(Uy,Uy)}function rf(e,t,r,a){var i,n=q(e,t,r);switch((a=Rl(null==a?",f":a)).type){case"s":var o=Math.max(Math.abs(e),Math.abs(t));return null!=a.precision||isNaN(i=Vl(n,o))||(a.precision=i),Wl(a,o);case"":case"e":case"g":case"p":case"r":null!=a.precision||isNaN(i=jl(n,Math.max(Math.abs(e),Math.abs(t))))||(a.precision=i-("e"===a.type));break;case"f":case"%":null!=a.precision||isNaN(i=Jl(n))||(a.precision=i-2*("%"===a.type))}return Il(a)}function af(e){var t=e.domain;return e.ticks=function(e){var r=t();return $(r[0],r[r.length-1],null==e?10:e)},e.tickFormat=function(e,r){var a=t();return rf(a[0],a[a.length-1],null==e?10:e,r)},e.nice=function(r){null==r&&(r=10);var a,i,n=t(),o=0,c=n.length-1,l=n[o],s=n[c],u=10;for(s0;){if((i=U(l,s,r))===a)return n[o]=l,n[c]=s,t(n);if(i>0)l=Math.floor(l/i)*i,s=Math.ceil(s/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,s=Math.floor(s*i)/i}a=i}return e},e}function nf(e,t){var r,a=0,i=(e=e.slice()).length-1,n=e[a],o=e[i];return o-e(-t,r)}function df(e){const t=e(of,cf),r=t.domain;let a,i,n=10;function o(){return a=function(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}(n),i=function(e){return 10===e?uf:e===Math.E?Math.exp:t=>Math.pow(e,t)}(n),r()[0]<0?(a=hf(a),i=hf(i),e(lf,sf)):e(of,cf),t}return t.base=function(e){return arguments.length?(n=+e,o()):n},t.domain=function(e){return arguments.length?(r(e),o()):r()},t.ticks=e=>{const t=r();let o=t[0],c=t[t.length-1];const l=c0){for(;h<=d;++h)for(s=1;sc)break;y.push(u)}}else for(;h<=d;++h)for(s=n-1;s>=1;--s)if(u=h>0?s/i(-h):s*i(h),!(uc)break;y.push(u)}2*y.length{if(null==e&&(e=10),null==r&&(r=10===n?"s":","),"function"!=typeof r&&(n%1||null!=(r=Rl(r)).precision||(r.trim=!0),r=Il(r)),e===1/0)return r;const o=Math.max(1,n*e/t.ticks().length);return e=>{let t=e/i(Math.round(a(e)));return t*nr(nf(r(),{floor:e=>i(Math.floor(a(e))),ceil:e=>i(Math.ceil(a(e)))})),t}function pf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function yf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function ff(e){var t=1,r=e(pf(t),yf(t));return r.constant=function(r){return arguments.length?e(pf(t=+r),yf(t)):t},af(r)}function mf(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function gf(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function bf(e){return e<0?-e*e:e*e}function vf(e){var t=e(Uy,Uy),r=1;return t.exponent=function(t){return arguments.length?1===(r=+t)?e(Uy,Uy):.5===r?e(gf,bf):e(mf(r),mf(1/r)):r},af(t)}function xf(){var e=vf(ef());return e.copy=function(){return Xy(e,xf()).exponent(e.exponent())},zy.apply(e,arguments),e}function kf(e){return Math.sign(e)*e*e}const wf=new Date,Cf=new Date;function _f(e,t,r,a){function i(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=r=>(e(r=new Date(r-1)),t(r,1),e(r),r),i.round=e=>{const t=i(e),r=i.ceil(e);return e-t(t(e=new Date(+e),null==r?1:Math.floor(r)),e),i.range=(r,a,n)=>{const o=[];if(r=i.ceil(r),n=null==n?1:Math.floor(n),!(r0))return o;let c;do{o.push(c=new Date(+r)),t(r,n),e(r)}while(c_f((t=>{if(t>=t)for(;e(t),!r(t);)t.setTime(t-1)}),((e,a)=>{if(e>=e)if(a<0)for(;++a<=0;)for(;t(e,-1),!r(e););else for(;--a>=0;)for(;t(e,1),!r(e););})),r&&(i.count=(t,a)=>(wf.setTime(+t),Cf.setTime(+a),e(wf),e(Cf),Math.floor(r(wf,Cf))),i.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?i.filter(a?t=>a(t)%e==0:t=>i.count(0,t)%e==0):i:null)),i}const Sf=_f((()=>{}),((e,t)=>{e.setTime(+e+t)}),((e,t)=>t-e));Sf.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?_f((t=>{t.setTime(Math.floor(t/e)*e)}),((t,r)=>{t.setTime(+t+r*e)}),((t,r)=>(r-t)/e)):Sf:null);const Af=Sf.range,Mf=1e3,Tf=6e4,Bf=36e5,Lf=864e5,Ef=6048e5,Rf=2592e6,Hf=31536e6,Df=_f((e=>{e.setTime(e-e.getMilliseconds())}),((e,t)=>{e.setTime(+e+t*Mf)}),((e,t)=>(t-e)/Mf),(e=>e.getUTCSeconds())),Pf=Df.range,Nf=_f((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Mf)}),((e,t)=>{e.setTime(+e+t*Tf)}),((e,t)=>(t-e)/Tf),(e=>e.getMinutes())),Gf=Nf.range,If=_f((e=>{e.setUTCSeconds(0,0)}),((e,t)=>{e.setTime(+e+t*Tf)}),((e,t)=>(t-e)/Tf),(e=>e.getUTCMinutes())),Wf=If.range,Ff=_f((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Mf-e.getMinutes()*Tf)}),((e,t)=>{e.setTime(+e+t*Bf)}),((e,t)=>(t-e)/Bf),(e=>e.getHours())),zf=Ff.range,Of=_f((e=>{e.setUTCMinutes(0,0,0)}),((e,t)=>{e.setTime(+e+t*Bf)}),((e,t)=>(t-e)/Bf),(e=>e.getUTCHours())),Kf=Of.range,Jf=_f((e=>e.setHours(0,0,0,0)),((e,t)=>e.setDate(e.getDate()+t)),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Tf)/Lf),(e=>e.getDate()-1)),Vf=Jf.range,jf=_f((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/Lf),(e=>e.getUTCDate()-1)),Yf=jf.range,$f=_f((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/Lf),(e=>Math.floor(e/Lf))),Uf=$f.range;function qf(e){return _f((t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),((e,t)=>{e.setDate(e.getDate()+7*t)}),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Tf)/Ef))}const Zf=qf(0),Qf=qf(1),Xf=qf(2),em=qf(3),tm=qf(4),rm=qf(5),am=qf(6),im=Zf.range,nm=Qf.range,om=Xf.range,cm=em.range,lm=tm.range,sm=rm.range,um=am.range;function hm(e){return _f((t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)}),((e,t)=>(t-e)/Ef))}const dm=hm(0),pm=hm(1),ym=hm(2),fm=hm(3),mm=hm(4),gm=hm(5),bm=hm(6),vm=dm.range,xm=pm.range,km=ym.range,wm=fm.range,Cm=mm.range,_m=gm.range,Sm=bm.range,Am=_f((e=>{e.setDate(1),e.setHours(0,0,0,0)}),((e,t)=>{e.setMonth(e.getMonth()+t)}),((e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())),(e=>e.getMonth())),Mm=Am.range,Tm=_f((e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)}),((e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())),(e=>e.getUTCMonth())),Bm=Tm.range,Lm=_f((e=>{e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,t)=>{e.setFullYear(e.getFullYear()+t)}),((e,t)=>t.getFullYear()-e.getFullYear()),(e=>e.getFullYear()));Lm.every=e=>isFinite(e=Math.floor(e))&&e>0?_f((t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,r)=>{t.setFullYear(t.getFullYear()+r*e)})):null;const Em=Lm.range,Rm=_f((e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)}),((e,t)=>t.getUTCFullYear()-e.getUTCFullYear()),(e=>e.getUTCFullYear()));Rm.every=e=>isFinite(e=Math.floor(e))&&e>0?_f((t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)})):null;const Hm=Rm.range;function Dm(e,t,r,i,n,o){const c=[[Df,1,Mf],[Df,5,5e3],[Df,15,15e3],[Df,30,3e4],[o,1,Tf],[o,5,3e5],[o,15,9e5],[o,30,18e5],[n,1,Bf],[n,3,108e5],[n,6,216e5],[n,12,432e5],[i,1,Lf],[i,2,1728e5],[r,1,Ef],[t,1,Rf],[t,3,7776e6],[e,1,Hf]];function l(t,r,i){const n=Math.abs(r-t)/i,o=a((([,,e])=>e)).right(c,n);if(o===c.length)return e.every(q(t/Hf,r/Hf,i));if(0===o)return Sf.every(Math.max(q(t,r,i),1));const[l,s]=c[n/c[o-1][2]=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:sb,s:ub,S:Lg,u:Eg,U:Rg,V:Dg,w:Pg,W:Ng,x:null,X:null,y:Gg,Y:Wg,Z:zg,"%":lb},x={a:function(e){return o[e.getUTCDay()]},A:function(e){return n[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return c[e.getUTCMonth()]},c:null,d:Og,e:Og,f:Yg,g:ib,G:ob,H:Kg,I:Jg,j:Vg,L:jg,m:$g,M:Ug,p:function(e){return i[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:sb,s:ub,S:qg,u:Zg,U:Qg,V:eb,w:tb,W:rb,x:null,X:null,y:ab,Y:nb,Z:cb,"%":lb},k={a:function(e,t,r){var a=p.exec(t.slice(r));return a?(e.w=y.get(a[0].toLowerCase()),r+a[0].length):-1},A:function(e,t,r){var a=h.exec(t.slice(r));return a?(e.w=d.get(a[0].toLowerCase()),r+a[0].length):-1},b:function(e,t,r){var a=g.exec(t.slice(r));return a?(e.m=b.get(a[0].toLowerCase()),r+a[0].length):-1},B:function(e,t,r){var a=f.exec(t.slice(r));return a?(e.m=m.get(a[0].toLowerCase()),r+a[0].length):-1},c:function(e,r,a){return _(e,t,r,a)},d:dg,e:dg,f:bg,g:lg,G:cg,H:yg,I:yg,j:pg,L:gg,m:hg,M:fg,p:function(e,t,r){var a=s.exec(t.slice(r));return a?(e.p=u.get(a[0].toLowerCase()),r+a[0].length):-1},q:ug,Q:xg,s:kg,S:mg,u:ag,U:ig,V:ng,w:rg,W:og,x:function(e,t,a){return _(e,r,t,a)},X:function(e,t,r){return _(e,a,t,r)},y:lg,Y:cg,Z:sg,"%":vg};function w(e,t){return function(r){var a,i,n,o=[],c=-1,l=0,s=e.length;for(r instanceof Date||(r=new Date(+r));++c53)return null;"w"in n||(n.w=1),"Z"in n?(i=(a=Fm(zm(n.y,0,1))).getUTCDay(),a=i>4||0===i?pm.ceil(a):pm(a),a=jf.offset(a,7*(n.V-1)),n.y=a.getUTCFullYear(),n.m=a.getUTCMonth(),n.d=a.getUTCDate()+(n.w+6)%7):(i=(a=Wm(zm(n.y,0,1))).getDay(),a=i>4||0===i?Qf.ceil(a):Qf(a),a=Jf.offset(a,7*(n.V-1)),n.y=a.getFullYear(),n.m=a.getMonth(),n.d=a.getDate()+(n.w+6)%7)}else("W"in n||"U"in n)&&("w"in n||(n.w="u"in n?n.u%7:"W"in n?1:0),i="Z"in n?Fm(zm(n.y,0,1)).getUTCDay():Wm(zm(n.y,0,1)).getDay(),n.m=0,n.d="W"in n?(n.w+6)%7+7*n.W-(i+5)%7:n.w+7*n.U-(i+6)%7);return"Z"in n?(n.H+=n.Z/100|0,n.M+=n.Z%100,Fm(n)):Wm(n)}}function _(e,t,r,a){for(var i,n,o=0,c=t.length,l=r.length;o=l)return-1;if(37===(i=t.charCodeAt(o++))){if(i=t.charAt(o++),!(n=k[i in $m?t.charAt(o++):i])||(a=n(e,r,a))<0)return-1}else if(i!=r.charCodeAt(a++))return-1}return a}return v.x=w(r,v),v.X=w(a,v),v.c=w(t,v),x.x=w(r,x),x.X=w(a,x),x.c=w(t,x),{format:function(e){var t=w(e+="",v);return t.toString=function(){return e},t},parse:function(e){var t=C(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=w(e+="",x);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+="",!0);return t.toString=function(){return e},t}}}var Km,Jm,Vm,jm,Ym,$m={"-":"",_:" ",0:"0"},Um=/^\s*\d+/,qm=/^%/,Zm=/[\\^$*+?|[\]().{}]/g;function Qm(e,t,r){var a=e<0?"-":"",i=(a?-e:e)+"",n=i.length;return a+(n[e.toLowerCase(),t])))}function rg(e,t,r){var a=Um.exec(t.slice(r,r+1));return a?(e.w=+a[0],r+a[0].length):-1}function ag(e,t,r){var a=Um.exec(t.slice(r,r+1));return a?(e.u=+a[0],r+a[0].length):-1}function ig(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.U=+a[0],r+a[0].length):-1}function ng(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.V=+a[0],r+a[0].length):-1}function og(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.W=+a[0],r+a[0].length):-1}function cg(e,t,r){var a=Um.exec(t.slice(r,r+4));return a?(e.y=+a[0],r+a[0].length):-1}function lg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.y=+a[0]+(+a[0]>68?1900:2e3),r+a[0].length):-1}function sg(e,t,r){var a=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return a?(e.Z=a[1]?0:-(a[2]+(a[3]||"00")),r+a[0].length):-1}function ug(e,t,r){var a=Um.exec(t.slice(r,r+1));return a?(e.q=3*a[0]-3,r+a[0].length):-1}function hg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.m=a[0]-1,r+a[0].length):-1}function dg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.d=+a[0],r+a[0].length):-1}function pg(e,t,r){var a=Um.exec(t.slice(r,r+3));return a?(e.m=0,e.d=+a[0],r+a[0].length):-1}function yg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.H=+a[0],r+a[0].length):-1}function fg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.M=+a[0],r+a[0].length):-1}function mg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.S=+a[0],r+a[0].length):-1}function gg(e,t,r){var a=Um.exec(t.slice(r,r+3));return a?(e.L=+a[0],r+a[0].length):-1}function bg(e,t,r){var a=Um.exec(t.slice(r,r+6));return a?(e.L=Math.floor(a[0]/1e3),r+a[0].length):-1}function vg(e,t,r){var a=qm.exec(t.slice(r,r+1));return a?r+a[0].length:-1}function xg(e,t,r){var a=Um.exec(t.slice(r));return a?(e.Q=+a[0],r+a[0].length):-1}function kg(e,t,r){var a=Um.exec(t.slice(r));return a?(e.s=+a[0],r+a[0].length):-1}function wg(e,t){return Qm(e.getDate(),t,2)}function Cg(e,t){return Qm(e.getHours(),t,2)}function _g(e,t){return Qm(e.getHours()%12||12,t,2)}function Sg(e,t){return Qm(1+Jf.count(Lm(e),e),t,3)}function Ag(e,t){return Qm(e.getMilliseconds(),t,3)}function Mg(e,t){return Ag(e,t)+"000"}function Tg(e,t){return Qm(e.getMonth()+1,t,2)}function Bg(e,t){return Qm(e.getMinutes(),t,2)}function Lg(e,t){return Qm(e.getSeconds(),t,2)}function Eg(e){var t=e.getDay();return 0===t?7:t}function Rg(e,t){return Qm(Zf.count(Lm(e)-1,e),t,2)}function Hg(e){var t=e.getDay();return t>=4||0===t?tm(e):tm.ceil(e)}function Dg(e,t){return e=Hg(e),Qm(tm.count(Lm(e),e)+(4===Lm(e).getDay()),t,2)}function Pg(e){return e.getDay()}function Ng(e,t){return Qm(Qf.count(Lm(e)-1,e),t,2)}function Gg(e,t){return Qm(e.getFullYear()%100,t,2)}function Ig(e,t){return Qm((e=Hg(e)).getFullYear()%100,t,2)}function Wg(e,t){return Qm(e.getFullYear()%1e4,t,4)}function Fg(e,t){var r=e.getDay();return Qm((e=r>=4||0===r?tm(e):tm.ceil(e)).getFullYear()%1e4,t,4)}function zg(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Qm(t/60|0,"0",2)+Qm(t%60,"0",2)}function Og(e,t){return Qm(e.getUTCDate(),t,2)}function Kg(e,t){return Qm(e.getUTCHours(),t,2)}function Jg(e,t){return Qm(e.getUTCHours()%12||12,t,2)}function Vg(e,t){return Qm(1+jf.count(Rm(e),e),t,3)}function jg(e,t){return Qm(e.getUTCMilliseconds(),t,3)}function Yg(e,t){return jg(e,t)+"000"}function $g(e,t){return Qm(e.getUTCMonth()+1,t,2)}function Ug(e,t){return Qm(e.getUTCMinutes(),t,2)}function qg(e,t){return Qm(e.getUTCSeconds(),t,2)}function Zg(e){var t=e.getUTCDay();return 0===t?7:t}function Qg(e,t){return Qm(dm.count(Rm(e)-1,e),t,2)}function Xg(e){var t=e.getUTCDay();return t>=4||0===t?mm(e):mm.ceil(e)}function eb(e,t){return e=Xg(e),Qm(mm.count(Rm(e),e)+(4===Rm(e).getUTCDay()),t,2)}function tb(e){return e.getUTCDay()}function rb(e,t){return Qm(pm.count(Rm(e)-1,e),t,2)}function ab(e,t){return Qm(e.getUTCFullYear()%100,t,2)}function ib(e,t){return Qm((e=Xg(e)).getUTCFullYear()%100,t,2)}function nb(e,t){return Qm(e.getUTCFullYear()%1e4,t,4)}function ob(e,t){var r=e.getUTCDay();return Qm((e=r>=4||0===r?mm(e):mm.ceil(e)).getUTCFullYear()%1e4,t,4)}function cb(){return"+0000"}function lb(){return"%"}function sb(e){return+e}function ub(e){return Math.floor(+e/1e3)}function hb(e){return Km=Om(e),Jm=Km.format,Vm=Km.parse,jm=Km.utcFormat,Ym=Km.utcParse,Km}hb({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var db="%Y-%m-%dT%H:%M:%S.%LZ";var pb=Date.prototype.toISOString?function(e){return e.toISOString()}:jm(db);var yb=+new Date("2000-01-01T00:00:00.000Z")?function(e){var t=new Date(e);return isNaN(t)?null:t}:Ym(db);function fb(e){return new Date(e)}function mb(e){return e instanceof Date?+e:+new Date(+e)}function gb(e,t,r,a,i,n,o,c,l,s){var u=tf(),h=u.invert,d=u.domain,p=s(".%L"),y=s(":%S"),f=s("%I:%M"),m=s("%I %p"),g=s("%a %d"),b=s("%b %d"),v=s("%B"),x=s("%Y");function k(e){return(l(e)Ha(e[e.length-1]),Nb=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Cb),Gb=Pb(Nb),Ib=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Cb),Wb=Pb(Ib),Fb=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Cb),zb=Pb(Fb),Ob=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Cb),Kb=Pb(Ob),Jb=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Cb),Vb=Pb(Jb),jb=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Cb),Yb=Pb(jb),$b=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Cb),Ub=Pb($b),qb=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Cb),Zb=Pb(qb),Qb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Cb),Xb=Pb(Qb),ev=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Cb),tv=Pb(ev),rv=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Cb),av=Pb(rv),iv=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Cb),nv=Pb(iv),ov=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Cb),cv=Pb(ov),lv=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Cb),sv=Pb(lv),uv=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Cb),hv=Pb(uv),dv=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Cb),pv=Pb(dv),yv=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Cb),fv=Pb(yv),mv=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Cb),gv=Pb(mv),bv=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Cb),vv=Pb(bv),xv=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Cb),kv=Pb(xv),wv=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Cb),Cv=Pb(wv),_v=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Cb),Sv=Pb(_v),Av=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Cb),Mv=Pb(Av),Tv=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Cb),Bv=Pb(Tv),Lv=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Cb),Ev=Pb(Lv),Rv=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Cb),Hv=Pb(Rv),Dv=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Cb),Pv=Pb(Dv);var Nv=si(ka(300,.5,0),ka(-240,.5,1)),Gv=si(ka(-100,.75,.35),ka(80,1.5,.8)),Iv=si(ka(260,.75,.35),ka(80,1.5,.8)),Wv=ka();var Fv=Hr(),zv=Math.PI/3,Ov=2*Math.PI/3;function Kv(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var Jv=Kv(Cb("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),Vv=Kv(Cb("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),jv=Kv(Cb("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),Yv=Kv(Cb("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function $v(e){return function(){return e}}const Uv=Math.abs,qv=Math.atan2,Zv=Math.cos,Qv=Math.max,Xv=Math.min,ex=Math.sin,tx=Math.sqrt,rx=1e-12,ax=Math.PI,ix=ax/2,nx=2*ax;function ox(e){return e>=1?ix:e<=-1?-ix:Math.asin(e)}function cx(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(null==r)t=null;else{const e=Math.floor(r);if(!(e>=0))throw new RangeError(`invalid digits: ${r}`);t=e}return e},()=>new So(t)}function lx(e){return e.innerRadius}function sx(e){return e.outerRadius}function ux(e){return e.startAngle}function hx(e){return e.endAngle}function dx(e){return e&&e.padAngle}function px(e,t,r,a,i,n,o){var c=e-r,l=t-a,s=(o?n:-n)/tx(c*c+l*l),u=s*l,h=-s*c,d=e+u,p=t+h,y=r+u,f=a+h,m=(d+y)/2,g=(p+f)/2,b=y-d,v=f-p,x=b*b+v*v,k=i-n,w=d*f-y*p,C=(v<0?-1:1)*tx(Qv(0,k*k*x-w*w)),_=(w*v-b*C)/x,S=(-w*b-v*C)/x,A=(w*v+b*C)/x,M=(-w*b+v*C)/x,T=_-m,B=S-g,L=A-m,E=M-g;return T*T+B*B>L*L+E*E&&(_=A,S=M),{cx:_,cy:S,x01:-u,y01:-h,x11:_*(i/k-1),y11:S*(i/k-1)}}var yx=Array.prototype.slice;function fx(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function mx(e){this._context=e}function gx(e){return new mx(e)}function bx(e){return e[0]}function vx(e){return e[1]}function xx(e,t){var r=$v(!0),a=null,i=gx,n=null,o=cx(c);function c(c){var l,s,u,h=(c=fx(c)).length,d=!1;for(null==a&&(n=i(u=o())),l=0;l<=h;++l)!(l=h;--d)c.point(g[d],b[d]);c.lineEnd(),c.areaEnd()}m&&(g[u]=+e(p,u,s),b[u]=+t(p,u,s),c.point(a?+a(p,u,s):g[u],r?+r(p,u,s):b[u]))}if(y)return c=null,y+""||null}function u(){return xx().defined(i).curve(o).context(n)}return e="function"==typeof e?e:void 0===e?bx:$v(+e),t="function"==typeof t?t:$v(void 0===t?0:+t),r="function"==typeof r?r:void 0===r?vx:$v(+r),s.x=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),a=null,s):e},s.x0=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),s):e},s.x1=function(e){return arguments.length?(a=null==e?null:"function"==typeof e?e:$v(+e),s):a},s.y=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),r=null,s):t},s.y0=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),s):t},s.y1=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:$v(+e),s):r},s.lineX0=s.lineY0=function(){return u().x(e).y(t)},s.lineY1=function(){return u().x(e).y(r)},s.lineX1=function(){return u().x(a).y(t)},s.defined=function(e){return arguments.length?(i="function"==typeof e?e:$v(!!e),s):i},s.curve=function(e){return arguments.length?(o=e,null!=n&&(c=o(n)),s):o},s.context=function(e){return arguments.length?(null==e?n=c=null:c=o(n=e),s):n},s}function wx(e,t){return te?1:t>=e?0:NaN}function Cx(e){return e}mx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};var _x=Ax(gx);function Sx(e){this._curve=e}function Ax(e){function t(t){return new Sx(e(t))}return t._curve=e,t}function Mx(e){var t=e.curve;return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e.curve=function(e){return arguments.length?t(Ax(e)):t()._curve},e}function Tx(){return Mx(xx().curve(_x))}function Bx(){var e=kx().curve(_x),t=e.curve,r=e.lineX0,a=e.lineX1,i=e.lineY0,n=e.lineY1;return e.angle=e.x,delete e.x,e.startAngle=e.x0,delete e.x0,e.endAngle=e.x1,delete e.x1,e.radius=e.y,delete e.y,e.innerRadius=e.y0,delete e.y0,e.outerRadius=e.y1,delete e.y1,e.lineStartAngle=function(){return Mx(r())},delete e.lineX0,e.lineEndAngle=function(){return Mx(a())},delete e.lineX1,e.lineInnerRadius=function(){return Mx(i())},delete e.lineY0,e.lineOuterRadius=function(){return Mx(n())},delete e.lineY1,e.curve=function(e){return arguments.length?t(Ax(e)):t()._curve},e}function Lx(e,t){return[(t=+t)*Math.cos(e-=Math.PI/2),t*Math.sin(e)]}Sx.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(e,t){this._curve.point(t*Math.sin(e),t*-Math.cos(e))}};class Ex{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t)}this._x0=e,this._y0=t}}class Rx{constructor(e){this._context=e}lineStart(){this._point=0}lineEnd(){}point(e,t){if(e=+e,t=+t,0===this._point)this._point=1;else{const r=Lx(this._x0,this._y0),a=Lx(this._x0,this._y0=(this._y0+t)/2),i=Lx(e,this._y0),n=Lx(e,t);this._context.moveTo(...r),this._context.bezierCurveTo(...a,...i,...n)}this._x0=e,this._y0=t}}function Hx(e){return new Ex(e,!0)}function Dx(e){return new Ex(e,!1)}function Px(e){return new Rx(e)}function Nx(e){return e.source}function Gx(e){return e.target}function Ix(e){let t=Nx,r=Gx,a=bx,i=vx,n=null,o=null,c=cx(l);function l(){let l;const s=yx.call(arguments),u=t.apply(this,s),h=r.apply(this,s);if(null==n&&(o=e(l=c())),o.lineStart(),s[0]=u,o.point(+a.apply(this,s),+i.apply(this,s)),s[0]=h,o.point(+a.apply(this,s),+i.apply(this,s)),o.lineEnd(),l)return o=null,l+""||null}return l.source=function(e){return arguments.length?(t=e,l):t},l.target=function(e){return arguments.length?(r=e,l):r},l.x=function(e){return arguments.length?(a="function"==typeof e?e:$v(+e),l):a},l.y=function(e){return arguments.length?(i="function"==typeof e?e:$v(+e),l):i},l.context=function(t){return arguments.length?(null==t?n=o=null:o=e(n=t),l):n},l}function Wx(){const e=Ix(Px);return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e}const Fx=tx(3);var zx={draw(e,t){const r=.59436*tx(t+Xv(t/28,.75)),a=r/2,i=a*Fx;e.moveTo(0,r),e.lineTo(0,-r),e.moveTo(-i,-a),e.lineTo(i,a),e.moveTo(-i,a),e.lineTo(i,-a)}},Ox={draw(e,t){const r=tx(t/ax);e.moveTo(r,0),e.arc(0,0,r,0,nx)}},Kx={draw(e,t){const r=tx(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}};const Jx=tx(1/3),Vx=2*Jx;var jx={draw(e,t){const r=tx(t/Vx),a=r*Jx;e.moveTo(0,-r),e.lineTo(a,0),e.lineTo(0,r),e.lineTo(-a,0),e.closePath()}},Yx={draw(e,t){const r=.62625*tx(t);e.moveTo(0,-r),e.lineTo(r,0),e.lineTo(0,r),e.lineTo(-r,0),e.closePath()}},$x={draw(e,t){const r=.87559*tx(t-Xv(t/7,2));e.moveTo(-r,0),e.lineTo(r,0),e.moveTo(0,r),e.lineTo(0,-r)}},Ux={draw(e,t){const r=tx(t),a=-r/2;e.rect(a,a,r,r)}},qx={draw(e,t){const r=.4431*tx(t);e.moveTo(r,r),e.lineTo(r,-r),e.lineTo(-r,-r),e.lineTo(-r,r),e.closePath()}};const Zx=ex(ax/10)/ex(7*ax/10),Qx=ex(nx/10)*Zx,Xx=-Zv(nx/10)*Zx;var ek={draw(e,t){const r=tx(.8908130915292852*t),a=Qx*r,i=Xx*r;e.moveTo(0,-r),e.lineTo(a,i);for(let t=1;t<5;++t){const n=nx*t/5,o=Zv(n),c=ex(n);e.lineTo(c*r,-o*r),e.lineTo(o*a-c*i,c*a+o*i)}e.closePath()}};const tk=tx(3);var rk={draw(e,t){const r=-tx(t/(3*tk));e.moveTo(0,2*r),e.lineTo(-tk*r,-r),e.lineTo(tk*r,-r),e.closePath()}};const ak=tx(3);var ik={draw(e,t){const r=.6824*tx(t),a=r/2,i=r*ak/2;e.moveTo(0,-r),e.lineTo(i,a),e.lineTo(-i,a),e.closePath()}};const nk=-.5,ok=tx(3)/2,ck=1/tx(12),lk=3*(ck/2+1);var sk={draw(e,t){const r=tx(t/lk),a=r/2,i=r*ck,n=a,o=r*ck+r,c=-n,l=o;e.moveTo(a,i),e.lineTo(n,o),e.lineTo(c,l),e.lineTo(nk*a-ok*i,ok*a+nk*i),e.lineTo(nk*n-ok*o,ok*n+nk*o),e.lineTo(nk*c-ok*l,ok*c+nk*l),e.lineTo(nk*a+ok*i,nk*i-ok*a),e.lineTo(nk*n+ok*o,nk*o-ok*n),e.lineTo(nk*c+ok*l,nk*l-ok*c),e.closePath()}},uk={draw(e,t){const r=.6189*tx(t-Xv(t/6,1.7));e.moveTo(-r,-r),e.lineTo(r,r),e.moveTo(-r,r),e.lineTo(r,-r)}};const hk=[Ox,Kx,jx,Ux,ek,rk,sk],dk=[Ox,$x,uk,ik,zx,qx,Yx];function pk(e,t){let r=null,a=cx(i);function i(){let i;if(r||(r=i=a()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),i)return r=null,i+""||null}return e="function"==typeof e?e:$v(e||Ox),t="function"==typeof t?t:$v(void 0===t?64:+t),i.type=function(t){return arguments.length?(e="function"==typeof t?t:$v(t),i):e},i.size=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),i):t},i.context=function(e){return arguments.length?(r=null==e?null:e,i):r},i}function yk(){}function fk(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function mk(e){this._context=e}function gk(e){this._context=e}function bk(e){return new gk(e)}function vk(e){this._context=e}function xk(e,t){this._basis=new mk(e),this._beta=t}mk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:fk(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:fk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},gk.prototype={areaStart:yk,areaEnd:yk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:fk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},vk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,a=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,a):this._context.moveTo(r,a);break;case 3:this._point=4;default:fk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},xk.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var a,i=e[0],n=t[0],o=e[r]-i,c=t[r]-n,l=-1;++l<=r;)a=l/r,this._basis.point(this._beta*e[l]+(1-this._beta)*(i+a*o),this._beta*t[l]+(1-this._beta)*(n+a*c));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var kk=function e(t){function r(e){return 1===t?new mk(e):new xk(e,t)}return r.beta=function(t){return e(+t)},r}(.85);function wk(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function Ck(e,t){this._context=e,this._k=(1-t)/6}Ck.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:wk(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:wk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var _k=function e(t){function r(e){return new Ck(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Sk(e,t){this._context=e,this._k=(1-t)/6}Sk.prototype={areaStart:yk,areaEnd:yk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:wk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ak=function e(t){function r(e){return new Sk(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Mk(e,t){this._context=e,this._k=(1-t)/6}Mk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:wk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Tk=function e(t){function r(e){return new Mk(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Bk(e,t,r){var a=e._x1,i=e._y1,n=e._x2,o=e._y2;if(e._l01_a>rx){var c=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,l=3*e._l01_a*(e._l01_a+e._l12_a);a=(a*c-e._x0*e._l12_2a+e._x2*e._l01_2a)/l,i=(i*c-e._y0*e._l12_2a+e._y2*e._l01_2a)/l}if(e._l23_a>rx){var s=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,u=3*e._l23_a*(e._l23_a+e._l12_a);n=(n*s+e._x1*e._l23_2a-t*e._l12_2a)/u,o=(o*s+e._y1*e._l23_2a-r*e._l12_2a)/u}e._context.bezierCurveTo(a,i,n,o,e._x2,e._y2)}function Lk(e,t){this._context=e,this._alpha=t}Lk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:Bk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ek=function e(t){function r(e){return t?new Lk(e,t):new Ck(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Rk(e,t){this._context=e,this._alpha=t}Rk.prototype={areaStart:yk,areaEnd:yk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Bk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Hk=function e(t){function r(e){return t?new Rk(e,t):new Sk(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Dk(e,t){this._context=e,this._alpha=t}Dk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Bk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Pk=function e(t){function r(e){return t?new Dk(e,t):new Mk(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Nk(e){this._context=e}function Gk(e){return e<0?-1:1}function Ik(e,t,r){var a=e._x1-e._x0,i=t-e._x1,n=(e._y1-e._y0)/(a||i<0&&-0),o=(r-e._y1)/(i||a<0&&-0),c=(n*i+o*a)/(a+i);return(Gk(n)+Gk(o))*Math.min(Math.abs(n),Math.abs(o),.5*Math.abs(c))||0}function Wk(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Fk(e,t,r){var a=e._x0,i=e._y0,n=e._x1,o=e._y1,c=(n-a)/3;e._context.bezierCurveTo(a+c,i+c*t,n-c,o-c*r,n,o)}function zk(e){this._context=e}function Ok(e){this._context=new Kk(e)}function Kk(e){this._context=e}function Jk(e){this._context=e}function Vk(e){var t,r,a=e.length-1,i=new Array(a),n=new Array(a),o=new Array(a);for(i[0]=0,n[0]=2,o[0]=e[0]+2*e[1],t=1;t=0;--t)i[t]=(o[t]-i[t+1])/n[t];for(n[a-1]=(e[a]+i[a-1])/2,t=0;t1)for(var r,a,i,n=1,o=e[t[0]],c=o.length;n=0;)r[t]=t;return r}function Qk(e,t){return e[t]}function Xk(e){const t=[];return t.key=e,t}function ew(e){var t=e.map(tw);return Zk(e).sort((function(e,r){return t[e]-t[r]}))}function tw(e){for(var t,r=-1,a=0,i=e.length,n=-1/0;++rn&&(n=t,a=r);return a}function rw(e){var t=e.map(aw);return Zk(e).sort((function(e,r){return t[e]-t[r]}))}function aw(e){for(var t,r=0,a=-1,i=e.length;++a=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}}this._x=e,this._y=t}};var iw=e=>()=>e;function nw(e,{sourceEvent:t,target:r,transform:a,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:a,enumerable:!0,configurable:!0},_:{value:i}})}function ow(e,t,r){this.k=e,this.x=t,this.y=r}ow.prototype={constructor:ow,scale:function(e){return 1===e?this:new ow(this.k*e,this.x,this.y)},translate:function(e,t){return 0===e&0===t?this:new ow(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var cw=new ow(1,0,0);function lw(e){for(;!e.__zoom;)if(!(e=e.parentNode))return cw;return e.__zoom}function sw(e){e.stopImmediatePropagation()}function uw(e){e.preventDefault(),e.stopImmediatePropagation()}function hw(e){return!(e.ctrlKey&&"wheel"!==e.type||e.button)}function dw(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e).hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]:[[0,0],[e.clientWidth,e.clientHeight]]}function pw(){return this.__zoom||cw}function yw(e){return-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function fw(){return navigator.maxTouchPoints||"ontouchstart"in this}function mw(e,t,r){var a=e.invertX(t[0][0])-r[0][0],i=e.invertX(t[1][0])-r[1][0],n=e.invertY(t[0][1])-r[0][1],o=e.invertY(t[1][1])-r[1][1];return e.translate(i>a?(a+i)/2:Math.min(0,a)||Math.max(0,i),o>n?(n+o)/2:Math.min(0,n)||Math.max(0,o))}function gw(){var e,t,r,a=hw,i=dw,n=mw,o=yw,c=fw,l=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],u=250,h=ei,d=Le("start","zoom","end"),p=0,y=10;function f(e){e.property("__zoom",pw).on("wheel.zoom",w,{passive:!1}).on("mousedown.zoom",C).on("dblclick.zoom",_).filter(c).on("touchstart.zoom",S).on("touchmove.zoom",A).on("touchend.zoom touchcancel.zoom",M).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(e,t){return(t=Math.max(l[0],Math.min(l[1],t)))===e.k?e:new ow(t,e.x,e.y)}function g(e,t,r){var a=t[0]-r[0]*e.k,i=t[1]-r[1]*e.k;return a===e.x&&i===e.y?e:new ow(e.k,a,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function v(e,t,r,a){e.on("start.zoom",(function(){x(this,arguments).event(a).start()})).on("interrupt.zoom end.zoom",(function(){x(this,arguments).event(a).end()})).tween("zoom",(function(){var e=this,n=arguments,o=x(e,n).event(a),c=i.apply(e,n),l=null==r?b(c):"function"==typeof r?r.apply(e,n):r,s=Math.max(c[1][0]-c[0][0],c[1][1]-c[0][1]),u=e.__zoom,d="function"==typeof t?t.apply(e,n):t,p=h(u.invert(l).concat(s/u.k),d.invert(l).concat(s/d.k));return function(e){if(1===e)e=d;else{var t=p(e),r=s/t[2];e=new ow(r,l[0]-t[0]*r,l[1]-t[1]*r)}o.zoom(null,e)}}))}function x(e,t,r){return!r&&e.__zooming||new k(e,t)}function k(e,t){this.that=e,this.args=t,this.active=0,this.sourceEvent=null,this.extent=i.apply(e,t),this.taps=0}function w(e,...t){if(a.apply(this,arguments)){var r=x(this,t).event(e),i=this.__zoom,c=Math.max(l[0],Math.min(l[1],i.k*Math.pow(2,o.apply(this,arguments)))),u=Qt(e);if(r.wheel)r.mouse[0][0]===u[0]&&r.mouse[0][1]===u[1]||(r.mouse[1]=i.invert(r.mouse[0]=u)),clearTimeout(r.wheel);else{if(i.k===c)return;r.mouse=[u,i.invert(u)],Ni(this),r.start()}uw(e),r.wheel=setTimeout((function(){r.wheel=null,r.end()}),150),r.zoom("mouse",n(g(m(i,c),r.mouse[0],r.mouse[1]),r.extent,s))}}function C(e,...t){if(!r&&a.apply(this,arguments)){var i=e.currentTarget,o=x(this,t,!0).event(e),c=jt(e.view).on("mousemove.zoom",(function(e){if(uw(e),!o.moved){var t=e.clientX-u,r=e.clientY-h;o.moved=t*t+r*r>p}o.event(e).zoom("mouse",n(g(o.that.__zoom,o.mouse[0]=Qt(e,i),o.mouse[1]),o.extent,s))}),!0).on("mouseup.zoom",(function(e){c.on("mousemove.zoom mouseup.zoom",null),ir(e.view,o.moved),uw(e),o.event(e).end()}),!0),l=Qt(e,i),u=e.clientX,h=e.clientY;ar(e.view),sw(e),o.mouse=[l,this.__zoom.invert(l)],Ni(this),o.start()}}function _(e,...t){if(a.apply(this,arguments)){var r=this.__zoom,o=Qt(e.changedTouches?e.changedTouches[0]:e,this),c=r.invert(o),l=r.k*(e.shiftKey?.5:2),h=n(g(m(r,l),o,c),i.apply(this,t),s);uw(e),u>0?jt(this).transition().duration(u).call(v,h,o,e):jt(this).call(f.transform,h,o,e)}}function S(r,...i){if(a.apply(this,arguments)){var n,o,c,l,s=r.touches,u=s.length,h=x(this,i,r.changedTouches.length===u).event(r);for(sw(r),o=0;o1&&r.name===t)return new rn([[e]],Nn,t,+a);return null},arc:function(){var e=lx,t=sx,r=$v(0),a=null,i=ux,n=hx,o=dx,c=null,l=cx(s);function s(){var s,u,h=+e.apply(this,arguments),d=+t.apply(this,arguments),p=i.apply(this,arguments)-ix,y=n.apply(this,arguments)-ix,f=Uv(y-p),m=y>p;if(c||(c=s=l()),drx)if(f>nx-rx)c.moveTo(d*Zv(p),d*ex(p)),c.arc(0,0,d,p,y,!m),h>rx&&(c.moveTo(h*Zv(y),h*ex(y)),c.arc(0,0,h,y,p,m));else{var g,b,v=p,x=y,k=p,w=y,C=f,_=f,S=o.apply(this,arguments)/2,A=S>rx&&(a?+a.apply(this,arguments):tx(h*h+d*d)),M=Xv(Uv(d-h)/2,+r.apply(this,arguments)),T=M,B=M;if(A>rx){var L=ox(A/h*ex(S)),E=ox(A/d*ex(S));(C-=2*L)>rx?(k+=L*=m?1:-1,w-=L):(C=0,k=w=(p+y)/2),(_-=2*E)>rx?(v+=E*=m?1:-1,x-=E):(_=0,v=x=(p+y)/2)}var R=d*Zv(v),H=d*ex(v),D=h*Zv(w),P=h*ex(w);if(M>rx){var N,G=d*Zv(x),I=d*ex(x),W=h*Zv(k),F=h*ex(k);if(f1?0:e<-1?ax:Math.acos(e)}((z*K+O*J)/(tx(z*z+O*O)*tx(K*K+J*J)))/2),j=tx(N[0]*N[0]+N[1]*N[1]);T=Xv(M,(h-j)/(V-1)),B=Xv(M,(d-j)/(V+1))}else T=B=0}_>rx?B>rx?(g=px(W,F,R,H,d,B,m),b=px(G,I,D,P,d,B,m),c.moveTo(g.cx+g.x01,g.cy+g.y01),Brx&&C>rx?T>rx?(g=px(D,P,G,I,h,-T,m),b=px(R,H,W,F,h,-T,m),c.lineTo(g.cx+g.x01,g.cy+g.y01),T=0))throw new RangeError("invalid r");let r=e.length;if(!((r=Math.floor(r))>=0))throw new RangeError("invalid length");if(!r||!t)return e;const a=f(t),i=e.slice();return a(e,i,0,r,1),a(i,e,0,r,1),a(e,i,0,r,1),e},blur2:u,blurImage:h,brush:function(){return lo(Zn)},brushSelection:function(e){var t=e.__brush;return t?t.dim.output(t.selection):null},brushX:function(){return lo(Un)},brushY:function(){return lo(qn)},buffer:function(e,t){return fetch(e,t).then(Xc)},chord:function(){return vo(!1,!1)},chordDirected:function(){return vo(!0,!1)},chordTranspose:function(){return vo(!1,!0)},cluster:kp,color:Br,contourDensity:function(){var e=qo,t=Zo,r=Qo,a=960,i=500,n=20,o=2,c=3*n,l=a+2*c>>o,s=i+2*c>>o,h=Wo(20);function d(a){var i=new Float32Array(l*s),h=Math.pow(2,-o),d=-1;for(const n of a){var p=(e(n,++d,a)+c)*h,y=(t(n,d,a)+c)*h,f=+r(n,d,a);if(f&&p>=0&&p=0&&ye*a)))(t).map(((e,t)=>(e.value=+r[t],y(e))))}function y(e){return e.coordinates.forEach(f),e}function f(e){e.forEach(m)}function m(e){e.forEach(g)}function g(e){e[0]=e[0]*Math.pow(2,o)-c,e[1]=e[1]*Math.pow(2,o)-c}function b(){return l=a+2*(c=3*n)>>o,s=i+2*c>>o,p}return p.contours=function(e){var t=d(e),r=Vo().size([l,s]),a=Math.pow(2,2*o),i=e=>{e=+e;var i=y(r.contour(t,e*a));return i.value=e,i};return Object.defineProperty(i,"max",{get:()=>ee(t)/a}),i},p.x=function(t){return arguments.length?(e="function"==typeof t?t:Wo(+t),p):e},p.y=function(e){return arguments.length?(t="function"==typeof e?e:Wo(+e),p):t},p.weight=function(e){return arguments.length?(r="function"==typeof e?e:Wo(+e),p):r},p.size=function(e){if(!arguments.length)return[a,i];var t=+e[0],r=+e[1];if(!(t>=0&&r>=0))throw new Error("invalid size");return a=t,i=r,b()},p.cellSize=function(e){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(e)/Math.LN2),b()},p.thresholds=function(e){return arguments.length?(h="function"==typeof e?e:Array.isArray(e)?Wo(Go.call(e)):Wo(e),p):h},p.bandwidth=function(e){if(!arguments.length)return Math.sqrt(n*(n+1));if(!((e=+e)>=0))throw new Error("invalid bandwidth");return n=(Math.sqrt(4*e*e+1)-1)/2,b()},p},contours:Vo,count:m,create:Yt,creator:We,cross:function(...e){const t="function"==typeof e[e.length-1]&&function(e){return t=>e(...t)}(e.pop()),r=(e=e.map(v)).map(g),a=e.length-1,i=new Array(a+1).fill(0),n=[];if(a<0||r.some(b))return n;for(;;){n.push(i.map(((t,r)=>e[r][t])));let o=a;for(;++i[o]===r[o];){if(0===o)return t?n.map(t):n;i[o--]=0}}},csv:al,csvFormat:Ic,csvFormatBody:Wc,csvFormatRow:zc,csvFormatRows:Fc,csvFormatValue:Oc,csvParse:Nc,csvParseRows:Gc,cubehelix:ka,cumsum:function(e,t){var r=0,a=0;return Float64Array.from(e,void 0===t?e=>r+=+e||0:i=>r+=+t(i,a++,e)||0)},curveBasis:function(e){return new mk(e)},curveBasisClosed:bk,curveBasisOpen:function(e){return new vk(e)},curveBumpX:Hx,curveBumpY:Dx,curveBundle:kk,curveCardinal:_k,curveCardinalClosed:Ak,curveCardinalOpen:Tk,curveCatmullRom:Ek,curveCatmullRomClosed:Hk,curveCatmullRomOpen:Pk,curveLinear:gx,curveLinearClosed:function(e){return new Nk(e)},curveMonotoneX:function(e){return new zk(e)},curveMonotoneY:function(e){return new Ok(e)},curveNatural:function(e){return new Jk(e)},curveStep:Yk,curveStepAfter:Uk,curveStepBefore:$k,descending:r,deviation:k,difference:function(e,...t){e=new S(e);for(const r of t)for(const t of r)e.delete(t);return e},disjoint:function(e,t){const r=t[Symbol.iterator](),a=new S;for(const t of e){if(a.has(t))return!1;let e,i;for(;({value:e,done:i}=r.next())&&!i;){if(Object.is(t,e))return!1;a.add(e)}}return!0},dispatch:Le,drag:function(){var e,t,r,a,i=cr,n=lr,o=sr,c=ur,l={},s=Le("start","drag","end"),u=0,h=0;function d(e){e.on("mousedown.drag",p).filter(c).on("touchstart.drag",m).on("touchmove.drag",g,Xt).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(o,c){if(!a&&i.call(this,o,c)){var l=v(this,n.call(this,o,c),o,c,"mouse");l&&(jt(o.view).on("mousemove.drag",y,er).on("mouseup.drag",f,er),ar(o.view),tr(o),r=!1,e=o.clientX,t=o.clientY,l("start",o))}}function y(a){if(rr(a),!r){var i=a.clientX-e,n=a.clientY-t;r=i*i+n*n>h}l.mouse("drag",a)}function f(e){jt(e.view).on("mousemove.drag mouseup.drag",null),ir(e.view,r),rr(e),l.mouse("end",e)}function m(e,t){if(i.call(this,e,t)){var r,a,o=e.changedTouches,c=n.call(this,e,t),l=o.length;for(r=0;r+e,easePoly:hn,easePolyIn:sn,easePolyInOut:hn,easePolyOut:un,easeQuad:cn,easeQuadIn:function(e){return e*e},easeQuadInOut:cn,easeQuadOut:function(e){return e*(2-e)},easeSin:yn,easeSinIn:function(e){return 1==+e?1:1-Math.cos(e*pn)},easeSinInOut:yn,easeSinOut:function(e){return Math.sin(e*pn)},every:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");let r=-1;for(const a of e)if(!t(a,++r,e))return!1;return!0},extent:w,fcumsum:function(e,t){const r=new C;let a=-1;return Float64Array.from(e,void 0===t?e=>r.add(+e||0):i=>r.add(+t(i,++a,e)||0))},filter:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");const r=[];let a=-1;for(const i of e)t(i,++a,e)&&r.push(i);return r},flatGroup:function(e,...t){return H(R(e,...t),t)},flatRollup:function(e,t,...r){return H(P(e,t,...r),r)},forceCenter:function(e,t){var r,a=1;function i(){var i,n,o=r.length,c=0,l=0;for(i=0;is+y||nu+y||ol.index){var f=s-c.x-c.vx,m=u-c.y-c.vy,g=f*f+m*m;ge.r&&(e.r=e[t].r)}function l(){if(t){var a,i,n=t.length;for(r=new Array(n),a=0;a[c(e,t,a),e])));for(o=0,i=new Array(s);o=c)){(e.data!==t||e.next)&&(0===h&&(y+=(h=vl(r))*h),0===d&&(y+=(d=vl(r))*d),y(e=(1664525*e+1013904223)%_l)/_l}();function h(){d(),s.call("tick",t),r1?(null==r?c.delete(e):c.set(e,y(r)),t):c.get(e)},find:function(t,r,a){var i,n,o,c,l,s=0,u=e.length;for(null==a?a=1/0:a*=a,s=0;s1?(s.on(e,r),t):s.on(e)}}},forceX:function(e){var t,r,a,i=bl(.1);function n(e){for(var i,n=0,o=t.length;n=.12&&i<.234&&a>=-.425&&a<-.214?c:i>=.166&&i<.234&&a>=-.214&&a<-.115?l:o).invert(e)},u.stream=function(r){return e&&t===r?e:e=function(e){var t=e.length;return{point:function(r,a){for(var i=-1;++i_u(a[0],a[1])&&(a[1]=i[1]),_u(i[0],a[1])>_u(a[0],a[1])&&(a[0]=i[0])):n.push(a=i);for(o=-1/0,t=0,a=n[r=n.length-1];t<=r;a=i,++t)i=n[t],(c=_u(a[1],i[0]))>o&&(o=c,Bs=i[0],Es=a[1])}return Is=Ws=null,Bs===1/0||Ls===1/0?[[NaN,NaN],[NaN,NaN]]:[[Bs,Ls],[Es,Rs]]},geoCentroid:function(e){eu=tu=ru=au=iu=nu=ou=cu=0,lu=new C,su=new C,uu=new C,Cs(e,Mu);var t=+lu,r=+su,a=+uu,i=cs(t,r,a);return i<$l&&(t=nu,r=ou,a=cu,tu=0))throw new RangeError(`invalid digits: ${e}`);i=t}return null===t&&(a=new Rd(i)),o},o.projection(e).digits(i).context(t)},geoProjection:Vd,geoProjectionMutator:jd,geoRotation:Vu,geoStereographic:function(){return Vd(mp).scale(250).clipAngle(142)},geoStereographicRaw:mp,geoStream:Cs,geoTransform:function(e){return{stream:Dd(e)}},geoTransverseMercator:function(){var e=rp(gp),t=e.center,r=e.rotate;return e.center=function(e){return arguments.length?t([-e[1],e[0]]):[(e=t())[1],-e[0]]},e.rotate=function(e){return arguments.length?r([e[0],e[1],e.length>2?e[2]+90:90]):[(e=r())[0],e[1],e[2]-90]},r([0,0,90]).scale(159.155)},geoTransverseMercatorRaw:gp,gray:ra,greatest:oe,greatestIndex:function(e,r=t){if(1===r.length)return te(e,r);let a,i=-1,n=-1;for(const t of e)++n,(i<0?0===r(t,t):r(t,a)>0)&&(a=t,i=n);return i},group:E,groupSort:function(e,r,a){return(2!==r.length?W(D(e,r,a),(([e,r],[a,i])=>t(r,i)||t(e,a))):W(E(e,a),(([e,a],[i,n])=>r(a,n)||t(e,i)))).map((([e])=>e))},groups:R,hcl:ua,hierarchy:Cp,histogram:X,hsl:Or,html:ll,image:function(e,t){return new Promise((function(r,a){var i=new Image;for(var n in t)i[n]=t[n];i.onerror=a,i.onload=function(){r(i)},i.src=e}))},index:function(e,...t){return G(e,L,N,t)},indexes:function(e,...t){return G(e,Array.from,N,t)},interpolate:Ja,interpolateArray:function(e,t){return(Na(t)?Pa:Ga)(e,t)},interpolateBasis:_a,interpolateBasisClosed:Sa,interpolateBlues:Sv,interpolateBrBG:Gb,interpolateBuGn:tv,interpolateBuPu:av,interpolateCividis:function(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-2710.57*e)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-67.37*e)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-2475.67*e)))))))+")"},interpolateCool:Iv,interpolateCubehelix:li,interpolateCubehelixDefault:Nv,interpolateCubehelixLong:si,interpolateDate:Ia,interpolateDiscrete:function(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}},interpolateGnBu:nv,interpolateGreens:Mv,interpolateGreys:Bv,interpolateHcl:ni,interpolateHclLong:oi,interpolateHsl:ri,interpolateHslLong:ai,interpolateHue:function(e,t){var r=Ta(+e,+t);return function(e){var t=r(e);return t-360*Math.floor(t/360)}},interpolateInferno:jv,interpolateLab:function(e,t){var r=La((e=aa(e)).l,(t=aa(t)).l),a=La(e.a,t.a),i=La(e.b,t.b),n=La(e.opacity,t.opacity);return function(t){return e.l=r(t),e.a=a(t),e.b=i(t),e.opacity=n(t),e+""}},interpolateMagma:Vv,interpolateNumber:Wa,interpolateNumberArray:Pa,interpolateObject:Fa,interpolateOrRd:cv,interpolateOranges:Pv,interpolatePRGn:Wb,interpolatePiYG:zb,interpolatePlasma:Yv,interpolatePuBu:hv,interpolatePuBuGn:sv,interpolatePuOr:Kb,interpolatePuRd:pv,interpolatePurples:Ev,interpolateRainbow:function(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return Wv.h=360*e-100,Wv.s=1.5-1.5*t,Wv.l=.8-.9*t,Wv+""},interpolateRdBu:Vb,interpolateRdGy:Yb,interpolateRdPu:fv,interpolateRdYlBu:Ub,interpolateRdYlGn:Zb,interpolateReds:Hv,interpolateRgb:Ea,interpolateRgbBasis:Ha,interpolateRgbBasisClosed:Da,interpolateRound:Va,interpolateSinebow:function(e){var t;return e=(.5-e)*Math.PI,Fv.r=255*(t=Math.sin(e))*t,Fv.g=255*(t=Math.sin(e+zv))*t,Fv.b=255*(t=Math.sin(e+Ov))*t,Fv+""},interpolateSpectral:Xb,interpolateString:Ka,interpolateTransformCss:Za,interpolateTransformSvg:Qa,interpolateTurbo:function(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-14825.05*e)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+707.56*e)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-6838.66*e)))))))+")"},interpolateViridis:Jv,interpolateWarm:Gv,interpolateYlGn:vv,interpolateYlGnBu:gv,interpolateYlOrBr:kv,interpolateYlOrRd:Cv,interpolateZoom:ei,interrupt:Ni,intersection:function(e,...t){e=new S(e),t=t.map(be);e:for(const r of e)for(const a of t)if(!a.has(r)){e.delete(r);continue e}return e},interval:function(e,t,r){var a=new Ci,i=t;return null==t?(a.restart(e,t,r),a):(a._restart=a.restart,a.restart=function(e,t,r){t=+t,r=null==r?ki():+r,a._restart((function n(o){o+=i,a._restart(n,i+=t,r),e(o)}),t,r)},a.restart(e,t,r),a)},isoFormat:pb,isoParse:yb,json:function(e,t){return fetch(e,t).then(nl)},lab:aa,lch:function(e,t,r,a){return 1===arguments.length?sa(e):new ha(r,t,e,null==a?1:a)},least:function(e,r=t){let a,i=!1;if(1===r.length){let n;for(const o of e){const e=r(o);(i?t(e,n)<0:0===t(e,e))&&(a=o,n=e,i=!0)}}else for(const t of e)(i?r(t,a)<0:0===r(t,t))&&(a=t,i=!0);return a},leastIndex:pe,line:xx,lineRadial:Tx,link:Ix,linkHorizontal:function(){return Ix(Hx)},linkRadial:Wx,linkVertical:function(){return Ix(Dx)},local:Ut,map:function(e,t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof t)throw new TypeError("mapper is not a function");return Array.from(e,((r,a)=>t(r,a,e)))},matcher:Ve,max:ee,maxIndex:te,mean:function(e,t){let r=0,a=0;if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(++r,a+=t);else{let i=-1;for(let n of e)null!=(n=t(n,++i,e))&&(n=+n)>=n&&(++r,a+=n)}if(r)return a/r},median:function(e,t){return ce(e,.5,t)},medianIndex:function(e,t){return se(e,.5,t)},merge:ue,min:re,minIndex:ae,mode:function(e,t){const r=new _;if(void 0===t)for(let t of e)null!=t&&t>=t&&r.set(t,(r.get(t)||0)+1);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&i>=i&&r.set(i,(r.get(i)||0)+1)}let a,i=0;for(const[e,t]of r)t>i&&(i=t,a=e);return a},namespace:Ne,namespaces:Pe,nice:Z,now:ki,pack:function(){var e=null,t=1,r=1,a=Ep;function i(i){const n=Dp();return i.x=t/2,i.y=r/2,e?i.eachBefore(Up(e)).eachAfter(qp(a,.5,n)).eachBefore(Zp(1)):i.eachBefore(Up($p)).eachAfter(qp(Ep,1,n)).eachAfter(qp(a,i.r/Math.min(t,r),n)).eachBefore(Zp(Math.min(t,r)/(2*i.r))),i}return i.radius=function(t){return arguments.length?(e=Bp(t),i):e},i.size=function(e){return arguments.length?(t=+e[0],r=+e[1],i):[t,r]},i.padding=function(e){return arguments.length?(a="function"==typeof e?e:Rp(+e),i):a},i},packEnclose:function(e){return Pp(e,Dp())},packSiblings:function(e){return Yp(e,Dp()),e},pairs:function(e,t=he){const r=[];let a,i=!1;for(const n of e)i&&r.push(t(a,n)),a=n,i=!0;return r},partition:function(){var e=1,t=1,r=0,a=!1;function i(i){var n=i.height+1;return i.x0=i.y0=r,i.x1=e,i.y1=t/n,i.eachBefore(function(e,t){return function(a){a.children&&Xp(a,a.x0,e*(a.depth+1)/t,a.x1,e*(a.depth+2)/t);var i=a.x0,n=a.y0,o=a.x1-r,c=a.y1-r;o0&&(p+=h);for(null!=t?y.sort((function(e,r){return t(f[e],f[r])})):null!=r&&y.sort((function(e,t){return r(o[e],o[t])})),c=0,s=p?(g-d*v)/p:0;c0?h*s:0)+v,f[l]={data:o[l],index:c,value:h,startAngle:m,endAngle:u,padAngle:b};return f}return o.value=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),o):e},o.sortValues=function(e){return arguments.length?(t=e,r=null,o):t},o.sort=function(e){return arguments.length?(r=e,t=null,o):r},o.startAngle=function(e){return arguments.length?(a="function"==typeof e?e:$v(+e),o):a},o.endAngle=function(e){return arguments.length?(i="function"==typeof e?e:$v(+e),o):i},o.padAngle=function(e){return arguments.length?(n="function"==typeof e?e:$v(+e),o):n},o},piecewise:ui,pointRadial:Lx,pointer:Qt,pointers:function(e,t){return e.target&&(e=Zt(e),void 0===t&&(t=e.currentTarget),e=e.touches||[e]),Array.from(e,(e=>Qt(e,t)))},polygonArea:function(e){for(var t,r=-1,a=e.length,i=e[a-1],n=0;++rc!=s>c&&o<(l-r)*(c-a)/(s-a)+r&&(u=!u),l=r,s=a;return u},polygonHull:function(e){if((r=e.length)<3)return null;var t,r,a=new Array(r),i=new Array(r);for(t=0;t=0;--t)s.push(e[a[n[t]][2]]);for(t=+c;t(t=1664525*t+1013904223|0,Fy*(t>>>0))},randomLogNormal:Ay,randomLogistic:Iy,randomNormal:Sy,randomPareto:Ly,randomPoisson:Wy,randomUniform:Cy,randomWeibull:Ny,range:de,rank:function(e,r=t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");let a=Array.from(e);const i=new Float64Array(a.length);2!==r.length&&(a=a.map(r),r=t);const n=(e,t)=>r(a[e],a[t]);let o,c;return e=Uint32Array.from(a,((e,t)=>t)),e.sort(r===t?(e,t)=>z(a[e],a[t]):F(n)),e.forEach(((e,t)=>{const r=n(e,void 0===o?e:o);r>=0?((void 0===o||r>0)&&(o=e,c=t),i[e]=c):i[e]=NaN})),i},reduce:function(e,t,r){if("function"!=typeof t)throw new TypeError("reducer is not a function");const a=e[Symbol.iterator]();let i,n,o=-1;if(arguments.length<3){if(({done:i,value:r}=a.next()),i)return;++o}for(;({done:i,value:n}=a.next()),!i;)r=t(r,n,++o,e);return r},reverse:function(e){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(e).reverse()},rgb:Hr,ribbon:function(){return No()},ribbonArrow:function(){return No(Po)},rollup:D,rollups:P,scaleBand:Vy,scaleDiverging:function e(){var t=af(kb()(Uy));return t.copy=function(){return vb(t,e())},Oy.apply(t,arguments)},scaleDivergingLog:function e(){var t=df(kb()).domain([.1,1,10]);return t.copy=function(){return vb(t,e()).base(t.base())},Oy.apply(t,arguments)},scaleDivergingPow:wb,scaleDivergingSqrt:function(){return wb.apply(null,arguments).exponent(.5)},scaleDivergingSymlog:function e(){var t=ff(kb());return t.copy=function(){return vb(t,e()).constant(t.constant())},Oy.apply(t,arguments)},scaleIdentity:function e(t){var r;function a(e){return null==e||isNaN(e=+e)?r:e}return a.invert=a,a.domain=a.range=function(e){return arguments.length?(t=Array.from(e,Yy),a):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.copy=function(){return e(t).unknown(r)},t=arguments.length?Array.from(t,Yy):[0,1],af(a)},scaleImplicit:Ky,scaleLinear:function e(){var t=tf();return t.copy=function(){return Xy(t,e())},zy.apply(t,arguments),af(t)},scaleLog:function e(){const t=df(ef()).domain([1,10]);return t.copy=()=>Xy(t,e()).base(t.base()),zy.apply(t,arguments),t},scaleOrdinal:Jy,scalePoint:function(){return jy(Vy.apply(null,arguments).paddingInner(1))},scalePow:xf,scaleQuantile:function e(){var r,a=[],i=[],n=[];function o(){var e=0,t=Math.max(1,i.length);for(n=new Array(t-1);++e0?n[t-1]:a[0],t=i?[n[i-1],a]:[n[t-1],n[t]]},l.unknown=function(e){return arguments.length?(t=e,l):l},l.thresholds=function(){return n.slice()},l.copy=function(){return e().domain([r,a]).range(o).unknown(t)},zy.apply(af(l),arguments)},scaleRadial:function e(){var t,r=tf(),a=[0,1],i=!1;function n(e){var a=function(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}(r(e));return isNaN(a)?t:i?Math.round(a):a}return n.invert=function(e){return r.invert(kf(e))},n.domain=function(e){return arguments.length?(r.domain(e),n):r.domain()},n.range=function(e){return arguments.length?(r.range((a=Array.from(e,Yy)).map(kf)),n):a.slice()},n.rangeRound=function(e){return n.range(e).round(!0)},n.round=function(e){return arguments.length?(i=!!e,n):i},n.clamp=function(e){return arguments.length?(r.clamp(e),n):r.clamp()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return e(r.domain(),a).round(i).clamp(r.clamp()).unknown(t)},zy.apply(n,arguments),af(n)},scaleSequential:function e(){var t=af(bb()(Uy));return t.copy=function(){return vb(t,e())},Oy.apply(t,arguments)},scaleSequentialLog:function e(){var t=df(bb()).domain([1,10]);return t.copy=function(){return vb(t,e()).base(t.base())},Oy.apply(t,arguments)},scaleSequentialPow:xb,scaleSequentialQuantile:function e(){var r=[],a=Uy;function i(e){if(null!=e&&!isNaN(e=+e))return a((c(r,e,1)-1)/(r.length-1))}return i.domain=function(e){if(!arguments.length)return r.slice();r=[];for(let t of e)null==t||isNaN(t=+t)||r.push(t);return r.sort(t),i},i.interpolator=function(e){return arguments.length?(a=e,i):a},i.range=function(){return r.map(((e,t)=>a(t/(r.length-1))))},i.quantiles=function(e){return Array.from({length:e+1},((t,a)=>ce(r,a/e)))},i.copy=function(){return e(a).domain(r)},Oy.apply(i,arguments)},scaleSequentialSqrt:function(){return xb.apply(null,arguments).exponent(.5)},scaleSequentialSymlog:function e(){var t=ff(bb());return t.copy=function(){return vb(t,e()).constant(t.constant())},Oy.apply(t,arguments)},scaleSqrt:function(){return xf.apply(null,arguments).exponent(.5)},scaleSymlog:function e(){var t=ff(ef());return t.copy=function(){return Xy(t,e()).constant(t.constant())},zy.apply(t,arguments)},scaleThreshold:function e(){var t,r=[.5],a=[0,1],i=1;function n(e){return null!=e&&e<=e?a[c(r,e,0,i)]:t}return n.domain=function(e){return arguments.length?(r=Array.from(e),i=Math.min(r.length,a.length-1),n):r.slice()},n.range=function(e){return arguments.length?(a=Array.from(e),i=Math.min(r.length,a.length-1),n):a.slice()},n.invertExtent=function(e){var t=a.indexOf(e);return[r[t-1],r[t]]},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return e().domain(r).range(a).unknown(t)},zy.apply(n,arguments)},scaleTime:function(){return zy.apply(gb(Gm,Im,Lm,Am,Zf,Jf,Ff,Nf,Df,Jm).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},scaleUtc:function(){return zy.apply(gb(Pm,Nm,Rm,Tm,dm,jf,Of,If,Df,jm).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},scan:function(e,t){const r=pe(e,t);return r<0?void 0:r},schemeAccent:Sb,schemeBlues:_v,schemeBrBG:Nb,schemeBuGn:ev,schemeBuPu:rv,schemeCategory10:_b,schemeDark2:Ab,schemeGnBu:iv,schemeGreens:Av,schemeGreys:Tv,schemeObservable10:Mb,schemeOrRd:ov,schemeOranges:Dv,schemePRGn:Ib,schemePaired:Tb,schemePastel1:Bb,schemePastel2:Lb,schemePiYG:Fb,schemePuBu:uv,schemePuBuGn:lv,schemePuOr:Ob,schemePuRd:dv,schemePurples:Lv,schemeRdBu:Jb,schemeRdGy:jb,schemeRdPu:yv,schemeRdYlBu:$b,schemeRdYlGn:qb,schemeReds:Rv,schemeSet1:Eb,schemeSet2:Rb,schemeSet3:Hb,schemeSpectral:Qb,schemeTableau10:Db,schemeYlGn:bv,schemeYlGnBu:mv,schemeYlOrBr:xv,schemeYlOrRd:wv,select:jt,selectAll:function(e){return"string"==typeof e?new Jt([document.querySelectorAll(e)],[document.documentElement]):new Jt([Oe(e)],Kt)},selection:Vt,selector:ze,selectorAll:Je,shuffle:ye,shuffler:fe,some:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");let r=-1;for(const a of e)if(t(a,++r,e))return!0;return!1},sort:W,stack:function(){var e=$v([]),t=Zk,r=qk,a=Qk;function i(i){var n,o,c=Array.from(e.apply(this,arguments),Xk),l=c.length,s=-1;for(const e of i)for(n=0,++s;n0)for(var r,a,i,n,o,c,l=0,s=e[t[0]].length;l0?(a[0]=n,a[1]=n+=i):i<0?(a[1]=o,a[0]=o+=i):(a[0]=0,a[1]=i)},stackOffsetExpand:function(e,t){if((a=e.length)>0){for(var r,a,i,n=0,o=e[0].length;n0){for(var r,a=0,i=e[t[0]],n=i.length;a0&&(a=(r=e[t[0]]).length)>0){for(var r,a,i,n=0,o=1;ofunction(e){e=`${e}`;let t=e.length;oy(e,t-1)&&!oy(e,t-2)&&(e=e.slice(0,-1));return"/"===e[0]?e:`/${e}`}(e(t,r,a)))),r=t.map(ny),i=new Set(t).add("");for(const e of r)i.has(e)||(i.add(e),t.push(e),r.push(ny(e)),d.push(ry));p=(e,r)=>t[r],y=(e,t)=>r[t]}for(o=0,i=d.length;o=0&&(s=d[e]).data===ry;--e)s.data=null}if(c.parent=ey,c.eachBefore((function(e){e.depth=e.parent.depth+1,--i})).eachBefore(Mp),c.parent=null,i>0)throw new Error("cycle");return c}return a.id=function(e){return arguments.length?(t=Bp(e),a):t},a.parentId=function(e){return arguments.length?(r=Bp(e),a):r},a.path=function(t){return arguments.length?(e=Bp(t),a):e},a},style:yt,subset:function(e,t){return ve(t,e)},sum:function(e,t){let r=0;if(void 0===t)for(let t of e)(t=+t)&&(r+=t);else{let a=-1;for(let i of e)(i=+t(i,++a,e))&&(r+=i)}return r},superset:ve,svg:sl,symbol:pk,symbolAsterisk:zx,symbolCircle:Ox,symbolCross:Kx,symbolDiamond:jx,symbolDiamond2:Yx,symbolPlus:$x,symbolSquare:Ux,symbolSquare2:qx,symbolStar:ek,symbolTimes:uk,symbolTriangle:rk,symbolTriangle2:ik,symbolWye:sk,symbolX:uk,symbols:hk,symbolsFill:hk,symbolsStroke:dk,text:tl,thresholdFreedmanDiaconis:function(e,t,r){const a=m(e),i=ce(e,.75)-ce(e,.25);return a&&i?Math.ceil((r-t)/(2*i*Math.pow(a,-1/3))):1},thresholdScott:function(e,t,r){const a=m(e),i=k(e);return a&&i?Math.ceil((r-t)*Math.cbrt(a)/(3.49*i)):1},thresholdSturges:Q,tickFormat:rf,tickIncrement:U,tickStep:q,ticks:$,timeDay:Jf,timeDays:Vf,get timeFormat(){return Jm},timeFormatDefaultLocale:hb,timeFormatLocale:Om,timeFriday:rm,timeFridays:sm,timeHour:Ff,timeHours:zf,timeInterval:_f,timeMillisecond:Sf,timeMilliseconds:Af,timeMinute:Nf,timeMinutes:Gf,timeMonday:Qf,timeMondays:nm,timeMonth:Am,timeMonths:Mm,get timeParse(){return Vm},timeSaturday:am,timeSaturdays:um,timeSecond:Df,timeSeconds:Pf,timeSunday:Zf,timeSundays:im,timeThursday:tm,timeThursdays:lm,timeTickInterval:Im,timeTicks:Gm,timeTuesday:Xf,timeTuesdays:om,timeWednesday:em,timeWednesdays:cm,timeWeek:Zf,timeWeeks:im,timeYear:Lm,timeYears:Em,timeout:Bi,timer:_i,timerFlush:Si,transition:an,transpose:me,tree:py,treemap:function(){var e=gy,t=!1,r=1,a=1,i=[0],n=Ep,o=Ep,c=Ep,l=Ep,s=Ep;function u(e){return e.x0=e.y0=0,e.x1=r,e.y1=a,e.eachBefore(h),i=[0],t&&e.eachBefore(Qp),e}function h(t){var r=i[t.depth],a=t.x0+r,u=t.y0+r,h=t.x1-r,d=t.y1-r;h=r-1){var u=c[t];return u.x0=i,u.y0=n,u.x1=o,void(u.y1=l)}var h=s[t],d=a/2+h,p=t+1,y=r-1;for(;p>>1;s[f]l-n){var b=a?(i*g+o*m)/a:o;e(t,p,m,i,n,b,l),e(p,r,g,b,n,o,l)}else{var v=a?(n*g+l*m)/a:l;e(t,p,m,i,n,o,v),e(p,r,g,i,v,o,l)}}(0,l,e.value,t,r,a,i)},treemapDice:Xp,treemapResquarify:by,treemapSlice:yy,treemapSliceDice:function(e,t,r,a,i){(1&e.depth?yy:Xp)(e,t,r,a,i)},treemapSquarify:gy,tsv:il,tsvFormat:jc,tsvFormatBody:Yc,tsvFormatRow:Uc,tsvFormatRows:$c,tsvFormatValue:qc,tsvParse:Jc,tsvParseRows:Vc,union:function(...e){const t=new S;for(const r of e)for(const e of r)t.add(e);return t},unixDay:$f,unixDays:Uf,utcDay:jf,utcDays:Yf,get utcFormat(){return jm},utcFriday:gm,utcFridays:_m,utcHour:Of,utcHours:Kf,utcMillisecond:Sf,utcMilliseconds:Af,utcMinute:If,utcMinutes:Wf,utcMonday:pm,utcMondays:xm,utcMonth:Tm,utcMonths:Bm,get utcParse(){return Ym},utcSaturday:bm,utcSaturdays:Sm,utcSecond:Df,utcSeconds:Pf,utcSunday:dm,utcSundays:vm,utcThursday:mm,utcThursdays:Cm,utcTickInterval:Nm,utcTicks:Pm,utcTuesday:ym,utcTuesdays:km,utcWednesday:fm,utcWednesdays:wm,utcWeek:dm,utcWeeks:vm,utcYear:Rm,utcYears:Hm,variance:x,window:ut,xml:cl,zip:function(){return me(arguments)},zoom:gw,zoomIdentity:cw,zoomTransform:lw});class vw extends HTMLDivElement{main_svg=null;tree_data={};static observeAttributes=["backgroundPattern","backgroundSize","customBackground"];backgroundPattern=null;backgroundSize=void 0;customBackground=void 0;backgroundPosition="center";constructor(){super()}connectedCallback(){this.className="ts-root-wrapper-element tree-spider",this.backgroundPattern=this.getAttribute("backgroundPattern")||"default",this.backgroundSize=this.getAttribute("backgroundSize"),this.backgroundSize="undefined"==this.backgroundSize?void 0:this.backgroundSize,this.customBackground=this.getAttribute("customBackground"),this.customBackground="undefined"==this.customBackground?void 0:this.customBackground,this.backgroundPosition=this.getAttribute("backgroundPosition"),this.backgroundPosition="undefined"==this.backgroundPosition?void 0:this.backgroundPosition,this.setCanvasBg()}setCanvasBg(){const e={default:()=>this.defaultDotsPatternBg(),flux:()=>this.fluxPatternBg(),quad:()=>this.quadPatternBg(),blurry:()=>this.blurryBg(),chaos:()=>this.chaosPatternBg(),flurry:()=>this.flurryPatternBg(),spiral:()=>this.spiralPatternBg(),whirling:()=>this.whirlingPatternBg(),replicate:()=>this.replicatePatternBg(),scribble:()=>this.scribblePatternBg(),squiggly:()=>this.squigglyPatternBg(),gyrrate:()=>this.gyrratePatternBg(),leaves:()=>this.leavesPatternBg(),spot:()=>this.spotPatternBg()};if("none"==this.backgroundPattern)return;const t=this.customBackground||e[this.backgroundPattern]();let r;r="object"==typeof t?(new XMLSerializer).serializeToString(t.node()):t;const a=encodeURIComponent(r).replace(/\(/g,"%28").replace(/\)/g,"%29");null!=this.backgroundSize&&(this.style.backgroundSize=this.backgroundSize||"40%"),null!=this.backgroundPosition&&(this.style.backgroundPosition=this.backgroundPosition||"center");const i="data:image/svg+xml;charset=utf-8,"+a;this.style.setProperty("--ts-root-el-bg-image","url("+i+")")}defaultDotsPatternBg(){const e=Yt("svg").attr("width","20").attr("height","20");return e.append("rect").attr("width","20").attr("height","20").attr("fill","transparent"),e.append("circle").attr("cx","10").attr("cy","10").attr("r","1").attr("fill","rgb(150,150,150)"),this.style.backgroundSize=this.backgroundSize||"2%",e}fluxPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",e.flux}quadPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",e.quad}blurryBg(){return this.style.backgroundSize="20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.blurry}chaosPatternBg(){return this.style.backgroundSize=this.backgroundSize||"50%",this.style.backgroundPosition=this.backgroundPosition||"center",e.chaos}spiralPatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",e.spiral}flurryPatternBg(){return this.style.backgroundSize=this.backgroundSize||"30%",this.style.backgroundPosition=this.backgroundPosition||"center",e.flurry}whirlingPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.whirling}replicatePatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",e.replicate}scribblePatternBg(){return this.style.backgroundSize=this.backgroundSize||"30%",this.style.backgroundPosition=this.backgroundPosition||"center",e.scribble}squigglyPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.squiggly}gyrratePatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",e.gyrate}leavesPatternBg(){return this.style.backgroundSize=this.backgroundSize||"40%",this.style.backgroundPosition=this.backgroundPosition||"center",e.leaves}reflectionPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.reflection}spotPatternBg(){return this.style.backgroundSize=this.backgroundSize||"40%",this.style.backgroundPosition=this.backgroundPosition||"center",e.spot}}window.customElements.define("ts-root-container",vw,{extends:"div"});class xw extends HTMLDivElement{constructor(){super()}connectedCallback(){}}window.customElements.define("ts-element",xw,{extends:"div"});var kw={airline:{airline:[{name:"Aegean Airlines",iataCode:"A3"},{name:"Aeroflot",iataCode:"SU"},{name:"Aerolineas Argentinas",iataCode:"AR"},{name:"Aeromexico",iataCode:"AM"},{name:"Air Algerie",iataCode:"AH"},{name:"Air Arabia",iataCode:"G9"},{name:"Air Canada",iataCode:"AC"},{name:"Air China",iataCode:"CA"},{name:"Air Europa",iataCode:"UX"},{name:"Air France-KLM",iataCode:"AF"},{name:"Air India",iataCode:"AI"},{name:"Air Mauritius",iataCode:"MK"},{name:"Air New Zealand",iataCode:"NZ"},{name:"Air Niugini",iataCode:"PX"},{name:"Air Tahiti",iataCode:"VT"},{name:"Air Tahiti Nui",iataCode:"TN"},{name:"Air Transat",iataCode:"TS"},{name:"AirAsia X",iataCode:"D7"},{name:"AirAsia",iataCode:"AK"},{name:"Aircalin",iataCode:"SB"},{name:"Alaska Airlines",iataCode:"AS"},{name:"Alitalia",iataCode:"AZ"},{name:"All Nippon Airways",iataCode:"NH"},{name:"Allegiant Air",iataCode:"G4"},{name:"American Airlines",iataCode:"AA"},{name:"Asiana Airlines",iataCode:"OZ"},{name:"Avianca",iataCode:"AV"},{name:"Azul Linhas Aereas Brasileiras",iataCode:"AD"},{name:"Azur Air",iataCode:"ZF"},{name:"Beijing Capital Airlines",iataCode:"JD"},{name:"Boliviana de Aviacion",iataCode:"OB"},{name:"British Airways",iataCode:"BA"},{name:"Cathay Pacific",iataCode:"CX"},{name:"Cebu Pacific Air",iataCode:"5J"},{name:"China Airlines",iataCode:"CI"},{name:"China Eastern Airlines",iataCode:"MU"},{name:"China Southern Airlines",iataCode:"CZ"},{name:"Condor",iataCode:"DE"},{name:"Copa Airlines",iataCode:"CM"},{name:"Delta Air Lines",iataCode:"DL"},{name:"Easyfly",iataCode:"VE"},{name:"EasyJet",iataCode:"U2"},{name:"EcoJet",iataCode:"8J"},{name:"Egyptair",iataCode:"MS"},{name:"El Al",iataCode:"LY"},{name:"Emirates Airlines",iataCode:"EK"},{name:"Ethiopian Airlines",iataCode:"ET"},{name:"Etihad Airways",iataCode:"EY"},{name:"EVA Air",iataCode:"BR"},{name:"Fiji Airways",iataCode:"FJ"},{name:"Finnair",iataCode:"AY"},{name:"Flybondi",iataCode:"FO"},{name:"Flydubai",iataCode:"FZ"},{name:"FlySafair",iataCode:"FA"},{name:"Frontier Airlines",iataCode:"F9"},{name:"Garuda Indonesia",iataCode:"GA"},{name:"Go First",iataCode:"G8"},{name:"Gol Linhas Aereas Inteligentes",iataCode:"G3"},{name:"Hainan Airlines",iataCode:"HU"},{name:"Hawaiian Airlines",iataCode:"HA"},{name:"IndiGo Airlines",iataCode:"6E"},{name:"Japan Airlines",iataCode:"JL"},{name:"Jeju Air",iataCode:"7C"},{name:"Jet2",iataCode:"LS"},{name:"JetBlue Airways",iataCode:"B6"},{name:"JetSMART",iataCode:"JA"},{name:"Juneyao Airlines",iataCode:"HO"},{name:"Kenya Airways",iataCode:"KQ"},{name:"Korean Air",iataCode:"KE"},{name:"Kulula.com",iataCode:"MN"},{name:"LATAM Airlines",iataCode:"LA"},{name:"Lion Air",iataCode:"JT"},{name:"LOT Polish Airlines",iataCode:"LO"},{name:"Lufthansa",iataCode:"LH"},{name:"Libyan Airlines",iataCode:"LN"},{name:"Linea Aerea Amaszonas",iataCode:"Z8"},{name:"Malaysia Airlines",iataCode:"MH"},{name:"Nordwind Airlines",iataCode:"N4"},{name:"Norwegian Air Shuttle",iataCode:"DY"},{name:"Oman Air",iataCode:"WY"},{name:"Pakistan International Airlines",iataCode:"PK"},{name:"Pegasus Airlines",iataCode:"PC"},{name:"Philippine Airlines",iataCode:"PR"},{name:"Qantas Group",iataCode:"QF"},{name:"Qatar Airways",iataCode:"QR"},{name:"Republic Airways",iataCode:"YX"},{name:"Royal Air Maroc",iataCode:"AT"},{name:"Ryanair",iataCode:"FR"},{name:"S7 Airlines",iataCode:"S7"},{name:"SAS",iataCode:"SK"},{name:"Satena",iataCode:"9R"},{name:"Saudia",iataCode:"SV"},{name:"Shandong Airlines",iataCode:"SC"},{name:"Sichuan Airlines",iataCode:"3U"},{name:"Singapore Airlines",iataCode:"SQ"},{name:"Sky Airline",iataCode:"H2"},{name:"SkyWest Airlines",iataCode:"OO"},{name:"South African Airways",iataCode:"SA"},{name:"Southwest Airlines",iataCode:"WN"},{name:"SpiceJet",iataCode:"SG"},{name:"Spirit Airlines",iataCode:"NK"},{name:"Spring Airlines",iataCode:"9S"},{name:"SriLankan Airlines",iataCode:"UL"},{name:"Star Peru",iataCode:"2I"},{name:"Sun Country Airlines",iataCode:"SY"},{name:"SunExpress",iataCode:"XQ"},{name:"TAP Air Portugal",iataCode:"TP"},{name:"Thai AirAsia",iataCode:"FD"},{name:"Thai Airways",iataCode:"TG"},{name:"TUI Airways",iataCode:"BY"},{name:"Tunisair",iataCode:"TU"},{name:"Turkish Airlines",iataCode:"TK"},{name:"Ukraine International",iataCode:"PS"},{name:"United Airlines",iataCode:"UA"},{name:"Ural Airlines",iataCode:"U6"},{name:"VietJet Air",iataCode:"VJ"},{name:"Vietnam Airlines",iataCode:"VN"},{name:"Virgin Atlantic Airways",iataCode:"VS"},{name:"Virgin Australia",iataCode:"VA"},{name:"VivaAerobus",iataCode:"VB"},{name:"VOEPASS Linhas Aereas",iataCode:"2Z"},{name:"Volaris",iataCode:"Y4"},{name:"WestJet",iataCode:"WS"},{name:"Wingo",iataCode:"P5"},{name:"Wizz Air",iataCode:"W6"}],airplane:[{name:"Aerospatiale/BAC Concorde",iataTypeCode:"SSC"},{name:"Airbus A300",iataTypeCode:"AB3"},{name:"Airbus A310",iataTypeCode:"310"},{name:"Airbus A310-200",iataTypeCode:"312"},{name:"Airbus A310-300",iataTypeCode:"313"},{name:"Airbus A318",iataTypeCode:"318"},{name:"Airbus A319",iataTypeCode:"319"},{name:"Airbus A319neo",iataTypeCode:"31N"},{name:"Airbus A320",iataTypeCode:"320"},{name:"Airbus A320neo",iataTypeCode:"32N"},{name:"Airbus A321",iataTypeCode:"321"},{name:"Airbus A321neo",iataTypeCode:"32Q"},{name:"Airbus A330",iataTypeCode:"330"},{name:"Airbus A330-200",iataTypeCode:"332"},{name:"Airbus A330-300",iataTypeCode:"333"},{name:"Airbus A330-800neo",iataTypeCode:"338"},{name:"Airbus A330-900neo",iataTypeCode:"339"},{name:"Airbus A340",iataTypeCode:"340"},{name:"Airbus A340-200",iataTypeCode:"342"},{name:"Airbus A340-300",iataTypeCode:"343"},{name:"Airbus A340-500",iataTypeCode:"345"},{name:"Airbus A340-600",iataTypeCode:"346"},{name:"Airbus A350",iataTypeCode:"350"},{name:"Airbus A350-900",iataTypeCode:"359"},{name:"Airbus A350-1000",iataTypeCode:"351"},{name:"Airbus A380",iataTypeCode:"380"},{name:"Airbus A380-800",iataTypeCode:"388"},{name:"Antonov An-12",iataTypeCode:"ANF"},{name:"Antonov An-24",iataTypeCode:"AN4"},{name:"Antonov An-26",iataTypeCode:"A26"},{name:"Antonov An-28",iataTypeCode:"A28"},{name:"Antonov An-30",iataTypeCode:"A30"},{name:"Antonov An-32",iataTypeCode:"A32"},{name:"Antonov An-72",iataTypeCode:"AN7"},{name:"Antonov An-124 Ruslan",iataTypeCode:"A4F"},{name:"Antonov An-140",iataTypeCode:"A40"},{name:"Antonov An-148",iataTypeCode:"A81"},{name:"Antonov An-158",iataTypeCode:"A58"},{name:"Antonov An-225 Mriya",iataTypeCode:"A5F"},{name:"Boeing 707",iataTypeCode:"703"},{name:"Boeing 717",iataTypeCode:"717"},{name:"Boeing 720B",iataTypeCode:"B72"},{name:"Boeing 727",iataTypeCode:"727"},{name:"Boeing 727-100",iataTypeCode:"721"},{name:"Boeing 727-200",iataTypeCode:"722"},{name:"Boeing 737 MAX 7",iataTypeCode:"7M7"},{name:"Boeing 737 MAX 8",iataTypeCode:"7M8"},{name:"Boeing 737 MAX 9",iataTypeCode:"7M9"},{name:"Boeing 737 MAX 10",iataTypeCode:"7MJ"},{name:"Boeing 737",iataTypeCode:"737"},{name:"Boeing 737-100",iataTypeCode:"731"},{name:"Boeing 737-200",iataTypeCode:"732"},{name:"Boeing 737-300",iataTypeCode:"733"},{name:"Boeing 737-400",iataTypeCode:"734"},{name:"Boeing 737-500",iataTypeCode:"735"},{name:"Boeing 737-600",iataTypeCode:"736"},{name:"Boeing 737-700",iataTypeCode:"73G"},{name:"Boeing 737-800",iataTypeCode:"738"},{name:"Boeing 737-900",iataTypeCode:"739"},{name:"Boeing 747",iataTypeCode:"747"},{name:"Boeing 747-100",iataTypeCode:"741"},{name:"Boeing 747-200",iataTypeCode:"742"},{name:"Boeing 747-300",iataTypeCode:"743"},{name:"Boeing 747-400",iataTypeCode:"744"},{name:"Boeing 747-400D",iataTypeCode:"74J"},{name:"Boeing 747-8",iataTypeCode:"748"},{name:"Boeing 747SP",iataTypeCode:"74L"},{name:"Boeing 747SR",iataTypeCode:"74R"},{name:"Boeing 757",iataTypeCode:"757"},{name:"Boeing 757-200",iataTypeCode:"752"},{name:"Boeing 757-300",iataTypeCode:"753"},{name:"Boeing 767",iataTypeCode:"767"},{name:"Boeing 767-200",iataTypeCode:"762"},{name:"Boeing 767-300",iataTypeCode:"763"},{name:"Boeing 767-400",iataTypeCode:"764"},{name:"Boeing 777",iataTypeCode:"777"},{name:"Boeing 777-200",iataTypeCode:"772"},{name:"Boeing 777-200LR",iataTypeCode:"77L"},{name:"Boeing 777-300",iataTypeCode:"773"},{name:"Boeing 777-300ER",iataTypeCode:"77W"},{name:"Boeing 787",iataTypeCode:"787"},{name:"Boeing 787-8",iataTypeCode:"788"},{name:"Boeing 787-9",iataTypeCode:"789"},{name:"Boeing 787-10",iataTypeCode:"781"},{name:"Canadair Challenger",iataTypeCode:"CCJ"},{name:"Canadair CL-44",iataTypeCode:"CL4"},{name:"Canadair Regional Jet 100",iataTypeCode:"CR1"},{name:"Canadair Regional Jet 200",iataTypeCode:"CR2"},{name:"Canadair Regional Jet 700",iataTypeCode:"CR7"},{name:"Canadair Regional Jet 705",iataTypeCode:"CRA"},{name:"Canadair Regional Jet 900",iataTypeCode:"CR9"},{name:"Canadair Regional Jet 1000",iataTypeCode:"CRK"},{name:"De Havilland Canada DHC-2 Beaver",iataTypeCode:"DHP"},{name:"De Havilland Canada DHC-2 Turbo-Beaver",iataTypeCode:"DHR"},{name:"De Havilland Canada DHC-3 Otter",iataTypeCode:"DHL"},{name:"De Havilland Canada DHC-4 Caribou",iataTypeCode:"DHC"},{name:"De Havilland Canada DHC-6 Twin Otter",iataTypeCode:"DHT"},{name:"De Havilland Canada DHC-7 Dash 7",iataTypeCode:"DH7"},{name:"De Havilland Canada DHC-8-100 Dash 8 / 8Q",iataTypeCode:"DH1"},{name:"De Havilland Canada DHC-8-200 Dash 8 / 8Q",iataTypeCode:"DH2"},{name:"De Havilland Canada DHC-8-300 Dash 8 / 8Q",iataTypeCode:"DH3"},{name:"De Havilland Canada DHC-8-400 Dash 8Q",iataTypeCode:"DH4"},{name:"De Havilland DH.104 Dove",iataTypeCode:"DHD"},{name:"De Havilland DH.114 Heron",iataTypeCode:"DHH"},{name:"Douglas DC-3",iataTypeCode:"D3F"},{name:"Douglas DC-6",iataTypeCode:"D6F"},{name:"Douglas DC-8-50",iataTypeCode:"D8T"},{name:"Douglas DC-8-62",iataTypeCode:"D8L"},{name:"Douglas DC-8-72",iataTypeCode:"D8Q"},{name:"Douglas DC-9-10",iataTypeCode:"D91"},{name:"Douglas DC-9-20",iataTypeCode:"D92"},{name:"Douglas DC-9-30",iataTypeCode:"D93"},{name:"Douglas DC-9-40",iataTypeCode:"D94"},{name:"Douglas DC-9-50",iataTypeCode:"D95"},{name:"Douglas DC-10",iataTypeCode:"D10"},{name:"Douglas DC-10-10",iataTypeCode:"D1X"},{name:"Douglas DC-10-30",iataTypeCode:"D1Y"},{name:"Embraer 170",iataTypeCode:"E70"},{name:"Embraer 175",iataTypeCode:"E75"},{name:"Embraer 190",iataTypeCode:"E90"},{name:"Embraer 195",iataTypeCode:"E95"},{name:"Embraer E190-E2",iataTypeCode:"290"},{name:"Embraer E195-E2",iataTypeCode:"295"},{name:"Embraer EMB.110 Bandeirante",iataTypeCode:"EMB"},{name:"Embraer EMB.120 Brasilia",iataTypeCode:"EM2"},{name:"Embraer Legacy 600",iataTypeCode:"ER3"},{name:"Embraer Phenom 100",iataTypeCode:"EP1"},{name:"Embraer Phenom 300",iataTypeCode:"EP3"},{name:"Embraer RJ135",iataTypeCode:"ER3"},{name:"Embraer RJ140",iataTypeCode:"ERD"},{name:"Embraer RJ145 Amazon",iataTypeCode:"ER4"},{name:"Ilyushin IL18",iataTypeCode:"IL8"},{name:"Ilyushin IL62",iataTypeCode:"IL6"},{name:"Ilyushin IL76",iataTypeCode:"IL7"},{name:"Ilyushin IL86",iataTypeCode:"ILW"},{name:"Ilyushin IL96-300",iataTypeCode:"I93"},{name:"Ilyushin IL114",iataTypeCode:"I14"},{name:"Lockheed L-182 / 282 / 382 (L-100) Hercules",iataTypeCode:"LOH"},{name:"Lockheed L-188 Electra",iataTypeCode:"LOE"},{name:"Lockheed L-1011 Tristar",iataTypeCode:"L10"},{name:"Lockheed L-1049 Super Constellation",iataTypeCode:"L49"},{name:"McDonnell Douglas MD11",iataTypeCode:"M11"},{name:"McDonnell Douglas MD80",iataTypeCode:"M80"},{name:"McDonnell Douglas MD81",iataTypeCode:"M81"},{name:"McDonnell Douglas MD82",iataTypeCode:"M82"},{name:"McDonnell Douglas MD83",iataTypeCode:"M83"},{name:"McDonnell Douglas MD87",iataTypeCode:"M87"},{name:"McDonnell Douglas MD88",iataTypeCode:"M88"},{name:"McDonnell Douglas MD90",iataTypeCode:"M90"},{name:"Sukhoi Superjet 100-95",iataTypeCode:"SU9"},{name:"Tupolev Tu-134",iataTypeCode:"TU3"},{name:"Tupolev Tu-154",iataTypeCode:"TU5"},{name:"Tupolev Tu-204",iataTypeCode:"T20"},{name:"Yakovlev Yak-40",iataTypeCode:"YK4"},{name:"Yakovlev Yak-42",iataTypeCode:"YK2"}],airport:[{name:"Adelaide International Airport",iataCode:"ADL"},{name:"Adolfo Suarez Madrid-Barajas Airport",iataCode:"MAD"},{name:"Aeroparque Jorge Newbery Airport",iataCode:"AEP"},{name:"Afonso Pena International Airport",iataCode:"CWB"},{name:"Alfonso Bonilla Aragon International Airport",iataCode:"CLO"},{name:"Amsterdam Airport Schiphol",iataCode:"AMS"},{name:"Arturo Merino Benitez International Airport",iataCode:"SCL"},{name:"Auckland International Airport",iataCode:"AKL"},{name:"Beijing Capital International Airport",iataCode:"PEK"},{name:"Belem Val de Cans International Airport",iataCode:"BEL"},{name:"Belo Horizonte Tancredo Neves International Airport",iataCode:"CNF"},{name:"Berlin-Tegel Airport",iataCode:"TXL"},{name:"Bole International Airport",iataCode:"ADD"},{name:"Brasilia-Presidente Juscelino Kubitschek International Airport",iataCode:"BSB"},{name:"Brisbane International Airport",iataCode:"BNE"},{name:"Brussels Airport",iataCode:"BRU"},{name:"Cairns Airport",iataCode:"CNS"},{name:"Cairo International Airport",iataCode:"CAI"},{name:"Canberra Airport",iataCode:"CBR"},{name:"Capetown International Airport",iataCode:"CPT"},{name:"Charles de Gaulle International Airport",iataCode:"CDG"},{name:"Charlotte Douglas International Airport",iataCode:"CLT"},{name:"Chengdu Shuangliu International Airport",iataCode:"CTU"},{name:"Chhatrapati Shivaji International Airport",iataCode:"BOM"},{name:"Chicago O'Hare International Airport",iataCode:"ORD"},{name:"Chongqing Jiangbei International Airport",iataCode:"CKG"},{name:"Christchurch International Airport",iataCode:"CHC"},{name:"Copenhagen Kastrup Airport",iataCode:"CPH"},{name:"Dallas Fort Worth International Airport",iataCode:"DFW"},{name:"Daniel K. Inouye International Airport",iataCode:"HNL"},{name:"Denver International Airport",iataCode:"DEN"},{name:"Don Mueang International Airport",iataCode:"DMK"},{name:"Dubai International Airport",iataCode:"DXB"},{name:"Dublin Airport",iataCode:"DUB"},{name:"Dusseldorf Airport",iataCode:"DUS"},{name:"El Dorado International Airport",iataCode:"BOG"},{name:"Eleftherios Venizelos International Airport",iataCode:"ATH"},{name:"Faa'a International Airport",iataCode:"PPT"},{name:"Fort Lauderdale Hollywood International Airport",iataCode:"FLL"},{name:"Fortaleza Pinto Martins International Airport",iataCode:"FOR"},{name:"Frankfurt am Main Airport",iataCode:"FRA"},{name:"George Bush Intercontinental Houston Airport",iataCode:"IAH"},{name:"Gold Coast Airport",iataCode:"OOL"},{name:"Guarulhos - Governador Andre Franco Montoro International Airport",iataCode:"GRU"},{name:"Hartsfield-Jackson Atlanta International Airport",iataCode:"ATL"},{name:"Helsinki Vantaa Airport",iataCode:"HEL"},{name:"Hobart International Airport",iataCode:"HBA"},{name:"Hong Kong International Airport",iataCode:"HKG"},{name:"Houari Boumediene Airport",iataCode:"ALG"},{name:"Hurgada International Airport",iataCode:"HRG"},{name:"Incheon International Airport",iataCode:"ICN"},{name:"Indira Gandhi International Airport",iataCode:"DEL"},{name:"Istanbul Airport",iataCode:"IST"},{name:"Jacksons International Airport",iataCode:"POM"},{name:"Jeju International Airport",iataCode:"CJU"},{name:"John F Kennedy International Airport",iataCode:"JFK"},{name:"Jorge Chavez International Airport",iataCode:"LIM"},{name:"Jose Maria Cordova International Airport",iataCode:"MDE"},{name:"Josep Tarradellas Barcelona-El Prat Airport",iataCode:"BCN"},{name:"Kahului Airport",iataCode:"OGG"},{name:"King Abdulaziz International Airport",iataCode:"JED"},{name:"Kuala Lumpur International Airport",iataCode:"KUL"},{name:"Kunming Changshui International Airport",iataCode:"KMG"},{name:"La Tontouta International Airport",iataCode:"NOU"},{name:"Leonardo da Vinci-Fiumicino Airport",iataCode:"FCO"},{name:"London Heathrow Airport",iataCode:"LHR"},{name:"Los Angeles International Airport",iataCode:"LAX"},{name:"McCarran International Airport",iataCode:"LAS"},{name:"Melbourne International Airport",iataCode:"MEL"},{name:"Mexico City International Airport",iataCode:"MEX"},{name:"Miami International Airport",iataCode:"MIA"},{name:"Ministro Pistarini International Airport",iataCode:"EZE"},{name:"Minneapolis-St Paul International/Wold-Chamberlain Airport",iataCode:"MSP"},{name:"Mohammed V International Airport",iataCode:"CMN"},{name:"Moscow Domodedovo Airport",iataCode:"DME"},{name:"Munich Airport",iataCode:"MUC"},{name:"Murtala Muhammed International Airport",iataCode:"LOS"},{name:"Nadi International Airport",iataCode:"NAN"},{name:"Nairobi Jomo Kenyatta International Airport",iataCode:"NBO"},{name:"Narita International Airport",iataCode:"NRT"},{name:"Newark Liberty International Airport",iataCode:"EWR"},{name:"Ninoy Aquino International Airport",iataCode:"MNL"},{name:"Noumea Magenta Airport",iataCode:"GEA"},{name:"O. R. Tambo International Airport",iataCode:"JNB"},{name:"Orlando International Airport",iataCode:"MCO"},{name:"Oslo Lufthavn",iataCode:"OSL"},{name:"Perth Airport",iataCode:"PER"},{name:"Phoenix Sky Harbor International Airport",iataCode:"PHX"},{name:"Recife Guararapes-Gilberto Freyre International Airport",iataCode:"REC"},{name:"Rio de Janeiro Galeao International Airport",iataCode:"GIG"},{name:"Salgado Filho International Airport",iataCode:"POA"},{name:"Salvador Deputado Luis Eduardo Magalhaes International Airport",iataCode:"SSA"},{name:"San Francisco International Airport",iataCode:"SFO"},{name:"Santos Dumont Airport",iataCode:"SDU"},{name:"Sao Paulo-Congonhas Airport",iataCode:"CGH"},{name:"Seattle Tacoma International Airport",iataCode:"SEA"},{name:"Shanghai Hongqiao International Airport",iataCode:"SHA"},{name:"Shanghai Pudong International Airport",iataCode:"PVG"},{name:"Shenzhen Bao'an International Airport",iataCode:"SZX"},{name:"Sheremetyevo International Airport",iataCode:"SVO"},{name:"Singapore Changi Airport",iataCode:"SIN"},{name:"Soekarno-Hatta International Airport",iataCode:"CGK"},{name:'Stockholm-Arlanda Airport"',iataCode:"ARN"},{name:"Suvarnabhumi Airport",iataCode:"BKK"},{name:"Sydney Kingsford Smith International Airport",iataCode:"SYD"},{name:"Taiwan Taoyuan International Airport",iataCode:"TPE"},{name:"Tan Son Nhat International Airport",iataCode:"SGN"},{name:"Tokyo Haneda International Airport",iataCode:"HND"},{name:"Toronto Pearson International Airport",iataCode:"YYZ"},{name:"Tunis Carthage International Airport",iataCode:"TUN"},{name:"Vancouver International Airport",iataCode:"YVR"},{name:"Vienna International Airport",iataCode:"VIE"},{name:"Viracopos International Airport",iataCode:"VCP"},{name:"Vnukovo International Airport",iataCode:"VKO"},{name:"Wellington International Airport",iataCode:"WLG"},{name:"Xi'an Xianyang International Airport",iataCode:"XIY"},{name:"Zhukovsky International Airport",iataCode:"ZIA"},{name:"Zurich Airport",iataCode:"ZRH"}]},animal:{bear:["American black bear","Asian black bear","Brown bear","Giant panda","Polar bear","Sloth bear","Spectacled bear","Sun bear"],bird:["Abert's Towhee","Acadian Flycatcher","Acorn Woodpecker","Alder Flycatcher","Aleutian Tern","Allen's Hummingbird","Altamira Oriole","American Avocet","American Bittern","American Black Duck","American Coot","American Crow","American Dipper","American Golden-Plover","American Goldfinch","American Kestrel","American Oystercatcher","American Pipit","American Redstart","American Robin","American Tree Sparrow","American White Pelican","American Wigeon","American Woodcock","Ancient Murrelet","Anhinga","Anna's Hummingbird","Antillean Nighthawk","Antillean Palm Swift","Aplomado Falcon","Arctic Loon","Arctic Tern","Arctic Warbler","Ash-throated Flycatcher","Ashy Storm-Petrel","Asian Brown Flycatcher","Atlantic Puffin","Audubon's Oriole","Audubon's Shearwater","Aztec Thrush","Azure Gallinule","Bachman's Sparrow","Bachman's Warbler","Bahama Mockingbird","Bahama Swallow","Bahama Woodstar","Baikal Teal","Baird's Sandpiper","Baird's Sparrow","Bald Eagle","Baltimore Oriole","Bananaquit","Band-rumped Storm-Petrel","Band-tailed Gull","Band-tailed Pigeon","Bank Swallow","Bar-tailed Godwit","Barn Owl","Barn Swallow","Barnacle Goose","Barred Owl","Barrow's Goldeneye","Bay-breasted Warbler","Bean Goose","Bell's Vireo","Belted Kingfisher","Bendire's Thrasher","Berylline Hummingbird","Bewick's Wren","Bicknell's Thrush","Black Catbird","Black Guillemot","Black Noddy","Black Oystercatcher","Black Phoebe","Black Rail","Black Rosy-Finch","Black Scoter","Black Skimmer","Black Storm-Petrel","Black Swift","Black Tern","Black Turnstone","Black Vulture","Black-and-white Warbler","Black-backed Wagtail","Black-backed Woodpecker","Black-bellied Plover","Black-bellied Whistling-Duck","Black-billed Cuckoo","Black-billed Magpie","Black-browed Albatross","Black-capped Chickadee","Black-capped Gnatcatcher","Black-capped Petrel","Black-capped Vireo","Black-chinned Hummingbird","Black-chinned Sparrow","Black-crowned Night-Heron","Black-faced Grassquit","Black-footed Albatross","Black-headed Grosbeak","Black-headed Gull","Black-legged Kittiwake","Black-necked Stilt","Black-tailed Gnatcatcher","Black-tailed Godwit","Black-tailed Gull","Black-throated Blue Warbler","Black-throated Gray Warbler","Black-throated Green Warbler","Black-throated Sparrow","Black-vented Oriole","Black-vented Shearwater","Black-whiskered Vireo","Black-winged Stilt","Blackburnian Warbler","Blackpoll Warbler","Blue Bunting","Blue Grosbeak","Blue Grouse","Blue Jay","Blue Mockingbird","Blue-footed Booby","Blue-gray Gnatcatcher","Blue-headed Vireo","Blue-throated Hummingbird","Blue-winged Teal","Blue-winged Warbler","Bluethroat","Boat-tailed Grackle","Bobolink","Bohemian Waxwing","Bonaparte's Gull","Boreal Chickadee","Boreal Owl","Botteri's Sparrow","Brambling","Brandt's Cormorant","Brant","Brewer's Blackbird","Brewer's Sparrow","Bridled Tern","Bridled Titmouse","Bristle-thighed Curlew","Broad-billed Hummingbird","Broad-billed Sandpiper","Broad-tailed Hummingbird","Broad-winged Hawk","Bronzed Cowbird","Brown Booby","Brown Creeper","Brown Jay","Brown Noddy","Brown Pelican","Brown Shrike","Brown Thrasher","Brown-capped Rosy-Finch","Brown-chested Martin","Brown-crested Flycatcher","Brown-headed Cowbird","Brown-headed Nuthatch","Budgerigar","Buff-bellied Hummingbird","Buff-breasted Flycatcher","Buff-breasted Sandpiper","Buff-collared Nightjar","Bufflehead","Buller's Shearwater","Bullock's Oriole","Bumblebee Hummingbird","Burrowing Owl","Bushtit","Cactus Wren","California Condor","California Gnatcatcher","California Gull","California Quail","California Thrasher","California Towhee","Calliope Hummingbird","Canada Goose","Canada Warbler","Canvasback","Canyon Towhee","Canyon Wren","Cape May Warbler","Caribbean Elaenia","Carolina Chickadee","Carolina Parakeet","Carolina Wren","Caspian Tern","Cassin's Auklet","Cassin's Finch","Cassin's Kingbird","Cassin's Sparrow","Cassin's Vireo","Cattle Egret","Cave Swallow","Cedar Waxwing","Cerulean Warbler","Chestnut-backed Chickadee","Chestnut-collared Longspur","Chestnut-sided Warbler","Chihuahuan Raven","Chimney Swift","Chinese Egret","Chipping Sparrow","Chuck-will's-widow","Chukar","Cinnamon Hummingbird","Cinnamon Teal","Citrine Wagtail","Clapper Rail","Clark's Grebe","Clark's Nutcracker","Clay-colored Robin","Clay-colored Sparrow","Cliff Swallow","Colima Warbler","Collared Forest-Falcon","Collared Plover","Common Black-Hawk","Common Chaffinch","Common Crane","Common Cuckoo","Common Eider","Common Goldeneye","Common Grackle","Common Greenshank","Common Ground-Dove","Common House-Martin","Common Loon","Common Merganser","Common Moorhen","Common Murre","Common Nighthawk","Common Pauraque","Common Pochard","Common Poorwill","Common Raven","Common Redpoll","Common Ringed Plover","Common Rosefinch","Common Sandpiper","Common Snipe","Common Swift","Common Tern","Common Yellowthroat","Connecticut Warbler","Cook's Petrel","Cooper's Hawk","Cordilleran Flycatcher","Corn Crake","Cory's Shearwater","Costa's Hummingbird","Couch's Kingbird","Crane Hawk","Craveri's Murrelet","Crescent-chested Warbler","Crested Auklet","Crested Caracara","Crested Myna","Crimson-collared Grosbeak","Crissal Thrasher","Cuban Martin","Curlew Sandpiper","Curve-billed Thrasher","Dark-eyed Junco","Dickcissel","Double-crested Cormorant","Double-striped Thick-knee","Dovekie","Downy Woodpecker","Dunlin","Dusky Flycatcher","Dusky Thrush","Dusky Warbler","Dusky-capped Flycatcher","Eared Grebe","Eared Trogon","Eastern Bluebird","Eastern Kingbird","Eastern Meadowlark","Eastern Phoebe","Eastern Screech-Owl","Eastern Towhee","Eastern Wood-Pewee","Elegant Tern","Elegant Trogon","Elf Owl","Emperor Goose","Eskimo Curlew","Eurasian Blackbird","Eurasian Bullfinch","Eurasian Collared-Dove","Eurasian Coot","Eurasian Curlew","Eurasian Dotterel","Eurasian Hobby","Eurasian Jackdaw","Eurasian Kestrel","Eurasian Oystercatcher","Eurasian Siskin","Eurasian Tree Sparrow","Eurasian Wigeon","Eurasian Woodcock","Eurasian Wryneck","European Golden-Plover","European Starling","European Storm-Petrel","European Turtle-Dove","Evening Grosbeak","Eyebrowed Thrush","Falcated Duck","Fan-tailed Warbler","Far Eastern Curlew","Ferruginous Hawk","Ferruginous Pygmy-Owl","Field Sparrow","Fieldfare","Fish Crow","Five-striped Sparrow","Flame-colored Tanager","Flammulated Owl","Flesh-footed Shearwater","Florida Scrub-Jay","Fork-tailed Flycatcher","Fork-tailed Storm-Petrel","Fork-tailed Swift","Forster's Tern","Fox Sparrow","Franklin's Gull","Fulvous Whistling-Duck","Gadwall","Gambel's Quail","Garganey","Gila Woodpecker","Gilded Flicker","Glaucous Gull","Glaucous-winged Gull","Glossy Ibis","Golden Eagle","Golden-cheeked Warbler","Golden-crowned Kinglet","Golden-crowned Sparrow","Golden-crowned Warbler","Golden-fronted Woodpecker","Golden-winged Warbler","Grace's Warbler","Grasshopper Sparrow","Gray Bunting","Gray Catbird","Gray Flycatcher","Gray Hawk","Gray Jay","Gray Kingbird","Gray Partridge","Gray Silky-flycatcher","Gray Vireo","Gray Wagtail","Gray-breasted Martin","Gray-cheeked Thrush","Gray-crowned Rosy-Finch","Gray-crowned Yellowthroat","Gray-headed Chickadee","Gray-spotted Flycatcher","Gray-tailed Tattler","Great Auk","Great Black-backed Gull","Great Blue Heron","Great Cormorant","Great Crested Flycatcher","Great Egret","Great Frigatebird","Great Gray Owl","Great Horned Owl","Great Kiskadee","Great Knot","Great Skua","Great Spotted Woodpecker","Great-tailed Grackle","Greater Flamingo","Greater Pewee","Greater Prairie-chicken","Greater Roadrunner","Greater Scaup","Greater Shearwater","Greater White-fronted Goose","Greater Yellowlegs","Green Heron","Green Jay","Green Kingfisher","Green Sandpiper","Green Violet-ear","Green-breasted Mango","Green-tailed Towhee","Green-winged Teal","Greenish Elaenia","Groove-billed Ani","Gull-billed Tern","Gyrfalcon","Hairy Woodpecker","Hammond's Flycatcher","Harlequin Duck","Harris's Hawk","Harris's Sparrow","Hawfinch","Heermann's Gull","Henslow's Sparrow","Hepatic Tanager","Herald Petrel","Hermit Thrush","Hermit Warbler","Herring Gull","Himalayan Snowcock","Hoary Redpoll","Hooded Merganser","Hooded Oriole","Hooded Warbler","Hook-billed Kite","Hoopoe","Horned Grebe","Horned Lark","Horned Puffin","House Finch","House Sparrow","House Wren","Hudsonian Godwit","Hutton's Vireo","Iceland Gull","Inca Dove","Indigo Bunting","Island Scrub-Jay","Ivory Gull","Ivory-billed Woodpecker","Jabiru","Jack Snipe","Jungle Nightjar","Juniper Titmouse","Kentucky Warbler","Key West Quail-Dove","Killdeer","King Eider","King Rail","Kirtland's Warbler","Kittlitz's Murrelet","La Sagra's Flycatcher","Labrador Duck","Ladder-backed Woodpecker","Lanceolated Warbler","Lapland Longspur","Large-billed Tern","Lark Bunting","Lark Sparrow","Laughing Gull","Lawrence's Goldfinch","Laysan Albatross","Lazuli Bunting","Le Conte's Sparrow","Le Conte's Thrasher","Leach's Storm-Petrel","Least Auklet","Least Bittern","Least Flycatcher","Least Grebe","Least Sandpiper","Least Storm-Petrel","Least Tern","Lesser Black-backed Gull","Lesser Frigatebird","Lesser Goldfinch","Lesser Nighthawk","Lesser Prairie-chicken","Lesser Scaup","Lesser White-fronted Goose","Lesser Yellowlegs","Lewis's Woodpecker","Limpkin","Lincoln's Sparrow","Little Blue Heron","Little Bunting","Little Curlew","Little Egret","Little Gull","Little Ringed Plover","Little Shearwater","Little Stint","Loggerhead Kingbird","Loggerhead Shrike","Long-billed Curlew","Long-billed Dowitcher","Long-billed Murrelet","Long-billed Thrasher","Long-eared Owl","Long-tailed Jaeger","Long-toed Stint","Louisiana Waterthrush","Lucifer Hummingbird","Lucy's Warbler","MacGillivray's Warbler","Magnificent Frigatebird","Magnificent Hummingbird","Magnolia Warbler","Mallard","Mangrove Cuckoo","Manx Shearwater","Marbled Godwit","Marbled Murrelet","Marsh Sandpiper","Marsh Wren","Masked Booby","Masked Duck","Masked Tityra","McCown's Longspur","McKay's Bunting","Merlin","Mew Gull","Mexican Chickadee","Mexican Jay","Middendorff's Grasshopper-Warbler","Mississippi Kite","Mongolian Plover","Monk Parakeet","Montezuma Quail","Mottled Duck","Mottled Owl","Mottled Petrel","Mountain Bluebird","Mountain Chickadee","Mountain Plover","Mountain Quail","Mourning Dove","Mourning Warbler","Mugimaki Flycatcher","Murphy's Petrel","Muscovy Duck","Mute Swan","Narcissus Flycatcher","Nashville Warbler","Nelson's Sharp-tailed Sparrow","Neotropic Cormorant","Northern Beardless-Tyrannulet","Northern Bobwhite","Northern Cardinal","Northern Flicker","Northern Fulmar","Northern Gannet","Northern Goshawk","Northern Harrier","Northern Hawk Owl","Northern Jacana","Northern Lapwing","Northern Mockingbird","Northern Parula","Northern Pintail","Northern Pygmy-Owl","Northern Rough-winged Swallow","Northern Saw-whet Owl","Northern Shoveler","Northern Shrike","Northern Waterthrush","Northern Wheatear","Northwestern Crow","Nuttall's Woodpecker","Nutting's Flycatcher","Oak Titmouse","Oldsquaw","Olive Sparrow","Olive Warbler","Olive-backed Pipit","Olive-sided Flycatcher","Orange-crowned Warbler","Orchard Oriole","Oriental Cuckoo","Oriental Greenfinch","Oriental Pratincole","Oriental Scops-Owl","Oriental Turtle-Dove","Osprey","Ovenbird","Pacific Golden-Plover","Pacific Loon","Pacific-slope Flycatcher","Paint-billed Crake","Painted Bunting","Painted Redstart","Pallas's Bunting","Palm Warbler","Parakeet Auklet","Parasitic Jaeger","Passenger Pigeon","Pechora Pipit","Pectoral Sandpiper","Pelagic Cormorant","Peregrine Falcon","Phainopepla","Philadelphia Vireo","Pied-billed Grebe","Pigeon Guillemot","Pileated Woodpecker","Pin-tailed Snipe","Pine Bunting","Pine Grosbeak","Pine Siskin","Pine Warbler","Pink-footed Goose","Pink-footed Shearwater","Pinyon Jay","Piping Plover","Plain Chachalaca","Plain-capped Starthroat","Plumbeous Vireo","Pomarine Jaeger","Prairie Falcon","Prairie Warbler","Prothonotary Warbler","Purple Finch","Purple Gallinule","Purple Martin","Purple Sandpiper","Pygmy Nuthatch","Pyrrhuloxia","Razorbill","Red Crossbill","Red Knot","Red Phalarope","Red-bellied Woodpecker","Red-billed Pigeon","Red-billed Tropicbird","Red-breasted Flycatcher","Red-breasted Merganser","Red-breasted Nuthatch","Red-breasted Sapsucker","Red-cockaded Woodpecker","Red-crowned Parrot","Red-eyed Vireo","Red-faced Cormorant","Red-faced Warbler","Red-flanked Bluetail","Red-footed Booby","Red-headed Woodpecker","Red-legged Kittiwake","Red-naped Sapsucker","Red-necked Grebe","Red-necked Phalarope","Red-necked Stint","Red-shouldered Hawk","Red-tailed Hawk","Red-tailed Tropicbird","Red-throated Loon","Red-throated Pipit","Red-whiskered Bulbul","Red-winged Blackbird","Reddish Egret","Redhead","Redwing","Reed Bunting","Rhinoceros Auklet","Ring-billed Gull","Ring-necked Duck","Ring-necked Pheasant","Ringed Kingfisher","Roadside Hawk","Rock Dove","Rock Ptarmigan","Rock Sandpiper","Rock Wren","Rose-breasted Grosbeak","Rose-throated Becard","Roseate Spoonbill","Roseate Tern","Ross's Goose","Ross's Gull","Rough-legged Hawk","Royal Tern","Ruby-crowned Kinglet","Ruby-throated Hummingbird","Ruddy Duck","Ruddy Ground-Dove","Ruddy Quail-Dove","Ruddy Turnstone","Ruff","Ruffed Grouse","Rufous Hummingbird","Rufous-backed Robin","Rufous-capped Warbler","Rufous-crowned Sparrow","Rufous-winged Sparrow","Rustic Bunting","Rusty Blackbird","Sabine's Gull","Sage Grouse","Sage Sparrow","Sage Thrasher","Saltmarsh Sharp-tailed Sparrow","Sanderling","Sandhill Crane","Sandwich Tern","Savannah Sparrow","Say's Phoebe","Scaled Quail","Scaly-naped Pigeon","Scarlet Ibis","Scarlet Tanager","Scissor-tailed Flycatcher","Scott's Oriole","Seaside Sparrow","Sedge Wren","Semipalmated Plover","Semipalmated Sandpiper","Sharp-shinned Hawk","Sharp-tailed Grouse","Sharp-tailed Sandpiper","Shiny Cowbird","Short-billed Dowitcher","Short-eared Owl","Short-tailed Albatross","Short-tailed Hawk","Short-tailed Shearwater","Shy Albatross","Siberian Accentor","Siberian Blue Robin","Siberian Flycatcher","Siberian Rubythroat","Sky Lark","Slate-throated Redstart","Slaty-backed Gull","Slender-billed Curlew","Smew","Smith's Longspur","Smooth-billed Ani","Snail Kite","Snow Bunting","Snow Goose","Snowy Egret","Snowy Owl","Snowy Plover","Solitary Sandpiper","Song Sparrow","Sooty Shearwater","Sooty Tern","Sora","South Polar Skua","Southern Martin","Spectacled Eider","Spoonbill Sandpiper","Spot-billed Duck","Spot-breasted Oriole","Spotted Dove","Spotted Owl","Spotted Rail","Spotted Redshank","Spotted Sandpiper","Spotted Towhee","Sprague's Pipit","Spruce Grouse","Stejneger's Petrel","Steller's Eider","Steller's Jay","Steller's Sea-Eagle","Stilt Sandpiper","Stonechat","Streak-backed Oriole","Streaked Shearwater","Strickland's Woodpecker","Stripe-headed Tanager","Sulphur-bellied Flycatcher","Summer Tanager","Surf Scoter","Surfbird","Swainson's Hawk","Swainson's Thrush","Swainson's Warbler","Swallow-tailed Kite","Swamp Sparrow","Tamaulipas Crow","Tawny-shouldered Blackbird","Temminck's Stint","Tennessee Warbler","Terek Sandpiper","Thayer's Gull","Thick-billed Kingbird","Thick-billed Murre","Thick-billed Parrot","Thick-billed Vireo","Three-toed Woodpecker","Townsend's Solitaire","Townsend's Warbler","Tree Pipit","Tree Swallow","Tricolored Blackbird","Tricolored Heron","Tropical Kingbird","Tropical Parula","Trumpeter Swan","Tufted Duck","Tufted Flycatcher","Tufted Puffin","Tufted Titmouse","Tundra Swan","Turkey Vulture","Upland Sandpiper","Varied Bunting","Varied Thrush","Variegated Flycatcher","Vaux's Swift","Veery","Verdin","Vermilion Flycatcher","Vesper Sparrow","Violet-crowned Hummingbird","Violet-green Swallow","Virginia Rail","Virginia's Warbler","Wandering Albatross","Wandering Tattler","Warbling Vireo","Wedge-rumped Storm-Petrel","Wedge-tailed Shearwater","Western Bluebird","Western Grebe","Western Gull","Western Kingbird","Western Meadowlark","Western Reef-Heron","Western Sandpiper","Western Screech-Owl","Western Scrub-Jay","Western Tanager","Western Wood-Pewee","Whimbrel","Whip-poor-will","Whiskered Auklet","Whiskered Screech-Owl","Whiskered Tern","White Ibis","White Wagtail","White-breasted Nuthatch","White-cheeked Pintail","White-chinned Petrel","White-collared Seedeater","White-collared Swift","White-crowned Pigeon","White-crowned Sparrow","White-eared Hummingbird","White-eyed Vireo","White-faced Ibis","White-faced Storm-Petrel","White-headed Woodpecker","White-rumped Sandpiper","White-tailed Eagle","White-tailed Hawk","White-tailed Kite","White-tailed Ptarmigan","White-tailed Tropicbird","White-throated Needletail","White-throated Robin","White-throated Sparrow","White-throated Swift","White-tipped Dove","White-winged Crossbill","White-winged Dove","White-winged Parakeet","White-winged Scoter","White-winged Tern","Whooper Swan","Whooping Crane","Wild Turkey","Willet","Williamson's Sapsucker","Willow Flycatcher","Willow Ptarmigan","Wilson's Phalarope","Wilson's Plover","Wilson's Storm-Petrel","Wilson's Warbler","Winter Wren","Wood Duck","Wood Sandpiper","Wood Stork","Wood Thrush","Wood Warbler","Worm-eating Warbler","Worthen's Sparrow","Wrentit","Xantus's Hummingbird","Xantus's Murrelet","Yellow Bittern","Yellow Grosbeak","Yellow Rail","Yellow Wagtail","Yellow Warbler","Yellow-bellied Flycatcher","Yellow-bellied Sapsucker","Yellow-billed Cuckoo","Yellow-billed Loon","Yellow-billed Magpie","Yellow-breasted Bunting","Yellow-breasted Chat","Yellow-crowned Night-Heron","Yellow-eyed Junco","Yellow-faced Grassquit","Yellow-footed Gull","Yellow-green Vireo","Yellow-headed Blackbird","Yellow-legged Gull","Yellow-nosed Albatross","Yellow-rumped Warbler","Yellow-throated Vireo","Yellow-throated Warbler","Yucatan Vireo","Zenaida Dove","Zone-tailed Hawk"],cat:["Abyssinian","American Bobtail","American Curl","American Shorthair","American Wirehair","Balinese","Bengal","Birman","Bombay","British Shorthair","Burmese","Chartreux","Chausie","Cornish Rex","Devon Rex","Donskoy","Egyptian Mau","Exotic Shorthair","Havana","Highlander","Himalayan","Japanese Bobtail","Korat","Kurilian Bobtail","LaPerm","Maine Coon","Manx","Minskin","Munchkin","Nebelung","Norwegian Forest Cat","Ocicat","Ojos Azules","Oriental","Persian","Peterbald","Pixiebob","Ragdoll","Russian Blue","Savannah","Scottish Fold","Selkirk Rex","Serengeti","Siamese","Siberian","Singapura","Snowshoe","Sokoke","Somali","Sphynx","Thai","Tonkinese","Toyger","Turkish Angora","Turkish Van"],cetacean:["Amazon River Dolphin","Arnoux's Beaked Whale","Atlantic Humpbacked Dolphin","Atlantic Spotted Dolphin","Atlantic White-Sided Dolphin","Australian Snubfin Dolphin","Australian humpback Dolphin","Blue Whale","Bottlenose Dolphin","Bryde’s whale","Burrunan Dolphin","Chilean Dolphin","Chinese River Dolphin","Chinese White Dolphin","Clymene Dolphin","Commerson’s Dolphin","Costero","Dusky Dolphin","False Killer Whale","Fin Whale","Fraser’s Dolphin","Ganges River Dolphin","Guiana Dolphin","Heaviside’s Dolphin","Hector’s Dolphin","Hourglass Dolphin","Humpback whale","Indo-Pacific Bottlenose Dolphin","Indo-Pacific Hump-backed Dolphin","Irrawaddy Dolphin","Killer Whale (Orca)","La Plata Dolphin","Long-Beaked Common Dolphin","Long-finned Pilot Whale","Longman's Beaked Whale","Melon-headed Whale","Northern Rightwhale Dolphin","Omura’s whale","Pacific White-Sided Dolphin","Pantropical Spotted Dolphin","Peale’s Dolphin","Pygmy Killer Whale","Risso’s Dolphin","Rough-Toothed Dolphin","Sei Whale","Short-Beaked Common Dolphin","Short-finned Pilot Whale","Southern Bottlenose Whale","Southern Rightwhale Dolphin","Sperm Whale","Spinner Dolphin","Striped Dolphin","Tucuxi","White-Beaked Dolphin"],cow:["Aberdeen Angus","Abergele","Abigar","Abondance","Abyssinian Shorthorned Zebu","Aceh","Achham","Adamawa","Adaptaur","Afar","Africangus","Afrikaner","Agerolese","Alambadi","Alatau","Albanian","Albera","Alderney","Alentejana","Aleutian wild cattle","Aliad Dinka","Alistana-Sanabresa","Allmogekor","Alur","American","American Angus","American Beef Friesian","American Brown Swiss","American Milking Devon","American White Park","Amerifax","Amrit Mahal","Amsterdam Island cattle","Anatolian Black","Andalusian Black","Andalusian Blond","Andalusian Grey","Angeln","Angoni","Ankina","Ankole","Ankole-Watusi","Aracena","Arado","Argentine Criollo","Argentine Friesian","Armorican","Arouquesa","Arsi","Asturian Mountain","Asturian Valley","Aubrac","Aulie-Ata","Aure et Saint-Girons","Australian Braford","Australian Brangus","Australian Charbray","Australian Friesian Sahiwal","Australian Lowline","Australian Milking Zebu","Australian Shorthorn","Austrian Simmental","Austrian Yellow","Avileña-Negra Ibérica","Avétonou","Aweil Dinka","Ayrshire","Azaouak","Azebuado","Azerbaijan Zebu","Azores","Bachaur cattle","Baherie cattle","Bakosi cattle","Balancer","Baoule","Bargur cattle","Barrosã","Barzona","Bazadaise","Bedit","Beef Freisian","Beefalo","Beefmaker","Beefmaster","Begayt","Belgian Blue","Belgian Red","Belgian Red Pied","Belgian White-and-Red","Belmont Red","Belted Galloway","Bernese","Berrenda cattle","Betizu","Bianca Modenese","Blaarkop","Black Angus","Black Baldy","Black Hereford","Blanca Cacereña","Blanco Orejinegro BON","Blonde d'Aquitaine","Blue Albion","Blue Grey","Bohuskulla","Bonsmara","Boran","Boškarin","Braford","Brahman","Brahmousin","Brangus","Braunvieh","Brava","Breed","British Friesian","British White","Brown Carpathian","Brown Caucasian","Brown Swiss","Bue Lingo","Burlina","Bushuyev","Butana cattle","Buša cattle","Cachena","Caldelana","Camargue","Campbell Island cattle","Canadian Speckle Park","Canadienne","Canaria","Canchim","Caracu","Carinthian Blondvieh","Carora","Cedit","Charbray","Charolais","Chateaubriand","Chiangus","Chianina","Chillingham cattle","Chinese Black Pied","Cholistani","Coloursided White Back","Commercial","Corriente","Corsican cattle","Costeño con Cuernos","Crioulo Lageano","Cárdena Andaluza","Dajal","Dangi cattle","Danish Black-Pied","Danish Jersey","Danish Red","Dedit","Deep Red cattle","Deoni","Devon","Dexter cattle","Dhanni","Doayo cattle","Doela","Drakensberger","Droughtmaster","Dulong'","Dutch Belted","Dutch Friesian","Dwarf Lulu","Dølafe","East Anatolian Red","Eastern Finncattle","Eastern Red Polled","Eedit","Enderby Island cattle","English Longhorn","Ennstaler Bergscheck","Estonian Holstein","Estonian Native","Estonian Red cattle","Fedit","Finncattle","Finnish Ayrshire","Finnish Holstein-Friesian","Fjäll","Fleckvieh","Florida Cracker cattle","Fogera","French Simmental","Fribourgeoise","Friesian Red and White","Fulani Sudanese","Fēng Cattle","Galician Blond","Galloway cattle","Gangatiri","Gaolao","Garvonesa","Gascon cattle","Gedit","Gelbvieh","Georgian Mountain cattle","German Angus","German Black Pied Dairy","German Black Pied cattle","German Red Pied","Gir","Glan cattle","Gloucester","Gobra","Greek Shorthorn","Greek Steppe","Greyman cattle","Gudali","Guernsey cattle","Guzerá","Hallikar4","Hanwoo","Hariana cattle","Hartón del Valle","Harzer Rotvieh","Hays Converter","Heck cattle","Hedit","Hereford","Herens","Highland cattle","Hinterwald","Holando-Argentino","Holstein Friesian cattle","Horro","Hungarian Grey","Huáng Cattle","Hybridmaster","Iberian cattle","Icelandic","Iedit","Illawarra cattle","Improved Red and White","Indo-Brazilian","Irish Moiled","Israeli Holstein","Israeli Red","Istoben cattle","Istrian cattle","Jamaica Black","Jamaica Hope","Jamaica Red","Japanese Brown","Jarmelista","Javari cattle","Jedit","Jersey cattle","Jutland cattle","Kabin Buri cattle","Kalmyk cattle","Kamphaeng Saen cattle","Kangayam","Kankrej","Karan Swiss","Kasaragod Dwarf cattle","Kathiawadi","Kazakh Whiteheaded","Kedit","Kenana cattle","Kenkatha cattle","Kerry cattle","Kherigarh","Khillari cattle","Kholomogory","Korat Wagyu","Kostroma cattle","Krishna Valley cattle","Kurgan cattle","Kuri","La Reina cattle","Lakenvelder cattle","Lampurger","Latvian Blue","Latvian Brown","Latvian Danish Red","Lebedyn","Ledit","Levantina","Limia cattle","Limousin","Limpurger","Lincoln Red","Lineback","Lithuanian Black-and-White","Lithuanian Light Grey","Lithuanian Red","Lithuanian White-Backed","Lohani cattle","Lourdais","Lucerna cattle","Luing","Madagascar Zebu","Madura","Maine-Anjou","Malnad Gidda","Malvi","Mandalong Special","Mantequera Leonesa","Maramureş Brown","Marchigiana","Maremmana","Marinhoa","Maronesa","Masai","Mashona","Medit","Menorquina","Mertolenga","Meuse-Rhine-Issel","Mewati","Milking Shorthorn","Minhota","Mirandesa","Mirkadim","Mocăniţă","Mollie","Monchina","Mongolian","Montbéliarde","Morucha","Murboden","Murnau-Werdenfels","Murray Grey","Muturu","N'Dama","Nagori","Nedit","Negra Andaluza","Nelore","Nguni","Nimari","Normande","North Bengal Grey","Northern Finncattle","Northern Shorthorn","Norwegian Red","Oedit]","Ongole","Original Simmental","Pajuna","Palmera","Pantaneiro","Parda Alpina","Parthenaise","Pasiega","Pedit","Pembroke","Philippine Native","Pie Rouge des Plaines","Piedmontese cattle","Pineywoods","Pinzgauer","Pirenaica","Podolac","Podolica","Polish Black-and-White","Polish Red","Poll Shorthorn","Polled Hereford","Polled Shorthorn","Ponwar","Preta","Pulikulam","Punganur","Pustertaler Sprinzen","Qedit","Qinchaun","Queensland Miniature Boran","RX3","Ramo Grande","Randall","Raramuri Criollo","Rathi","Raya","Red Angus","Red Brangus","Red Chittagong","Red Fulani","Red Gorbatov","Red Holstein","Red Kandhari","Red Mingrelian","Red Poll","Red Polled Østland","Red Sindhi","Redit","Retinta","Riggit Galloway","Ringamåla","Rohjan","Romagnola","Romanian Bălţata","Romanian Steppe Gray","Romosinuano","Russian Black Pied","Rätisches Grauvieh","Sahiwal","Salers","Salorn","Sanga","Sanhe","Santa Cruz","Santa Gertrudis","Sayaguesa","Schwyz","Sedit","Selembu","Senepol","Serbian Pied","Serbian Steppe","Sheko","Shetland","Shorthorn","Siboney de Cuba","Simbrah","Simford","Simmental","Siri","South Devon","Spanish Fighting Bull","Speckle Park","Square Meater","Sussex","Swedish Friesian","Swedish Polled","Swedish Red Pied","Swedish Red Polled","Swedish Red-and-White","Tabapuã","Tarentaise","Tasmanian Grey","Tauros","Tedit","Telemark","Texas Longhorn","Texon","Thai Black","Thai Fighting Bull","Thai Friesian","Thai Milking Zebu","Tharparkar","Tswana","Tudanca","Tuli","Tulim","Turkish Grey Steppe","Tux-Zillertal","Tyrol Grey","Uedit","Ukrainian Grey","Umblachery","Valdostana Castana","Valdostana Pezzata Nera","Valdostana Pezzata Rossa","Vaynol","Vechur8","Vedit","Vestland Fjord","Vestland Red Polled","Vianesa","Volinian Beef","Vorderwald","Vosgienne","Väneko","Waguli","Wagyu","Wangus","Wedit","Welsh Black","Western Finncattle","White Cáceres","White Fulani","White Lamphun","White Park","Whitebred Shorthorn","Xedit","Xingjiang Brown","Yakutian","Yanbian","Yanhuang","Yedit","Yurino","Zebu","Zedit","Évolène cattle","Żubroń"],crocodilia:["African Slender-snouted Crocodile","Alligator mississippiensis","American Crocodile","Australian Freshwater Crocodile","Black Caiman","Broad-snouted Caiman","Chinese Alligator","Cuban Crocodile","Cuvier’s Dwarf Caiman","Dwarf Crocodile","Gharial","Morelet’s Crocodile","Mugger Crocodile","New Guinea Freshwater Crocodile","Nile Crocodile","Orinoco Crocodile","Philippine Crocodile","Saltwater Crocodile","Schneider’s Smooth-fronted Caiman","Siamese Crocodile","Spectacled Caiman","Tomistoma","West African Crocodile","Yacare Caiman"],dog:["Affenpinscher","Afghan Hound","Aidi","Airedale Terrier","Akbash","Akita","Alano Español","Alapaha Blue Blood Bulldog","Alaskan Husky","Alaskan Klee Kai","Alaskan Malamute","Alopekis","Alpine Dachsbracke","American Bulldog","American Bully","American Cocker Spaniel","American English Coonhound","American Foxhound","American Hairless Terrier","American Pit Bull Terrier","American Staffordshire Terrier","American Water Spaniel","Andalusian Hound","Anglo-Français de Petite Vénerie","Appenzeller Sennenhund","Ariegeois","Armant","Armenian Gampr dog","Artois Hound","Australian Cattle Dog","Australian Kelpie","Australian Shepherd","Australian Stumpy Tail Cattle Dog","Australian Terrier","Austrian Black and Tan Hound","Austrian Pinscher","Azawakh","Bakharwal dog","Banjara Hound","Barbado da Terceira","Barbet","Basenji","Basque Shepherd Dog","Basset Artésien Normand","Basset Bleu de Gascogne","Basset Fauve de Bretagne","Basset Hound","Bavarian Mountain Hound","Beagle","Beagle-Harrier","Bearded Collie","Beauceron","Bedlington Terrier","Belgian Shepherd","Bergamasco Shepherd","Berger Picard","Bernese Mountain Dog","Bhotia","Bichon Frisé","Billy","Black Mouth Cur","Black Norwegian Elkhound","Black Russian Terrier","Black and Tan Coonhound","Bloodhound","Blue Lacy","Blue Picardy Spaniel","Bluetick Coonhound","Boerboel","Bohemian Shepherd","Bolognese","Border Collie","Border Terrier","Borzoi","Bosnian Coarse-haired Hound","Boston Terrier","Bouvier des Ardennes","Bouvier des Flandres","Boxer","Boykin Spaniel","Bracco Italiano","Braque Francais","Braque Saint-Germain","Braque d'Auvergne","Braque de l'Ariège","Braque du Bourbonnais","Briard","Briquet Griffon Vendéen","Brittany","Broholmer","Bruno Jura Hound","Brussels Griffon","Bucovina Shepherd Dog","Bull Arab","Bull Terrier","Bulldog","Bullmastiff","Bully Kutta","Burgos Pointer","Cairn Terrier","Campeiro Bulldog","Can de Chira","Canaan Dog","Canadian Eskimo Dog","Cane Corso","Cane Paratore","Cane di Oropa","Cantabrian Water Dog","Cardigan Welsh Corgi","Carea Castellano Manchego","Carolina Dog","Carpathian Shepherd Dog","Catahoula Leopard Dog","Catalan Sheepdog","Caucasian Shepherd Dog","Cavalier King Charles Spaniel","Central Asian Shepherd Dog","Cesky Fousek","Cesky Terrier","Chesapeake Bay Retriever","Chien Français Blanc et Noir","Chien Français Blanc et Orange","Chien Français Tricolore","Chihuahua","Chilean Terrier","Chinese Chongqing Dog","Chinese Crested Dog","Chinook","Chippiparai","Chongqing dog","Chortai","Chow Chow","Cimarrón Uruguayo","Cirneco dell'Etna","Clumber Spaniel","Colombian fino hound","Coton de Tulear","Cretan Hound","Croatian Sheepdog","Curly-Coated Retriever","Cursinu","Czechoslovakian Wolfdog","Cão Fila de São Miguel","Cão da Serra de Aires","Cão de Castro Laboreiro","Cão de Gado Transmontano","Dachshund","Dalmatian","Dandie Dinmont Terrier","Danish-Swedish Farmdog","Denmark Feist","Dingo","Doberman Pinscher","Dogo Argentino","Dogo Guatemalteco","Dogo Sardesco","Dogue Brasileiro","Dogue de Bordeaux","Drentse Patrijshond","Drever","Dunker","Dutch Shepherd","Dutch Smoushond","East European Shepherd","East Siberian Laika","English Cocker Spaniel","English Foxhound","English Mastiff","English Setter","English Shepherd","English Springer Spaniel","English Toy Terrier","Entlebucher Mountain Dog","Estonian Hound","Estrela Mountain Dog","Eurasier","Field Spaniel","Fila Brasileiro","Finnish Hound","Finnish Lapphund","Finnish Spitz","Flat-Coated Retriever","French Bulldog","French Spaniel","Galgo Español","Galician Shepherd Dog","Garafian Shepherd","Gascon Saintongeois","Georgian Shepherd","German Hound","German Longhaired Pointer","German Pinscher","German Roughhaired Pointer","German Shepherd Dog","German Shorthaired Pointer","German Spaniel","German Spitz","German Wirehaired Pointer","Giant Schnauzer","Glen of Imaal Terrier","Golden Retriever","Gordon Setter","Gończy Polski","Grand Anglo-Français Blanc et Noir","Grand Anglo-Français Blanc et Orange","Grand Anglo-Français Tricolore","Grand Basset Griffon Vendéen","Grand Bleu de Gascogne","Grand Griffon Vendéen","Great Dane","Greater Swiss Mountain Dog","Greek Harehound","Greek Shepherd","Greenland Dog","Greyhound","Griffon Bleu de Gascogne","Griffon Fauve de Bretagne","Griffon Nivernais","Gull Dong","Gull Terrier","Hamiltonstövare","Hanover Hound","Harrier","Havanese","Hierran Wolfdog","Hokkaido","Hovawart","Huntaway","Hygen Hound","Hällefors Elkhound","Ibizan Hound","Icelandic Sheepdog","Indian Spitz","Indian pariah dog","Irish Red and White Setter","Irish Setter","Irish Terrier","Irish Water Spaniel","Irish Wolfhound","Istrian Coarse-haired Hound","Istrian Shorthaired Hound","Italian Greyhound","Jack Russell Terrier","Jagdterrier","Japanese Chin","Japanese Spitz","Japanese Terrier","Jindo","Jonangi","Kai Ken","Kaikadi","Kangal Shepherd Dog","Kanni","Karakachan dog","Karelian Bear Dog","Kars","Karst Shepherd","Keeshond","Kerry Beagle","Kerry Blue Terrier","King Charles Spaniel","King Shepherd","Kintamani","Kishu","Kokoni","Kombai","Komondor","Kooikerhondje","Koolie","Koyun dog","Kromfohrländer","Kuchi","Kuvasz","Labrador Retriever","Lagotto Romagnolo","Lakeland Terrier","Lancashire Heeler","Landseer","Lapponian Herder","Large Münsterländer","Leonberger","Levriero Sardo","Lhasa Apso","Lithuanian Hound","Lupo Italiano","Löwchen","Mackenzie River Husky","Magyar agár","Mahratta Greyhound","Maltese","Manchester Terrier","Maremmano-Abruzzese Sheepdog","McNab dog","Miniature American Shepherd","Miniature Bull Terrier","Miniature Fox Terrier","Miniature Pinscher","Miniature Schnauzer","Molossus of Epirus","Montenegrin Mountain Hound","Mountain Cur","Mountain Feist","Mucuchies","Mudhol Hound","Mudi","Neapolitan Mastiff","New Guinea Singing Dog","New Zealand Heading Dog","Newfoundland","Norfolk Terrier","Norrbottenspets","Northern Inuit Dog","Norwegian Buhund","Norwegian Elkhound","Norwegian Lundehund","Norwich Terrier","Nova Scotia Duck Tolling Retriever","Old Croatian Sighthound","Old Danish Pointer","Old English Sheepdog","Old English Terrier","Olde English Bulldogge","Otterhound","Pachon Navarro","Paisley Terrier","Pampas Deerhound","Papillon","Parson Russell Terrier","Pastore della Lessinia e del Lagorai","Patagonian Sheepdog","Patterdale Terrier","Pekingese","Pembroke Welsh Corgi","Perro Majorero","Perro de Pastor Mallorquin","Perro de Presa Canario","Perro de Presa Mallorquin","Peruvian Inca Orchid","Petit Basset Griffon Vendéen","Petit Bleu de Gascogne","Phalène","Pharaoh Hound","Phu Quoc Ridgeback","Picardy Spaniel","Plott Hound","Plummer Terrier","Podenco Canario","Podenco Valenciano","Pointer","Poitevin","Polish Greyhound","Polish Hound","Polish Lowland Sheepdog","Polish Tatra Sheepdog","Pomeranian","Pont-Audemer Spaniel","Poodle","Porcelaine","Portuguese Podengo","Portuguese Pointer","Portuguese Water Dog","Posavac Hound","Pražský Krysařík","Pshdar Dog","Pudelpointer","Pug","Puli","Pumi","Pungsan Dog","Pyrenean Mastiff","Pyrenean Mountain Dog","Pyrenean Sheepdog","Rafeiro do Alentejo","Rajapalayam","Rampur Greyhound","Rat Terrier","Ratonero Bodeguero Andaluz","Ratonero Mallorquin","Ratonero Murciano de Huerta","Ratonero Valenciano","Redbone Coonhound","Rhodesian Ridgeback","Romanian Mioritic Shepherd Dog","Romanian Raven Shepherd Dog","Rottweiler","Rough Collie","Russian Spaniel","Russian Toy","Russo-European Laika","Saarloos Wolfdog","Sabueso Español","Saint Bernard","Saint Hubert Jura Hound","Saint-Usuge Spaniel","Saluki","Samoyed","Sapsali","Sarabi dog","Sardinian Shepherd Dog","Schapendoes","Schillerstövare","Schipperke","Schweizer Laufhund","Schweizerischer Niederlaufhund","Scottish Deerhound","Scottish Terrier","Sealyham Terrier","Segugio Italiano","Segugio Maremmano","Segugio dell'Appennino","Seppala Siberian Sleddog","Serbian Hound","Serbian Tricolour Hound","Serrano Bulldog","Shar Pei","Shetland Sheepdog","Shiba Inu","Shih Tzu","Shikoku","Shiloh Shepherd","Siberian Husky","Silken Windhound","Silky Terrier","Sinhala Hound","Skye Terrier","Sloughi","Slovakian Wirehaired Pointer","Slovenský Cuvac","Slovenský Kopov","Smalandstövare","Small Greek domestic dog","Small Münsterländer","Smooth Collie","Smooth Fox Terrier","Soft-Coated Wheaten Terrier","South Russian Ovcharka","Spanish Mastiff","Spanish Water Dog","Spinone Italiano","Sporting Lucas Terrier","Stabyhoun","Staffordshire Bull Terrier","Standard Schnauzer","Stephens Stock","Styrian Coarse-haired Hound","Sussex Spaniel","Swedish Elkhound","Swedish Lapphund","Swedish Vallhund","Swedish White Elkhound","Taigan","Taiwan Dog","Tamaskan Dog","Teddy Roosevelt Terrier","Telomian","Tenterfield Terrier","Terrier Brasileiro","Thai Bangkaew Dog","Thai Ridgeback","Tibetan Mastiff","Tibetan Spaniel","Tibetan Terrier","Tornjak","Tosa","Toy Fox Terrier","Toy Manchester Terrier","Transylvanian Hound","Treeing Cur","Treeing Feist","Treeing Tennessee Brindle","Treeing Walker Coonhound","Trigg Hound","Tyrolean Hound","Vikhan","Villano de Las Encartaciones","Villanuco de Las Encartaciones","Vizsla","Volpino Italiano","Weimaraner","Welsh Sheepdog","Welsh Springer Spaniel","Welsh Terrier","West Highland White Terrier","West Siberian Laika","Westphalian Dachsbracke","Wetterhoun","Whippet","White Shepherd","White Swiss Shepherd Dog","Wire Fox Terrier","Wirehaired Pointing Griffon","Wirehaired Vizsla","Xiasi Dog","Xoloitzcuintli","Yakutian Laika","Yorkshire Terrier","Šarplaninac"],fish:["Alaska pollock","Albacore","Amur catfish","Araucanian herring","Argentine hake","Asari","Asian swamp eel","Atlantic cod","Atlantic herring","Atlantic horse mackerel","Atlantic mackerel","Atlantic menhaden","Atlantic salmon","Bigeye scad","Bigeye tuna","Bighead carp","Black carp","Blood cockle","Blue swimming crab","Blue whiting","Bombay-duck","Bonga shad","California pilchard","Cape horse mackerel","Capelin","Catla","Channel catfish","Chilean jack mackerel","Chinese perch","Chinese softshell turtle","Chub mackerel","Chum salmon","Common carp","Crucian carp","Daggertooth pike conger","European anchovy","European pilchard","European sprat","Filipino Venus","Gazami crab","Goldstripe sardinella","Grass carp","Gulf menhaden","Haddock","Hilsa shad","Indian mackerel","Indian oil sardine","Iridescent shark","Japanese anchovy","Japanese cockle","Japanese common catfish","Japanese flying squid","Japanese jack mackerel","Japanese littleneck","Japanese pilchard","Jumbo flying squid","Kawakawa","Korean bullhead","Largehead hairtail","Longtail tuna","Madeiran sardinella","Mandarin fish","Milkfish","Mrigal carp","Narrow-barred Spanish mackerel","Nile perch","Nile tilapia","North Pacific hake","Northern snakehead","Pacific anchoveta","Pacific cod","Pacific herring","Pacific sand lance","Pacific sandlance","Pacific saury","Pacific thread herring","Peruvian anchoveta","Pink salmon","Pollock","Pond loach","Rainbow trout","Rohu","Round sardinella","Short mackerel","Silver carp","Silver cyprinid","Skipjack tuna","Southern African anchovy","Southern rough shrimp","Whiteleg shrimp","Wuchang bream","Yellow croaker","Yellowfin tuna","Yellowhead catfish","Yellowstripe scad"],horse:["Abaco Barb","Abtenauer","Abyssinian","Aegidienberger","Akhal-Teke","Albanian Horse","Altai Horse","Altèr Real","American Albino","American Cream Draft","American Indian Horse","American Paint Horse","American Quarter Horse","American Saddlebred","American Warmblood","Andalusian Horse","Andravida Horse","Anglo-Arabian","Anglo-Arabo-Sardo","Anglo-Kabarda","Appaloosa","AraAppaloosa","Arabian Horse","Ardennes Horse","Arenberg-Nordkirchen","Argentine Criollo","Asian wild Horse","Assateague Horse","Asturcón","Augeron","Australian Brumby","Australian Draught Horse","Australian Stock Horse","Austrian Warmblood","Auvergne Horse","Auxois","Azerbaijan Horse","Azteca Horse","Baise Horse","Bale","Balearic Horse","Balikun Horse","Baluchi Horse","Banker Horse","Barb Horse","Bardigiano","Bashkir Curly","Basque Mountain Horse","Bavarian Warmblood","Belgian Half-blood","Belgian Horse","Belgian Warmblood ","Bhutia Horse","Black Forest Horse","Blazer Horse","Boerperd","Borana","Boulonnais Horse","Brabant","Brandenburger","Brazilian Sport Horse","Breton Horse","Brumby","Budyonny Horse","Burguete Horse","Burmese Horse","Byelorussian Harness Horse","Calabrese Horse","Camargue Horse","Camarillo White Horse","Campeiro","Campolina","Canadian Horse","Canadian Pacer","Carolina Marsh Tacky","Carthusian Horse","Caspian Horse","Castilian Horse","Castillonnais","Catria Horse","Cavallo Romano della Maremma Laziale","Cerbat Mustang","Chickasaw Horse","Chilean Corralero","Choctaw Horse","Cleveland Bay","Clydesdale Horse","Cob","Coldblood Trotter","Colonial Spanish Horse","Colorado Ranger","Comtois Horse","Corsican Horse","Costa Rican Saddle Horse","Cretan Horse","Criollo Horse","Croatian Coldblood","Cuban Criollo","Cumberland Island Horse","Curly Horse","Czech Warmblood","Daliboz","Danish Warmblood","Danube Delta Horse","Dole Gudbrandsdal","Don","Dongola Horse","Draft Trotter","Dutch Harness Horse","Dutch Heavy Draft","Dutch Warmblood","Dzungarian Horse","East Bulgarian","East Friesian Horse","Estonian Draft","Estonian Horse","Falabella","Faroese","Finnhorse","Fjord Horse","Fleuve","Florida Cracker Horse","Foutanké","Frederiksborg Horse","Freiberger","French Trotter","Friesian Cross","Friesian Horse","Friesian Sporthorse","Furioso-North Star","Galiceño","Galician Pony","Gelderland Horse","Georgian Grande Horse","German Warmblood","Giara Horse","Gidran","Groningen Horse","Gypsy Horse","Hackney Horse","Haflinger","Hanoverian Horse","Heck Horse","Heihe Horse","Henson Horse","Hequ Horse","Hirzai","Hispano-Bretón","Holsteiner Horse","Horro","Hungarian Warmblood","Icelandic Horse","Iomud","Irish Draught","Irish Sport Horse sometimes called Irish Hunter","Italian Heavy Draft","Italian Trotter","Jaca Navarra","Jeju Horse","Jutland Horse","Kabarda Horse","Kafa","Kaimanawa Horses","Kalmyk Horse","Karabair","Karabakh Horse","Karachai Horse","Karossier","Kathiawari","Kazakh Horse","Kentucky Mountain Saddle Horse","Kiger Mustang","Kinsky Horse","Kisber Felver","Kiso Horse","Kladruber","Knabstrupper","Konik","Kundudo","Kustanair","Kyrgyz Horse","Latvian Horse","Lipizzan","Lithuanian Heavy Draught","Lokai","Losino Horse","Lusitano","Lyngshest","M'Bayar","M'Par","Mallorquín","Malopolski","Mangalarga","Mangalarga Marchador","Maremmano","Marismeño Horse","Marsh Tacky","Marwari Horse","Mecklenburger","Menorquín","Messara Horse","Metis Trotter","Mezőhegyesi Sport Horse","Međimurje Horse","Miniature Horse","Misaki Horse","Missouri Fox Trotter","Monchina","Mongolian Horse","Mongolian Wild Horse","Monterufolino","Morab","Morgan Horse","Mountain Pleasure Horse","Moyle Horse","Murakoz Horse","Murgese","Mustang Horse","Mérens Horse","Namib Desert Horse","Nangchen Horse","National Show Horse","Nez Perce Horse","Nivernais Horse","Nokota Horse","Noma","Nonius Horse","Nooitgedachter","Nordlandshest","Noriker Horse","Norman Cob","North American Single-Footer Horse","North Swedish Horse","Norwegian Coldblood Trotter","Norwegian Fjord","Novokirghiz","Oberlander Horse","Ogaden","Oldenburg Horse","Orlov trotter","Ostfriesen","Paint","Pampa Horse","Paso Fino","Pentro Horse","Percheron","Persano Horse","Peruvian Paso","Pintabian","Pleven Horse","Poitevin Horse","Posavac Horse","Pottok","Pryor Mountain Mustang","Przewalski's Horse","Pura Raza Española","Purosangue Orientale","Qatgani","Quarab","Quarter Horse","Racking Horse","Retuerta Horse","Rhenish German Coldblood","Rhinelander Horse","Riwoche Horse","Rocky Mountain Horse","Romanian Sporthorse","Rottaler","Russian Don","Russian Heavy Draft","Russian Trotter","Saddlebred","Salerno Horse","Samolaco Horse","San Fratello Horse","Sarcidano Horse","Sardinian Anglo-Arab","Schleswig Coldblood","Schwarzwälder Kaltblut","Selale","Sella Italiano","Selle Français","Shagya Arabian","Shan Horse","Shire Horse","Siciliano Indigeno","Silesian Horse","Sokolsky Horse","Sorraia","South German Coldblood","Soviet Heavy Draft","Spanish Anglo-Arab","Spanish Barb","Spanish Jennet Horse","Spanish Mustang","Spanish Tarpan","Spanish-Norman Horse","Spiti Horse","Spotted Saddle Horse","Standardbred Horse","Suffolk Punch","Swedish Ardennes","Swedish Warmblood","Swedish coldblood trotter","Swiss Warmblood","Taishū Horse","Takhi","Tawleed","Tchernomor","Tennessee Walking Horse","Tersk Horse","Thoroughbred","Tiger Horse","Tinker Horse","Tolfetano","Tori Horse","Trait Du Nord","Trakehner","Tsushima","Tuigpaard","Ukrainian Riding Horse","Unmol Horse","Uzunyayla","Ventasso Horse","Virginia Highlander","Vlaamperd","Vladimir Heavy Draft","Vyatka","Waler","Waler Horse","Walkaloosa","Warlander","Warmblood","Welsh Cob","Westphalian Horse","Wielkopolski","Württemberger","Xilingol Horse","Yakutian Horse","Yili Horse","Yonaguni Horse","Zaniskari","Zhemaichu","Zweibrücker","Žemaitukas"],insect:["Acacia-ants","Acorn-plum gall","Aerial yellowjacket","Africanized honey bee","Allegheny mound ant","Almond stone wasp","Ant","Arboreal ant","Argentine ant","Asian paper wasp","Baldfaced hornet","Bee","Bigheaded ant","Black and yellow mud dauber","Black carpenter ant","Black imported fire ant","Blue horntail woodwasp","Blue orchard bee","Braconid wasp","Bumble bee","Carpenter ant","Carpenter wasp","Chalcid wasp","Cicada killer","Citrus blackfly parasitoid","Common paper wasp","Crazy ant","Cuckoo wasp","Cynipid gall wasp","Eastern Carpenter bee","Eastern yellowjacket","Elm sawfly","Encyrtid wasp","Erythrina gall wasp","Eulophid wasp","European hornet","European imported fire ant","False honey ant","Fire ant","Forest bachac","Forest yellowjacket","German yellowjacket","Ghost ant","Giant ichneumon wasp","Giant resin bee","Giant wood wasp","Golden northern bumble bee","Golden paper wasp","Gouty oak gall","Grass Carrying Wasp","Great black wasp","Great golden digger wasp","Hackberry nipple gall parasitoid","Honey bee","Horned oak gall","Horse guard wasp","Hunting wasp","Ichneumonid wasp","Keyhole wasp","Knopper gall","Large garden bumble bee","Large oak-apple gall","Leafcutting bee","Little fire ant","Little yellow ant","Long-horned bees","Long-legged ant","Macao paper wasp","Mallow bee","Marble gall","Mossyrose gall wasp","Mud-daubers","Multiflora rose seed chalcid","Oak apple gall wasp","Oak rough bulletgall wasp","Oak saucer gall","Oak shoot sawfly","Odorous house ant","Orange-tailed bumble bee","Orangetailed potter wasp","Oriental chestnut gall wasp","Paper wasp","Pavement ant","Pigeon tremex","Pip gall wasp","Prairie yellowjacket","Pteromalid wasp","Pyramid ant","Raspberry Horntail","Red ant","Red carpenter ant","Red harvester ant","Red imported fire ant","Red wasp","Red wood ant","Red-tailed wasp","Reddish carpenter ant","Rough harvester ant","Sawfly parasitic wasp","Scale parasitoid","Silky ant","Sirex woodwasp","Siricid woodwasp","Smaller yellow ant","Southeastern blueberry bee","Southern fire ant","Southern yellowjacket","Sphecid wasp","Stony gall","Sweat bee","Texas leafcutting ant","Tiphiid wasp","Torymid wasp","Tramp ant","Valentine ant","Velvet ant","Vespid wasp","Weevil parasitoid","Western harvester ant","Western paper wasp","Western thatching ant","Western yellowjacket","White-horned horntail","Willow shoot sawfly","Woodwasp","Wool sower gall maker","Yellow Crazy Ant","Yellow and black potter wasp","Yellow-horned horntail"],lion:["Asiatic Lion","Barbary Lion","Cape lion","Masai Lion","Northeast Congo Lion","Transvaal lion","West African Lion"],rabbit:["American","American Chinchilla","American Fuzzy Lop","American Sable","Argente Brun","Belgian Hare","Beveren","Blanc de Hotot","Britannia Petite","Californian","Champagne D’Argent","Checkered Giant","Cinnamon","Crème D’Argent","Dutch","Dwarf Hotot","English Angora","English Lop","English Spot","Flemish Giant","Florida White","French Angora","French Lop","Giant Angora","Giant Chinchilla","Harlequin","Havana","Himalayan","Holland Lop","Jersey Wooly","Lilac","Lionhead","Mini Lop","Mini Rex","Mini Satin","Netherland Dwarf","New Zealand","Palomino","Polish","Rex","Rhinelander","Satin","Satin Angora","Silver","Silver Fox","Silver Marten","Standard Chinchilla","Tan","Thrianta"],rodent:["Abrocoma","Abrocoma schistacea","Aconaemys","Aconaemys porteri","African brush-tailed porcupine","Andean mountain cavy","Argentine tuco-tuco","Ashy chinchilla rat","Asiatic brush-tailed porcupine","Atherurus","Azara's agouti","Azara's tuco-tuco","Bahia porcupine","Bathyergus","Bathyergus janetta","Bathyergus suillus","Bennett's chinchilla rat","Bicolored-spined porcupine","Black agouti","Black dwarf porcupine","Black-rumped agouti","Black-tailed hairy dwarf porcupine","Bolivian chinchilla rat","Bolivian tuco-tuco","Bonetto's tuco-tuco","Brandt's yellow-toothed cavy","Brazilian guinea pig","Brazilian porcupine","Brazilian tuco-tuco","Bridge's degu","Brown hairy dwarf porcupine","Budin's chinchilla rat, A. budini","Cape porcupine","Catamarca tuco-tuco","Cavia","Central American agouti","Chacoan tuco-tuco","Chilean rock rat","Chinchilla","Coendou","Coiban agouti","Colburn's tuco-tuco","Collared tuco-tuco","Common degu","Common yellow-toothed cavy","Conover's tuco-tuco","Coruro","Crested agouti","Crested porcupine","Cryptomys","Cryptomys bocagei","Cryptomys damarensis","Cryptomys foxi","Cryptomys hottentotus","Cryptomys mechowi","Cryptomys ochraceocinereus","Cryptomys zechi","Ctenomys","Cuniculus","Cuscomys","Cuscomys ashanika","Dactylomys","Dactylomys boliviensis","Dactylomys dactylinus","Dactylomys peruanus","Dasyprocta","Domestic guinea pig","Emily's tuco-tuco","Erethizon","Famatina chinchilla rat","Frosted hairy dwarf porcupine","Fukomys","Fukomys amatus","Fukomys anselli","Fukomys bocagei","Fukomys damarensis","Fukomys darlingi","Fukomys foxi","Fukomys ilariae","Fukomys kafuensis","Fukomys mechowii","Fukomys micklemi","Fukomys occlusus","Fukomys ochraceocinereus","Fukomys whytei","Fukomys zechi","Furtive tuco-tuco","Galea","Georychus","Georychus capensis","Golden viscacha-rat","Goya tuco-tuco","Greater guinea pig","Green acouchi","Haig's tuco-tuco","Heliophobius","Heliophobius argenteocinereus","Heterocephalus","Heterocephalus glaber","Highland tuco-tuco","Hystrix","Indian porcupine","Isla Mocha degu","Kalinowski agouti","Kannabateomys","Kannabateomys amblyonyx","Lagidium","Lagostomus","Lewis' tuco-tuco","Long-tailed chinchilla","Long-tailed porcupine","Los Chalchaleros' viscacha-rat","Lowland paca","Magellanic tuco-tuco","Malayan porcupine","Maule tuco-tuco","Mendoza tuco-tuco","Mexican agouti","Mexican hairy dwarf porcupine","Microcavia","Montane guinea pig","Moon-toothed degu","Mottled tuco-tuco","Mountain degu","Mountain paca","Mountain viscacha-rat","Myoprocta","Natterer's tuco-tuco","North American porcupine","Northern viscacha","Octodon","Octodontomys","Octomys","Olallamys","Olallamys albicauda","Olallamys edax","Orinoco agouti","Paraguaian hairy dwarf porcupine","Pearson's tuco-tuco","Peruvian tuco-tuco","Philippine porcupine","Pipanacoctomys","Plains viscacha","Plains viscacha-rat","Porteous' tuco-tuco","Punta de Vacas chinchilla rat","Red acouchi","Red-rumped agouti","Reddish tuco-tuco","Rio Negro tuco-tuco","Robust tuco-tuco","Roosmalen's dwarf porcupine","Rothschild's porcupine","Ruatan Island agouti","Sage's rock rat","Salinoctomys","Salta tuco-tuco","San Luis tuco-tuco","Santa Catarina's guinea pig","Shiny guinea pig","Shipton's mountain cavy","Short-tailed chinchilla","Silky tuco-tuco","Social tuco-tuco","Southern mountain cavy","Southern tuco-tuco","Southern viscacha","Spalacopus","Spix's yellow-toothed cavy","Steinbach's tuco-tuco","Streaked dwarf porcupine","Strong tuco-tuco","Stump-tailed porcupine","Sumatran porcupine","Sunda porcupine","Talas tuco-tuco","Tawny tuco-tuco","Thick-spined porcupine","Tiny tuco-tuco","Trichys","Tucuman tuco-tuco","Tympanoctomys","Uspallata chinchilla rat","White-toothed tuco-tuco","Wolffsohn's viscacha"],snake:["Abaco Island boa","Aesculapian snake","African beaked snake","African puff adder","African rock python","African twig snake","African wolf snake","Amazon tree boa","Amazonian palm viper","American Vine Snake","American copperhead","Amethystine python","Anaconda","Andaman cat snake","Andaman cobra","Angolan python","Annulated sea snake","Arabian cobra","Arafura file snake","Arizona black rattlesnake","Arizona coral snake","Aruba rattlesnake","Asian Vine Snake, Whip Snake","Asian cobra","Asian keelback","Asian pipe snake","Asp","Asp viper","Assam keelback","Australian copperhead","Australian scrub python","Baird's rat snake","Baja California lyresnake","Ball Python","Ball python","Bamboo pitviper","Bamboo viper","Banded Flying Snake","Banded cat-eyed snake","Banded krait","Banded pitviper","Banded water cobra","Barbour's pit viper","Barred wolf snake","Beaked sea snake","Beauty rat snake","Beddome's cat snake","Beddome's coral snake","Bimini racer","Bird snake","Bismarck ringed python","Black headed python","Black krait","Black mamba","Black rat snake","Black snake","Black tree cobra","Black-banded trinket snake","Black-headed snake","Black-necked cobra","Black-necked spitting cobra","Black-speckled palm-pitviper","Black-striped keelback","Black-tailed horned pit viper","Blanding's tree snake","Blind snake","Blonde hognose snake","Blood python","Blue krait","Blunt-headed tree snake","Bluntnose viper","Boa","Boa constrictor","Bocourt's water snake","Boelen python","Boiga","Bolivian anaconda","Boomslang","Bornean pitviper","Borneo short-tailed python","Brahminy blind snake","Brazilian coral snake","Brazilian mud Viper","Brazilian smooth snake","Bredl's python","Brongersma's pitviper","Brown snake","Brown spotted pitviper[4]","Brown tree snake","Brown water python","Brown white-lipped python","Buff striped keelback","Bull snake","Burmese keelback","Burmese krait","Burmese python","Burrowing cobra","Burrowing viper","Bush viper","Bushmaster","Buttermilk racer","Calabar python","California kingsnake","Canebrake","Cantil","Cantor's pitviper","Cape cobra","Cape coral snake","Cape gopher snake","Carpet viper","Cascabel","Caspian cobra","Cat snake","Cat-eyed night snake","Cat-eyed snake","Central American lyre snake","Central ranges taipan","Centralian carpet python","Ceylon krait","Chappell Island tiger snake","Checkered garter snake","Checkered keelback","Chicken snake","Chihuahuan ridge-nosed rattlesnake","Children's python","Chinese tree viper","Coachwhip snake","Coastal carpet python","Coastal taipan","Cobra","Collett's snake","Colorado desert sidewinder","Common adder","Common cobra","Common garter snake","Common ground snake","Common keelback","Common lancehead","Common tiger snake","Common worm snake","Congo snake","Congo water cobra","Copperhead","Coral snake","Corn snake","Coronado Island rattlesnake","Cottonmouth","Crossed viper","Crowned snake","Cuban boa","Cuban wood snake","Cyclades blunt-nosed viper","Dauan Island water python","De Schauensee's anaconda","Death Adder","Desert death adder","Desert kingsnake","Desert woma python","Diamond python","Dog-toothed cat snake","Down's tiger snake","Dubois's sea snake","Dumeril's boa","Durango rock rattlesnake","Dusky pigmy rattlesnake","Dusty hognose snake","Dwarf beaked snake","Dwarf boa","Dwarf pipe snake","Dwarf sand adder","Eastern brown snake","Eastern coral snake","Eastern diamondback rattlesnake","Eastern green mamba","Eastern hognose snake","Eastern lyre snake","Eastern mud snake","Eastern racer","Eastern tiger snake","Eastern water cobra","Eastern yellowbelly sad racer","Egg-eater","Egyptian asp","Egyptian cobra","Elegant pitviper","Emerald tree boa","Equatorial spitting cobra","European asp","European smooth snake","Eyelash palm-pitviper","Eyelash pit viper","Eyelash viper","False cobra","False horned viper","False water cobra","Fan-Si-Pan horned pitviper","Fea's viper","Fer-de-lance","Fierce snake","Fifty pacer","Fishing snake","Flat-nosed pitviper","Flinders python","Flying snake","Forest cobra","Forest flame snake","Forsten's cat snake","Fox snake, three species of Pantherophis","Gaboon viper","Garter snake","Giant Malagasy hognose snake","Godman's pit viper","Gold tree cobra","Gold-ringed cat snake","Golden tree snake","Grand Canyon rattlesnake","Grass snake","Gray cat snake","Great Basin rattlesnake","Great Lakes bush viper","Great Plains rat snake","Green anaconda","Green cat-eyed snake","Green mamba","Green palm viper","Green rat snake","Green snake","Green tree pit viper","Green tree python","Grey Lora","Grey-banded kingsnake","Ground snake","Guatemalan palm viper","Guatemalan tree viper","Habu","Habu pit viper","Hagen's pitviper","Hairy bush viper","Halmahera python","Hardwicke's sea snake","Harlequin coral snake","High Woods coral snake","Hill keelback","Himalayan keelback","Hogg Island boa","Hognose snake","Hognosed viper","Honduran palm viper","Hook Nosed Sea Snake","Hopi rattlesnake","Horned adder","Horned desert viper","Horned viper","Horseshoe pitviper","Hundred pacer","Hutton's tree viper","Ikaheka snake","Indian cobra","Indian flying snake","Indian krait","Indian python","Indian tree viper","Indigo snake","Indochinese spitting cobra","Indonesian water python","Inland carpet python","Inland taipan","Jamaican Tree Snake","Jamaican boa","Jan's hognose snake","Japanese forest rat snake","Japanese rat snake","Japanese striped snake","Javan spitting cobra","Jerdon's pitviper","Jumping viper","Jungle carpet python","Kanburian pit viper","Kaulback's lance-headed pitviper","Kayaudi dwarf reticulated python","Kaznakov's viper","Keelback","Kham Plateau pitviper","Khasi Hills keelback","King Island tiger snake","King brown","King cobra","King rat snake","King snake","Krait","Krefft's tiger snake","Lance-headed rattlesnake","Lancehead","Large shield snake","Large-eyed pitviper","Large-scaled tree viper","Leaf viper","Leaf-nosed viper","Lesser black krait","Levant viper","Long-nosed adder","Long-nosed tree snake","Long-nosed viper","Long-nosed whip snake","Long-tailed rattlesnake","Longnosed worm snake","Lora","Lyre snake","Machete savane","Macklot's python","Madagascar ground boa","Madagascar tree boa","Malabar rock pitviper","Malayan krait","Malayan long-glanded coral snake","Malayan pit viper","Malcolm's tree viper","Mamba","Mamushi","Manchurian Black Water Snake","Mandalay cobra","Mandarin rat snake","Mangrove pit viper","Mangrove snake","Mangshan pitviper","Many-banded krait","Many-banded tree snake","Many-horned adder","Many-spotted cat snake","Massasauga rattlesnake","McMahon's viper","Mexican black kingsnake","Mexican green rattlesnake","Mexican hognose snake","Mexican palm-pitviper","Mexican parrot snake","Mexican racer","Mexican vine snake","Mexican west coast rattlesnake","Midget faded rattlesnake","Milk snake","Moccasin snake","Modest keelback","Mojave desert sidewinder","Mojave rattlesnake","Mole viper","Mollucan python","Moluccan flying snake","Montpellier snake","Motuo bamboo pitviper","Mountain adder","Mozambique spitting cobra","Mud adder","Mud snake","Mussurana","Namaqua dwarf adder","Namib dwarf sand adder","Narrowhead Garter Snake","New Guinea carpet python","Nichell snake","Nicobar Island keelback","Nicobar bamboo pitviper","Night snake","Nightingale adder","Nilgiri keelback","Nitsche's bush viper","Nitsche's tree viper","North Philippine cobra","North eastern king snake","Northeastern hill krait","Northern black-tailed rattlesnake","Northern tree snake","Northern water snake","Northern white-lipped python","Northwestern carpet python","Nose-horned viper","Nubian spitting cobra","Oaxacan small-headed rattlesnake","Oenpelli python","Olive python","Olive sea snake","Orange-collared keelback","Ornate flying snake","Palestine viper","Pallas' viper","Palm viper","Papuan python","Paradise flying snake","Parrot snake","Patchnose snake","Paupan taipan","Pelagic sea snake","Peninsula tiger snake","Peringuey's adder","Perrotet's shieldtail snake","Persian rat snake","Philippine cobra","Philippine pitviper","Pine snake","Pipe snake","Pit viper","Pointed-scaled pit viper[5]","Pope's tree viper","Portuguese viper","Prairie kingsnake","Puerto Rican boa","Puff adder","Pygmy python","Python","Queen snake","Racer","Raddysnake","Rainbow boa","Rat snake","Rattler","Rattlesnake","Red blood python","Red diamond rattlesnake","Red spitting cobra","Red-backed rat snake","Red-bellied black snake","Red-headed krait","Red-necked keelback","Red-tailed bamboo pitviper","Red-tailed boa","Red-tailed pipe snake","Reticulated python","Rhinoceros viper","Rhombic night adder","Ribbon snake","Rinkhals","Rinkhals cobra","River jack","Rosy boa","Rough green snake","Rough-scaled bush viper","Rough-scaled python","Rough-scaled tree viper","Royal python","Rubber boa","Rufous beaked snake","Rungwe tree viper","San Francisco garter snake","Sand adder","Sand boa","Savu python","Saw-scaled viper","Scarlet kingsnake","Schlegel's viper","Schultze's pitviper","Sea snake","Sedge viper","Selayer reticulated python","Sharp-nosed viper","Shield-nosed cobra","Shield-tailed snake","Siamese palm viper","Side-striped palm-pitviper","Sidewinder","Sikkim keelback","Sinai desert cobra","Sind krait","Small-eyed snake","Smooth green snake","Smooth snake","Snorkel viper","Snouted cobra","Sonoran sidewinder","South American hognose snake","South eastern corn snake","Southern Indonesian spitting cobra","Southern Pacific rattlesnake","Southern Philippine cobra","Southern black racer","Southern white-lipped python","Southwestern black spitting cobra","Southwestern blackhead snake","Southwestern carpet python","Southwestern speckled rattlesnake","Speckle-bellied keelback","Speckled kingsnake","Spectacled cobra","Spiny bush viper","Spitting cobra","Spotted python","Sri Lankan pit viper","Stejneger's bamboo pitviper","Stiletto snake","Stimson's python","Stoke's sea snake","Storm water cobra","Striped snake","Sumatran short-tailed python","Sumatran tree viper","Sunbeam snake","Taipan","Taiwan cobra","Tan racer","Tancitaran dusky rattlesnake","Tanimbar python","Tasmanian tiger snake","Tawny cat snake","Temple pit viper","Temple viper","Tentacled snake","Texas Coral Snake","Texas blind snake","Texas garter snake","Texas lyre snake","Texas night snake","Thai cobra","Three-lined ground snake","Tibetan bamboo pitviper","Tic polonga","Tiger pit viper","Tiger rattlesnake","Tiger snake","Tigre snake","Timber rattlesnake","Timor python","Titanboa","Tree boa","Tree snake","Tree viper","Trinket snake","Tropical rattlesnake","Twig snake","Twin Headed King Snake","Twin-Barred tree snake","Twin-spotted rat snake","Twin-spotted rattlesnake","Undulated pit viper","Uracoan rattlesnake","Ursini's viper","Urutu","Vine snake","Viper","Viper Adder","Vipera ammodytes","Wagler's pit viper","Wart snake","Water adder","Water moccasin","Water snake","West Indian racer","Western blind snake","Western carpet python","Western coral snake","Western diamondback rattlesnake","Western green mamba","Western ground snake","Western hog-nosed viper","Western mud snake","Western tiger snake","Western woma python","Wetar Island python","Whip snake","White-lipped keelback","White-lipped python","White-lipped tree viper","Wirot's pit viper","Wolf snake","Woma python","Worm snake","Wutu","Wynaad keelback","Yarara","Yellow anaconda","Yellow-banded sea snake","Yellow-bellied sea snake","Yellow-lined palm viper","Yellow-lipped sea snake","Yellow-striped rat snake","Yunnan keelback","Zebra snake","Zebra spitting cobra"],type:["bat","bear","bee","bird","butterfly","cat","cow","crocodile","deer","dog","dolphin","eagle","elephant","fish","flamingo","fox","frog","gecko","giraffe","gorilla","hamster","hippopotamus","horse","kangaroo","koala","lion","monkey","ostrich","panda","parrot","peacock","penguin","polar bear","rabbit","rhinoceros","sea lion","shark","snake","squirrel","tiger","turtle","whale","wolf","zebra"]},app:{author:["{{person.name}}","{{company.name}}"],name:["Redhold","Treeflex","Trippledex","Kanlam","Bigtax","Daltfresh","Toughjoyfax","Mat Lam Tam","Otcom","Tres-Zap","Y-Solowarm","Tresom","Voltsillam","Biodex","Greenlam","Viva","Matsoft","Temp","Zoolab","Subin","Rank","Job","Stringtough","Tin","It","Home Ing","Zamit","Sonsing","Konklab","Alpha","Latlux","Voyatouch","Alphazap","Holdlamis","Zaam-Dox","Sub-Ex","Quo Lux","Bamity","Ventosanzap","Lotstring","Hatity","Tempsoft","Overhold","Fixflex","Konklux","Zontrax","Tampflex","Span","Namfix","Transcof","Stim","Fix San","Sonair","Stronghold","Fintone","Y-find","Opela","Lotlux","Ronstring","Zathin","Duobam","Keylex"],version:["0.#.#","0.##","#.##","#.#","#.#.#"]},cell_phone:{formats:["###-###-####","(###) ###-####","1-###-###-####","###.###.####"]},color:{human:["azure","black","blue","cyan","fuchsia","gold","green","grey","indigo","ivory","lavender","lime","magenta","maroon","mint green","olive","orange","orchid","pink","plum","purple","red","salmon","silver","sky blue","tan","teal","turquoise","violet","white","yellow"]},commerce:{department:["Automotive","Baby","Beauty","Books","Clothing","Computers","Electronics","Games","Garden","Grocery","Health","Home","Industrial","Jewelry","Kids","Movies","Music","Outdoors","Shoes","Sports","Tools","Toys"],product_description:["Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals","Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles","Carbonite web goalkeeper gloves are ergonomically designed to give easy fit","Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support","New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016","New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart","The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design","The Football Is Good For Training And Recreational Purposes","The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J","The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive","The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients","The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality"],product_name:{adjective:["Awesome","Bespoke","Electronic","Elegant","Ergonomic","Fantastic","Generic","Gorgeous","Handcrafted","Handmade","Incredible","Intelligent","Licensed","Luxurious","Modern","Oriental","Practical","Recycled","Refined","Rustic","Sleek","Small","Tasty","Unbranded"],material:["Bronze","Concrete","Cotton","Fresh","Frozen","Granite","Metal","Plastic","Rubber","Soft","Steel","Wooden"],product:["Bacon","Ball","Bike","Car","Chair","Cheese","Chicken","Chips","Computer","Fish","Gloves","Hat","Keyboard","Mouse","Pants","Pizza","Salad","Sausages","Shirt","Shoes","Soap","Table","Towels","Tuna"]}},company:{adjective:["Adaptive","Advanced","Ameliorated","Assimilated","Automated","Balanced","Business-focused","Centralized","Cloned","Compatible","Configurable","Cross-group","Cross-platform","Customer-focused","Customizable","De-engineered","Decentralized","Devolved","Digitized","Distributed","Diverse","Down-sized","Enhanced","Enterprise-wide","Ergonomic","Exclusive","Expanded","Extended","Face to face","Focused","Front-line","Fully-configurable","Function-based","Fundamental","Future-proofed","Grass-roots","Horizontal","Implemented","Innovative","Integrated","Intuitive","Inverse","Managed","Mandatory","Monitored","Multi-channelled","Multi-lateral","Multi-layered","Multi-tiered","Networked","Object-based","Open-architected","Open-source","Operative","Optimized","Optional","Organic","Organized","Persevering","Persistent","Phased","Polarised","Pre-emptive","Proactive","Profit-focused","Profound","Programmable","Progressive","Public-key","Quality-focused","Re-contextualized","Re-engineered","Reactive","Realigned","Reduced","Reverse-engineered","Right-sized","Robust","Seamless","Secured","Self-enabling","Sharable","Stand-alone","Streamlined","Switchable","Synchronised","Synergistic","Synergized","Team-oriented","Total","Triple-buffered","Universal","Up-sized","Upgradable","User-centric","User-friendly","Versatile","Virtual","Vision-oriented","Visionary"],buzz_adjective:["24/365","24/7","B2B","B2C","back-end","best-of-breed","bleeding-edge","bricks-and-clicks","clicks-and-mortar","collaborative","compelling","cross-media","cross-platform","customized","cutting-edge","distributed","dot-com","dynamic","e-business","efficient","end-to-end","enterprise","extensible","frictionless","front-end","global","granular","holistic","impactful","innovative","integrated","interactive","intuitive","killer","leading-edge","magnetic","mission-critical","next-generation","one-to-one","open-source","out-of-the-box","plug-and-play","proactive","real-time","revolutionary","rich","robust","scalable","seamless","sexy","sticky","strategic","synergistic","transparent","turn-key","ubiquitous","user-centric","value-added","vertical","viral","virtual","visionary","web-enabled","wireless","world-class"],buzz_noun:["ROI","action-items","applications","architectures","bandwidth","blockchains","channels","communities","content","convergence","deliverables","e-business","e-commerce","e-markets","experiences","eyeballs","functionalities","infrastructures","initiatives","interfaces","lifetime value","markets","methodologies","metrics","mindshare","models","networks","niches","paradigms","partnerships","platforms","portals","relationships","schemas","solutions","supply-chains","synergies","systems","technologies","users","web services"],buzz_verb:["aggregate","architect","benchmark","brand","cultivate","deliver","deploy","disintermediate","drive","e-enable","embrace","empower","enable","engage","engineer","enhance","envisioneer","evolve","expedite","exploit","extend","facilitate","generate","grow","harness","implement","incentivize","incubate","innovate","integrate","iterate","leverage","matrix","maximize","mesh","monetize","morph","optimize","orchestrate","productize","recontextualize","redefine","reintermediate","reinvent","repurpose","revolutionize","scale","seize","strategize","streamline","syndicate","synergize","synthesize","target","transform","transition","unleash","utilize","visualize","whiteboard"],descriptor:["24 hour","24/7","3rd generation","4th generation","5th generation","6th generation","actuating","analyzing","asymmetric","asynchronous","attitude-oriented","background","bandwidth-monitored","bi-directional","bifurcated","bottom-line","clear-thinking","client-driven","client-server","coherent","cohesive","composite","content-based","context-sensitive","contextually-based","dedicated","demand-driven","didactic","directional","discrete","disintermediate","dynamic","eco-centric","empowering","encompassing","even-keeled","executive","explicit","exuding","fault-tolerant","foreground","fresh-thinking","full-range","global","grid-enabled","heuristic","high-level","holistic","homogeneous","human-resource","hybrid","impactful","incremental","intangible","interactive","intermediate","leading edge","local","logistical","maximized","methodical","mission-critical","mobile","modular","motivating","multi-state","multi-tasking","multimedia","national","needs-based","neutral","next generation","non-volatile","object-oriented","optimal","optimizing","radical","real-time","reciprocal","regional","responsive","scalable","secondary","solution-oriented","stable","static","system-worthy","systematic","systemic","tangible","tertiary","transitional","uniform","upward-trending","user-facing","value-added","web-enabled","well-modulated","zero administration","zero defect","zero tolerance"],legal_entity_type:["Group","Inc","LLC","and Sons"],name_pattern:["{{person.last_name.generic}} - {{person.last_name.generic}}","{{person.last_name.generic}} {{company.legal_entity_type}}","{{person.last_name.generic}}, {{person.last_name.generic}} and {{person.last_name.generic}}"],noun:["Graphic Interface","Graphical User Interface","ability","access","adapter","algorithm","alliance","analyzer","application","approach","architecture","archive","array","artificial intelligence","attitude","benchmark","budgetary management","capability","capacity","challenge","circuit","collaboration","complexity","concept","conglomeration","contingency","core","customer loyalty","data-warehouse","database","definition","emulation","encoding","encryption","extranet","firmware","flexibility","focus group","forecast","frame","framework","function","functionalities","groupware","hardware","help-desk","hierarchy","hub","implementation","info-mediaries","infrastructure","initiative","installation","instruction set","interface","internet solution","intranet","knowledge base","knowledge user","leverage","local area network","matrices","matrix","methodology","middleware","migration","model","moderator","monitoring","moratorium","neural-net","open architecture","open system","orchestration","paradigm","parallelism","policy","portal","pricing structure","process improvement","product","productivity","project","projection","protocol","secured line","service-desk","software","solution","standardization","strategy","structure","success","superstructure","support","synergy","system engine","task-force","throughput","time-frame","toolset","utilisation","website","workforce"]},database:{column:["avatar","category","comment","createdAt","email","group","id","name","password","phone","status","title","token","updatedAt"]},date:{month:{wide:["April","August","December","February","January","July","June","March","May","November","October","September"],abbr:["Apr","Aug","Dec","Feb","Jan","Jul","Jun","Mar","May","Nov","Oct","Sep"]},weekday:{wide:["Friday","Monday","Saturday","Sunday","Thursday","Tuesday","Wednesday"],abbr:["Fri","Mon","Sat","Sun","Thu","Tue","Wed"]}},finance:{account_type:["Auto Loan","Checking","Credit Card","Home Loan","Investment","Money Market","Personal Loan","Savings"],credit_card:{american_express:["34##-######-####L","37##-######-####L"],diners_club:["30[0-5]#-######-###L","36##-######-###L","54##-####-####-###L"],discover:["6011-####-####-###L","6011-62##-####-####-###L","64[4-9]#-####-####-###L","64[4-9]#-62##-####-####-###L","65##-####-####-###L","65##-62##-####-####-###L"],jcb:["3528-####-####-###L","3529-####-####-###L","35[3-8]#-####-####-###L"],mastercard:["2[221-720]-####-####-###L","5[1-5]##-####-####-###L"],visa:["4###########L","4###-####-####-###L"]},currency:[{name:"UAE Dirham",code:"AED",symbol:""},{name:"Afghani",code:"AFN",symbol:"؋"},{name:"Lek",code:"ALL",symbol:"Lek"},{name:"Armenian Dram",code:"AMD",symbol:""},{name:"Netherlands Antillian Guilder",code:"ANG",symbol:"ƒ"},{name:"Kwanza",code:"AOA",symbol:""},{name:"Argentine Peso",code:"ARS",symbol:"$"},{name:"Australian Dollar",code:"AUD",symbol:"$"},{name:"Aruban Guilder",code:"AWG",symbol:"ƒ"},{name:"Azerbaijanian Manat",code:"AZN",symbol:"ман"},{name:"Convertible Marks",code:"BAM",symbol:"KM"},{name:"Barbados Dollar",code:"BBD",symbol:"$"},{name:"Taka",code:"BDT",symbol:""},{name:"Bulgarian Lev",code:"BGN",symbol:"лв"},{name:"Bahraini Dinar",code:"BHD",symbol:""},{name:"Burundi Franc",code:"BIF",symbol:""},{name:"Bermudian Dollar (customarily known as Bermuda Dollar)",code:"BMD",symbol:"$"},{name:"Brunei Dollar",code:"BND",symbol:"$"},{name:"Boliviano boliviano",code:"BOB",symbol:"Bs"},{name:"Brazilian Real",code:"BRL",symbol:"R$"},{name:"Bahamian Dollar",code:"BSD",symbol:"$"},{name:"Pula",code:"BWP",symbol:"P"},{name:"Belarusian Ruble",code:"BYN",symbol:"Rbl"},{name:"Belize Dollar",code:"BZD",symbol:"BZ$"},{name:"Canadian Dollar",code:"CAD",symbol:"$"},{name:"Congolese Franc",code:"CDF",symbol:""},{name:"Swiss Franc",code:"CHF",symbol:"CHF"},{name:"Chilean Peso",code:"CLP",symbol:"$"},{name:"Yuan Renminbi",code:"CNY",symbol:"¥"},{name:"Colombian Peso",code:"COP",symbol:"$"},{name:"Costa Rican Colon",code:"CRC",symbol:"₡"},{name:"Cuban Peso",code:"CUP",symbol:"₱"},{name:"Cape Verde Escudo",code:"CVE",symbol:""},{name:"Czech Koruna",code:"CZK",symbol:"Kč"},{name:"Djibouti Franc",code:"DJF",symbol:""},{name:"Danish Krone",code:"DKK",symbol:"kr"},{name:"Dominican Peso",code:"DOP",symbol:"RD$"},{name:"Algerian Dinar",code:"DZD",symbol:""},{name:"Egyptian Pound",code:"EGP",symbol:"£"},{name:"Nakfa",code:"ERN",symbol:""},{name:"Ethiopian Birr",code:"ETB",symbol:""},{name:"Euro",code:"EUR",symbol:"€"},{name:"Fiji Dollar",code:"FJD",symbol:"$"},{name:"Falkland Islands Pound",code:"FKP",symbol:"£"},{name:"Pound Sterling",code:"GBP",symbol:"£"},{name:"Lari",code:"GEL",symbol:""},{name:"Cedi",code:"GHS",symbol:""},{name:"Gibraltar Pound",code:"GIP",symbol:"£"},{name:"Dalasi",code:"GMD",symbol:""},{name:"Guinea Franc",code:"GNF",symbol:""},{name:"Quetzal",code:"GTQ",symbol:"Q"},{name:"Guyana Dollar",code:"GYD",symbol:"$"},{name:"Hong Kong Dollar",code:"HKD",symbol:"$"},{name:"Lempira",code:"HNL",symbol:"L"},{name:"Gourde",code:"HTG",symbol:""},{name:"Forint",code:"HUF",symbol:"Ft"},{name:"Rupiah",code:"IDR",symbol:"Rp"},{name:"New Israeli Sheqel",code:"ILS",symbol:"₪"},{name:"Bhutanese Ngultrum",code:"BTN",symbol:"Nu"},{name:"Indian Rupee",code:"INR",symbol:"₹"},{name:"Iraqi Dinar",code:"IQD",symbol:""},{name:"Iranian Rial",code:"IRR",symbol:"﷼"},{name:"Iceland Krona",code:"ISK",symbol:"kr"},{name:"Jamaican Dollar",code:"JMD",symbol:"J$"},{name:"Jordanian Dinar",code:"JOD",symbol:""},{name:"Yen",code:"JPY",symbol:"¥"},{name:"Kenyan Shilling",code:"KES",symbol:""},{name:"Som",code:"KGS",symbol:"лв"},{name:"Riel",code:"KHR",symbol:"៛"},{name:"Comoro Franc",code:"KMF",symbol:""},{name:"North Korean Won",code:"KPW",symbol:"₩"},{name:"Won",code:"KRW",symbol:"₩"},{name:"Kuwaiti Dinar",code:"KWD",symbol:""},{name:"Cayman Islands Dollar",code:"KYD",symbol:"$"},{name:"Tenge",code:"KZT",symbol:"лв"},{name:"Kip",code:"LAK",symbol:"₭"},{name:"Lebanese Pound",code:"LBP",symbol:"£"},{name:"Sri Lanka Rupee",code:"LKR",symbol:"₨"},{name:"Liberian Dollar",code:"LRD",symbol:"$"},{name:"Libyan Dinar",code:"LYD",symbol:""},{name:"Moroccan Dirham",code:"MAD",symbol:""},{name:"Moldovan Leu",code:"MDL",symbol:""},{name:"Malagasy Ariary",code:"MGA",symbol:""},{name:"Denar",code:"MKD",symbol:"ден"},{name:"Kyat",code:"MMK",symbol:""},{name:"Tugrik",code:"MNT",symbol:"₮"},{name:"Pataca",code:"MOP",symbol:""},{name:"Ouguiya",code:"MRU",symbol:""},{name:"Mauritius Rupee",code:"MUR",symbol:"₨"},{name:"Rufiyaa",code:"MVR",symbol:""},{name:"Kwacha",code:"MWK",symbol:""},{name:"Mexican Peso",code:"MXN",symbol:"$"},{name:"Malaysian Ringgit",code:"MYR",symbol:"RM"},{name:"Metical",code:"MZN",symbol:"MT"},{name:"Naira",code:"NGN",symbol:"₦"},{name:"Cordoba Oro",code:"NIO",symbol:"C$"},{name:"Norwegian Krone",code:"NOK",symbol:"kr"},{name:"Nepalese Rupee",code:"NPR",symbol:"₨"},{name:"New Zealand Dollar",code:"NZD",symbol:"$"},{name:"Rial Omani",code:"OMR",symbol:"﷼"},{name:"Balboa",code:"PAB",symbol:"B/."},{name:"Nuevo Sol",code:"PEN",symbol:"S/."},{name:"Kina",code:"PGK",symbol:""},{name:"Philippine Peso",code:"PHP",symbol:"Php"},{name:"Pakistan Rupee",code:"PKR",symbol:"₨"},{name:"Zloty",code:"PLN",symbol:"zł"},{name:"Guarani",code:"PYG",symbol:"Gs"},{name:"Qatari Rial",code:"QAR",symbol:"﷼"},{name:"New Leu",code:"RON",symbol:"lei"},{name:"Serbian Dinar",code:"RSD",symbol:"Дин."},{name:"Russian Ruble",code:"RUB",symbol:"руб"},{name:"Rwanda Franc",code:"RWF",symbol:""},{name:"Saudi Riyal",code:"SAR",symbol:"﷼"},{name:"Solomon Islands Dollar",code:"SBD",symbol:"$"},{name:"Seychelles Rupee",code:"SCR",symbol:"₨"},{name:"Sudanese Pound",code:"SDG",symbol:""},{name:"Swedish Krona",code:"SEK",symbol:"kr"},{name:"Singapore Dollar",code:"SGD",symbol:"$"},{name:"Saint Helena Pound",code:"SHP",symbol:"£"},{name:"Leone",code:"SLE",symbol:""},{name:"Somali Shilling",code:"SOS",symbol:"S"},{name:"Surinam Dollar",code:"SRD",symbol:"$"},{name:"South Sudanese pound",code:"SSP",symbol:""},{name:"Dobra",code:"STN",symbol:"Db"},{name:"Syrian Pound",code:"SYP",symbol:"£"},{name:"Lilangeni",code:"SZL",symbol:""},{name:"Baht",code:"THB",symbol:"฿"},{name:"Somoni",code:"TJS",symbol:""},{name:"Manat",code:"TMT",symbol:""},{name:"Tunisian Dinar",code:"TND",symbol:""},{name:"Pa'anga",code:"TOP",symbol:""},{name:"Turkish Lira",code:"TRY",symbol:"₺"},{name:"Trinidad and Tobago Dollar",code:"TTD",symbol:"TT$"},{name:"New Taiwan Dollar",code:"TWD",symbol:"NT$"},{name:"Tanzanian Shilling",code:"TZS",symbol:""},{name:"Hryvnia",code:"UAH",symbol:"₴"},{name:"Uganda Shilling",code:"UGX",symbol:""},{name:"US Dollar",code:"USD",symbol:"$"},{name:"Peso Uruguayo",code:"UYU",symbol:"$U"},{name:"Uzbekistan Sum",code:"UZS",symbol:"лв"},{name:"Venezuelan bolívar",code:"VES",symbol:"Bs"},{name:"Dong",code:"VND",symbol:"₫"},{name:"Vatu",code:"VUV",symbol:""},{name:"Tala",code:"WST",symbol:""},{name:"CFA Franc BEAC",code:"XAF",symbol:""},{name:"East Caribbean Dollar",code:"XCD",symbol:"$"},{name:"CFA Franc BCEAO",code:"XOF",symbol:""},{name:"CFP Franc",code:"XPF",symbol:""},{name:"Yemeni Rial",code:"YER",symbol:"﷼"},{name:"Rand",code:"ZAR",symbol:"R"},{name:"Lesotho Loti",code:"LSL",symbol:""},{name:"Namibia Dollar",code:"NAD",symbol:"N$"},{name:"Zambian Kwacha",code:"ZMW",symbol:"K"},{name:"Zimbabwe Dollar",code:"ZWL",symbol:""}],transaction_type:["deposit","invoice","payment","withdrawal"]},food:{adjective:["bitter","creamy","crispy","crunchy","delicious","fluffy","fresh","golden","juicy","moist","rich","salty","savory","smoky","sour","spicy","sweet","tangy","tender","zesty"],description_pattern:["A classic pie filled with delicious {{food.meat}} and {{food.adjective}} {{food.ingredient}}, baked in a {{food.adjective}} pastry crust and topped with a golden-brown lattice.","A delightful tart combining {{food.adjective}} {{food.vegetable}} and sweet {{food.fruit}}, set in a buttery pastry shell and finished with a hint of {{food.spice}}.","A heartwarming {{food.ethnic_category}} soup, featuring fresh {{food.ingredient}} and an aromatic blend of traditional spices.","A robust {{food.adjective}} stew featuring {{food.ethnic_category}} flavors, loaded with {{food.adjective}} meat, {{food.adjective}} vegetables, and a {{food.adjective}}, {{food.adjective}} broth.","A simple {{food.fruit}} pie. No fancy stuff. Just pie.","A slow-roasted {{animal.bird}} with a {{food.adjective}}, {{food.adjective}} exterior. Stuffed with {{food.fruit}} and covered in {{food.fruit}} sauce. Sides with {{food.vegetable}} puree and wild {{food.vegetable}}.","A special {{color.human}} {{food.ingredient}} from {{location.country}}. To support the strong flavor it is sided with a tablespoon of {{food.spice}}.","A succulent {{food.meat}} steak, encased in a {{food.adjective}} {{food.spice}} crust, served with a side of {{food.spice}} mashed {{food.vegetable}}.","An exquisite {{food.meat}} roast, infused with the essence of {{food.fruit}}, slow-roasted to bring out its natural flavors and served with a side of creamy {{food.vegetable}}","Baked {{food.ingredient}}-stuffed {{food.meat}}, seasoned with {{food.spice}} and {{food.adjective}} herbs, accompanied by roasted {{food.vegetable}} medley.","Crispy fried {{food.meat}} bites, seasoned with {{food.spice}} and served with a tangy {{food.fruit}} dipping sauce.","Fresh mixed greens tossed with {{food.spice}}-rubbed {{food.meat}}, {{food.vegetable}}, and a light dressing.","Fresh {{food.ingredient}} with a pinch of {{food.spice}}, topped by a caramelized {{food.fruit}} with whipped cream","Grilled {{food.meat}} kebabs, marinated in {{food.ethnic_category}} spices and served with a fresh {{food.vegetable}} and {{food.fruit}} salad.","Hearty {{food.ingredient}} and {{food.meat}} stew, slow-cooked with {{food.spice}} and {{food.vegetable}} for a comforting, flavorful meal.","Juicy {{food.meat}}, grilled to your liking and drizzled with a bold {{food.spice}} sauce, served alongside roasted {{food.vegetable}}.","Our {{food.adjective}} {{food.meat}}, slow-cooked to perfection, accompanied by steamed {{food.vegetable}} and a rich, savory gravy.","Tender {{food.meat}} skewers, glazed with a sweet and tangy {{food.fruit}} sauce, served over a bed of fragrant jasmine rice.","Tenderly braised {{food.meat}} in a rich {{food.spice}} and {{food.vegetable}} sauce, served with a side of creamy {{food.vegetable}}.","Three {{food.ingredient}} with {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}} and {{food.ingredient}}. With a side of baked {{food.fruit}}, and your choice of {{food.ingredient}} or {{food.ingredient}}.",'{{number.int({"min":1, "max":99})}}-day aged {{food.meat}} steak, with choice of {{number.int({"min":2, "max":4})}} sides.'],dish:["California maki","Peking duck","Philadelphia maki","arepas","barbecue ribs","bruschette with tomato","bunny chow","caesar salad","caprese salad","cauliflower penne","cheeseburger","chicken fajitas","chicken milanese","chicken parm","chicken wings","chilli con carne","ebiten maki","fettuccine alfredo","fish and chips","french fries with sausages","french toast","hummus","katsu curry","kebab","lasagne","linguine with clams","massaman curry","meatballs with sauce","mushroom risotto","pappardelle alla bolognese","pasta and beans","pasta carbonara","pasta with tomato and basil","pho","pierogi","pizza","poke","pork belly buns","pork sausage roll","poutine","ricotta stuffed ravioli","risotto with seafood","salmon nigiri","scotch eggs","seafood paella","som tam","souvlaki","stinky tofu","sushi","tacos","teriyaki chicken donburi","tiramisù","tuna sashimi","vegetable soup"],dish_pattern:["{{food.adjective}} {{food.ethnic_category}} stew","{{food.adjective}} {{food.meat}} with {{food.vegetable}}","{{food.ethnic_category}} {{food.ingredient}} soup","{{food.fruit}} and {{food.fruit}} tart","{{food.fruit}} pie","{{food.fruit}}-glazed {{food.meat}} skewers","{{food.fruit}}-infused {{food.meat}} roast","{{food.ingredient}} and {{food.meat}} pie","{{food.ingredient}}-infused {{food.meat}}","{{food.meat}} steak","{{food.meat}} with {{food.fruit}} sauce","{{food.spice}}-crusted {{food.meat}}","{{food.spice}}-rubbed {{food.meat}} salad","{{food.vegetable}} salad","{{person.first_name.generic}}'s special {{food.ingredient}}"],ethnic_category:["Ainu","Albanian","American","Andhra","Anglo-Indian","Arab","Argentine","Armenian","Assyrian","Awadhi","Azerbaijani","Balochi","Bangladeshi","Bashkir","Belarusian","Bengali","Berber","Brazilian","British","Buddhist","Bulgarian","Cajun","Cantonese","Caribbean","Chechen","Chinese","Chinese Islamic","Circassian","Crimean Tatar","Cypriot","Czech","Danish","Egyptian","English","Eritrean","Estonian","Ethiopian","Filipino","French","Georgian","German","Goan","Goan Catholic","Greek","Gujarati","Hyderabad","Indian","Indian Chinese","Indian Singaporean","Indonesian","Inuit","Irish","Italian","Italian-American","Jamaican","Japanese","Jewish - Israeli","Karnataka","Kazakh","Keralite","Korean","Kurdish","Laotian","Latvian","Lebanese","Lithuanian","Louisiana Creole","Maharashtrian","Malay","Malaysian Chinese","Malaysian Indian","Mangalorean","Mediterranean","Mennonite","Mexican","Mordovian","Mughal","Native American","Nepalese","New Mexican","Odia","Pakistani","Parsi","Pashtun","Pennsylvania Dutch","Peranakan","Persian","Peruvian","Polish","Portuguese","Punjabi","Québécois","Rajasthani","Romani","Romanian","Russian","Sami","Serbian","Sindhi","Slovak","Slovenian","Somali","South Indian","Soviet","Spanish","Sri Lankan","Taiwanese","Tamil","Tatar","Texan","Thai","Turkish","Udupi","Ukrainian","Vietnamese","Yamal","Zambian","Zanzibari"],fruit:["apple","apricot","aubergine","avocado","banana","berry","blackberry","blood orange","blueberry","bush tomato","butternut pumpkin","cantaloupe","cavalo","cherry","corella pear","cranberry","cumquat","currant","custard apple","custard apples daikon","date","dragonfruit","dried apricot","elderberry","feijoa","fig","fingerlime","goji berry","grape","grapefruit","guava","honeydew melon","incaberry","jarrahdale pumpkin","juniper berry","kiwi fruit","kiwiberry","lemon","lime","longan","loquat","lychee","mandarin","mango","mangosteen","melon","mulberry","nashi pear","nectarine","olive","orange","papaw","papaya","passionfruit","peach","pear","pineapple","plum","pomegranate","prune","rockmelon","snowpea","sprout","starfruit","strawberry","sultana","tangelo","tomato","watermelon"],ingredient:["achacha","adzuki beans","agar","agave syrup","ajowan seed","albacore tuna","alfalfa","allspice","almond oil","almonds","amaranth","amchur","anchovies","aniseed","annatto seed","apple cider vinegar","apple juice","apple juice concentrate","apples","apricots","arborio rice","arrowroot","artichoke","arugula","asafoetida","asian greens","asian noodles","asparagus","aubergine","avocado","avocado oil","avocado spread","bacon","baking powder","baking soda","balsamic vinegar","bamboo shoots","banana","barberry","barley","barramundi","basil basmati rice","bay leaves","bean shoots","bean sprouts","beans","beef","beef stock","beetroot","berries","besan","black eyed beans","blackberries","blood oranges","blue cheese","blue eye trevalla","blue swimmer crab","blueberries","bocconcini","bok choy","bonito flakes","bonza","borlotti beans","bran","brazil nut","bread","brie","broccoli","broccolini","brown flour","brown mushrooms","brown rice","brown rice vinegar","brussels sprouts","buckwheat","buckwheat flour","buckwheat noodles","bulghur","bush tomato","butter","butter beans","buttermilk","butternut lettuce","butternut pumpkin","cabbage","cacao","cake","calamari","camellia tea oil","camembert","camomile","candle nut","cannellini beans","canola oil","cantaloupe","capers","capsicum","caraway seed","cardamom","carob carrot","carrot","cashews","cassia bark","cauliflower","cavalo","cayenne","celery","celery seed","cheddar","cherries","chestnut","chia seeds","chicken","chicken stock","chickory","chickpea","chilli pepper","chinese cabbage","chinese five spice","chives","choy sum","cinnamon","clams","cloves","cocoa powder","coconut","coconut oil","coconut water","coffee","common cultivated mushrooms","corella pear","coriander leaves","coriander seed","corn oil","corn syrup","corn tortilla","cornichons","cornmeal","cos lettuce","cottage cheese","cous cous","crabs","cranberry","cream","cream cheese","cucumber","cumin","cumquat","currants","curry leaves","curry powder","custard apples","dandelion","dark chocolate","dashi","dates","dill","dragonfruit","dried apricots","dried chinese broccoli","duck","edam","edamame","eggplant","eggs","elderberry","endive","english spinach","enoki mushrooms","extra virgin olive oil","farmed prawns","feijoa","fennel","fennel seeds","fenugreek","feta","figs","file powder","fingerlime","fish sauce","fish stock","flat mushrooms","flathead","flaxseed","flaxseed oil","flounder","flour","freekeh","french eschallots","fresh chillies","fromage blanc","fruit","galangal","garam masala","garlic","goat cheese","goat milk","goji berry","grape seed oil","grapefruit","grapes","green beans","green pepper","green tea","green tea noodles","greenwheat freekeh","gruyere","guava","gula melaka","haloumi","ham","haricot beans","harissa","hazelnut","hijiki","hiramasa kingfish","hokkien noodles","honey","honeydew melon","horseradish","hot smoked salmon","hummus","iceberg lettuce","incaberries","jarrahdale pumpkin","jasmine rice","jelly","jerusalem artichoke","jewfish","jicama","juniper berries","kale","kangaroo","kecap manis","kenchur","kidney beans","kidneys","kiwi berries","kiwi fruit","kohlrabi","kokam","kombu","koshihikari rice","kudzu","kumera","lamb","lavender flowers","leeks","lemon","lemongrass","lentils","lettuce","licorice","lime leaves","limes","liver","lobster","longan","loquats","lotus root","lychees","macadamia nut","macadamia oil","mace","mackerel","mahi mahi","mahlab","malt vinegar","mandarins","mango","mangosteens","maple syrup","margarine","marigold","marjoram","mastic","melon","milk","milk chocolate","mint","miso","molasses","monkfish","morwong","mountain bread","mozzarella","muesli","mulberries","mullet","mung beans","mussels","mustard","mustard seed","nashi pear","nasturtium","nectarines","nori","nutmeg","nutritional yeast","nuts","oat flour","oatmeal","oats","octopus","okra","olive oil","olives","omega spread","onion","oranges","oregano","oyster mushrooms","oyster sauce","oysters","pandanus leaves","papaw","papaya","paprik","parmesan cheese","parrotfish","parsley","parsnip","passionfruit","pasta","peaches","peanuts","pear","pear juice","pears","peas","pecan nut","pecorino","pepitas","peppercorns","peppermint","peppers","persimmon","pine nut","pineapple","pinto beans","pistachio nut","plums","polenta","pomegranate","poppy seed","porcini mushrooms","pork","potato flour","potatoes","provolone","prunes","pumpkin","pumpkin seed","purple carrot","purple rice","quark","quince","quinoa","radicchio","radish","raisin","raspberry","red cabbage","red lentils","red pepper","red wine","red wine vinegar","redfish","rhubarb","rice flour","rice noodles","rice paper","rice syrup","ricemilk","ricotta","rockmelon","rose water","rosemary","rye","rye bread","safflower oil","saffron","sage","sake","salmon","sardines","sausages","scallops","sea salt","semolina","sesame oil","sesame seeds","shark","shiitake mushrooms","silverbeet","slivered almonds","smoked trout","snapper","snowpea sprouts","snowpeas","soba","sour dough bread","soy","soy beans","soy flour","soy milk","soy sauce","soymilk","spearmint","spelt","spelt bread","spinach","spring onions","sprouts","squash","squid","star anise","star fruit","starfruit","stevia","strawberries","sugar","sultanas","sun-dried tomatoes","sunflower oil","sunflower seeds","sweet chilli sauce","sweet potato","swiss chard","swordfish","szechuan pepperberry","tabasco","tahini","taleggio cheese","tamari","tamarillo","tangelo","tapioca","tapioca flour","tarragon","tea","tea oil","tempeh","thyme","tinned","tofu","tom yum","tomatoes","trout","tuna","turkey","turmeric","turnips","unbleached flour","vanilla beans","vegetable oil","vegetable spaghetti","vegetable stock","vermicelli noodles","vinegar","wakame","walnut","warehou","wasabi","water","watercress","watermelon","wattleseed","wheat","wheatgrass juice","white bread","white flour","white rice","white wine","white wine vinegar","whiting wild rice","wholegrain bread","wholemeal","wholewheat flour","william pear","yeast","yellow papaw","yellowtail kingfish","yoghurt","yogurt","zucchini"],meat:["beef","chicken","crocodile","duck","emu","goose","kangaroo","lamb","ostrich","pigeon","pork","quail","rabbit","salmon","turkey","venison"],spice:["achiote seed","ajwain seed","ajwan seed","allspice","amchoor","anise","anise star","aniseed","annatto seed","arrowroot","asafoetida","baharat","balti masala","balti stir fry mix","basil","bay leaves","bbq","caraway seed","cardamom","cassia","cayenne pepper","celery","chamomile","chervil","chilli","chilli pepper","chillies","china star","chives","cinnamon","cloves","colombo","coriander","cumin","curly leaf parsley","curry","dhansak","dill","fennel seed","fenugreek","fines herbes","five spice","french lavender","galangal","garam masala","garlic","german chamomile","ginger","green cardamom","herbes de provence","jalfrezi","jerk","kaffir leaves","korma","lavender","lemon grass","lemon pepper","lime leaves","liquorice root","mace","mango","marjoram","methi","mint","mustard","nutmeg","onion seed","orange zest","oregano","paprika","parsley","pepper","peppercorns","pimento","piri piri","poppy seed","pot marjoram","poudre de colombo","ras-el-hanout","rice paper","rogan josh","rose baie","rosemary","saffron","sage","sesame seed","spearmint","sumac","sweet basil","sweet laurel","tagine","tandoori masala","tarragon","thyme","tikka masala","turmeric","vanilla","zahtar"],vegetable:["artichoke","arugula","asian greens","asparagus","bean shoots","bean sprouts","beans","beetroot","bok choy","broccoli","broccolini","brussels sprouts","butternut lettuce","cabbage","capers","carob carrot","carrot","cauliflower","celery","chilli pepper","chinese cabbage","chives","cornichons","cos lettuce","cucumber","dried chinese broccoli","eggplant","endive","english spinach","french eschallots","fresh chillies","garlic","green beans","green pepper","hijiki","iceberg lettuce","jerusalem artichoke","jicama","kale","kohlrabi","leeks","lettuce","okra","onion","parsnip","peas","peppers","potatoes","pumpkin","purple carrot","radicchio","radish","raspberry","red cabbage","red pepper","rhubarb","snowpea sprouts","spinach","squash","sun dried tomatoes","sweet potato","swiss chard","turnips","zucchini"]},hacker:{adjective:["1080p","auxiliary","back-end","bluetooth","cross-platform","digital","haptic","mobile","multi-byte","neural","online","open-source","optical","primary","redundant","solid state","virtual","wireless"],ingverb:["backing up","bypassing","calculating","compressing","connecting","copying","generating","hacking","indexing","navigating","overriding","parsing","programming","quantifying","synthesizing","transmitting"],noun:["alarm","application","array","bandwidth","bus","capacitor","card","circuit","driver","feed","firewall","hard drive","interface","matrix","microchip","monitor","panel","pixel","port","program","protocol","sensor","system","transmitter"],phrase:["I'll {{verb}} the {{adjective}} {{abbreviation}} {{noun}}, that should {{noun}} the {{abbreviation}} {{noun}}!","If we {{verb}} the {{noun}}, we can get to the {{abbreviation}} {{noun}} through the {{adjective}} {{abbreviation}} {{noun}}!","The {{abbreviation}} {{noun}} is down, {{verb}} the {{adjective}} {{noun}} so we can {{verb}} the {{abbreviation}} {{noun}}!","Try to {{verb}} the {{abbreviation}} {{noun}}, maybe it will {{verb}} the {{adjective}} {{noun}}!","Use the {{adjective}} {{abbreviation}} {{noun}}, then you can {{verb}} the {{adjective}} {{noun}}!","We need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!","You can't {{verb}} the {{noun}} without {{ingverb}} the {{adjective}} {{abbreviation}} {{noun}}!","{{ingverb}} the {{noun}} won't do anything, we need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!"],verb:["back up","bypass","calculate","compress","connect","copy","generate","hack","index","input","navigate","override","parse","program","quantify","reboot","synthesize","transmit"]},internet:{domain_suffix:["com","biz","info","name","net","org"],example_email:["example.org","example.com","example.net"],free_email:["gmail.com","yahoo.com","hotmail.com"]},location:{building_number:["#####","####","###"],city_name:["Abilene","Akron","Alafaya","Alameda","Albany","Albuquerque","Alexandria","Alhambra","Aliso Viejo","Allen","Allentown","Aloha","Alpharetta","Altadena","Altamonte Springs","Altoona","Amarillo","Ames","Anaheim","Anchorage","Anderson","Ankeny","Ann Arbor","Annandale","Antelope","Antioch","Apex","Apopka","Apple Valley","Appleton","Arcadia","Arden-Arcade","Arecibo","Arlington","Arlington Heights","Arvada","Ashburn","Asheville","Aspen Hill","Atascocita","Athens-Clarke County","Atlanta","Attleboro","Auburn","Augusta-Richmond County","Aurora","Austin","Avondale","Azusa","Bakersfield","Baldwin Park","Baltimore","Barnstable Town","Bartlett","Baton Rouge","Battle Creek","Bayamon","Bayonne","Baytown","Beaumont","Beavercreek","Beaverton","Bedford","Bel Air South","Bell Gardens","Belleville","Bellevue","Bellflower","Bellingham","Bend","Bentonville","Berkeley","Berwyn","Bethesda","Bethlehem","Billings","Biloxi","Binghamton","Birmingham","Bismarck","Blacksburg","Blaine","Bloomington","Blue Springs","Boca Raton","Boise City","Bolingbrook","Bonita Springs","Bossier City","Boston","Bothell","Boulder","Bountiful","Bowie","Bowling Green","Boynton Beach","Bozeman","Bradenton","Brandon","Brentwood","Bridgeport","Bristol","Brockton","Broken Arrow","Brookhaven","Brookline","Brooklyn Park","Broomfield","Brownsville","Bryan","Buckeye","Buena Park","Buffalo","Buffalo Grove","Burbank","Burien","Burke","Burleson","Burlington","Burnsville","Caguas","Caldwell","Camarillo","Cambridge","Camden","Canton","Cape Coral","Carlsbad","Carmel","Carmichael","Carolina","Carrollton","Carson","Carson City","Cary","Casa Grande","Casas Adobes","Casper","Castle Rock","Castro Valley","Catalina Foothills","Cathedral City","Catonsville","Cedar Hill","Cedar Park","Cedar Rapids","Centennial","Centreville","Ceres","Cerritos","Champaign","Chandler","Chapel Hill","Charleston","Charlotte","Charlottesville","Chattanooga","Cheektowaga","Chesapeake","Chesterfield","Cheyenne","Chicago","Chico","Chicopee","Chino","Chino Hills","Chula Vista","Cicero","Cincinnati","Citrus Heights","Clarksville","Clearwater","Cleveland","Cleveland Heights","Clifton","Clovis","Coachella","Coconut Creek","Coeur d'Alene","College Station","Collierville","Colorado Springs","Colton","Columbia","Columbus","Commerce City","Compton","Concord","Conroe","Conway","Coon Rapids","Coral Gables","Coral Springs","Corona","Corpus Christi","Corvallis","Costa Mesa","Council Bluffs","Country Club","Covina","Cranston","Cupertino","Cutler Bay","Cuyahoga Falls","Cypress","Dale City","Dallas","Daly City","Danbury","Danville","Davenport","Davie","Davis","Dayton","Daytona Beach","DeKalb","DeSoto","Dearborn","Dearborn Heights","Decatur","Deerfield Beach","Delano","Delray Beach","Deltona","Denton","Denver","Des Moines","Des Plaines","Detroit","Diamond Bar","Doral","Dothan","Downers Grove","Downey","Draper","Dublin","Dubuque","Duluth","Dundalk","Dunwoody","Durham","Eagan","East Hartford","East Honolulu","East Lansing","East Los Angeles","East Orange","East Providence","Eastvale","Eau Claire","Eden Prairie","Edina","Edinburg","Edmond","El Cajon","El Centro","El Dorado Hills","El Monte","El Paso","Elgin","Elizabeth","Elk Grove","Elkhart","Ellicott City","Elmhurst","Elyria","Encinitas","Enid","Enterprise","Erie","Escondido","Euclid","Eugene","Euless","Evanston","Evansville","Everett","Fairfield","Fall River","Fargo","Farmington","Farmington Hills","Fayetteville","Federal Way","Findlay","Fishers","Flagstaff","Flint","Florence-Graham","Florin","Florissant","Flower Mound","Folsom","Fond du Lac","Fontana","Fort Collins","Fort Lauderdale","Fort Myers","Fort Pierce","Fort Smith","Fort Wayne","Fort Worth","Fountain Valley","Fountainebleau","Framingham","Franklin","Frederick","Freeport","Fremont","Fresno","Frisco","Fullerton","Gainesville","Gaithersburg","Galveston","Garden Grove","Gardena","Garland","Gary","Gastonia","Georgetown","Germantown","Gilbert","Gilroy","Glen Burnie","Glendale","Glendora","Glenview","Goodyear","Grand Forks","Grand Island","Grand Junction","Grand Prairie","Grand Rapids","Grapevine","Great Falls","Greeley","Green Bay","Greensboro","Greenville","Greenwood","Gresham","Guaynabo","Gulfport","Hacienda Heights","Hackensack","Haltom City","Hamilton","Hammond","Hampton","Hanford","Harlingen","Harrisburg","Harrisonburg","Hartford","Hattiesburg","Haverhill","Hawthorne","Hayward","Hemet","Hempstead","Henderson","Hendersonville","Hesperia","Hialeah","Hicksville","High Point","Highland","Highlands Ranch","Hillsboro","Hilo","Hoboken","Hoffman Estates","Hollywood","Homestead","Honolulu","Hoover","Houston","Huntersville","Huntington","Huntington Beach","Huntington Park","Huntsville","Hutchinson","Idaho Falls","Independence","Indianapolis","Indio","Inglewood","Iowa City","Irondequoit","Irvine","Irving","Jackson","Jacksonville","Janesville","Jefferson City","Jeffersonville","Jersey City","Johns Creek","Johnson City","Joliet","Jonesboro","Joplin","Jupiter","Jurupa Valley","Kalamazoo","Kannapolis","Kansas City","Kearny","Keller","Kendale Lakes","Kendall","Kenner","Kennewick","Kenosha","Kent","Kentwood","Kettering","Killeen","Kingsport","Kirkland","Kissimmee","Knoxville","Kokomo","La Crosse","La Habra","La Mesa","La Mirada","Lacey","Lafayette","Laguna Niguel","Lake Charles","Lake Elsinore","Lake Forest","Lake Havasu City","Lake Ridge","Lakeland","Lakeville","Lakewood","Lancaster","Lansing","Laredo","Largo","Las Cruces","Las Vegas","Lauderhill","Lawrence","Lawton","Layton","League City","Lee's Summit","Leesburg","Lehi","Lehigh Acres","Lenexa","Levittown","Lewisville","Lexington-Fayette","Lincoln","Linden","Little Rock","Littleton","Livermore","Livonia","Lodi","Logan","Lombard","Lompoc","Long Beach","Longmont","Longview","Lorain","Los Angeles","Louisville/Jefferson County","Loveland","Lowell","Lubbock","Lynchburg","Lynn","Lynwood","Macon-Bibb County","Madera","Madison","Malden","Manchester","Manhattan","Mansfield","Manteca","Maple Grove","Margate","Maricopa","Marietta","Marysville","Mayaguez","McAllen","McKinney","McLean","Medford","Melbourne","Memphis","Menifee","Mentor","Merced","Meriden","Meridian","Mesa","Mesquite","Metairie","Methuen Town","Miami","Miami Beach","Miami Gardens","Middletown","Midland","Midwest City","Milford","Millcreek","Milpitas","Milwaukee","Minneapolis","Minnetonka","Minot","Miramar","Mishawaka","Mission","Mission Viejo","Missoula","Missouri City","Mobile","Modesto","Moline","Monroe","Montebello","Monterey Park","Montgomery","Moore","Moreno Valley","Morgan Hill","Mount Pleasant","Mount Prospect","Mount Vernon","Mountain View","Muncie","Murfreesboro","Murray","Murrieta","Nampa","Napa","Naperville","Nashua","Nashville-Davidson","National City","New Bedford","New Braunfels","New Britain","New Brunswick","New Haven","New Orleans","New Rochelle","New York","Newark","Newport Beach","Newport News","Newton","Niagara Falls","Noblesville","Norfolk","Normal","Norman","North Bethesda","North Charleston","North Highlands","North Las Vegas","North Lauderdale","North Little Rock","North Miami","North Miami Beach","North Port","North Richland Hills","Norwalk","Novato","Novi","O'Fallon","Oak Lawn","Oak Park","Oakland","Oakland Park","Ocala","Oceanside","Odessa","Ogden","Oklahoma City","Olathe","Olympia","Omaha","Ontario","Orange","Orem","Orland Park","Orlando","Oro Valley","Oshkosh","Overland Park","Owensboro","Oxnard","Palatine","Palm Bay","Palm Beach Gardens","Palm Coast","Palm Desert","Palm Harbor","Palm Springs","Palmdale","Palo Alto","Paradise","Paramount","Parker","Parma","Pasadena","Pasco","Passaic","Paterson","Pawtucket","Peabody","Pearl City","Pearland","Pembroke Pines","Pensacola","Peoria","Perris","Perth Amboy","Petaluma","Pflugerville","Pharr","Philadelphia","Phoenix","Pico Rivera","Pine Bluff","Pine Hills","Pinellas Park","Pittsburg","Pittsburgh","Pittsfield","Placentia","Plainfield","Plano","Plantation","Pleasanton","Plymouth","Pocatello","Poinciana","Pomona","Pompano Beach","Ponce","Pontiac","Port Arthur","Port Charlotte","Port Orange","Port St. Lucie","Portage","Porterville","Portland","Portsmouth","Potomac","Poway","Providence","Provo","Pueblo","Quincy","Racine","Raleigh","Rancho Cordova","Rancho Cucamonga","Rancho Palos Verdes","Rancho Santa Margarita","Rapid City","Reading","Redding","Redlands","Redmond","Redondo Beach","Redwood City","Reno","Renton","Reston","Revere","Rialto","Richardson","Richland","Richmond","Rio Rancho","Riverside","Riverton","Riverview","Roanoke","Rochester","Rochester Hills","Rock Hill","Rockford","Rocklin","Rockville","Rockwall","Rocky Mount","Rogers","Rohnert Park","Rosemead","Roseville","Roswell","Round Rock","Rowland Heights","Rowlett","Royal Oak","Sacramento","Saginaw","Salem","Salina","Salinas","Salt Lake City","Sammamish","San Angelo","San Antonio","San Bernardino","San Bruno","San Buenaventura (Ventura)","San Clemente","San Diego","San Francisco","San Jacinto","San Jose","San Juan","San Leandro","San Luis Obispo","San Marcos","San Mateo","San Rafael","San Ramon","San Tan Valley","Sandy","Sandy Springs","Sanford","Santa Ana","Santa Barbara","Santa Clara","Santa Clarita","Santa Cruz","Santa Fe","Santa Maria","Santa Monica","Santa Rosa","Santee","Sarasota","Savannah","Sayreville","Schaumburg","Schenectady","Scottsdale","Scranton","Seattle","Severn","Shawnee","Sheboygan","Shoreline","Shreveport","Sierra Vista","Silver Spring","Simi Valley","Sioux City","Sioux Falls","Skokie","Smyrna","Somerville","South Bend","South Gate","South Hill","South Jordan","South San Francisco","South Valley","South Whittier","Southaven","Southfield","Sparks","Spokane","Spokane Valley","Spring","Spring Hill","Spring Valley","Springdale","Springfield","St. Charles","St. Clair Shores","St. Cloud","St. George","St. Joseph","St. Louis","St. Louis Park","St. Paul","St. Peters","St. Petersburg","Stamford","State College","Sterling Heights","Stillwater","Stockton","Stratford","Strongsville","Suffolk","Sugar Land","Summerville","Sunnyvale","Sunrise","Sunrise Manor","Surprise","Syracuse","Tacoma","Tallahassee","Tamarac","Tamiami","Tampa","Taunton","Taylor","Taylorsville","Temecula","Tempe","Temple","Terre Haute","Texas City","The Hammocks","The Villages","The Woodlands","Thornton","Thousand Oaks","Tigard","Tinley Park","Titusville","Toledo","Toms River","Tonawanda","Topeka","Torrance","Town 'n' Country","Towson","Tracy","Trenton","Troy","Trujillo Alto","Tuckahoe","Tucson","Tulare","Tulsa","Turlock","Tuscaloosa","Tustin","Twin Falls","Tyler","Union City","University","Upland","Urbana","Urbandale","Utica","Vacaville","Valdosta","Vallejo","Vancouver","Victoria","Victorville","Vineland","Virginia Beach","Visalia","Vista","Waco","Waipahu","Waldorf","Walnut Creek","Waltham","Warner Robins","Warren","Warwick","Washington","Waterbury","Waterloo","Watsonville","Waukegan","Waukesha","Wauwatosa","Wellington","Wesley Chapel","West Allis","West Babylon","West Covina","West Des Moines","West Hartford","West Haven","West Jordan","West Lafayette","West New York","West Palm Beach","West Sacramento","West Seneca","West Valley City","Westfield","Westland","Westminster","Weston","Weymouth Town","Wheaton","White Plains","Whittier","Wichita","Wichita Falls","Wilmington","Wilson","Winston-Salem","Woodbury","Woodland","Worcester","Wylie","Wyoming","Yakima","Yonkers","Yorba Linda","York","Youngstown","Yuba City","Yucaipa","Yuma"],city_pattern:["{{location.city_prefix}} {{person.first_name.generic}}{{location.city_suffix}}","{{location.city_prefix}} {{person.first_name.generic}}","{{person.first_name.generic}}{{location.city_suffix}}","{{person.last_name.generic}}{{location.city_suffix}}","{{location.city_name}}"],city_prefix:["North","East","West","South","New","Lake","Port","Fort"],city_suffix:["town","ton","land","ville","berg","burgh","boro","borough","bury","view","port","mouth","stad","stead","furt","chester","cester","fort","field","haven","side","shire","worth"],country:["Afghanistan","Aland Islands","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bonaire, Sint Eustatius and Saba","Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory (Chagos Archipelago)","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo","Cook Islands","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Curacao","Cyprus","Czechia","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Faroe Islands","Falkland Islands (Malvinas)","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Holy See (Vatican City State)","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Democratic People's Republic of Korea","Republic of Korea","Kuwait","Kyrgyz Republic","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macao","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saint Barthelemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard & Jan Mayen Islands","Sweden","Switzerland","Syrian Arab Republic","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Virgin Islands, British","Virgin Islands, U.S.","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"],county:["Adams County","Calhoun County","Carroll County","Clark County","Clay County","Crawford County","Douglas County","Fayette County","Franklin County","Grant County","Greene County","Hamilton County","Hancock County","Henry County","Jackson County","Jefferson County","Johnson County","Lake County","Lawrence County","Lee County","Lincoln County","Logan County","Madison County","Marion County","Marshall County","Monroe County","Montgomery County","Morgan County","Perry County","Pike County","Polk County","Scott County","Union County","Warren County","Washington County","Wayne County","Avon","Bedfordshire","Berkshire","Borders","Buckinghamshire","Cambridgeshire","Central","Cheshire","Cleveland","Clwyd","Cornwall","County Antrim","County Armagh","County Down","County Fermanagh","County Londonderry","County Tyrone","Cumbria","Derbyshire","Devon","Dorset","Dumfries and Galloway","Durham","Dyfed","East Sussex","Essex","Fife","Gloucestershire","Grampian","Greater Manchester","Gwent","Gwynedd County","Hampshire","Herefordshire","Hertfordshire","Highlands and Islands","Humberside","Isle of Wight","Kent","Lancashire","Leicestershire","Lincolnshire","Lothian","Merseyside","Mid Glamorgan","Norfolk","North Yorkshire","Northamptonshire","Northumberland","Nottinghamshire","Oxfordshire","Powys","Rutland","Shropshire","Somerset","South Glamorgan","South Yorkshire","Staffordshire","Strathclyde","Suffolk","Surrey","Tayside","Tyne and Wear","Warwickshire","West Glamorgan","West Midlands","West Sussex","West Yorkshire","Wiltshire","Worcestershire"],direction:{cardinal:["North","East","South","West"],cardinal_abbr:["N","E","S","W"],ordinal:["Northeast","Northwest","Southeast","Southwest"],ordinal_abbr:["NE","NW","SE","SW"]},postcode:["#####","#####-####"],secondary_address:["Apt. ###","Suite ###"],state:["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],state_abbr:["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"],street_address:{normal:"{{location.buildingNumber}} {{location.street}}",full:"{{location.buildingNumber}} {{location.street}} {{location.secondaryAddress}}"},street_name:["10th Street","11th Street","12th Street","13th Street","14th Street","15th Street","16th Street","1st Avenue","1st Street","2nd Avenue","2nd Street","3rd Avenue","3rd Street","4th Avenue","4th Street","5th Avenue","5th Street","6th Avenue","6th Street","7th Avenue","7th Street","8th Avenue","8th Street","9th Street","A Street","Abbey Road","Adams Avenue","Adams Street","Airport Road","Albany Road","Albert Road","Albion Street","Alexandra Road","Alfred Street","Alma Street","Ash Close","Ash Grove","Ash Road","Ash Street","Aspen Close","Atlantic Avenue","Avenue Road","Back Lane","Baker Street","Balmoral Road","Barn Close","Barton Road","Bath Road","Bath Street","Bay Street","Beach Road","Bedford Road","Beech Close","Beech Drive","Beech Grove","Beech Road","Beechwood Avenue","Bell Lane","Belmont Road","Birch Avenue","Birch Close","Birch Grove","Birch Road","Blind Lane","Bluebell Close","Boundary Road","Bramble Close","Bramley Close","Bridge Road","Bridge Street","Broad Lane","Broad Street","Broadway","Broadway Avenue","Broadway Street","Brook Lane","Brook Road","Brook Street","Brookside","Buckingham Road","Cambridge Street","Canal Street","Castle Close","Castle Lane","Castle Road","Castle Street","Cavendish Road","Cedar Avenue","Cedar Close","Cedar Grove","Cedar Road","Cedar Street","Cemetery Road","Center Avenue","Center Road","Center Street","Central Avenue","Central Street","Chapel Close","Chapel Hill","Chapel Road","Chapel Street","Charles Street","Cherry Close","Cherry Street","Cherry Tree Close","Chester Road","Chestnut Close","Chestnut Drive","Chestnut Grove","Chestnut Street","Church Avenue","Church Close","Church Hill","Church Lane","Church Path","Church Road","Church Street","Church View","Church Walk","Claremont Road","Clarence Road","Clarence Street","Clarendon Road","Clark Street","Clay Lane","Cleveland Street","Cliff Road","Clifton Road","Clinton Street","College Avenue","College Street","Columbia Avenue","Commerce Street","Commercial Road","Commercial Street","Common Lane","Coronation Avenue","Coronation Road","County Line Road","County Road","Court Street","Cow Lane","Crescent Road","Cromwell Road","Cross Lane","Cross Street","Crown Street","Cumberland Street","Dale Street","Dark Lane","Davis Street","Depot Street","Derby Road","Derwent Close","Devonshire Road","Division Street","Douglas Road","Duke Street","E 10th Street","E 11th Street","E 12th Street","E 14th Street","E 1st Street","E 2nd Street","E 3rd Street","E 4th Avenue","E 4th Street","E 5th Street","E 6th Avenue","E 6th Street","E 7th Street","E 8th Street","E 9th Street","E Bridge Street","E Broad Street","E Broadway","E Broadway Street","E Cedar Street","E Center Street","E Central Avenue","E Church Street","E Elm Street","E Franklin Street","E Front Street","E Grand Avenue","E High Street","E Jackson Street","E Jefferson Street","E Main","E Main Street","E Maple Street","E Market Street","E North Street","E Oak Street","E Park Avenue","E Pine Street","E River Road","E South Street","E State Street","E Union Street","E Walnut Street","E Washington Avenue","E Washington Street","E Water Street","East Avenue","East Road","East Street","Edward Street","Elm Close","Elm Grove","Elm Road","Elm Street","Euclid Avenue","Fairfield Road","Farm Close","Ferry Road","Field Close","Field Lane","First Avenue","First Street","Fore Street","Forest Avenue","Forest Road","Fourth Avenue","Franklin Avenue","Franklin Road","Franklin Street","Front Street","Frontage Road","Garden Close","Garden Street","George Street","Gladstone Road","Glebe Close","Gloucester Road","Gordon Road","Gordon Street","Grand Avenue","Grange Avenue","Grange Close","Grange Road","Grant Street","Green Close","Green Lane","Green Street","Greenville Road","Greenway","Greenwood Road","Grove Lane","Grove Road","Grove Street","Hall Lane","Hall Street","Harrison Avenue","Harrison Street","Hawthorn Avenue","Hawthorn Close","Hazel Close","Hazel Grove","Heath Road","Heather Close","Henry Street","Heron Close","Hickory Street","High Road","High Street","Highfield Avenue","Highfield Close","Highfield Road","Highland Avenue","Hill Road","Hill Street","Hillside","Hillside Avenue","Hillside Close","Hillside Road","Holly Close","Honeysuckle Close","Howard Road","Howard Street","Jackson Avenue","Jackson Street","James Street","Jefferson Avenue","Jefferson Street","Johnson Street","Jubilee Close","Juniper Close","Kent Road","Kestrel Close","King Street","King's Road","Kingfisher Close","Kings Highway","Kingsway","Laburnum Grove","Lafayette Street","Lake Avenue","Lake Drive","Lake Road","Lake Street","Lancaster Road","Lansdowne Road","Larch Close","Laurel Close","Lawrence Street","Lee Street","Liberty Street","Lime Grove","Lincoln Avenue","Lincoln Highway","Lincoln Road","Lincoln Street","Locust Street","Lodge Close","Lodge Lane","London Road","Long Lane","Low Road","Madison Avenue","Madison Street","Main","Main Avenue","Main Road","Main Street","Main Street E","Main Street N","Main Street S","Main Street W","Manchester Road","Manor Close","Manor Drive","Manor Gardens","Manor Road","Manor Way","Maple Avenue","Maple Close","Maple Drive","Maple Road","Maple Street","Market Place","Market Square","Market Street","Marlborough Road","Marsh Lane","Martin Luther King Boulevard","Martin Luther King Drive","Martin Luther King Jr Boulevard","Mary Street","Mayfield Road","Meadow Close","Meadow Drive","Meadow Lane","Meadow View","Meadow Way","Memorial Drive","Middle Street","Mill Close","Mill Lane","Mill Road","Mill Street","Milton Road","Milton Street","Monroe Street","Moor Lane","Moss Lane","Mount Pleasant","Mount Street","Mulberry Street","N 1st Street","N 2nd Street","N 3rd Street","N 4th Street","N 5th Street","N 6th Street","N 7th Street","N 8th Street","N 9th Street","N Bridge Street","N Broad Street","N Broadway","N Broadway Street","N Cedar Street","N Center Street","N Central Avenue","N Chestnut Street","N Church Street","N College Street","N Court Street","N Division Street","N East Street","N Elm Street","N Franklin Street","N Front Street","N Harrison Street","N High Street","N Jackson Street","N Jefferson Street","N Lincoln Street","N Locust Street","N Main","N Main Avenue","N Main Street","N Maple Street","N Market Street","N Monroe Street","N Oak Street","N Park Street","N Pearl Street","N Pine Street","N Poplar Street","N Railroad Street","N State Street","N Union Street","N Walnut Street","N Washington Avenue","N Washington Street","N Water Street","Nelson Road","Nelson Street","New Lane","New Road","New Street","Newton Road","Nightingale Close","Norfolk Road","North Avenue","North Lane","North Road","North Street","Northfield Road","Oak Avenue","Oak Drive","Oak Lane","Oak Road","Oak Street","Oakfield Road","Oaklands","Old Lane","Old Military Road","Old Road","Old State Road","Orchard Drive","Orchard Lane","Orchard Road","Orchard Street","Oxford Road","Oxford Street","Park Avenue","Park Crescent","Park Drive","Park Lane","Park Place","Park Road","Park Street","Park View","Parkside","Pearl Street","Pennsylvania Avenue","Pine Close","Pine Grove","Pine Street","Pinfold Lane","Pleasant Street","Poplar Avenue","Poplar Close","Poplar Road","Poplar Street","Post Road","Pound Lane","Princes Street","Princess Street","Priory Close","Priory Road","Prospect Avenue","Prospect Place","Prospect Road","Prospect Street","Quarry Lane","Quarry Road","Queen's Road","Railroad Avenue","Railroad Street","Railway Street","Rectory Close","Rectory Lane","Richmond Close","Richmond Road","Ridge Road","River Road","River Street","Riverside","Riverside Avenue","Riverside Drive","Roman Road","Roman Way","Rowan Close","Russell Street","S 10th Street","S 14th Street","S 1st Avenue","S 1st Street","S 2nd Street","S 3rd Street","S 4th Street","S 5th Street","S 6th Street","S 7th Street","S 8th Street","S 9th Street","S Bridge Street","S Broad Street","S Broadway","S Broadway Street","S Center Street","S Central Avenue","S Chestnut Street","S Church Street","S College Street","S Division Street","S East Street","S Elm Street","S Franklin Street","S Front Street","S Grand Avenue","S High Street","S Jackson Street","S Jefferson Street","S Lincoln Street","S Main","S Main Avenue","S Main Street","S Maple Street","S Market Street","S Mill Street","S Monroe Street","S Oak Street","S Park Street","S Pine Street","S Railroad Street","S State Street","S Union Street","S Walnut Street","S Washington Avenue","S Washington Street","S Water Street","S West Street","Salisbury Road","Sandringham Road","Sandy Lane","School Close","School Lane","School Road","School Street","Second Avenue","Silver Street","Skyline Drive","Smith Street","Somerset Road","South Avenue","South Drive","South Road","South Street","South View","Spring Gardens","Spring Street","Springfield Close","Springfield Road","Spruce Street","St Andrew's Road","St Andrews Close","St George's Road","St John's Road","St Mary's Close","St Mary's Road","Stanley Road","Stanley Street","State Avenue","State Line Road","State Road","State Street","Station Road","Station Street","Stoney Lane","Sycamore Avenue","Sycamore Close","Sycamore Drive","Sycamore Street","Talbot Road","Tennyson Road","The Avenue","The Beeches","The Causeway","The Chase","The Coppice","The Copse","The Crescent","The Croft","The Dell","The Drive","The Fairway","The Glebe","The Grange","The Green","The Grove","The Hawthorns","The Lane","The Laurels","The Limes","The Maltings","The Meadows","The Mews","The Mount","The Oaks","The Orchard","The Oval","The Paddock","The Paddocks","The Poplars","The Ridgeway","The Ridings","The Rise","The Sidings","The Spinney","The Square","The Willows","The Woodlands","Third Avenue","Third Street","Tower Road","Trinity Road","Tudor Close","Union Avenue","Union Street","University Avenue","University Drive","Valley Road","Veterans Memorial Drive","Veterans Memorial Highway","Vicarage Close","Vicarage Lane","Vicarage Road","Victoria Place","Victoria Road","Victoria Street","Vine Street","W 10th Street","W 11th Street","W 12th Street","W 14th Street","W 1st Street","W 2nd Street","W 3rd Street","W 4th Avenue","W 4th Street","W 5th Street","W 6th Avenue","W 6th Street","W 7th Street","W 8th Street","W 9th Street","W Bridge Street","W Broad Street","W Broadway","W Broadway Avenue","W Broadway Street","W Center Street","W Central Avenue","W Chestnut Street","W Church Street","W Division Street","W Elm Street","W Franklin Street","W Front Street","W Grand Avenue","W High Street","W Jackson Street","W Jefferson Street","W Lake Street","W Main","W Main Street","W Maple Street","W Market Street","W Monroe Street","W North Street","W Oak Street","W Park Street","W Pine Street","W River Road","W South Street","W State Street","W Union Street","W Walnut Street","W Washington Avenue","W Washington Street","Walnut Close","Walnut Street","Warren Close","Warren Road","Washington Avenue","Washington Boulevard","Washington Road","Washington Street","Water Lane","Water Street","Waterloo Road","Waterside","Watery Lane","Waverley Road","Well Lane","Wellington Road","Wellington Street","West Avenue","West End","West Lane","West Road","West Street","West View","Western Avenue","Western Road","Westfield Road","Westgate","William Street","Willow Close","Willow Drive","Willow Grove","Willow Road","Willow Street","Windermere Road","Windmill Close","Windmill Lane","Windsor Avenue","Windsor Close","Windsor Drive","Wood Lane","Wood Street","Woodland Close","Woodland Road","Woodlands","Woodlands Avenue","Woodlands Close","Woodlands Road","Woodside","Woodside Road","Wren Close","Yew Tree Close","York Road","York Street"],street_pattern:["{{person.first_name.generic}} {{location.street_suffix}}","{{person.last_name.generic}} {{location.street_suffix}}","{{location.street_name}}"],street_suffix:["Alley","Avenue","Branch","Bridge","Brook","Brooks","Burg","Burgs","Bypass","Camp","Canyon","Cape","Causeway","Center","Centers","Circle","Circles","Cliff","Cliffs","Club","Common","Corner","Corners","Course","Court","Courts","Cove","Coves","Creek","Crescent","Crest","Crossing","Crossroad","Curve","Dale","Dam","Divide","Drive","Drives","Estate","Estates","Expressway","Extension","Extensions","Fall","Falls","Ferry","Field","Fields","Flat","Flats","Ford","Fords","Forest","Forge","Forges","Fork","Forks","Fort","Freeway","Garden","Gardens","Gateway","Glen","Glens","Green","Greens","Grove","Groves","Harbor","Harbors","Haven","Heights","Highway","Hill","Hills","Hollow","Inlet","Island","Islands","Isle","Junction","Junctions","Key","Keys","Knoll","Knolls","Lake","Lakes","Land","Landing","Lane","Light","Lights","Loaf","Lock","Locks","Lodge","Loop","Mall","Manor","Manors","Meadow","Meadows","Mews","Mill","Mills","Mission","Motorway","Mount","Mountain","Mountains","Neck","Orchard","Oval","Overpass","Park","Parks","Parkway","Parkways","Pass","Passage","Path","Pike","Pine","Pines","Place","Plain","Plains","Plaza","Point","Points","Port","Ports","Prairie","Radial","Ramp","Ranch","Rapid","Rapids","Rest","Ridge","Ridges","River","Road","Roads","Route","Row","Rue","Run","Shoal","Shoals","Shore","Shores","Skyway","Spring","Springs","Spur","Spurs","Square","Squares","Station","Stravenue","Stream","Street","Streets","Summit","Terrace","Throughway","Trace","Track","Trafficway","Trail","Tunnel","Turnpike","Underpass","Union","Unions","Valley","Valleys","Via","Viaduct","View","Views","Village","Villages","Ville","Vista","Walk","Walks","Wall","Way","Ways","Well","Wells"]},lorem:{word:["a","ab","abbas","abduco","abeo","abscido","absconditus","absens","absorbeo","absque","abstergo","absum","abundans","abutor","accedo","accendo","acceptus","accommodo","accusamus","accusantium","accusator","acer","acerbitas","acervus","acidus","acies","acquiro","acsi","ad","adamo","adaugeo","addo","adduco","ademptio","adeo","adeptio","adfectus","adfero","adficio","adflicto","adhaero","adhuc","adicio","adimpleo","adinventitias","adipisci","adipiscor","adiuvo","administratio","admiratio","admitto","admoneo","admoveo","adnuo","adopto","adsidue","adstringo","adsuesco","adsum","adulatio","adulescens","aduro","advenio","adversus","advoco","aedificium","aeger","aegre","aegrotatio","aegrus","aeneus","aequitas","aequus","aer","aestas","aestivus","aestus","aetas","aeternus","ager","aggero","aggredior","agnitio","agnosco","ago","ait","aiunt","alias","alienus","alii","alioqui","aliqua","aliquam","aliquid","alius","allatus","alo","alter","altus","alveus","amaritudo","ambitus","ambulo","amet","amicitia","amiculum","amissio","amita","amitto","amo","amor","amoveo","amplexus","amplitudo","amplus","ancilla","angelus","angulus","angustus","animadverto","animi","animus","annus","anser","ante","antea","antepono","antiquus","aperiam","aperio","aperte","apostolus","apparatus","appello","appono","appositus","approbo","apto","aptus","apud","aqua","ara","aranea","arbitro","arbor","arbustum","arca","arceo","arcesso","architecto","arcus","argentum","argumentum","arguo","arma","armarium","aro","ars","articulus","artificiose","arto","arx","ascisco","ascit","asper","asperiores","aspernatur","aspicio","asporto","assentator","assumenda","astrum","at","atavus","ater","atque","atqui","atrocitas","atrox","attero","attollo","attonbitus","auctor","auctus","audacia","audax","audentia","audeo","audio","auditor","aufero","aureus","aurum","aut","autem","autus","auxilium","avaritia","avarus","aveho","averto","baiulus","balbus","barba","bardus","basium","beatae","beatus","bellicus","bellum","bene","beneficium","benevolentia","benigne","bestia","bibo","bis","blandior","blanditiis","bonus","bos","brevis","cado","caecus","caelestis","caelum","calamitas","calcar","calco","calculus","callide","campana","candidus","canis","canonicus","canto","capillus","capio","capitulus","capto","caput","carbo","carcer","careo","caries","cariosus","caritas","carmen","carpo","carus","casso","caste","casus","catena","caterva","cattus","cauda","causa","caute","caveo","cavus","cedo","celebrer","celer","celo","cena","cenaculum","ceno","censura","centum","cerno","cernuus","certe","certus","cervus","cetera","charisma","chirographum","cibo","cibus","cicuta","cilicium","cimentarius","ciminatio","cinis","circumvenio","cito","civis","civitas","clam","clamo","claro","clarus","claudeo","claustrum","clementia","clibanus","coadunatio","coaegresco","coepi","coerceo","cogito","cognatus","cognomen","cogo","cohaero","cohibeo","cohors","colligo","collum","colo","color","coma","combibo","comburo","comedo","comes","cometes","comis","comitatus","commemoro","comminor","commodi","commodo","communis","comparo","compello","complectus","compono","comprehendo","comptus","conatus","concedo","concido","conculco","condico","conduco","confero","confido","conforto","confugo","congregatio","conicio","coniecto","conitor","coniuratio","conor","conqueror","conscendo","consectetur","consequatur","consequuntur","conservo","considero","conspergo","constans","consuasor","contabesco","contego","contigo","contra","conturbo","conventus","convoco","copia","copiose","cornu","corona","corporis","corpus","correptius","corrigo","corroboro","corrumpo","corrupti","coruscus","cotidie","crapula","cras","crastinus","creator","creber","crebro","credo","creo","creptio","crepusculum","cresco","creta","cribro","crinis","cruciamentum","crudelis","cruentus","crur","crustulum","crux","cubicularis","cubitum","cubo","cui","cuius","culpa","culpo","cultellus","cultura","cum","cumque","cunabula","cunae","cunctatio","cupiditas","cupiditate","cupio","cuppedia","cupressus","cur","cura","curatio","curia","curiositas","curis","curo","curriculum","currus","cursim","curso","cursus","curto","curtus","curvo","custodia","damnatio","damno","dapifer","debeo","debilito","debitis","decens","decerno","decet","decimus","decipio","decor","decretum","decumbo","dedecor","dedico","deduco","defaeco","defendo","defero","defessus","defetiscor","deficio","defleo","defluo","defungo","degenero","degero","degusto","deinde","delectatio","delectus","delego","deleniti","deleo","delibero","delicate","delinquo","deludo","demens","demergo","demitto","demo","demonstro","demoror","demulceo","demum","denego","denique","dens","denuncio","denuo","deorsum","depereo","depono","depopulo","deporto","depraedor","deprecator","deprimo","depromo","depulso","deputo","derelinquo","derideo","deripio","deserunt","desidero","desino","desipio","desolo","desparatus","despecto","dicta","dignissimos","distinctio","dolor","dolore","dolorem","doloremque","dolores","doloribus","dolorum","ducimus","ea","eaque","earum","eius","eligendi","enim","eos","error","esse","est","et","eum","eveniet","ex","excepturi","exercitationem","expedita","explicabo","facere","facilis","fuga","fugiat","fugit","harum","hic","id","illo","illum","impedit","in","incidunt","infit","inflammatio","inventore","ipsa","ipsam","ipsum","iste","itaque","iure","iusto","labore","laboriosam","laborum","laudantium","libero","magnam","magni","maiores","maxime","minima","minus","modi","molestiae","molestias","mollitia","nam","natus","necessitatibus","nemo","neque","nesciunt","nihil","nisi","nobis","non","nostrum","nulla","numquam","occaecati","ocer","odio","odit","officia","officiis","omnis","optio","paens","pariatur","patior","patria","patrocinor","patruus","pauci","paulatim","pauper","pax","peccatus","pecco","pecto","pectus","pecus","peior","pel","perferendis","perspiciatis","placeat","porro","possimus","praesentium","provident","quae","quaerat","quam","quas","quasi","qui","quia","quibusdam","quidem","quis","quisquam","quo","quod","quos","ratione","recusandae","reiciendis","rem","repellat","repellendus","reprehenderit","repudiandae","rerum","saepe","sapiente","sed","sequi","similique","sint","sit","socius","sodalitas","sol","soleo","solio","solitudo","solium","sollers","sollicito","solum","solus","soluta","solutio","solvo","somniculosus","somnus","sonitus","sono","sophismata","sopor","sordeo","sortitus","spargo","speciosus","spectaculum","speculum","sperno","spero","spes","spiculum","spiritus","spoliatio","sponte","stabilis","statim","statua","stella","stillicidium","stipes","stips","sto","strenuus","strues","studio","stultus","suadeo","suasoria","sub","subito","subiungo","sublime","subnecto","subseco","substantia","subvenio","succedo","succurro","sufficio","suffoco","suffragium","suggero","sui","sulum","sum","summa","summisse","summopere","sumo","sumptus","sunt","supellex","super","suppellex","supplanto","suppono","supra","surculus","surgo","sursum","suscipio","suscipit","suspendo","sustineo","suus","synagoga","tabella","tabernus","tabesco","tabgo","tabula","taceo","tactus","taedium","talio","talis","talus","tam","tamdiu","tamen","tametsi","tamisium","tamquam","tandem","tantillus","tantum","tardus","tego","temeritas","temperantia","templum","tempora","tempore","temporibus","temptatio","tempus","tenax","tendo","teneo","tener","tenetur","tenuis","tenus","tepesco","tepidus","ter","terebro","teres","terga","tergeo","tergiversatio","tergo","tergum","termes","terminatio","tero","terra","terreo","territo","terror","tersus","tertius","testimonium","texo","textilis","textor","textus","thalassinus","theatrum","theca","thema","theologus","thermae","thesaurus","thesis","thorax","thymbra","thymum","tibi","timidus","timor","titulus","tolero","tollo","tondeo","tonsor","torqueo","torrens","tot","totam","totidem","toties","totus","tracto","trado","traho","trans","tredecim","tremo","trepide","tres","tribuo","tricesimus","triduana","tripudio","tristis","triumphus","trucido","truculenter","tubineus","tui","tum","tumultus","tunc","turba","turbo","turpis","tutamen","tutis","tyrannus","uberrime","ubi","ulciscor","ullam","ullus","ulterius","ultio","ultra","umbra","umerus","umquam","una","unde","undique","universe","unus","urbanus","urbs","uredo","usitas","usque","ustilo","ustulo","usus","ut","uter","uterque","utilis","utique","utor","utpote","utrimque","utroque","utrum","uxor","vaco","vacuus","vado","vae","valde","valens","valeo","valetudo","validus","vallum","vapulus","varietas","varius","vehemens","vel","velit","velociter","velum","velut","venia","veniam","venio","ventito","ventosus","ventus","venustas","ver","verbera","verbum","vere","verecundia","vereor","vergo","veritas","veritatis","vero","versus","verto","verumtamen","verus","vesco","vesica","vesper","vespillo","vester","vestigium","vestrum","vetus","via","vicinus","vicissitudo","victoria","victus","videlicet","video","viduo","vigilo","vigor","vilicus","vilis","vilitas","villa","vinco","vinculum","vindico","vinitor","vinum","vir","virga","virgo","viridis","viriliter","virtus","vis","viscus","vita","vitae","vitiosus","vitium","vito","vivo","vix","vobis","vociferor","voco","volaticus","volo","volubilis","voluntarius","volup","voluptas","voluptate","voluptatem","voluptates","voluptatibus","voluptatum","volutabrum","volva","vomer","vomica","vomito","vorago","vorax","voro","vos","votum","voveo","vox","vulariter","vulgaris","vulgivagus","vulgo","vulgus","vulnero","vulnus","vulpes","vulticulus","xiphias"]},metadata:{title:"English",code:"en",language:"en",endonym:"English",dir:"ltr",script:"Latn"},music:{album:['"Awaken, My Love!"',"(What's The Story) Morning Glory?","- Tragedy +","13 Reasons Why (Season 3)","21st Century Breakdown","30 De Febrero","432 Hz Deep Healing","5-Star","528 Hz Meditation Music","54+1","8 Mile","808s & Heartbreak","9 To 5 And Odd Jobs","A Beautiful Lie","A Day At The Races","A Day Without Rain","A Fever You Can't Sweat Out","A Gangsta's Pain","A Gift & A Curse","A Hard Day's Night","A Head Full Of Dreams","A Kind Of Magic","A Million Ways To Murder","A Moment Apart","A Song For Every Moon","A Thousand Suns","A Winter Romance","ABBA","AI YoungBoy","AJ Tracey","Act One","After Hours","Agent Provocateur","All About You","All I Know So Far: Setlist","All Or Nothing","All Out","All Over The Place","All Stand Together","All The Lost Souls","All The Things I Never Said","All Things Must Pass","Alleen","Alright, Still","Alta Suciedad","America","American Heartbreak","American Teen","And Justice For None","Animal Songs","Another Friday Night","Anything Goes","Ao Vivo Em São Paulo","Ao Vivo No Ibirapuera","Apricot Princess","Aqui E Agora (Ao Vivo)","Arcane League Of Legends","Ardipithecus","Aretha Now","Around The Fur","Arrival","Artist 2.0","As She Pleases","Ascend","Ashlyn","Astro Lounge","At Night, Alone.","At. Long. Last. ASAP","Atlas","Audioslave","Aura","Austin","Awake","Away From The Sun","Ayayay!","Baby On Baby","Back For Everything","Back From The Edge","Back In Black","Back To Black","Back To The Game","Bad","Bahía Ducati","Baila","Barbie The Album","Battleground","Bayou Country","Bcos U Will Never B Free","Be","Be Here Now","Beautiful Mind","Beautiful Thugger Girls","Beautiful Trauma","Beauty And The Beast","Beggars Banquet","Being Funny In A Foreign Language","Berlin Lebt","Berry Is On Top","Best White Noise For Baby Sleep - Loopable With No Fade","Big Baby DRAM","Bigger, Better, Faster, More!","Billy Talent II","Black Star Elephant","Blackout","Blank Face LP","Bleach","Blizzard Of Ozz","Blonde","Blood Sugar Sex Magik","Bloom","Blowin' Your Mind!","Blu Celeste","Blue","Blue Banisters","Blue Hawaii","Blue Neighbourhood","Bluebird Days","Bobby Tarantino","Bobby Tarantino II","Bon Iver","Born Pink","Born To Run","Brand New Eyes","Break The Cycle","Breakfast In America","Breakthrough","Brett Young","Bridge Over Troubled Water","Bright: The Album","Brol","Buds","Buena Vista Social Club","Built On Glass","Bury Me At Makeout Creek","Busyhead","By The Way","CB6","CNCO","California Sunrise","Californication","Call Me Irresponsible","Calm","Camino Palmero","Camp","Caracal","Carbon Fiber Hits","Carnival","Carry On","Cartel De Santa","Certified Lover Boy","Chaaama","Chama Meu Nome","Chapter 1: Snake Oil","Chapter 2: Swamp Savant","Chapter One","Charlie's Angels","Cherry Bomb","Chief","Chocolate Factory","Chosen","Chris Brown","Christina Aguilera","Chromatica","Church","City Of Evil","Clandestino","Clouds","Coco","Collision Course","Colour Vision","Combat Rock","Come Around Sundown","Come Away With Me","Come Home The Kids Miss You","Come What(ever) May","Commando","Common Sense","Communion","Conditions","Confident","Confrontation","Control The Streets, Volume 2","Corinne Bailey Rae","Costello Music","Cottonwood","Covers, Vol. 2","Cozy Tapes Vol. 2: Too Cozy","Crash Talk","Crazy Love","Crazysexycool","Crowded House","Cruisin' With Junior H","Culture","Current Mood","DS2","Dale","Danger Days: The True Lives Of The Fabulous Killjoys","Dangerous Woman","Dangerous: The Double Album","Dark Horse","Day69","Daydream","De Fiesta","De Viaje","DeAnn","Death Race For Love","Delirium","Delta","Demidevil","Depression Cherry","Descendants","Desgenerados Mixtape","Destin","Destiny Fulfilled","Desvelado","Detroit 2","Dex Meets Dexter","Dharma","Die A Legend","Different World","Dig Your Roots","Digital Druglord","Dirt","Disclaimer I / II","Discovery","Disraeli Gears","Disumano","Dizzy Up The Girl","Don't Play That Song","Donda","Donde Quiero Estar","Doo-Wops & Hooligans","Down The Way","Dr. Feelgood","Dream Your Life Away","Dreaming Out Loud","Drip Harder","Drive","Drones","Dropped Outta College","Drowning","Dua Warna Cinta","Dulce Beat","Dusty In Memphis","Dutty Rock","Dying To Live","ENR","East Atlanta Love Letter","Editorial","Edna","El Abayarde","El Amor En Los Tiempos Del Perreo","El Camino","El Comienzo","El Dorado","El Karma","El Mal Querer","El Malo","El Trabajo Es La Suerte","El Viaje De Copperpot","Electric Ladyland","Emotion","En Tus Planes","Endless Summer Vacation","Enter The Wu-Tang (36 Chambers)","Equals (=)","Estrella","Euphoria","Europop","Evermore","Every Kingdom","Everyday Life","Evolve","Expectations","Face Yourself","Facelift","Fallin'","Fancy You","Fantasía","Favourite Worst Nightmare","Fear Of The Dark","Fearless","Feel Something","Feels Like Home","Femme Fatale","Ferxxocalipsis","Fifty Shades Darker","Fifty Shades Freed","Fifty Shades Of Grey","Final (Vol.1)","Finding Beauty In Negative Spaces","Fine Line","First Impressions Of Earth","First Steps","Five Seconds Flat","Folklore","For Emma, Forever Ago","Forajido EP 1","Forever","Forever Young","Formula Of Love: O+T=<3","Free 6lack","Freudian","Frozen II","Full Moon Fever","Funhouse","Funk Wav Bounces Vol.1","Future History","FutureSex/LoveSounds","Fuzzybrain","Gallery","Gangsta's Paradise","Gemini","Gemini Rights","Generationwhy","Get A Grip","Get Up","Gettin' Old","Girl","Gladiator","Glisten","Globalization","Gloria","Glory Days","God's Project","Gold Skies","Golden","Good Evening","Good Thing","Goodbye Yellow Brick Road","Gossip Columns","Got Your Six","Graceland","Graduation","Grand Champ","Grandson, Vol. 1","Green River","Guerra","Ha*Ash Primera Fila - Hecho Realidad","Haiz","Hamilton","Happy Endings","Harry Styles","Hasta La Raíz","Hatful Of Hollow","Head In The Clouds","Heard It In A Past Life","Heart Shaped World","Heartbeat City","Heartbreak On A Full Moon / Cuffing Season - 12 Days Of Christmas","Heaven Or Hell","Heaven knows","Hellbilly Deluxe","Hellboy","Help!","Her Loss","Here Comes The Cowboy","Hey World","High School Musical","High Tide In The Snake's Nest","Historias De Un Capricornio","Hndrxx","Hombres G (Devuélveme A Mi Chica)","Homerun","Homework","Hot Fuss","Hot Pink","Hot Sauce / Hello Future","Hot Space","Hotel Diablo","Houses Of The Holy","How Big, How Blue, How Beautiful","How I'm Feeling","How To Be Human","How To Save A Life","How To: Friend, Love, Freefall","Hozier","Human","Huncho Jack, Jack Huncho","Hunter Hayes","Hysteria","I Am...Sasha Fierce","I Can't Handle Change","I Met You When I Was 18. (The Playlist)","I Never Liked You","I Never Loved A Man The Way I Love You","I See You","I Think You Think Too Much Of Me","I Used To Know Her","I Used To Think I Could Fly","I'm Comin' Over","Ich & Keine Maske","If You Can Believe Your Eyes & Ears","Il Ballo Della Vita","Ill Communication","Imagination & The Misfit Kid","Imagine","Immortalized","In A Perfect World...","In Colour","In My Own Words","In Rainbows","In Return","In The Lonely Hour","Infest","Innuendo","Inter Shibuya - La Mafia","Interstellar","Is This It","It Was Written","It's Not Me, It's You","It's Only Me","Ivory","JackBoys","Jamie","Jazz","Jibrail & Iblis","Jordi","Jordin Sparks","Jose","Just As I Am","Just Cause Y'all Waited 2","Just Like You","Justified","K-12 / After School","K.I.D.S.","K.O.","K.O.B. Live","KG0516","KOD","Kane Brown","Kid A","Kid Krow","Kids See Ghosts","Kids in Love","Kinks (You Really Got Me)","Know-It-All","Konvicted","Kring","LANY","LM5","La Criatura","La Flaca","La Melodia De La Calle","La Revolucion","Lady Lady","Lady Wood","Langit Mong Bughaw","Las Que No Iban A Salir","Last Day Of Summer","Last Year Was Complicated","Layers","Layover","Lazarus","Led Zeppelin","Left Of The Middle","Leftoverture","Legends Never Die","Let's Skip To The Wedding","Let's Talk About Love","Licensed To Ill","Life In Cartoon Motion","Life Thru A Lens","Lifelines","Like..?","Lil Big Pac","Lil Boat","Lil Boat 2","Lil Boat 3.5","Lil Kiwi","Lil Pump","Limon Y Sal","Listen Without Prejudice","Little Voice","Live On Red Barn Radio I & II","Lo Que Andábamos Buscando","Lofi Fruits Music 2021","London Calling","Los Campeones Del Pueblo","Los Extraterrestres","Los Favoritos 2","Lost","Lost In Love","Loud","Love Sick","Love Story","Love Stuff","Love Yourself: Tear","Lover","Luca Brasi 2: Gangsta Grillz","Lust For Life","Luv Is Rage","M!ssundaztood","Ma Fleur","Made In Lagos","Mafia Bidness","Magazines Or Novels","Mainstream Sellout","Majestic","Make It Big","Make Yourself","Making Mirrors","Mamma Mia! Here We Go Again","Man Of The Woods","Manic","Me And My Gang","Meduza","Meet The Orphans","Meet The Woo","Melim","Mellon Collie And The Infinite Sadness","Melly vs. Melvin","Memories...Do Not Open","Menagerie","Midnights","Minecraft - Volume Alpha","Minutes To Midnight","Mix Pa Llorar En Tu Cuarto","Modo Avión","Monkey Business","Mono.","Montana","Montevallo","Moosetape","Morning View","Motivan2","Moving Pictures","Mr. Davis","Mr. Misunderstood","Mulan","Mura Masa","Music From The Edge Of Heaven","Music Of The Sun","My House","My Kinda Party","My Krazy Life","My Liver Will Handle What My Heart Can't","My Moment","My Own Lane","My Turn","My Worlds","Na Praia (Ao Vivo)","Nakamura","Nation Of Two","Navegando","Need You Now","Neon Future III","Neotheater","Never Trust A Happy Song","New English","News Of The World","Nicole","Night & Day","Nimmerland","Nimrod","Nine Track Mind","No Angel","No Me Pidas Perdón","No More Drama","No Protection","No Strings Attached","No Time To Die","Nobody Is Listening","Non Stop Erotic Cabaret","Non-Fiction","Northsbest","Nostalgia","Nostalgia, Ultra","Notes On A Conditional Form","Now Or Never","O Embaixador (Ao Vivo)","O My Heart","OK Computer","Ocean","Ocean Avenue","Ocean Eyes","Odisea","Oh My My","Oh, What A Life","On The 6","One In A Million","One More Light","One Of These Nights","Open Up And Say...Ahh!","Ordinary Man","Origins","Out Of The Blue","Over It","OzuTochi","PTSD","Pa Las Baby's Y Belikeada","Pa Que Hablen","Pa' Luego Es Tarde","Pa' Otro La 'O","Pablo Honey","Pain Is Love","Pain Is Temporary","Painting Pictures","Palmen Aus Plastik 2","Para Mi Ex","Para Siempre","Partners In Crime","Pawn Shop","Pegasus / Neon Shark VS Pegasus","Pet Sounds","Piece By Piece","Pier Pressure","Pineapple Sunrise","Piseiro 2020 Ao Vivo","Planet Pit","Plans","Play Deep","Playa Saturno","Por Primera Vez","Por Vida","Positions","Post Human: Survival Horror","Poster Girl","Prazer, Eu Sou Ferrugem (Ao Vivo)","Pretty Girls Like Trap Music","Pretty. Odd.","Prince Royce","Prisma","Prometo","Providence","Puberty 2","Punisher","Purgatory","Purple Rain","Que Bendición","Queen Of The Clouds","Quiero Volver","R&G (Rhythm & Gangsta): The Masterpiece","Raise!","Ransom 2","Rapunzel","Rare","Re Mida","Ready To Die","Realer","Rebelde","Reclassified","Recovery","Recuerden Mi Estilo","Reggatta De Blanc","Regulate… G Funk Era","Reik","Reise, Reise","Relapse","Relaxing Piano Lullabies And Natural Sleep Aid For Baby Sleep Music","Religiously. The Album.","Replay","Results May Vary","Revenge","Revolve","Revolver","Ricky Martin","Rien 100 Rien","Ripcord","Rise And Fall, Rage And Grace","Rise Of An Empire","Robin Hood: Prince Of Thieves","Rock N Roll Jesus","Romance","Romances","Ronan","Royal Blood","Rumours","Sad Boyz 4 Life II","San Lucas","Santana World","Saturation III","Sauce Boyz","Savage Mode","Saxobeats","Scarlet","Schwarzes Herz","Seal The Deal & Let's Boogie","Section.80","Segundo Romance","Sehnsucht","Shake The Snow Globe","Shang-Chi And The Legend Of The Ten Rings: The Album","Sheer Heart Attack","Shiesty Season","Shock Value","Shoot For The Stars, Aim For The Moon","Signed Sealed And Delivered","Signos","Silent Alarm","Simplemente Gracias","Sin Bandera","Sing Me A Lullaby, My Sweet Temptation","Sinner","Sirio","Sit Still, Look Pretty","Skin","Slowhand","Smash","Smithereens","Snow Cougar","Social Cues","Some Girls","Song Hits From Holiday Inn","Songs For Dads","Songs For The Deaf","Songs For You, Truths For Me","Songs In The Key Of Life","Souled Out","Sounds Of Silence","Soy Como Quiero Ser","Speak Now","Speak Your Mind","Speakerboxxx/The Love Below","Spider-Man: Into The Spider-Verse","Split Decision","Square Up","SremmLife","Starboy","Stay +","Stay Dangerous","Staying At Tamara's","Steppenwolf","Stick Season","Still Bill","Straight Outta Compton","Strange Trails","Stronger","Suavemente","Sublime","Suck It and See","Sucker","Sueños","Sugar","Summer Forever","Summer,","Sunset Season","Sunshine On Leith","Surfer Rosa","Sweet Talker","SweetSexySavage","System Of A Down","TA13OO","Talk That Talk","Talking Heads: 77","Tangled Up","Tango In The Night","Taxi Driver","Taylor Swift","Tell Me It's Real","Ten","Ten Summoner's Tales","Terra Sem Cep (Ao Vivo)","Terral","Testing","Tha Carter III","Thank Me Later","That's Christmas To Me","The Academy","The Adventures Of Bobby Ray","The Album","The Andy Williams Christmas Album","The Aviary","The Balcony","The Battle Of Los Angeles","The Beatles (White Album)","The Beginning","The Better Life","The Big Day","The Book","The Breakfast Club","The Cars","The Colour And The Shape","The Death Of Peace Of Mind","The Diary Of Alicia Keys","The Documentary","The Emancipation Of Mimi","The Eminem Show","The End Of Everything","The Final Countdown","The Forever Story","The Foundation","The Goat","The Golden Child","The Good Parts","The Greatest Showman: Reimagined","The Green Trip","The Hardest Love","The Head And The Heart","The Human Condition","The Infamous","The Lady Killer","The Last Don II","The Lion King","The Lockdown Sessions","The London Sessions","The Lord Of The Rings: The Fellowship Of The Ring","The Lost Boy","The Magic Of Christmas / The Christmas Song","The Marshall Mathers LP","The Martin Garrix Collection","The Melodic Blue","The Mockingbird & The Crow","The Pains Of Growing","The Papercut Chronicles","The Perfect Luv Tape","The Pinkprint","The Predator","The Queen Is Dead","The ReVe Festival: Finale","The Rise And Fall Of Ziggy Stardust And The Spiders From Mars","The Rising Tied","The River","The Stone Roses","The Story Of Us","The Stranger","The Sufferer & The Witness","The Sun's Tirade","The Temptations Sing Smokey","The Time Of Our Lives","The Way It Is","The Wonderful World Of Sam Cooke","The Writing's On The Wall","The Young And The Hopeless","Therapy","Therapy Session","There Is More (Live)","There Is Nothing Left To Lose","These Things Happen","Third Eye Blind","This Is Me...Then","This Unruly Mess I've Made","Threat to Survival","Thrill Of The Chase","Time","Timelezz","To Let A Good Thing Die","To Pimp A Butterfly","Toast To Our Differences","Todos Os Cantos, Vol. 1 (Ao Vivo)","Too Hard","Torches X","Total Xanarchy","Toto IV","Toulouse Street","Tourist History","Toxicity","Tragic Kingdom","Tranquility Base Hotel & Casino","Traumazine","Traveler","Tres Hombres","Trip At Knight","Tron: Legacy","True Blue","True Colors","Trustfall","Tu Veneno Mortal","Tudo Em Paz","Ubuntu","Ugly Is Beautiful","Ultra 2021","Una Mattina","Unbroken","Uncovered","Under Pressure","Unsponsored Content","Unstoppable","Unwritten","Urban Flora","Urban Hymns","Use Your Illusion I","Veneer","Versions Of Me","Vibes","Vice Versa","Vices & Virtues","Victory","Vida","Viejo Marihuano","Visualízate","Walk Away","Walk Me Home...","Watch The Throne","Wave","We Broke The Rules","We Love You Tecca","We Love You Tecca 2","Weezer (Green Album)","Welcome To The Madhouse","Westlife","What A Time To Be Alive","What Do You Think About The Car?","What Is Love?","What Makes You Country","What Separates Me From You","What You See Is What You Get / What You See Ain't Always What You Get","When It's Dark Out","When We All Fall Asleep, Where Do We Go?","Where The Light Is","While The World Was Burning","White Pony","Whitney","Who Really Cares","Who You Are","Who's Next","Wide Open","Wilder Mind","Wildfire","Willy And The Poor Boys","Wings / You Never Walk Alone","Wish","Wish You Were Here","Without Warning","Wonder","X&Y","XOXO","Y Que Quede Claro","YBN: The Mixtape","Yo Creo","You Will Regret","Youngblood","Younger Now","Youth"],artist:["$NOT","$uicideboy$","(G)I-DLE","*NSYNC","2 Chainz","21 Savage","6LACK","? & The Mysterians","A Boogie Wit da Hoodie","A Taste of Honey","A Tribe Called Quest","A-Ha","ABBA","AC/DC","AJ Tracey","ATEEZ","Ace of Base","Adele","Ado","Aerosmith","Agust D","Aitana","Al Dexter & his Troopers","Al Green","Al Jolson","Al Martino","Alan Jackson","Alannah Myles","Alec Benjamin","Alejandro Sanz","Alesso","Alfredo Olivas","Ali Gatie","Alice In Chains","Alina Baraz","All Time Low","All-4-One","All-American Rejects","Alok","America","American Quartet","Amii Stewart","Amitabh Bhattacharya","Ana Castela","Anderson .Paak","Andy Grammer","Angus & Julia Stone","Anirudh Ravichander","Anita Ward","Anitta","Anton Karas","Anuel AA","Arcade Fire","Archie Bell & The Drells","Archies","Aretha Franklin","Arizona Zervas","Armin van Buuren","Arthur Conley","Artie Shaw","Asake","Asees Kaur","Association","Atif Aslam","Audioslave","Aventura","Avril Lavigne","Aya Nakamura","B J Thomas","B.o.B","BLACKPINK","BONES","BROCKHAMPTON","BTS","Baby Keem","Bachman-Turner Overdrive","Backstreet Boys","Bad Bunny","Badshah","Bailey Zimmerman","Banda El Recodo","Barbra Streisand","Barry White","Bazzi","Bebe Rexha","Becky G","Becky Hill","Bee Gees","Ben Bernie","Ben Howard","Ben Selvin","Berlin","Bessie Smith","Bethel Music","Bette Midler","Beyonce","Bibi Blocksberg","Bibi und Tina","BigXthaPlug","Bill Doggett","Bill Haley & his Comets","Bill Withers","Billy Davis Jr","Billy Joel","Billy Paul","Billy Preston","Billy Swan","Birdy","Bizarrap","Blake Shelton","Blur","Bob Marley & The Wailers","Bob Seger","Bobby Darin","Bobby Lewis","Bobby McFerrin","Bobby Vinton","Boney M.","Bonez MC","Bonnie Tyler","Booba","Boston","BoyWithUke","Boyce Avenue","Bradley Cooper","Bread","Brent Faiyaz","Brett Young","Bring Me The Horizon","Britney Spears","Brooks & Dunn","Bruce Channel","Bruno & Marrone","Bryan Adams","Bryce Vine","Buddy Holly","Burna Boy","C. Tangana","CKay","CRO","Camilo","Capital Bra","Captain & Tennille","Cardi B","Carin Leon","Carlos Vives","Carly Simon","Carpenters","Cavetown","Celine Dion","Central Cee","Chaka Khan","Champs","Charlie Rich","Chayanne","Cheat Codes","Cher","Chic","Chicago","Chris Brown","Chris Isaak","Chris Young","Christina Aguilera","Christina Perri","Christopher Cross","Chuck Berry","Ciara","Cigarettes After Sex","Cliff Edwards (Ukelele Ike)","Cody Johnson","Colbie Caillat","Colby O'Donis","Cole Swindell","Coleman Hawkins","Contours","Coolio","Count Basie","Cris Mj","Culture Club","Cyndi Lauper","D-Block Europe","DAY6","DJ Khaled","DJ Luian","DJ Nelson","DMX","DNCE","DaVido","Dadju","Daft Punk","Dan + Shay","Daniel Powter","Danny Ocean","Darius Rucker","Dave","David Bowie","David Guetta","Daya","Dean Martin","Deee-Lite","Deep Purple","Deftones","Demi Lovato","Dennis Lloyd","Denzel Curry","Dermot Kennedy","Desiigner","Devo","Dewa 19","Dexys Midnight Runners","Diddy","Dido","Die drei !!!","Diego & Victor Hugo","Diljit Dosanjh","Dimitri Vegas & Like Mike","Dinah Shore","Dionne Warwick","Dire Straits","Disclosure","Dixie Cups","Doja Cat","Dolly Parton","Don Diablo","Don Henley","Don McLean","Don Omar","Donna Summer","Donovan","Dr. Dre","Drake","Dreamville","Dua Lipa","EMF","ENHYPEN","Earth, Wind & Fire","Ed Sheeran","Eddie Cantor","Eddie Cochran","Eddy Howard","Edgar Winter Group","Edwin Hawkins Singers","Edwin Starr","El Alfa","Eladio Carrion","Electric Light Orchestra","Elevation Worship","Ella Henderson","Ellie Goulding","Elton John","Elvis Presley","Empire of the Sun","En Vogue","Enrique Iglesias","Eslabon Armado","Ethel Waters","Etta James","Evanescence","Exile","Extreme","Faith Hill","Fall Out Boy","Fanny Brice","Farruko","Fats Domino","Fats Waller","Feid","Felix Jaehn","Fergie","Fetty Wap","Fiersa Besari","Fifth Harmony","Fine Young Cannibals","Five Finger Death Punch","Fleetwood Mac","Flo-Rida","Florence + The Machine","Flume","Foo Fighters","Foreigner","Foster The People","Four Aces","Frank Ocean","Frank Sinatra","Frankie Avalon","Frankie Valli","Fred Astaire","Freda Payne","Freddie Dredd","Freddy Fender","French Montana","Fuerza Regida","Fujii Kaze","Future","G-Eazy","Garfunkel and Oates","Gary Lewis & The Playboys","Gary Numan","Gene Autry","Gene Chandler","Gene Vincent","George Michael","George Strait","Gera MX","Ghost","Ghostemane","Gigi D'Agostino","Gladys Knight & The Pips","Glass Animals","Glee Cast","Gloria Gaynor","Godsmack","Gorillaz","Gotye","Grand Funk Railroad","Green Day","Grouplove","Grupo Firme","Grupo Marca Registrada","Gryffin","Gucci Mane","Guess Who","Gunna","Gusttavo Lima","Guy Mitchell","Gwen Stefani","Gzuz","H.E.R.","HARDY","Hailee Steinfeld","Halsey","Hans Zimmer","Harris Jayaraj","Harry Chapin","Harry James","Harry Nilsson","Harry Styles","Hayley Williams","Herb Alpert","Herman's Hermits","Hillsong UNITED","Hillsong Worship","Hollywood Undead","Honey Cone","Hoobastank","Hues Corporation","I Prevail","ITZY","IVE","Ice Cube","Ice Spice","Iggy Azalea","Imagine Dragons","Incubus","Internet Money","Isaac Hayes","J Geils Band","J. Cole","JAY-Z","JJ Lin","JP Saxe","JVKE","Jack Harlow","Jack Johnson","Jackie Wilson","Jacquees","James Arthur","James Brown","James TW","James Taylor","Jamie Foxx","Janet Jackson","Janis Joplin","Jason Aldean","Jason Mraz","Jay Chou","Jay Sean","Jay Wheeler","Jaymes Young","Jean Knight","Jeezy","Jennifer Lopez","Jennifer Warnes","Jeremih","Jeremy Zucker","Jerry Lee Lewis","Jerry Murad's Harmonicats","Jess Glynne","Jessie J","Jewel","Jimi Hendrix","Jimin","Jimmie Rodgers","Jimmy Dean","Jo Stafford","Joan Jett & The Blackhearts","Joao Gilberto","Joel Corry","John Fred & The Playboy Band","John Legend","John Mayer","John Williams","Johnnie Ray","Johnnie Taylor","Johnny Cash","Johnny Horton","Johnny Mathis","Johnny Mercer","Johnny Nash","Joji","Jon Bellion","Jonas Blue","Jonas Brothers","Joni James","Jorja Smith","Juan Gabriel","Juan Luis Guerra 4.40","Juanes","Juice Newton","Julia Michaels","Justin Bieber","Justin Quiles","KALEO","KAROL G","KAYTRANADA","KK","KSI","KYLE","Kacey Musgraves","Kane Brown","Kanye West","Karan Aujla","Kate Smith","Katy Perry","Kay Kyser","Ke$ha","Kehlani","Kelly Clarkson","Kenny Chesney","Kenny Loggins","Kenny Rogers","Kenshi Yonezu","Kenya Grace","Kevin Gates","Key Glock","Khalid","Kim Carnes","Kim Petras","Kimbra","Kina","King Gnu","Kings of Leon","Kingsmen","Kitty Kallen","Kodak Black","Kodaline","Kollegah","Kool & The Gang","Kungs","Kygo","Kylie Minogue","LE SSERAFIM","LISA","LMFAO","LUDMILLA","La Adictiva Banda San José de Mesillas","La Oreja de Van Gogh","Labrinth","Lady Antebellum","Lady GaGa","Lainey Wilson","Lana Del Rey","Latto","Lauryn Hill","Lauv","League of Legends","Lee Brice","Leon Bridges","Leona Lewis","Lesley Gore","Leslie Odom Jr.","Liam Payne","Lifehouse","Lil Baby","Lil Dicky","Lil Durk","Lil Mosey","Lil Nas X","Lil Pump","Lil Skies","Lil Tjay","Lil Uzi Vert","Lil Yachty","Lil' Kim","Lil' Wayne","Lin-Manuel Miranda","Linkin Park","Lionel Richie","Lipps Inc","Lisa Loeb","Little Peggy March","Little Richard","Lofi Fruits Music","Lord Huron","Los Del Rio","Los Dos Carnales","Los Lobos","Los Temerarios","Los Tigres Del Norte","Los Tucanes De Tijuana","Lou Reed","Loud Luxury","Louis Jordan","Louis Tomlinson","Love Unlimited","Lovin' Spoonful","Luan Santana","Luciano","Luis Miguel","Luis R Conriquez","Lulu","Lunay","Lupe Fiasco","M","MAX","MC Hammer","MC Ryan SP","MKTO","Mabel","Machine Gun Kelly","Madison Beer","Madonna","Mahalini","Major Lazer","Mambo Kingz","Maneskin","Marco Antonio Solís","Margaret Whiting","Maria Becerra","Mario","Mario Lanza","Mark Ronson","Maroon 5","Marshmello","Martin Garrix","Mary Ford","Mary J Blige","Mary J. Blige","Mary Wells","Matoma","Mau y Ricky","Meek Mill","Megadeth","Melanie","Melanie Martinez","Melendi","Men At Work","Metro Boomin","Michael Bublé","Michael Jackson","Michael McDonald","Michael Sembello","Miguel","Mike Posner","Miley Cyrus","Milky Chance","Minnie Riperton","Miracle Tones","Miranda Lambert","Mohit Chauhan","Mon Laferte","Moneybagg Yo","Monsta X","Mora","Morad","Morat","Mother Mother","Motley Crue","Ms. Lauryn Hill","Mumford & Sons","Muse","Mya","Myke Towers","NCT 127","NCT DREAM","NEFFEX","Nadin Amizah","Nancy Sinatra","Nat King Cole","Nate Smith","Natti Natasha","Nayer","Neil Diamond","Neil Sedaka","Nekfeu","Nelly","New Vaudeville Band","Next","Nickelback","Nicki Minaj","Nicki Nicole","Nicky Jam","Nina Simone","Ninho","Nipsey Hussle","Nirvana","Niska","No Doubt","Norah Jones","Normani","OMI","ONE OK ROCK","Oasis","Official HIGE DANdism","Offset","Old Dominion","Oliver Heldens","Olivia Rodrigo","Omah Lay","One Direction","Otis Redding","OutKast","Owl City","P Diddy","P!nk","PLK","PNL","Pamungkas","Passenger","Pat Boone","Patsy Cline","Patti LaBelle","Patti Page","Paul & Paula","Paul Revere & the Raiders","Paul Robeson","Paul Russell","Paul Whiteman","Paula Abdul","Peaches & Herb","Pearl Jam","Pee Wee Hunt","Pee Wee King","Pentatonix","Percy Faith","Percy Sledge","Peso Pluma","Peter Cetera","Peter Gabriel","Peter, Paul & Mary","Pharrell Williams","Pierce The Veil","Pineapple StormTv","Pink Floyd","Pink Sweat$","Piso 21","Pitbull","Plan B","Player","Polo G","Pop Smoke","Portugal. The Man","Pouya","Prince","Prince Royce","Pusha T","Quality Control","Queen","Quinn XCII","R. Kelly","RAF Camora","RAYE","REM","REO Speedwagon","Radiohead","Rag'n'Bone Man","Rage Against The Machine","Rahat Fateh Ali Khan","Rainbow Kitten Surprise","Rammstein","Rauw Alejandro","Ray Charles","Ray Parker Jr","Ray Stevens","Red Foley","Red Hot Chili Peppers","Red Velvet","Regard","Regina Belle","Reik","Rels B","Rema","Ricardo Arjona","Rich The Kid","Rick Astley","Rick Dees & his Cast of Idiots","Rick Ross","Rick Springfield","Ricky Martin","Ricky Nelson","Rihanna","Rita Ora","Ritchie Valens","Rizky Febian","Rob Thomas","Roberta Flack","Robin Schulz","Robin Thicke","Rod Stewart","Rod Wave","Roddy Ricch","Roger Miller","Romeo Santos","Rosemary Clooney","Roxette","Roy Acuff","Roy Orbison","Rudimental","Ruel","Ruth B.","Ryan Lewis","SCH","SEVENTEEN","SWV","Sabaton","Sabrina Carpenter","Sachet Tandon","Sachin-Jigar","Sade","Sam Cooke","Sam Feldt","Sam Hunt","Sam Smith","Sam The Sham & The Pharaohs","Sammy Davis Jr","Sammy Kaye","Santana","Sasha Alex Sloan","Savage Garden","Saweetie","Scorpions","Sean Kingston","Sean Paul","Sebastian Yatra","Sech","Seeb","Sezen Aksu","Sfera Ebbasta","Shaggy","Shania Twain","Shawn Mendes","Sheena Easton","Shinedown","Shubh","Sia","Sid Sriram","Sidhu Moose Wala","Silk","Silver Convention","Simon & Garfunkel","Sinead O'Connor","Sir Mix-a-Lot","Sister Sledge","Ski Mask The Slump God","Skillet","Skrillex","Sleeping At Last","Smokey Robinson","Snoop Dogg","Snow Patrol","Soda Stereo","Sonu Nigam","Sophie Ellis-Bextor","Spencer Davis Group","Spice Girls","Stan Getz","Starland Vocal Band","Stephen Sanchez","Steve Aoki","Steve Lacy","Steve Winwood","Stevie B","Sting","Stormzy","Strawberry Alarm Clock","Stray Kids","Stromae","Sublime","Sum 41","Summer Walker","Supertramp","Survivor","Swedish House Mafia","System Of A Down","T-Pain","T.I.","TAEYEON","TKKG","TLC","TOMORROW X TOGETHER","TOTO","TWICE","Tag Team","Tainy","Tammi Terrell","Tanishk Bagchi","Tate McRae","Taylor Swift","Tears For Fears","Tems","Tennessee Ernie Ford","Terence Trent D'Arby","Teresa Brewer","Terry Jacks","The Ames Brothers","The Animals","The B52s","The Bangles","The Beatles","The Black Eyed Peas","The Black Keys","The Box Tops","The Chainsmokers","The Chiffons","The Chordettes","The Clash","The Coasters","The Commodores","The Cowsills","The Cranberries","The Crew-Cuts","The Cure","The Detroit Spinners","The Diamonds","The Doobie Brothers","The Doors","The Drifters","The Emotions","The Eurythmics","The Fireballs","The Flamingos","The Foundations","The Four Seasons","The Fray","The Game","The Go Gos","The Goo Goo Dolls","The Head And The Heart","The Hollies","The Ink Spots","The Isley Brothers","The Jackson 5","The Kid LAROI","The Killers","The Kingston Trio","The Kooks","The Lemon Pipers","The Living Tombstone","The Lumineers","The Mamas & The Papas","The Marvelettes","The McCoys","The Mills Brothers","The Miracles","The Monkees","The Moody Blues","The National","The Neighbourhood","The Notorious B.I.G.","The O'Jays","The Offspring","The Osmonds","The Partridge Family","The Penguins","The Pet Shop Boys","The Platters","The Righteous Brothers","The Rolling Stones","The Ronettes","The Score","The Script","The Seekers","The Shangri-Las","The Smashing Pumpkins","The Staple Singers","The Strokes","The Supremes","The Temptations","The Turtles","The Vamps","The Verve","The Village People","The Weavers","The White Stripes","The Young Rascals","The Zombies","Thelma Houston","Thomas Rhett","Three Days Grace","Three Dog Night","Three Man Down","Timbaland","Timmy Trumpet","Toby Keith","Tom Jones","Tom Petty and the Heartbreakers","Tommy Dorsey","Tommy Edwards","Tommy James & the Shondells","Tone Loc","Toni Braxton","Topic","Tory Lanez","Tove Lo","Trevor Daniel","Trey Songz","Trippie Redd","Trueno","Tulsi Kumar","Tulus","Twenty One Pilots","Two Feet","Ty Dolla $ign","Tyga","Tyler Hubbard","U2","UB40","UZI","Ufo361","Upchurch","V","Vampire Weekend","Van McCoy","Van Morrison","Vance Joy","Vanessa Carlton","Vanessa Williams","Vera Lynn","Vernon Dalhart","Vicente Fernandez","Vishal-Shekhar","Volbeat","WILLOW","Wale","Wallows","Weezer","Wham!","Whitney Houston","Why Don't We","Wilbert Harrison","Wilson Phillips","Wiz Khalifa","Woody Guthrie","Wyclef Jean","XXXTENTACION","Xavi","YG","YNW Melly","YOASOBI","Yandel","Years & Years","Yeat","Yo Gotti","Young Dolph","Young Miko","Young Thug","YoungBoy Never Broke Again","Yung Gravy","Yuuri","Yuvan Shankar Raja","ZAYN","ZZ Top","Zac Brown Band","Zach Bryan","Zara Larsson","aespa","benny blanco","blink-182","d4vd","deadmau5","girl in red","gnash","iann dior","will.i.am"],genre:["Acid House","Acid Jazz","Acid Rock","Acoustic","Acoustic Blues","Afro-Pop","Afrobeat","Alt-Rock","Alternative","Ambient","American Trad Rock","Americana","Anime","Arena Rock","Art-Rock","Avant-Garde","Avant-Punk","Baladas y Boleros","Barbershop","Baroque","Bebop","Big Band","Black Metal","Blue Note","Bluegrass","Blues","Boogaloo","Bop","Bossa Nova","Bounce","Brazilian Funk","Breakbeat","Britpop","CCM","Cajun","Cantopop","Celtic","Celtic Folk","Chamber Music","Chant","Chanukah","Chicago Blues","Chicago House","Chicano","Children’s Music","Chill","Choral","Christian","Christmas","Classical","Club","College Rock","Conjunto","Cool Jazz","Country","Crunk","Dance","Dancehall","Death Metal","Deep House","Delta Blues","Detroit Techno","Dirty South","Disco","Disney","Dixieland","Doo-wop","Downtempo","Dream Pop","Drill","Drinking Songs","Drone","Drum'n'bass","Dub","Dubstep","EDM","Early Music","East Coast Rap","Easter","Easy Listening","Eclectic","Electric Blues","Electro","Electronic","Electronica","Emo","Enka","Environmental","Ethio-jazz","Experimental","Experimental Rock","Flamenco","Folk","Folk-Rock","Forro","French Pop","Funk","Fusion","Gangsta Rap","Garage","German Folk","German Pop","Glam Rock","Gospel","Goth","Grime","Grindcore","Groove","Grunge","Hair Metal","Halloween","Happy","Hard Bop","Hard Dance","Hard Rock","Hardcore","Hardcore Punk","Hardcore Rap","Hardstyle","Healing","Heavy Metal","High Classical","Hip Hop","Holiday","Honky Tonk","House","IDM","Impressionist","Indie","Industrial","Instrumental","J-Dance","J-Idol","J-Pop","J-Punk","J-Rock","J-Ska","J-Synth","Jackin House","Jam Bands","Japanese Pop","Jazz","Jungle","K-Pop","Karaoke","Kayokyoku","Kids","Kitsch","Klezmer","Krautrock","Latin","Latin Jazz","Latin Rap","Local","Lounge","Lullabies","MPB","Mainstream Jazz","Malay","Mandopop","March","Mariachi","Mawwal","Medieval","Meditation","Metal","Metalcore","Minimal Techno","Minimalism","Modern","Motown","Mugham","Musicals","Musique Concrète","Nature","Neo-Soul","Nerdcore","New Acoustic","New Age","New Mex","New Wave","No Wave","Noise","Nordic","Novelty","OPM","Oi!","Old School Rap","Opera","Orchestral","Original Score","Outlaw Country","Pagode","Party","Piano","Polka","Pop","Pop Film","Pop Latino","Post Dubstep","Power Pop","Praise & Worship","Progressive House","Progressive Rock","Proto-punk","Psych Rock","Psychedelic","Punk","Punk Rock","Qawwali","Quiet Storm","R&B","Ragtime","Rainy Day","Rap","Reggae","Reggaeton","Regional Mexicano","Relaxation","Renaissance","Retro","Rock","Rockabilly","Rocksteady","Romance","Romantic","Roots Reggae","Roots Rock","SKA","Sad","Salsa","Samba","Second Line","Sertanejo","Shaabi","Shoegaze","Sleep","Smooth Jazz","Soft Rock","Soul","Soundtrack","Southern Gospel","Southern Rock","Space Rock","Stage And Screen","Steampunk","Summer","Surf","Swamp Pop","Swing","Synth Pop","Tango","Techno","Teen Pop","Tejano","Tex-Mex","Thanksgiving","Traditional","Trance","Trip Hop","Tropical","Underground Rap","Urban","Urban Cowboy","West Coast Rap","Western Swing","World","Worldbeat","Zydeco"],song_name:["(Everything I Do) I Do it For You","(Ghost) Riders in the Sky","(I Can't Get No) Satisfaction","(I've Got a Gal In) Kalamazoo","(I've Had) the Time of My Life","(It's No) Sin","(Just Like) Starting Over","(Let Me Be Your) Teddy Bear","(Put Another Nickel In) Music! Music! Music!","(Sexual) Healing","(Sittin' On) the Dock of the Bay","(They Long to Be) Close to You","(You Keep Me) Hangin' On","(You're My) Soul & Inspiration","(Your Love Keeps Lifting Me) Higher & Higher","12th Street Rag","1999","19th Nervous Breakdown","50 Ways to Leave Your Lover","9 to 5","96 Tears","A Boy Named Sue","A Hard Day's Night","A String of Pearls","A Thousand Miles","A Tree in the Meadow","A Whiter Shade of Pale","A Whole New World (Aladdin's Theme)","A Woman in Love","A-Tisket A-Tasket","ABC","Abracadabra","Ac-cent-tchu-ate the Positive","Addicted to Love","After You've Gone","Afternoon Delight","Again","Against All Odds (Take a Look At Me Now)","Ain't Misbehavin'","Ain't No Mountain High Enough","Ain't No Sunshine","Ain't That a Shame","Airplanes","All Along the Watchtower","All I Have to Do is Dream","All I Wanna Do","All My Lovin' (You're Never Gonna Get It)","All Night Long (All Night)","All Out of Love","All Shook Up","All You Need is Love","Alone","Alone Again (Naturally)","Always On My Mind","American Pie","American Woman","Angie","Another Brick in the Wall (part 2)","Another Day in Paradise","Another Night","Another One Bites the Dust","Apologize","April Showers","Aquarius/Let The Sunshine In","Are You Lonesome Tonight?","Arthur's Theme (Best That You Can Do)","As Time Goes By","At Last","At the Hop","Auf Wiederseh'n Sweetheart","Baby Baby","Baby Come Back","Baby Got Back","Baby Love","Baby One More Time","Bad","Bad Day","Bad Girls","Bad Moon Rising","Bad Romance","Baker Street","Ball of Confusion (That's What the World is Today)","Ballad of the Green Berets","Ballerina","Band On the Run","Band of Gold","Battle of New Orleans","Be Bop a Lula","Be My Baby","Be My Love","Beat It","Beautiful Day","Beauty & the Beast","Because I Love You (The Postman Song)","Because You Loved Me","Because of You","Before The Next Teardrop Falls","Begin the Beguine","Behind Closed Doors","Being With You","Believe","Ben","Bennie & the Jets","Besame Mucho","Best of My Love","Bette Davis Eyes","Big Bad John","Big Girls Don't Cry","Billie Jean","Bitter Sweet Symphony","Black Or White","Black Velvet","Blaze of Glory","Bleeding Love","Blue Suede Shoes","Blue Tango","Blueberry Hill","Blurred Lines","Body & Soul","Bohemian Rhapsody","Boogie Oogie Oogie","Boogie Woogie Bugle Boy","Boom Boom Pow","Born in the USA","Born to Be Wild","Born to Run","Boulevard of Broken Dreams","Brand New Key","Brandy (You're A Fine Girl)","Breaking Up is Hard to Do","Breathe","Bridge Over Troubled Water","Brother","Brother Louie","Brown Eyed Girl","Brown Sugar","Build Me Up Buttercup","Burn","Buttons & Bows","Bye","Bye Bye","Bye Bye Love","Caldonia Boogie (What Makes Your Big Head So Hard)","California Dreamin'","California Girls","Call Me","Call Me Maybe","Can You Feel the Love Tonight","Can't Buy Me Love","Can't Get Enough of Your Love","Can't Help Falling in Love","Candle in the Wind '97","Candy Man","Car Wash","Careless Whisper","Cars","Cat's in the Cradle","Cathy's Clown","Celebration","Centerfold","Chain of Fools","Chances Are","Change the World","Chapel of Love","Chattanooga Choo Choo","Chattanoogie Shoe-Shine Boy","Check On It","Cheek to Cheek","Cherish","Cherry Pink & Apple Blossom White","Cold","Colors of the Wind","Come On Eileen","Come On-a My House","Come Together","Coming Up","Cracklin' Rosie","Crazy","Crazy For You","Crazy Little Thing Called Love","Crazy in Love","Creep","Crimson & Clover","Crocodile Rock","Cry","Cry Like a Baby","Crying","Da Doo Ron Ron (When He Walked Me Home)","Dance to the Music","Dancing Queen","Dancing in the Dark","Dancing in the Street","Dardanella","Daydream Believer","December 1963 (Oh What a Night)","Delicado","Dilemma","Disco Duck","Disco Lady","Disturbia","Dizzy","Do That to Me One More Time","Do Wah Diddy Diddy","Do Ya Think I'm Sexy?","Do You Love Me?","Don't Be Cruel","Don't Fence Me In","Don't Go Breaking My Heart","Don't Leave Me This Way","Don't Let the Stars Get in Your Eyes","Don't Let the Sun Go Down On Me","Don't Speak","Don't Stop 'Til You Get Enough","Don't Worry Be Happy","Don't You (Forget About Me)","Don't You Want Me","Doo Wop (That Thing)","Down","Down Hearted Blues","Down Under","Downtown","Dreamlover","Dreams","Drop it Like It's Hot","Drops of Jupiter (Tell Me)","Duke of Earl","E.T.","Earth Angel","Ebony & Ivory","Eight Days a Week","Empire State Of Mind","End of the Road","Endless Love","Escape (The Pina Colada Song)","Eve of Destruction","Every Breath You Take","Every Little Thing She Does is Magic","Everybody Loves Somebody","Everybody Wants to Rule the World","Everyday People","Eye of the Tiger","Faith","Fallin'","Fame","Family Affair","Fantasy","Fast Car","Feel Good Inc","Feel Like Making Love","Fire & Rain","Firework","Flashdance. What a Feeling","Fly Robin Fly","Foolish Games","Footloose","For What It's Worth (Stop","Fortunate Son","Frankenstein","Freak Me","Freebird","Frenesi","Funkytown","Gangsta's Paradise","Georgia On My Mind","Georgy Girl","Get Back","Get Down Tonight","Get Off of My Cloud","Ghostbusters","Gimme Some Lovin'","Girls Just Wanna Have Fun","Give Me Everything","Gives You Hell","Glamorous","Glory of Love","Go Your Own Way","God Bless America","God Bless the Child","Gold Digger","Gonna Make You Sweat (Everybody Dance Now)","Good Lovin'","Good Times","Good Vibrations","Goodbye Yellow Brick Road","Goodnight","Got to Give it Up","Grease","Great Balls of Fire","Greatest Love of All","Green Onions","Green River","Green Tambourine","Grenade","Groove is in the Heart","Groovin'","Gypsies","Hair","Hang On Sloopy","Hanging by a Moment","Hanky Panky","Happy Days Are Here Again","Happy Together","Harbour Lights","Hard to Say I'm Sorry","Harper Valley PTA","Have You Ever Really Loved a Woman?","He'll Have to Go","He's So Fine","He's a Rebel","Heart of Glass","Heart of Gold","Heartbreak Hotel","Hello","Hello Dolly","Help Me","Help!","Here Without You","Here in My Heart","Hero","Hey Baby","Hey Jude","Hey Paula","Hey There","Hey There Delilah","Hey Ya!","Higher Love","Hips don't lie","Hit the Road","Hold On","Hollaback Girl","Honey","Honky Tonk","Honky Tonk Woman","Horse With No Name","Hot Child In The City","Hot Stuff","Hotel California","Hound Dog","House of the Rising Sun","How Deep is Your Love?","How Do I Live?","How Do You Mend a Broken Heart","How High the Moon","How Much is That Doggy in the Window?","How Will I Know","How You Remind Me","How to Save a Life","Hungry Heart","Hurt So Good","I Believe I Can Fly","I Can Dream","I Can Help","I Can See Clearly Now","I Can't Get Next to You","I Can't Get Started","I Can't Go For That (No Can Do)","I Can't Help Myself (Sugar Pie","I Can't Stop Loving You","I Don't Want to Miss a Thing","I Fall to Pieces","I Feel Fine","I Feel For You","I Feel Love","I Get Around","I Got You (I Feel Good)","I Got You Babe","I Gotta Feeling","I Heard it Through the Grapevine","I Honestly Love You","I Just Called to Say I Love You","I Just Wanna Be Your Everything","I Kissed A Girl","I Love Rock 'n' Roll","I Need You Now","I Only Have Eyes For You","I Shot the Sheriff","I Still Haven't Found What I'm Looking For","I Swear","I Think I Love You","I Walk the Line","I Wanna Dance With Somebody (Who Loves Me)","I Wanna Love You","I Want You Back","I Want to Hold Your Hand","I Want to Know What Love Is","I Went to Your Wedding","I Will Always Love You","I Will Follow Him","I Will Survive","I Write the Songs","I'll Be Missing You","I'll Be There","I'll Make Love to You","I'll Never Smile Again","I'll Take You There","I'll Walk Alone","I'll be seeing you","I'm Looking Over a Four Leaf Clover","I'm So Lonesome I Could Cry","I'm Sorry","I'm Walking Behind You","I'm Your Boogie Man","I'm Yours","I'm a Believer","I've Heard That Song Before","If (They Made Me a King)","If I Didn't Care","If You Don't Know Me By Now","If You Leave Me Now","Imagine","In Da Club","In the End","In the Ghetto","In the Mood","In the Summertime","In the Year 2525 (Exordium & Terminus)","Incense & Peppermints","Indian Reservation (The Lament Of The Cherokee Reservation Indian)","Instant Karma","Iris","Ironic","Irreplaceable","It Had to Be You","It's All in the Game","It's My Party","It's Now Or Never","It's Still Rock 'n' Roll to Me","It's Too Late","Jack & Diane","Jailhouse Rock","Jessie's Girl","Jive Talkin'","Johnny B Goode","Joy to the World","Judy in Disguise (With Glasses)","Jump","Jumpin' Jack Flash","Just Dance","Just My Imagination (Running Away With Me)","Just the Way You Are","Kansas City","Karma Chameleon","Keep On Loving You","Killing Me Softly With His Song","King of the Road","Kiss","Kiss & Say Goodbye","Kiss From a Rose","Kiss Me","Kiss On My List","Kiss You All Over","Knock On Wood","Knock Three Times","Kokomo","Kryptonite","Kung Fu Fighting","La Bamba","Lady","Lady Marmalade (Voulez-Vous Coucher Aver Moi Ce Soir?)","Last Train to Clarksville","Layla","Le Freak","Leader of the Pack","Lean On Me","Leaving","Let Me Call You Sweetheart","Let Me Love You","Let it Be","Let it Snow! Let it Snow! Let it Snow!","Let's Dance","Let's Get it On","Let's Groove","Let's Hear it For the Boy","Let's Stay Together","Light My Fire","Lights","Like a Prayer","Like a Rolling Stone","Like a Virgin","Little Darlin'","Little Things Mean a Lot","Live & Let Die","Livin' La Vida Loca","Livin' On a Prayer","Living For the City","Locked Out Of Heaven","Lola","Lonely Boy","Long Cool Woman in a Black Dress","Long Tall Sally","Look Away","Lookin' Out My Back Door","Lose Yourself","Losing My Religion","Louie Louie","Love Child","Love Hangover","Love In This Club","Love Is Blue (L'Amour Est Bleu)","Love Letters in the Sand","Love Me Do","Love Me Tender","Love Shack","Love Theme From 'A Star is Born' (Evergreen)","Love Train","Love Will Keep Us Together","Love is a Many Splendoured Thing","Love to Love You Baby","Love's Theme","Loving You","Low","Macarena","Mack the Knife","Maggie May","Magic","Magic Carpet Ride","Make Love to Me","Make it With You","Makin' Whoopee","Mama Told Me Not to Come","Man in the Mirror","Manana (Is Soon Enough For Me)","Maneater","Maniac","Maybellene","Me & Bobby McGee","Me & Mrs Jones","Memories Are Made of This","Mercy Mercy Me (The Ecology)","Mickey","Midnight Train to Georgia","Minnie the Moocher","Miss You","Miss You Much","Mister Sandman","Mmmbop","Mona Lisa","Monday Monday","Money For Nothing","Mony Mony","Mood Indigo","Moonlight Cocktail","Moonlight Serenade","More Than Words","More Than a Feeling","Morning Train (Nine to Five)","Mr Big Stuff","Mr Brightside","Mr Tambourine Man","Mrs Brown You've Got a Lovely Daughter","Mrs Robinson","Mule Train","Music","My Blue Heaven","My Boyfriend's Back","My Eyes Adored You","My Girl","My Guy","My Heart Will Go On","My Life","My Love","My Man","My Prayer","My Sharona","My Sweet Lord","Na Na Hey Hey (Kiss Him Goodbye)","Nature Boy","Near You","Need You Now","Need You Tonight","Never Gonna Give You Up","Night & Day","Night Fever","Nights in White Satin","No One","No Scrubs","Nobody Does it Better","Nothin' on You","Nothing Compares 2 U","Nothing's Gonna Stop Us Now","Ode To Billie Joe","Oh","Oh Happy Day","Oh My Papa (O Mein Papa)","Ol' Man River","Ole Buttermilk Sky","On Bended Knee","On My Own","On the Atchison","One","One Bad Apple","One More Try","One O'Clock Jump","One Sweet Day","One of These Nights","One of Us","Only The Lonely (Know The Way I Feel)","Only You (And You Alone)","Open Arms","Over There","Over the Rainbow","Paint it Black","Papa Don't Preach","Papa Was a Rolling Stone","Papa's Got a Brand New Bag","Paper Doll","Paper Planes","Paperback Writer","Party Rock Anthem","Peg o' My Heart","Peggy Sue","Pennies From Heaven","Penny Lane","People","People Got to Be Free","Personality","Philadelphia Freedom","Physical","Piano Man","Pick Up the Pieces","Pistol Packin' Mama","Play That Funky Music","Please Mr Postman","Poker Face","Pon De Replay","Pony Time","Pop Muzik","Prisoner of Love","Private Eyes","Promiscuous","Proud Mary","Purple Haze","Purple Rain","Puttin' on the Ritz","Que sera sera (Whatever will be will be)","Queen of Hearts","Rag Doll","Rag Mop","Rags to Riches","Raindrops Keep Falling On My Head","Rapture","Ray of Light","Reach Out (I'll Be There)","Red Red Wine","Rehab","Respect","Return to Sender","Reunited","Revolution","Rhapsody in Blue","Rhinestone Cowboy","Rich Girl","Riders On the Storm","Right Back Where We Started From","Ring My Bell","Ring of Fire","Rock Around the Clock","Rock With You","Rock Your Baby","Rock the Boat","Rock the Casbah","Roll Over Beethoven","Roll With It","Rolling In The Deep","Rosanna","Roses Are Red","Royals","Ruby Tuesday","Rudolph","Rum & Coca-Cola","Runaround Sue","Runaway","Running Scared","Rush Rush","Sailing","Save the Best For Last","Save the Last Dance For Me","Say It Right","Say My Name","Say Say Say","Say You","School's Out","Seasons in the Sun","Secret Love","Sentimental Journey","Sexyback","Sh-Boom (Life Could Be a Dream)","Shadow Dancing","Shake Down","Shake You Down","She Drives Me Crazy","She Loves You","She's a Lady","Shining Star","Shop Around","Shout","Silly Love Songs","Since U Been Gone","Sing","Singing The Blues","Single Ladies (Put A Ring On It)","Sir Duke","Sixteen Tons","Sledgehammer","Sleep Walk","Sleepy Lagoon","Slow Poke","Smells Like Teen Spirit","Smoke Gets in Your Eyes","Smoke On the Water","Smoke! Smoke! Smoke! (That Cigarette)","Smooth","So Much in Love","Soldier Boy","Some Enchanted Evening","Some of These Days","Somebody That I Used to Know","Somebody to Love","Someday","Somethin' Stupid","Something","Soul Man","Spanish Harlem","Spill the Wine","Spinning Wheel","Spirit in the Sky","St George & the Dragonette","St Louis Blues","Stagger Lee","Stairway to Heaven","Stand By Me","Stardust","Stars & Stripes Forever","Stay (I Missed You)","Stayin' Alive","Stop! in the Name of Love","Stormy Weather (Keeps Rainin' All the Time)","Straight Up","Strange Fruit","Stranger On the Shore","Strangers in the Night","Strawberry Fields Forever","Streets of Philadelphia","Stronger","Stuck On You","Sugar Shack","Sugar Sugar","Summer in the City","Summertime Blues","Sunday","Sunshine Superman","Sunshine of Your Love","Superstar","Superstition","Surfin' USA","Suspicious Minds","Swanee","Sweet Caroline (Good Times Never Seemed So Good)","Sweet Child O' Mine","Sweet Dreams (Are Made of This)","Sweet Georgia Brown","Sweet Home Alabama","Sweet Soul Music","Swinging On a Star","T For Texas (Blue Yodel No 1)","TSOP (The Sound of Philadelphia)","Take Me Home","Take My Breath Away","Take On Me","Take The 'A' Train","Take a Bow","Tammy","Tangerine","Tears in Heaven","Tears of a Clown","Temperature","Tennessee Waltz","Tequila","Tha Crossroads","Thank You (Falettinme be Mice Elf Again)","That Lucky Old Sun (Just Rolls Around Heaven All Day)","That Old Black Magic","That'll Be the Day","That's Amore","That's What Friends Are For","That's the Way (I Like It)","That's the Way Love Goes","The Boy is Mine","The Boys of Summer","The Christmas Song (Chestnuts Roasting On An Open Fire)","The End of the World","The First Time Ever I Saw Your Face","The Girl From Ipanema","The Glow-Worm","The Great Pretender","The Gypsy","The Hustle","The Joker","The Last Dance","The Letter","The Loco-Motion","The Long & Winding Road","The Love You Save","The Morning After","The Power of Love","The Prisoner's Song","The Reason","The Rose","The Sign","The Song From Moulin Rouge (Where Is Your Heart)","The Sounds of Silence","The Streak","The Sweet Escape","The Thing","The Tide is High","The Tracks of My Tears","The Twist","The Wanderer","The Way We Were","The Way You Look Tonight","The Way You Move","Theme From 'A Summer Place'","Theme From 'Greatest American Hero' (Believe It Or Not)","Theme From 'Shaft'","There goes my baby","These Boots Are Made For Walking","Third Man Theme","This Diamond Ring","This Guy's in Love With You","This Land is Your Land","This Love","This Ole House","This Used to Be My Playground","Three Coins in the Fountain","Three Times a Lady","Thrift Shop","Thriller","Ticket to Ride","Tie a Yellow Ribbon 'round the Old Oak Tree","Tiger Rag","Tighten Up","Tik-Toc","Till I Waltz Again With You","Till The End of Time","Time After Time","Time of the Season","To Sir","Tom Dooley","Tonight's the Night (Gonna Be Alright)","Too Close","Too Young","Tossing & Turning","Total Eclipse of the Heart","Touch Me","Toxic","Travellin' Band","Travellin' Man","Truly Madly Deeply","Turn! Turn! Turn! (To Everything There is a Season)","Tutti Frutti","Twist & Shout","Two Hearts","U Can't Touch This","U Got it Bad","Umbrella","Un-Break My Heart","Unbelievable","Unchained Melody","Uncle Albert (Admiral Halsey)","Under the Boardwalk","Under the Bridge","Unforgettable","Up Around the Bend","Up Up & Away","Up Where We Belong","Upside Down","Use Somebody","Vaya Con Dios (may God Be With You)","Venus","Vision of Love","Viva La Vida","Vogue","Volare","Wabash Cannonball","Waiting For a Girl Like You","Wake Me Up Before You Go Go","Wake Up Little Susie","Walk Don't Run","Walk Like a Man","Walk Like an Egyptian","Walk On By","Walk On the Wild Side","Walk This Way","Wannabe","Want Ads","Wanted","War","Waterfalls","Wayward Wind","We Are Family","We Are Young","We Are the Champions","We Are the World","We Belong Together","We Built This City","We Can Work it Out","We Didn't Start the Fire","We Found Love","We Got The Beat","We Will Rock You","We've Only Just Begun","Weak","Wedding Bell Blues","West End Blues","West End Girls","What Goes Around Comes Around","What a Fool Believes","What'd I Say","What's Going On?","What's Love Got to Do With It?","Whatcha Say","Wheel of Fortune","When Doves Cry","When You Wish Upon a Star","When a Man Loves a Woman","Where Did Our Love Go","Where is the Love?","Whip It","Whispering","White Christmas","White Rabbit","Whole Lotta Love","Whole Lotta Shakin' Goin' On","Whoomp! (There it Is)","Why Do Fools Fall in Love?","Why Don't You Believe Me?","Wichita Lineman","Wicked Game","Wild Thing","Wild Wild West","Will It Go Round In Circles","Will You Love Me Tomorrow","Winchester Cathedral","Wind Beneath My Wings","Wipe Out","Wishing Well","With Or Without You","Without Me","Without You","Woman","Won't Get Fooled Again","Wooly Bully","Working My Way Back to You","YMCA","Yakety Yak","Yeah!","Yellow Rose of Texas","Yesterday","You Ain't Seen Nothin' Yet","You Always Hurt the One You Love","You Are the Sunshine of My Life","You Belong With Me","You Belong to Me","You Can't Hurry Love","You Don't Bring Me Flowers","You Don't Have to Be a Star (To Be in My Show)","You Light Up My Life","You Make Me Feel Brand New","You Make Me Feel Like Dancing","You Really Got Me","You Send Me","You Sexy Thing","You Were Meant for Me","You make Me Wanna","You'll Never Know","You're Beautiful","You're So Vain","You're Still the One","You're the One That I Want","You've Got a Friend","You've Lost That Lovin' Feelin'","Your Cheatin' Heart","Your Song"]},person:{bio_part:["activist","artist","author","blogger","business owner","coach","creator","designer","developer","dreamer","educator","engineer","entrepreneur","environmentalist","film lover","filmmaker","foodie","founder","friend","gamer","geek","grad","inventor","leader","model","musician","nerd","parent","patriot","person","philosopher","photographer","public speaker","scientist","singer","streamer","student","teacher","traveler","veteran","writer"],bio_pattern:["{{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}","{{word.noun}} {{person.bio_supporter}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}} {{internet.emoji}}"],bio_supporter:["advocate","devotee","enthusiast","fan","junkie","lover","supporter"],first_name:{generic:["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aimee","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arden","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","Edd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gayle","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"],female:["Mary","Patricia","Linda","Barbara","Elizabeth","Jennifer","Maria","Susan","Margaret","Dorothy","Lisa","Nancy","Karen","Betty","Helen","Sandra","Donna","Carol","Ruth","Sharon","Michelle","Laura","Sarah","Kimberly","Deborah","Jessica","Shirley","Cynthia","Angela","Melissa","Brenda","Amy","Anna","Rebecca","Virginia","Kathleen","Pamela","Martha","Debra","Amanda","Stephanie","Carolyn","Christine","Marie","Janet","Catherine","Frances","Ann","Joyce","Diane","Alice","Julie","Heather","Teresa","Doris","Gloria","Evelyn","Jean","Cheryl","Mildred","Katherine","Joan","Ashley","Judith","Rose","Janice","Kelly","Nicole","Judy","Christina","Kathy","Theresa","Beverly","Denise","Tammy","Irene","Jane","Lori","Rachel","Marilyn","Andrea","Kathryn","Louise","Sara","Anne","Jacqueline","Wanda","Bonnie","Julia","Ruby","Lois","Tina","Phyllis","Norma","Paula","Diana","Annie","Lillian","Emily","Robin","Peggy","Crystal","Gladys","Rita","Dawn","Connie","Florence","Tracy","Edna","Tiffany","Carmen","Rosa","Cindy","Grace","Wendy","Victoria","Edith","Kim","Sherry","Sylvia","Josephine","Thelma","Shannon","Sheila","Ethel","Ellen","Elaine","Marjorie","Carrie","Charlotte","Monica","Esther","Pauline","Emma","Juanita","Anita","Rhonda","Hazel","Amber","Eva","Debbie","April","Leslie","Clara","Lucille","Jamie","Joanne","Eleanor","Valerie","Danielle","Megan","Alicia","Suzanne","Michele","Gail","Bertha","Darlene","Veronica","Jill","Erin","Geraldine","Lauren","Cathy","Joann","Lorraine","Lynn","Sally","Regina","Erica","Beatrice","Dolores","Bernice","Audrey","Yvonne","Annette","June","Samantha","Marion","Dana","Stacy","Ana","Renee","Ida","Vivian","Roberta","Holly","Brittany","Melanie","Loretta","Yolanda","Jeanette","Laurie","Katie","Kristen","Vanessa","Alma","Sue","Elsie","Beth","Jeanne","Vicki","Carla","Tara","Rosemary","Eileen","Terri","Gertrude","Lucy","Tonya","Ella","Stacey","Wilma","Gina","Kristin","Jessie","Natalie","Agnes","Vera","Willie","Charlene","Bessie","Delores","Melinda","Pearl","Arlene","Maureen","Colleen","Allison","Tamara","Joy","Georgia","Constance","Lillie","Claudia","Jackie","Marcia","Tanya","Nellie","Minnie","Marlene","Heidi","Glenda","Lydia","Viola","Courtney","Marian","Stella","Caroline","Dora","Jo","Vickie","Mattie","Terry","Maxine","Irma","Mabel","Marsha","Myrtle","Lena","Christy","Deanna","Patsy","Hilda","Gwendolyn","Jennie","Nora","Margie","Nina","Cassandra","Leah","Penny","Kay","Priscilla","Naomi","Carole","Brandy","Olga","Billie","Dianne","Tracey","Leona","Jenny","Felicia","Sonia","Miriam","Velma","Becky","Bobbie","Violet","Kristina","Toni","Misty","Mae","Shelly","Daisy","Ramona","Sherri","Erika","Katrina","Claire","Lindsey","Lindsay","Geneva","Guadalupe","Belinda","Margarita","Sheryl","Cora","Faye","Ada","Natasha","Sabrina","Isabel","Marguerite","Hattie","Harriet","Molly","Cecilia","Kristi","Brandi","Blanche","Sandy","Rosie","Joanna","Iris","Eunice","Angie","Inez","Lynda","Madeline","Amelia","Alberta","Genevieve","Monique","Jodi","Janie","Maggie","Kayla","Sonya","Jan","Lee","Kristine","Candace","Fannie","Maryann","Opal","Alison","Yvette","Melody","Luz","Susie","Olivia","Flora","Shelley","Kristy","Mamie","Lula","Lola","Verna","Beulah","Antoinette","Candice","Juana","Jeannette","Pam","Kelli","Hannah","Whitney","Bridget","Karla","Celia","Latoya","Patty","Shelia","Gayle","Della","Vicky","Lynne","Sheri","Marianne","Kara","Jacquelyn","Erma","Blanca","Myra","Leticia","Pat","Krista","Roxanne","Angelica","Johnnie","Robyn","Francis","Adrienne","Rosalie","Alexandra","Brooke","Bethany","Sadie","Bernadette","Traci","Jody","Kendra","Jasmine","Nichole","Rachael","Chelsea","Mable","Ernestine","Muriel","Marcella","Elena","Krystal","Angelina","Nadine","Kari","Estelle","Dianna","Paulette","Lora","Mona","Doreen","Rosemarie","Angel","Desiree","Antonia","Hope","Ginger","Janis","Betsy","Christie","Freda","Mercedes","Meredith","Lynette","Teri","Cristina","Eula","Leigh","Meghan","Sophia","Eloise","Rochelle","Gretchen","Cecelia","Raquel","Henrietta","Alyssa","Jana","Kelley","Gwen","Kerry","Jenna","Tricia","Laverne","Olive","Alexis","Tasha","Silvia","Elvira","Casey","Delia","Sophie","Kate","Patti","Lorena","Kellie","Sonja","Lila","Lana","Darla","May","Mindy","Essie","Mandy","Lorene","Elsa","Josefina","Jeannie","Miranda","Dixie","Lucia","Marta","Faith","Lela","Johanna","Shari","Camille","Tami","Shawna","Elisa","Ebony","Melba","Ora","Nettie","Tabitha","Ollie","Jaime","Winifred","Kristie"],male:["James","John","Robert","Michael","William","David","Richard","Charles","Joseph","Thomas","Christopher","Daniel","Paul","Mark","Donald","George","Kenneth","Steven","Edward","Brian","Ronald","Anthony","Kevin","Jason","Matthew","Gary","Timothy","Jose","Larry","Jeffrey","Frank","Scott","Eric","Stephen","Andrew","Raymond","Gregory","Joshua","Jerry","Dennis","Walter","Patrick","Peter","Harold","Douglas","Henry","Carl","Arthur","Ryan","Roger","Joe","Juan","Jack","Albert","Jonathan","Justin","Terry","Gerald","Keith","Samuel","Willie","Ralph","Lawrence","Nicholas","Roy","Benjamin","Bruce","Brandon","Adam","Harry","Fred","Wayne","Billy","Steve","Louis","Jeremy","Aaron","Randy","Howard","Eugene","Carlos","Russell","Bobby","Victor","Martin","Ernest","Phillip","Todd","Jesse","Craig","Alan","Shawn","Clarence","Sean","Philip","Chris","Johnny","Earl","Jimmy","Antonio","Danny","Bryan","Tony","Luis","Mike","Stanley","Leonard","Nathan","Dale","Manuel","Rodney","Curtis","Norman","Allen","Marvin","Vincent","Glenn","Jeffery","Travis","Jeff","Chad","Jacob","Lee","Melvin","Alfred","Kyle","Francis","Bradley","Jesus","Herbert","Frederick","Ray","Joel","Edwin","Don","Eddie","Ricky","Troy","Randall","Barry","Alexander","Bernard","Mario","Leroy","Francisco","Marcus","Micheal","Theodore","Clifford","Miguel","Oscar","Jay","Jim","Tom","Calvin","Alex","Jon","Ronnie","Bill","Lloyd","Tommy","Leon","Derek","Warren","Darrell","Jerome","Floyd","Leo","Alvin","Tim","Wesley","Gordon","Dean","Greg","Jorge","Dustin","Pedro","Derrick","Dan","Lewis","Zachary","Corey","Herman","Maurice","Vernon","Roberto","Clyde","Glen","Hector","Shane","Ricardo","Sam","Rick","Lester","Brent","Ramon","Charlie","Tyler","Gilbert","Gene","Marc","Reginald","Ruben","Brett","Angel","Nathaniel","Rafael","Leslie","Edgar","Milton","Raul","Ben","Chester","Cecil","Duane","Franklin","Andre","Elmer","Brad","Gabriel","Ron","Mitchell","Roland","Arnold","Harvey","Jared","Adrian","Karl","Cory","Claude","Erik","Darryl","Jamie","Neil","Jessie","Christian","Javier","Fernando","Clinton","Ted","Mathew","Tyrone","Darren","Lonnie","Lance","Cody","Julio","Kelly","Kurt","Allan","Nelson","Guy","Clayton","Hugh","Max","Dwayne","Dwight","Armando","Felix","Jimmie","Everett","Jordan","Ian","Wallace","Ken","Bob","Jaime","Casey","Alfredo","Alberto","Dave","Ivan","Johnnie","Sidney","Byron","Julian","Isaac","Morris","Clifton","Willard","Daryl","Ross","Virgil","Andy","Marshall","Salvador","Perry","Kirk","Sergio","Marion","Tracy","Seth","Kent","Terrance","Rene","Eduardo","Terrence","Enrique","Freddie","Wade","Austin","Stuart","Fredrick","Arturo","Alejandro","Jackie","Joey","Nick","Luther","Wendell","Jeremiah","Evan","Julius","Dana","Donnie","Otis","Shannon","Trevor","Oliver","Luke","Homer","Gerard","Doug","Kenny","Hubert","Angelo","Shaun","Lyle","Matt","Lynn","Alfonso","Orlando","Rex","Carlton","Ernesto","Cameron","Neal","Pablo","Lorenzo","Omar","Wilbur","Blake","Grant","Horace","Roderick","Kerry","Abraham","Willis","Rickey","Jean","Ira","Andres","Cesar","Johnathan","Malcolm","Rudolph","Damon","Kelvin","Rudy","Preston","Alton","Archie","Marco","Wm","Pete","Randolph","Garry","Geoffrey","Jonathon","Felipe","Bennie","Gerardo","Ed","Dominic","Robin","Loren","Delbert","Colin","Guillermo","Earnest","Lucas","Benny","Noel","Spencer","Rodolfo","Myron","Edmund","Garrett","Salvatore","Cedric","Lowell","Gregg","Sherman","Wilson","Devin","Sylvester","Kim","Roosevelt","Israel","Jermaine","Forrest","Wilbert","Leland","Simon","Guadalupe","Clark","Irving","Carroll","Bryant","Owen","Rufus","Woodrow","Sammy","Kristopher","Mack","Levi","Marcos","Gustavo","Jake","Lionel","Marty","Taylor","Ellis","Dallas","Gilberto","Clint","Nicolas","Laurence","Ismael","Orville","Drew","Jody","Ervin","Dewey","Al","Wilfred","Josh","Hugo","Ignacio","Caleb","Tomas","Sheldon","Erick","Frankie","Stewart","Doyle","Darrel","Rogelio","Terence","Santiago","Alonzo","Elias","Bert","Elbert","Ramiro","Conrad","Pat","Noah","Grady","Phil","Cornelius","Lamar","Rolando","Clay","Percy","Dexter","Bradford","Merle","Darin","Amos","Terrell","Moses","Irvin","Saul","Roman","Darnell","Randal","Tommie","Timmy","Darrin","Winston","Brendan","Toby","Van","Abel","Dominick","Boyd","Courtney","Jan","Emilio","Elijah","Cary","Domingo","Santos","Aubrey","Emmett","Marlon","Emanuel","Jerald","Edmond"]},gender:["Agender","Androgyne","Androgynous","Bigender","Cis female","Cis male","Cis man","Cis woman","Cis","Cisgender female","Cisgender male","Cisgender man","Cisgender woman","Cisgender","Demi-boy","Demi-girl","Demi-man","Demi-woman","Demiflux","Demigender","F2M","FTM","Female to male trans man","Female to male transgender man","Female to male transsexual man","Female to male","Gender fluid","Gender neutral","Gender nonconforming","Gender questioning","Gender variant","Genderflux","Genderqueer","Hermaphrodite","Intersex man","Intersex person","Intersex woman","Intersex","M2F","MTF","Male to female trans woman","Male to female transgender woman","Male to female transsexual woman","Male to female","Man","Multigender","Neither","Neutrois","Non-binary","Omnigender","Other","Pangender","Polygender","T* man","T* woman","Trans female","Trans male","Trans man","Trans person","Trans woman","Trans","Transsexual female","Transsexual male","Transsexual man","Transsexual person","Transsexual woman","Transsexual","Transgender female","Transgender person","Transmasculine","Trigender","Two* person","Two-spirit person","Two-spirit","Woman","Xenogender"],job_area:["Solutions","Program","Brand","Security","Research","Marketing","Directives","Implementation","Integration","Functionality","Response","Paradigm","Tactics","Identity","Markets","Group","Division","Applications","Optimization","Operations","Infrastructure","Intranet","Communications","Web","Branding","Quality","Assurance","Mobility","Accounts","Data","Creative","Configuration","Accountability","Interactions","Factors","Usability","Metrics"],job_descriptor:["Lead","Senior","Direct","Corporate","Dynamic","Future","Product","National","Regional","District","Central","Global","Customer","Investor","International","Legacy","Forward","Internal","Human","Chief","Principal"],job_title_pattern:["{{person.jobDescriptor}} {{person.jobArea}} {{person.jobType}}"],job_type:["Supervisor","Associate","Executive","Liaison","Officer","Manager","Engineer","Specialist","Director","Coordinator","Administrator","Architect","Analyst","Designer","Planner","Orchestrator","Technician","Developer","Producer","Consultant","Assistant","Facilitator","Agent","Representative","Strategist"],last_name:{generic:["Abbott","Abernathy","Abshire","Adams","Altenwerth","Anderson","Ankunding","Armstrong","Auer","Aufderhar","Bahringer","Bailey","Balistreri","Barrows","Bartell","Bartoletti","Barton","Bashirian","Batz","Bauch","Baumbach","Bayer","Beahan","Beatty","Bechtelar","Becker","Bednar","Beer","Beier","Berge","Bergnaum","Bergstrom","Bernhard","Bernier","Bins","Blanda","Blick","Block","Bode","Boehm","Bogan","Bogisich","Borer","Bosco","Botsford","Boyer","Boyle","Bradtke","Brakus","Braun","Breitenberg","Brekke","Brown","Bruen","Buckridge","Carroll","Carter","Cartwright","Casper","Cassin","Champlin","Christiansen","Cole","Collier","Collins","Conn","Connelly","Conroy","Considine","Corkery","Cormier","Corwin","Cremin","Crist","Crona","Cronin","Crooks","Cruickshank","Cummerata","Cummings","Dach","D'Amore","Daniel","Dare","Daugherty","Davis","Deckow","Denesik","Dibbert","Dickens","Dicki","Dickinson","Dietrich","Donnelly","Dooley","Douglas","Doyle","DuBuque","Durgan","Ebert","Effertz","Emard","Emmerich","Erdman","Ernser","Fadel","Fahey","Farrell","Fay","Feeney","Feest","Feil","Ferry","Fisher","Flatley","Frami","Franecki","Franey","Friesen","Fritsch","Funk","Gerhold","Gerlach","Gibson","Gislason","Gleason","Gleichner","Glover","Goldner","Goodwin","Gorczany","Gottlieb","Goyette","Grady","Graham","Grant","Green","Greenfelder","Greenholt","Grimes","Gulgowski","Gusikowski","Gutkowski","Gutmann","Haag","Hackett","Hagenes","Hahn","Haley","Halvorson","Hamill","Hammes","Hand","Hane","Hansen","Harber","Harris","Hartmann","Harvey","Hauck","Hayes","Heaney","Heathcote","Hegmann","Heidenreich","Heller","Herman","Hermann","Hermiston","Herzog","Hessel","Hettinger","Hickle","Hilll","Hills","Hilpert","Hintz","Hirthe","Hodkiewicz","Hoeger","Homenick","Hoppe","Howe","Howell","Hudson","Huel","Huels","Hyatt","Jacobi","Jacobs","Jacobson","Jakubowski","Jaskolski","Jast","Jenkins","Jerde","Johns","Johnson","Johnston","Jones","Kassulke","Kautzer","Keebler","Keeling","Kemmer","Kerluke","Kertzmann","Kessler","Kiehn","Kihn","Kilback","King","Kirlin","Klein","Kling","Klocko","Koch","Koelpin","Koepp","Kohler","Konopelski","Koss","Kovacek","Kozey","Krajcik","Kreiger","Kris","Kshlerin","Kub","Kuhic","Kuhlman","Kuhn","Kulas","Kunde","Kunze","Kuphal","Kutch","Kuvalis","Labadie","Lakin","Lang","Langosh","Langworth","Larkin","Larson","Leannon","Lebsack","Ledner","Leffler","Legros","Lehner","Lemke","Lesch","Leuschke","Lind","Lindgren","Littel","Little","Lockman","Lowe","Lubowitz","Lueilwitz","Luettgen","Lynch","Macejkovic","MacGyver","Maggio","Mann","Mante","Marks","Marquardt","Marvin","Mayer","Mayert","McClure","McCullough","McDermott","McGlynn","McKenzie","McLaughlin","Medhurst","Mertz","Metz","Miller","Mills","Mitchell","Moen","Mohr","Monahan","Moore","Morar","Morissette","Mosciski","Mraz","Mueller","Muller","Murazik","Murphy","Murray","Nader","Nicolas","Nienow","Nikolaus","Nitzsche","Nolan","Oberbrunner","O'Connell","O'Conner","O'Hara","O'Keefe","O'Kon","Okuneva","Olson","Ondricka","O'Reilly","Orn","Ortiz","Osinski","Pacocha","Padberg","Pagac","Parisian","Parker","Paucek","Pfannerstill","Pfeffer","Pollich","Pouros","Powlowski","Predovic","Price","Prohaska","Prosacco","Purdy","Quigley","Quitzon","Rath","Ratke","Rau","Raynor","Reichel","Reichert","Reilly","Reinger","Rempel","Renner","Reynolds","Rice","Rippin","Ritchie","Robel","Roberts","Rodriguez","Rogahn","Rohan","Rolfson","Romaguera","Roob","Rosenbaum","Rowe","Ruecker","Runolfsdottir","Runolfsson","Runte","Russel","Rutherford","Ryan","Sanford","Satterfield","Sauer","Sawayn","Schaden","Schaefer","Schamberger","Schiller","Schimmel","Schinner","Schmeler","Schmidt","Schmitt","Schneider","Schoen","Schowalter","Schroeder","Schulist","Schultz","Schumm","Schuppe","Schuster","Senger","Shanahan","Shields","Simonis","Sipes","Skiles","Smith","Smitham","Spencer","Spinka","Sporer","Stamm","Stanton","Stark","Stehr","Steuber","Stiedemann","Stokes","Stoltenberg","Stracke","Streich","Stroman","Strosin","Swaniawski","Swift","Terry","Thiel","Thompson","Tillman","Torp","Torphy","Towne","Toy","Trantow","Tremblay","Treutel","Tromp","Turcotte","Turner","Ullrich","Upton","Vandervort","Veum","Volkman","Von","VonRueden","Waelchi","Walker","Walsh","Walter","Ward","Waters","Watsica","Weber","Wehner","Weimann","Weissnat","Welch","West","White","Wiegand","Wilderman","Wilkinson","Will","Williamson","Willms","Windler","Wintheiser","Wisoky","Wisozk","Witting","Wiza","Wolf","Wolff","Wuckert","Wunsch","Wyman","Yost","Yundt","Zboncak","Zemlak","Ziemann","Zieme","Zulauf"]},last_name_pattern:{generic:[{value:"{{person.last_name.generic}}",weight:95},{value:"{{person.last_name.generic}}-{{person.last_name.generic}}",weight:5}]},middle_name:{generic:["Addison","Alex","Anderson","Angel","Arden","August","Austin","Avery","Bailey","Billie","Blake","Bowie","Brooklyn","Cameron","Charlie","Corey","Dakota","Drew","Elliott","Ellis","Emerson","Finley","Gray","Greer","Harper","Hayden","Jaden","James","Jamie","Jordan","Jules","Kai","Kendall","Kennedy","Kyle","Leslie","Logan","London","Marlowe","Micah","Nico","Noah","North","Parker","Phoenix","Quinn","Reagan","Reese","Reign","Riley","River","Robin","Rory","Rowan","Ryan","Sage","Sasha","Sawyer","Shawn","Shiloh","Skyler","Taylor"],female:["Abigail","Adele","Alex","Alice","Alisha","Amber","Amelia","Amora","Anaïs","Angelou","Anika","Anise","Annabel","Anne","Aphrodite","Aretha","Arya","Ashton","Aster","Audrey","Avery","Bailee","Bay","Belle","Beth","Billie","Blair","Blaise","Blake","Blanche","Blue","Bree","Brielle","Brienne","Brooke","Caleen","Candice","Caprice","Carelyn","Caylen","Celine","Cerise","Cia","Claire","Claudia","Clementine","Coral","Coraline","Dahlia","Dakota","Dawn","Della","Demi","Denise","Denver","Devine","Devon","Diana","Dylan","Ebony","Eden","Eleanor","Elein","Elizabeth","Ellen","Elodie","Eloise","Ember","Emma","Erin","Eyre","Faith","Farrah","Fawn","Fayre","Fern","France","Francis","Frida","Genisis","Georgia","Grace","Gwen","Harley","Harper","Hazel","Helen","Hippolyta","Holly","Hope","Imani","Iowa","Ireland","Irene","Iris","Isa","Isla","Ivy","Jade","Jane","Jazz","Jean","Jess","Jett","Jo","Joan","Jolie","Jordan","Josie","Journey","Joy","Jules","Julien","Juliet","Juniper","Justice","Kali","Karma","Kat","Kate","Kennedy","Keva","Kylie","Lake","Lane","Lark","Layla","Lee","Leigh","Leona","Lexi","London","Lou","Louise","Love","Luna","Lux","Lynn","Lyric","Maddie","Mae","Marie","Matilda","Maude","Maybel","Meadow","Medusa","Mercy","Michelle","Mirabel","Monroe","Morgan","Nalia","Naomi","Nova","Olive","Paige","Parker","Pax","Pearl","Penelope","Phoenix","Quinn","Rae","Rain","Raven","Ray","Raye","Rebel","Reese","Reeve","Regan","Riley","River","Robin","Rory","Rose","Royal","Ruth","Rylie","Sage","Sam","Saturn","Scout","Serena","Sky","Skylar","Sofia","Sophia","Storm","Sue","Suzanne","Sydney","Taylen","Taylor","Teagan","Tempest","Tenley","Thea","Trinity","Valerie","Venus","Vera","Violet","Willow","Winter","Xena","Zaylee","Zion","Zoe"],male:["Ace","Aiden","Alexander","Ander","Anthony","Asher","August","Aziel","Bear","Beckham","Benjamin","Buddy","Calvin","Carter","Charles","Christopher","Clyde","Cooper","Daniel","David","Dior","Dylan","Elijah","Ellis","Emerson","Ethan","Ezra","Fletcher","Flynn","Gabriel","Grayson","Gus","Hank","Harrison","Hendrix","Henry","Houston","Hudson","Hugh","Isaac","Jack","Jackson","Jacob","Jakobe","James","Jaxon","Jaxtyn","Jayden","John","Joseph","Josiah","Jude","Julian","Karsyn","Kenji","Kobe","Kylo","Lennon","Leo","Levi","Liam","Lincoln","Logan","Louis","Lucas","Lucky","Luke","Mason","Mateo","Matthew","Maverick","Michael","Monroe","Nixon","Ocean","Oliver","Otis","Otto","Owen","Ozzy","Parker","Rocky","Samuel","Sebastian","Sonny","Teddy","Theo","Theodore","Thomas","Truett","Walter","Warren","Watson","William","Wison","Wyatt","Ziggy","Zyair"]},name:[{value:"{{person.firstName}} {{person.lastName}}",weight:49},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}}",weight:7},{value:"{{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:7},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:1}],prefix:{generic:["Dr.","Miss","Mr.","Mrs.","Ms."],female:["Mrs.","Ms.","Miss","Dr."],male:["Mr.","Dr."]},sex:["female","male"],suffix:["Jr.","Sr.","I","II","III","IV","V","MD","DDS","PhD","DVM"],western_zodiac_sign:["Aquarius","Pisces","Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn"]},phone_number:{format:{human:["!##-!##-####","(!##) !##-####","1-!##-!##-####","!##.!##.####","!##-!##-#### x###","(!##) !##-#### x###","1-!##-!##-#### x###","!##.!##.#### x###","!##-!##-#### x####","(!##) !##-#### x####","1-!##-!##-#### x####","!##.!##.#### x####","!##-!##-#### x#####","(!##) !##-#### x#####","1-!##-!##-#### x#####","!##.!##.#### x#####"],international:["+1!##!######"],national:["(!##) !##-####"]}},science:{chemical_element:[{symbol:"H",name:"Hydrogen",atomicNumber:1},{symbol:"He",name:"Helium",atomicNumber:2},{symbol:"Li",name:"Lithium",atomicNumber:3},{symbol:"Be",name:"Beryllium",atomicNumber:4},{symbol:"B",name:"Boron",atomicNumber:5},{symbol:"C",name:"Carbon",atomicNumber:6},{symbol:"N",name:"Nitrogen",atomicNumber:7},{symbol:"O",name:"Oxygen",atomicNumber:8},{symbol:"F",name:"Fluorine",atomicNumber:9},{symbol:"Ne",name:"Neon",atomicNumber:10},{symbol:"Na",name:"Sodium",atomicNumber:11},{symbol:"Mg",name:"Magnesium",atomicNumber:12},{symbol:"Al",name:"Aluminium",atomicNumber:13},{symbol:"Si",name:"Silicon",atomicNumber:14},{symbol:"P",name:"Phosphorus",atomicNumber:15},{symbol:"S",name:"Sulfur",atomicNumber:16},{symbol:"Cl",name:"Chlorine",atomicNumber:17},{symbol:"Ar",name:"Argon",atomicNumber:18},{symbol:"K",name:"Potassium",atomicNumber:19},{symbol:"Ca",name:"Calcium",atomicNumber:20},{symbol:"Sc",name:"Scandium",atomicNumber:21},{symbol:"Ti",name:"Titanium",atomicNumber:22},{symbol:"V",name:"Vanadium",atomicNumber:23},{symbol:"Cr",name:"Chromium",atomicNumber:24},{symbol:"Mn",name:"Manganese",atomicNumber:25},{symbol:"Fe",name:"Iron",atomicNumber:26},{symbol:"Co",name:"Cobalt",atomicNumber:27},{symbol:"Ni",name:"Nickel",atomicNumber:28},{symbol:"Cu",name:"Copper",atomicNumber:29},{symbol:"Zn",name:"Zinc",atomicNumber:30},{symbol:"Ga",name:"Gallium",atomicNumber:31},{symbol:"Ge",name:"Germanium",atomicNumber:32},{symbol:"As",name:"Arsenic",atomicNumber:33},{symbol:"Se",name:"Selenium",atomicNumber:34},{symbol:"Br",name:"Bromine",atomicNumber:35},{symbol:"Kr",name:"Krypton",atomicNumber:36},{symbol:"Rb",name:"Rubidium",atomicNumber:37},{symbol:"Sr",name:"Strontium",atomicNumber:38},{symbol:"Y",name:"Yttrium",atomicNumber:39},{symbol:"Zr",name:"Zirconium",atomicNumber:40},{symbol:"Nb",name:"Niobium",atomicNumber:41},{symbol:"Mo",name:"Molybdenum",atomicNumber:42},{symbol:"Tc",name:"Technetium",atomicNumber:43},{symbol:"Ru",name:"Ruthenium",atomicNumber:44},{symbol:"Rh",name:"Rhodium",atomicNumber:45},{symbol:"Pd",name:"Palladium",atomicNumber:46},{symbol:"Ag",name:"Silver",atomicNumber:47},{symbol:"Cd",name:"Cadmium",atomicNumber:48},{symbol:"In",name:"Indium",atomicNumber:49},{symbol:"Sn",name:"Tin",atomicNumber:50},{symbol:"Sb",name:"Antimony",atomicNumber:51},{symbol:"Te",name:"Tellurium",atomicNumber:52},{symbol:"I",name:"Iodine",atomicNumber:53},{symbol:"Xe",name:"Xenon",atomicNumber:54},{symbol:"Cs",name:"Caesium",atomicNumber:55},{symbol:"Ba",name:"Barium",atomicNumber:56},{symbol:"La",name:"Lanthanum",atomicNumber:57},{symbol:"Ce",name:"Cerium",atomicNumber:58},{symbol:"Pr",name:"Praseodymium",atomicNumber:59},{symbol:"Nd",name:"Neodymium",atomicNumber:60},{symbol:"Pm",name:"Promethium",atomicNumber:61},{symbol:"Sm",name:"Samarium",atomicNumber:62},{symbol:"Eu",name:"Europium",atomicNumber:63},{symbol:"Gd",name:"Gadolinium",atomicNumber:64},{symbol:"Tb",name:"Terbium",atomicNumber:65},{symbol:"Dy",name:"Dysprosium",atomicNumber:66},{symbol:"Ho",name:"Holmium",atomicNumber:67},{symbol:"Er",name:"Erbium",atomicNumber:68},{symbol:"Tm",name:"Thulium",atomicNumber:69},{symbol:"Yb",name:"Ytterbium",atomicNumber:70},{symbol:"Lu",name:"Lutetium",atomicNumber:71},{symbol:"Hf",name:"Hafnium",atomicNumber:72},{symbol:"Ta",name:"Tantalum",atomicNumber:73},{symbol:"W",name:"Tungsten",atomicNumber:74},{symbol:"Re",name:"Rhenium",atomicNumber:75},{symbol:"Os",name:"Osmium",atomicNumber:76},{symbol:"Ir",name:"Iridium",atomicNumber:77},{symbol:"Pt",name:"Platinum",atomicNumber:78},{symbol:"Au",name:"Gold",atomicNumber:79},{symbol:"Hg",name:"Mercury",atomicNumber:80},{symbol:"Tl",name:"Thallium",atomicNumber:81},{symbol:"Pb",name:"Lead",atomicNumber:82},{symbol:"Bi",name:"Bismuth",atomicNumber:83},{symbol:"Po",name:"Polonium",atomicNumber:84},{symbol:"At",name:"Astatine",atomicNumber:85},{symbol:"Rn",name:"Radon",atomicNumber:86},{symbol:"Fr",name:"Francium",atomicNumber:87},{symbol:"Ra",name:"Radium",atomicNumber:88},{symbol:"Ac",name:"Actinium",atomicNumber:89},{symbol:"Th",name:"Thorium",atomicNumber:90},{symbol:"Pa",name:"Protactinium",atomicNumber:91},{symbol:"U",name:"Uranium",atomicNumber:92},{symbol:"Np",name:"Neptunium",atomicNumber:93},{symbol:"Pu",name:"Plutonium",atomicNumber:94},{symbol:"Am",name:"Americium",atomicNumber:95},{symbol:"Cm",name:"Curium",atomicNumber:96},{symbol:"Bk",name:"Berkelium",atomicNumber:97},{symbol:"Cf",name:"Californium",atomicNumber:98},{symbol:"Es",name:"Einsteinium",atomicNumber:99},{symbol:"Fm",name:"Fermium",atomicNumber:100},{symbol:"Md",name:"Mendelevium",atomicNumber:101},{symbol:"No",name:"Nobelium",atomicNumber:102},{symbol:"Lr",name:"Lawrencium",atomicNumber:103},{symbol:"Rf",name:"Rutherfordium",atomicNumber:104},{symbol:"Db",name:"Dubnium",atomicNumber:105},{symbol:"Sg",name:"Seaborgium",atomicNumber:106},{symbol:"Bh",name:"Bohrium",atomicNumber:107},{symbol:"Hs",name:"Hassium",atomicNumber:108},{symbol:"Mt",name:"Meitnerium",atomicNumber:109},{symbol:"Ds",name:"Darmstadtium",atomicNumber:110},{symbol:"Rg",name:"Roentgenium",atomicNumber:111},{symbol:"Cn",name:"Copernicium",atomicNumber:112},{symbol:"Nh",name:"Nihonium",atomicNumber:113},{symbol:"Fl",name:"Flerovium",atomicNumber:114},{symbol:"Mc",name:"Moscovium",atomicNumber:115},{symbol:"Lv",name:"Livermorium",atomicNumber:116},{symbol:"Ts",name:"Tennessine",atomicNumber:117},{symbol:"Og",name:"Oganesson",atomicNumber:118}],unit:[{name:"meter",symbol:"m"},{name:"second",symbol:"s"},{name:"mole",symbol:"mol"},{name:"ampere",symbol:"A"},{name:"kelvin",symbol:"K"},{name:"candela",symbol:"cd"},{name:"kilogram",symbol:"kg"},{name:"radian",symbol:"rad"},{name:"hertz",symbol:"Hz"},{name:"newton",symbol:"N"},{name:"pascal",symbol:"Pa"},{name:"joule",symbol:"J"},{name:"watt",symbol:"W"},{name:"coulomb",symbol:"C"},{name:"volt",symbol:"V"},{name:"ohm",symbol:"Ω"},{name:"tesla",symbol:"T"},{name:"degree Celsius",symbol:"°C"},{name:"lumen",symbol:"lm"},{name:"becquerel",symbol:"Bq"},{name:"gray",symbol:"Gy"},{name:"sievert",symbol:"Sv"},{name:"steradian",symbol:"sr"},{name:"farad",symbol:"F"},{name:"siemens",symbol:"S"},{name:"weber",symbol:"Wb"},{name:"henry",symbol:"H"},{name:"lux",symbol:"lx"},{name:"katal",symbol:"kat"}]},team:{creature:["ants","bats","bears","bees","birds","buffalo","cats","chickens","cattle","dogs","dolphins","ducks","elephants","fishes","foxes","frogs","geese","goats","horses","kangaroos","lions","monkeys","owls","oxen","penguins","people","pigs","rabbits","sheep","tigers","whales","wolves","zebras","banshees","crows","black cats","chimeras","ghosts","conspirators","dragons","dwarves","elves","enchanters","exorcists","sons","foes","giants","gnomes","goblins","gooses","griffins","lycanthropes","nemesis","ogres","oracles","prophets","sorcerors","spiders","spirits","vampires","warlocks","vixens","werewolves","witches","worshipers","zombies","druids"],name:["{{location.state}} {{team.creature}}"]},vehicle:{bicycle_type:["Adventure Road Bicycle","BMX Bicycle","City Bicycle","Cruiser Bicycle","Cyclocross Bicycle","Dual-Sport Bicycle","Fitness Bicycle","Flat-Foot Comfort Bicycle","Folding Bicycle","Hybrid Bicycle","Mountain Bicycle","Recumbent Bicycle","Road Bicycle","Tandem Bicycle","Touring Bicycle","Track/Fixed-Gear Bicycle","Triathlon/Time Trial Bicycle","Tricycle"],fuel:["Diesel","Electric","Gasoline","Hybrid"],manufacturer:["Aston Martin","Audi","BMW","Bentley","Bugatti","Cadillac","Chevrolet","Chrysler","Dodge","Ferrari","Fiat","Ford","Honda","Hyundai","Jaguar","Jeep","Kia","Lamborghini","Land Rover","Maserati","Mazda","Mercedes Benz","Mini","Nissan","Polestar","Porsche","Rolls Royce","Smart","Tesla","Toyota","Volkswagen","Volvo"],model:["1","2","911","A4","A8","ATS","Accord","Alpine","Altima","Aventador","Beetle","CTS","CX-9","Camaro","Camry","Challenger","Charger","Civic","Colorado","Corvette","Countach","Cruze","Durango","El Camino","Element","Escalade","Expedition","Explorer","F-150","Fiesta","Focus","Fortwo","Golf","Grand Caravan","Grand Cherokee","Impala","Jetta","Land Cruiser","LeBaron","Malibu","Mercielago","Model 3","Model S","Model T","Model X","Model Y","Mustang","PT Cruiser","Prius","Ranchero","Roadster","Sentra","Silverado","Spyder","Taurus","V90","Volt","Wrangler","XC90","XTS"],type:["Cargo Van","Convertible","Coupe","Crew Cab Pickup","Extended Cab Pickup","Hatchback","Minivan","Passenger Van","SUV","Sedan","Wagon"]},word:{adjective:["abandoned","able","acceptable","acclaimed","accomplished","accurate","aching","acidic","actual","admired","adolescent","advanced","affectionate","afraid","aged","aggravating","aggressive","agile","agitated","agreeable","ajar","alarmed","alert","alienated","alive","all","altruistic","amazing","ambitious","ample","amused","angelic","anguished","animated","annual","another","antique","any","apprehensive","appropriate","apt","arid","artistic","ashamed","assured","astonishing","athletic","austere","authentic","authorized","avaricious","average","aware","awesome","awful","babyish","back","bad","baggy","bare","basic","beloved","beneficial","best","better","big","biodegradable","bitter","black","black-and-white","blank","blaring","bleak","blind","blond","blue","blushing","bogus","boiling","bony","boring","bossy","both","bouncy","bowed","brave","breakable","bright","brilliant","brisk","broken","brown","bruised","bulky","burdensome","burly","bustling","busy","buttery","buzzing","calculating","candid","carefree","careless","caring","cautious","cavernous","celebrated","charming","cheap","cheerful","chilly","chubby","circular","classic","clean","clear","clear-cut","close","closed","cloudy","clueless","clumsy","cluttered","coarse","colorful","colorless","colossal","comfortable","common","compassionate","competent","complete","complicated","concerned","concrete","confused","considerate","content","cool","cooperative","coordinated","corny","corrupt","courageous","courteous","crafty","crazy","creamy","creative","criminal","critical","crooked","crowded","cruel","crushing","cuddly","cultivated","cumbersome","curly","cute","damaged","damp","dapper","dark","darling","dazzling","dead","deadly","deafening","dearest","decent","decisive","deep","defenseless","defensive","deficient","definite","definitive","delectable","delicious","delirious","dense","dental","dependable","dependent","descriptive","deserted","determined","devoted","different","difficult","digital","diligent","dim","direct","dirty","discrete","disloyal","dismal","distant","distinct","distorted","doting","downright","drab","dramatic","dreary","dual","dull","dutiful","each","early","earnest","easy","ecstatic","edible","educated","elastic","elderly","electric","elegant","elementary","elliptical","eminent","emotional","empty","enchanted","enchanting","energetic","enlightened","enraged","entire","equatorial","essential","esteemed","ethical","everlasting","every","evil","exalted","excellent","excitable","excited","exhausted","exotic","expensive","experienced","expert","extra-large","extroverted","failing","faint","fair","fake","familiar","fantastic","far","far-flung","far-off","faraway","fat","fatal","fatherly","favorable","favorite","fearless","feline","filthy","fine","finished","firm","first","firsthand","fixed","flashy","flawed","flawless","flickering","flimsy","flowery","fluffy","flustered","focused","fond","foolhardy","foolish","forceful","formal","forsaken","fortunate","fragrant","frail","frank","free","french","frequent","friendly","frightened","frilly","frivolous","frizzy","front","frozen","frugal","fruitful","functional","funny","fussy","fuzzy","gaseous","general","gentle","genuine","gifted","gigantic","giving","glaring","glass","gleaming","glittering","gloomy","glorious","glossy","glum","golden","good","good-natured","gorgeous","graceful","gracious","grandiose","granular","grave","gray","great","greedy","grim","grimy","gripping","grizzled","grouchy","grounded","growing","grown","grubby","gruesome","grumpy","guilty","gullible","gummy","hairy","handsome","handy","happy","happy-go-lucky","hard-to-find","harmful","hasty","hateful","haunting","heartfelt","heavenly","heavy","hefty","helpful","helpless","hidden","hoarse","hollow","homely","honorable","honored","hopeful","hospitable","hot","huge","humble","humiliating","hungry","hurtful","husky","icy","ideal","idealistic","idolized","ignorant","ill","ill-fated","illiterate","illustrious","imaginary","imaginative","immaculate","immediate","immense","impartial","impassioned","impeccable","impish","impolite","important","impossible","impractical","impressionable","impressive","improbable","impure","inborn","incomparable","incomplete","inconsequential","indelible","indolent","inexperienced","infamous","infatuated","inferior","infinite","informal","innocent","insecure","insidious","insignificant","insistent","instructive","intelligent","intent","interesting","internal","international","intrepid","ironclad","irresponsible","jagged","jam-packed","jaunty","jealous","jittery","joyful","joyous","jubilant","judicious","juicy","jumbo","junior","juvenile","kaleidoscopic","key","knotty","knowledgeable","known","kooky","kosher","lanky","last","lasting","late","lavish","lawful","lazy","leading","lean","left","legal","light","lighthearted","likable","likely","limited","limp","limping","linear","lined","liquid","little","live","lively","livid","lone","lonely","long","long-term","lost","lovable","lovely","low","lucky","lumbering","lumpy","lustrous","mad","made-up","magnificent","majestic","major","male","mammoth","married","marvelous","massive","mature","meager","mealy","mean","measly","meaty","mediocre","medium","memorable","menacing","merry","messy","metallic","mild","milky","mindless","minor","minty","miserable","miserly","misguided","mixed","moist","monstrous","monthly","monumental","moral","motionless","muddy","muffled","multicolored","mundane","murky","mushy","musty","muted","mysterious","narrow","natural","naughty","nautical","near","neat","necessary","needy","negative","neglected","negligible","neighboring","nervous","new","next","nice","nifty","nimble","nippy","nocturnal","normal","noted","noteworthy","noxious","numb","nutritious","obedient","oblong","obvious","odd","oddball","official","oily","old","old-fashioned","only","optimal","optimistic","orange","orderly","ordinary","ornate","ornery","other","our","outgoing","outlandish","outlying","outrageous","outstanding","oval","overcooked","overdue","palatable","pale","paltry","parallel","parched","partial","passionate","pastel","peaceful","peppery","perfumed","perky","personal","pertinent","pessimistic","petty","phony","physical","pink","pitiful","plain","pleasant","pleased","pleasing","plump","pointed","pointless","polished","polite","political","poor","portly","posh","possible","potable","powerful","powerless","practical","precious","present","prestigious","pretty","pricey","prickly","primary","prime","private","probable","productive","profitable","profuse","proper","proud","prudent","punctual","puny","pure","purple","pushy","putrid","puzzled","qualified","quarrelsome","quarterly","queasy","querulous","questionable","quick","quick-witted","quiet","quintessential","quixotic","radiant","ragged","rapid","rare","raw","realistic","reasonable","recent","reckless","rectangular","red","reflecting","regal","regular","remarkable","remorseful","repentant","respectful","responsible","rewarding","rich","right","rigid","ripe","roasted","robust","rosy","rotating","rotten","rough","round","rowdy","royal","rubbery","ruddy","rundown","runny","rural","rusty","sad","salty","same","sandy","sarcastic","sardonic","scaly","scared","scary","scented","scientific","scornful","scratchy","second","second-hand","secondary","secret","self-assured","self-reliant","selfish","sentimental","separate","serene","serpentine","severe","shabby","shadowy","shady","shallow","shameful","shameless","shimmering","shiny","shocked","shoddy","short","short-term","showy","shrill","shy","sick","silent","silky","silver","similar","simple","simplistic","sinful","sizzling","skeletal","sleepy","slight","slimy","slow","slushy","small","smart","smoggy","smooth","smug","snappy","snarling","sneaky","sniveling","snoopy","sociable","soft","soggy","somber","some","sophisticated","sore","sorrowful","soulful","soupy","sour","spanish","sparkling","sparse","specific","speedy","spherical","spiffy","spirited","spiteful","splendid","spotless","square","squeaky","squiggly","stable","staid","stained","stale","standard","stark","steel","steep","sticky","stiff","stingy","stormy","straight","strange","strict","strident","striking","strong","stunning","stupendous","sturdy","stylish","subdued","submissive","substantial","subtle","suburban","sudden","sugary","sunny","super","superb","superficial","superior","supportive","sure-footed","surprised","svelte","sweet","swift","talkative","tall","tame","tangible","tasty","tattered","taut","tedious","teeming","tempting","tender","tense","tepid","terrible","that","these","thick","thin","thorny","thorough","those","thrifty","tidy","tight","timely","tinted","tiny","tired","torn","total","tough","tragic","trained","triangular","tricky","trim","trivial","troubled","true","trusting","trustworthy","trusty","turbulent","twin","ugly","ultimate","unaware","uncomfortable","uncommon","unconscious","understated","uneven","unfinished","unfit","unfortunate","unhappy","unhealthy","uniform","unimportant","unique","unkempt","unknown","unlawful","unlined","unlucky","unpleasant","unrealistic","unripe","unruly","unselfish","unsightly","unsteady","unsung","untidy","untimely","untried","untrue","unused","unusual","unwelcome","unwieldy","unwilling","unwritten","upbeat","upright","upset","urban","usable","useless","utilized","utter","vague","vain","valuable","variable","vast","velvety","vengeful","vibrant","victorious","violent","vivacious","vivid","voluminous","warlike","warm","warmhearted","warped","wasteful","waterlogged","watery","wavy","wealthy","weary","webbed","wee","weekly","weighty","weird","well-documented","well-groomed","well-lit","well-made","well-off","well-to-do","well-worn","which","whimsical","whirlwind","whispered","white","whole","whopping","wicked","wide","wide-eyed","wiggly","willing","wilted","winding","windy","winged","wise","witty","wobbly","woeful","wonderful","wordy","worldly","worse","worst","worthless","worthwhile","worthy","wrathful","wretched","writhing","wrong","wry","yearly","yellow","yellowish","young","youthful","yummy","zany","zealous","zesty"],adverb:["abnormally","absentmindedly","accidentally","acidly","actually","adventurously","afterwards","almost","always","angrily","annually","anxiously","arrogantly","awkwardly","badly","bashfully","beautifully","bitterly","bleakly","blindly","blissfully","boastfully","boldly","bravely","briefly","brightly","briskly","broadly","busily","calmly","carefully","carelessly","cautiously","certainly","cheerfully","clearly","cleverly","closely","coaxingly","colorfully","commonly","continually","coolly","correctly","courageously","crossly","cruelly","curiously","daily","daintily","dearly","deceivingly","deeply","defiantly","deliberately","delightfully","diligently","dimly","doubtfully","dreamily","easily","elegantly","energetically","enormously","enthusiastically","equally","especially","even","evenly","eventually","exactly","excitedly","extremely","fairly","faithfully","famously","far","fast","fatally","ferociously","fervently","fiercely","fondly","foolishly","fortunately","frankly","frantically","freely","frenetically","frightfully","fully","furiously","generally","generously","gently","gladly","gleefully","gracefully","gratefully","greatly","greedily","happily","hastily","healthily","heavily","helpfully","helplessly","highly","honestly","hopelessly","hourly","hungrily","immediately","innocently","inquisitively","instantly","intensely","intently","interestingly","inwardly","irritably","jaggedly","jealously","joshingly","jovially","joyfully","joyously","jubilantly","judgementally","justly","keenly","kiddingly","kindheartedly","kindly","kissingly","knavishly","knottily","knowingly","knowledgeably","kookily","lazily","less","lightly","likely","limply","lively","loftily","longingly","loosely","loudly","lovingly","loyally","madly","majestically","meaningfully","mechanically","merrily","miserably","mockingly","monthly","more","mortally","mostly","mysteriously","naturally","nearly","neatly","needily","nervously","never","nicely","noisily","not","obediently","obnoxiously","oddly","offensively","officially","often","only","openly","optimistically","overconfidently","owlishly","painfully","partially","patiently","perfectly","physically","playfully","politely","poorly","positively","potentially","powerfully","promptly","properly","punctually","quaintly","quarrelsomely","queasily","questionably","questioningly","quicker","quickly","quietly","quirkily","quizzically","rapidly","rarely","readily","really","reassuringly","recklessly","regularly","reluctantly","repeatedly","reproachfully","restfully","righteously","rightfully","rigidly","roughly","rudely","sadly","safely","scarcely","scarily","searchingly","sedately","seemingly","seldom","selfishly","separately","seriously","shakily","sharply","sheepishly","shrilly","shyly","silently","sleepily","slowly","smoothly","softly","solemnly","solidly","sometimes","soon","speedily","stealthily","sternly","strictly","successfully","suddenly","surprisingly","suspiciously","sweetly","swiftly","sympathetically","tenderly","tensely","terribly","thankfully","thoroughly","thoughtfully","tightly","tomorrow","too","tremendously","triumphantly","truly","truthfully","ultimately","unabashedly","unaccountably","unbearably","unethically","unexpectedly","unfortunately","unimpressively","unnaturally","unnecessarily","upbeat","upliftingly","upright","upside-down","upward","upwardly","urgently","usefully","uselessly","usually","utterly","vacantly","vaguely","vainly","valiantly","vastly","verbally","very","viciously","victoriously","violently","vivaciously","voluntarily","warmly","weakly","wearily","well","wetly","wholly","wildly","willfully","wisely","woefully","wonderfully","worriedly","wrongly","yawningly","yearly","yearningly","yesterday","yieldingly","youthfully"],conjunction:["after","although","and","as","because","before","but","consequently","even","finally","for","furthermore","hence","how","however","if","inasmuch","incidentally","indeed","instead","lest","likewise","meanwhile","nor","now","once","or","provided","since","so","supposing","than","that","though","till","unless","until","what","when","whenever","where","whereas","wherever","whether","which","while","who","whoever","whose","why","yet"],interjection:["yuck","oh","phooey","blah","boo","whoa","yowza","huzzah","boohoo","fooey","geez","pfft","ew","ah","yum","brr","hm","yahoo","aha","woot","drat","gah","meh","psst","aw","ugh","yippee","eek","gee","bah","gadzooks","duh","ha","mmm","ouch","phew","ack","uh-huh","gosh","hmph","pish","zowie","er","ick","oof","um"],noun:["CD","SUV","abacus","academics","accelerator","accompanist","account","accountability","acquaintance","ad","adaptation","address","adrenalin","adult","advancement","advertisement","adviser","affect","affiliate","aftermath","agreement","airbus","aircraft","airline","airmail","airman","airport","alb","alert","allegation","alliance","alligator","allocation","almighty","amendment","amnesty","analogy","angle","annual","antelope","anticodon","apparatus","appliance","approach","apricot","arcade","archaeology","armchair","armoire","asset","assist","atrium","attraction","availability","avalanche","awareness","babushka","backbone","backburn","bakeware","bandwidth","bar","barge","baritone","barracks","baseboard","basket","bathhouse","bathrobe","battle","begonia","behest","bell","bench","bend","beret","best-seller","bid","bidet","bin","birdbath","birdcage","birth","blight","blossom","blowgun","bob","bog","bonfire","bonnet","bookcase","bookend","boulevard","bourgeoisie","bowler","bowling","boyfriend","brace","bracelet","bran","breastplate","brief","brochure","brook","brush","bug","bump","bungalow","cafe","cake","calculus","cannon","cantaloupe","cap","cappelletti","captain","caption","carboxyl","cardboard","carnival","case","casement","cash","casket","cassava","castanet","catalyst","cauliflower","cellar","celsius","cemetery","ceramic","ceramics","certification","chainstay","chairperson","challenge","championship","chap","chapel","character","characterization","charlatan","charm","chasuble","cheese","cheetah","chiffonier","chops","chow","cinder","cinema","circumference","citizen","clamp","clavicle","cleaner","climb","co-producer","coal","coast","cod","coil","coin","coliseum","collaboration","collectivization","colon","colonialism","comestible","commercial","commodity","community","comparison","completion","complication","compromise","concentration","configuration","confusion","conservation","conservative","consistency","contractor","contrail","convection","conversation","cook","coordination","cop-out","cope","cork","cornet","corporation","corral","cosset","costume","couch","council","councilman","countess","courtroom","cow","creator","creature","crest","cricket","crocodile","cross-contamination","cruelty","cuckoo","curl","custody","custom","cutlet","cutover","cycle","daddy","dandelion","dash","daughter","dead","decision","deck","declaration","decongestant","decryption","deduction","deed","deer","defendant","density","department","dependency","deployment","depot","derby","descendant","descent","design","designation","desk","detective","devastation","developing","developmental","devil","diagram","digestive","digit","dime","director","disadvantage","disappointment","disclosure","disconnection","discourse","dish","disk","disposer","distinction","diver","diversity","dividend","divine","doing","doorpost","doubter","draft","draw","dream","dredger","dress","drive","drug","duffel","dulcimer","dusk","duster","dwell","e-mail","earth","ecliptic","ectoderm","edge","editor","effector","eggplant","electronics","elevation","elevator","elver","embarrassment","embossing","emergent","encouragement","entry","epic","equal","essence","eternity","ethyl","euphonium","event","exasperation","excess","executor","exhaust","expansion","expense","experience","exploration","extension","extent","exterior","eyebrow","eyeliner","farm","farmer","fat","fax","feather","fedora","fellow","fen","fencing","ferret","festival","fibre","filter","final","finding","finer","finger","fireplace","fisherman","fishery","fit","flame","flat","fledgling","flight","flint","flood","flu","fog","fold","folklore","follower","following","foodstuffs","footrest","forage","forager","forgery","fork","formamide","formation","formula","fort","fowl","fraudster","freckle","freezing","freight","fuel","fun","fund","fundraising","futon","gallery","galoshes","gastropod","gazebo","gerbil","ghost","giant","gift","giggle","glider","gloom","goat","godfather","godparent","going","goodwill","governance","government","gown","gradient","graffiti","grandpa","grandson","granny","grass","gray","gripper","grouper","guacamole","guard","guidance","guide","gym","gymnast","habit","haircut","halt","hamburger","hammock","handful","handle","handover","harp","haversack","hawk","heartache","heartbeat","heating","hello","help","hepatitis","heroine","hexagon","hierarchy","hippodrome","honesty","hoof","hope","horde","hornet","horst","hose","hospitalization","hovel","hovercraft","hubris","humidity","humor","hundred","hunger","hunt","husband","hutch","hydrant","hydrocarbon","hydrolyse","hydrolyze","hyena","hygienic","hyphenation","ice-cream","icebreaker","igloo","ignorance","illusion","impact","import","importance","impostor","in-joke","incandescence","independence","individual","information","injunction","innovation","insolence","inspection","instance","institute","instruction","instructor","integer","intellect","intent","interchange","interior","intervention","interviewer","invite","iridescence","issue","jacket","jazz","jellyfish","jet","jogging","joy","juggernaut","jump","jungle","junior","jury","kettledrum","kick","kielbasa","kinase","king","kiss","kit","knickers","knight","knitting","knuckle","label","labourer","lace","lady","lamp","language","larva","lashes","laughter","lava","lawmaker","lay","leading","league","legend","legging","legislature","lender","license","lid","lieu","lifestyle","lift","linseed","litter","loaf","lobster","longboat","lotion","lounge","louse","lox","loyalty","luck","lyre","maestro","mainstream","maintainer","majority","makeover","making","mallard","management","manner","mantua","marathon","march","marimba","marketplace","marksman","markup","marten","massage","masterpiece","mathematics","meadow","meal","meander","meatloaf","mechanic","median","membership","mentor","merit","metabolite","metal","middle","midwife","milestone","millet","minion","minister","minor","minority","mixture","mobility","molasses","mom","moment","monasticism","monocle","monster","morbidity","morning","mortise","mountain","mouser","mousse","mozzarella","muscat","mythology","napkin","necklace","nectarine","negotiation","nephew","nerve","netsuke","newsletter","newsprint","newsstand","nightlife","noon","nougat","nucleotidase","nudge","numeracy","numeric","nun","obedience","obesity","object","obligation","ocelot","octave","offset","oil","omelet","onset","opera","operating","optimal","orchid","order","ostrich","other","outlaw","outrun","outset","overcoat","overheard","overload","ownership","pacemaker","packaging","paintwork","palate","pants","pantyhose","papa","parade","parsnip","partridge","passport","pasta","patroller","pear","pearl","pecan","pendant","peninsula","pension","peony","pepper","perfection","permafrost","perp","petal","petticoat","pharmacopoeia","phrase","pick","piglet","pigpen","pigsty","pile","pillbox","pillow","pilot","pine","pinstripe","place","plain","planula","plastic","platter","platypus","pleasure","pliers","plugin","plumber","pneumonia","pocket-watch","poetry","polarisation","polyester","pomelo","pop","poppy","popularity","populist","porter","possession","postbox","precedent","premeditation","premier","premise","premium","pressure","presume","priesthood","printer","privilege","procurement","produce","programme","prohibition","promise","pronoun","providence","provider","provision","publication","publicity","pulse","punctuation","pupil","puppet","puritan","quart","quinoa","quit","railway","range","rationale","ravioli","rawhide","reach","reasoning","reboot","receptor","recommendation","reconsideration","recovery","redesign","relative","release","remark","reorganisation","repeat","replacement","reporter","representation","republican","request","requirement","reservation","resolve","resource","responsibility","restaurant","retention","retrospectivity","reward","ribbon","rim","riser","roadway","role","rosemary","roundabout","rubric","ruin","rule","runway","rust","safe","sailor","saloon","sand","sandbar","sanity","sarong","sauerkraut","saw","scaffold","scale","scarification","scenario","schedule","schnitzel","scholarship","scorn","scorpion","scout","scrap","scratch","seafood","seagull","seal","season","secrecy","secret","section","sediment","self-confidence","sermon","sesame","settler","shadowbox","shark","shipper","shore","shoulder","sideboard","siege","sightseeing","signature","silk","simple","singing","skean","skeleton","skyline","skyscraper","slide","slime","slipper","smog","smoke","sock","soliloquy","solution","solvency","someplace","sonar","sonata","sonnet","soup","soybean","space","spear","spirit","spork","sport","spring","sprinkles","squid","stall","starboard","statue","status","stay","steak","steeple","step","step-mother","sticker","stir-fry","stitcher","stock","stool","story","strait","stranger","strategy","straw","stump","subexpression","submitter","subsidy","substitution","suitcase","summary","summer","sunbeam","sundae","supplier","surface","sushi","suspension","sustenance","swanling","swath","sweatshop","swim","swine","swing","switch","switchboard","swordfish","synergy","t-shirt","tabletop","tackle","tail","tapioca","taro","tarragon","taxicab","teammate","technician","technologist","tectonics","tenant","tenement","tennis","tentacle","teriyaki","term","testimonial","testing","thigh","thongs","thorn","thread","thunderbolt","thyme","tinderbox","toaster","tomatillo","tomb","tomography","tool","tooth","toothbrush","toothpick","topsail","traditionalism","traffic","translation","transom","transparency","trash","travel","tray","trench","tribe","tributary","trick","trolley","tuba","tuber","tune-up","turret","tusk","tuxedo","typeface","typewriter","unblinking","underneath","underpants","understanding","unibody","unique","unit","utilization","valentine","validity","valley","valuable","vanadyl","vein","velocity","venom","version","verve","vestment","veto","viability","vibraphone","vibration","vicinity","video","violin","vision","vista","vol","volleyball","wafer","waist","wallaby","warming","wasabi","waterspout","wear","wedding","whack","whale","wheel","widow","wilderness","willow","window","wombat","word","worth","wriggler","yak","yarmulke","yeast","yin","yogurt","zebra","zen"],preposition:["a","abaft","aboard","about","above","absent","across","afore","after","against","along","alongside","amid","amidst","among","amongst","an","anenst","anti","apropos","apud","around","as","aside","astride","at","athwart","atop","barring","before","behind","below","beneath","beside","besides","between","beyond","but","by","circa","concerning","considering","despite","down","during","except","excepting","excluding","failing","following","for","forenenst","from","given","in","including","inside","into","lest","like","mid","midst","minus","modulo","near","next","notwithstanding","of","off","on","onto","opposite","out","outside","over","pace","past","per","plus","pro","qua","regarding","round","sans","save","since","than","the","through","throughout","till","times","to","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","via","vice","with","within","without","worth"],verb:["abnegate","abscond","abseil","absolve","accentuate","accept","access","accessorise","accompany","account","accredit","achieve","acknowledge","acquire","adjourn","adjudge","admonish","adumbrate","advocate","afford","airbrush","ameliorate","amend","amount","anaesthetise","analyse","anesthetize","anneal","annex","antagonize","ape","apologise","apostrophize","appertain","appreciate","appropriate","approximate","arbitrate","archive","arraign","arrange","ascertain","ascribe","assail","atomize","attend","attest","attribute","augment","avow","axe","baa","banish","bank","baptise","battle","beard","beep","behold","belabor","bemuse","besmirch","bestride","better","bewail","bicycle","bide","bind","biodegrade","blacken","blaspheme","bleach","blend","blink","bliss","bloom","bludgeon","bobble","boggle","bolster","book","boom","bootleg","border","bore","boss","braid","brand","brandish","break","breed","broadcast","broadside","brood","browse","buck","burgeon","bus","butter","buzzing","camouflage","cannibalise","canter","cap","capitalise","capitalize","capsize","card","carouse","carp","carpool","catalog","catalyze","catch","categorise","cease","celebrate","censor","certify","char","charter","chase","chatter","chime","chip","christen","chromakey","chunder","chunter","cinch","circle","circulate","circumnavigate","clamor","clamour","claw","cleave","clinch","clinking","clone","clonk","coagulate","coexist","coincide","collaborate","colligate","colorize","colour","comb","come","commandeer","commemorate","communicate","compete","conceal","conceptualize","conclude","concrete","condense","cone","confide","confirm","confiscate","confound","confute","congregate","conjecture","connect","consign","construe","contradict","contrast","contravene","controvert","convalesce","converse","convince","convoke","coop","cop","corner","covenant","cow","crackle","cram","crank","creak","creaking","cripple","croon","cross","crumble","crystallize","culminate","culture","curry","curse","customise","cycle","dally","dampen","darn","debit","debut","decide","decode","decouple","decriminalize","deduce","deduct","deflate","deflect","deform","defrag","degenerate","degrease","delete","delight","deliquesce","demob","demobilise","democratize","demonstrate","denitrify","deny","depart","depend","deplore","deploy","deprave","depute","dereference","describe","desecrate","deselect","destock","detain","develop","devise","dial","dicker","digitize","dilate","disapprove","disarm","disbar","discontinue","disgorge","dishearten","dishonor","disinherit","dislocate","dispense","display","dispose","disrespect","dissemble","ditch","divert","dock","doodle","downchange","downshift","dowse","draft","drag","drain","dramatize","drowse","drum","dwell","economise","edge","efface","egg","eke","electrify","embalm","embed","embody","emboss","emerge","emphasise","emphasize","emulsify","encode","endow","enfold","engage","engender","enhance","enlist","enrage","enrich","enroll","entice","entomb","entrench","entwine","equate","essay","etch","eulogise","even","evince","exacerbate","exaggerate","exalt","exempt","exonerate","expatiate","explode","expostulate","extract","extricate","eyeglasses","fabricate","facilitate","factorise","factorize","fail","fall","familiarize","fashion","father","fathom","fax","federate","feminize","fence","fess","fictionalize","fiddle","fidget","fill","flash","fleck","flight","floodlight","floss","fluctuate","fluff","fly","focalise","foot","forearm","forecast","foretell","forgather","forgo","fork","form","forswear","founder","fraternise","fray","frizz","fumigate","function","furlough","fuss","gad","gallivant","galvanize","gape","garage","garrote","gasp","gestate","give","glimmer","glisten","gloat","gloss","glow","gnash","gnaw","goose","govern","grade","graduate","graft","grok","guest","guilt","gulp","gum","gurn","gust","gut","guzzle","ham","harangue","harvest","hassle","haul","haze","headline","hearten","heighten","highlight","hoick","hold","hole","hollow","holster","home","homeschool","hoot","horn","horse","hotfoot","house","hover","howl","huddle","huff","hunger","hunt","husk","hype","hypothesise","hypothesize","idle","ignite","imagineer","impact","impanel","implode","incinerate","incline","inculcate","industrialize","ingratiate","inhibit","inject","innovate","inscribe","insert","insist","inspect","institute","institutionalize","intend","intermarry","intermesh","intermix","internalise","internalize","internationalize","intrigue","inure","inveigle","inventory","investigate","irk","iterate","jaywalk","jell","jeopardise","jiggle","jive","joint","jot","jut","keel","knife","knit","know","kowtow","lack","lampoon","large","leap","lecture","legitimize","lend","libel","liberalize","license","ligate","list","lobotomise","lock","log","loose","low","lowball","machine","magnetize","major","make","malfunction","manage","manipulate","maroon","masculinize","mash","mask","masquerade","massage","masticate","materialise","matter","maul","memorise","merge","mesh","metabolise","microblog","microchip","micromanage","militate","mill","minister","minor","misappropriate","miscalculate","misfire","misjudge","miskey","mismatch","mispronounce","misread","misreport","misspend","mob","mobilise","mobilize","moisten","mooch","moor","moralise","mortar","mosh","mothball","motivate","motor","mould","mount","muddy","mummify","mutate","mystify","nab","narrate","narrowcast","nasalise","nauseate","navigate","neaten","neck","neglect","norm","notarize","object","obscure","observe","obsess","obstruct","obtrude","offend","offset","option","orchestrate","orient","orientate","outbid","outdo","outfit","outflank","outfox","outnumber","outrank","outrun","outsource","overburden","overcharge","overcook","overdub","overfeed","overload","overplay","overproduce","overreact","override","overspend","overstay","overtrain","overvalue","overwork","own","oxidise","oxidize","oxygenate","pace","pack","pale","pant","paralyse","parody","part","pause","pave","penalise","persecute","personalise","perspire","pertain","peter","pike","pillory","pinion","pip","pity","pivot","pixellate","plagiarise","plait","plan","please","pluck","ponder","popularize","portray","prance","preclude","preheat","prejudge","preregister","presell","preside","pretend","print","prioritize","probate","probe","proceed","procrastinate","profane","progress","proliferate","proofread","propound","proselytise","provision","pry","publicize","puff","pull","pulp","pulverize","purse","put","putrefy","quadruple","quaff","quantify","quarrel","quash","quaver","question","quiet","quintuple","quip","quit","rag","rally","ramp","randomize","rationalise","rationalize","ravage","ravel","react","readies","readjust","readmit","ready","reapply","rear","reassemble","rebel","reboot","reborn","rebound","rebuff","rebuild","rebuke","recede","reckon","reclassify","recompense","reconstitute","record","recount","redact","redevelop","redound","redraw","redress","reel","refer","reference","refine","reflate","refute","regulate","reiterate","rejigger","rejoin","rekindle","relaunch","relieve","remand","remark","reopen","reorient","replicate","repossess","represent","reprimand","reproach","reprove","repurpose","requite","reschedule","resort","respray","restructure","retool","retract","revere","revitalise","revoke","reword","rewrite","ride","ridge","rim","ring","rise","rival","roger","rosin","rot","rout","row","rue","rule","safeguard","sashay","sate","satirise","satirize","satisfy","saturate","savour","scale","scamper","scar","scare","scarper","scent","schematise","scheme","schlep","scoff","scoop","scope","scotch","scowl","scrabble","scram","scramble","scrape","screw","scruple","scrutinise","scuffle","scuttle","search","secularize","see","segregate","sell","sense","sensitize","sequester","serenade","serialize","serve","service","settle","sew","shaft","sham","shampoo","shanghai","shear","sheathe","shell","shinny","shirk","shoot","shoulder","shout","shovel","showboat","shred","shrill","shudder","shush","sidetrack","sign","silt","sin","singe","sit","sizzle","skateboard","ski","slake","slap","slather","sleet","slink","slip","slope","slump","smarten","smuggle","snack","sneak","sniff","snoop","snow","snowplow","snuggle","soap","solace","solder","solicit","source","spark","spattering","spectacles","spectate","spellcheck","spew","spice","spirit","splash","splay","split","splosh","splurge","spook","square","squirm","stabilise","stable","stack","stage","stake","starch","state","statement","stiffen","stigmatize","sting","stint","stoop","store","storyboard","stratify","structure","stuff","stunt","substantiate","subtract","suckle","suffice","suffocate","summarise","sun","sunbathe","sunder","sup","surge","surprise","swat","swathe","sway","swear","swelter","swerve","swill","swing","symbolise","synthesise","syringe","table","tabulate","tag","tame","tank","tankful","tarry","task","taxicab","team","telescope","tenant","terraform","terrorise","testify","think","throbbing","thump","tighten","toady","toe","tough","tousle","traduce","train","transcend","transplant","trash","treasure","treble","trek","trial","tromp","trouser","trust","tune","tut","twine","twist","typify","unbalance","uncork","uncover","underachieve","undergo","underplay","unearth","unfreeze","unfurl","unlearn","unscramble","unzip","uproot","upsell","usher","vacation","vamoose","vanish","vary","veg","venture","verify","vet","veto","volunteer","vulgarise","waft","wallop","waltz","warp","wash","waver","weary","weatherize","wedge","weep","weight","welcome","westernise","westernize","while","whine","whisper","whistle","whitewash","whup","wilt","wing","wire","wisecrack","wolf","wound","wring","writ","yak","yawn","yearn","yuppify"]}},ww=class extends Error{};var Cw=class{constructor(e){this.faker=e,function(e){let t=Object.getPrototypeOf(e);do{for(let r of Object.getOwnPropertyNames(t))"function"==typeof e[r]&&"constructor"!==r&&(e[r]=e[r].bind(e));t=Object.getPrototypeOf(t)}while(t!==Object.prototype)}(this)}},_w=class extends Cw{constructor(e){super(e),this.faker=e}},Sw=(e=>(e.Narrowbody="narrowbody",e.Regional="regional",e.Widebody="widebody",e))(Sw||{}),Aw=["0","1","2","3","4","5","6","7","8","9"],Mw=["0","O","1","I","L"],Tw={regional:20,narrowbody:35,widebody:60},Bw={regional:["A","B","C","D"],narrowbody:["A","B","C","D","E","F"],widebody:["A","B","C","D","E","F","G","H","J","K"]},Lw=class extends _w{airport(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airport)}airline(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airline)}airplane(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airplane)}recordLocator(e={}){let{allowNumerics:t=!1,allowVisuallySimilarCharacters:r=!1}=e,a=[];return t||a.push(...Aw),r||a.push(...Mw),this.faker.string.alphanumeric({length:6,casing:"upper",exclude:a})}seat(e={}){let{aircraftType:t="narrowbody"}=e,r=Tw[t],a=Bw[t];return`${this.faker.number.int({min:1,max:r})}${this.faker.helpers.arrayElement(a)}`}aircraftType(){return this.faker.helpers.enumValue(Sw)}flightNumber(e={}){let{length:t={min:1,max:4},addLeadingZeros:r=!1}=e,a=this.faker.string.numeric({length:t,allowLeadingZeros:!1});return r?a.padStart(4,"0"):a}},Ew=(e=>(e.SRGB="sRGB",e.DisplayP3="display-p3",e.REC2020="rec2020",e.A98RGB="a98-rgb",e.ProphotoRGB="prophoto-rgb",e))(Ew||{}),Rw=(e=>(e.RGB="rgb",e.RGBA="rgba",e.HSL="hsl",e.HSLA="hsla",e.HWB="hwb",e.CMYK="cmyk",e.LAB="lab",e.LCH="lch",e.COLOR="color",e))(Rw||{});function Hw(e){return e.map((e=>{if(e%1!=0){let t=new ArrayBuffer(4);return new DataView(t).setFloat32(0,e),Hw([...new Uint8Array(t)]).replaceAll(" ","")}return(e>>>0).toString(2).padStart(8,"0")})).join(" ")}function Dw(e,t,r="rgb",a="sRGB"){switch(t){case"css":return function(e,t="rgb",r="sRGB"){let a=e=>Math.round(100*e);switch(t){case"rgba":return`rgba(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]})`;case"color":return`color(${r} ${e[0]} ${e[1]} ${e[2]})`;case"cmyk":return`cmyk(${a(e[0])}%, ${a(e[1])}%, ${a(e[2])}%, ${a(e[3])}%)`;case"hsl":return`hsl(${e[0]}deg ${a(e[1])}% ${a(e[2])}%)`;case"hsla":return`hsl(${e[0]}deg ${a(e[1])}% ${a(e[2])}% / ${a(e[3])})`;case"hwb":return`hwb(${e[0]} ${a(e[1])}% ${a(e[2])}%)`;case"lab":return`lab(${a(e[0])}% ${e[1]} ${e[2]})`;case"lch":return`lch(${a(e[0])}% ${e[1]} ${e[2]})`;case"rgb":return`rgb(${e[0]}, ${e[1]}, ${e[2]})`}}(e,r,a);case"binary":return Hw(e);case"decimal":return e}}var Pw=class extends _w{human(){return this.faker.helpers.arrayElement(this.faker.definitions.color.human)}space(){return this.faker.helpers.arrayElement(this.faker.definitions.color.space)}cssSupportedFunction(){return this.faker.helpers.enumValue(Rw)}cssSupportedSpace(){return this.faker.helpers.enumValue(Ew)}rgb(e={}){let t,{format:r="hex",includeAlpha:a=!1,prefix:i="#",casing:n="lower"}=e,o="rgb";return"hex"===r?(t=this.faker.string.hexadecimal({length:a?8:6,prefix:""}),t=function(e,t){let{prefix:r,casing:a}=t;switch(a){case"upper":e=e.toUpperCase();break;case"lower":e=e.toLowerCase()}return r&&(e=r+e),e}(t,{prefix:i,casing:n}),t):(t=Array.from({length:3},(()=>this.faker.number.int(255))),a&&(t.push(this.faker.number.float({multipleOf:.01})),o="rgba"),Dw(t,r,o))}cmyk(e={}){let{format:t="decimal"}=e;return Dw(Array.from({length:4},(()=>this.faker.number.float({multipleOf:.01}))),t,"cmyk")}hsl(e={}){let{format:t="decimal",includeAlpha:r=!1}=e,a=[this.faker.number.int(360)];for(let t=0;t<(e?.includeAlpha?3:2);t++)a.push(this.faker.number.float({multipleOf:.01}));return Dw(a,t,r?"hsla":"hsl")}hwb(e={}){let{format:t="decimal"}=e,r=[this.faker.number.int(360)];for(let e=0;e<2;e++)r.push(this.faker.number.float({multipleOf:.01}));return Dw(r,t,"hwb")}lab(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let e=0;e<2;e++)r.push(this.faker.number.float({min:-100,max:100,multipleOf:1e-4}));return Dw(r,t,"lab")}lch(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let e=0;e<2;e++)r.push(this.faker.number.float({max:230,multipleOf:.1}));return Dw(r,t,"lch")}colorByCSSColorSpace(e={}){let{format:t="decimal",space:r="sRGB"}=e;return Dw(Array.from({length:3},(()=>this.faker.number.float({multipleOf:1e-4}))),t,"color",r)}},Nw=(e=>(e.Legacy="legacy",e.Segwit="segwit",e.Bech32="bech32",e.Taproot="taproot",e))(Nw||{}),Gw=(e=>(e.Mainnet="mainnet",e.Testnet="testnet",e))(Gw||{}),Iw={legacy:{prefix:{mainnet:"1",testnet:"m"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},segwit:{prefix:{mainnet:"3",testnet:"2"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},bech32:{prefix:{mainnet:"bc1",testnet:"tb1"},length:{min:42,max:42},casing:"lower",exclude:"1bBiIoO"},taproot:{prefix:{mainnet:"bc1p",testnet:"tb1p"},length:{min:62,max:62},casing:"lower",exclude:"1bBiIoO"}},Ww=(e=>(e.Female="female",e.Male="male",e))(Ww||{});function Fw(e,t,r){let{generic:a,female:i,male:n}=r;switch(t){case"female":return i??a;case"male":return n??a;default:return a??e.helpers.arrayElement([i,n])??[]}}var zw=class extends _w{firstName(e){return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.first_name))}lastName(e){if(null!=this.faker.rawDefinitions.person?.last_name_pattern){let t=this.faker.helpers.weightedArrayElement(Fw(this.faker,e,this.faker.rawDefinitions.person.last_name_pattern));return this.faker.helpers.fake(t)}return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.last_name))}middleName(e){return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.middle_name))}fullName(e={}){let{sex:t=this.faker.helpers.arrayElement(["female","male"]),firstName:r=this.firstName(t),lastName:a=this.lastName(t)}=e,i=this.faker.helpers.weightedArrayElement(this.faker.definitions.person.name);return this.faker.helpers.mustache(i,{"person.prefix":()=>this.prefix(t),"person.firstName":()=>r,"person.middleName":()=>this.middleName(t),"person.lastName":()=>a,"person.suffix":()=>this.suffix()})}gender(){return this.faker.helpers.arrayElement(this.faker.definitions.person.gender)}sex(){return this.faker.helpers.arrayElement(this.faker.definitions.person.sex)}sexType(){return this.faker.helpers.enumValue(Ww)}bio(){let{bio_pattern:e}=this.faker.definitions.person;return this.faker.helpers.fake(e)}prefix(e){return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.prefix))}suffix(){return this.faker.helpers.arrayElement(this.faker.definitions.person.suffix)}jobTitle(){return this.faker.helpers.fake(this.faker.definitions.person.job_title_pattern)}jobDescriptor(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_descriptor)}jobArea(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_area)}jobType(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_type)}zodiacSign(){return this.faker.helpers.arrayElement(this.faker.definitions.person.western_zodiac_sign)}},Ow=class{N=624;M=397;MATRIX_A=2567483615;UPPER_MASK=2147483648;LOWER_MASK=2147483647;mt=Array.from({length:this.N});mti=this.N+1;unsigned32(e){return e<0?(e^this.UPPER_MASK)+this.UPPER_MASK:e}subtraction32(e,t){return e>>a&1&&(r=this.addition32(r,this.unsigned32(t<>>30)),this.mti),this.mt[this.mti]=this.unsigned32(4294967295&this.mt[this.mti])}initByArray(e,t){this.initGenrand(19650218);let r=1,a=0,i=this.N>t?this.N:t;for(;i;i--)this.mt[r]=this.addition32(this.addition32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1664525)),e[a]),a),this.mt[r]=this.unsigned32(4294967295&this.mt[r]),r++,a++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1),a>=t&&(a=0);for(i=this.N-1;i;i--)this.mt[r]=this.subtraction32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1566083941)),r),this.mt[r]=this.unsigned32(4294967295&this.mt[r]),r++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1);this.mt[0]=2147483648}mag01=[0,this.MATRIX_A];genrandInt32(){let e;if(this.mti>=this.N){let t;for(this.mti===this.N+1&&this.initGenrand(5489),t=0;t>>1^this.mag01[1&e]);for(;t>>1^this.mag01[1&e]);e=this.unsigned32(this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK),this.mt[this.N-1]=this.unsigned32(this.mt[this.M-1]^e>>>1^this.mag01[1&e]),this.mti=0}return e=this.mt[this.mti++],e=this.unsigned32(e^e>>>11),e=this.unsigned32(e^e<<7&2636928640),e=this.unsigned32(e^e<<15&4022730752),e=this.unsigned32(e^e>>>18),e}genrandInt31(){return this.genrandInt32()>>>1}genrandReal1(){return this.genrandInt32()*(1/4294967295)}genrandReal2(){return this.genrandInt32()*(1/4294967296)}genrandReal3(){return(this.genrandInt32()+.5)*(1/4294967296)}genrandRes53(){return(67108864*(this.genrandInt32()>>>5)+(this.genrandInt32()>>>6))*(1/9007199254740992)}};function Kw(){let e=new Ow;return e.initGenrand(Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)),{next:()=>e.genrandRes53(),seed(t){"number"==typeof t?e.initGenrand(t):Array.isArray(t)&&e.initByArray(t,t.length)}}}var Jw=class extends Cw{boolean(e={}){"number"==typeof e&&(e={probability:e});let{probability:t=.5}=e;return!(t<=0)&&(t>=1||this.faker.number.float(){throw new ww("You cannot edit the locale data on the faker instance")};function jw(e){let t={};return new Proxy(e,{has:()=>!0,get:(e,r)=>"symbol"==typeof r||"nodeType"===r?e[r]:r in t?t[r]:t[r]=function(e,t={}){return new Proxy(t,{has:(e,t)=>null!=e[t],get(t,r){let a=t[r];return"symbol"==typeof r||"nodeType"===r||Yw(a,e,r.toString()),a},set:Vw,deleteProperty:Vw})}(r,e[r]),set:Vw,deleteProperty:Vw})}function Yw(e,...t){if(null===e)throw new ww(`The locale data for '${t.join(".")}' aren't applicable to this locale.\n If you think this is a bug, please report it at: https://github.com/faker-js/faker`);if(void 0===e)throw new ww(`The locale data for '${t.join(".")}' are missing in this locale.\n Please contribute the missing data to the project or use a locale/Faker instance that has these data.\n For more information see https://fakerjs.dev/guide/localization.html`)}function $w(e,t="refDate"){let r=new Date(e);if(Number.isNaN(r.valueOf()))throw new ww(`Invalid ${t} date: ${e.toString()}`);return r}var Uw=class extends Cw{anytime(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=$w(t).getTime();return this.between({from:r-31536e6,to:r+31536e6})}past(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Years must be greater than 0.");let a=$w(r).getTime();return this.between({from:a-365*t*24*3600*1e3,to:a-1e3})}future(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Years must be greater than 0.");let a=$w(r).getTime();return this.between({from:a+1e3,to:a+365*t*24*3600*1e3})}between(e){if(null==e||null==e.from||null==e.to)throw new ww("Must pass an options object with `from` and `to` values.");let{from:t,to:r}=e,a=$w(t,"from").getTime(),i=$w(r,"to").getTime();if(a>i)throw new ww("`from` date must be before `to` date.");return new Date(this.faker.number.int({min:a,max:i}))}betweens(e){if(null==e||null==e.from||null==e.to)throw new ww("Must pass an options object with `from` and `to` values.");let{from:t,to:r,count:a=3}=e;return this.faker.helpers.multiple((()=>this.between({from:t,to:r})),{count:a}).sort(((e,t)=>e.getTime()-t.getTime()))}recent(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Days must be greater than 0.");let a=$w(r).getTime();return this.between({from:a-24*t*3600*1e3,to:a-1e3})}soon(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Days must be greater than 0.");let a=$w(r).getTime();return this.between({from:a+1e3,to:a+24*t*3600*1e3})}birthdate(e={}){let{mode:t="age",min:r=18,max:a=80,refDate:i=this.faker.defaultRefDate(),mode:n,min:o,max:c}=e;if([o,c,n].filter((e=>null!=e)).length%3!=0)throw new ww("The 'min', 'max', and 'mode' options must be set together.");let l=$w(i),s=l.getUTCFullYear();switch(t){case"age":{let e=new Date(l).setUTCFullYear(s-a-1)+864e5,t=new Date(l).setUTCFullYear(s-r);if(e>t)throw new ww(`Max age ${a} should be greater than or equal to min age ${r}.`);return this.between({from:e,to:t})}case"year":{let e=new Date(Date.UTC(0,0,2)).setUTCFullYear(r),t=new Date(Date.UTC(0,11,30)).setUTCFullYear(a);if(e>t)throw new ww(`Max year ${a} should be greater than or equal to min year ${r}.`);return this.between({from:e,to:t})}}}},qw=class extends Uw{constructor(e){super(e),this.faker=e}month(e={}){let t,{abbreviated:r=!1,context:a=!1}=e,i=this.faker.definitions.date.month;t=r?a&&null!=i.abbr_context?"abbr_context":"abbr":a&&null!=i.wide_context?"wide_context":"wide";let n=i[t];return Yw(n,"date.month",t),this.faker.helpers.arrayElement(n)}weekday(e={}){let t,{abbreviated:r=!1,context:a=!1}=e,i=this.faker.definitions.date.weekday;t=r?a&&null!=i.abbr_context?"abbr_context":"abbr":a&&null!=i.wide_context?"wide_context":"wide";let n=i[t];return Yw(n,"date.weekday",t),this.faker.helpers.arrayElement(n)}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.date.time_zone)}},Zw=/\.|\(/;function Qw(e,t,r){let[a,i]=function(e){let t=e.indexOf(")",1);if(-1===t)throw new ww(`Missing closing parenthesis in '${e}'`);for(;-1!==t;){let r=e.substring(1,t);try{return[t,JSON.parse(`[${r}]`)]}catch{if(!r.includes("'")&&!r.includes('"'))try{return[t,JSON.parse(`["${r}"]`)]}catch{}}t=e.indexOf(")",t+1)}t=e.lastIndexOf(")");let r=e.substring(1,t);return[t,[r]]}(e),n=e[a+1];switch(n){case".":case"(":case void 0:break;default:throw new ww(`Expected dot ('.'), open parenthesis ('('), or nothing after function call but got '${n}'`)}return[a+("."===n?2:1),t.map((t=>"function"==typeof t?t(...i):(console.warn(`[@faker-js/faker]: Invoking expressions which are not functions is deprecated since v9.0 and will be removed in v10.0.\nPlease remove the parentheses or replace the expression with an actual function.\n${r}\n${" ".repeat(r.length-e.length)}^`),t)))]}function Xw(e,t){let r=Zw.exec(e),a="."===(r?.[0]??""),i=r?.index??e.length,n=e.substring(0,i);if(0===n.length)throw new ww(`Expression parts cannot be empty in '${e}'`);let o=e[i+1];if(a&&(null==o||"."===o||"("===o))throw new ww(`Found dot without property name in '${e}'`);return[i+(a?1:0),t.map((e=>function(e,t){switch(typeof e){case"function":try{e=e()}catch{return}return e?.[t];case"object":return e?.[t];default:return}}(e,n)))]}function eC(e){let t=function(e){e=e.replaceAll(/[\s-]/g,"");let t=0,r=!1;for(let a=e.length-1;a>=0;a--){let i=Number.parseInt(e[a]);r&&(i*=2,i>9&&(i=i%10+1)),t+=i,r=!r}return t%10}(e.replace(/L?$/,"0"));return 0===t?0:10-t}function tC(e,t,r,a){let i=1;if(t)switch(t){case"?":i=e.datatype.boolean()?0:1;break;case"*":{let t=1;for(;e.datatype.boolean();)t*=2;i=e.number.int({min:0,max:t});break}case"+":{let t=1;for(;e.datatype.boolean();)t*=2;i=e.number.int({min:1,max:t});break}default:throw new ww("Unknown quantifier symbol provided.")}else null!=r&&null!=a?i=e.number.int({min:Number.parseInt(r),max:Number.parseInt(a)}):null!=r&&null==a&&(i=Number.parseInt(r));return i}function rC(e,t="",r="#"){let a="";for(let i=0;ia&&(i=a,a=r,r=i),n=e.number.int({min:r,max:a}),t=t.slice(0,s.index)+s[1].repeat(n)+t.slice(s.index+s[0].length),s=o.exec(t);for(s=c.exec(t);null!=s;)n=Number.parseInt(s[2]),t=t.slice(0,s.index)+s[1].repeat(n)+t.slice(s.index+s[0].length),s=c.exec(t);for(s=l.exec(t);null!=s;)r=Number.parseInt(s[1]),a=Number.parseInt(s[2]),r>a&&(i=a,a=r,r=i),t=t.slice(0,s.index)+e.number.int({min:r,max:a}).toString()+t.slice(s.index+s[0].length),s=l.exec(t);return t}(this.faker,e);let r=eC(e=rC(this.faker,e,t));return e.replace("L",String(r))}fromRegExp(e){let t=!1;e instanceof RegExp&&(t=e.flags.includes("i"),e=e.toString(),e=/\/(.+?)\//.exec(e)?.[1]??"");let r,a,i,n=/([.A-Za-z0-9])(?:\{(\d+)(?:,(\d+)|)\}|(\?|\*|\+))(?![^[]*]|[^{]*})/,o=n.exec(e);for(;null!=o;){let t=o[2],r=o[3],a=o[4];i=tC(this.faker,a,t,r),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=n.exec(e)}let c=/(\d-\d|\w-\w|\d|\w|[-!@#$&()`.+,/"])/,l=/\[(\^|)(-|)(.+?)\](?:\{(\d+)(?:,(\d+)|)\}|(\?|\*|\+)|)/;for(o=l.exec(e);null!=o;){let n="^"===o[1],s="-"===o[2],u=o[4],h=o[5],d=o[6],p=[],y=o[3],f=c.exec(y);for(s&&p.push(45);null!=f;){if(f[0].includes("-")){let e=f[0].split("-").map((e=>e.codePointAt(0)??Number.NaN));if(r=e[0],a=e[1],r>a)throw new ww("Character range provided is out of order.");for(let e=r;e<=a;e++)if(t&&Number.isNaN(Number(String.fromCodePoint(e)))){let t=String.fromCodePoint(e);p.push(t.toUpperCase().codePointAt(0)??Number.NaN,t.toLowerCase().codePointAt(0)??Number.NaN)}else p.push(e)}else t&&Number.isNaN(Number(f[0]))?p.push(f[0].toUpperCase().codePointAt(0)??Number.NaN,f[0].toLowerCase().codePointAt(0)??Number.NaN):p.push(f[0].codePointAt(0)??Number.NaN);y=y.substring(f[0].length),f=c.exec(y)}if(i=tC(this.faker,d,u,h),n){let e=-1;for(let t=48;t<=57;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t);for(let t=65;t<=90;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t);for(let t=97;t<=122;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t)}let m=this.multiple((()=>String.fromCodePoint(this.arrayElement(p))),{count:i}).join("");e=e.slice(0,o.index)+m+e.slice(o.index+o[0].length),o=l.exec(e)}let s=/(.)\{(\d+),(\d+)\}/;for(o=s.exec(e);null!=o;){if(r=Number.parseInt(o[2]),a=Number.parseInt(o[3]),r>a)throw new ww("Numbers out of order in {} quantifier.");i=this.faker.number.int({min:r,max:a}),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=s.exec(e)}let u=/(.)\{(\d+)\}/;for(o=u.exec(e);null!=o;)i=Number.parseInt(o[2]),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=u.exec(e);return e}shuffle(e,t={}){let{inplace:r=!1}=t;r||(e=[...e]);for(let t=e.length-1;t>0;--t){let r=this.faker.number.int(t);[e[t],e[r]]=[e[r],e[t]]}return e}uniqueArray(e,t){if(Array.isArray(e)){let r=[...new Set(e)];return this.shuffle(r).splice(0,t)}let r=new Set;try{if("function"==typeof e){let a=1e3*t,i=0;for(;r.size1?this.faker.number.int({max:e.length-1}):0]}weightedArrayElement(e){if(0===e.length)throw new ww("weightedArrayElement expects an array with at least one element");if(!e.every((e=>e.weight>0)))throw new ww("weightedArrayElement expects an array of { weight, value } objects where weight is a positive number");let t=e.reduce(((e,{weight:t})=>e+t),0),r=this.faker.number.float({min:0,max:t}),a=0;for(let{weight:t,value:i}of e)if(a+=t,r=e.length)return this.shuffle(e);if(r<=0)return[];let a,i,n=[...e],o=e.length,c=o-r;for(;o-- >c;)i=this.faker.number.int(o),a=n[i],n[i]=n[o],n[o]=a;return n.slice(c)}enumValue(e){let t=Object.keys(e).filter((e=>Number.isNaN(Number(e))));return e[this.arrayElement(t)]}rangeToNumber(e){return"number"==typeof e?e:this.faker.number.int(e)}multiple(e,t={}){let r=this.rangeToNumber(t.count??3);return r<=0?[]:Array.from({length:r},e)}},iC=class extends aC{constructor(e){super(e),this.faker=e}fake(e){let t=(e="string"==typeof e?e:this.arrayElement(e)).search(/{{[a-z]/),r=e.indexOf("}}",t);if(-1===t||-1===r)return e;let a=function(e,t,r=[t,t.rawDefinitions]){if(0===e.length)throw new ww("Eval expression cannot be empty.");if(0===r.length)throw new ww("Eval entrypoints cannot be empty.");let a=r,i=e;do{let r;i.startsWith("(")?[r,a]=Qw(i,a,e):[r,a]=Xw(i,a),i=i.substring(r),a=a.filter((e=>null!=e)).map((e=>Array.isArray(e)?t.helpers.arrayElement(e):e))}while(i.length>0&&a.length>0);if(0===a.length)throw new ww(`Cannot resolve expression '${e}'`);let n=a[0];return"function"==typeof n?n():n}(e.substring(t+2,r+2).replace("}}","").replace("{{",""),this.faker),i=String(a),n=e.substring(0,t)+i+e.substring(r+2);return this.fake(n)}},nC=class extends Cw{int(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=Number.MAX_SAFE_INTEGER,multipleOf:a=1}=e;if(!Number.isInteger(a))throw new ww("multipleOf should be an integer.");if(a<=0)throw new ww("multipleOf should be greater than 0.");let i=Math.ceil(t/a),n=Math.floor(r/a);if(i===n)return i*a;if(n=t?`No suitable integer value between ${t} and ${r} found.`:`Max ${r} should be greater than min ${t}.`);let o=this.faker._randomizer.next(),c=n-i+1;return Math.floor(o*c+i)*a}float(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=1,fractionDigits:a,multipleOf:i,multipleOf:n=(null==a?void 0:10**-a)}=e;if(r===t)return t;if(rthis.faker.helpers.arrayElement(e)),{count:t}).join("")}alpha(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let r,{casing:a="mixed"}=e,{exclude:i=[]}=e;switch("string"==typeof i&&(i=[...i]),a){case"upper":r=[...oC];break;case"lower":r=[...cC];break;case"mixed":r=[...cC,...oC]}return r=r.filter((e=>!i.includes(e))),this.fromCharacters(r,t)}alphanumeric(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let{casing:r="mixed"}=e,{exclude:a=[]}=e;"string"==typeof a&&(a=[...a]);let i=[...lC];switch(r){case"upper":i.push(...oC);break;case"lower":i.push(...cC);break;case"mixed":i.push(...cC,...oC)}return i=i.filter((e=>!a.includes(e))),this.fromCharacters(i,t)}binary(e={}){let{prefix:t="0b"}=e,r=t;return r+=this.fromCharacters(["0","1"],e.length??1),r}octal(e={}){let{prefix:t="0o"}=e,r=t;return r+=this.fromCharacters(["0","1","2","3","4","5","6","7"],e.length??1),r}hexadecimal(e={}){let{casing:t="mixed",prefix:r="0x"}=e,a=this.faker.helpers.rangeToNumber(e.length??1);if(a<=0)return r;let i=this.fromCharacters(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","A","B","C","D","E","F"],a);return"upper"===t?i=i.toUpperCase():"lower"===t&&(i=i.toLowerCase()),`${r}${i}`}numeric(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let{allowLeadingZeros:r=!0}=e,{exclude:a=[]}=e;"string"==typeof a&&(a=[...a]);let i=lC.filter((e=>!a.includes(e)));if(0===i.length||1===i.length&&!r&&"0"===i[0])throw new ww("Unable to generate numeric string, because all possible digits are excluded.");let n="";return!r&&!a.includes("0")&&(n+=this.faker.helpers.arrayElement(i.filter((e=>"0"!==e)))),n+=this.fromCharacters(i,t-n.length),n}sample(e=10){e=this.faker.helpers.rangeToNumber(e);let t={min:33,max:125},r="";for(;r.lengththis.faker.number.hex({min:0,max:15}))).replaceAll("y",(()=>this.faker.number.hex({min:8,max:11})))}nanoid(e=21){if((e=this.faker.helpers.rangeToNumber(e))<=0)return"";let t=[{value:()=>this.alphanumeric(1),weight:62},{value:()=>this.faker.helpers.arrayElement(["_","-"]),weight:2}],r="";for(;r.length","?","@","[","\\","]","^","_","`","{","|","}","~"],e)}},uC=class{_defaultRefDate=()=>new Date;get defaultRefDate(){return this._defaultRefDate}setDefaultRefDate(e=()=>new Date){this._defaultRefDate="function"==typeof e?e:()=>new Date(e)}_randomizer;datatype=new Jw(this);date=new Uw(this);helpers=new aC(this);number=new nC(this);string=new sC(this);constructor(e={}){let{randomizer:t=Kw()}=e;this._randomizer=t}seed(e=Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)){return this._randomizer.seed(e),e}};function hC(e){let t=`[@faker-js/faker]: ${e.deprecated} is deprecated`;e.since&&(t+=` since v${e.since}`),e.until&&(t+=` and will be removed in v${e.until}`),e.proposed&&(t+=`. Please use ${e.proposed} instead`),console.warn(`${t}.`)}new uC;var dC=class extends _w{dog(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.dog)}cat(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cat)}snake(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.snake)}bear(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bear)}lion(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.lion)}cetacean(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cetacean)}horse(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.horse)}bird(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bird)}cow(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cow)}fish(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.fish)}crocodilia(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.crocodilia)}insect(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.insect)}rabbit(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rabbit)}rodent(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rodent)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.type)}},pC={0:[[1999999,2],[2279999,3],[2289999,4],[3689999,3],[3699999,4],[6389999,3],[6397999,4],[6399999,7],[6449999,3],[6459999,7],[6479999,3],[6489999,7],[6549999,3],[6559999,4],[6999999,3],[8499999,4],[8999999,5],[9499999,6],[9999999,7]],1:[[99999,3],[299999,2],[349999,3],[399999,4],[499999,3],[699999,2],[999999,4],[3979999,3],[5499999,4],[6499999,5],[6799999,4],[6859999,5],[7139999,4],[7169999,3],[7319999,4],[7399999,7],[7749999,5],[7753999,7],[7763999,5],[7764999,7],[7769999,5],[7782999,7],[7899999,5],[7999999,4],[8004999,5],[8049999,5],[8379999,5],[8384999,7],[8671999,5],[8675999,4],[8697999,5],[9159999,6],[9165059,7],[9168699,6],[9169079,7],[9195999,6],[9196549,7],[9729999,6],[9877999,4],[9911499,6],[9911999,7],[9989899,6],[9999999,7]]},yC=class extends _w{department(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.department)}productName(){return`${this.productAdjective()} ${this.productMaterial()} ${this.product()}`}price(e={}){let{dec:t=2,max:r=1e3,min:a=1,symbol:i=""}=e;if(a<0||r<0)return`${i}0`;if(a===r)return`${i}${a.toFixed(t)}`;let n=this.faker.number.float({min:a,max:r,fractionDigits:t});if(0===t)return`${i}${n.toFixed(t)}`;let o=.1**t,c=n-n*10**t%10*o+this.faker.helpers.weightedArrayElement([{weight:5,value:9},{weight:3,value:5},{weight:1,value:0},{weight:1,value:this.faker.number.int({min:0,max:9})}])*o;return a<=c&&c<=r?`${i}${c.toFixed(t)}`:`${i}${n.toFixed(t)}`}productAdjective(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.adjective)}productMaterial(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.material)}product(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.product)}productDescription(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_description)}isbn(e={}){"number"==typeof e&&(e={variant:e});let{variant:t=13,separator:r="-"}=e,[a,i]=this.faker.helpers.objectEntry(pC),n=this.faker.string.numeric(8),o=Number.parseInt(n.slice(0,-1)),c=i.find((([e])=>o<=e))?.[1];if(!c)throw new ww(`Unable to find a registrant length for the group ${a}`);let l=["978",a,n.slice(0,c),n.slice(c)];10===t&&l.shift();let s=l.join(""),u=0;for(let e=0;e{let t=0;for(let r of e)t=(10*t+ +r)%97;return t},pattern10:["01","02","03","04","05","06","07","08","09"],pattern100:["001","002","003","004","005","006","007","008","009"],toDigitString:e=>e.replaceAll(/[A-Z]/gi,(e=>String((e.toUpperCase().codePointAt(0)??Number.NaN)-55)))},bC=gC;var vC=class extends _w{accountNumber(e={}){"number"==typeof e&&(e={length:e});let{length:t=8}=e;return this.faker.string.numeric({length:t,allowLeadingZeros:!0})}accountName(){return[this.faker.helpers.arrayElement(this.faker.definitions.finance.account_type),"Account"].join(" ")}routingNumber(){let e=this.faker.string.numeric({length:8,allowLeadingZeros:!0}),t=0;for(let r=0;re.country===t)):this.faker.helpers.arrayElement(bC.formats);if(!a)throw new ww(`Country code ${t} not supported.`);let i="",n=0;for(let e of a.bban){let t=e.count;for(n+=e.count;t>0;)"a"===e.type?i+=this.faker.helpers.arrayElement(bC.alpha):"c"===e.type?this.faker.datatype.boolean(.8)?i+=this.faker.number.int(9):i+=this.faker.helpers.arrayElement(bC.alpha):t>=3&&this.faker.datatype.boolean(.3)?this.faker.datatype.boolean()?(i+=this.faker.helpers.arrayElement(bC.pattern100),t-=2):(i+=this.faker.helpers.arrayElement(bC.pattern10),t--):i+=this.faker.number.int(9),t--;i=i.substring(0,n)}let o=98-bC.mod97(bC.toDigitString(`${i}${a.country}00`));o<10&&(o=`0${o}`);let c=`${a.country}${o}${i}`;return r?function(e){let t="";for(let r=0;re.split(" ").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ");return this.faker.datatype.boolean()?e(this.faker.helpers.fake(this.faker.definitions.food.dish_pattern)):e(this.faker.helpers.arrayElement(this.faker.definitions.food.dish))}ethnicCategory(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ethnic_category)}fruit(){return this.faker.helpers.arrayElement(this.faker.definitions.food.fruit)}ingredient(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ingredient)}meat(){return this.faker.helpers.arrayElement(this.faker.definitions.food.meat)}spice(){return this.faker.helpers.arrayElement(this.faker.definitions.food.spice)}vegetable(){return this.faker.helpers.arrayElement(this.faker.definitions.food.vegetable)}},kC=class extends _w{branch(){return`${this.faker.hacker.noun().replace(" ","-")}-${this.faker.hacker.verb().replace(" ","-")}`}commitEntry(e={}){let{merge:t=this.faker.datatype.boolean({probability:.2}),eol:r="CRLF",refDate:a}=e,i=[`commit ${this.faker.git.commitSha()}`];t&&i.push(`Merge: ${this.commitSha({length:7})} ${this.commitSha({length:7})}`);let n=this.faker.person.firstName(),o=this.faker.person.lastName(),c=this.faker.person.fullName({firstName:n,lastName:o}),l=this.faker.internet.userName({firstName:n,lastName:o}),s=this.faker.helpers.arrayElement([c,l]),u=this.faker.internet.email({firstName:n,lastName:o});s=s.replaceAll(/^[.,:;"\\']|[<>\n]|[.,:;"\\']$/g,""),i.push(`Author: ${s} <${u}>`,`Date: ${this.commitDate({refDate:a})}`,"",`${" ".repeat(4)}${this.commitMessage()}`,"");let h="CRLF"===r?"\r\n":"\n";return i.join(h)}commitMessage(){return`${this.faker.hacker.verb()} ${this.faker.hacker.adjective()} ${this.faker.hacker.noun()}`}commitDate(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=this.faker.date.recent({days:1,refDate:t}),a=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][r.getUTCDay()],i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][r.getUTCMonth()],n=r.getUTCDate(),o=r.getUTCHours().toString().padStart(2,"0"),c=r.getUTCMinutes().toString().padStart(2,"0"),l=r.getUTCSeconds().toString().padStart(2,"0"),s=r.getUTCFullYear(),u=this.faker.number.int({min:-11,max:12});return`${a} ${i} ${n} ${o}:${c}:${l} ${s} ${u>=0?"+":"-"}${Math.abs(u).toString().padStart(2,"0")}00`}commitSha(e={}){let{length:t=40}=e;return this.faker.string.hexadecimal({length:t,casing:"lower",prefix:""})}},wC=class extends _w{abbreviation(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.abbreviation)}adjective(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.adjective)}noun(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.noun)}verb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.verb)}ingverb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.ingverb)}phrase(){let e={abbreviation:this.abbreviation,adjective:this.adjective,ingverb:this.ingverb,noun:this.noun,verb:this.verb},t=this.faker.helpers.arrayElement(this.faker.definitions.hacker.phrase);return this.faker.helpers.mustache(t,e)}},CC=typeof Buffer>"u"?e=>{let t=(new TextEncoder).encode(e),r=Array.from(t,(e=>String.fromCodePoint(e))).join("");return btoa(r)}:e=>Buffer.from(e).toString("base64"),_C=class extends _w{avatar(){return this.avatarGitHub()}avatarGitHub(){return`https://avatars.githubusercontent.com/u/${this.faker.number.int(1e8)}`}avatarLegacy(){return hC({deprecated:"faker.image.avatarLegacy()",proposed:"faker.image.avatar()",since:"9.0.2",until:"10.0.0"}),`https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/${this.faker.number.int(1249)}.jpg`}url(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999})}=e;return this.faker.helpers.arrayElement([this.urlLoremFlickr,({width:e,height:t})=>this.urlPicsumPhotos({width:e,height:t,grayscale:!1,blur:0})])({width:t,height:r})}urlLoremFlickr(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),category:a}=e;return`https://loremflickr.com/${t}/${r}${null==a?"":`/${a}`}?lock=${this.faker.number.int()}`}urlPicsumPhotos(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),grayscale:a=this.faker.datatype.boolean(),blur:i=this.faker.number.int({max:10})}=e,n=`https://picsum.photos/seed/${this.faker.string.alphanumeric({length:{min:5,max:10}})}/${t}/${r}`,o="number"==typeof i&&i>=1&&i<=10;return(a||o)&&(n+="?",a&&(n+="grayscale"),a&&o&&(n+="&"),o&&(n+=`blur=${i}`)),n}urlPlaceholder(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),backgroundColor:a=this.faker.color.rgb({format:"hex",prefix:""}),textColor:i=this.faker.color.rgb({format:"hex",prefix:""}),format:n=this.faker.helpers.arrayElement(["gif","jpeg","jpg","png","webp"]),text:o=this.faker.lorem.words()}=e,c="https://via.placeholder.com";return c+=`/${t}`,c+=`x${r}`,c+=`/${a}`,c+=`/${i}`,c+=`.${n}`,c+=`?text=${encodeURIComponent(o)}`,c}dataUri(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),color:a=this.faker.color.rgb(),type:i=this.faker.helpers.arrayElements(["svg-uri","svg-base64"])}=e,n=`${t}x${r}`;return"svg-uri"===i?`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(n)}`:`data:image/svg+xml;base64,${CC(n)}`}},SC=Object.fromEntries([["А","A"],["а","a"],["Б","B"],["б","b"],["В","V"],["в","v"],["Г","G"],["г","g"],["Д","D"],["д","d"],["ъе","ye"],["Ъе","Ye"],["ъЕ","yE"],["ЪЕ","YE"],["Е","E"],["е","e"],["Ё","Yo"],["ё","yo"],["Ж","Zh"],["ж","zh"],["З","Z"],["з","z"],["И","I"],["и","i"],["ый","iy"],["Ый","Iy"],["ЫЙ","IY"],["ыЙ","iY"],["Й","Y"],["й","y"],["К","K"],["к","k"],["Л","L"],["л","l"],["М","M"],["м","m"],["Н","N"],["н","n"],["О","O"],["о","o"],["П","P"],["п","p"],["Р","R"],["р","r"],["С","S"],["с","s"],["Т","T"],["т","t"],["У","U"],["у","u"],["Ф","F"],["ф","f"],["Х","Kh"],["х","kh"],["Ц","Ts"],["ц","ts"],["Ч","Ch"],["ч","ch"],["Ш","Sh"],["ш","sh"],["Щ","Sch"],["щ","sch"],["Ъ",""],["ъ",""],["Ы","Y"],["ы","y"],["Ь",""],["ь",""],["Э","E"],["э","e"],["Ю","Yu"],["ю","yu"],["Я","Ya"],["я","ya"]]),AC=Object.fromEntries([["α","a"],["β","v"],["γ","g"],["δ","d"],["ε","e"],["ζ","z"],["η","i"],["θ","th"],["ι","i"],["κ","k"],["λ","l"],["μ","m"],["ν","n"],["ξ","ks"],["ο","o"],["π","p"],["ρ","r"],["σ","s"],["τ","t"],["υ","y"],["φ","f"],["χ","x"],["ψ","ps"],["ω","o"],["ά","a"],["έ","e"],["ί","i"],["ό","o"],["ύ","y"],["ή","i"],["ώ","o"],["ς","s"],["ϊ","i"],["ΰ","y"],["ϋ","y"],["ΐ","i"],["Α","A"],["Β","B"],["Γ","G"],["Δ","D"],["Ε","E"],["Ζ","Z"],["Η","I"],["Θ","TH"],["Ι","I"],["Κ","K"],["Λ","L"],["Μ","M"],["Ν","N"],["Ξ","KS"],["Ο","O"],["Π","P"],["Ρ","R"],["Σ","S"],["Τ","T"],["Υ","Y"],["Φ","F"],["Χ","X"],["Ψ","PS"],["Ω","O"],["Ά","A"],["Έ","E"],["Ί","I"],["Ό","O"],["Ύ","Y"],["Ή","I"],["Ώ","O"],["Ϊ","I"],["Ϋ","Y"]]),MC=Object.fromEntries([["ء","e"],["آ","a"],["أ","a"],["ؤ","w"],["إ","i"],["ئ","y"],["ا","a"],["ب","b"],["ة","t"],["ت","t"],["ث","th"],["ج","j"],["ح","h"],["خ","kh"],["د","d"],["ذ","dh"],["ر","r"],["ز","z"],["س","s"],["ش","sh"],["ص","s"],["ض","d"],["ط","t"],["ظ","z"],["ع","e"],["غ","gh"],["ـ","_"],["ف","f"],["ق","q"],["ك","k"],["ل","l"],["م","m"],["ن","n"],["ه","h"],["و","w"],["ى","a"],["ي","y"],["َ‎","a"],["ُ","u"],["ِ‎","i"]]),TC=Object.fromEntries([["ա","a"],["Ա","A"],["բ","b"],["Բ","B"],["գ","g"],["Գ","G"],["դ","d"],["Դ","D"],["ե","ye"],["Ե","Ye"],["զ","z"],["Զ","Z"],["է","e"],["Է","E"],["ը","y"],["Ը","Y"],["թ","t"],["Թ","T"],["ժ","zh"],["Ժ","Zh"],["ի","i"],["Ի","I"],["լ","l"],["Լ","L"],["խ","kh"],["Խ","Kh"],["ծ","ts"],["Ծ","Ts"],["կ","k"],["Կ","K"],["հ","h"],["Հ","H"],["ձ","dz"],["Ձ","Dz"],["ղ","gh"],["Ղ","Gh"],["ճ","tch"],["Ճ","Tch"],["մ","m"],["Մ","M"],["յ","y"],["Յ","Y"],["ն","n"],["Ն","N"],["շ","sh"],["Շ","Sh"],["ո","vo"],["Ո","Vo"],["չ","ch"],["Չ","Ch"],["պ","p"],["Պ","P"],["ջ","j"],["Ջ","J"],["ռ","r"],["Ռ","R"],["ս","s"],["Ս","S"],["վ","v"],["Վ","V"],["տ","t"],["Տ","T"],["ր","r"],["Ր","R"],["ց","c"],["Ց","C"],["ու","u"],["ՈՒ","U"],["Ու","U"],["փ","p"],["Փ","P"],["ք","q"],["Ք","Q"],["օ","o"],["Օ","O"],["ֆ","f"],["Ֆ","F"],["և","yev"]]),BC={...SC,...AC,...MC,...Object.fromEntries([["چ","ch"],["ک","k"],["گ","g"],["پ","p"],["ژ","zh"],["ی","y"]]),...TC,...Object.fromEntries([["א","a"],["ב","b"],["ג","g"],["ד","d"],["ה","h"],["ו","v"],["ז","z"],["ח","ch"],["ט","t"],["י","y"],["כ","k"],["ך","kh"],["ל","l"],["ם","m"],["מ","m"],["ן","n"],["נ","n"],["ס","s"],["ע","a"],["פ","f"],["ף","ph"],["צ","ts"],["ץ","ts"],["ק","k"],["ר","r"],["ש","sh"],["ת","t"],["ו","v"]])};function LC(e){let t=()=>e.helpers.arrayElement(["AB","AF","AN","AR","AS","AZ","BE","BG","BN","BO","BR","BS","CA","CE","CO","CS","CU","CY","DA","DE","EL","EN","EO","ES","ET","EU","FA","FI","FJ","FO","FR","FY","GA","GD","GL","GV","HE","HI","HR","HT","HU","HY","ID","IS","IT","JA","JV","KA","KG","KO","KU","KW","KY","LA","LB","LI","LN","LT","LV","MG","MK","MN","MO","MS","MT","MY","NB","NE","NL","NN","NO","OC","PL","PT","RM","RO","RU","SC","SE","SK","SL","SO","SQ","SR","SV","SW","TK","TR","TY","UK","UR","UZ","VI","VO","YI","ZH"]),r=t=>e.helpers.arrayElement({lin:["i686","x86_64"],mac:["Intel","PPC","U; Intel","U; PPC"],win:["","WOW64","Win64; x64"]}[t]),a={net:()=>[e.number.int({min:1,max:4}),e.number.int(9),e.number.int({min:1e4,max:99999}),e.number.int(9)].join("."),nt:()=>[e.number.int({min:5,max:6}),e.number.int(3)].join("."),ie:()=>e.number.int({min:7,max:11}),trident:()=>[e.number.int({min:3,max:7}),e.number.int(1)].join("."),osx:t=>[10,e.number.int({min:5,max:10}),e.number.int(9)].join(t||"."),chrome:()=>[e.number.int({min:13,max:39}),0,e.number.int({min:800,max:899}),0].join("."),presto:()=>`2.9.${e.number.int({min:160,max:190})}`,presto2:()=>`${e.number.int({min:10,max:12})}.00`,safari:()=>[e.number.int({min:531,max:538}),e.number.int(2),e.number.int(2)].join(".")},i={firefox(t){let i=`${e.number.int({min:5,max:15})}${(t=>{let r="";for(let a=0;a=11?`Mozilla/5.0 (Windows NT 6.${e.number.int({min:1,max:3})}; Trident/7.0; ${e.datatype.boolean()?"Touch; ":""}rv:11.0) like Gecko`:`Mozilla/5.0 (compatible; MSIE ${t}.0; Windows NT ${a.nt()}; Trident/${a.trident()}${e.datatype.boolean()?`; .NET CLR ${a.net()}`:""})`},opera(i){let n=` Presto/${a.presto()} Version/${a.presto2()})`,o="win"===i?`(Windows NT ${a.nt()}; U; ${t()}${n}`:"lin"===i?`(X11; Linux ${r(i)}; U; ${t()}${n}`:`(Macintosh; Intel Mac OS X ${a.osx()} U; ${t()} Presto/${a.presto()} Version/${a.presto2()})`;return`Opera/${e.number.int({min:9,max:14})}.${e.number.int(99)} ${o}`},safari(i){let n=a.safari(),o=`${e.number.int({min:4,max:7})}.${e.number.int(1)}.${e.number.int(10)}`;return`Mozilla/5.0 ${"mac"===i?`(Macintosh; ${r("mac")} Mac OS X ${a.osx("_")} rv:${e.number.int({min:2,max:6})}.0; ${t()}) `:`(Windows; U; Windows NT ${a.nt()})`}AppleWebKit/${n} (KHTML, like Gecko) Version/${o} Safari/${n}`},chrome(e){let t=a.safari();return`Mozilla/5.0 ${"mac"===e?`(Macintosh; ${r("mac")} Mac OS X ${a.osx("_")}) `:"win"===e?`(Windows; U; Windows NT ${a.nt()})`:`(X11; Linux ${r(e)}`} AppleWebKit/${t} (KHTML, like Gecko) Chrome/${a.chrome()} Safari/${t}`}},[n,o]=(()=>{let t={chrome:["win","mac","lin"],firefox:["win","mac","lin"],opera:["win","mac","lin"],safari:["win","mac"],iexplorer:["win"]},r=e.helpers.objectKey(t);return[r,e.helpers.arrayElement(t[r])]})();return i[n](o)}var EC=class extends _w{email(e={}){let{firstName:t,lastName:r,provider:a=this.faker.helpers.arrayElement(this.faker.definitions.internet.free_email),allowSpecialCharacters:i=!1}=e,n=this.userName({firstName:t,lastName:r});if(n=n.replaceAll(/[^A-Za-z0-9._+-]+/g,""),n=n.substring(0,50),i){let e=[..."._-"],t=[...".!#$%&'*+-/=?^_`{|}~"];n=n.replace(this.faker.helpers.arrayElement(e),this.faker.helpers.arrayElement(t))}return n=n.replaceAll(/\.{2,}/g,"."),n=n.replace(/^\./,""),n=n.replace(/\.$/,""),`${n}@${a}`}exampleEmail(e={}){let{firstName:t,lastName:r,allowSpecialCharacters:a=!1}=e,i=this.faker.helpers.arrayElement(this.faker.definitions.internet.example_email);return this.email({firstName:t,lastName:r,provider:i,allowSpecialCharacters:a})}userName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName(),lastName:a}=e,i=this.faker.helpers.arrayElement([".","_"]),n=this.faker.number.int(99),o=[()=>`${t}${i}${r}${n}`,()=>`${t}${i}${r}`];a||o.push((()=>`${t}${n}`));let c=this.faker.helpers.arrayElement(o)();return c=c.normalize("NFKD").replaceAll(/[\u0300-\u036F]/g,""),c=[...c].map((e=>{if(BC[e])return BC[e];let t=e.codePointAt(0)??Number.NaN;return t<128?e:t.toString(36)})).join(""),c=c.toString().replaceAll("'",""),c=c.replaceAll(" ",""),c}displayName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName()}=e,a=this.faker.helpers.arrayElement([".","_"]),i=this.faker.number.int(99),n=[()=>`${t}${i}`,()=>`${t}${a}${r}`,()=>`${t}${a}${r}${i}`],o=this.faker.helpers.arrayElement(n)();return o=o.toString().replaceAll("'",""),o=o.replaceAll(" ",""),o}protocol(){return this.faker.helpers.arrayElement(["http","https"])}httpMethod(){return this.faker.helpers.arrayElement(["GET","POST","PUT","DELETE","PATCH"])}httpStatusCode(e={}){let{types:t=Object.keys(this.faker.definitions.internet.http_status_code)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.http_status_code[r])}url(e={}){let{appendSlash:t=this.faker.datatype.boolean(),protocol:r="https"}=e;return`${r}://${this.domainName()}${t?"/":""}`}domainName(){return`${this.domainWord()}.${this.domainSuffix()}`}domainSuffix(){return this.faker.helpers.arrayElement(this.faker.definitions.internet.domain_suffix)}domainWord(){return this.faker.helpers.slugify(`${this.faker.word.adjective()}-${this.faker.word.noun()}`).toLowerCase()}ip(){return this.faker.datatype.boolean()?this.ipv4():this.ipv6()}ipv4(){return Array.from({length:4},(()=>this.faker.number.int(255))).join(".")}ipv6(){return Array.from({length:8},(()=>this.faker.string.hexadecimal({length:4,casing:"lower",prefix:""}))).join(":")}port(){return this.faker.number.int(65535)}userAgent(){return LC(this.faker)}color(e={}){let{redBase:t=0,greenBase:r=0,blueBase:a=0}=e,i=e=>Math.floor((this.faker.number.int(256)+e)/2).toString(16).padStart(2,"0");return`#${i(t)}${i(r)}${i(a)}`}mac(e={}){"string"==typeof e&&(e={separator:e});let t,{separator:r=":"}=e,a="";for([":","-",""].includes(r)||(r=":"),t=0;t<12;t++)a+=this.faker.number.hex(15),t%2==1&&11!==t&&(a+=r);return a}password(e={}){let t=/[aeiouAEIOU]$/,r=/[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/,a=(e,i,n,o)=>{if(o.length>=e)return o;i&&(n=r.test(o)?t:r);let c=this.faker.number.int(94)+33,l=String.fromCodePoint(c);return i&&(l=l.toLowerCase()),n.test(l)?a(e,i,n,o+l):a(e,i,n,o)},{length:i=15,memorable:n=!1,pattern:o=/\w/,prefix:c=""}=e;return a(i,n,o,c)}emoji(e={}){let{types:t=Object.keys(this.faker.definitions.internet.emoji)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.emoji[r])}},RC=class extends _w{zipCode(e={}){"string"==typeof e&&(e={format:e});let{state:t}=e;if(null!=t){let e=this.faker.definitions.location.postcode_by_state[t];if(null==e)throw new ww(`No zip code definition found for state "${t}"`);return this.faker.helpers.fake(e)}let{format:r=this.faker.definitions.location.postcode}=e;return"string"==typeof r&&(r=[r]),r=this.faker.helpers.arrayElement(r),this.faker.helpers.replaceSymbols(r)}city(){return this.faker.helpers.fake(this.faker.definitions.location.city_pattern)}buildingNumber(){return this.faker.helpers.arrayElement(this.faker.definitions.location.building_number).replaceAll(/#+/g,(e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1})))}street(){return this.faker.helpers.fake(this.faker.definitions.location.street_pattern)}streetAddress(e={}){"boolean"==typeof e&&(e={useFullAddress:e});let{useFullAddress:t}=e,r=this.faker.definitions.location.street_address[t?"full":"normal"];return this.faker.helpers.fake(r)}secondaryAddress(){return this.faker.helpers.fake(this.faker.definitions.location.secondary_address).replaceAll(/#+/g,(e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1})))}county(){return this.faker.helpers.arrayElement(this.faker.definitions.location.county)}country(){return this.faker.helpers.arrayElement(this.faker.definitions.location.country)}countryCode(e={}){"string"==typeof e&&(e={variant:e});let{variant:t="alpha-2"}=e,r=(()=>{switch(t){case"numeric":return"numeric";case"alpha-3":return"alpha3";case"alpha-2":return"alpha2"}})();return this.faker.helpers.arrayElement(this.faker.definitions.location.country_code)[r]}state(e={}){let{abbreviated:t=!1}=e,r=t?this.faker.definitions.location.state_abbr:this.faker.definitions.location.state;return this.faker.helpers.arrayElement(r)}latitude(e={}){let{max:t=90,min:r=-90,precision:a=4}=e;return this.faker.number.float({min:r,max:t,fractionDigits:a})}longitude(e={}){let{max:t=180,min:r=-180,precision:a=4}=e;return this.faker.number.float({max:t,min:r,fractionDigits:a})}direction(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal_abbr,...this.faker.definitions.location.direction.ordinal_abbr]):this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal,...this.faker.definitions.location.direction.ordinal])}cardinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal)}ordinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal)}nearbyGPSCoordinate(e={}){let{origin:t,radius:r=10,isMetric:a=!1}=e;if(null==t)return[this.latitude(),this.longitude()];let i=this.faker.number.float({max:2*Math.PI,fractionDigits:5}),n=a?r:1.60934*r,o=.995*this.faker.number.float({max:n,fractionDigits:3})/(4e4/360),c=[t[0]+Math.sin(i)*o,t[1]+Math.cos(i)*o];return c[0]=c[0]%180,(c[0]<-90||c[0]>90)&&(c[0]=180*Math.sign(c[0])-c[0],c[1]+=180),c[1]=(c[1]%360+540)%360-180,[c[0],c[1]]}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.location.time_zone)}};var HC={fail:()=>{throw new ww("No words found that match the given length.")},closest:(e,t)=>{let r=function(e,t,r=e=>e){let a={};for(let i of e){let e=t(i);void 0===a[e]&&(a[e]=[]),a[e].push(r(i))}return a}(e,(e=>e.length)),a=Object.keys(r).map(Number),i=Math.min(...a),n=Math.max(...a),o=Math.min(t.min-i,n-t.max);return e.filter((e=>e.length===t.min-o||e.length===t.max+o))},shortest:e=>{let t=Math.min(...e.map((e=>e.length)));return e.filter((e=>e.length===t))},longest:e=>{let t=Math.max(...e.map((e=>e.length)));return e.filter((e=>e.length===t))},"any-length":e=>[...e]};function DC(e){let{wordList:t,length:r,strategy:a="any-length"}=e;if(r){let e="number"==typeof r?e=>e.length===r:e=>e.length>=r.min&&e.length<=r.max,i=t.filter(e);return i.length>0?i:"number"==typeof r?HC[a](t,{min:r,max:r}):HC[a](t,r)}return"shortest"===a||"longest"===a?HC[a](t):[...t]}var PC=class extends _w{word(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.lorem.word}))}words(e=3){return this.faker.helpers.multiple((()=>this.word()),{count:e}).join(" ")}sentence(e={min:3,max:10}){let t=this.words(e);return`${t.charAt(0).toUpperCase()+t.substring(1)}.`}slug(e=3){let t=this.words(e);return this.faker.helpers.slugify(t)}sentences(e={min:2,max:6},t=" "){return this.faker.helpers.multiple((()=>this.sentence()),{count:e}).join(t)}paragraph(e=3){return this.sentences(e)}paragraphs(e=3,t="\n"){return this.faker.helpers.multiple((()=>this.paragraph()),{count:e}).join(t)}text(){return this[this.faker.helpers.arrayElement(["sentence","sentences","paragraph","paragraphs","lines"])]()}lines(e={min:1,max:5}){return this.sentences(e,"\n")}},NC=class extends _w{album(){return this.faker.helpers.arrayElement(this.faker.definitions.music.album)}artist(){return this.faker.helpers.arrayElement(this.faker.definitions.music.artist)}genre(){return this.faker.helpers.arrayElement(this.faker.definitions.music.genre)}songName(){return this.faker.helpers.arrayElement(this.faker.definitions.music.song_name)}},GC=class extends _w{number(e={}){let{style:t="human"}=e,r=this.faker.definitions.phone_number.format[t];if(!r)throw new Error(`No definitions for ${t} in this locale`);let a=this.faker.helpers.arrayElement(r);return rC(this.faker,a)}imei(){return this.faker.helpers.replaceCreditCardSymbols("##-######-######-L","#")}},IC=class extends _w{chemicalElement(){return this.faker.helpers.arrayElement(this.faker.definitions.science.chemical_element)}unit(){return this.faker.helpers.arrayElement(this.faker.definitions.science.unit)}},WC=["video","audio","image","text","application"],FC=["application/pdf","audio/mpeg","audio/wav","image/png","image/jpeg","image/gif","video/mp4","video/mpeg","text/html"],zC=["en","wl","ww"],OC={index:"o",slot:"s",mac:"x",pci:"p"},KC=["SUN","MON","TUE","WED","THU","FRI","SAT"],JC=class extends _w{fileName(e={}){let{extensionCount:t=1}=e,r=this.faker.word.words().toLowerCase().replaceAll(/\W/g,"_"),a=this.faker.helpers.multiple((()=>this.fileExt()),{count:t}).join(".");return 0===a.length?r:`${r}.${a}`}commonFileName(e){return`${this.fileName({extensionCount:0})}.${e||this.commonFileExt()}`}mimeType(){let e=Object.keys(this.faker.definitions.system.mime_type);return this.faker.helpers.arrayElement(e)}commonFileType(){return this.faker.helpers.arrayElement(WC)}commonFileExt(){return this.fileExt(this.faker.helpers.arrayElement(FC))}fileType(){let e=this.faker.definitions.system.mime_type,t=new Set(Object.keys(e).map((e=>e.split("/")[0])));return this.faker.helpers.arrayElement([...t])}fileExt(e){let t=this.faker.definitions.system.mime_type;if("string"==typeof e)return this.faker.helpers.arrayElement(t[e].extensions);let r=new Set(Object.values(t).flatMap((({extensions:e})=>e)));return this.faker.helpers.arrayElement([...r])}directoryPath(){let e=this.faker.definitions.system.directory_path;return this.faker.helpers.arrayElement(e)}filePath(){return`${this.directoryPath()}/${this.fileName()}`}semver(){return[this.faker.number.int(9),this.faker.number.int(9),this.faker.number.int(9)].join(".")}networkInterface(e={}){let t,{interfaceType:r=this.faker.helpers.arrayElement(zC),interfaceSchema:a=this.faker.helpers.objectKey(OC)}=e,i="",n=()=>this.faker.string.numeric({allowLeadingZeros:!0});switch(a){case"index":t=n();break;case"slot":t=`${n()}${this.faker.helpers.maybe((()=>`f${n()}`))??""}${this.faker.helpers.maybe((()=>`d${n()}`))??""}`;break;case"mac":t=this.faker.internet.mac("");break;case"pci":i=this.faker.helpers.maybe((()=>`P${n()}`))??"",t=`${n()}s${n()}${this.faker.helpers.maybe((()=>`f${n()}`))??""}${this.faker.helpers.maybe((()=>`d${n()}`))??""}`}return`${i}${r}${OC[a]}${t}`}cron(e={}){let{includeYear:t=!1,includeNonStandard:r=!1}=e,a=[this.faker.number.int(59),"*"],i=[this.faker.number.int(23),"*"],n=[this.faker.number.int({min:1,max:31}),"*","?"],o=[this.faker.number.int({min:1,max:12}),"*"],c=[this.faker.number.int(6),this.faker.helpers.arrayElement(KC),"*","?"],l=[this.faker.number.int({min:1970,max:2099}),"*"],s=this.faker.helpers.arrayElement(a),u=this.faker.helpers.arrayElement(i),h=this.faker.helpers.arrayElement(n),d=this.faker.helpers.arrayElement(o),p=this.faker.helpers.arrayElement(c),y=this.faker.helpers.arrayElement(l),f=`${s} ${u} ${h} ${d} ${p}`;t&&(f+=` ${y}`);return!r||this.faker.datatype.boolean()?f:this.faker.helpers.arrayElement(["@annually","@daily","@hourly","@monthly","@reboot","@weekly","@yearly"])}},VC=class extends _w{vehicle(){return`${this.manufacturer()} ${this.model()}`}manufacturer(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.manufacturer)}model(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.model)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.type)}fuel(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.fuel)}vin(){let e=["o","i","q","O","I","Q"];return`${this.faker.string.alphanumeric({length:10,casing:"upper",exclude:e})}${this.faker.string.alpha({length:1,casing:"upper",exclude:e})}${this.faker.string.alphanumeric({length:1,casing:"upper",exclude:e})}${this.faker.string.numeric({length:5,allowLeadingZeros:!0})}`}color(){return this.faker.color.human()}vrm(){return`${this.faker.string.alpha({length:2,casing:"upper"})}${this.faker.string.numeric({length:2,allowLeadingZeros:!0})}${this.faker.string.alpha({length:3,casing:"upper"})}`}bicycle(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.bicycle_type)}},jC=class extends _w{adjective(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.adjective}))}adverb(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.adverb}))}conjunction(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.conjunction}))}interjection(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.interjection}))}noun(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.noun}))}preposition(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.preposition}))}verb(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.verb}))}sample(e={}){let t=this.faker.helpers.shuffle([this.adjective,this.adverb,this.conjunction,this.interjection,this.noun,this.preposition,this.verb]);for(let r of t)try{return r(e)}catch{continue}throw new ww("No matching word data available for the current locale")}words(e={}){"number"==typeof e&&(e={count:e});let{count:t={min:1,max:3}}=e;return this.faker.helpers.multiple((()=>this.sample()),{count:t}).join(" ")}},YC=["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New_York","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],$C={color:{space:["Academy Color Encoding System (ACES)","Adobe RGB","Adobe Wide Gamut RGB","British Standard Colour (BS)","CIE 1931 XYZ","CIELAB","CIELUV","CIEUVW","CMY","CMYK","DCI-P3","Display-P3","Federal Standard 595C","HKS","HSL","HSLA","HSLuv","HSV","HWB","LCh","LMS","Munsell Color System","Natural Color System (NSC)","Pantone Matching System (PMS)","ProPhoto RGB Color Space","RAL","RG","RGBA","RGK","Rec. 2020","Rec. 2100","Rec. 601","Rec. 709","Uniform Color Spaces (UCSs)","YDbDr","YIQ","YPbPr","sRGB","sYCC","scRGB","xvYCC"]},database:{collation:["ascii_bin","ascii_general_ci","cp1250_bin","cp1250_general_ci","utf8_bin","utf8_general_ci","utf8_unicode_ci"],engine:["ARCHIVE","BLACKHOLE","CSV","InnoDB","MEMORY","MyISAM"],type:["bigint","binary","bit","blob","boolean","date","datetime","decimal","double","enum","float","geometry","int","mediumint","point","real","serial","set","smallint","text","time","timestamp","tinyint","varchar"]},date:{time_zone:YC},hacker:{abbreviation:["ADP","AGP","AI","API","ASCII","CLI","COM","CSS","DNS","DRAM","EXE","FTP","GB","HDD","HEX","HTTP","IB","IP","JBOD","JSON","OCR","PCI","PNG","RAM","RSS","SAS","SCSI","SDD","SMS","SMTP","SQL","SSD","SSL","TCP","THX","TLS","UDP","USB","UTF8","VGA","XML","XSS"]},internet:{emoji:{smiley:["😀","😃","😄","😁","😆","😅","🤣","😂","🙂","🙃","😉","😊","😇","🥰","😍","🤩","😘","😗","☺️","😚","😙","🥲","😋","😛","😜","🤪","😝","🤑","🤗","🤭","🤫","🤔","🤐","🤨","😐","😑","😶","😶‍🌫️","😏","😒","🙄","😬","😮‍💨","🤥","😌","😔","😪","🤤","😴","😷","🤒","🤕","🤢","🤮","🤧","🥵","🥶","🥴","😵","😵‍💫","🤯","🤠","🥳","🥸","😎","🤓","🧐","😕","😟","🙁","☹️","😮","😯","😲","😳","🥺","😦","😧","😨","😰","😥","😢","😭","😱","😖","😣","😞","😓","😩","😫","🥱","😤","😡","😠","🤬","😈","👿","💀","☠️","💩","🤡","👹","👺","👻","👽","👾","🤖","😺","😸","😹","😻","😼","😽","🙀","😿","😾","🙈","🙉","🙊","💋","💌","💘","💝","💖","💗","💓","💞","💕","💟","❣️","💔","❤️‍🔥","❤️‍🩹","❤️","🧡","💛","💚","💙","💜","🤎","🖤","🤍","💯","💢","💥","💫","💦","💨","🕳️","💣","💬","👁️‍🗨️","🗨️","🗯️","💭","💤"],body:["👋","👋🏻","👋🏼","👋🏽","👋🏾","👋🏿","🤚","🤚🏻","🤚🏼","🤚🏽","🤚🏾","🤚🏿","🖐️","🖐🏻","🖐🏼","🖐🏽","🖐🏾","🖐🏿","✋","✋🏻","✋🏼","✋🏽","✋🏾","✋🏿","🖖","🖖🏻","🖖🏼","🖖🏽","🖖🏾","🖖🏿","👌","👌🏻","👌🏼","👌🏽","👌🏾","👌🏿","🤌","🤌🏻","🤌🏼","🤌🏽","🤌🏾","🤌🏿","🤏","🤏🏻","🤏🏼","🤏🏽","🤏🏾","🤏🏿","✌️","✌🏻","✌🏼","✌🏽","✌🏾","✌🏿","🤞","🤞🏻","🤞🏼","🤞🏽","🤞🏾","🤞🏿","🤟","🤟🏻","🤟🏼","🤟🏽","🤟🏾","🤟🏿","🤘","🤘🏻","🤘🏼","🤘🏽","🤘🏾","🤘🏿","🤙","🤙🏻","🤙🏼","🤙🏽","🤙🏾","🤙🏿","👈","👈🏻","👈🏼","👈🏽","👈🏾","👈🏿","👉","👉🏻","👉🏼","👉🏽","👉🏾","👉🏿","👆","👆🏻","👆🏼","👆🏽","👆🏾","👆🏿","🖕","🖕🏻","🖕🏼","🖕🏽","🖕🏾","🖕🏿","👇","👇🏻","👇🏼","👇🏽","👇🏾","👇🏿","☝️","☝🏻","☝🏼","☝🏽","☝🏾","☝🏿","👍","👍🏻","👍🏼","👍🏽","👍🏾","👍🏿","👎","👎🏻","👎🏼","👎🏽","👎🏾","👎🏿","✊","✊🏻","✊🏼","✊🏽","✊🏾","✊🏿","👊","👊🏻","👊🏼","👊🏽","👊🏾","👊🏿","🤛","🤛🏻","🤛🏼","🤛🏽","🤛🏾","🤛🏿","🤜","🤜🏻","🤜🏼","🤜🏽","🤜🏾","🤜🏿","👏","👏🏻","👏🏼","👏🏽","👏🏾","👏🏿","🙌","🙌🏻","🙌🏼","🙌🏽","🙌🏾","🙌🏿","👐","👐🏻","👐🏼","👐🏽","👐🏾","👐🏿","🤲","🤲🏻","🤲🏼","🤲🏽","🤲🏾","🤲🏿","🤝","🙏","🙏🏻","🙏🏼","🙏🏽","🙏🏾","🙏🏿","✍️","✍🏻","✍🏼","✍🏽","✍🏾","✍🏿","💅","💅🏻","💅🏼","💅🏽","💅🏾","💅🏿","🤳","🤳🏻","🤳🏼","🤳🏽","🤳🏾","🤳🏿","💪","💪🏻","💪🏼","💪🏽","💪🏾","💪🏿","🦾","🦿","🦵","🦵🏻","🦵🏼","🦵🏽","🦵🏾","🦵🏿","🦶","🦶🏻","🦶🏼","🦶🏽","🦶🏾","🦶🏿","👂","👂🏻","👂🏼","👂🏽","👂🏾","👂🏿","🦻","🦻🏻","🦻🏼","🦻🏽","🦻🏾","🦻🏿","👃","👃🏻","👃🏼","👃🏽","👃🏾","👃🏿","🧠","🫀","🫁","🦷","🦴","👀","👁️","👅","👄"],person:["👶","👶🏻","👶🏼","👶🏽","👶🏾","👶🏿","🧒","🧒🏻","🧒🏼","🧒🏽","🧒🏾","🧒🏿","👦","👦🏻","👦🏼","👦🏽","👦🏾","👦🏿","👧","👧🏻","👧🏼","👧🏽","👧🏾","👧🏿","🧑","🧑🏻","🧑🏼","🧑🏽","🧑🏾","🧑🏿","👱","👱🏻","👱🏼","👱🏽","👱🏾","👱🏿","👨","👨🏻","👨🏼","👨🏽","👨🏾","👨🏿","🧔","🧔🏻","🧔🏼","🧔🏽","🧔🏾","🧔🏿","🧔‍♂️","🧔🏻‍♂️","🧔🏼‍♂️","🧔🏽‍♂️","🧔🏾‍♂️","🧔🏿‍♂️","🧔‍♀️","🧔🏻‍♀️","🧔🏼‍♀️","🧔🏽‍♀️","🧔🏾‍♀️","🧔🏿‍♀️","👨‍🦰","👨🏻‍🦰","👨🏼‍🦰","👨🏽‍🦰","👨🏾‍🦰","👨🏿‍🦰","👨‍🦱","👨🏻‍🦱","👨🏼‍🦱","👨🏽‍🦱","👨🏾‍🦱","👨🏿‍🦱","👨‍🦳","👨🏻‍🦳","👨🏼‍🦳","👨🏽‍🦳","👨🏾‍🦳","👨🏿‍🦳","👨‍🦲","👨🏻‍🦲","👨🏼‍🦲","👨🏽‍🦲","👨🏾‍🦲","👨🏿‍🦲","👩","👩🏻","👩🏼","👩🏽","👩🏾","👩🏿","👩‍🦰","👩🏻‍🦰","👩🏼‍🦰","👩🏽‍🦰","👩🏾‍🦰","👩🏿‍🦰","🧑‍🦰","🧑🏻‍🦰","🧑🏼‍🦰","🧑🏽‍🦰","🧑🏾‍🦰","🧑🏿‍🦰","👩‍🦱","👩🏻‍🦱","👩🏼‍🦱","👩🏽‍🦱","👩🏾‍🦱","👩🏿‍🦱","🧑‍🦱","🧑🏻‍🦱","🧑🏼‍🦱","🧑🏽‍🦱","🧑🏾‍🦱","🧑🏿‍🦱","👩‍🦳","👩🏻‍🦳","👩🏼‍🦳","👩🏽‍🦳","👩🏾‍🦳","👩🏿‍🦳","🧑‍🦳","🧑🏻‍🦳","🧑🏼‍🦳","🧑🏽‍🦳","🧑🏾‍🦳","🧑🏿‍🦳","👩‍🦲","👩🏻‍🦲","👩🏼‍🦲","👩🏽‍🦲","👩🏾‍🦲","👩🏿‍🦲","🧑‍🦲","🧑🏻‍🦲","🧑🏼‍🦲","🧑🏽‍🦲","🧑🏾‍🦲","🧑🏿‍🦲","👱‍♀️","👱🏻‍♀️","👱🏼‍♀️","👱🏽‍♀️","👱🏾‍♀️","👱🏿‍♀️","👱‍♂️","👱🏻‍♂️","👱🏼‍♂️","👱🏽‍♂️","👱🏾‍♂️","👱🏿‍♂️","🧓","🧓🏻","🧓🏼","🧓🏽","🧓🏾","🧓🏿","👴","👴🏻","👴🏼","👴🏽","👴🏾","👴🏿","👵","👵🏻","👵🏼","👵🏽","👵🏾","👵🏿","🙍","🙍🏻","🙍🏼","🙍🏽","🙍🏾","🙍🏿","🙍‍♂️","🙍🏻‍♂️","🙍🏼‍♂️","🙍🏽‍♂️","🙍🏾‍♂️","🙍🏿‍♂️","🙍‍♀️","🙍🏻‍♀️","🙍🏼‍♀️","🙍🏽‍♀️","🙍🏾‍♀️","🙍🏿‍♀️","🙎","🙎🏻","🙎🏼","🙎🏽","🙎🏾","🙎🏿","🙎‍♂️","🙎🏻‍♂️","🙎🏼‍♂️","🙎🏽‍♂️","🙎🏾‍♂️","🙎🏿‍♂️","🙎‍♀️","🙎🏻‍♀️","🙎🏼‍♀️","🙎🏽‍♀️","🙎🏾‍♀️","🙎🏿‍♀️","🙅","🙅🏻","🙅🏼","🙅🏽","🙅🏾","🙅🏿","🙅‍♂️","🙅🏻‍♂️","🙅🏼‍♂️","🙅🏽‍♂️","🙅🏾‍♂️","🙅🏿‍♂️","🙅‍♀️","🙅🏻‍♀️","🙅🏼‍♀️","🙅🏽‍♀️","🙅🏾‍♀️","🙅🏿‍♀️","🙆","🙆🏻","🙆🏼","🙆🏽","🙆🏾","🙆🏿","🙆‍♂️","🙆🏻‍♂️","🙆🏼‍♂️","🙆🏽‍♂️","🙆🏾‍♂️","🙆🏿‍♂️","🙆‍♀️","🙆🏻‍♀️","🙆🏼‍♀️","🙆🏽‍♀️","🙆🏾‍♀️","🙆🏿‍♀️","💁","💁🏻","💁🏼","💁🏽","💁🏾","💁🏿","💁‍♂️","💁🏻‍♂️","💁🏼‍♂️","💁🏽‍♂️","💁🏾‍♂️","💁🏿‍♂️","💁‍♀️","💁🏻‍♀️","💁🏼‍♀️","💁🏽‍♀️","💁🏾‍♀️","💁🏿‍♀️","🙋","🙋🏻","🙋🏼","🙋🏽","🙋🏾","🙋🏿","🙋‍♂️","🙋🏻‍♂️","🙋🏼‍♂️","🙋🏽‍♂️","🙋🏾‍♂️","🙋🏿‍♂️","🙋‍♀️","🙋🏻‍♀️","🙋🏼‍♀️","🙋🏽‍♀️","🙋🏾‍♀️","🙋🏿‍♀️","🧏","🧏🏻","🧏🏼","🧏🏽","🧏🏾","🧏🏿","🧏‍♂️","🧏🏻‍♂️","🧏🏼‍♂️","🧏🏽‍♂️","🧏🏾‍♂️","🧏🏿‍♂️","🧏‍♀️","🧏🏻‍♀️","🧏🏼‍♀️","🧏🏽‍♀️","🧏🏾‍♀️","🧏🏿‍♀️","🙇","🙇🏻","🙇🏼","🙇🏽","🙇🏾","🙇🏿","🙇‍♂️","🙇🏻‍♂️","🙇🏼‍♂️","🙇🏽‍♂️","🙇🏾‍♂️","🙇🏿‍♂️","🙇‍♀️","🙇🏻‍♀️","🙇🏼‍♀️","🙇🏽‍♀️","🙇🏾‍♀️","🙇🏿‍♀️","🤦","🤦🏻","🤦🏼","🤦🏽","🤦🏾","🤦🏿","🤦‍♂️","🤦🏻‍♂️","🤦🏼‍♂️","🤦🏽‍♂️","🤦🏾‍♂️","🤦🏿‍♂️","🤦‍♀️","🤦🏻‍♀️","🤦🏼‍♀️","🤦🏽‍♀️","🤦🏾‍♀️","🤦🏿‍♀️","🤷","🤷🏻","🤷🏼","🤷🏽","🤷🏾","🤷🏿","🤷‍♂️","🤷🏻‍♂️","🤷🏼‍♂️","🤷🏽‍♂️","🤷🏾‍♂️","🤷🏿‍♂️","🤷‍♀️","🤷🏻‍♀️","🤷🏼‍♀️","🤷🏽‍♀️","🤷🏾‍♀️","🤷🏿‍♀️","🧑‍⚕️","🧑🏻‍⚕️","🧑🏼‍⚕️","🧑🏽‍⚕️","🧑🏾‍⚕️","🧑🏿‍⚕️","👨‍⚕️","👨🏻‍⚕️","👨🏼‍⚕️","👨🏽‍⚕️","👨🏾‍⚕️","👨🏿‍⚕️","👩‍⚕️","👩🏻‍⚕️","👩🏼‍⚕️","👩🏽‍⚕️","👩🏾‍⚕️","👩🏿‍⚕️","🧑‍🎓","🧑🏻‍🎓","🧑🏼‍🎓","🧑🏽‍🎓","🧑🏾‍🎓","🧑🏿‍🎓","👨‍🎓","👨🏻‍🎓","👨🏼‍🎓","👨🏽‍🎓","👨🏾‍🎓","👨🏿‍🎓","👩‍🎓","👩🏻‍🎓","👩🏼‍🎓","👩🏽‍🎓","👩🏾‍🎓","👩🏿‍🎓","🧑‍🏫","🧑🏻‍🏫","🧑🏼‍🏫","🧑🏽‍🏫","🧑🏾‍🏫","🧑🏿‍🏫","👨‍🏫","👨🏻‍🏫","👨🏼‍🏫","👨🏽‍🏫","👨🏾‍🏫","👨🏿‍🏫","👩‍🏫","👩🏻‍🏫","👩🏼‍🏫","👩🏽‍🏫","👩🏾‍🏫","👩🏿‍🏫","🧑‍⚖️","🧑🏻‍⚖️","🧑🏼‍⚖️","🧑🏽‍⚖️","🧑🏾‍⚖️","🧑🏿‍⚖️","👨‍⚖️","👨🏻‍⚖️","👨🏼‍⚖️","👨🏽‍⚖️","👨🏾‍⚖️","👨🏿‍⚖️","👩‍⚖️","👩🏻‍⚖️","👩🏼‍⚖️","👩🏽‍⚖️","👩🏾‍⚖️","👩🏿‍⚖️","🧑‍🌾","🧑🏻‍🌾","🧑🏼‍🌾","🧑🏽‍🌾","🧑🏾‍🌾","🧑🏿‍🌾","👨‍🌾","👨🏻‍🌾","👨🏼‍🌾","👨🏽‍🌾","👨🏾‍🌾","👨🏿‍🌾","👩‍🌾","👩🏻‍🌾","👩🏼‍🌾","👩🏽‍🌾","👩🏾‍🌾","👩🏿‍🌾","🧑‍🍳","🧑🏻‍🍳","🧑🏼‍🍳","🧑🏽‍🍳","🧑🏾‍🍳","🧑🏿‍🍳","👨‍🍳","👨🏻‍🍳","👨🏼‍🍳","👨🏽‍🍳","👨🏾‍🍳","👨🏿‍🍳","👩‍🍳","👩🏻‍🍳","👩🏼‍🍳","👩🏽‍🍳","👩🏾‍🍳","👩🏿‍🍳","🧑‍🔧","🧑🏻‍🔧","🧑🏼‍🔧","🧑🏽‍🔧","🧑🏾‍🔧","🧑🏿‍🔧","👨‍🔧","👨🏻‍🔧","👨🏼‍🔧","👨🏽‍🔧","👨🏾‍🔧","👨🏿‍🔧","👩‍🔧","👩🏻‍🔧","👩🏼‍🔧","👩🏽‍🔧","👩🏾‍🔧","👩🏿‍🔧","🧑‍🏭","🧑🏻‍🏭","🧑🏼‍🏭","🧑🏽‍🏭","🧑🏾‍🏭","🧑🏿‍🏭","👨‍🏭","👨🏻‍🏭","👨🏼‍🏭","👨🏽‍🏭","👨🏾‍🏭","👨🏿‍🏭","👩‍🏭","👩🏻‍🏭","👩🏼‍🏭","👩🏽‍🏭","👩🏾‍🏭","👩🏿‍🏭","🧑‍💼","🧑🏻‍💼","🧑🏼‍💼","🧑🏽‍💼","🧑🏾‍💼","🧑🏿‍💼","👨‍💼","👨🏻‍💼","👨🏼‍💼","👨🏽‍💼","👨🏾‍💼","👨🏿‍💼","👩‍💼","👩🏻‍💼","👩🏼‍💼","👩🏽‍💼","👩🏾‍💼","👩🏿‍💼","🧑‍🔬","🧑🏻‍🔬","🧑🏼‍🔬","🧑🏽‍🔬","🧑🏾‍🔬","🧑🏿‍🔬","👨‍🔬","👨🏻‍🔬","👨🏼‍🔬","👨🏽‍🔬","👨🏾‍🔬","👨🏿‍🔬","👩‍🔬","👩🏻‍🔬","👩🏼‍🔬","👩🏽‍🔬","👩🏾‍🔬","👩🏿‍🔬","🧑‍💻","🧑🏻‍💻","🧑🏼‍💻","🧑🏽‍💻","🧑🏾‍💻","🧑🏿‍💻","👨‍💻","👨🏻‍💻","👨🏼‍💻","👨🏽‍💻","👨🏾‍💻","👨🏿‍💻","👩‍💻","👩🏻‍💻","👩🏼‍💻","👩🏽‍💻","👩🏾‍💻","👩🏿‍💻","🧑‍🎤","🧑🏻‍🎤","🧑🏼‍🎤","🧑🏽‍🎤","🧑🏾‍🎤","🧑🏿‍🎤","👨‍🎤","👨🏻‍🎤","👨🏼‍🎤","👨🏽‍🎤","👨🏾‍🎤","👨🏿‍🎤","👩‍🎤","👩🏻‍🎤","👩🏼‍🎤","👩🏽‍🎤","👩🏾‍🎤","👩🏿‍🎤","🧑‍🎨","🧑🏻‍🎨","🧑🏼‍🎨","🧑🏽‍🎨","🧑🏾‍🎨","🧑🏿‍🎨","👨‍🎨","👨🏻‍🎨","👨🏼‍🎨","👨🏽‍🎨","👨🏾‍🎨","👨🏿‍🎨","👩‍🎨","👩🏻‍🎨","👩🏼‍🎨","👩🏽‍🎨","👩🏾‍🎨","👩🏿‍🎨","🧑‍✈️","🧑🏻‍✈️","🧑🏼‍✈️","🧑🏽‍✈️","🧑🏾‍✈️","🧑🏿‍✈️","👨‍✈️","👨🏻‍✈️","👨🏼‍✈️","👨🏽‍✈️","👨🏾‍✈️","👨🏿‍✈️","👩‍✈️","👩🏻‍✈️","👩🏼‍✈️","👩🏽‍✈️","👩🏾‍✈️","👩🏿‍✈️","🧑‍🚀","🧑🏻‍🚀","🧑🏼‍🚀","🧑🏽‍🚀","🧑🏾‍🚀","🧑🏿‍🚀","👨‍🚀","👨🏻‍🚀","👨🏼‍🚀","👨🏽‍🚀","👨🏾‍🚀","👨🏿‍🚀","👩‍🚀","👩🏻‍🚀","👩🏼‍🚀","👩🏽‍🚀","👩🏾‍🚀","👩🏿‍🚀","🧑‍🚒","🧑🏻‍🚒","🧑🏼‍🚒","🧑🏽‍🚒","🧑🏾‍🚒","🧑🏿‍🚒","👨‍🚒","👨🏻‍🚒","👨🏼‍🚒","👨🏽‍🚒","👨🏾‍🚒","👨🏿‍🚒","👩‍🚒","👩🏻‍🚒","👩🏼‍🚒","👩🏽‍🚒","👩🏾‍🚒","👩🏿‍🚒","👮","👮🏻","👮🏼","👮🏽","👮🏾","👮🏿","👮‍♂️","👮🏻‍♂️","👮🏼‍♂️","👮🏽‍♂️","👮🏾‍♂️","👮🏿‍♂️","👮‍♀️","👮🏻‍♀️","👮🏼‍♀️","👮🏽‍♀️","👮🏾‍♀️","👮🏿‍♀️","🕵️","🕵🏻","🕵🏼","🕵🏽","🕵🏾","🕵🏿","🕵️‍♂️","🕵🏻‍♂️","🕵🏼‍♂️","🕵🏽‍♂️","🕵🏾‍♂️","🕵🏿‍♂️","🕵️‍♀️","🕵🏻‍♀️","🕵🏼‍♀️","🕵🏽‍♀️","🕵🏾‍♀️","🕵🏿‍♀️","💂","💂🏻","💂🏼","💂🏽","💂🏾","💂🏿","💂‍♂️","💂🏻‍♂️","💂🏼‍♂️","💂🏽‍♂️","💂🏾‍♂️","💂🏿‍♂️","💂‍♀️","💂🏻‍♀️","💂🏼‍♀️","💂🏽‍♀️","💂🏾‍♀️","💂🏿‍♀️","🥷","🥷🏻","🥷🏼","🥷🏽","🥷🏾","🥷🏿","👷","👷🏻","👷🏼","👷🏽","👷🏾","👷🏿","👷‍♂️","👷🏻‍♂️","👷🏼‍♂️","👷🏽‍♂️","👷🏾‍♂️","👷🏿‍♂️","👷‍♀️","👷🏻‍♀️","👷🏼‍♀️","👷🏽‍♀️","👷🏾‍♀️","👷🏿‍♀️","🤴","🤴🏻","🤴🏼","🤴🏽","🤴🏾","🤴🏿","👸","👸🏻","👸🏼","👸🏽","👸🏾","👸🏿","👳","👳🏻","👳🏼","👳🏽","👳🏾","👳🏿","👳‍♂️","👳🏻‍♂️","👳🏼‍♂️","👳🏽‍♂️","👳🏾‍♂️","👳🏿‍♂️","👳‍♀️","👳🏻‍♀️","👳🏼‍♀️","👳🏽‍♀️","👳🏾‍♀️","👳🏿‍♀️","👲","👲🏻","👲🏼","👲🏽","👲🏾","👲🏿","🧕","🧕🏻","🧕🏼","🧕🏽","🧕🏾","🧕🏿","🤵","🤵🏻","🤵🏼","🤵🏽","🤵🏾","🤵🏿","🤵‍♂️","🤵🏻‍♂️","🤵🏼‍♂️","🤵🏽‍♂️","🤵🏾‍♂️","🤵🏿‍♂️","🤵‍♀️","🤵🏻‍♀️","🤵🏼‍♀️","🤵🏽‍♀️","🤵🏾‍♀️","🤵🏿‍♀️","👰","👰🏻","👰🏼","👰🏽","👰🏾","👰🏿","👰‍♂️","👰🏻‍♂️","👰🏼‍♂️","👰🏽‍♂️","👰🏾‍♂️","👰🏿‍♂️","👰‍♀️","👰🏻‍♀️","👰🏼‍♀️","👰🏽‍♀️","👰🏾‍♀️","👰🏿‍♀️","🤰","🤰🏻","🤰🏼","🤰🏽","🤰🏾","🤰🏿","🤱","🤱🏻","🤱🏼","🤱🏽","🤱🏾","🤱🏿","👩‍🍼","👩🏻‍🍼","👩🏼‍🍼","👩🏽‍🍼","👩🏾‍🍼","👩🏿‍🍼","👨‍🍼","👨🏻‍🍼","👨🏼‍🍼","👨🏽‍🍼","👨🏾‍🍼","👨🏿‍🍼","🧑‍🍼","🧑🏻‍🍼","🧑🏼‍🍼","🧑🏽‍🍼","🧑🏾‍🍼","🧑🏿‍🍼","👼","👼🏻","👼🏼","👼🏽","👼🏾","👼🏿","🎅","🎅🏻","🎅🏼","🎅🏽","🎅🏾","🎅🏿","🤶","🤶🏻","🤶🏼","🤶🏽","🤶🏾","🤶🏿","🧑‍🎄","🧑🏻‍🎄","🧑🏼‍🎄","🧑🏽‍🎄","🧑🏾‍🎄","🧑🏿‍🎄","🦸","🦸🏻","🦸🏼","🦸🏽","🦸🏾","🦸🏿","🦸‍♂️","🦸🏻‍♂️","🦸🏼‍♂️","🦸🏽‍♂️","🦸🏾‍♂️","🦸🏿‍♂️","🦸‍♀️","🦸🏻‍♀️","🦸🏼‍♀️","🦸🏽‍♀️","🦸🏾‍♀️","🦸🏿‍♀️","🦹","🦹🏻","🦹🏼","🦹🏽","🦹🏾","🦹🏿","🦹‍♂️","🦹🏻‍♂️","🦹🏼‍♂️","🦹🏽‍♂️","🦹🏾‍♂️","🦹🏿‍♂️","🦹‍♀️","🦹🏻‍♀️","🦹🏼‍♀️","🦹🏽‍♀️","🦹🏾‍♀️","🦹🏿‍♀️","🧙","🧙🏻","🧙🏼","🧙🏽","🧙🏾","🧙🏿","🧙‍♂️","🧙🏻‍♂️","🧙🏼‍♂️","🧙🏽‍♂️","🧙🏾‍♂️","🧙🏿‍♂️","🧙‍♀️","🧙🏻‍♀️","🧙🏼‍♀️","🧙🏽‍♀️","🧙🏾‍♀️","🧙🏿‍♀️","🧚","🧚🏻","🧚🏼","🧚🏽","🧚🏾","🧚🏿","🧚‍♂️","🧚🏻‍♂️","🧚🏼‍♂️","🧚🏽‍♂️","🧚🏾‍♂️","🧚🏿‍♂️","🧚‍♀️","🧚🏻‍♀️","🧚🏼‍♀️","🧚🏽‍♀️","🧚🏾‍♀️","🧚🏿‍♀️","🧛","🧛🏻","🧛🏼","🧛🏽","🧛🏾","🧛🏿","🧛‍♂️","🧛🏻‍♂️","🧛🏼‍♂️","🧛🏽‍♂️","🧛🏾‍♂️","🧛🏿‍♂️","🧛‍♀️","🧛🏻‍♀️","🧛🏼‍♀️","🧛🏽‍♀️","🧛🏾‍♀️","🧛🏿‍♀️","🧜","🧜🏻","🧜🏼","🧜🏽","🧜🏾","🧜🏿","🧜‍♂️","🧜🏻‍♂️","🧜🏼‍♂️","🧜🏽‍♂️","🧜🏾‍♂️","🧜🏿‍♂️","🧜‍♀️","🧜🏻‍♀️","🧜🏼‍♀️","🧜🏽‍♀️","🧜🏾‍♀️","🧜🏿‍♀️","🧝","🧝🏻","🧝🏼","🧝🏽","🧝🏾","🧝🏿","🧝‍♂️","🧝🏻‍♂️","🧝🏼‍♂️","🧝🏽‍♂️","🧝🏾‍♂️","🧝🏿‍♂️","🧝‍♀️","🧝🏻‍♀️","🧝🏼‍♀️","🧝🏽‍♀️","🧝🏾‍♀️","🧝🏿‍♀️","🧞","🧞‍♂️","🧞‍♀️","🧟","🧟‍♂️","🧟‍♀️","💆","💆🏻","💆🏼","💆🏽","💆🏾","💆🏿","💆‍♂️","💆🏻‍♂️","💆🏼‍♂️","💆🏽‍♂️","💆🏾‍♂️","💆🏿‍♂️","💆‍♀️","💆🏻‍♀️","💆🏼‍♀️","💆🏽‍♀️","💆🏾‍♀️","💆🏿‍♀️","💇","💇🏻","💇🏼","💇🏽","💇🏾","💇🏿","💇‍♂️","💇🏻‍♂️","💇🏼‍♂️","💇🏽‍♂️","💇🏾‍♂️","💇🏿‍♂️","💇‍♀️","💇🏻‍♀️","💇🏼‍♀️","💇🏽‍♀️","💇🏾‍♀️","💇🏿‍♀️","🚶","🚶🏻","🚶🏼","🚶🏽","🚶🏾","🚶🏿","🚶‍♂️","🚶🏻‍♂️","🚶🏼‍♂️","🚶🏽‍♂️","🚶🏾‍♂️","🚶🏿‍♂️","🚶‍♀️","🚶🏻‍♀️","🚶🏼‍♀️","🚶🏽‍♀️","🚶🏾‍♀️","🚶🏿‍♀️","🧍","🧍🏻","🧍🏼","🧍🏽","🧍🏾","🧍🏿","🧍‍♂️","🧍🏻‍♂️","🧍🏼‍♂️","🧍🏽‍♂️","🧍🏾‍♂️","🧍🏿‍♂️","🧍‍♀️","🧍🏻‍♀️","🧍🏼‍♀️","🧍🏽‍♀️","🧍🏾‍♀️","🧍🏿‍♀️","🧎","🧎🏻","🧎🏼","🧎🏽","🧎🏾","🧎🏿","🧎‍♂️","🧎🏻‍♂️","🧎🏼‍♂️","🧎🏽‍♂️","🧎🏾‍♂️","🧎🏿‍♂️","🧎‍♀️","🧎🏻‍♀️","🧎🏼‍♀️","🧎🏽‍♀️","🧎🏾‍♀️","🧎🏿‍♀️","🧑‍🦯","🧑🏻‍🦯","🧑🏼‍🦯","🧑🏽‍🦯","🧑🏾‍🦯","🧑🏿‍🦯","👨‍🦯","👨🏻‍🦯","👨🏼‍🦯","👨🏽‍🦯","👨🏾‍🦯","👨🏿‍🦯","👩‍🦯","👩🏻‍🦯","👩🏼‍🦯","👩🏽‍🦯","👩🏾‍🦯","👩🏿‍🦯","🧑‍🦼","🧑🏻‍🦼","🧑🏼‍🦼","🧑🏽‍🦼","🧑🏾‍🦼","🧑🏿‍🦼","👨‍🦼","👨🏻‍🦼","👨🏼‍🦼","👨🏽‍🦼","👨🏾‍🦼","👨🏿‍🦼","👩‍🦼","👩🏻‍🦼","👩🏼‍🦼","👩🏽‍🦼","👩🏾‍🦼","👩🏿‍🦼","🧑‍🦽","🧑🏻‍🦽","🧑🏼‍🦽","🧑🏽‍🦽","🧑🏾‍🦽","🧑🏿‍🦽","👨‍🦽","👨🏻‍🦽","👨🏼‍🦽","👨🏽‍🦽","👨🏾‍🦽","👨🏿‍🦽","👩‍🦽","👩🏻‍🦽","👩🏼‍🦽","👩🏽‍🦽","👩🏾‍🦽","👩🏿‍🦽","🏃","🏃🏻","🏃🏼","🏃🏽","🏃🏾","🏃🏿","🏃‍♂️","🏃🏻‍♂️","🏃🏼‍♂️","🏃🏽‍♂️","🏃🏾‍♂️","🏃🏿‍♂️","🏃‍♀️","🏃🏻‍♀️","🏃🏼‍♀️","🏃🏽‍♀️","🏃🏾‍♀️","🏃🏿‍♀️","💃","💃🏻","💃🏼","💃🏽","💃🏾","💃🏿","🕺","🕺🏻","🕺🏼","🕺🏽","🕺🏾","🕺🏿","🕴️","🕴🏻","🕴🏼","🕴🏽","🕴🏾","🕴🏿","👯","👯‍♂️","👯‍♀️","🧖","🧖🏻","🧖🏼","🧖🏽","🧖🏾","🧖🏿","🧖‍♂️","🧖🏻‍♂️","🧖🏼‍♂️","🧖🏽‍♂️","🧖🏾‍♂️","🧖🏿‍♂️","🧖‍♀️","🧖🏻‍♀️","🧖🏼‍♀️","🧖🏽‍♀️","🧖🏾‍♀️","🧖🏿‍♀️","🧗","🧗🏻","🧗🏼","🧗🏽","🧗🏾","🧗🏿","🧗‍♂️","🧗🏻‍♂️","🧗🏼‍♂️","🧗🏽‍♂️","🧗🏾‍♂️","🧗🏿‍♂️","🧗‍♀️","🧗🏻‍♀️","🧗🏼‍♀️","🧗🏽‍♀️","🧗🏾‍♀️","🧗🏿‍♀️","🤺","🏇","🏇🏻","🏇🏼","🏇🏽","🏇🏾","🏇🏿","⛷️","🏂","🏂🏻","🏂🏼","🏂🏽","🏂🏾","🏂🏿","🏌️","🏌🏻","🏌🏼","🏌🏽","🏌🏾","🏌🏿","🏌️‍♂️","🏌🏻‍♂️","🏌🏼‍♂️","🏌🏽‍♂️","🏌🏾‍♂️","🏌🏿‍♂️","🏌️‍♀️","🏌🏻‍♀️","🏌🏼‍♀️","🏌🏽‍♀️","🏌🏾‍♀️","🏌🏿‍♀️","🏄","🏄🏻","🏄🏼","🏄🏽","🏄🏾","🏄🏿","🏄‍♂️","🏄🏻‍♂️","🏄🏼‍♂️","🏄🏽‍♂️","🏄🏾‍♂️","🏄🏿‍♂️","🏄‍♀️","🏄🏻‍♀️","🏄🏼‍♀️","🏄🏽‍♀️","🏄🏾‍♀️","🏄🏿‍♀️","🚣","🚣🏻","🚣🏼","🚣🏽","🚣🏾","🚣🏿","🚣‍♂️","🚣🏻‍♂️","🚣🏼‍♂️","🚣🏽‍♂️","🚣🏾‍♂️","🚣🏿‍♂️","🚣‍♀️","🚣🏻‍♀️","🚣🏼‍♀️","🚣🏽‍♀️","🚣🏾‍♀️","🚣🏿‍♀️","🏊","🏊🏻","🏊🏼","🏊🏽","🏊🏾","🏊🏿","🏊‍♂️","🏊🏻‍♂️","🏊🏼‍♂️","🏊🏽‍♂️","🏊🏾‍♂️","🏊🏿‍♂️","🏊‍♀️","🏊🏻‍♀️","🏊🏼‍♀️","🏊🏽‍♀️","🏊🏾‍♀️","🏊🏿‍♀️","⛹️","⛹🏻","⛹🏼","⛹🏽","⛹🏾","⛹🏿","⛹️‍♂️","⛹🏻‍♂️","⛹🏼‍♂️","⛹🏽‍♂️","⛹🏾‍♂️","⛹🏿‍♂️","⛹️‍♀️","⛹🏻‍♀️","⛹🏼‍♀️","⛹🏽‍♀️","⛹🏾‍♀️","⛹🏿‍♀️","🏋️","🏋🏻","🏋🏼","🏋🏽","🏋🏾","🏋🏿","🏋️‍♂️","🏋🏻‍♂️","🏋🏼‍♂️","🏋🏽‍♂️","🏋🏾‍♂️","🏋🏿‍♂️","🏋️‍♀️","🏋🏻‍♀️","🏋🏼‍♀️","🏋🏽‍♀️","🏋🏾‍♀️","🏋🏿‍♀️","🚴","🚴🏻","🚴🏼","🚴🏽","🚴🏾","🚴🏿","🚴‍♂️","🚴🏻‍♂️","🚴🏼‍♂️","🚴🏽‍♂️","🚴🏾‍♂️","🚴🏿‍♂️","🚴‍♀️","🚴🏻‍♀️","🚴🏼‍♀️","🚴🏽‍♀️","🚴🏾‍♀️","🚴🏿‍♀️","🚵","🚵🏻","🚵🏼","🚵🏽","🚵🏾","🚵🏿","🚵‍♂️","🚵🏻‍♂️","🚵🏼‍♂️","🚵🏽‍♂️","🚵🏾‍♂️","🚵🏿‍♂️","🚵‍♀️","🚵🏻‍♀️","🚵🏼‍♀️","🚵🏽‍♀️","🚵🏾‍♀️","🚵🏿‍♀️","🤸","🤸🏻","🤸🏼","🤸🏽","🤸🏾","🤸🏿","🤸‍♂️","🤸🏻‍♂️","🤸🏼‍♂️","🤸🏽‍♂️","🤸🏾‍♂️","🤸🏿‍♂️","🤸‍♀️","🤸🏻‍♀️","🤸🏼‍♀️","🤸🏽‍♀️","🤸🏾‍♀️","🤸🏿‍♀️","🤼","🤼‍♂️","🤼‍♀️","🤽","🤽🏻","🤽🏼","🤽🏽","🤽🏾","🤽🏿","🤽‍♂️","🤽🏻‍♂️","🤽🏼‍♂️","🤽🏽‍♂️","🤽🏾‍♂️","🤽🏿‍♂️","🤽‍♀️","🤽🏻‍♀️","🤽🏼‍♀️","🤽🏽‍♀️","🤽🏾‍♀️","🤽🏿‍♀️","🤾","🤾🏻","🤾🏼","🤾🏽","🤾🏾","🤾🏿","🤾‍♂️","🤾🏻‍♂️","🤾🏼‍♂️","🤾🏽‍♂️","🤾🏾‍♂️","🤾🏿‍♂️","🤾‍♀️","🤾🏻‍♀️","🤾🏼‍♀️","🤾🏽‍♀️","🤾🏾‍♀️","🤾🏿‍♀️","🤹","🤹🏻","🤹🏼","🤹🏽","🤹🏾","🤹🏿","🤹‍♂️","🤹🏻‍♂️","🤹🏼‍♂️","🤹🏽‍♂️","🤹🏾‍♂️","🤹🏿‍♂️","🤹‍♀️","🤹🏻‍♀️","🤹🏼‍♀️","🤹🏽‍♀️","🤹🏾‍♀️","🤹🏿‍♀️","🧘","🧘🏻","🧘🏼","🧘🏽","🧘🏾","🧘🏿","🧘‍♂️","🧘🏻‍♂️","🧘🏼‍♂️","🧘🏽‍♂️","🧘🏾‍♂️","🧘🏿‍♂️","🧘‍♀️","🧘🏻‍♀️","🧘🏼‍♀️","🧘🏽‍♀️","🧘🏾‍♀️","🧘🏿‍♀️","🛀","🛀🏻","🛀🏼","🛀🏽","🛀🏾","🛀🏿","🛌","🛌🏻","🛌🏼","🛌🏽","🛌🏾","🛌🏿","🧑‍🤝‍🧑","🧑🏻‍🤝‍🧑🏻","🧑🏻‍🤝‍🧑🏼","🧑🏻‍🤝‍🧑🏽","🧑🏻‍🤝‍🧑🏾","🧑🏻‍🤝‍🧑🏿","🧑🏼‍🤝‍🧑🏻","🧑🏼‍🤝‍🧑🏼","🧑🏼‍🤝‍🧑🏽","🧑🏼‍🤝‍🧑🏾","🧑🏼‍🤝‍🧑🏿","🧑🏽‍🤝‍🧑🏻","🧑🏽‍🤝‍🧑🏼","🧑🏽‍🤝‍🧑🏽","🧑🏽‍🤝‍🧑🏾","🧑🏽‍🤝‍🧑🏿","🧑🏾‍🤝‍🧑🏻","🧑🏾‍🤝‍🧑🏼","🧑🏾‍🤝‍🧑🏽","🧑🏾‍🤝‍🧑🏾","🧑🏾‍🤝‍🧑🏿","🧑🏿‍🤝‍🧑🏻","🧑🏿‍🤝‍🧑🏼","🧑🏿‍🤝‍🧑🏽","🧑🏿‍🤝‍🧑🏾","🧑🏿‍🤝‍🧑🏿","👭","👭🏻","👩🏻‍🤝‍👩🏼","👩🏻‍🤝‍👩🏽","👩🏻‍🤝‍👩🏾","👩🏻‍🤝‍👩🏿","👩🏼‍🤝‍👩🏻","👭🏼","👩🏼‍🤝‍👩🏽","👩🏼‍🤝‍👩🏾","👩🏼‍🤝‍👩🏿","👩🏽‍🤝‍👩🏻","👩🏽‍🤝‍👩🏼","👭🏽","👩🏽‍🤝‍👩🏾","👩🏽‍🤝‍👩🏿","👩🏾‍🤝‍👩🏻","👩🏾‍🤝‍👩🏼","👩🏾‍🤝‍👩🏽","👭🏾","👩🏾‍🤝‍👩🏿","👩🏿‍🤝‍👩🏻","👩🏿‍🤝‍👩🏼","👩🏿‍🤝‍👩🏽","👩🏿‍🤝‍👩🏾","👭🏿","👫","👫🏻","👩🏻‍🤝‍👨🏼","👩🏻‍🤝‍👨🏽","👩🏻‍🤝‍👨🏾","👩🏻‍🤝‍👨🏿","👩🏼‍🤝‍👨🏻","👫🏼","👩🏼‍🤝‍👨🏽","👩🏼‍🤝‍👨🏾","👩🏼‍🤝‍👨🏿","👩🏽‍🤝‍👨🏻","👩🏽‍🤝‍👨🏼","👫🏽","👩🏽‍🤝‍👨🏾","👩🏽‍🤝‍👨🏿","👩🏾‍🤝‍👨🏻","👩🏾‍🤝‍👨🏼","👩🏾‍🤝‍👨🏽","👫🏾","👩🏾‍🤝‍👨🏿","👩🏿‍🤝‍👨🏻","👩🏿‍🤝‍👨🏼","👩🏿‍🤝‍👨🏽","👩🏿‍🤝‍👨🏾","👫🏿","👬","👬🏻","👨🏻‍🤝‍👨🏼","👨🏻‍🤝‍👨🏽","👨🏻‍🤝‍👨🏾","👨🏻‍🤝‍👨🏿","👨🏼‍🤝‍👨🏻","👬🏼","👨🏼‍🤝‍👨🏽","👨🏼‍🤝‍👨🏾","👨🏼‍🤝‍👨🏿","👨🏽‍🤝‍👨🏻","👨🏽‍🤝‍👨🏼","👬🏽","👨🏽‍🤝‍👨🏾","👨🏽‍🤝‍👨🏿","👨🏾‍🤝‍👨🏻","👨🏾‍🤝‍👨🏼","👨🏾‍🤝‍👨🏽","👬🏾","👨🏾‍🤝‍👨🏿","👨🏿‍🤝‍👨🏻","👨🏿‍🤝‍👨🏼","👨🏿‍🤝‍👨🏽","👨🏿‍🤝‍👨🏾","👬🏿","💏","💏🏻","💏🏼","💏🏽","💏🏾","💏🏿","🧑🏻‍❤️‍💋‍🧑🏼","🧑🏻‍❤️‍💋‍🧑🏽","🧑🏻‍❤️‍💋‍🧑🏾","🧑🏻‍❤️‍💋‍🧑🏿","🧑🏼‍❤️‍💋‍🧑🏻","🧑🏼‍❤️‍💋‍🧑🏽","🧑🏼‍❤️‍💋‍🧑🏾","🧑🏼‍❤️‍💋‍🧑🏿","🧑🏽‍❤️‍💋‍🧑🏻","🧑🏽‍❤️‍💋‍🧑🏼","🧑🏽‍❤️‍💋‍🧑🏾","🧑🏽‍❤️‍💋‍🧑🏿","🧑🏾‍❤️‍💋‍🧑🏻","🧑🏾‍❤️‍💋‍🧑🏼","🧑🏾‍❤️‍💋‍🧑🏽","🧑🏾‍❤️‍💋‍🧑🏿","🧑🏿‍❤️‍💋‍🧑🏻","🧑🏿‍❤️‍💋‍🧑🏼","🧑🏿‍❤️‍💋‍🧑🏽","🧑🏿‍❤️‍💋‍🧑🏾","👩‍❤️‍💋‍👨","👩🏻‍❤️‍💋‍👨🏻","👩🏻‍❤️‍💋‍👨🏼","👩🏻‍❤️‍💋‍👨🏽","👩🏻‍❤️‍💋‍👨🏾","👩🏻‍❤️‍💋‍👨🏿","👩🏼‍❤️‍💋‍👨🏻","👩🏼‍❤️‍💋‍👨🏼","👩🏼‍❤️‍💋‍👨🏽","👩🏼‍❤️‍💋‍👨🏾","👩🏼‍❤️‍💋‍👨🏿","👩🏽‍❤️‍💋‍👨🏻","👩🏽‍❤️‍💋‍👨🏼","👩🏽‍❤️‍💋‍👨🏽","👩🏽‍❤️‍💋‍👨🏾","👩🏽‍❤️‍💋‍👨🏿","👩🏾‍❤️‍💋‍👨🏻","👩🏾‍❤️‍💋‍👨🏼","👩🏾‍❤️‍💋‍👨🏽","👩🏾‍❤️‍💋‍👨🏾","👩🏾‍❤️‍💋‍👨🏿","👩🏿‍❤️‍💋‍👨🏻","👩🏿‍❤️‍💋‍👨🏼","👩🏿‍❤️‍💋‍👨🏽","👩🏿‍❤️‍💋‍👨🏾","👩🏿‍❤️‍💋‍👨🏿","👨‍❤️‍💋‍👨","👨🏻‍❤️‍💋‍👨🏻","👨🏻‍❤️‍💋‍👨🏼","👨🏻‍❤️‍💋‍👨🏽","👨🏻‍❤️‍💋‍👨🏾","👨🏻‍❤️‍💋‍👨🏿","👨🏼‍❤️‍💋‍👨🏻","👨🏼‍❤️‍💋‍👨🏼","👨🏼‍❤️‍💋‍👨🏽","👨🏼‍❤️‍💋‍👨🏾","👨🏼‍❤️‍💋‍👨🏿","👨🏽‍❤️‍💋‍👨🏻","👨🏽‍❤️‍💋‍👨🏼","👨🏽‍❤️‍💋‍👨🏽","👨🏽‍❤️‍💋‍👨🏾","👨🏽‍❤️‍💋‍👨🏿","👨🏾‍❤️‍💋‍👨🏻","👨🏾‍❤️‍💋‍👨🏼","👨🏾‍❤️‍💋‍👨🏽","👨🏾‍❤️‍💋‍👨🏾","👨🏾‍❤️‍💋‍👨🏿","👨🏿‍❤️‍💋‍👨🏻","👨🏿‍❤️‍💋‍👨🏼","👨🏿‍❤️‍💋‍👨🏽","👨🏿‍❤️‍💋‍👨🏾","👨🏿‍❤️‍💋‍👨🏿","👩‍❤️‍💋‍👩","👩🏻‍❤️‍💋‍👩🏻","👩🏻‍❤️‍💋‍👩🏼","👩🏻‍❤️‍💋‍👩🏽","👩🏻‍❤️‍💋‍👩🏾","👩🏻‍❤️‍💋‍👩🏿","👩🏼‍❤️‍💋‍👩🏻","👩🏼‍❤️‍💋‍👩🏼","👩🏼‍❤️‍💋‍👩🏽","👩🏼‍❤️‍💋‍👩🏾","👩🏼‍❤️‍💋‍👩🏿","👩🏽‍❤️‍💋‍👩🏻","👩🏽‍❤️‍💋‍👩🏼","👩🏽‍❤️‍💋‍👩🏽","👩🏽‍❤️‍💋‍👩🏾","👩🏽‍❤️‍💋‍👩🏿","👩🏾‍❤️‍💋‍👩🏻","👩🏾‍❤️‍💋‍👩🏼","👩🏾‍❤️‍💋‍👩🏽","👩🏾‍❤️‍💋‍👩🏾","👩🏾‍❤️‍💋‍👩🏿","👩🏿‍❤️‍💋‍👩🏻","👩🏿‍❤️‍💋‍👩🏼","👩🏿‍❤️‍💋‍👩🏽","👩🏿‍❤️‍💋‍👩🏾","👩🏿‍❤️‍💋‍👩🏿","💑","💑🏻","💑🏼","💑🏽","💑🏾","💑🏿","🧑🏻‍❤️‍🧑🏼","🧑🏻‍❤️‍🧑🏽","🧑🏻‍❤️‍🧑🏾","🧑🏻‍❤️‍🧑🏿","🧑🏼‍❤️‍🧑🏻","🧑🏼‍❤️‍🧑🏽","🧑🏼‍❤️‍🧑🏾","🧑🏼‍❤️‍🧑🏿","🧑🏽‍❤️‍🧑🏻","🧑🏽‍❤️‍🧑🏼","🧑🏽‍❤️‍🧑🏾","🧑🏽‍❤️‍🧑🏿","🧑🏾‍❤️‍🧑🏻","🧑🏾‍❤️‍🧑🏼","🧑🏾‍❤️‍🧑🏽","🧑🏾‍❤️‍🧑🏿","🧑🏿‍❤️‍🧑🏻","🧑🏿‍❤️‍🧑🏼","🧑🏿‍❤️‍🧑🏽","🧑🏿‍❤️‍🧑🏾","👩‍❤️‍👨","👩🏻‍❤️‍👨🏻","👩🏻‍❤️‍👨🏼","👩🏻‍❤️‍👨🏽","👩🏻‍❤️‍👨🏾","👩🏻‍❤️‍👨🏿","👩🏼‍❤️‍👨🏻","👩🏼‍❤️‍👨🏼","👩🏼‍❤️‍👨🏽","👩🏼‍❤️‍👨🏾","👩🏼‍❤️‍👨🏿","👩🏽‍❤️‍👨🏻","👩🏽‍❤️‍👨🏼","👩🏽‍❤️‍👨🏽","👩🏽‍❤️‍👨🏾","👩🏽‍❤️‍👨🏿","👩🏾‍❤️‍👨🏻","👩🏾‍❤️‍👨🏼","👩🏾‍❤️‍👨🏽","👩🏾‍❤️‍👨🏾","👩🏾‍❤️‍👨🏿","👩🏿‍❤️‍👨🏻","👩🏿‍❤️‍👨🏼","👩🏿‍❤️‍👨🏽","👩🏿‍❤️‍👨🏾","👩🏿‍❤️‍👨🏿","👨‍❤️‍👨","👨🏻‍❤️‍👨🏻","👨🏻‍❤️‍👨🏼","👨🏻‍❤️‍👨🏽","👨🏻‍❤️‍👨🏾","👨🏻‍❤️‍👨🏿","👨🏼‍❤️‍👨🏻","👨🏼‍❤️‍👨🏼","👨🏼‍❤️‍👨🏽","👨🏼‍❤️‍👨🏾","👨🏼‍❤️‍👨🏿","👨🏽‍❤️‍👨🏻","👨🏽‍❤️‍👨🏼","👨🏽‍❤️‍👨🏽","👨🏽‍❤️‍👨🏾","👨🏽‍❤️‍👨🏿","👨🏾‍❤️‍👨🏻","👨🏾‍❤️‍👨🏼","👨🏾‍❤️‍👨🏽","👨🏾‍❤️‍👨🏾","👨🏾‍❤️‍👨🏿","👨🏿‍❤️‍👨🏻","👨🏿‍❤️‍👨🏼","👨🏿‍❤️‍👨🏽","👨🏿‍❤️‍👨🏾","👨🏿‍❤️‍👨🏿","👩‍❤️‍👩","👩🏻‍❤️‍👩🏻","👩🏻‍❤️‍👩🏼","👩🏻‍❤️‍👩🏽","👩🏻‍❤️‍👩🏾","👩🏻‍❤️‍👩🏿","👩🏼‍❤️‍👩🏻","👩🏼‍❤️‍👩🏼","👩🏼‍❤️‍👩🏽","👩🏼‍❤️‍👩🏾","👩🏼‍❤️‍👩🏿","👩🏽‍❤️‍👩🏻","👩🏽‍❤️‍👩🏼","👩🏽‍❤️‍👩🏽","👩🏽‍❤️‍👩🏾","👩🏽‍❤️‍👩🏿","👩🏾‍❤️‍👩🏻","👩🏾‍❤️‍👩🏼","👩🏾‍❤️‍👩🏽","👩🏾‍❤️‍👩🏾","👩🏾‍❤️‍👩🏿","👩🏿‍❤️‍👩🏻","👩🏿‍❤️‍👩🏼","👩🏿‍❤️‍👩🏽","👩🏿‍❤️‍👩🏾","👩🏿‍❤️‍👩🏿","👪","👨‍👩‍👦","👨‍👩‍👧","👨‍👩‍👧‍👦","👨‍👩‍👦‍👦","👨‍👩‍👧‍👧","👨‍👨‍👦","👨‍👨‍👧","👨‍👨‍👧‍👦","👨‍👨‍👦‍👦","👨‍👨‍👧‍👧","👩‍👩‍👦","👩‍👩‍👧","👩‍👩‍👧‍👦","👩‍👩‍👦‍👦","👩‍👩‍👧‍👧","👨‍👦","👨‍👦‍👦","👨‍👧","👨‍👧‍👦","👨‍👧‍👧","👩‍👦","👩‍👦‍👦","👩‍👧","👩‍👧‍👦","👩‍👧‍👧","🗣️","👤","👥","🫂","👣"],nature:["🐵","🐒","🦍","🦧","🐶","🐕","🦮","🐕‍🦺","🐩","🐺","🦊","🦝","🐱","🐈","🐈‍⬛","🦁","🐯","🐅","🐆","🐴","🐎","🦄","🦓","🦌","🦬","🐮","🐂","🐃","🐄","🐷","🐖","🐗","🐽","🐏","🐑","🐐","🐪","🐫","🦙","🦒","🐘","🦣","🦏","🦛","🐭","🐁","🐀","🐹","🐰","🐇","🐿️","🦫","🦔","🦇","🐻","🐻‍❄️","🐨","🐼","🦥","🦦","🦨","🦘","🦡","🐾","🦃","🐔","🐓","🐣","🐤","🐥","🐦","🐧","🕊️","🦅","🦆","🦢","🦉","🦤","🪶","🦩","🦚","🦜","🐸","🐊","🐢","🦎","🐍","🐲","🐉","🦕","🦖","🐳","🐋","🐬","🦭","🐟","🐠","🐡","🦈","🐙","🐚","🐌","🦋","🐛","🐜","🐝","🪲","🐞","🦗","🪳","🕷️","🕸️","🦂","🦟","🪰","🪱","🦠","💐","🌸","💮","🏵️","🌹","🥀","🌺","🌻","🌼","🌷","🌱","🪴","🌲","🌳","🌴","🌵","🌾","🌿","☘️","🍀","🍁","🍂","🍃"],food:["🍇","🍈","🍉","🍊","🍋","🍌","🍍","🥭","🍎","🍏","🍐","🍑","🍒","🍓","🫐","🥝","🍅","🫒","🥥","🥑","🍆","🥔","🥕","🌽","🌶️","🫑","🥒","🥬","🥦","🧄","🧅","🍄","🥜","🌰","🍞","🥐","🥖","🫓","🥨","🥯","🥞","🧇","🧀","🍖","🍗","🥩","🥓","🍔","🍟","🍕","🌭","🥪","🌮","🌯","🫔","🥙","🧆","🥚","🍳","🥘","🍲","🫕","🥣","🥗","🍿","🧈","🧂","🥫","🍱","🍘","🍙","🍚","🍛","🍜","🍝","🍠","🍢","🍣","🍤","🍥","🥮","🍡","🥟","🥠","🥡","🦀","🦞","🦐","🦑","🦪","🍦","🍧","🍨","🍩","🍪","🎂","🍰","🧁","🥧","🍫","🍬","🍭","🍮","🍯","🍼","🥛","☕","🫖","🍵","🍶","🍾","🍷","🍸","🍹","🍺","🍻","🥂","🥃","🥤","🧋","🧃","🧉","🧊","🥢","🍽️","🍴","🥄","🔪","🏺"],travel:["🌍","🌎","🌏","🌐","🗺️","🗾","🧭","🏔️","⛰️","🌋","🗻","🏕️","🏖️","🏜️","🏝️","🏞️","🏟️","🏛️","🏗️","🧱","🪨","🪵","🛖","🏘️","🏚️","🏠","🏡","🏢","🏣","🏤","🏥","🏦","🏨","🏩","🏪","🏫","🏬","🏭","🏯","🏰","💒","🗼","🗽","⛪","🕌","🛕","🕍","⛩️","🕋","⛲","⛺","🌁","🌃","🏙️","🌄","🌅","🌆","🌇","🌉","♨️","🎠","🎡","🎢","💈","🎪","🚂","🚃","🚄","🚅","🚆","🚇","🚈","🚉","🚊","🚝","🚞","🚋","🚌","🚍","🚎","🚐","🚑","🚒","🚓","🚔","🚕","🚖","🚗","🚘","🚙","🛻","🚚","🚛","🚜","🏎️","🏍️","🛵","🦽","🦼","🛺","🚲","🛴","🛹","🛼","🚏","🛣️","🛤️","🛢️","⛽","🚨","🚥","🚦","🛑","🚧","⚓","⛵","🛶","🚤","🛳️","⛴️","🛥️","🚢","✈️","🛩️","🛫","🛬","🪂","💺","🚁","🚟","🚠","🚡","🛰️","🚀","🛸","🛎️","🧳","⌛","⏳","⌚","⏰","⏱️","⏲️","🕰️","🕛","🕧","🕐","🕜","🕑","🕝","🕒","🕞","🕓","🕟","🕔","🕠","🕕","🕡","🕖","🕢","🕗","🕣","🕘","🕤","🕙","🕥","🕚","🕦","🌑","🌒","🌓","🌔","🌕","🌖","🌗","🌘","🌙","🌚","🌛","🌜","🌡️","☀️","🌝","🌞","🪐","⭐","🌟","🌠","🌌","☁️","⛅","⛈️","🌤️","🌥️","🌦️","🌧️","🌨️","🌩️","🌪️","🌫️","🌬️","🌀","🌈","🌂","☂️","☔","⛱️","⚡","❄️","☃️","⛄","☄️","🔥","💧","🌊"],activity:["🎃","🎄","🎆","🎇","🧨","✨","🎈","🎉","🎊","🎋","🎍","🎎","🎏","🎐","🎑","🧧","🎀","🎁","🎗️","🎟️","🎫","🎖️","🏆","🏅","🥇","🥈","🥉","⚽","⚾","🥎","🏀","🏐","🏈","🏉","🎾","🥏","🎳","🏏","🏑","🏒","🥍","🏓","🏸","🥊","🥋","🥅","⛳","⛸️","🎣","🤿","🎽","🎿","🛷","🥌","🎯","🪀","🪁","🎱","🔮","🪄","🧿","🎮","🕹️","🎰","🎲","🧩","🧸","🪅","🪆","♠️","♥️","♦️","♣️","♟️","🃏","🀄","🎴","🎭","🖼️","🎨","🧵","🪡","🧶","🪢"],object:["👓","🕶️","🥽","🥼","🦺","👔","👕","👖","🧣","🧤","🧥","🧦","👗","👘","🥻","🩱","🩲","🩳","👙","👚","👛","👜","👝","🛍️","🎒","🩴","👞","👟","🥾","🥿","👠","👡","🩰","👢","👑","👒","🎩","🎓","🧢","🪖","⛑️","📿","💄","💍","💎","🔇","🔈","🔉","🔊","📢","📣","📯","🔔","🔕","🎼","🎵","🎶","🎙️","🎚️","🎛️","🎤","🎧","📻","🎷","🪗","🎸","🎹","🎺","🎻","🪕","🥁","🪘","📱","📲","☎️","📞","📟","📠","🔋","🔌","💻","🖥️","🖨️","⌨️","🖱️","🖲️","💽","💾","💿","📀","🧮","🎥","🎞️","📽️","🎬","📺","📷","📸","📹","📼","🔍","🔎","🕯️","💡","🔦","🏮","🪔","📔","📕","📖","📗","📘","📙","📚","📓","📒","📃","📜","📄","📰","🗞️","📑","🔖","🏷️","💰","🪙","💴","💵","💶","💷","💸","💳","🧾","💹","✉️","📧","📨","📩","📤","📥","📦","📫","📪","📬","📭","📮","🗳️","✏️","✒️","🖋️","🖊️","🖌️","🖍️","📝","💼","📁","📂","🗂️","📅","📆","🗒️","🗓️","📇","📈","📉","📊","📋","📌","📍","📎","🖇️","📏","📐","✂️","🗃️","🗄️","🗑️","🔒","🔓","🔏","🔐","🔑","🗝️","🔨","🪓","⛏️","⚒️","🛠️","🗡️","⚔️","🔫","🪃","🏹","🛡️","🪚","🔧","🪛","🔩","⚙️","🗜️","⚖️","🦯","🔗","⛓️","🪝","🧰","🧲","🪜","⚗️","🧪","🧫","🧬","🔬","🔭","📡","💉","🩸","💊","🩹","🩺","🚪","🛗","🪞","🪟","🛏️","🛋️","🪑","🚽","🪠","🚿","🛁","🪤","🪒","🧴","🧷","🧹","🧺","🧻","🪣","🧼","🪥","🧽","🧯","🛒","🚬","⚰️","🪦","⚱️","🗿","🪧"],symbol:["🏧","🚮","🚰","♿","🚹","🚺","🚻","🚼","🚾","🛂","🛃","🛄","🛅","⚠️","🚸","⛔","🚫","🚳","🚭","🚯","🚱","🚷","📵","🔞","☢️","☣️","⬆️","↗️","➡️","↘️","⬇️","↙️","⬅️","↖️","↕️","↔️","↩️","↪️","⤴️","⤵️","🔃","🔄","🔙","🔚","🔛","🔜","🔝","🛐","⚛️","🕉️","✡️","☸️","☯️","✝️","☦️","☪️","☮️","🕎","🔯","♈","♉","♊","♋","♌","♍","♎","♏","♐","♑","♒","♓","⛎","🔀","🔁","🔂","▶️","⏩","⏭️","⏯️","◀️","⏪","⏮️","🔼","⏫","🔽","⏬","⏸️","⏹️","⏺️","⏏️","🎦","🔅","🔆","📶","📳","📴","♀️","♂️","⚧️","✖️","➕","➖","➗","♾️","‼️","⁉️","❓","❔","❕","❗","〰️","💱","💲","⚕️","♻️","⚜️","🔱","📛","🔰","⭕","✅","☑️","✔️","❌","❎","➰","➿","〽️","✳️","✴️","❇️","©️","®️","™️","#️⃣","*️⃣","0️⃣","1️⃣","2️⃣","3️⃣","4️⃣","5️⃣","6️⃣","7️⃣","8️⃣","9️⃣","🔟","🔠","🔡","🔢","🔣","🔤","🅰️","🆎","🅱️","🆑","🆒","🆓","ℹ️","🆔","Ⓜ️","🆕","🆖","🅾️","🆗","🅿️","🆘","🆙","🆚","🈁","🈂️","🈷️","🈶","🈯","🉐","🈹","🈚","🈲","🉑","🈸","🈴","🈳","㊗️","㊙️","🈺","🈵","🔴","🟠","🟡","🟢","🔵","🟣","🟤","⚫","⚪","🟥","🟧","🟨","🟩","🟦","🟪","🟫","⬛","⬜","◼️","◻️","◾","◽","▪️","▫️","🔶","🔷","🔸","🔹","🔺","🔻","💠","🔘","🔳","🔲"],flag:["🏁","🚩","🎌","🏴","🏳️","🏳️‍🌈","🏳️‍⚧️","🏴‍☠️","🇦🇨","🇦🇩","🇦🇪","🇦🇫","🇦🇬","🇦🇮","🇦🇱","🇦🇲","🇦🇴","🇦🇶","🇦🇷","🇦🇸","🇦🇹","🇦🇺","🇦🇼","🇦🇽","🇦🇿","🇧🇦","🇧🇧","🇧🇩","🇧🇪","🇧🇫","🇧🇬","🇧🇭","🇧🇮","🇧🇯","🇧🇱","🇧🇲","🇧🇳","🇧🇴","🇧🇶","🇧🇷","🇧🇸","🇧🇹","🇧🇻","🇧🇼","🇧🇾","🇧🇿","🇨🇦","🇨🇨","🇨🇩","🇨🇫","🇨🇬","🇨🇭","🇨🇮","🇨🇰","🇨🇱","🇨🇲","🇨🇳","🇨🇴","🇨🇵","🇨🇷","🇨🇺","🇨🇻","🇨🇼","🇨🇽","🇨🇾","🇨🇿","🇩🇪","🇩🇬","🇩🇯","🇩🇰","🇩🇲","🇩🇴","🇩🇿","🇪🇦","🇪🇨","🇪🇪","🇪🇬","🇪🇭","🇪🇷","🇪🇸","🇪🇹","🇪🇺","🇫🇮","🇫🇯","🇫🇰","🇫🇲","🇫🇴","🇫🇷","🇬🇦","🇬🇧","🇬🇩","🇬🇪","🇬🇫","🇬🇬","🇬🇭","🇬🇮","🇬🇱","🇬🇲","🇬🇳","🇬🇵","🇬🇶","🇬🇷","🇬🇸","🇬🇹","🇬🇺","🇬🇼","🇬🇾","🇭🇰","🇭🇲","🇭🇳","🇭🇷","🇭🇹","🇭🇺","🇮🇨","🇮🇩","🇮🇪","🇮🇱","🇮🇲","🇮🇳","🇮🇴","🇮🇶","🇮🇷","🇮🇸","🇮🇹","🇯🇪","🇯🇲","🇯🇴","🇯🇵","🇰🇪","🇰🇬","🇰🇭","🇰🇮","🇰🇲","🇰🇳","🇰🇵","🇰🇷","🇰🇼","🇰🇾","🇰🇿","🇱🇦","🇱🇧","🇱🇨","🇱🇮","🇱🇰","🇱🇷","🇱🇸","🇱🇹","🇱🇺","🇱🇻","🇱🇾","🇲🇦","🇲🇨","🇲🇩","🇲🇪","🇲🇫","🇲🇬","🇲🇭","🇲🇰","🇲🇱","🇲🇲","🇲🇳","🇲🇴","🇲🇵","🇲🇶","🇲🇷","🇲🇸","🇲🇹","🇲🇺","🇲🇻","🇲🇼","🇲🇽","🇲🇾","🇲🇿","🇳🇦","🇳🇨","🇳🇪","🇳🇫","🇳🇬","🇳🇮","🇳🇱","🇳🇴","🇳🇵","🇳🇷","🇳🇺","🇳🇿","🇴🇲","🇵🇦","🇵🇪","🇵🇫","🇵🇬","🇵🇭","🇵🇰","🇵🇱","🇵🇲","🇵🇳","🇵🇷","🇵🇸","🇵🇹","🇵🇼","🇵🇾","🇶🇦","🇷🇪","🇷🇴","🇷🇸","🇷🇺","🇷🇼","🇸🇦","🇸🇧","🇸🇨","🇸🇩","🇸🇪","🇸🇬","🇸🇭","🇸🇮","🇸🇯","🇸🇰","🇸🇱","🇸🇲","🇸🇳","🇸🇴","🇸🇷","🇸🇸","🇸🇹","🇸🇻","🇸🇽","🇸🇾","🇸🇿","🇹🇦","🇹🇨","🇹🇩","🇹🇫","🇹🇬","🇹🇭","🇹🇯","🇹🇰","🇹🇱","🇹🇲","🇹🇳","🇹🇴","🇹🇷","🇹🇹","🇹🇻","🇹🇼","🇹🇿","🇺🇦","🇺🇬","🇺🇲","🇺🇳","🇺🇸","🇺🇾","🇺🇿","🇻🇦","🇻🇨","🇻🇪","🇻🇬","🇻🇮","🇻🇳","🇻🇺","🇼🇫","🇼🇸","🇽🇰","🇾🇪","🇾🇹","🇿🇦","🇿🇲","🇿🇼"]},http_status_code:{informational:[100,101,102,103],success:[200,201,202,203,204,205,206,207,208,226],redirection:[300,301,302,303,304,305,306,307,308],clientError:[400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,421,422,423,424,425,426,428,429,431,451],serverError:[500,501,502,503,504,505,506,507,508,510,511]}},location:{country_code:[{alpha2:"AD",alpha3:"AND",numeric:"020"},{alpha2:"AE",alpha3:"ARE",numeric:"784"},{alpha2:"AF",alpha3:"AFG",numeric:"004"},{alpha2:"AG",alpha3:"ATG",numeric:"028"},{alpha2:"AI",alpha3:"AIA",numeric:"660"},{alpha2:"AL",alpha3:"ALB",numeric:"008"},{alpha2:"AM",alpha3:"ARM",numeric:"051"},{alpha2:"AO",alpha3:"AGO",numeric:"024"},{alpha2:"AQ",alpha3:"ATA",numeric:"010"},{alpha2:"AR",alpha3:"ARG",numeric:"032"},{alpha2:"AS",alpha3:"ASM",numeric:"016"},{alpha2:"AT",alpha3:"AUT",numeric:"040"},{alpha2:"AU",alpha3:"AUS",numeric:"036"},{alpha2:"AW",alpha3:"ABW",numeric:"533"},{alpha2:"AX",alpha3:"ALA",numeric:"248"},{alpha2:"AZ",alpha3:"AZE",numeric:"031"},{alpha2:"BA",alpha3:"BIH",numeric:"070"},{alpha2:"BB",alpha3:"BRB",numeric:"052"},{alpha2:"BD",alpha3:"BGD",numeric:"050"},{alpha2:"BE",alpha3:"BEL",numeric:"056"},{alpha2:"BF",alpha3:"BFA",numeric:"854"},{alpha2:"BG",alpha3:"BGR",numeric:"100"},{alpha2:"BH",alpha3:"BHR",numeric:"048"},{alpha2:"BI",alpha3:"BDI",numeric:"108"},{alpha2:"BJ",alpha3:"BEN",numeric:"204"},{alpha2:"BL",alpha3:"BLM",numeric:"652"},{alpha2:"BM",alpha3:"BMU",numeric:"060"},{alpha2:"BN",alpha3:"BRN",numeric:"096"},{alpha2:"BO",alpha3:"BOL",numeric:"068"},{alpha2:"BQ",alpha3:"BES",numeric:"535"},{alpha2:"BR",alpha3:"BRA",numeric:"076"},{alpha2:"BS",alpha3:"BHS",numeric:"044"},{alpha2:"BT",alpha3:"BTN",numeric:"064"},{alpha2:"BV",alpha3:"BVT",numeric:"074"},{alpha2:"BW",alpha3:"BWA",numeric:"072"},{alpha2:"BY",alpha3:"BLR",numeric:"112"},{alpha2:"BZ",alpha3:"BLZ",numeric:"084"},{alpha2:"CA",alpha3:"CAN",numeric:"124"},{alpha2:"CC",alpha3:"CCK",numeric:"166"},{alpha2:"CD",alpha3:"COD",numeric:"180"},{alpha2:"CF",alpha3:"CAF",numeric:"140"},{alpha2:"CG",alpha3:"COG",numeric:"178"},{alpha2:"CH",alpha3:"CHE",numeric:"756"},{alpha2:"CI",alpha3:"CIV",numeric:"384"},{alpha2:"CK",alpha3:"COK",numeric:"184"},{alpha2:"CL",alpha3:"CHL",numeric:"152"},{alpha2:"CM",alpha3:"CMR",numeric:"120"},{alpha2:"CN",alpha3:"CHN",numeric:"156"},{alpha2:"CO",alpha3:"COL",numeric:"170"},{alpha2:"CR",alpha3:"CRI",numeric:"188"},{alpha2:"CU",alpha3:"CUB",numeric:"192"},{alpha2:"CV",alpha3:"CPV",numeric:"132"},{alpha2:"CW",alpha3:"CUW",numeric:"531"},{alpha2:"CX",alpha3:"CXR",numeric:"162"},{alpha2:"CY",alpha3:"CYP",numeric:"196"},{alpha2:"CZ",alpha3:"CZE",numeric:"203"},{alpha2:"DE",alpha3:"DEU",numeric:"276"},{alpha2:"DJ",alpha3:"DJI",numeric:"262"},{alpha2:"DK",alpha3:"DNK",numeric:"208"},{alpha2:"DM",alpha3:"DMA",numeric:"212"},{alpha2:"DO",alpha3:"DOM",numeric:"214"},{alpha2:"DZ",alpha3:"DZA",numeric:"012"},{alpha2:"EC",alpha3:"ECU",numeric:"218"},{alpha2:"EE",alpha3:"EST",numeric:"233"},{alpha2:"EG",alpha3:"EGY",numeric:"818"},{alpha2:"EH",alpha3:"ESH",numeric:"732"},{alpha2:"ER",alpha3:"ERI",numeric:"232"},{alpha2:"ES",alpha3:"ESP",numeric:"724"},{alpha2:"ET",alpha3:"ETH",numeric:"231"},{alpha2:"FI",alpha3:"FIN",numeric:"246"},{alpha2:"FJ",alpha3:"FJI",numeric:"242"},{alpha2:"FK",alpha3:"FLK",numeric:"238"},{alpha2:"FM",alpha3:"FSM",numeric:"583"},{alpha2:"FO",alpha3:"FRO",numeric:"234"},{alpha2:"FR",alpha3:"FRA",numeric:"250"},{alpha2:"GA",alpha3:"GAB",numeric:"266"},{alpha2:"GB",alpha3:"GBR",numeric:"826"},{alpha2:"GD",alpha3:"GRD",numeric:"308"},{alpha2:"GE",alpha3:"GEO",numeric:"268"},{alpha2:"GF",alpha3:"GUF",numeric:"254"},{alpha2:"GG",alpha3:"GGY",numeric:"831"},{alpha2:"GH",alpha3:"GHA",numeric:"288"},{alpha2:"GI",alpha3:"GIB",numeric:"292"},{alpha2:"GL",alpha3:"GRL",numeric:"304"},{alpha2:"GM",alpha3:"GMB",numeric:"270"},{alpha2:"GN",alpha3:"GIN",numeric:"324"},{alpha2:"GP",alpha3:"GLP",numeric:"312"},{alpha2:"GQ",alpha3:"GNQ",numeric:"226"},{alpha2:"GR",alpha3:"GRC",numeric:"300"},{alpha2:"GS",alpha3:"SGS",numeric:"239"},{alpha2:"GT",alpha3:"GTM",numeric:"320"},{alpha2:"GU",alpha3:"GUM",numeric:"316"},{alpha2:"GW",alpha3:"GNB",numeric:"624"},{alpha2:"GY",alpha3:"GUY",numeric:"328"},{alpha2:"HK",alpha3:"HKG",numeric:"344"},{alpha2:"HM",alpha3:"HMD",numeric:"334"},{alpha2:"HN",alpha3:"HND",numeric:"340"},{alpha2:"HR",alpha3:"HRV",numeric:"191"},{alpha2:"HT",alpha3:"HTI",numeric:"332"},{alpha2:"HU",alpha3:"HUN",numeric:"348"},{alpha2:"ID",alpha3:"IDN",numeric:"360"},{alpha2:"IE",alpha3:"IRL",numeric:"372"},{alpha2:"IL",alpha3:"ISR",numeric:"376"},{alpha2:"IM",alpha3:"IMN",numeric:"833"},{alpha2:"IN",alpha3:"IND",numeric:"356"},{alpha2:"IO",alpha3:"IOT",numeric:"086"},{alpha2:"IQ",alpha3:"IRQ",numeric:"368"},{alpha2:"IR",alpha3:"IRN",numeric:"364"},{alpha2:"IS",alpha3:"ISL",numeric:"352"},{alpha2:"IT",alpha3:"ITA",numeric:"380"},{alpha2:"JE",alpha3:"JEY",numeric:"832"},{alpha2:"JM",alpha3:"JAM",numeric:"388"},{alpha2:"JO",alpha3:"JOR",numeric:"400"},{alpha2:"JP",alpha3:"JPN",numeric:"392"},{alpha2:"KE",alpha3:"KEN",numeric:"404"},{alpha2:"KG",alpha3:"KGZ",numeric:"417"},{alpha2:"KH",alpha3:"KHM",numeric:"116"},{alpha2:"KI",alpha3:"KIR",numeric:"296"},{alpha2:"KM",alpha3:"COM",numeric:"174"},{alpha2:"KN",alpha3:"KNA",numeric:"659"},{alpha2:"KP",alpha3:"PRK",numeric:"408"},{alpha2:"KR",alpha3:"KOR",numeric:"410"},{alpha2:"KW",alpha3:"KWT",numeric:"414"},{alpha2:"KY",alpha3:"CYM",numeric:"136"},{alpha2:"KZ",alpha3:"KAZ",numeric:"398"},{alpha2:"LA",alpha3:"LAO",numeric:"418"},{alpha2:"LB",alpha3:"LBN",numeric:"422"},{alpha2:"LC",alpha3:"LCA",numeric:"662"},{alpha2:"LI",alpha3:"LIE",numeric:"438"},{alpha2:"LK",alpha3:"LKA",numeric:"144"},{alpha2:"LR",alpha3:"LBR",numeric:"430"},{alpha2:"LS",alpha3:"LSO",numeric:"426"},{alpha2:"LT",alpha3:"LTU",numeric:"440"},{alpha2:"LU",alpha3:"LUX",numeric:"442"},{alpha2:"LV",alpha3:"LVA",numeric:"428"},{alpha2:"LY",alpha3:"LBY",numeric:"434"},{alpha2:"MA",alpha3:"MAR",numeric:"504"},{alpha2:"MC",alpha3:"MCO",numeric:"492"},{alpha2:"MD",alpha3:"MDA",numeric:"498"},{alpha2:"ME",alpha3:"MNE",numeric:"499"},{alpha2:"MF",alpha3:"MAF",numeric:"663"},{alpha2:"MG",alpha3:"MDG",numeric:"450"},{alpha2:"MH",alpha3:"MHL",numeric:"584"},{alpha2:"MK",alpha3:"MKD",numeric:"807"},{alpha2:"ML",alpha3:"MLI",numeric:"466"},{alpha2:"MM",alpha3:"MMR",numeric:"104"},{alpha2:"MN",alpha3:"MNG",numeric:"496"},{alpha2:"MO",alpha3:"MAC",numeric:"446"},{alpha2:"MP",alpha3:"MNP",numeric:"580"},{alpha2:"MQ",alpha3:"MTQ",numeric:"474"},{alpha2:"MR",alpha3:"MRT",numeric:"478"},{alpha2:"MS",alpha3:"MSR",numeric:"500"},{alpha2:"MT",alpha3:"MLT",numeric:"470"},{alpha2:"MU",alpha3:"MUS",numeric:"480"},{alpha2:"MV",alpha3:"MDV",numeric:"462"},{alpha2:"MW",alpha3:"MWI",numeric:"454"},{alpha2:"MX",alpha3:"MEX",numeric:"484"},{alpha2:"MY",alpha3:"MYS",numeric:"458"},{alpha2:"MZ",alpha3:"MOZ",numeric:"508"},{alpha2:"NA",alpha3:"NAM",numeric:"516"},{alpha2:"NC",alpha3:"NCL",numeric:"540"},{alpha2:"NE",alpha3:"NER",numeric:"562"},{alpha2:"NF",alpha3:"NFK",numeric:"574"},{alpha2:"NG",alpha3:"NGA",numeric:"566"},{alpha2:"NI",alpha3:"NIC",numeric:"558"},{alpha2:"NL",alpha3:"NLD",numeric:"528"},{alpha2:"NO",alpha3:"NOR",numeric:"578"},{alpha2:"NP",alpha3:"NPL",numeric:"524"},{alpha2:"NR",alpha3:"NRU",numeric:"520"},{alpha2:"NU",alpha3:"NIU",numeric:"570"},{alpha2:"NZ",alpha3:"NZL",numeric:"554"},{alpha2:"OM",alpha3:"OMN",numeric:"512"},{alpha2:"PA",alpha3:"PAN",numeric:"591"},{alpha2:"PE",alpha3:"PER",numeric:"604"},{alpha2:"PF",alpha3:"PYF",numeric:"258"},{alpha2:"PG",alpha3:"PNG",numeric:"598"},{alpha2:"PH",alpha3:"PHL",numeric:"608"},{alpha2:"PK",alpha3:"PAK",numeric:"586"},{alpha2:"PL",alpha3:"POL",numeric:"616"},{alpha2:"PM",alpha3:"SPM",numeric:"666"},{alpha2:"PN",alpha3:"PCN",numeric:"612"},{alpha2:"PR",alpha3:"PRI",numeric:"630"},{alpha2:"PS",alpha3:"PSE",numeric:"275"},{alpha2:"PT",alpha3:"PRT",numeric:"620"},{alpha2:"PW",alpha3:"PLW",numeric:"585"},{alpha2:"PY",alpha3:"PRY",numeric:"600"},{alpha2:"QA",alpha3:"QAT",numeric:"634"},{alpha2:"RE",alpha3:"REU",numeric:"638"},{alpha2:"RO",alpha3:"ROU",numeric:"642"},{alpha2:"RS",alpha3:"SRB",numeric:"688"},{alpha2:"RU",alpha3:"RUS",numeric:"643"},{alpha2:"RW",alpha3:"RWA",numeric:"646"},{alpha2:"SA",alpha3:"SAU",numeric:"682"},{alpha2:"SB",alpha3:"SLB",numeric:"090"},{alpha2:"SC",alpha3:"SYC",numeric:"690"},{alpha2:"SD",alpha3:"SDN",numeric:"729"},{alpha2:"SE",alpha3:"SWE",numeric:"752"},{alpha2:"SG",alpha3:"SGP",numeric:"702"},{alpha2:"SH",alpha3:"SHN",numeric:"654"},{alpha2:"SI",alpha3:"SVN",numeric:"705"},{alpha2:"SJ",alpha3:"SJM",numeric:"744"},{alpha2:"SK",alpha3:"SVK",numeric:"703"},{alpha2:"SL",alpha3:"SLE",numeric:"694"},{alpha2:"SM",alpha3:"SMR",numeric:"674"},{alpha2:"SN",alpha3:"SEN",numeric:"686"},{alpha2:"SO",alpha3:"SOM",numeric:"706"},{alpha2:"SR",alpha3:"SUR",numeric:"740"},{alpha2:"SS",alpha3:"SSD",numeric:"728"},{alpha2:"ST",alpha3:"STP",numeric:"678"},{alpha2:"SV",alpha3:"SLV",numeric:"222"},{alpha2:"SX",alpha3:"SXM",numeric:"534"},{alpha2:"SY",alpha3:"SYR",numeric:"760"},{alpha2:"SZ",alpha3:"SWZ",numeric:"748"},{alpha2:"TC",alpha3:"TCA",numeric:"796"},{alpha2:"TD",alpha3:"TCD",numeric:"148"},{alpha2:"TF",alpha3:"ATF",numeric:"260"},{alpha2:"TG",alpha3:"TGO",numeric:"768"},{alpha2:"TH",alpha3:"THA",numeric:"764"},{alpha2:"TJ",alpha3:"TJK",numeric:"762"},{alpha2:"TK",alpha3:"TKL",numeric:"772"},{alpha2:"TL",alpha3:"TLS",numeric:"626"},{alpha2:"TM",alpha3:"TKM",numeric:"795"},{alpha2:"TN",alpha3:"TUN",numeric:"788"},{alpha2:"TO",alpha3:"TON",numeric:"776"},{alpha2:"TR",alpha3:"TUR",numeric:"792"},{alpha2:"TT",alpha3:"TTO",numeric:"780"},{alpha2:"TV",alpha3:"TUV",numeric:"798"},{alpha2:"TW",alpha3:"TWN",numeric:"158"},{alpha2:"TZ",alpha3:"TZA",numeric:"834"},{alpha2:"UA",alpha3:"UKR",numeric:"804"},{alpha2:"UG",alpha3:"UGA",numeric:"800"},{alpha2:"UM",alpha3:"UMI",numeric:"581"},{alpha2:"US",alpha3:"USA",numeric:"840"},{alpha2:"UY",alpha3:"URY",numeric:"858"},{alpha2:"UZ",alpha3:"UZB",numeric:"860"},{alpha2:"VA",alpha3:"VAT",numeric:"336"},{alpha2:"VC",alpha3:"VCT",numeric:"670"},{alpha2:"VE",alpha3:"VEN",numeric:"862"},{alpha2:"VG",alpha3:"VGB",numeric:"092"},{alpha2:"VI",alpha3:"VIR",numeric:"850"},{alpha2:"VN",alpha3:"VNM",numeric:"704"},{alpha2:"VU",alpha3:"VUT",numeric:"548"},{alpha2:"WF",alpha3:"WLF",numeric:"876"},{alpha2:"WS",alpha3:"WSM",numeric:"882"},{alpha2:"YE",alpha3:"YEM",numeric:"887"},{alpha2:"YT",alpha3:"MYT",numeric:"175"},{alpha2:"ZA",alpha3:"ZAF",numeric:"710"},{alpha2:"ZM",alpha3:"ZMB",numeric:"894"},{alpha2:"ZW",alpha3:"ZWE",numeric:"716"}],time_zone:YC},metadata:{title:"Base",code:"base"},system:{directory_path:["/Applications","/bin","/boot","/boot/defaults","/dev","/etc","/etc/defaults","/etc/mail","/etc/namedb","/etc/periodic","/etc/ppp","/home","/home/user","/home/user/dir","/lib","/Library","/lost+found","/media","/mnt","/net","/Network","/opt","/opt/bin","/opt/include","/opt/lib","/opt/sbin","/opt/share","/private","/private/tmp","/private/var","/proc","/rescue","/root","/sbin","/selinux","/srv","/sys","/System","/tmp","/Users","/usr","/usr/X11R6","/usr/bin","/usr/include","/usr/lib","/usr/libdata","/usr/libexec","/usr/local/bin","/usr/local/src","/usr/obj","/usr/ports","/usr/sbin","/usr/share","/usr/src","/var","/var/log","/var/mail","/var/spool","/var/tmp","/var/yp"],mime_type:{"application/epub+zip":{extensions:["epub"]},"application/gzip":{extensions:["gz"]},"application/java-archive":{extensions:["jar","war","ear"]},"application/json":{extensions:["json","map"]},"application/ld+json":{extensions:["jsonld"]},"application/msword":{extensions:["doc","dot"]},"application/octet-stream":{extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/ogg":{extensions:["ogx"]},"application/pdf":{extensions:["pdf"]},"application/rtf":{extensions:["rtf"]},"application/vnd.amazon.ebook":{extensions:["azw"]},"application/vnd.apple.installer+xml":{extensions:["mpkg"]},"application/vnd.mozilla.xul+xml":{extensions:["xul"]},"application/vnd.ms-excel":{extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-fontobject":{extensions:["eot"]},"application/vnd.ms-powerpoint":{extensions:["ppt","pps","pot"]},"application/vnd.oasis.opendocument.presentation":{extensions:["odp"]},"application/vnd.oasis.opendocument.spreadsheet":{extensions:["ods"]},"application/vnd.oasis.opendocument.text":{extensions:["odt"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{extensions:["docx"]},"application/vnd.rar":{extensions:["rar"]},"application/vnd.visio":{extensions:["vsd","vst","vss","vsw"]},"application/x-7z-compressed":{extensions:["7z"]},"application/x-abiword":{extensions:["abw"]},"application/x-bzip":{extensions:["bz"]},"application/x-bzip2":{extensions:["bz2","boz"]},"application/x-csh":{extensions:["csh"]},"application/x-freearc":{extensions:["arc"]},"application/x-httpd-php":{extensions:["php"]},"application/x-sh":{extensions:["sh"]},"application/x-tar":{extensions:["tar"]},"application/xhtml+xml":{extensions:["xhtml","xht"]},"application/xml":{extensions:["xml","xsl","xsd","rng"]},"application/zip":{extensions:["zip"]},"audio/3gpp":{extensions:["3gpp"]},"audio/3gpp2":{extensions:["3g2"]},"audio/aac":{extensions:["aac"]},"audio/midi":{extensions:["mid","midi","kar","rmi"]},"audio/mpeg":{extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/ogg":{extensions:["oga","ogg","spx","opus"]},"audio/opus":{extensions:["opus"]},"audio/wav":{extensions:["wav"]},"audio/webm":{extensions:["weba"]},"font/otf":{extensions:["otf"]},"font/ttf":{extensions:["ttf"]},"font/woff":{extensions:["woff"]},"font/woff2":{extensions:["woff2"]},"image/avif":{extensions:["avif"]},"image/bmp":{extensions:["bmp"]},"image/gif":{extensions:["gif"]},"image/jpeg":{extensions:["jpeg","jpg","jpe"]},"image/png":{extensions:["png"]},"image/svg+xml":{extensions:["svg","svgz"]},"image/tiff":{extensions:["tif","tiff"]},"image/vnd.microsoft.icon":{extensions:["ico"]},"image/webp":{extensions:["webp"]},"text/calendar":{extensions:["ics","ifb"]},"text/css":{extensions:["css"]},"text/csv":{extensions:["csv"]},"text/html":{extensions:["html","htm","shtml"]},"text/javascript":{extensions:["js","mjs"]},"text/plain":{extensions:["txt","text","conf","def","list","log","in","ini"]},"video/3gpp":{extensions:["3gp","3gpp"]},"video/3gpp2":{extensions:["3g2"]},"video/mp2t":{extensions:["ts"]},"video/mp4":{extensions:["mp4","mp4v","mpg4"]},"video/mpeg":{extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/ogg":{extensions:["ogv"]},"video/webm":{extensions:["webm"]},"video/x-msvideo":{extensions:["avi"]}}}},UC=new class extends uC{rawDefinitions;definitions;airline=new Lw(this);animal=new dC(this);color=new Pw(this);commerce=new yC(this);company=new fC(this);database=new mC(this);date=new qw(this);finance=new vC(this);food=new xC(this);git=new kC(this);hacker=new wC(this);helpers=new iC(this);image=new _C(this);internet=new EC(this);location=new RC(this);lorem=new PC(this);music=new NC(this);person=new zw(this);phone=new GC(this);science=new IC(this);system=new JC(this);vehicle=new VC(this);word=new jC(this);get address(){return hC({deprecated:"faker.address",proposed:"faker.location",since:"8.0",until:"10.0"}),this.location}get name(){return hC({deprecated:"faker.name",proposed:"faker.person",since:"8.0",until:"10.0"}),this.person}constructor(e){super({randomizer:e.randomizer});let{locale:t}=e;if(Array.isArray(t)){if(0===t.length)throw new ww("The locale option must contain at least one locale definition.");t=function(e){let t={};for(let r of e)for(let e in r){let a=r[e];void 0===t[e]?t[e]={...a}:t[e]={...a,...t[e]}}return t}(t)}this.rawDefinitions=t,this.definitions=jw(this.rawDefinitions)}getMetadata(){return this.rawDefinitions.metadata??{}}}({locale:[kw,$C]});class qC{data_length=50;generated_data=[];auto_proceed=!0;locale="en_GB";imgAPIs=["https://picsum.photos/500/500?random=","https://avatar.iran.liara.run/public/"];constructor({length:e,auto_proceed:t,locale:r}){void 0!==e&&(this.data_length=e),void 0!==t&&(this.auto_proceed=t),void 0!==r&&(this.locale=r.replace("-","_")),this.auto_proceed&&this.generate()}generate(){return this.make_data()}make_data(){for(let e=0;e0&&(t.parentId=this.get_parent_id(e)),this.generated_data.push(t)}return this.generated_data}get_parent_id(e){let t=Math.floor(Math.random()*this.generated_data.length).toString();return t=0==parseInt(t)?"1":t,t==(e+1).toString()&&(t=this.get_parent_id(e)),t}generate_data(e){const t=Math.floor(2*Math.random()),r=this.imgAPIs[Math.floor(Math.random()*this.imgAPIs.length)]+e;return{id:e,name:UC.person.fullName(),role:UC.person.jobTitle(),location:UC.location.city()+", "+UC.location.country(),image:t?r:""}}}class ZC{tree_data=[];handleCollapseChildren=()=>{};center_elem=({})=>null;itemHierarchy=[];tmp_tree_data=[];tree_level_step=2;display_tree_in_step=!0;auto_display_tree_in_step=!0;link_point_position={top:e=>`translate(${parseInt(e.attr("width"))/2}, 0)`,bottom:e=>`translate(${parseInt(e.attr("width"))/2}, ${e.attr("height")})`,right:e=>`translate(${e.attr("width")}, ${e.attr("height")/2})`,left:e=>`translate(0, ${e.attr("height")/2})`};inverse_link_point_position={top:"bottom",bottom:"top",left:"right",right:"left"};chartHeadWidth=120;chartHeadHeight=130;chartHeadLandscapeWidth=240;chartHeadLandscapeHeight=80;chartHeadRoundedWidth=120;chartHeadRoundedHeight=180;color_handler={};chart_head_type="default";show_chart_head_border=!0;animation_rotation_speed=50;animation_rotation_interval=1;head_linker_thumb_circle_radius=8;linker_thumb_icon_color="bright500";linker_thumb_shape="symbolDiamond2";head_image_shape="symbolCircle";head_image_surface_area=60;chart_head_bg="#ffffff";auto_set_chart_head_bg=!1;emitEvent=()=>!1;tree_link_types={curveBumpX:Hx,curveBumpY:Dx,curveBasisClosed:bk,curveLinear:gx,curveStep:Yk,curveStepAfter:Uk,curveStepBefore:$k};tree_link_type=void 0;rootWrapperContainer=null;app_unique_id="";app_root_unique_selector="";constructor(){setTimeout((()=>{this.app_root_unique_selector=`[data-ts-unique-id='${this.app_unique_id}']`}),0)}createDynamicEl(){return new xw}splitStringIntoBatch(e,t){let r=[];for(let a=0;a1?t?.[0][0]+t?.at(-1)?.[0]:t?.[0][0]}format_employee_name(e,t=15){const r=e?.split(" "),a=r?.length>2?r?.[0]+" "+r?.at(-1):r?.join(" ");return this.splitStringIntoBatch(a,t)}symbol_type(e){const t=e.replace(/symbol/,"").toLowerCase();return["circle","cross","diamond","square","star","triangle","wye"].includes(t)?"fill":["plus","x","triangle2","asterisk","square2","diamond2"].includes(t)?"stroke":"fill"}get_page_body_bg(){const e=document.body.style.getPropertyValue("background-color");return""==e?"#ffffff":e}get_chart_head_bg(){return this.auto_set_chart_head_bg?this.get_page_body_bg():this.chart_head_bg}get_image_shape_spacing(e){return{symbolCircle:10,symbolCross:10,symbolDiamond:25,symbolDiamond2:10,symbolSquare:0,symbolSquare2:-8,symbolStar:20,symbolTriangle:20,symbolTriangle2:10,symbolWye:20}[e]}makeHead(e,t=!1,r={parent:"bottom",children:"top"}){return"default"==this.chart_head_type?this.defaultHead(e,t,r):"landscape"==this.chart_head_type?this.landscapeHead(e,t,r):"rounded"==this.chart_head_type?this.roundedHead(e,t,r):this.defaultHead(e,t,r)}handleCenterHead(e){e.stopPropagation();const t=e.currentTarget.getBoundingClientRect();this.center_elem(t)}defaultHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=this.get_chart_head_bg(),l=Yt("svg").attr("class","main-svg-el"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("width",this.chartHeadWidth).attr("height",this.chartHeadHeight).attr("style","background-color: "+c).on("dblclick",(e=>this.handleCenterHead(e)));Yt("defs").append("filter").attr("id","blur1").attr("x",0).attr("y",0).append("feGaussianBlur").attr("in","SourceGraphic").attr("stdDeviation","3");const s=l.append("g"),u=s?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadWidth).attr("height",this.chartHeadHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),h=parseInt(u.attr("width"))/2,d=s?.append("g").attr("y",100),p=Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2);if(e.image){let t=h-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=h-this.head_image_surface_area<=10&&0==t?-10:t,o=h-this.head_image_surface_area<1?Math.abs(h-this.head_image_surface_area)+15:0,d.append("defs").append("clipPath").attr("id","default-head-clip-"+e.id).append("path").attr("d",pk().type(bw[this.head_image_shape]).size(p)).attr("transform",`translate(${parseInt(u.attr("width"))/2}, ${this.head_image_surface_area+t})`).attr("fill",n.bright500),d?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",this.head_image_surface_area).attr("height",this.head_image_surface_area).attr("x",parseInt(u.attr("width"))/2-this.head_image_surface_area/2).attr("y",this.head_image_surface_area/2+t).attr("clip-path",`url(#default-head-clip-${e.id})`)}else o=h-this.head_image_surface_area<1?Math.abs(h-this.head_image_surface_area)+15:0,d?.append("path").attr("d",pk().type(bw[this.head_image_shape]).size(p)).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(u.attr("width"))/2}, 50)`),d?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(u.attr("width"))/2).attr("y",56).attr("font-size","95%").text(this.get_user_initials(e.name));this.format_employee_name(e.name).forEach(((e,t)=>{s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",t>0?95+o:80+o).attr("font-size","85%").attr("fill",n.darker).attr("style","text-transform: "+(t>0?"none":"capitalize")).text(e),t>0&&(o+=15)}));const y=s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",100+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,20).forEach(((e,t)=>{y?.append("tspan").attr("x",parseInt(u.attr("width"))/2).attr("dy",t>0?".6rem":0).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",115+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,19).forEach(((e,r)=>{t?.append("tspan").attr("x",parseInt(u.attr("width"))/2).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}const f=this.chartHeadHeight+o;return u?.attr("height",f),l?.attr("height",f),this.add_linker(s,i,a,r,n,u,l,e,t),this.emitEvent("chart_head.create",{headNode:l.node()}),l}landscapeHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=Yt("svg").attr("class","main-svg-el"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("width",this.chartHeadLandscapeWidth).attr("height",this.chartHeadLandscapeHeight).attr("style","background-color: "+this.chart_head_bg).on("dblclick",(e=>this.handleCenterHead(e))),l=c.append("g"),s=l?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadLandscapeWidth).attr("height",this.chartHeadLandscapeHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),u=parseInt(s.attr("height"))/2,h=this.format_employee_name(e.name,18),d=l.append("g").attr("x",0).attr("y",0),p=l.append("g"),y=this.chartHeadLandscapeHeight+o;if(s.attr("height",y),c.attr("height",y),e.image){let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t;const r=this.head_image_surface_area>u?Math.abs(this.head_image_surface_area-u):0;s.attr("height",y+r),c.attr("height",y+r),c.attr("width",this.chartHeadLandscapeWidth+r),s.attr("width",this.chartHeadLandscapeWidth+r),p.append("defs").append("clipPath").attr("id","landscape-clip-"+e.id).append("path").attr("d",pk().type(bw[this.head_image_shape]).size(Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2))).attr("transform",`translate(${parseInt(s.attr("height"))/2}, ${this.head_image_surface_area+(t+20)})`).attr("fill",n.bright500),p?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",this.head_image_surface_area).attr("height",this.head_image_surface_area).attr("x",parseInt(s.attr("height"))/2-this.head_image_surface_area/2).attr("y",this.head_image_surface_area/2+(t+20)).attr("clip-path",`url(#landscape-clip-${e.id})`)}else{const t=this.head_image_surface_area>u?Math.abs(this.head_image_surface_area-u):0;s.attr("height",y+t),c.attr("height",y+t),c.attr("width",this.chartHeadLandscapeWidth+t),s.attr("width",this.chartHeadLandscapeWidth+t),p?.append("path").attr("d",pk().type(bw[this.head_image_shape]).size(Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2))).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(s.attr("height"))/2}, 50)`),p?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(s.attr("height"))/2).attr("y",parseInt(s.attr("height"))/2+6).attr("font-size","95%").text(this.get_user_initials(e.name))}const f=parseInt(s.attr("height")),m=d?.append("text").attr("x",f).attr("y",30).attr("font-size","95%").attr("fill",n.darker);h.forEach(((e,t)=>{m?.append("tspan").attr("x",f).attr("y",30).attr("dy",t>0?".7rem":0).attr("font-size","95%").attr("style","z-index: +9").text(e.toString()),t>0&&(o+=10)}));const g=d?.append("text").attr("x",f).attr("y",50+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,30).forEach(((e,t)=>{g?.append("tspan").attr("x",f).attr("dy",t>0?".6rem":0).attr("y",50+o).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=d?.append("text").attr("x",f).attr("y",65+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,30).forEach(((e,r)=>{t?.append("tspan").attr("x",f).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}return this.add_linker(l,i,a,r,n,s,c,e,t),this.emitEvent("chart_head.create",{headNode:c.node()}),c}roundedHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=Yt("svg").attr("class","main-svg-el rounded-head"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("style","overflow: visible;").attr("width",this.chartHeadRoundedWidth).attr("height",this.chartHeadRoundedHeight).attr("fill","none").on("dblclick",(e=>this.handleCenterHead(e))),l=c.append("g"),s=l?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadRoundedWidth).attr("height",this.chartHeadRoundedHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),u=parseInt(s.attr("width"))/2,h=l?.append("g"),d=Math.pow(2*(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape)),2),p=bw[this.head_image_shape];if(e.image){let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t,o=u-this.head_image_surface_area<0?2*Math.abs(u-this.head_image_surface_area):0,h.append("defs").append("clipPath").attr("id","rounded-corners-"+e.id).append("path").attr("d",pk().type(p).size(d)).attr("transform",`translate(${parseInt(s.attr("width"))/2}, ${2*this.head_image_surface_area-this.head_image_surface_area})`).attr("fill",n.bright500),h?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",2*this.head_image_surface_area).attr("height",2*this.head_image_surface_area).attr("x",parseInt(s.attr("width"))/2-this.head_image_surface_area).attr("y",this.head_image_surface_area-this.head_image_surface_area).attr("clip-path",`url(#rounded-corners-${e.id})`)}else{let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t,o=u-this.head_image_surface_area<0?2*Math.abs(u-this.head_image_surface_area):0,h?.append("path").attr("d",pk().type(p).size(d)).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(s.attr("width"))/2}, ${2*this.head_image_surface_area-this.head_image_surface_area})`),h?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(s.attr("width"))/2).attr("y",this.head_image_surface_area+Math.sqrt(d)/6).attr("font-size",this.head_image_surface_area/1.5+"px").text(this.get_user_initials(e.name))}this.format_employee_name(e.name,27).forEach(((e,t)=>{l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+18).attr("dy",t>0?50+o:0+o).attr("font-size","105%").attr("fill",n.darker).attr("style","text-transform: "+(t>0?"none":"capitalize")).text(e),t>0&&(o+=15)}));const y=l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+35+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,20).forEach(((e,t)=>{y?.append("tspan").attr("x",parseInt(s.attr("width"))/2).attr("dy",t>0?".6rem":0).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+50+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,19).forEach(((e,r)=>{t?.append("tspan").attr("x",parseInt(s.attr("width"))/2).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}const f=this.chartHeadRoundedHeight+o;return s?.attr("height",f),c?.attr("height",f),this.add_linker(l,i,a,r,n,s,c,e,t),this.emitEvent("chart_head.create",{headNode:c.node()}),c}add_linker(e,t,r,a,i,n,o,c,l){const s=Math.PI*this.head_linker_thumb_circle_radius*this.head_linker_thumb_circle_radius,u=(t,r,a)=>{null!=this.rootWrapperContainer?.querySelector("."+a)&&this.rootWrapperContainer?.querySelector("."+a)?.remove();const o="stroke"==this.symbol_type(this.linker_thumb_shape)?i.bright100:i[this.linker_thumb_icon_color];return e.append("path").attr("d",pk().type("cross"==t?Kx:uk).size(Math.sqrt(s))).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("fill",o).attr("stroke","minus"==t?o:"none").attr("class",a).attr("style","pointer-events: none").attr("stroke-width","minus"==t?2:0).attr("transform",this.link_point_position[r](n))};if(0!=a&&t&&e?.append("path").attr("d",pk().type(bw[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",0).attr("class","ts-linker").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"none").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[a.children](n)),0!=a&&r){const t=this,r="bottom"==a.parent?0:n.attr("height");let h=0;if(e?.append("path").attr("d",pk().type(bw[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("class","ts-linker").attr("style","cursor: pointer;").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"transparent").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[this.inverse_link_point_position[a.children]](n)).on("click",(e=>{const i=e.currentTarget.parentElement;u(h%2==0?"cross":"minus",this.inverse_link_point_position[a.children],"ts-lnk-icn-"+c.id+"-1"),h++,t.handleCollapseChildren?.(o,c.id,r);const n=i.getBoundingClientRect();setTimeout((()=>{h%2==0&&this.center_elem(n)}),0),h%2==0?this.emitEvent("chart_head.expanded",{svgNode:o,head_data:c,pointPosition:a},!1):this.emitEvent("chart_head.collapsed",{svgNode:o,head_data:c,pointPosition:a},!1)})),this.el_has_children(c.id,!0)||h++,u(this.el_has_children(c.id,!0)?"minus":"cross",this.inverse_link_point_position[a.children],"ts-lnk-icn-"+c.id+"-1"),l){const l=0==r?n.attr("height"):0;let h=0;e?.append("path").attr("d",pk().type(bw[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("class","ts-linker").attr("style","cursor: pointer").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"transparent").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[this.inverse_link_point_position[a.parent]](n)).on("click",(e=>{const r=e.currentTarget.parentElement;u(h%2==0?"cross":"minus",this.inverse_link_point_position[a.parent],"ts-lnk-icn-"+c.id+"-2"),t.handleCollapseChildren?.(o,c.id,l);const i=r.getBoundingClientRect();h++,setTimeout((()=>{h%2==0&&this.center_elem(i)}),0),h%2==0?this.emitEvent("chart_head.expanded",{svgNode:o,head_data:c,pointPosition:a},!1):this.emitEvent("chart_head.collapsed",{svgNode:o,head_data:c,pointPosition:a},!1)})),u("minus",this.inverse_link_point_position[a.parent],"ts-lnk-icn-"+c.id+"-2")}}}get_tree_items_hierarchy(e,t,r){const a=this.tree_data.filter((t=>t.parentId==e)),i=null==t?1:t+1,n=[];a.forEach((e=>{n.push(e),null!=r&&(null!=r.item_id&&r.item_id==e.id||null!=r.level&&r.level==i)&&r.callbackFn(e,i);this.tree_data.filter((t=>t.parentId==e.id)).length>0&&this.get_tree_items_hierarchy(e.id,i,r)}));const o=this.itemHierarchy.findIndex((e=>e.level==i));return-1==o?this.itemHierarchy.push({level:i,items:n}):this.itemHierarchy[o].items=n,this.itemHierarchy}get_second_ancestor_item(e){const t=this.tree_data.find((t=>t.id==e)),r=this.tree_data.find((e=>e.id==t?.parentId)),a=null==this.tree_data.find((e=>e.id==r?.parentId))?.parentId;let i;return i=null==r?.parentId?t:a?r:this.get_second_ancestor_item(r?.id),i}getElemRelPosInTree(e){const t=this.tree_data.find((t=>t.id==e));return this.tree_data.filter((e=>e.parentId==t.parentId)).findIndex((e=>e.id==t.id))+1}set_tmp_tree_data(e){if(this.display_tree_in_step||this.tree_data.length>500&&this.auto_display_tree_in_step){const t=null==e?"1":e;this.tmp_tree_data=this.get_children_down_to_level(t,this.tree_level_step),null==e&&(this.tmp_tree_data=[this.tree_data[0],...this.tmp_tree_data])}else this.tmp_tree_data=this.tree_data}getIsParentRootEl(e){return null!=e&&null==this.tree_data.find((t=>t.id==e))?.parentId}getIsElRootTreeChild(e){return null!=e&&null==this.tree_data.find((t=>t.id==e))?.parentId}getRootTreeEl(){return this.tree_data.find((e=>null==e.parentId))}el_has_children(e,t=!1){return t?this.tmp_tree_data.filter((t=>t.parentId==e)).length>0:this.tree_data.filter((t=>t.parentId==e)).length>0}get_children_down_to_level(e,t,r=1){let a=r,i=[];const n=this.tree_data.filter((t=>t.parentId==e));let o=[];return a0&&(o=n.map((e=>this.get_children_down_to_level(e.id,t,a+1))).flat()),i=[...n,...o],i}data_to_d3_format(e,t){let r=this.tree_data?.find((t=>(null==e?t.parentId:t.id)==e));r={...r,children:[]};return this.tree_data.filter((e=>e.parentId==r.id)).forEach((e=>{t&&(e.stat=1),this.el_has_children(e.id)?r.children.push(this.data_to_d3_format(e.id,t)):r.children.push(e)})),r}}class QC{tree_data=[];color_range=["#b31212","#b34712","#b38d12","#9ab312","#2fb312","#12b362","#12b3a8","#1278b3","#1712b3","#5712b3","#8d12b3","#b3128d","#b3124a","#b31212"];interpolated_color=e=>"";pallet={h:10,s:.5,l:.5,darker:.8,brighter:.8,bright100:.5,dark100:.5,gray:50,gray85:85};constructor({tree_data:e,color_range:t,pallet:r}){this.tree_data=e,void 0!==t&&t.length>0&&(this.color_range=t),null!=r&&(this.pallet=r),this.interpolateColor()}getColor(e){const t=this.get_color_percentage(e),r=this.interpolated_color(t),a=Br(r),i=Or(a);i.h+=this.pallet.h,i.s+=this.pallet.s;const n=Or(a);n.l+=this.pallet.l;const o=ra(this.pallet.gray85);return{color:r,darker:a?.darker(this.pallet.darker).toString(),brighter:a?.brighter(this.pallet.brighter).toString(),bright100:i.brighter(this.pallet.bright100).toString(),dark100:i.darker(this.pallet.dark100).toString(),bright500:n.toString(),gray:ra(this.pallet.gray).toString(),gray85:o.toString()}}get_app_gray(){return ra(50).toString()}get_color_percentage(e){return e/this.tree_data.length}interpolateColor(){this.interpolated_color=Ha(this.color_range)}}class XC{chartHelper;tree_map_arr=[];content_wrapper=null;tsInnerContainer=null;current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}map_children_data_to_head(e,t){const r=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t)),a=this.chartHelper.createDynamicEl();return r.forEach((r=>{const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.makeHead(r);i.appendChild(n?.node());const o=null==t?" st-root-el":"";i.className="ts-head-node-wrapper ts-w-id-"+r.id+o,a.appendChild(i),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:n?.node(),parentId:t}),this.chartHelper?.el_has_children(r.id)&&i.append(this.map_children_data_to_head(n,r.id))})),a.className="ts-head-wrapper child-container",void 0===e&&this.content_wrapper?.appendChild(a),a}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.content_wrapper.className="ts-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"top")}),0)}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId)))}drawBranchLink(e,t,r,a){const i=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===i)return;const n=this.chartHelper?.color_handler.getColor(e),o=r.getBoundingClientRect(),c=t.node().getBoundingClientRect(),l=Math.sqrt(Math.PI*this.chartHelper.head_linker_thumb_circle_radius*this.chartHelper.head_linker_thumb_circle_radius)/2,s=c.width/this.current_scale/2,u=(c.height+l)/this.current_scale,h=o.x/this.current_scale-c.x/this.current_scale+r.clientWidth/2,d=o.top/this.current_scale-c.top/this.current_scale,p=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Dx),y=[{source:[s,u],target:[h,d]}];t?.append("path").data(y).attr("d",p).attr("fill","none").attr("class","linker-line").attr("stroke",n?.gray).attr("stroke-width",1)}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-head-children-hidden");if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)if("true"==i){const e=a?.querySelector(".child-container");e.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),setTimeout((()=>{this.drawBranchLinkFresh()}),0)}else{const e=a?.querySelector(".child-container");e.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")}else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t);a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e){const t=this.tree_map_arr.filter((t=>t.parentId==e));t.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)}))}}class e_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="ts-vs-wrapper",this.head_child_wrapper_1.className="ts-vs-wrapper",this.head_child_wrapper_2.className="ts-vs-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.content_wrapper.className="ts-v-spider-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,null==t,{parent:"bottom",children:c%2==0?"bottom":"top"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"top":"bottom"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden"),o=this.chartHelper.getIsParentRootEl(a);if("true"===n&&!o)return;const c=this.chartHelper?.color_handler.getColor(e),l=r.getBoundingClientRect(),s=t.node().getBoundingClientRect(),u=s.width/this.current_scale/2,h="top"==i?0:s.height/this.current_scale,d=l.x/this.current_scale-s.x/this.current_scale+r.clientWidth/2,p="top"==i?(l.top+l.height)/this.current_scale-s.top/this.current_scale:l.top/this.current_scale-s.top/this.current_scale,y=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Dx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line linker-"+i).attr("stroke-width",1).attr("stroke",c?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden"),o=a?.querySelector(".child-container");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)"true"==n?(o.style.visibility="visible",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(o.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true"));else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-top-head-children-hidden"),n=a?.getAttribute("data-ts-bottom-head-children-hidden");if(0==r?this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2==0)):this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2!=0)),(i&&"false"!=i||0!=r)&&(n&&"false"!=n||0==r)){(0==r?a.parentElement.nextElementSibling:a.parentElement.previousElementSibling).style.visibility="",setTimeout((()=>{this.drawBranchLinkFresh();"true"==(0==r?a?.getAttribute("data-ts-bottom-head-children-hidden"):a?.getAttribute("data-ts-top-head-children-hidden"))&&a.querySelectorAll(".linker-"+(0==r?"top":"bottom")).forEach((e=>e.remove()))}),0),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","false")}else{(0==r?a.parentElement.nextElementSibling:a.parentElement.previousElementSibling).style.visibility="hidden",a.querySelector("svg").querySelectorAll(".linker-"+(0==r?"bottom":"top")).forEach((e=>e.remove())),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","true")}}}class t_{chartHelper;tree_map_arr=[];content_wrapper=null;tsInnerContainer=null;current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.content_wrapper.className="ts-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"left")}),0)}map_children_data_to_head(e,t){const r=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t)),a=this.chartHelper.createDynamicEl();return r.forEach((r=>{const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.createDynamicEl(),o=this.chartHelper.makeHead(r,!1,{parent:"right",children:"left"});n.append(o?.node()),i.appendChild(n);const c=null==t?" st-root-el":"";i.className="ts-head-node-wrapper st-single-h ts-w-id-"+r.id+c,a.appendChild(i),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:o?.node(),parentId:t}),this.chartHelper?.el_has_children(r.id)&&i.append(this.map_children_data_to_head(o,r.id))})),a.className="ts-head-wrapper st-single-h-child-container",void 0===e&&this.content_wrapper?.appendChild(a),a}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId)))}drawBranchLink(e,t,r,a){const i=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===i)return;const n=this.chartHelper?.color_handler.getColor(e),o=r.getBoundingClientRect(),c=t.node().getBoundingClientRect(),l=c.width/this.current_scale,s=c.height/this.current_scale/2,u=o.x/this.current_scale-c.x/this.current_scale+0,h=(o.top+o.height/2)/this.current_scale-c.top/this.current_scale,d=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Hx),p=[{source:[l,s],target:[u,h]}];t?.append("path").data(p).attr("d",d).attr("fill","none").attr("class","linker-line").attr("stroke-width",1).attr("stroke",n?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement.parentElement,i=a?.getAttribute("data-ts-head-children-hidden"),n=a?.querySelector("[class*='child-container']");if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".st-single-h-child-container").innerHTML)"true"==i?(n.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(n.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true"));else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".st-single-h-child-container").remove();const r=this.map_children_data_to_head(e,t);a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e){const t=this.tree_map_arr.filter((t=>t.parentId==e));t.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)}))}}class r_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="st-child-wrapper",this.head_child_wrapper_1.className="st-child-wrapper",this.head_child_wrapper_2.className="st-child-wrapper",this.content_wrapper.className="st-hsw-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.tsInnerContainer?.append(this.content_wrapper),this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,null==t,{parent:"right",children:c%2==0?"right":"left"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"right":"left"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===n)return;const o=this.chartHelper?.color_handler.getColor(e),c=r.getBoundingClientRect(),l=t.node().getBoundingClientRect(),s=Math.sqrt(Math.PI*this.chartHelper.head_linker_thumb_circle_radius*this.chartHelper.head_linker_thumb_circle_radius)/2,u="right"==i?0-s:(l.width+s)/this.current_scale,h=l.height/this.current_scale/2,d=(c.x+("right"==i?c.width:0))/this.current_scale-l.x/this.current_scale+0,p=(c.top+c.height/2)/this.current_scale-l.top/this.current_scale,y=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Hx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line linker-"+i).attr("stroke-width",1).attr("stroke",o?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)"true"==n?(a.querySelector(".child-container").style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(a?.setAttribute("data-ts-head-children-hidden","true"),a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.querySelector(".child-container").style.visibility="hidden");else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),setTimeout((()=>{this.drawBranchLinkFresh()}),0)}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-top-head-children-hidden"),n=a?.getAttribute("data-ts-bottom-head-children-hidden");if(0==r?this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2==0)):this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2!=0)),(i&&"false"!=i||0!=r)&&(n&&"false"!=n||0==r)){(0==r?a.parentElement.previousElementSibling:a.parentElement.nextElementSibling).style.visibility="visible",setTimeout((()=>{this.drawBranchLinkFresh();"true"==(0==r?a?.getAttribute("data-ts-bottom-head-children-hidden"):a?.getAttribute("data-ts-top-head-children-hidden"))&&a.querySelectorAll(".linker-"+(0==r?"left":"right")).forEach((e=>e.remove()))}),0),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","false")}else{const e=0==r?a.parentElement.previousElementSibling:a.parentElement.nextElementSibling;e.style.visibility="hidden",e.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.querySelectorAll(".linker-"+(0==r?"right":"left")).forEach((e=>e.remove())),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","true")}}}class a_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="st-child-wrapper",this.head_child_wrapper_1.className="st-child-wrapper",this.head_child_wrapper_2.className="st-child-wrapper",this.content_wrapper.className="st-cs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.tsInnerContainer?.append(this.content_wrapper),this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"bottom")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,!1,{parent:"right",children:null==t?"bottom":c%2==0?"right":"left"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"right":"left"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===n)return;const o=this.chartHelper?.color_handler.getColor(e),c=this.chartHelper.getIsParentRootEl(a),l=r.getBoundingClientRect(),s=t.node().getBoundingClientRect();let u,h;c?(u=s.width/this.current_scale/2,h=0):(u="right"==i?0:s.width/this.current_scale,h=s.height/this.current_scale/2);const d=(l.x+("right"==i?l.width:0))/this.current_scale-s.x/this.current_scale+0,p=(l.top+l.height/2)/this.current_scale-s.top/this.current_scale,y=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Hx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line").attr("stroke-width",1).attr("stroke",o?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)if("true"==n){const e=a?.querySelector(".child-container");e.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}else{const e=a?.querySelector(".child-container");e.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")}else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-head-children-hidden");i&&"false"!=i?(a.parentElement.previousElementSibling.style.visibility="",a.parentElement.previousElementSibling.previousElementSibling.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false")):(a.parentElement.previousElementSibling.style.visibility="hidden",a.parentElement.previousElementSibling.previousElementSibling.style.visibility="hidden",a.parentElement.previousElementSibling.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.parentElement.previousElementSibling.previousElementSibling.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")),this.drawBranchLinkFresh()}}class i_{content_wrapper=null;head_child_wrapper=null;tsInnerContainer=null;chartHelper;current_scale=1;nodes_group=void 0;links_group=void 0;rotate_deg=0;animation_interval=void 0;start_animation=!1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper.className="st-child-wrapper",this.content_wrapper.className="st-grs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper),this.tsInnerContainer?.append(this.content_wrapper),this.map_children_data_to_head(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el > g`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}animate_chat(e=!1,t=!1){if(e)return this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.nodes_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`),this.links_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`);this.start_animation=!this.start_animation,this.start_animation?this.animation_interval=setInterval((()=>{this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.nodes_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`),this.links_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`)}),this.chartHelper?.animation_rotation_speed):(null!=this.animation_interval&&clearInterval(this.animation_interval),this.animation_interval=void 0)}map_children_data_to_head(){const e=Cp(this.chartHelper.data_to_d3_format()).sort(((e,t)=>t.height-e.height||e.data.name.localeCompare(t.data.name))),t=540*Math.sqrt(this.chartHelper.tree_data.length/3);kp().size([360,t]).separation(((e,t)=>50))(e);const r=Yt("svg");r.attr("width",580),r.attr("height",250),r.attr("style","overflow: visible");const a=r.append("g").attr("transform",`translate(${r.attr("width")/2},${r.attr("height")/2})`);a.append("g").attr("class","links"),a.append("g").attr("class","nodes"),e.each((e=>{const t=this.chartHelper?.makeHead(e.data,!1,!1);e.head=t.node(),e.head.removeEventListener("dblclick",this.chartHelper.handleCenterHead),e.head.ondblclick=e=>{e.stopPropagation(),e.preventDefault();const t=e.currentTarget.querySelector("g").getBoundingClientRect();this.chartHelper?.center_elem(t)},e.color_set=this.chartHelper?.color_handler.getColor(e.data.id)})),r.select("g.nodes").selectAll("svg.node").data(e.descendants()).enter().append((e=>("rounded"!=this.chartHelper?.chart_head_type&&this.chartHelper?.show_chart_head_border&&(e.head.querySelector("rect").style.fill="white",e.head.querySelector("rect").style.strokeWidth="1"),e.head))).classed("node",!0).select("g").attr("transform",(e=>`rotate(${e.x}, 0, 0) translate(0, ${-e.y})`)),r.select("g.nodes").selectAll("circle.node").data(e.descendants()).enter().append("circle").classed("node",!0).attr("cx",0).attr("cy",(e=>-e.y)).attr("r",5).attr("fill",(e=>e.color_set.color)).attr("stroke",(e=>e.color_set.gray)).attr("stroke-width",1).attr("transform",(e=>`rotate(${e.x}, 0, 0)`));const i=Tx().angle((e=>e.x*Math.PI/180)).radius((e=>e.y));r.select("g.links").selectAll("path.link").data(e.links()).enter().append("path").classed("link",!0).attr("stroke",(e=>e.target.color_set.gray)).attr("fill","none").attr("stroke-width",1.5).attr("d",(e=>i([e.target,e.source]))),this.nodes_group=r.select("g.nodes"),this.links_group=r.select("g.links"),this.head_child_wrapper?.append(r.node())}}class n_{content_wrapper=null;head_child_wrapper=null;tsInnerContainer=null;chartHelper;current_scale=1;root_svg=void 0;rotate_deg=0;animation_interval=void 0;start_animation=!1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper.className="st-child-wrapper",this.content_wrapper.className="st-grs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper),this.tsInnerContainer?.append(this.content_wrapper),this.map_children_data_to_head(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}animate_chat(e=!1,t=!1){if(e)return this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.root_svg.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`);this.start_animation=!this.start_animation,this.start_animation?this.animation_interval=setInterval((()=>{this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.root_svg.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`)}),this.chartHelper?.animation_rotation_speed):(null!=this.animation_interval&&clearInterval(this.animation_interval),this.animation_interval=void 0)}map_children_data_to_head(){const e=Cp(this.chartHelper.data_to_d3_format()).sort(((e,t)=>t.height-e.height||e.data.name.localeCompare(t.data.name))),t=540*Math.sqrt(this.chartHelper.tree_data.length/3),r=2*t,a=2*t;e.each((e=>{const t=this.chartHelper?.makeHead(e.data,!1,!1);e.head=t.node(),e.color_set=this.chartHelper?.color_handler.getColor(e.data.id)}));py().size([2*Math.PI,t]).separation(((e,t)=>100))(e);const i=Yt("svg").attr("viewBox",[-110-t,-110-t,r,a]).attr("width",r).attr("height",a).attr("style","background-color: none; max-width: 100%; height: auto; overflow: visible;");i.append("g").attr("fill","none").attr("stroke",this.chartHelper?.color_handler.get_app_gray()).attr("stroke-opacity",1).attr("stroke-width",1.5).selectAll("path").data(e.links()).join("path").attr("d",Wx().angle((e=>e.x)).radius((e=>e.y)));const n=i.append("g").selectAll("g").data(e.descendants()).join("g").attr("transform",(e=>`rotate(${180*e.x/Math.PI-90}) translate(${e.y},0)`));n.append("circle").attr("fill",(e=>e.color_set.color)).attr("r",3),n.append((e=>("rounded"!=this.chartHelper?.chart_head_type&&this.chartHelper?.show_chart_head_border&&(e.head.querySelector("rect").style.fill="white",e.head.querySelector("rect").style.strokeWidth="1"),e.head))),n.append("title").text((e=>e.data.name+" - "+e.data.role)),this.root_svg=i,this.head_child_wrapper?.append(i.node())}}var o_={zoomIn:' ',zoomOut:' zoom-out Created with Sketch Beta. ',resetZoom:' ',rotate:'',rotate_once:' ',rotate_once_anti_clockwise:' ',rotate_anticlockwise:''};class c_{root_ui_element=void 0;zoomInOut=()=>null;resetZoom=()=>null;animate_chat=()=>null;tree_type=void 0;animatable_trees=["goldenRod","radialSpiderLeg"];constructor({root_ui_element:e,zoomInOut:t,resetZoom:r,animate_chat:a}){this.root_ui_element=e,this.zoomInOut=t,this.resetZoom=r,this.animate_chat=a,setTimeout((()=>{this.make_tools()}),0)}make_tools(){const e=new xw;e.className="tools-container",this.root_ui_element?.appendChild(e);const t=document.createElement("div");t.className="tool-item",t.innerHTML=o_.zoomIn,t.title="Zoom in",t.onclick=e=>this.zoomInOut();const r=document.createElement("div");r.className="tool-item",r.innerHTML=o_.zoomOut,r.title="Zoom out",r.onclick=e=>this.zoomInOut("out");const a=document.createElement("div");a.className="tool-item",a.innerHTML=o_.resetZoom,a.title="Reset zoom & position",a.onclick=e=>this.resetZoom();const i=document.createElement("div");i.className="tool-item",i.innerHTML=o_.rotate,i.title="Start/Stop Clockwise Rotation";const n=document.createElement("div");n.className="tool-item",n.innerHTML=o_.rotate_anticlockwise,n.title="Start/Stop Anticlockwise Rotation";const o=document.createElement("div");o.className="tool-item",o.innerHTML=o_.rotate_once,o.title="Rotate Clockwise Once";const c=document.createElement("div");c.className="tool-item",c.innerHTML=o_.rotate_once_anti_clockwise,c.title="Rotate Anticlockwise Once",e.append(t),e.append(r),e.append(a),this.animatable_trees.includes(this.tree_type)&&(e.append(i),e.append(n),e.append(o),e.append(c),i.onclick=e=>this.animate_chat(),n.onclick=e=>this.animate_chat(!1,!0),o.onclick=e=>this.animate_chat(!0),c.onclick=e=>this.animate_chat(!0,!0))}}class l_ extends EventTarget{libraryName="TreeSpider";targetRootContainer=null;rootWrapperContainer=null;tsInnerContainer=null;rootCanvasEl=null;chartHelper={};currentChartUI;zoom_instace;colorHandler={};tree_default_point_position="";instance_unique_id="";options={targetContainer:"",width:"900px",height:"500px",placeEl:"override",tree_data:void 0,color_range:[],tree_type:"default",chart_head_type:"default",show_tools:!0,show_chart_head_border:!1,animation_rotation_speed:10,animation_rotation_interval:1,backgroundPattern:"default",backgroundSize:void 0,customBackground:void 0,backgroundPosition:void 0,head_linker_thumb_circle_radius:8,linker_thumb_icon_color:"bright500",linker_thumb_shape:"symbolCircle",head_image_shape:"symbolCircle",chart_head_bg:"#ffffff",auto_set_chart_head_bg:!1,display_tree_in_step:!1,auto_display_tree_in_step:!0,tree_level_step:2,pallet:{h:10,s:.5,l:.5,darker:3,brighter:.8,bright100:.5,dark100:.5,gray:50,gray85:85},tree_link_type:void 0,random_data_length:200,autoInitialize:!0,zoom_in_distance:1.5,zoom_out_distance:.5,verticalSpace:"120px",font_link:"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap",font_name:"Lato"};constructor(e){if(super(),null==e.targetContainer)throw new Error(this.libraryName+": The target container is required");if(null!=e.tree_data)this.options.tree_data=e.tree_data;else{const t=new qC({length:e.random_data_length||this.options.random_data_length});this.options.tree_data=t.generated_data}this.setOptions(e),this.instance_unique_id="tree_spider_"+this.options.targetContainer.replace(/[\W\D]/,"_"),this.loadFont(),console.info(this.libraryName+" ready!"),this.options.autoInitialize&&this.initialize()}initialize(){if(this.targetRootContainer=document.querySelector(this.options.targetContainer),null===this.targetRootContainer)throw new Error(this.libraryName+": target container not found");this.targetRootContainer.setAttribute("data-tree-spider-initialized",this.instance_unique_id),this.createUI(),setTimeout((()=>{this.emitEvent("library.init",{rootContainer:this.rootWrapperContainer})}),0),console.info(this.libraryName+" initialized!")}initialize_root_container(){this.rootWrapperContainer=new vw,this.rootWrapperContainer.setAttribute("data-ts-unique-id",this.instance_unique_id),this.setCSSPropertyVar("--vertical-space-var",this.options.verticalSpace),this.setCSSPropertyVar("--font-family",this.options.font_name),this.setCSSPropertyVar("--root-cont-width",this.options.width),this.setCSSPropertyVar("--root-cont-height",this.options.height),this.rootWrapperContainer.setAttribute("backgroundPattern",this.options.backgroundPattern),this.rootWrapperContainer.setAttribute("backgroundSize",this.options.backgroundSize),this.rootWrapperContainer.setAttribute("customBackground",this.options.customBackground),this.rootWrapperContainer.setAttribute("backgroundPosition",this.options.backgroundPosition)}setCSSPropertyVar(e,t){this.rootWrapperContainer?.style.setProperty(e,t)}loadFont(){let e,t,r;null==jt('[href="https://fonts.googleapis.com"]').node()&&(t=Yt("link").attr("rel","preconnect").attr("href","https://fonts.googleapis.com")),null==jt('[href="https://fonts.gstatic.com"]').node()&&(r=Yt("link").attr("rel","preconnect").attr("href","https://fonts.gstatic.com").attr("crossOrigin","")),this.options.font_link&&(e=Yt("link").attr("href",this.options.font_link).attr("rel","stylesheet")),null!=t&&document.head.appendChild(t.node()),null!=r&&document.head.appendChild(r.node()),null!=e&&document.head.appendChild(e.node())}setObjectValue(e,t){const r=e;if(0==Object.keys(r).length)return t;for(const e in r)if(Object.keys(t).includes(e)&&Object.hasOwnProperty.call(r,e))if("object"!=typeof r[e]||Array.isArray(r[e]))r[e]=t[e];else{const a=this.setObjectValue(r[e],t[e]);r[e]={...r[e],...a}}return r}createUI(){this.initialize_root_container(),this.chartHelper=new ZC,this.chartHelper.rootWrapperContainer=this.rootWrapperContainer,this.chartHelper.app_unique_id=this.instance_unique_id,this.chartHelper.tree_data=this.options.tree_data,this.chartHelper.center_elem=this.center_elem.bind(this),this.chartHelper.chart_head_type=this.options.chart_head_type,this.chartHelper.animation_rotation_speed=this.options.animation_rotation_speed,this.chartHelper.animation_rotation_interval=this.options.animation_rotation_interval,this.chartHelper.head_linker_thumb_circle_radius=this.options.head_linker_thumb_circle_radius,this.chartHelper.linker_thumb_icon_color=this.options.linker_thumb_icon_color,this.chartHelper.linker_thumb_shape=this.options.linker_thumb_shape,this.chartHelper.head_image_shape=this.options.head_image_shape,this.chartHelper.chart_head_bg=this.options.chart_head_bg,this.chartHelper.auto_set_chart_head_bg=this.options.auto_set_chart_head_bg,this.chartHelper.display_tree_in_step=this.options.display_tree_in_step,this.chartHelper.auto_display_tree_in_step=this.options.auto_display_tree_in_step,this.chartHelper.tree_level_step=this.options.tree_level_step,this.chartHelper.tree_link_type=this.options.tree_link_type,this.chartHelper.emitEvent=this.emitEvent.bind(this),this.colorHandler=new QC({tree_data:this.options.tree_data,color_range:this.options.color_range,pallet:this.options.pallet}),this.chartHelper.color_handler=this.colorHandler,this.placeRootContainer()}zoomInOut(e="in"){const t="in"==e?this.options.zoom_in_distance:this.options.zoom_out_distance;this.zoom_instace?.scaleBy(jt(`[data-ts-unique-id='${this.instance_unique_id}']`),t)}resetZoom(){const e=jt(`[data-ts-unique-id='${this.instance_unique_id}'] .root-svg-el > g`).node().getBoundingClientRect();this.center_elem(e,this.tree_default_point_position)}placeRootContainer(){if(this.tsInnerContainer=this.chartHelper.createDynamicEl(),this.tsInnerContainer.className="ts-inner-container",0==this.options.tree_data?.length){const e=new xw;e.innerText="No data provided!",this.tsInnerContainer.appendChild(e)}if(this.rootWrapperContainer?.appendChild(this.tsInnerContainer),"start"==this.options.placeEl?this.targetRootContainer?.prepend(this.rootWrapperContainer):"end"==this.options.placeEl?this.targetRootContainer?.append(this.rootWrapperContainer):"object"==typeof this.options.placeEl&&Object.keys(this.options.placeEl).length>0?this.targetRootContainer?.insertBefore(this.rootWrapperContainer,this.targetRootContainer.querySelector(this.options.placeEl.beforeEl)):(this.targetRootContainer.innerHTML="",this.targetRootContainer.appendChild(this.rootWrapperContainer)),this.bindPanning(),"default"==this.options.tree_type)this.currentChartUI=new XC({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("vSpiderWalk"==this.options.tree_type)this.currentChartUI=new e_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("hSpider"==this.options.tree_type)this.currentChartUI=new t_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("hSpiderWalk"==this.options.tree_type)this.currentChartUI=new r_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("cellar"==this.options.tree_type)this.currentChartUI=new a_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("goldenRod"==this.options.tree_type)this.currentChartUI=new i_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else{if("radialSpiderLeg"!=this.options.tree_type)throw new Error("Not implemented and you are welcome to implement it :)");this.currentChartUI=new n_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper})}if(this.options.tree_data.length>0&&this.options.show_tools){new c_({root_ui_element:this.rootWrapperContainer,zoomInOut:this.zoomInOut.bind(this),resetZoom:this.resetZoom.bind(this),animate_chat:this.currentChartUI?.animate_chat?.bind(this.currentChartUI)}).tree_type=this.options.tree_type}}bindPanning(){const e=this.rootWrapperContainer?.getBoundingClientRect(),t=jt(`[data-ts-unique-id='${this.instance_unique_id}']`);this.zoom_instace=gw().filter((e=>(e.preventDefault(),!(e.ctrlKey&&"wheel"!==e.type||e.button)))).extent([[0,0],[e.width,e.height]]).on("zoom",(e=>{this.emitEvent("zooming",{e:e})&&(this.tsInnerContainer.style.transform=`translate(${e.transform.x}px, ${e.transform.y}px) scale(${e.transform.k})`,this.rootWrapperContainer.style.setProperty("--ts-root-container-cursor","grabbing"),this.currentChartUI.current_scale=e.transform.k)})).on("end",(e=>{this.rootWrapperContainer.style.setProperty("--ts-root-container-cursor","grab")})),t.call(this.zoom_instace).on("dblclick.zoom",(e=>null))}center_elem(e,t="center"){const r=jt(`[data-ts-unique-id='${this.instance_unique_id}']`);""==this.tree_default_point_position&&(this.tree_default_point_position=t);const a=r.node()?.getBoundingClientRect(),i=this.tsInnerContainer?.getBoundingClientRect(),n=(e.left-i.left)/this.currentChartUI.current_scale,o=(e.top-i.top)/this.currentChartUI.current_scale,c=a.width/2-e.width/2/this.currentChartUI.current_scale,l=a.height/2-e.height/2/this.currentChartUI.current_scale;let s=0,u=0;if("center"==t)s=n-c,u=o-l;else if("top"==t)s=n-c,u=o-10;else if("bottom"==t){s=n-c;u=o-(l+(a.height/2-e.height/2))+10}else if("left"==t)s=n-10,u=o-l;else if("right"==t){s=n-(c+(a.width/2-e.width/2))+10,u=o-l}r.transition().duration(2500).call(this.zoom_instace?.transform,cw.translate(-s,-u))}emitEvent(e,t,r=!0){const a=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:r});return this.dispatchEvent(a)}updateChartHeadBg(e){"goldenRod"==this.options.tree_type||"radialSpiderLeg"==this.options.tree_type?(this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.querySelector("rect").style.fill=e)),this.addEventListener("chart_head.expanded",(()=>this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.querySelector("rect").style.fill=e))))):(this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.style.backgroundColor=e)),this.addEventListener("chart_head.expanded",(()=>this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.style.backgroundColor=e)))))}on(e,t){this.addEventListener(e,t)}setOptions(e){this.setObjectValue(this.options,e)}zoom(e){this.zoomInOut(e)}startStopRotateCW(){this.currentChartUI?.animate_chat()}startStopRotateACW(){this.currentChartUI?.animate_chat(!1,!0)}rotateOnceCW(){this.currentChartUI?.animate_chat(!0)}rotateOnceACW(){this.currentChartUI?.animate_chat(!0,!0)}}export{l_ as default}; diff --git a/dist/types/core/treeSpider.d.ts b/dist/types/core/treeSpider.d.ts deleted file mode 100644 index 27a658b..0000000 --- a/dist/types/core/treeSpider.d.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { ITreeSpiderMain } from "../types/MainTypes"; -import { TEventType } from "../types/utils.js"; -import ColorHandler from "../helpers/colorHandler.js"; -declare class TreeSpider extends EventTarget { - /** - * The library name - */ - private libraryName; - protected targetRootContainer: HTMLElement | null; - protected rootWrapperContainer: HTMLElement | null; - protected tsInnerContainer: HTMLElement | null; - protected rootCanvasEl: HTMLCanvasElement | null; - private chartHelper; - private currentChartUI; - private zoom_instace; - protected colorHandler: ColorHandler; - private tree_default_point_position; - private instance_unique_id; - /** - * TreeSpider options - */ - protected options: ITreeSpiderMain; - constructor(options: ITreeSpiderMain); - /** - * Method to programatically initialize TreeSpider - */ - initialize(): void; - private initialize_root_container; - private setCSSPropertyVar; - private loadFont; - protected setObjectValue(objectParent: Object, value: Object): Object; - private createUI; - private zoomInOut; - /** - * The method to reset the zoom to the default zoom state - */ - resetZoom(): void; - private placeRootContainer; - private bindPanning; - private center_elem; - private emitEvent; - /** - * @public @method updateChartHeadBg - Method for programmatically updating all chat head's background color - * @param color - The color value to set the chart heads to, you can pass any CSS color values to it - */ - updateChartHeadBg(color: string): void; - /** - * The short form for addEventListener - * @param eventName - The event you want to subscribe to - * @param callbackFn - The callback function - */ - on(eventName: TEventType, callbackFn: (data?: any) => null): void; - /** - * The method to programatically update parameters - * @param options_to_set - The parameter to update - */ - setOptions(options_to_set: Omit): void; - /** - * The method for programatically zooming in and out - * @param dir - The direction of the zoom, in or out - */ - zoom(dir: 'in' | 'out'): void; - /** - * The method to start rotating the chart clockwisely - */ - startStopRotateCW(): void; - /** - * The method to start rotating the chart anti-clockwisely - */ - startStopRotateACW(): void; - /** - * The method to rotate the chart once clockwisely - */ - rotateOnceCW(): void; - /** - * The method to rotate the chart once clockwisely - */ - rotateOnceACW(): void; -} -export default TreeSpider; diff --git a/dist/types/helpers/chart-helper.d.ts b/dist/types/helpers/chart-helper.d.ts deleted file mode 100644 index 493f5d2..0000000 --- a/dist/types/helpers/chart-helper.d.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { TChartHeadPointPosition, TColorSet, TElementCenterPositions, TEventType, THeadImageShape, THeadPointPosition, TLinkerCircleColor, TLinkerShape, TTreeToItemHierarchy } from "../types/utils"; -import { IChartHead, ID3DataFormat, TChartHeadType, TLinkType } from "../types/MainTypes"; -import TSElement from "../utils/ts-element.js"; -import ColorHandler from "./colorHandler"; -import * as d3 from "d3"; -declare class ChartMainHelper { - tree_data: Array; - handleCollapseChildren: (svgNode: any, id: string, clicked_pos: number) => void | undefined; - center_elem: (rect: DOMRect, position?: TElementCenterPositions) => void; - itemHierarchy: TTreeToItemHierarchy; - tmp_tree_data: IChartHead[]; - tree_level_step: number; - display_tree_in_step: boolean; - auto_display_tree_in_step: boolean; - link_point_position: { - [key in THeadPointPosition]: Function; - }; - inverse_link_point_position: { - [key in THeadPointPosition]: string; - }; - chartHeadWidth: number; - chartHeadHeight: number; - chartHeadLandscapeWidth: number; - chartHeadLandscapeHeight: number; - chartHeadRoundedWidth: number; - chartHeadRoundedHeight: number; - color_handler: ColorHandler; - chart_head_type: TChartHeadType; - show_chart_head_border: boolean; - animation_rotation_speed: number; - animation_rotation_interval: number; - head_linker_thumb_circle_radius: number; - linker_thumb_icon_color: TLinkerCircleColor; - linker_thumb_shape: TLinkerShape; - head_image_shape: THeadImageShape; - head_image_surface_area: number; - chart_head_bg: string; - auto_set_chart_head_bg: boolean; - emitEvent: (eventName: TEventType, data?: any, cancelable?: boolean) => boolean; - tree_link_types: { - curveBumpX: d3.CurveFactory; - curveBumpY: d3.CurveFactory; - curveBasisClosed: d3.CurveFactory; - curveLinear: d3.CurveFactory; - curveStep: d3.CurveFactory; - curveStepAfter: d3.CurveFactory; - curveStepBefore: d3.CurveFactory; - }; - tree_link_type: TLinkType | undefined; - rootWrapperContainer: HTMLElement | null; - app_unique_id: string; - app_root_unique_selector: string; - constructor(); - createDynamicEl(): TSElement; - splitStringIntoBatch(text: string, len: number): string[]; - get_user_initials(name: string): string; - format_employee_name(name: string, length?: number): string[]; - private symbol_type; - private get_page_body_bg; - private get_chart_head_bg; - private get_image_shape_spacing; - makeHead(head_data: IChartHead, doubleVerticalPoints?: boolean, pointPosition?: TChartHeadPointPosition): d3.Selection; - handleCenterHead(e: any): void; - defaultHead(head_data: IChartHead, doubleVerticalPoints?: boolean, pointPosition?: TChartHeadPointPosition): d3.Selection; - landscapeHead(head_data: IChartHead, doubleVerticalPoints?: boolean, pointPosition?: TChartHeadPointPosition): d3.Selection; - roundedHead(head_data: IChartHead, doubleVerticalPoints?: boolean, pointPosition?: TChartHeadPointPosition): d3.Selection; - add_linker(all_group: d3.Selection, has_parent: boolean, has_children: boolean, pointPosition: TChartHeadPointPosition, color_set: TColorSet, rect: d3.Selection, svgNode: d3.Selection, head_data: IChartHead, doubleVerticalPoints: boolean): void; - get_tree_items_hierarchy(parentId?: string, parent_index?: number, action?: { - level?: number; - item_id?: string; - callbackFn: (item: IChartHead, level: number) => void; - }): TTreeToItemHierarchy; - get_second_ancestor_item(child_id: string): any; - getElemRelPosInTree(el_id: string): number; - set_tmp_tree_data(el_id?: string | undefined): void; - getIsParentRootEl(parent_id: string): boolean; - getIsElRootTreeChild(id: string): boolean; - getRootTreeEl(): IChartHead | undefined; - el_has_children(el_id: string, check_tmp_data?: boolean): boolean; - get_children_down_to_level(el_id: string, level_limit: number, current_level?: number): IChartHead[]; - data_to_d3_format(parentId?: string, include_stat?: boolean): ID3DataFormat; -} -export default ChartMainHelper; diff --git a/dist/types/helpers/colorHandler.d.ts b/dist/types/helpers/colorHandler.d.ts deleted file mode 100644 index a732bde..0000000 --- a/dist/types/helpers/colorHandler.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { IChartHead, TColorPallet } from "../types/MainTypes"; -import { TColorSet } from "../types/utils"; -declare class ColorHandler { - private tree_data; - private color_range; - private interpolated_color; - pallet: { - h: number; - s: number; - l: number; - darker: number; - brighter: number; - bright100: number; - dark100: number; - gray: number; - gray85: number; - }; - constructor({ tree_data, color_range, pallet }: { - tree_data: IChartHead[]; - color_range?: string[]; - pallet?: TColorPallet; - }); - getColor(index: number): TColorSet; - get_app_gray(): string; - private get_color_percentage; - private interpolateColor; -} -export default ColorHandler; diff --git a/dist/types/helpers/randomDataGenerator.d.ts b/dist/types/helpers/randomDataGenerator.d.ts deleted file mode 100644 index 6f5d960..0000000 --- a/dist/types/helpers/randomDataGenerator.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { IChartHead } from "../types/MainTypes"; -declare class RandomDataGenerator { - private data_length; - generated_data: Array; - private auto_proceed; - private locale; - imgAPIs: string[]; - constructor({ length, auto_proceed, locale }: { - length?: number; - auto_proceed?: boolean; - locale?: string; - }); - generate(): Array; - private make_data; - private get_parent_id; - private generate_data; -} -export default RandomDataGenerator; diff --git a/dist/types/trees/cellarSpider.tree.d.ts b/dist/types/trees/cellarSpider.tree.d.ts deleted file mode 100644 index 01793ac..0000000 --- a/dist/types/trees/cellarSpider.tree.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { TTreeClassParams, TTreeMapArr } from "../types/utils"; -import ChartMainHelper from "../helpers/chart-helper.js"; -declare class CellarTreeSpider { - protected content_wrapper: HTMLElement | null; - protected head_child_wrapper_center: HTMLElement | null; - protected head_child_wrapper_1: HTMLElement | null; - protected head_child_wrapper_2: HTMLElement | null; - protected tsInnerContainer: HTMLElement | null; - chartHelper: ChartMainHelper | undefined; - tree_map_arr: Array; - current_scale: number; - constructor({ tsInnerContainer, chartHelper }: TTreeClassParams); - private organizeUI; - private map_children_data_to_head; - private drawBranchLinkFresh; - private drawBranchLink; - private handleCollapseChildren; - private removeNodeRecursiveFromTreeMap; - private handleCollapseRootElChildren; -} -export default CellarTreeSpider; diff --git a/dist/types/trees/default.tree.d.ts b/dist/types/trees/default.tree.d.ts deleted file mode 100644 index 87fb9e2..0000000 --- a/dist/types/trees/default.tree.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TTreeClassParams } from "../types/utils"; -declare class DefaultTree { - private chartHelper; - private tree_map_arr; - protected content_wrapper: HTMLElement | null; - protected tsInnerContainer: HTMLElement | null; - current_scale: number; - constructor({ tsInnerContainer, chartHelper }: TTreeClassParams); - private map_children_data_to_head; - private organizeUI; - private drawBranchLinkFresh; - private drawBranchLink; - private handleCollapseChildren; - private removeNodeRecursiveFromTreeMap; -} -export default DefaultTree; diff --git a/dist/types/trees/goldenRodSpider.tree.d.ts b/dist/types/trees/goldenRodSpider.tree.d.ts deleted file mode 100644 index d62fa73..0000000 --- a/dist/types/trees/goldenRodSpider.tree.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { TTreeClassParams } from "src/types/utils.js"; -import ChartMainHelper from "../helpers/chart-helper.js"; -declare class GoldenRodSpider { - protected content_wrapper: HTMLElement | null; - protected head_child_wrapper: HTMLElement | null; - protected tsInnerContainer: HTMLElement | null; - chartHelper: ChartMainHelper | undefined; - current_scale: number; - nodes_group: any; - links_group: any; - rotate_deg: number; - animation_interval: any; - start_animation: boolean; - constructor({ tsInnerContainer, chartHelper }: TTreeClassParams); - private organizeUI; - animate_chat(once?: boolean, anti?: boolean): any; - private map_children_data_to_head; -} -export default GoldenRodSpider; diff --git a/dist/types/trees/hSpider.tree.d.ts b/dist/types/trees/hSpider.tree.d.ts deleted file mode 100644 index 97429e4..0000000 --- a/dist/types/trees/hSpider.tree.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TTreeClassParams } from "../types/utils.js"; -declare class HorizontalTreeSpider { - private chartHelper; - private tree_map_arr; - protected content_wrapper: HTMLElement | null; - protected tsInnerContainer: HTMLElement | null; - current_scale: number; - constructor({ tsInnerContainer, chartHelper }: TTreeClassParams); - private organizeUI; - private map_children_data_to_head; - private drawBranchLinkFresh; - private drawBranchLink; - private handleCollapseChildren; - private removeNodeRecursiveFromTreeMap; -} -export default HorizontalTreeSpider; diff --git a/dist/types/trees/hSpiderWalk.tree.d.ts b/dist/types/trees/hSpiderWalk.tree.d.ts deleted file mode 100644 index 8645958..0000000 --- a/dist/types/trees/hSpiderWalk.tree.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import ChartMainHelper from "../helpers/chart-helper.js"; -import { TTreeClassParams, TTreeMapArr } from "../types/utils.js"; -declare class HorizontalSpiderWalkTree { - protected content_wrapper: HTMLElement | null; - protected head_child_wrapper_center: HTMLElement | null; - protected head_child_wrapper_1: HTMLElement | null; - protected head_child_wrapper_2: HTMLElement | null; - protected tsInnerContainer: HTMLElement | null; - chartHelper: ChartMainHelper | undefined; - tree_map_arr: Array; - current_scale: number; - constructor({ tsInnerContainer, chartHelper }: TTreeClassParams); - private organizeUI; - private map_children_data_to_head; - private drawBranchLinkFresh; - private drawBranchLink; - private handleCollapseChildren; - private removeNodeRecursiveFromTreeMap; - private handleCollapseRootElChildren; -} -export default HorizontalSpiderWalkTree; diff --git a/dist/types/trees/radialSpiderLeg.tree.d.ts b/dist/types/trees/radialSpiderLeg.tree.d.ts deleted file mode 100644 index 52eaeb2..0000000 --- a/dist/types/trees/radialSpiderLeg.tree.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { TTreeClassParams } from "src/types/utils.js"; -import ChartMainHelper from "../helpers/chart-helper.js"; -declare class RadialSpiderLeg { - protected content_wrapper: HTMLElement | null; - protected head_child_wrapper: HTMLElement | null; - protected tsInnerContainer: HTMLElement | null; - chartHelper: ChartMainHelper | undefined; - current_scale: number; - root_svg: any; - rotate_deg: number; - animation_interval: any; - start_animation: boolean; - constructor({ tsInnerContainer, chartHelper }: TTreeClassParams); - private organizeUI; - animate_chat(once?: boolean, anti?: boolean): any; - private map_children_data_to_head; -} -export default RadialSpiderLeg; diff --git a/dist/types/trees/spiderlingsPacks.tree.d.ts b/dist/types/trees/spiderlingsPacks.tree.d.ts deleted file mode 100644 index 86b5580..0000000 --- a/dist/types/trees/spiderlingsPacks.tree.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TTreeClassParams } from "src/types/utils"; -declare class SpiderlingsPacksTree { - protected content_wrapper: HTMLElement | null; - protected head_child_wrapper: HTMLElement | null; - protected tsInnerContainer: HTMLElement | null; - private chartHelper; - current_scale: number; - private nodes_group; - private links_group; - private rotate_deg; - private animation_interval; - constructor({ tsInnerContainer, chartHelper }: TTreeClassParams); - private organizeUI; - private map_children_data_to_head; -} -export default SpiderlingsPacksTree; diff --git a/dist/types/trees/vSpiderWalk.tree.d.ts b/dist/types/trees/vSpiderWalk.tree.d.ts deleted file mode 100644 index b4de675..0000000 --- a/dist/types/trees/vSpiderWalk.tree.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import ChartMainHelper from "../helpers/chart-helper.js"; -import { TTreeClassParams, TTreeMapArr } from "../types/utils"; -declare class VerticalSpiderWalkTree { - protected content_wrapper: HTMLElement | null; - protected head_child_wrapper_center: HTMLElement | null; - protected head_child_wrapper_1: HTMLElement | null; - protected head_child_wrapper_2: HTMLElement | null; - protected tsInnerContainer: HTMLElement | null; - chartHelper: ChartMainHelper | undefined; - tree_map_arr: Array; - current_scale: number; - constructor({ tsInnerContainer, chartHelper }: TTreeClassParams); - private organizeUI; - private map_children_data_to_head; - private drawBranchLinkFresh; - private drawBranchLink; - private handleCollapseChildren; - private removeNodeRecursiveFromTreeMap; - private handleCollapseRootElChildren; -} -export default VerticalSpiderWalkTree; diff --git a/dist/types/types/MainTypes.d.ts b/dist/types/types/MainTypes.d.ts deleted file mode 100644 index 57065ce..0000000 --- a/dist/types/types/MainTypes.d.ts +++ /dev/null @@ -1,187 +0,0 @@ -import { THeadImageShape, TLinkerCircleColor, TLinkerShape } from "./utils"; -export interface ITreeSpiderMain { - /** - * The target container in which SpiderTree will be spawned in - */ - targetContainer: string; - /** - * How SpiderTree container should be placed in the target root container, - * provide a CSS selector to beforeEl if SpiderTree container should be placed - * before a container in the provided target container - */ - placeEl?: 'override' | 'start' | 'end' | { - beforeEl: string; - }; - /** - * The parameter to set TreeSpider to not auto initialize - */ - autoInitialize?: boolean; - /** - * An array of data containing employee details and relationship - */ - tree_data?: Array; - /** - * An array of colors which will be used as color range, set more than - * one color for better output - */ - color_range?: string[]; - /** - * The type of chart, it is set to 'default' by default - */ - tree_type?: 'default' | 'cellar' | 'goldenRod' | 'hSpider' | 'hSpiderWalk' | 'radialSpiderLeg' | 'vSpiderWalk'; - /** - * The type of chart head - */ - chart_head_type?: TChartHeadType; - /** - * Set this to `false` to not display the tool UI - */ - show_tools?: boolean; - /** - * Set this parameter to `false` to not show border around the chart head, - * note setting this to `false` will also remove the charthead background for the radialSpiderLeg tree type - */ - show_chart_head_border?: boolean; - /** - * Use this to set the animation rotation speed - */ - animation_rotation_speed?: number; - /** - * The degree increment of the rotation, default is 1 - */ - animation_rotation_interval?: number; - /** - * The background pattern of your choice - */ - backgroundPattern?: 'none' | 'default' | 'flux' | 'quad' | 'blurry' | 'chaos' | 'flurry' | 'spiral' | 'whirling' | 'replicate' | 'scribble' | 'squiggly' | 'gyrrate' | 'leaves' | 'spot'; - /** - * The CSS background position of the SVG background - */ - backgroundPosition?: 'bottom' | 'center' | 'inherit' | 'initial' | 'left' | 'right' | 'top' | 'unset' | `${number}%` | `${number}px`; - /** - * The size of the background svg pattern - */ - backgroundSize?: string; - /** - * The SVG background to be used instead of the TreeSpider ones - */ - customBackground?: string; - /** - * The radius/width of the linker thumb - */ - head_linker_thumb_circle_radius?: number; - /** - * The color of the linker thumb icon that shows if the head children has been collapsed or not - */ - linker_thumb_icon_color?: TLinkerCircleColor; - /** - * The shape of the linker thumb - */ - linker_thumb_shape?: TLinkerShape; - /** - * The shape of the head image or the employee initials wrapper if image is unavailable - */ - head_image_shape?: THeadImageShape; - /** - * The chart head background color, useful in cases where you want the background to - * match your website color mode - */ - chart_head_bg?: string; - /** - * The parameter to set whether the library should automatically use the webpage's - * body tag's background color as the chart head background color - */ - auto_set_chart_head_bg?: boolean; - /** - * The parameter to set whether to automatically display-in-step when rendering - * large data that is more than 500, it is advisable to keep this parameter to `true` - * when working with large data that is more than 3000 employees because it is going - * take few seconds to render which is bad for user experience - */ - display_tree_in_step?: boolean; - /** - * The parameter to disable auto display tree in step feature - */ - auto_display_tree_in_step?: boolean; - /** - * The steps to display trees, on initialization the number of the provided step will be rendered, - * when a tree whose children are hidden by default - * is expanded its children will also be rendered in the number of the provided step - */ - tree_level_step?: number; - /** - * The parameter to tune the chart head color - */ - pallet?: TColorPallet; - /** - * The type of tree link you want to use - */ - tree_link_type?: TLinkType; - /** - * The length of the random number - */ - random_data_length?: number; - /** - * Suspended - random_data_locale - * The locale of the random data, it automatically use the user's device's locale - * gotten through the browser - */ - /** - * The distance to be zoomed in - */ - zoom_in_distance?: number; - /** - * The distance to be zoomed out - */ - zoom_out_distance?: number; - /** - * The vertical space between heads, set this to a lower or higher number to - * decrease or increase the distance between parent and children heads - */ - verticalSpace?: string; - /** - * The CDN of the Google font to be loaded - */ - font_link?: string; - /** - * The name of the provided font - */ - font_name?: string; - /** - * The width of the TreeSpider wrapper container - */ - width?: string; - /** - * The height of the TreeSpider wrapper container - */ - height?: string; -} -export interface IChartHead { - /** - * required: id of the head - */ - id: string; - name: string; - role: string; - location?: string; - parentId?: string; - stat?: number; - image?: string; -} -export interface ID3DataFormat extends IChartHead { - children: IChartHead[]; -} -export type TColorPallet = { - h: number; - s: number; - l: number; - darker: number; - brighter: number; - bright100: number; - dark100: number; - gray: number; - gray85: number; -}; -export type TTreeType = 'default' | 'cellar' | 'goldenRod' | 'hSpider' | 'hSpiderWalk' | 'radialSpiderLeg' | 'spiderlingsPack' | 'vSpiderWalk'; -export type TChartHeadType = 'default' | 'landscape' | 'rounded'; -export type TLinkType = 'curveBumpX' | 'curveBumpY' | 'curveBasisClosed' | 'curveLinear' | 'curveStep' | 'curveStepAfter' | 'curveStepBefore'; diff --git a/dist/types/types/utils.d.ts b/dist/types/types/utils.d.ts deleted file mode 100644 index cc9fa0f..0000000 --- a/dist/types/types/utils.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import TSElement from "../utils/ts-element"; -import { IChartHead } from "./MainTypes"; -import ChartMainHelper from "../helpers/chart-helper"; -export type TTreeMapArr = { - svgNode: any; - targetChild: SVGSVGElement; - parentId: string; - id: string; - lineOrigin?: TBranchLineOrigin; -}; -export type TChildrenMapperReturnEl = TSElement; -export type TSingleChildrenMap = { - child_el: TSElement; - children_map_arr: TTreeMapArr[]; -}; -export type TTreeClassParams = { - tree_data: Array; - tsInnerContainer: HTMLElement; - chartHelper: ChartMainHelper; -}; -export type THeadPointPosition = "top" | "bottom" | "left" | "right"; -export type TChartHeadPointPosition = { - parent: THeadPointPosition; - children: THeadPointPosition; -} | false; -export type TColorSet = { - color: string; - brighter: string; - darker: string; - bright100: string; - dark100: string; - bright500: string; - gray: string; - gray85: string; -}; -export type TTreeToItemHierarchy = Array<{ - level: number; - items: Array; -}>; -export type TBranchLineOrigin = "top" | "bottom" | "left" | "right"; -export type TElementCenterPositions = 'center' | 'top' | 'bottom' | 'right' | 'left'; -export type TLinkerCircleColor = 'brighter' | 'bright500' | 'bright100'; -export type TLinkerShape = 'symbolAsterisk' | 'symbolCircle' | 'symbolCross' | 'symbolDiamond' | 'symbolDiamond2' | 'symbolPlus' | 'symbolSquare' | 'symbolSquare2' | 'symbolStar' | 'symbolTriangle' | 'symbolTriangle2' | 'symbolWye' | 'symbolX'; -export type THeadImageShape = 'symbolCircle' | 'symbolCross' | 'symbolDiamond' | 'symbolDiamond2' | 'symbolSquare' | 'symbolSquare2' | 'symbolStar' | 'symbolTriangle' | 'symbolTriangle2' | 'symbolWye'; -export type TEventType = 'chart_head.create' | 'chart_head.expanded' | 'chart_head.collapsed' | 'zooming' | 'library.init'; diff --git a/dist/types/utils/backgrounds.d.ts b/dist/types/utils/backgrounds.d.ts deleted file mode 100644 index 2c99ef4..0000000 --- a/dist/types/utils/backgrounds.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * SVG backgrounds gotten from https://www.fffuel.co - */ -declare const _default: { - flux: string; - quad: string; - blurry: string; - chaos: string; - spiral: string; - flurry: string; - whirling: string; - replicate: string; - scribble: string; - squiggly: string; - gyrate: string; - leaves: string; - reflection: string; - spot: string; -}; -export default _default; diff --git a/dist/types/utils/icons.d.ts b/dist/types/utils/icons.d.ts deleted file mode 100644 index 5388053..0000000 --- a/dist/types/utils/icons.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * SVG icons gotten from https://svgrepo.com - */ -declare const _default: { - zoomIn: string; - zoomOut: string; - resetZoom: string; - rotate: string; - rotate_once: string; - rotate_once_anti_clockwise: string; - rotate_anticlockwise: string; -}; -export default _default; diff --git a/dist/types/utils/ts-element.d.ts b/dist/types/utils/ts-element.d.ts deleted file mode 100644 index ee8f33d..0000000 --- a/dist/types/utils/ts-element.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare class TSElement extends HTMLDivElement { - constructor(); - connectedCallback(): void; -} -export default TSElement; diff --git a/dist/types/utils/ts-root-container.d.ts b/dist/types/utils/ts-root-container.d.ts deleted file mode 100644 index e97d5cc..0000000 --- a/dist/types/utils/ts-root-container.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import * as d3 from 'd3'; -declare class TSRootContainer extends HTMLDivElement { - main_svg: any; - tree_data: any; - static observeAttributes: string[]; - private backgroundPattern; - private backgroundSize; - private customBackground; - private backgroundPosition; - constructor(); - connectedCallback(): void; - setCanvasBg(): void; - defaultDotsPatternBg(): d3.Selection; - fluxPatternBg(): string; - quadPatternBg(): string; - blurryBg(): string; - chaosPatternBg(): string; - spiralPatternBg(): string; - flurryPatternBg(): string; - whirlingPatternBg(): string; - replicatePatternBg(): string; - scribblePatternBg(): string; - squigglyPatternBg(): string; - gyrratePatternBg(): string; - leavesPatternBg(): string; - reflectionPatternBg(): string; - spotPatternBg(): string; -} -export default TSRootContainer; diff --git a/dist/types/utils/ui-tools.d.ts b/dist/types/utils/ui-tools.d.ts deleted file mode 100644 index 9def649..0000000 --- a/dist/types/utils/ui-tools.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { TTreeType } from "../types/MainTypes"; -declare class UITools { - private root_ui_element; - private zoomInOut; - private resetZoom; - private animate_chat; - tree_type: TTreeType | undefined; - private animatable_trees; - constructor({ root_ui_element, zoomInOut, resetZoom, animate_chat }: { - root_ui_element: HTMLElement; - zoomInOut: Function; - resetZoom: Function; - animate_chat: Function; - }); - private make_tools; -} -export default UITools; diff --git a/docs/basic-usage/index.html b/docs/basic-usage/index.html new file mode 100644 index 0000000..2b2dbea --- /dev/null +++ b/docs/basic-usage/index.html @@ -0,0 +1,41 @@ + + + + + +Basic Usage | TreeSpider + + + + + +

Basic Usage

+

Presumming you've followed the installation steps, here is the basic usage of TreeSpider, all TreeSpider options are optional except the targetContainer, to intialize TreeSpider.

+

Initializing

+
<div id="container-1"></div>
+
import TreeSpider from "path/to/treespider/dist/es/treeSpider.bundle.min.js"

// OR if TreeSpider was installed with npm in a project with a bundler

// import TreeSpider from "treespider"

const instance1 = new TreeSpider({
targetContainer: "#container-1"
})
+

Then this will display TreeSpider in the browser with randomly generated fake data, next, load your organization data into TreeSpider, the data is linear and straight forward.

+

Passing organization data

+

The tree_data option takes an array of objects which will be the organization's employee data, the id property is required, and each employee will have a parentId which is the id of the department head that each employee reports to, and it is also required that there is an object/data that doesn't have a parentId which will serve as the root or the overall head of the organization.

+
const employee_data = [
{
id: "1",
name: "Abayomi Amusa",
role: "CEO",
location: "Lagos, Nigeria"
},
{
id: "2",
parentId: "1",
name: "Trey Anderson",
role: "Product Manager",
location: "California, United States"
},
{
id: "3",
parentId: "1",
name: "Troy Manuel",
role: "Software Developer",
location: "Alberta, Canada"
},
{
id: "4",
parentId: "1",
name: "Rebecca Oslon",
role: "Software Developer",
location: "London, United Kingdom"
},
{
id: "5",
parentId: "1",
name: "David Scheg",
role: "Product Designer",
location: "Jiaozian, China"
},
{
id: "6",
parentId: "2",
name: "James Zucks",
role: "DevOps",
location: "Accra, Ghana"
},
{
id: "7",
parentId: "2",
name: "Zu Po Xe",
role: "Backend Developer",
location: "Johanesburg, South Africa"
},
{
id: "8",
parentId: "2",
name: "Scott Ziagler",
role: "FrontEnd Developer Intern"
},
{
id: "9",
parentId: "7",
name: "Xervia Allero",
role: "FrontEnd Developer Intern"
},
{
id: "10",
parentId: "3",
name: "Adebowale Ajanlekoko",
role: "Fullstack Developer"
},
]

const instance1 = new TreeSpider({
targetContainer: '#container-1',
tree_data: employee_data
})
+

Notice the CEO doesn't have a parentId property and that signifies it is the root or the overall head of the organization, and each employee has the parentId property pointing the employee they report to, learn more about the tree data structure on the tree date page.

+

Then this will display the structure with the default tree type and other default options, zoom out and pan around to interact.

+ +
+
info

There can be multiple TreeSpider instances on the same page

+

Options

+

You can also customize it or choose the tree type and chart head you want, like for example let's choose the cellar tree type with the landscape chart head type and also a blurry background pattern.

+
// ...

const instance1 = new TreeSpider({
targetContainer: "#container-1",
tree_data: employee_data, // from the example above
tree_type: "cellar",
chart_head_type: "landscape",
backgroundPattern: "blurry",
width: "100%", // added so it will fit the container area
})
+

And this will be displayed as below

+ +
+

Methods

+

You can also programmatically interact with TreeSpider, for instance let's programatically initialize TreeSpider, we will set the autoInitialize option to false then programmatically initialize it by calling the TreeSpider.initialize() method.

+
const inst1 = new TreeSpider({
targetContainer: "#container-1",
// ...
autoInitialize: false
});

document.querySelector("#button").onclick = () => {
inst1.initialize();
}

+

In the example above an onclick event was attached to a button to initialize TreeSpider onclick, to see this option in action click on the button below.

+ +
+

UI interaction

+

You can interact with the chart by double clicking on the chart heads to automatically zoom them in, pan in any direction, zoom in an out with pointer and mouse event, collapse and expand chart heads, and also interact using the UI tools.

+ + \ No newline at end of file diff --git a/docs/category/frameworks/index.html b/docs/category/frameworks/index.html new file mode 100644 index 0000000..d86de68 --- /dev/null +++ b/docs/category/frameworks/index.html @@ -0,0 +1,14 @@ + + + + + +Frameworks | TreeSpider + + + + + + + + \ No newline at end of file diff --git a/docs/chart-heads/index.html b/docs/chart-heads/index.html new file mode 100644 index 0000000..ac3ec8b --- /dev/null +++ b/docs/chart-heads/index.html @@ -0,0 +1,32 @@ + + + + + +Chart Heads | TreeSpider + + + + + +

Chart Heads

+

As TreeSpider has different tree types so it also has different options of chart heads that can be chosen from, each trees has a fitting chart head, for example the rounded chart head goes well on the goldenRod tree, the chart heads are as follows

+

default

+

This is the default chart head, example

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
chart_head_type: "default"
})
+

if you run this it would look somthing like this:

+ +
+

landscape

+

The landscape chart head is an horizontal chart head, example

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
chart_head_type: "landscape"
})
+

if you run this it would look something like this:

+ +
+

rounded

+

The rounded chart head is a transparent head with bigger image shape, example

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
chart_head_type: "rounded"
})
+ +
+ + \ No newline at end of file diff --git a/docs/colors/index.html b/docs/colors/index.html new file mode 100644 index 0000000..9ae9fe9 --- /dev/null +++ b/docs/colors/index.html @@ -0,0 +1,27 @@ + + + + + +Colors | TreeSpider + + + + + +

Colors

+

This page explains more on the color_range option, you can customize TreeSpider chart head colors to fit your taste by providing an array of colors to the color_range option, by default, TreeSpider uses a range of rainbow colors, how does it work? TreeSpider interpolates the provided colors using d3.interpolateRgbBasis() which produces a color range based on the provided colors, it then slice out a color based on the index of the tree data of the chart head, the index gets converted into percentage, like for example if the index of the tree data is 98 and the total length of the tree data is 200, the maths is going to be 98/200 which then gives the percentage and with this percentage it is used to get a slice from the interpolated color range and then the tree data's chart head get assigned the color slice, next let's check out how it really works.

+

For example lets use the 3 basic colors red, green, and blue.

+
const instance1 = new TreeSpider({
targetContainer: '#container-1',
color_range: ['red', '#00FF00', 'blue']
})
+

If you noticed the second color in the array is in hex format which is to show that the format of the color passed can be either or both hex and color names, if you run this you will get something similar to this working example

+ +
+

You'll see that in this example the chart head colors are between the 3 provided colors, red, green and blue, there are no yellow, purple and other colors that are not within the 3 colors, and you will also notice that there are color variants of the 3 colors, like dark red, lighter blue, and darker green and others, that's the amazing work of d3 color interpolation.

+

Let's try just 2 colors, this time let's try yellow and purple

+
const instance1 = new TreeSpider({
targetContainer: '#container-2',
color_range: ['yellow', 'purple']
})
+

If you run this it would look like the example below

+ +
+

As you can see the colors are only yellows and purples, that is how it works, and you can pass in any number of colors.

+ + \ No newline at end of file diff --git a/docs/contributing/index.html b/docs/contributing/index.html new file mode 100644 index 0000000..a4bd16c --- /dev/null +++ b/docs/contributing/index.html @@ -0,0 +1,39 @@ + + + + + +Contributing | TreeSpider + + + + + +

Contributing

+

TreeSpider is still a work-in-progress and I am planning to make it better that it currently is, and your contribution is highly appreciated, and if you need a feature or want to add a tree type, a new chart head, a new link type or any other things you are welcome to contribute them, or if you noticed a bug you're welcome to create a pull request, your contributions are appreciated.

+

Codebase short intro

+

TreeSpider is fully built with D3 and object oriented TypeScript, and it also uses rollup as the bundler, the source code is under the src directory and the output bundle is in the dist directory.

+

Technologies used

+

The following are the technologies used

+
    +
  • D3.js
  • +
  • TypeScript
  • +
  • SCSS
  • +
  • rollup
  • +
  • babel
  • +
  • jest
  • +
+

Getting started

+

To get started to contribute, in a convenient directory on your computer, open the terminal and clone the TreeSpider github repository, then run npm i to install all the dev dependencies, then install sass globally with npm i -g sass.

+

Starting the project

+

To start the project, in the package.json file check the list of commands under the scripts property for all the commands needed for development and bundling, to start rollup bundler in watch-mode for development run

+
npm run rollup-watch
+

Next, start the sass css compiler in watch mode by running

+
npm run sass
+

Then you are good to go and to start making changes, the single scss file is under the /scss directory.

+

Testing

+

After development, testing is neccessary, to test you can either add some test cases to the already created test files under the /__test__ directory or create new test files, after creating the tests or if no tests were added, run

+
npm run test
+

If all tests passed, then you can create a pull request, no need for bundling as it will be bundled with GitHub Actions after it has been merged.

+ + \ No newline at end of file diff --git a/docs/events/index.html b/docs/events/index.html new file mode 100644 index 0000000..46edec0 --- /dev/null +++ b/docs/events/index.html @@ -0,0 +1,46 @@ + + + + + +Events | TreeSpider + + + + + +

Events

+

TreeSpider has a list of events that can be listened for, the below is a list of all events.

+

The events can be listened to by using the TreeSpider.addEventListener() or with the on() method.

+

library.init

+
    +
  • Data: rootContainer: HTMLElement
  • +
+

This event is emited once and immediately after TreeSpider has been initialized, example:

+
const inst1 = new TreeSpider({
targetContainer: "#container-1"
})

inst1.addEventListener("library.init", (e) => {
console.log("TreeSpider has been initialized")
})

// OR
// inst1.on("library.init", (e) => {
// console.log("TreeSpider has been initialized")
// })
+

chart_head.create

+
    +
  • Data: headNode: SVG
  • +
+

This event is emited after a chart head has been created and has not been added to the UI, it returns the SVG element of the chart head that was just created, this event is emited for each of the chat heads, example

+
const inst1 = new TreeSpider({
targetContainer: "#container-1"
})

inst1.addEventListener("chart_head.create", (e) => {
console.log("Chat head created; SVG: ", e.detail.headNode)
})

// OR
// inst1.on("chart_head.create", (e) => {
// console.log("Chat head created; SVG: ", e.detail.headNode)
// })
+

chart_head.expanded

+
    +
  • Data: svgNode: SVG, head_data: Object, pointPosition: number
  • +
+

This event is emited whenever a chat head got expanded, it returns the SVG node of the expanded chart head, the data of the chart head and the point position, the point position is always 1 except for chart heads with double point positions, example.

+
const inst1 = new TreeSpider({
targetContainer: "#container-1"
})

inst1.addEventListener("chart_head.expanded", (e) => {
console.log("Chat head expanded; data ", e.detail)
})

// OR
// inst1.on("chart_head.expanded", (e) => {
// console.log("Chat head expanded; data ", e.detail)
// })
+

chart_head.collapsed

+
    +
  • Data: svgNode: SVG, head_data: Object, pointPosition: number
  • +
+

This event is emited whenever a chat head got collapsed, it is just like the chart_head.expanded event and it also returns the SVG node of the expanded chart head, the data of the chart head and the point position, the point position is always 1 except for chart heads with double point positions, example.

+
const inst1 = new TreeSpider({
targetContainer: "#container-1"
})

inst1.addEventListener("chart_head.collapsed", (e) => {
console.log("Chat head expanded; data ", e.detail)
})

// OR
// inst1.on("chart_head.collapsed", (e) => {
// console.log("Chat head expanded; data ", e.detail)
// })
+

zooming

+
    +
  • Data: e: ZoomBehavior
  • +
+

This event is emited when zooming, note that it is also emited when panning and even when performing automatic zooming and panning, it returns d3 zoom behavior, example:

+
const inst1 = new TreeSpider({
targetContainer: "#container-1"
})

inst1.addEventListener("zooming", (e) => {
console.log("Tree is zooming; data ", e.detail)
})

// OR
// inst1.on("zooming", (e) => {
// cconsole.log("Tree is zooming; data ", e.detail)
// })
+ + \ No newline at end of file diff --git a/docs/frameworks/react-js/index.html b/docs/frameworks/react-js/index.html new file mode 100644 index 0000000..dbbad9d --- /dev/null +++ b/docs/frameworks/react-js/index.html @@ -0,0 +1,28 @@ + + + + + +React JS | TreeSpider + + + + + +

React JS

+

TreeSpider can run in React JS applications, this documentation uses React JS and it runs TreeSpider, the following are the steps to running TreeSpider in a React JS application.

+

Installation

+

To install TreeSpider in React JS, run

+
npm i treespider
+

This will install TreeSpider, next import TreeSpider in your application

+

Usage

+

Import TreeSpider.

+
import TreeSpider from 'treespider';
+

Next, add the CSS file to the index.js/ts file,

+
import "treespider/dist/css/treeSpider.css"
+

Next, initialize it

+
src/ExampleComponent.tsx
const ExampleComponent = React.memo((props: any) => {
const treeSpiderRef = React.useRef<TreeSpider | null>(null)

React.useLayoutEffect(() => {
treeSpiderRef.current = new TreeSpider({
targetContainer: "#container-1",
// ...
})
}, [])

return (
<div id="container-1"></div>
)
})

export default ExampleComponent;
+

Then TreeSpider is going to be displayed in the browser, to access the methods and events you can use the treeSpiderRef, and other options also works the same way as it would in a non-react js application.

+

The React JS library version of TreeSpider is coming soon.

+ + \ No newline at end of file diff --git a/docs/installation/index.html b/docs/installation/index.html new file mode 100644 index 0000000..15b3dc6 --- /dev/null +++ b/docs/installation/index.html @@ -0,0 +1,50 @@ + + + + + +Installation | TreeSpider + + + + + +

Installation

+

TreeSpider can be installed with npm or can be included via CDN.

+

NPM

+
npm i treespider
+

CDN

+

You can choose any CDN of your choice but we will be using UNPKG in this doc, it is recommended to include the minified version of both the ES6 and browser bundles.

+

ES6

+
https://unpkg.com/treespider@latest/dist/es/treeSpider.bundle.min.js
+

CSS

+
https://unpkg.com/treespider@latest/dist/css/treeSpider.css
+

Quick Start

+

After installing TreeSpider you can either import it directly into your project or load it through the script tag, and you can either choose to install it through npm or include it directly through CDN

+

NPM

+

If you installed it with NPM import the ES6 and CSS directly like so, it is recommended to import the minified bundle.

+

ES6 import with bundler

+
import TreeSpider from "treespider"
+

ES6 import with no bundler

+

If you installed TreeSpider into a project that has no bundler, move/copy the treespider folder from node_modules to the root of your project, then include TreeSpider like so

+
import TreeSpider from "/path/to/installation/folder/dist/es/treeSpider.bundle.min.js"
+

It is important note the es in the path as it contains the ES6 bundles, to load it through the script tag

+
<!--...-->
<script src="/path/to/treespider/folder/dist/browser/treeSpider.bundle.min.js"></script>

+

Then use it directly like so

+
<script>
const instance1 = new TreeSpider({...})
</script>
+

CSS

+

The TreeSpider CSS file needs to be included, add it to the head of the body like so

+
<link rel="stylesheet" href="/path/to/treespider/folder/dist/css/treeSpider.css">
+

CDN

+

As the same as loading TreeSpider when installed with NPM, you can import and load TreeSpider directly from the CDN, using UNPKG

+

ES6

+
import TreeSpider from "https://unpkg.com/treespider@latest/dist/es/treeSpider.bundle.min.js"
+

And you can replace the latest with any version of your choice, you can also load it directly from CDN through the script tag.

+

Browser

+
<script src="https://unpkg.com/treespider@latest/dist/browser/treeSpider.bundle.min.js"></script>

<!-- Then TreeSpider will be available and can be used like -->
<script>
const instance1 = new TreeSpider({...})
</script>
+

Also note the es and browser difference in the ES6 import and browser CDN link, next, add the CSS file from CDN.

+

CSS

+
<link rel="stylesheet" href="https://unpkg.com/treespider@latest/dist/css/treeSpider.css">
+

Next, the basic usage.

+ + \ No newline at end of file diff --git a/docs/intro/index.html b/docs/intro/index.html new file mode 100644 index 0000000..7161ed5 --- /dev/null +++ b/docs/intro/index.html @@ -0,0 +1,19 @@ + + + + + +Introduction | TreeSpider + + + + + +

Introduction

+

TreeSpider is an easy-to-use javascript library built for the purpose of displaying organization structure and employee structure and hierarchy within the organization, i.e for displaying employee data to know who reports to who and in which department, it makes it easy to manage employees in any organization of all sizes.

+

TreeSpider is built completely with D3js and TypeScript

+ +
+

TreeSpider is highly customizable and can be personalized to fit your organization.

+ + \ No newline at end of file diff --git a/docs/methods/index.html b/docs/methods/index.html new file mode 100644 index 0000000..1f22506 --- /dev/null +++ b/docs/methods/index.html @@ -0,0 +1,73 @@ + + + + + +Methods | TreeSpider + + + + + +

Methods

+

The following methods can be used to interact with TreeSpider programmatically

+

initialize

+
    +
  • Params: none
  • +
+

If you want to manually initialize TreeSpider, set the autoInitialize option to false then programmatically call this method to manually initialize TreeSpider, example below:

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
autoInitialize: false
})
// ...

document.querySelector("#random-btn").onclick = () => instance1.initialize()
+

Click on the button below to initialize TreeSpider

+ +
+

resetZoom

+
    +
  • Params: none
  • +
+

Call this method to reset the zoom level to the default zoom level, and this will also recenter or re-place the root chart head back to the default position.

+

updateChartHeadBg

+
    +
  • Params: color: string
  • +
+

This method is for programmatically setting the background color of the chart heads, it takes in the color as the argument, the color can be in hex format or a color name or any other CSS formats, example below

+
const instance1 = new TreeSpider({
targetContainer: "#container-1"
})

// ...

document.querySelector("#random-btn").onclick = () => instance1.updateChartHeadBg('black')
+

on

+
    +
  • Params: eventName: TEventType, callbackFn: (data?: any) => null
  • +
+

This method is a short form of the addEventListener method and it works exactly like it, it can be used to listen to events, to learn more about using events check the events page, example below:

+
const instance1 = new TreeSpider({
targetContainer: "#container-1"
})

instance1.on("library.init", (e) => {
console.log("library has been initialized", e)
})
+

setOptions

+
    +
  • Params: options_to_set: Omit<ITreeSpiderMain,'targetContainer'>
  • +
+

This option is for setting options that were not passed directly to the library and it will also override the options that were passed directly to the library, and it is recommended to call this method before initializing TreeSpider, and it is best to use this method when autoInitialize is set to false and when TreeSpider will be manually initialized, example below:

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
autoInitialize: false,
})

instance1.setOptions({
tree_data: [...]
})

document.querySelector("#random-btn").onclick = () => {
instance1.initialize()
}
+

zoom

+
    +
  • Params: dir: 'in' | 'out'
  • +
+

This option is for programmatically zooming in and out, it takes the direction of zoom either in or out as an argument.

+
note

The rotation feature is only available for radial or circular trees and the following methods will not work for none radial trees.

+

startStopRotateCW

+
    +
  • Params: none
  • +
+

This method is for starting or stopping the chart rotation in the clockwise direction.

+

startStopRotateACW

+
    +
  • Params: none
  • +
+

This method is for starting or stopping the chart rotation in the anticlockwise direction.

+

rotateOnceCW

+
    +
  • Params: none
  • +
+

This method is for rotating the tree only once in the clockwise direction.

+

rotateOnceACW

+
    +
  • Params: none
  • +
+

This method is for rotating the tree only once in the anticlockwise direction.

+ + \ No newline at end of file diff --git a/docs/options/index.html b/docs/options/index.html new file mode 100644 index 0000000..f97135d --- /dev/null +++ b/docs/options/index.html @@ -0,0 +1,300 @@ + + + + + +Options | TreeSpider + + + + + +

Options

+

TreeSpider can be personalized and customized with the options, the options are as follows

+

targetContainer

+
    +
  • Type: string
  • +
  • Default: none
  • +
  • required
  • +
+

The target container in which TreeSpider will be spawned/created into, this is required, and it is the CSS selector of the HTML element in which you want TreeSpider should be created in, if you want TreeSpider to take the whole page, pass in body.

+

placeEl

+
    +
  • Type: 'override' | 'start' | 'end' | {beforeEl: string}
  • +
  • Default: 'override'
  • +
  • optional
  • +
+

How TreeSpider container should be placed in the target container, set it to an object if the TreeSpider root container should be placed before a container in the provided target container, pass in beforeEl and the CSS selector of the container which TreeSpider should be inserted before in the target container.

+

width

+
    +
  • Type: string
  • +
  • Default: 900px
  • +
  • optional
  • +
+

The width of the TreeSpider wrapper container

+

height

+
    +
  • Type: string
  • +
  • Default: 500px
  • +
  • optional
  • +
+

The height of the TreeSpider wrapper container

+

autoInitialize

+
    +
  • Type: boolean
  • +
  • Default: true
  • +
  • optional
  • +
+

Set this option to false if you want to programmatically initialize TreeSpider, treeSpider will not automatically get initialized if this option is set to false, then you will have to call the TreeSpider.initialize() method to manually initialize TreeSpider.

+

tree_data

+
    +
  • Type: Array<IChartHead>
  • +
  • Default: undefined
  • +
  • optional
  • +
+

An array of data containing employee details and relationship, see tree data page for more info.

+

color_range

+
    +
  • Type: string[]
  • +
  • Default: ['#b31212', '#b34712', '#b38d12', '#9ab312', '#2fb312', '#12b362', '#12b3a8', '#1278b3', '#1712b3', '#5712b3', '#8d12b3', '#b3128d', '#b3124a', '#b31212']
  • +
  • optional
  • +
+

An array of colors which will be used as color range, set more than one color for better output, the provided number of colors should be more than one, by default it uses a set of color ranges, behind the scene TreeSpider will interpolates the provided color using d3.interpolateRgbBasis() and then slice out the color at the index equivalent to the employee index in the provided tree data, the provided color can be either in hex format or color names like yellow, red, green, blue and so on.

+

tree_type

+
    +
  • Type: string
  • +
  • Default: default
  • +
  • optional
  • +
+

The type of chart or tree, by default it uses the 'default' chart/tree which is the hierarchy-like tree type, the possible values is one of the following

+
Tree types
default
cellar
goldenRod
hSpider
hSpiderWalk
radialSpiderLeg
vSpiderWalk
+

chart_head_type

+
    +
  • Type: string
  • +
  • Default: default
  • +
  • optional
  • +
+

The type of chart head that will be used to display employee details, it is set to 'default' by default, and you can set it to either one of the following.

+
Chart head types
'default'
'landscape'
'rounded'
+

show_tools

+
    +
  • Type: boolean
  • +
  • Default: true
  • +
  • optional
  • +
+

Set this to false to not display the UI tools panel, the UI tool panel is the rectangular box floating at the top left corner of the TreeSpider container and it contains the tools for interacting with TreeSpider, note that some tools, like start rotating clockwise/anticlockwise and rotate once clockwise/anticlockwise, are only available for radial tree types or simply tree types that are circular in shape, example is the radialSpiderLeg tree type.

+

show_chart_head_border

+
    +
  • Type: boolean
  • +
  • Default: true
  • +
  • optional
  • +
+

Set this parameter to false to not show border around the chart head, note setting this to false will also remove the background color of the chart head when using the radialSpiderLeg tree type.

+

animation_rotation_speed

+
    +
  • Type: number
  • +
  • Default: 10
  • +
  • optional
  • +
+

Use this to set the animation rotation speed, it is in milliseconds, passing 1000 is going to be 1s, it works like the number passed to the setInterval that sets the duration, if it was set to, for example, 20 milliseconds, and during continuous rotation the rotation callback function will be called with a pause of 20 milliseconds, the smaller the animation_rotation_speed the smoother and faster the rotation.

+

animation_rotation_interval

+
    +
  • Type: number
  • +
  • Default: 1
  • +
  • optional
  • +
+

The degree increment of the rotation, default is 1, the provided number is going to be converted to degrees, for example if the provided number is 20 then the tree is going to be rotating 20 degrees per the interval set through the animation_rotation_speed option, the smaller the interval the smoother the rotation.

+

backgroundPattern

+
    +
  • Type: string
  • +
  • Default: default
  • +
  • optional
  • +
+

The pattern is an SVG pattern that will be used as the background of the TreeSpider container, by default it is set to the 'default' background pattern which is a dotted SVG background, the option can be one of the following.

+
Patterns
none
default
flux
quad
blurry
chaos
flurry
spiral
whirling
replicate
scribble
squiggly
gyrrate
leaves
spot
+

backgroundPosition

+
    +
  • Type: string
  • +
  • Default: undefined
  • +
  • optional
  • +
+

The CSS background position of the SVG background, to further customize the SVG background you can set this option to one of the following

+
Background positions
bottom
center
inherit
initial
left
right
top
unset
${number}%
${number}px
+

backgroundSize

+
    +
  • Type: string
  • +
  • Default: undefined
  • +
  • optional
  • +
+

The size of the background svg pattern, for a further customization, you can set the size of the SVG background pattern, it is the CSS background-size property, it can be in any CSS units, like px, %, pc, rem and so on.

+

customBackground

+
    +
  • Type: string
  • +
  • Default: undefined
  • +
  • optional
  • +
+

The SVG background to be used instead of the ones that comes with TreeSpider, if you would like to use a custom SVG background as the background pattern of the TreeSpider container you can set it with this option, set this option to the stringified SVG element to be used as the background pattern, then the above background options can be used to configure the provided custom background.

+

head_linker_thumb_circle_radius

+
    +
  • Type: number
  • +
  • Default: 8
  • +
  • optional
  • +
+

The radius/width of the linker thumb, ignore the confusing name of this option, the linker thumb is the SVG shape(s) that is/are at the edge(s) of chart heads which is/are used for hiding and unhiding chart children container and also for showing the link destination from a parent to child chart head, to change the size of the shape set this to a desired size.

+

linker_thumb_icon_color

+
    +
  • Type: string
  • +
  • Default: bright500
  • +
  • optional
  • +
+

The color of the linker thumb icon, that is, the icon inside the chart head link thumb, as described above, the inner thumb icon toggles between a plus icon and a times icon when the chart head child container hides and unhides, to customize the color you can set it to one of the following:

+
Thumb icon colors
brighter
bright500
bright100
+

linker_thumb_shape

+
    +
  • Type: string
  • +
  • Default: symbolCircle
  • +
  • optional
  • +
+

The shape of the linker thumb, the shape is a list of default D3 shapes, you can set it to the shape of your choice, the following is the of the supported shapes:

+
Linker thumb shapes
symbolAsterisk
symbolCircle
symbolCross
symbolDiamond
symbolDiamond2
symbolPlus
symbolSquare
symbolSquare2
symbolStar
symbolTriangle
symbolTriangle2
symbolWye
symbolX
+

head_image_shape

+
    +
  • Type: string
  • +
  • Default: symbolCircle
  • +
  • optional
  • +
+

The shape of the chart head image or the employee name initials container, just like the linker thumb, you can change the shape to the one you prefer, the shapes are default D3 shapes and the following is the list of shapes you can choose from:

+
Head image shapes
symbolCircle
symbolCross
symbolDiamond
symbolDiamond2
symbolSquare
symbolSquare2
symbolStar
symbolTriangle
symbolTriangle2
symbolWye
+

chart_head_bg

+
    +
  • Type: string
  • +
  • Default: #ffffff
  • +
  • optional
  • +
+

The chart head background color, useful in the scenerio where you want the background to match your website's color mode

+

auto_set_chart_head_bg

+
    +
  • Type: boolean
  • +
  • Default: false
  • +
  • optional
  • +
+

Set this option to true if you want TreeSpider to automatically use the webpage's body tag as the background color of the chart heads.

+

display_tree_in_step

+
    +
  • Type: boolean
  • +
  • Default: false
  • +
  • optional
  • +
+

If this option is set to true, TreeSpider will render the tree data in steps with the default or provided number of tree level steps, for instance, if the tree_level_step option was set to 3, then the 3 level of the organization structure data will, by default on initialization, be displayed, excluding the root of the chart like, for example, Root (CEO) -> Heads (level 1) -> Leads (level 2) -> Seniors (level 3), then if there are further levels below level 3 the linker thumb will be added to each of the level 3 chart heads to render further levels with the same step meaning the further levels below level 3 will also be rendered in 3 levels down and that is how it is going to keep going until the last level, this feature is useful when the tree data is more than 1000, or in an organization with employees more than 1000, rendering tree data that is 1000 in length can take 2 to 4 seconds on a 16gb RAM computer (that's because that is the kind of computer I used to build the library) to render and in if a tree data of 5000 in length were to be rendered that would be the average time taken to render 1000 tree data length times 5, that would be around maximum of 10s which is going to be bad for user experience, setting this option to true fixes this issue.

+

auto_display_tree_in_step

+
    +
  • Type: boolean
  • +
  • Default: true
  • +
  • optional
  • +
+

This option, which is true by default, displays the tree data in steps if the tree data is more than 500 for optimization, better performance and good user experience, but you can set it false, though not recommended, if you are running TreeSpider on a computer with great capacity and that can render large tree data less than a second and will not affect the user experience.

+

tree_level_step

+
    +
  • Type: number
  • +
  • Default: 2
  • +
  • optional
  • +
+

The steps to display trees, on initialization the number of the provided steps will be rendered, when a tree whose children are hidden by default is expanded its children will also be rendered in the number of the provided step.

+

pallet

+
    +
  • Type: Object
  • +
  • Default: { h: 10, s: 0.5, l: 0.5, darker: 3, brighter: 0.8, bright100: 0.5, dark100: 0.5, gray: 50, gray85: 85 }
  • +
  • optional
  • +
+

This option is for tuning the colors of the items in the chart heads, the chart head has variants of colors, first the chart head gets assigned a color from the interpolated color, of the default or the provided colors, based on the index of its data in the tree data, then other colors are then gotten from the variant of the assigned color, and to customize these color variants you can set the value of the properties of the color pallet to match your need, explanation of the properties of the option is below:

+
PropertyTypeDescription
hnumberh stands for the hue in the hsl CSS color
snumbers is the saturation in the hsl CSS color
lnumberl is the light in the hsl CSS color, use this to set the brightness of the color variants
darkernumberthis property specifies how much darker should the darker variants be
brighternumberThis property specifies how much brighter the brighter variants should be, this brighter value is the direct variant of the original color
bright100numberThe brighter variant of the hsl tuned original color
dark100numberThe bright variant of the hsl tuned original color
graynumberThis is a gray color, generated with d3.gray, you can tune and set the level of the generated gray, the value ranges from 0-100 where 0 is the darkest gray and 100 is the lightest gray.
gray85numberThis property is just like gray except that it is set to 85% by default and you can reduce or increase it as you wish
+

See d3 color documentation to learn more.

+ +
    +
  • Type: string
  • +
  • Default: undefined
  • +
  • optional
  • +
+

TreeSpider uses d3 link curves, and some of the d3 curves are supported, the following are the d3 link curves that TreeSpider supports:

+
Link types
curveBumpX
curveBumpY
curveBasisClosed
curveLinear
curveStep
curveStepAfter
curveStepBefore
+

random_data_length

+
    +
  • Type: number
  • +
  • Default: 200
  • +
  • optional
  • +
+

The length of the random number, by default the length of the random generated fake data is 200 but you can increase or decrease it with this option.

+

zoom_in_distance

+
    +
  • Type: number
  • +
  • Default: 1.5
  • +
  • optional
  • +
+

The extent to be zoomed in when the zoom in button is clicked, this doesn't apply when zooming in with the mouse or touch event.

+

zoom_out_distance

+
    +
  • Type: number
  • +
  • Default: 0.5
  • +
  • optional
  • +
+

The extent to be zoomed out when the zoom out button is clicked, just like the zoom_in_distance this option also doesn't apply to when zooming out with the mouse and touch event.

+

verticalSpace

+
    +
  • Type: string
  • +
  • Default: 120px
  • +
  • optional
  • +
+

The vertical space between heads, set this to a lower or higher number to decrease or increase the distance between parent and children heads.

+ +
    +
  • Type: string
  • +
  • Default: https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap
  • +
  • optional
  • +
+

The link of the google font you would like TreeSpider to use, this can also be a path to a font available locally, but font CDN is highly recommended, and currently it is not guaranteed that other font CDNs except Google Fonts CDN are going to work well, but they can still be tried out.

+

font_name

+
    +
  • Type: string
  • +
  • Default: Lato
  • +
  • optional
  • +
+

If you provide a custom font to the font_link option set this option to the name of the custom font that was provided to the font_link option, you can also set this option to the name of the font that has already been loaded in the application.

+

Interfaces

+

The following are the TreeSpider typeScript interfaces.

+

ITreeSpiderMain

+

This is the TreeSpider option typescript interface

+
{
targetContainer: string;
placeEl?: 'override' | 'start' | 'end' | {beforeEl: string};
autoInitialize?: boolean;
tree_data?: Array<IChartHead>;
color_range?: string[];
tree_type?: 'default' | 'cellar' | 'goldenRod' | 'hSpider' | 'hSpiderWalk' | 'radialSpiderLeg' | 'vSpiderWalk';
chart_head_type?: TChartHeadType;
show_tools?: boolean;
show_chart_head_border?: boolean;
animation_rotation_speed?: number;
animation_rotation_interval?: number;
backgroundPattern?: 'none' | 'default' | 'flux' | 'quad' | 'blurry' | 'chaos' |
'flurry' | 'spiral' | 'whirling' | 'replicate' | 'scribble' | 'squiggly' |
'gyrrate' | 'leaves' | 'spot';
backgroundPosition?: 'bottom' | 'center' | 'inherit' | 'initial' | 'left' |
'right' | 'top' | 'unset' | `${number}%` | `${number}px`;
backgroundSize?: string;
customBackground?: string;
head_linker_thumb_circle_radius?: number;
linker_thumb_icon_color?: TLinkerCircleColor;
linker_thumb_shape?: TLinkerShape;
head_image_shape?: THeadImageShape;
chart_head_bg?: string;
auto_set_chart_head_bg?: boolean;
display_tree_in_step?: boolean;
auto_display_tree_in_step?: boolean;
tree_level_step?: number;
pallet?: TColorPallet;
tree_link_type?: TLinkType;
random_data_length?: number;
zoom_in_distance?: number;
zoom_out_distance?: number;
verticalSpace?: string;
font_link?: string;
font_name?: string;
width?: string;
height?: string;
}
+

IChartHead

+

The tree data typescript interface

+
{
id: string;
name: string;
role: string;
location?: string;
parentId?: string;
stat?: number;
image?: string;
}
+

ID3DataFormat

+

This is the d3 data format, it is just the same as the IChartHead interface except that it has the children property that is an array of IChartHead.

+
ID3DataFormat extends IChartHead {
children: IChartHead[];
}
+

Types

+

The following are the TreeSpider typeScript types

+

TColorPallet

+

This is the color pallet typescript type

+
{
h: number;
s: number;
l: number;
darker: number;
brighter: number;
bright100: number;
dark100: number;
gray: number;
gray85: number;
}
+

TTreeType

+

This is the type of the TreeSpider tree types

+
'default' | 'cellar' | 'goldenRod' | 'hSpider' | 'hSpiderWalk' | 'radialSpiderLeg' | 'spiderlingsPack' | 'vSpiderWalk'
+

TChartHeadType

+

The type of the chart head types

+
'default' | 'landscape' | 'rounded'
+

TLinkType

+

The type of the link types

+
'curveBumpX' | 'curveBumpY' | 'curveBasisClosed' | 'curveLinear' | 'curveStep' | 'curveStepAfter' | 'curveStepBefore'
+

THeadImageShape

+

The type of the head image shapes

+
'symbolCircle' | 'symbolCross' | 'symbolDiamond' | 'symbolDiamond2' | 'symbolSquare' | 'symbolSquare2' | 'symbolStar' | 'symbolTriangle' | 'symbolTriangle2' | 'symbolWye'
+

TLinkerCircleColor

+

The type of the linker color

+
'brighter' | 'bright500' | 'bright100'
+

TLinkerShape

+

The type of the linker thumb shape

+
'symbolAsterisk' | 'symbolCircle' | 'symbolCross' | 'symbolDiamond' | 'symbolDiamond2' | 'symbolPlus' | 'symbolSquare' | 'symbolSquare2' | 'symbolStar' | 'symbolTriangle' | 'symbolTriangle2' | 'symbolWye' | 'symbolX'
+

TEventType

+

The type for the list of available events.

+
'chart_head.create' | 'chart_head.expanded' | 'chart_head.collapsed' | 'zooming' | 'library.init'
+ + \ No newline at end of file diff --git a/docs/tree-data/index.html b/docs/tree-data/index.html new file mode 100644 index 0000000..5a78c1b --- /dev/null +++ b/docs/tree-data/index.html @@ -0,0 +1,63 @@ + + + + + +Tree Data | TreeSpider + + + + + +

Tree Data

+

The TreeSpider tree data is straight forward, each employee has the required id and parentId properties, the parentId is for specifying the employee that an employee reports to, and the root employee or the overall head of the organization should not have the parentId property.

+

Simple representation

+

In simple diagram, the data is like so

+
CEO -> Chief of Engineering -> Lead Engineer -> Senior Engineer -> Junior Engineers
+

In the simple diagram the Junior Engineers report to the Senior Engineer who reports to the Lead Engineer who then also reports to the Chief of Engineering who then finally reports to the CEO, the CEO doesn't reports to anyone except if there is a board then in that case the root of the structure is going to be the organization's name then the board of directors then the CEO, but in the case of the simple diagram the CEO is the root of the structure, so in the object representation, all the employees except the CEO will have a parentId property pointing to the id of the employee they report to, for example the next section is the object representation of the above simple example diagram.

+

Simple Data Example

+
[
{
id: "1",
role: "CEO"
},
{
id: "2",
role: "Chief of Engineering",
parentId: "1"
},
{
id: "3",
role: "Lead Engineer",
parentId: "2"
},
{
id: "4",
role: "Senior Engineer",
parentId: "3"
},
{
id: "5",
role: "Junior Engineer no. 1",
parentId: "4"
},
{
id: "6",
role: "Junior Engineer no. 2",
parentId: "4"
},
{
id: "7",
role: "Junior Engineer no. 3",
parentId: "4"
},

]
+

In the above data, notice the CEO doesn't have a parentId and the rest of the employees each have the parentId which points to the id of the employee they report to, and also notice that all the junior engineers have a parentId set to the id of the Senior Engineer which they report to, this is a valid data that can be passed to TreeSpider, then TreeSpider will do the hard work of sorting, organizing and displaying the data with your choice of selected tree type.

+

Now passing the data, still using the example data above but adding name property to each employee

+
// ...

const employee_data = [
{
id: "1",
role: "CEO",
name: "Lorem John"
},
{
id: "2",
role: "Chief of Engineering",
parentId: "1",
name: "Doe Ipsum"
},
{
id: "3",
role: "Lead Engineer",
parentId: "2",
name: "Walter Rock"
},
{
id: "4",
role: "Senior Engineer",
parentId: "3",
name: "Nick Rand"
},
{
id: "5",
role: "Junior Engineer no. 1",
parentId: "4",
name: "Bob Teest"
},
{
id: "6",
role: "Junior Engineer no. 2",
parentId: "4",
name: "Robb Derth"
},
{
id: "7",
role: "Junior Engineer no. 3",
parentId: "4",
name: "Pete Perth"
},

]

const instance1 = new TreeSpider({
targetContainer: "#container-1",
tree_data: employee_data
})

+

The above data will be rendered like the working example below, zoom in and out and pan to interact

+ +
+

Data definition

+

More about the data and other properties that can be provided to the employee data, the data structure is as below:

+
{
id: string;
parentId: string;
name: string;
role?: string;
location?: string;
image?: string;
}
+

Technically, only the id is required, but the parentId and name are also required for the data to make sense, explanation of each property below.

+

id

+
    +
  • required
  • +
+

The id property is required and it is a string that indicates the index of the data, if the id of an object in the data array is missing, it can cause recursion issue and which will affect the rendering operation of the data, the id is not compulsory to be ordered according to employee hierarchy, in fact the root of the organization can be ordered last in the array, it doesn't affect the data rendering.

+

parentId

+
    +
  • required
  • +
+

The parentId is required to be added to each employee except the root/head of the organization, it points to the department head to which the employee reports, and it is required that only one object/data should not have a parentId to indicate it as the root/head of the organization, if more than one data has a missing parentId it can give cause irregularities in the rendering or even an error.

+

name

+
    +
  • required
  • +
+

The name is also on the same level of requirement as the parentId except it indicate an employee instead of pointing to the lead which the employee reports too, as not everyone has first and last name, so at least a name must be provided either first or last, and if more than 2 names was provided in the name it would assume the first name comes first and the last name comes last and it will create the initials from them and also only display the first and last name, and in the case of only one name it will only render the only name passed and render the initial of the passed name.

+

role

+
    +
  • Optional
  • +
+

This is not required but neccessary to indicate the role, position, department or job title of the employee, set this role to the department name if the employee is a lead of their department.

+

location

+
    +
  • Optional
  • +
+

This is also not required but necessary to show the location of the employee, that is, the city and country of the employee.

+

image

+
    +
  • Optional
  • +
+

The picture of the employee, the link/url to the employee's picture, if an employee doesn't have a picture leave the image field in the employee's data as undefined, TreeSpider in that case will automatically use the employee's initials instead.

+

The data to be provided to TreeSpider is going to be an array of the object described above, for example

+
[
{ // taking this as the root, note this object is missing the parentId property
id: string;
name: string;
role: string;
location: string;
image: string;
},
{
id: string;
parentId: string;
name: string;
role: string;
location: string;
image: string;
},
{
id: string;
parentId: string;
name: string;
role: string;
location: string;
image: string;
}
]
+ + \ No newline at end of file diff --git a/docs/trees/index.html b/docs/trees/index.html new file mode 100644 index 0000000..2ffa0d6 --- /dev/null +++ b/docs/trees/index.html @@ -0,0 +1,56 @@ + + + + + +Trees | TreeSpider + + + + + +

Trees

+

These are the different tree choices that can be chosen from, they will be caterized into radial and non-radial trees:

+

Radial trees

+

The following are the radial or circular trees

+

goldenRod

+

The goldenRod tree type is one of the radial tree types, example

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
tree_type: "goldenRod"
})
+

if you run this it would look something like this:

+ +
+

radialSpiderLeg

+

The radialSpiderLeg tree type is the second radial type tree types, example

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
tree_type: "radialSpiderLeg"
})
+

if you run this it would look something like this:

+ +
+

Non-radial trees

+

The following are the non-radial trees types.

+

default

+

This is the default tree type, and it is also useful in but not limited to organizations with hierarchical type structure, example

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
tree_type: "default"
})
+ +
+

cellar

+

The cellar tree structure is also useful in but not limited to organizations with hierarchical type structure, example

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
tree_type: "cellar"
})
+ +
+

hSpider

+

The hSpider tree is an horizontal tree, example

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
tree_type: "hSpider"
})
+ +
+

hSpiderWalk

+

The hSpiderWalk tree is an horizontal tree just like the hSpider but it is in the shape of the letter "H", example

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
tree_type: "hSpiderWalk"
})
+ +
+

vSpiderWalk

+

The vSpiderWalk tree is a verticaal tree just like the hSpiderWalk but it is vertical, example

+
const instance1 = new TreeSpider({
targetContainer: "#container-1",
tree_type: "vSpiderWalk"
})
+ +
+ + \ No newline at end of file diff --git a/img/docusaurus-social-card.jpg b/img/docusaurus-social-card.jpg new file mode 100644 index 0000000..ffcb448 Binary files /dev/null and b/img/docusaurus-social-card.jpg differ diff --git a/img/docusaurus.png b/img/docusaurus.png new file mode 100644 index 0000000..f458149 Binary files /dev/null and b/img/docusaurus.png differ diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 0000000..ac08e2f Binary files /dev/null and b/img/favicon.ico differ diff --git a/img/favicon1.ico b/img/favicon1.ico new file mode 100644 index 0000000..c01d54b Binary files /dev/null and b/img/favicon1.ico differ diff --git a/img/logo.svg b/img/logo.svg new file mode 100644 index 0000000..9db6d0d --- /dev/null +++ b/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/treespider-logo.png b/img/treespider-logo.png new file mode 100644 index 0000000..5bc1e6f Binary files /dev/null and b/img/treespider-logo.png differ diff --git a/img/treespider-social-card.png b/img/treespider-social-card.png new file mode 100644 index 0000000..29df06e Binary files /dev/null and b/img/treespider-social-card.png differ diff --git a/img/undraw_docusaurus_mountain.svg b/img/undraw_docusaurus_mountain.svg new file mode 100644 index 0000000..af961c4 --- /dev/null +++ b/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_react.svg b/img/undraw_docusaurus_react.svg new file mode 100644 index 0000000..94b5cf0 --- /dev/null +++ b/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_tree.svg b/img/undraw_docusaurus_tree.svg new file mode 100644 index 0000000..d9161d3 --- /dev/null +++ b/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..50c6fbe --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + +TreeSpider | TreeSpider + + + + + +

TreeSpider

JavaScript library for displaying organization structures in style

Choose the tree that fits your organization
Default Tree
hSpiderWalk Tree with landscape chart heads with gyrrate background pattern
cellar Tree with rounded chart heads with blurry background pattern
And more
+ + \ No newline at end of file diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 42b3ed4..0000000 --- a/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - testEnvironment: 'jsdom', - moduleFileExtensions: ['mjs', 'cjs', 'js', 'ts', 'jsx', 'tsx', 'json'], - transform: { - '^.+\\.(mjs|js|ts|jsx|tsx)$': 'babel-jest', - }, -}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index c63fbae..0000000 --- a/package-lock.json +++ /dev/null @@ -1,7518 +0,0 @@ -{ - "name": "treespider", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "treespider", - "version": "0.0.1", - "devDependencies": { - "@babel/core": "^7.24.5", - "@babel/preset-env": "^7.25.9", - "@babel/preset-typescript": "^7.25.9", - "@faker-js/faker": "^9.0.3", - "@jest/globals": "^29.7.0", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.3.0", - "@rollup/plugin-terser": "^0.4.4", - "@types/d3": "^7.4.3", - "@types/jest": "^29.5.14", - "babel-jest": "^29.7.0", - "d3": "^7.9.0", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "jest-resolve": "^29.7.0", - "jsdom": "^25.0.1", - "rollup": "^4.24.0", - "rollup-plugin-typescript2": "^0.36.0", - "ts-loader": "^9.5.1", - "typescript": "^5.6.3" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", - "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz", - "integrity": "sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz", - "integrity": "sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.26.0", - "@babel/types": "^7.26.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", - "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", - "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", - "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", - "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", - "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", - "dev": true, - "dependencies": { - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.26.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz", - "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.26.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", - "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", - "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", - "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", - "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", - "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", - "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", - "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", - "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", - "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", - "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", - "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", - "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", - "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", - "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", - "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", - "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", - "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", - "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", - "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", - "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", - "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", - "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", - "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", - "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", - "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", - "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", - "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", - "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", - "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", - "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", - "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", - "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", - "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", - "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", - "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", - "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", - "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", - "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", - "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", - "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", - "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", - "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", - "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz", - "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-syntax-typescript": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", - "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", - "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", - "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", - "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.25.9", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", - "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-typescript": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@faker-js/faker": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-9.0.3.tgz", - "integrity": "sha512-lWrrK4QNlFSU+13PL9jMbMKLJYXDFu3tQfayBsMXX7KL/GiQeqfB1CzHkqD5UHBUtPAuPo6XwGbMFNdVMZObRA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/fakerjs" - } - ], - "engines": { - "node": ">=18.0.0", - "npm": ">=9.0.0" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@jest/reporters/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@rollup/plugin-json": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", - "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.1.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz", - "integrity": "sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-terser": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", - "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", - "dev": true, - "dependencies": { - "serialize-javascript": "^6.0.1", - "smob": "^1.0.0", - "terser": "^5.17.4" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", - "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", - "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", - "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", - "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", - "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", - "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", - "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", - "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", - "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", - "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", - "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", - "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", - "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", - "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", - "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", - "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", - "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/d3": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", - "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", - "dev": true, - "dependencies": { - "@types/d3-array": "*", - "@types/d3-axis": "*", - "@types/d3-brush": "*", - "@types/d3-chord": "*", - "@types/d3-color": "*", - "@types/d3-contour": "*", - "@types/d3-delaunay": "*", - "@types/d3-dispatch": "*", - "@types/d3-drag": "*", - "@types/d3-dsv": "*", - "@types/d3-ease": "*", - "@types/d3-fetch": "*", - "@types/d3-force": "*", - "@types/d3-format": "*", - "@types/d3-geo": "*", - "@types/d3-hierarchy": "*", - "@types/d3-interpolate": "*", - "@types/d3-path": "*", - "@types/d3-polygon": "*", - "@types/d3-quadtree": "*", - "@types/d3-random": "*", - "@types/d3-scale": "*", - "@types/d3-scale-chromatic": "*", - "@types/d3-selection": "*", - "@types/d3-shape": "*", - "@types/d3-time": "*", - "@types/d3-time-format": "*", - "@types/d3-timer": "*", - "@types/d3-transition": "*", - "@types/d3-zoom": "*" - } - }, - "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", - "dev": true - }, - "node_modules/@types/d3-axis": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", - "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-brush": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", - "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-chord": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", - "dev": true - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "dev": true - }, - "node_modules/@types/d3-contour": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", - "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", - "dev": true, - "dependencies": { - "@types/d3-array": "*", - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", - "dev": true - }, - "node_modules/@types/d3-dispatch": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", - "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", - "dev": true - }, - "node_modules/@types/d3-drag": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", - "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-dsv": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", - "dev": true - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "dev": true - }, - "node_modules/@types/d3-fetch": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", - "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", - "dev": true, - "dependencies": { - "@types/d3-dsv": "*" - } - }, - "node_modules/@types/d3-force": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", - "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", - "dev": true - }, - "node_modules/@types/d3-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", - "dev": true - }, - "node_modules/@types/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "dev": true, - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-hierarchy": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", - "dev": true - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "dev": true, - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", - "dev": true - }, - "node_modules/@types/d3-polygon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", - "dev": true - }, - "node_modules/@types/d3-quadtree": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", - "dev": true - }, - "node_modules/@types/d3-random": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", - "dev": true - }, - "node_modules/@types/d3-scale": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", - "dev": true, - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", - "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", - "dev": true - }, - "node_modules/@types/d3-selection": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", - "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", - "dev": true - }, - "node_modules/@types/d3-shape": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", - "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", - "dev": true, - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", - "dev": true - }, - "node_modules/@types/d3-time-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", - "dev": true - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "dev": true - }, - "node_modules/@types/d3-transition": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", - "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", - "dev": true, - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-zoom": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", - "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", - "dev": true, - "dependencies": { - "@types/d3-interpolate": "*", - "@types/d3-selection": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true - }, - "node_modules/@types/geojson": { - "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", - "dev": true - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "peer": true - }, - "node_modules/@types/node": { - "version": "22.8.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", - "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", - "dev": true, - "dependencies": { - "undici-types": "~6.19.8" - } - }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "peer": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true - }, - "node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001671", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001671.tgz", - "integrity": "sha512-jocyVaSSfXg2faluE6hrWkMgDOiULBMca4QLtDT39hw1YxaIPHWc1CcTCKkPmHgGH6tKji6ZNbMSmUAvENf2/A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", - "dev": true - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", - "dev": true, - "dependencies": { - "browserslist": "^4.23.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", - "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", - "dev": true, - "dependencies": { - "rrweb-cssom": "^0.7.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/d3": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", - "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", - "dev": true, - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "dev": true, - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "dev": true, - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "dev": true, - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "dev": true, - "dependencies": { - "d3-array": "^3.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "dev": true, - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "dev": true, - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dev": true, - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "dev": true, - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dev": true, - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "dev": true, - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dev": true, - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "dev": true, - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "dev": true, - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "dev": true, - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dev": true, - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dev": true, - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "dev": true, - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dev": true, - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", - "dev": true, - "dependencies": { - "robust-predicates": "^3.0.2" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.47", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.47.tgz", - "integrity": "sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true, - "peer": true - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "peer": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "peer": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "peer": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-jsdom/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/jest-environment-jsdom/node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-jsdom/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-jsdom/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-environment-jsdom/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "25.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", - "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", - "dev": true, - "dependencies": { - "cssstyle": "^4.1.0", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.12", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^2.11.2" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "peer": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "peer": true - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nwsapi": { - "version": "2.2.13", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", - "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.0.tgz", - "integrity": "sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==", - "dev": true, - "dependencies": { - "entities": "^4.5.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", - "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz", - "integrity": "sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==", - "dev": true, - "dependencies": { - "jsesc": "~3.0.2" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", - "dev": true - }, - "node_modules/rollup": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", - "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.0", - "@rollup/rollup-android-arm64": "4.24.0", - "@rollup/rollup-darwin-arm64": "4.24.0", - "@rollup/rollup-darwin-x64": "4.24.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", - "@rollup/rollup-linux-arm-musleabihf": "4.24.0", - "@rollup/rollup-linux-arm64-gnu": "4.24.0", - "@rollup/rollup-linux-arm64-musl": "4.24.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", - "@rollup/rollup-linux-riscv64-gnu": "4.24.0", - "@rollup/rollup-linux-s390x-gnu": "4.24.0", - "@rollup/rollup-linux-x64-gnu": "4.24.0", - "@rollup/rollup-linux-x64-musl": "4.24.0", - "@rollup/rollup-win32-arm64-msvc": "4.24.0", - "@rollup/rollup-win32-ia32-msvc": "4.24.0", - "@rollup/rollup-win32-x64-msvc": "4.24.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-typescript2": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.36.0.tgz", - "integrity": "sha512-NB2CSQDxSe9+Oe2ahZbf+B4bh7pHwjV5L+RSYpCu7Q5ROuN94F9b6ioWwKfz3ueL3KTtmX4o2MUH2cgHDIEUsw==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^4.1.2", - "find-cache-dir": "^3.3.2", - "fs-extra": "^10.0.0", - "semver": "^7.5.4", - "tslib": "^2.6.2" - }, - "peerDependencies": { - "rollup": ">=1.26.3", - "typescript": ">=2.4.0" - } - }, - "node_modules/rollup-plugin-typescript2/node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "dev": true, - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/rollup-plugin-typescript2/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/rollup-plugin-typescript2/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/rrweb-cssom": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "dev": true - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", - "dev": true - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smob": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", - "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/terser/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tldts": { - "version": "6.1.55", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.55.tgz", - "integrity": "sha512-HxQR/9roQ07Pwc8RyyrJMAxRz5/ssoF3qIPPUiIo3zUt6yMdmYZjM2OZIFMiZ3jHyz9jrGHEHuQZrUhoc1LkDw==", - "dev": true, - "dependencies": { - "tldts-core": "^6.1.55" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.55", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.55.tgz", - "integrity": "sha512-BL+BuKHHaOpntE5BGI6naXjULU6aRlgaYdfDHR3T/hdbNTWkWUZ9yuc11wGnwgpvRwlyUiIK+QohYK3olaVU6Q==", - "dev": true - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", - "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", - "dev": true, - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", - "dev": true, - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/ts-loader": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", - "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-loader/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tslib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", - "dev": true - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "peer": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", - "dev": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-url": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", - "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", - "dev": true, - "dependencies": { - "tr46": "^5.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 9ee2724..0000000 --- a/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "treespider", - "version": "0.0.2", - "description": "An organization structure chart library for displaying organization structure in style", - "main": "./dist/es/treeSpider.bundle.min.js", - "author": "Abayomi Amusa", - "types": "./dist/types/core/treeSpider.d.ts", - "scripts": { - "test": "NODE_OPTIONS=--experimental-vm-modules npx jest", - "rollup": "rollup -c", - "rollup-watch": "rollup -w", - "sass": "sass scss/treeSpider.scss:dist/css/treeSpider.css -w", - "sass-c": "sass scss/treeSpider.scss:dist/css/treeSpider.css", - "tsw": "tsc -w", - "build-ts": "rm -rf ./dist/types; tsc" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/paulosabayomi/treeSpider.git" - }, - "bugs": { - "url": "https://github.com/paulosabayomi/treeSpider/issues" - }, - "homepage": "https://github.com/paulosabayomi/treeSpider", - "files": [ - "dist" - ], - "keywords": [ - "treeSpider", - "tree chart", - "organization structure", - "organization structure library", - "organization structure chart", - "organization hierarchy", - "organization hierarchy library", - "organization hierarchy chart", - "company structure", - "company structure chart", - "company hierarchy", - "company hierarchy library", - "company hierarchy chart", - "organization tree", - "organization chart" - ], - "devDependencies": { - "@babel/core": "^7.24.5", - "@babel/preset-env": "^7.25.9", - "@babel/preset-typescript": "^7.25.9", - "@faker-js/faker": "^9.0.3", - "@jest/globals": "^29.7.0", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.3.0", - "@rollup/plugin-terser": "^0.4.4", - "@types/d3": "^7.4.3", - "@types/jest": "^29.5.14", - "babel-jest": "^29.7.0", - "d3": "^7.9.0", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "jest-resolve": "^29.7.0", - "jsdom": "^25.0.1", - "rollup": "^4.24.0", - "rollup-plugin-typescript2": "^0.36.0", - "ts-loader": "^9.5.1", - "typescript": "^5.6.3" - } -} diff --git a/res/treeSpider.png b/res/treeSpider.png deleted file mode 100644 index 8e82fa1..0000000 Binary files a/res/treeSpider.png and /dev/null differ diff --git a/rollup.config.mjs b/rollup.config.mjs deleted file mode 100644 index d6a8512..0000000 --- a/rollup.config.mjs +++ /dev/null @@ -1,44 +0,0 @@ -import json from '@rollup/plugin-json'; -import terser from '@rollup/plugin-terser'; -import typescript from 'rollup-plugin-typescript2'; -import resolve from '@rollup/plugin-node-resolve'; - -export default [ - { - input: './src/core/treeSpider.ts', - output: [ - { - name: 'version', - file: './dist/es/treeSpider.bundle.js', - format: 'es', - }, - { - file: './dist/es/treeSpider.bundle.min.js', - format: 'es', - name: 'version', - plugins: [terser()] - }, - { - file: './dist/browser/treeSpider.bundle.js', - format: 'iife', - name: 'TreeSpider' - }, - { - file: './dist/browser/treeSpider.bundle.min.js', - format: 'iife', - name: 'TreeSpider', - plugins: [terser()] - }, - ], - plugins: [ - json(), - resolve(), - typescript({ - tsconfig: 'tsconfig.rollup.json', - }), - ], - treeshake: { - moduleSideEffects: false - } - } -]; \ No newline at end of file diff --git a/scss/treeSpider.scss b/scss/treeSpider.scss deleted file mode 100644 index 3d44bd6..0000000 --- a/scss/treeSpider.scss +++ /dev/null @@ -1,361 +0,0 @@ -:root { - --ts-root-el-bg-image: url(''); - --ts-root-container-cursor: default; - --zoom-level: 1; - --move-x: 0px; - --move-y: 0px; - --head-shadow-color: ''; - --vertical-space-var: 80px; - --font-family: 'Lato'; - --root-cont-width: 900px; - --root-cont-height: 500px; -} - -$root-gray: rgb(95, 95, 95); // useless -$root-light-gray: rgb(187, 186, 186); // useless -$circle-fill: rgb(170, 170, 170); // useless -$line-gray: #545454; // useless -$vertical-space: var(--vertical-space-var); - -.ts-root-wrapper-element * { - -webkit-user-select: none; /* Safari */ - -khtml-user-select: none; /* Konqueror */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* Internet Explorer/Edge */ - user-select: none; -} - -.ts-root-wrapper-element { - width: var(--root-cont-width); - height: var(--root-cont-height); - display: flex; - background-image: var(--ts-root-el-bg-image); - position: relative; - overflow: hidden; - cursor: var(--ts-root-container-cursor); -} - -.ts-root-wrapper-element .root-el { - transition: all 1s ease-in; -} - -.ts-root-wrapper-element * { - font-family: var(--font-family); -} - -.ts-root-wrapper-element .ts-inner-container { - width: auto; - transform-origin: 0% 0%; -} - -//==================================================================== -//================= Chart tools =================== -//==================================================================== - -.ts-root-wrapper-element .tools-container { - width: auto; - height: auto; - border-radius: 12px; - display: flex; - overflow: hidden; - position: absolute; - top: 10px; - left: 10px; - z-index: +10; - - /* From https://css.glass */ - background: rgba(255, 255, 255, 0.6); - box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1); - backdrop-filter: blur(5px); - -webkit-backdrop-filter: blur(5px); - border: 1px solid rgba(255, 255, 255, 0.3); -} - -.ts-root-wrapper-element .tools-container .tool-item { - width: auto; - height: 30px; - padding: 0px 10px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; -} - -.ts-root-wrapper-element .tools-container .tool-item:hover { - background-color: rgb(194, 194, 194); -} - -.ts-root-wrapper-element .tools-container .tool-item svg { - width: 16px !important; - height: 16px !important; -} - -.main-svg-el { - background-color: white; - overflow: visible; - border-radius: 16px; - margin: 0px !important; - transition: background-color .3s linear; - - box-shadow: -1px 2px 14px 3px rgba(91, 91, 91, 0.19); - -webkit-box-shadow: -1px 2px 14px 3px rgba(91,91,91,0.19); - -moz-box-shadow: -1px 2px 14px 3px rgba(91,91,91,0.19); -} - -.main-svg-el.rounded-head { - background-color: transparent !important; - box-shadow: none !important; -} - -.inset-shadow { - box-shadow: -1px 2px 14px 6px rgba(91, 91, 91, 0.19) inset !important; - -webkit-box-shadow: -1px 2px 14px 6px rgba(91, 91, 91, 0.19) inset !important; - -moz-box-shadow: -1px 2px 14px 6px rgba(91, 91, 91, 0.19) inset !important; -} - -.main-svg-el .linker-line { - // stroke: $line-gray; - pointer-events: none; -} - -.ts-head-wrapper { - padding: 10px; - display: flex; - flex-wrap: wrap; -} - -.ts-head-wrapper svg { - margin: 0px 25px; -} - -.child-container { - margin-top: $vertical-space; - width: 100%; - flex-wrap: nowrap !important; -} - -.ts-head-wrapper .ts-head-node-wrapper { - display: flex; - flex-wrap: wrap; - justify-content: center; - align-items: flex-start; - align-content: flex-start; - margin: 10px; -} - - -//==================================================================== -//================= ts Vertical Tree Styles =================== -//==================================================================== - -.ts-v-spider-head-wrapper { - padding: 10px; - display: flex !important; - flex-wrap: wrap; - flex-direction: column !important; -} - -.ts-v-spider-head-wrapper > div { - display: flex; - flex-wrap: nowrap; - justify-content: center; - flex-wrap: nowrap; - flex-direction: row; - align-items: flex-start; - flex-shrink: 0; -} - -.ts-v-spider-head-wrapper > div:first-child { - align-items: flex-end !important; -} - -.ts-v-spider-head-wrapper > div:nth-child(2) { - align-items: center !important; - padding-top: calc($vertical-space); -} - -.ts-v-spider-head-wrapper > div:nth-child(2) > div { - margin-bottom: $vertical-space/2 !important; -} - -.ts-v-spider-head-wrapper .child-container { - margin-top: $vertical-space; - width: 100%; - flex-wrap: nowrap !important; - display: flex; - justify-content: center; - align-items: flex-start; -} - -.ts-v-spider-head-wrapper .child-container.top { - margin-top: 0px !important; - margin-bottom: $vertical-space !important; - align-items: flex-end !important; -} - -.ts-v-spider-head-wrapper .ts-head-node-wrapper { - display: flex; - flex-wrap: wrap; - justify-content: center; - align-items: flex-start; - margin: 0px 20px !important; -} - -//==================================================================== -//================= horizontal spider chart =================== -//==================================================================== - -.st-single-h { - display: flex !important; - flex-direction: row !important; - align-items: center; - flex-wrap: nowrap !important; - padding: 0px !important; - margin: 0px !important; -} - -.st-single-h > div > svg { - padding: 0px !important; - margin: 0px !important; -} - -.st-single-h-child-container { - margin: 0px 0px 0px $vertical-space !important; - display: flex !important; - flex-direction: column !important; - flex-shrink: 0; - align-items: flex-start !important; - justify-content: center; -} - -.st-single-h > div { - height: 100% !important; - display: flex; - flex-direction: column; - justify-content: center; -} - -.st-single-h-child-container .st-single-h { - margin-bottom: 15px !important; -} - -//==================================================================== -//=================== horizontal spider walk tree ==================== -//==================================================================== - -.st-hsw-content-wrapper { - display: flex; - -} - -.st-hsw-content-wrapper .st-child-wrapper { - display: flex; - flex-direction: column; - justify-content: center; -} - -.st-hsw-content-wrapper .st-child-wrapper:nth-child(2) { - justify-content: center; - align-items: center; -} - -.st-hsw-content-wrapper .st-child-wrapper:nth-child(2) .ts-head-node-wrapper { - justify-content: center !important; - margin: 0px !important; - padding: 0px $vertical-space 0px $vertical-space !important; -} - -.st-hsw-content-wrapper .st-child-wrapper:nth-child(2) .child-container { - margin: 0px !important; -} - -.st-hsw-content-wrapper .ts-head-node-wrapper { - margin-bottom: 15px; - display: flex; - flex-direction: row; - align-items: center; -} - -.st-hsw-content-wrapper .ts-head-node-wrapper.top { - justify-content: flex-end !important; -} - -.st-hsw-content-wrapper .ts-head-node-wrapper .child-container { - margin-top: 0px !important; - margin-left: $vertical-space; -} - -.st-hsw-content-wrapper .ts-head-node-wrapper .child-container.top { - margin-right: $vertical-space; -} - -//==================================================================== -//===================== cellar spider walk tree ====================== -//==================================================================== - -.st-cs-content-wrapper { - display: grid; - grid-template-columns: minmax(200px, 1fr) minmax(200px, 1fr); - grid-row: 1fr 60px; - grid-template-areas: "leftContainer rightContainer" "centerContainer centerContainer"; - min-height: 200px; -} - -.st-cs-content-wrapper .st-child-wrapper { - display: flex; - flex-direction: column; - width: auto; - justify-content: flex-end; -} - -.st-cs-content-wrapper .ts-head-node-wrapper { - display: flex; - flex-direction: row !important; - margin-right: $vertical-space; - align-items: flex-end; - justify-content: flex-end; - margin-bottom: 15px; -} - -.st-cs-content-wrapper .st-child-wrapper .child-container { - margin: 0px $vertical-space $vertical-space 0px !important; -} - -.st-cs-content-wrapper .st-child-wrapper:nth-child(2) .child-container { - margin: 0px 0px $vertical-space $vertical-space !important; -} - -.st-cs-content-wrapper .st-child-wrapper:first-child { - grid-area: leftContainer; -} - -.st-cs-content-wrapper .st-child-wrapper:nth-child(2) { - grid-area: rightContainer; -} - -.st-cs-content-wrapper .st-child-wrapper:nth-child(2) .ts-head-node-wrapper { - justify-content: flex-start !important; - margin-right: 0px !important; - margin-left: $vertical-space !important; -} - -.st-cs-content-wrapper .st-child-wrapper:last-child { - grid-area: centerContainer; - align-items: center; - justify-content: center; - padding-top: $vertical-space; -} - -.st-cs-content-wrapper .st-child-wrapper:last-child .ts-head-node-wrapper { - margin: 0px !important; -} - -.st-cs-content-wrapper .st-child-wrapper:last-child .child-container { - margin: 0px !important; -} - - -//==================================================================== -//======================== Golden Rod Spider ========================= -//==================================================================== -// No Styles for golden rod spider tree yet \ No newline at end of file diff --git a/server.bundle.js b/server.bundle.js new file mode 100644 index 0000000..65cf4b1 --- /dev/null +++ b/server.bundle.js @@ -0,0 +1,21747 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 6377: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ TestTSpyder1: () => (/* binding */ TestTSpyder1), +/* harmony export */ TestTSpyder2: () => (/* binding */ TestTSpyder2), +/* harmony export */ TestTSpyder3: () => (/* binding */ TestTSpyder3), +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8453); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6540); +/* harmony import */ var treespider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8777); + + +const frontMatter = { + title: 'TreeSpider Examples' +}; +const contentTitle = 'TreeSpider Examples'; +const metadata = { + "type": "mdx", + "permalink": "/examples", + "source": "@site/src/pages/examples.mdx", + "title": "TreeSpider Examples", + "description": "Basic Example", + "frontMatter": { + "title": "TreeSpider Examples" + }, + "unlisted": false +}; +const assets = { + +}; + + + + + +const TestTSpyder1 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#test-cont-ex-1", + width: "100%" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "test-cont-ex-1", + style: { + marginBottom: 20 + } + }); +}); +const TestTSpyder2 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#test-cont-ex-2", + width: "100%", + customBackground: `` + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "test-cont-ex-2", + style: { + marginBottom: 20 + } + }); +}); +const TestTSpyder3 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#test-cont-ex-3", + width: "100%", + customBackground: ``, + backgroundSize: "20px" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "test-cont-ex-3", + style: { + marginBottom: 20 + } + }); +}); +const toc = [{ + "value": "Basic Example", + "id": "basic-example", + "level": 2 +}, { + "value": "Using TreeSpider in a project with no bundler", + "id": "using-treespider-in-a-project-with-no-bundler", + "level": 3 +}, { + "value": "ES6 import", + "id": "es6-import", + "level": 4 +}, { + "value": "Browser - Script tag", + "id": "browser---script-tag", + "level": 4 +}, { + "value": "Project with a bundler", + "id": "project-with-a-bundler", + "level": 3 +}, { + "value": "Using Custom background pattern", + "id": "using-custom-background-pattern", + "level": 2 +}]; +function _createMdxContent(props) { + const _components = { + code: "code", + h1: "h1", + h2: "h2", + h3: "h3", + h4: "h4", + header: "header", + p: "p", + pre: "pre", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "treespider-examples", + children: "TreeSpider Examples" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "basic-example", + children: "Basic Example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "After installing TreeSpdier, if the project doesn't have a bundler, copy TreeSpider from the node_modules to the root of your project directory, then TreeSpider can be used in 2 ways, through ES6 import or through the browser script tag, first ES6 import." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "using-treespider-in-a-project-with-no-bundler", + children: "Using TreeSpider in a project with no bundler" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h4, { + id: "es6-import", + children: "ES6 import" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The ES6 bundles are in the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "dist/es" + }), " directory, and the minified bundle will be used, example"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "import TreeSpider from \"./treespider/dist/es/treeSpider.bundle.min.js\"\n\nconst instance1 = new TreeSpider({\n targetContainer: \"#container-1\"\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Then you will see something like this in the browser" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TestTSpyder1, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h4, { + id: "browser---script-tag", + children: "Browser - Script tag" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The browser bundles are in the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "dist/browser" + }), " directory, the browser bundles allow TreeSpider to be loaded through the script tag, example:"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-html", + children: "
\n\n\n\n\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Then you will see it display like the working example above" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "project-with-a-bundler", + children: "Project with a bundler" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "If you're running TreeSpider in a project that has a bundler, then the process of initializing TreeSpider is simple as follows" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "import TreeSpider from \"treespider\"\n\nconst instance1 = new TreeSpider({\n targetContainer: \"#container-1\"\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "TreeSpider can work in both JavaScript applications and pure TypeScript applications because TreeSpider was built completely with TypeScript" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "using-custom-background-pattern", + children: "Using Custom background pattern" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["You can use custom SVG background with TreeSpider, to provide a custom SVG background the SVG must have been stringified, you can use the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "new XMLSerializer().serializeToString()" + }), " method to serialize your SVG DOM element to string, or pass it directly to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "customBackground" + }), " option if it's already in the string format and it's not a DOM element, example"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "import TreeSpider from \"treespider\";\n\nconst custom_svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\")\n// ... add other stuffs like rect, circle, paths and so on...\n\nconst custom_svg_bg = new XMLSerializer().serializeToString(custom_svg)\n\n// OR if you already have the svg in a string format\n\nconst custom_svg_bg = '...'\n\nconst instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n customBackground: custom_svg_bg\n})\n\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Then it will look something like this" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TestTSpyder2, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The background is an SVG string that was provided to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "customBackground" + }), " option, the SVG string is below:"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-xml", + children: "\n\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Then to further customize our custom svg background, let's try to set the background size to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "20px" + }), ", example"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n customBackground: custom_svg_bg,\n backgroundSize: \"20px\"\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Then if you run that, it will look something like this" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TestTSpyder3, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "As you can see the size of the SVG background has changed and it's now looking better." + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 1659: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ TestTSpyder: () => (/* binding */ TestTSpyder), +/* harmony export */ TestTSpyderT: () => (/* binding */ TestTSpyderT), +/* harmony export */ TestTSpyderZ: () => (/* binding */ TestTSpyderZ), +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8453); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6540); +/* harmony import */ var treespider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8777); + + +const frontMatter = { + sidebar_position: 3 +}; +const contentTitle = 'Basic Usage'; +const metadata = { + "id": "basic-usage", + "title": "Basic Usage", + "description": "Presumming you've followed the installation steps, here is the basic usage of TreeSpider, all TreeSpider options are optional except the targetContainer, to intialize TreeSpider.", + "source": "@site/docs/basic-usage.mdx", + "sourceDirName": ".", + "slug": "/basic-usage", + "permalink": "/docs/basic-usage", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/basic-usage.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 3, + "frontMatter": { + "sidebar_position": 3 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "Installation", + "permalink": "/docs/installation" + }, + "next": { + "title": "Tree Data", + "permalink": "/docs/tree-data" + } +}; +const assets = { + +}; + +// from the example above +// from the example above + + + + +const TestTSpyderZ = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + const employee_data = [{ + id: "1", + name: "Abayomi Amusa", + role: "CEO", + location: "Lagos, Nigeria" + }, { + id: "2", + parentId: "1", + name: "Trey Anderson", + role: "Product Manager", + location: "California, United States" + }, { + id: "3", + parentId: "1", + name: "Troy Manuel", + role: "Software Developer", + location: "Alberta, Canada" + }, { + id: "4", + parentId: "1", + name: "Rebecca Oslon", + role: "Software Developer", + location: "London, United Kingdom" + }, { + id: "5", + parentId: "1", + name: "David Scheg", + role: "Product Designer", + location: "Jiaozian, China" + }, { + id: "6", + parentId: "2", + name: "James Zucks", + role: "DevOps", + location: "Accra, Ghana" + }, { + id: "7", + parentId: "2", + name: "Zu Po Xe", + role: "Backend Developer", + location: "Johanesburg, South Africa" + }, { + id: "8", + parentId: "2", + name: "Scott Ziagler", + role: "FrontEnd Developer Intern" + }, { + id: "9", + parentId: "7", + name: "Xervia Allero", + role: "FrontEnd Developer Intern" + }, { + id: "10", + parentId: "3", + name: "Adebowale Ajanlekoko", + role: "Fullstack Developer" + }]; + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#test-cont-bu-0", + tree_data: employee_data, + // from the example above + width: "100%" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "test-cont-bu-0", + style: { + marginBottom: 35 + } + }); +}); +const TestTSpyder = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + const employee_data = [{ + id: "1", + name: "Abayomi Amusa", + role: "CEO", + location: "Lagos, Nigeria" + }, { + id: "2", + parentId: "1", + name: "Trey Anderson", + role: "Product Manager", + location: "California, United States" + }, { + id: "3", + parentId: "1", + name: "Troy Manuel", + role: "Software Developer", + location: "Alberta, Canada" + }, { + id: "4", + parentId: "1", + name: "Rebecca Oslon", + role: "Software Developer", + location: "London, United Kingdom" + }, { + id: "5", + parentId: "1", + name: "David Scheg", + role: "Product Designer", + location: "Jiaozian, China" + }, { + id: "6", + parentId: "2", + name: "James Zucks", + role: "DevOps", + location: "Accra, Ghana" + }, { + id: "7", + parentId: "2", + name: "Zu Po Xe", + role: "Backend Developer", + location: "Johanesburg, South Africa" + }, { + id: "8", + parentId: "2", + name: "Scott Ziagler", + role: "FrontEnd Developer Intern" + }, { + id: "9", + parentId: "7", + name: "Xervia Allero", + role: "FrontEnd Developer Intern" + }, { + id: "10", + parentId: "3", + name: "Adebowale Ajanlekoko", + role: "Fullstack Developer" + }]; + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#test-cont-bu-1", + tree_data: employee_data, + // from the example above + tree_type: "cellar", + chart_head_type: "landscape", + backgroundPattern: "blurry", + width: "100%" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "test-cont-bu-1" + }); +}); +const TestTSpyderT = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + const treeSpiderRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(); + const btnRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(); + const initializeTS = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(() => { + if (!treeSpiderRef.current) return; + treeSpiderRef.current.initialize(); + btnRef.current.remove(); + }, [treeSpiderRef.current, btnRef.current]); + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + treeSpiderRef.current = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#test-cont-bu-3", + width: "100%", + random_data_length: 30, + autoInitialize: false + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "test-cont-bu-3" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", { + ref: e => btnRef.current = e, + onClick: initializeTS, + children: "Click me to initialize TreeSpider" + })] + }); +}); +const toc = [{ + "value": "Initializing", + "id": "initializing", + "level": 2 +}, { + "value": "Passing organization data", + "id": "passing-organization-data", + "level": 2 +}, { + "value": "Options", + "id": "options", + "level": 2 +}, { + "value": "Methods", + "id": "methods", + "level": 2 +}, { + "value": "UI interaction", + "id": "ui-interaction", + "level": 2 +}]; +function _createMdxContent(props) { + const _components = { + admonition: "admonition", + code: "code", + h1: "h1", + h2: "h2", + header: "header", + p: "p", + pre: "pre", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "basic-usage", + children: "Basic Usage" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Presumming you've followed the installation steps, here is the basic usage of TreeSpider, all TreeSpider options are optional except the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "targetContainer" + }), ", to intialize TreeSpider."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "initializing", + children: "Initializing" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-html", + children: "
\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "import TreeSpider from \"path/to/treespider/dist/es/treeSpider.bundle.min.js\"\n\n// OR if TreeSpider was installed with npm in a project with a bundler\n\n// import TreeSpider from \"treespider\"\n\nconst instance1 = new TreeSpider({\n targetContainer: \"#container-1\"\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Then this will display TreeSpider in the browser with randomly generated fake data, next, load your organization data into TreeSpider, the data is linear and straight forward." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "passing-organization-data", + children: "Passing organization data" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "tree_data" + }), " option takes an array of objects which will be the organization's employee data, the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "id" + }), " property is required, and each employee will have a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " which is the id of the department head that each employee reports to, and it is also required that there is an object/data that doesn't have a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " which will serve as the root or the overall head of the organization."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const employee_data = [\n {\n id: \"1\",\n name: \"Abayomi Amusa\",\n role: \"CEO\",\n location: \"Lagos, Nigeria\"\n },\n {\n id: \"2\",\n parentId: \"1\",\n name: \"Trey Anderson\",\n role: \"Product Manager\",\n location: \"California, United States\"\n },\n {\n id: \"3\",\n parentId: \"1\",\n name: \"Troy Manuel\",\n role: \"Software Developer\",\n location: \"Alberta, Canada\"\n },\n {\n id: \"4\",\n parentId: \"1\",\n name: \"Rebecca Oslon\",\n role: \"Software Developer\",\n location: \"London, United Kingdom\"\n },\n {\n id: \"5\",\n parentId: \"1\",\n name: \"David Scheg\",\n role: \"Product Designer\",\n location: \"Jiaozian, China\"\n },\n {\n id: \"6\",\n parentId: \"2\",\n name: \"James Zucks\",\n role: \"DevOps\",\n location: \"Accra, Ghana\"\n },\n {\n id: \"7\",\n parentId: \"2\",\n name: \"Zu Po Xe\",\n role: \"Backend Developer\",\n location: \"Johanesburg, South Africa\"\n },\n {\n id: \"8\",\n parentId: \"2\",\n name: \"Scott Ziagler\",\n role: \"FrontEnd Developer Intern\"\n },\n {\n id: \"9\",\n parentId: \"7\",\n name: \"Xervia Allero\",\n role: \"FrontEnd Developer Intern\"\n },\n {\n id: \"10\",\n parentId: \"3\",\n name: \"Adebowale Ajanlekoko\",\n role: \"Fullstack Developer\"\n },\n]\n\nconst instance1 = new TreeSpider({\n targetContainer: '#container-1',\n tree_data: employee_data\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Notice the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "CEO" + }), " doesn't have a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " property and that signifies it is the root or the overall head of the organization, and each employee has the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " property pointing the employee they report to, learn more about the tree data structure on the tree date page."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Then this will display the structure with the default tree type and other default options, zoom out and pan around to interact." + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TestTSpyderZ, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.admonition, { + type: "info", + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "There can be multiple TreeSpider instances on the same page" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "options", + children: "Options" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["You can also customize it or choose the tree type and chart head you want, like for example let's choose the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "cellar" + }), " tree type with the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "landscape" + }), " chart head type and also a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "blurry" + }), " background pattern."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "// ...\n\nconst instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n tree_data: employee_data, // from the example above\n tree_type: \"cellar\",\n chart_head_type: \"landscape\",\n backgroundPattern: \"blurry\",\n width: \"100%\", // added so it will fit the container area\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "And this will be displayed as below" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TestTSpyder, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "methods", + children: "Methods" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["You can also programmatically interact with TreeSpider, for instance let's programatically initialize TreeSpider, we will set the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "autoInitialize" + }), " option to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }), " then programmatically initialize it by calling the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "TreeSpider.initialize()" + }), " method."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const inst1 = new TreeSpider({\n targetContainer: \"#container-1\",\n // ...\n autoInitialize: false\n });\n\ndocument.querySelector(\"#button\").onclick = () => {\n inst1.initialize();\n}\n\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["In the example above an ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "onclick" + }), " event was attached to a button to initialize TreeSpider onclick, to see this option in action click on the button below."] + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TestTSpyderT, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "ui-interaction", + children: "UI interaction" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "You can interact with the chart by double clicking on the chart heads to automatically zoom them in, pan in any direction, zoom in an out with pointer and mouse event, collapse and expand chart heads, and also interact using the UI tools." + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 6929: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ TSpydExample1: () => (/* binding */ TSpydExample1), +/* harmony export */ TSpydExample2: () => (/* binding */ TSpydExample2), +/* harmony export */ TSpydExample3: () => (/* binding */ TSpydExample3), +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8453); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6540); +/* harmony import */ var treespider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8777); + + +const frontMatter = { + sidebar_position: 6 +}; +const contentTitle = 'Chart Heads'; +const metadata = { + "id": "chart-heads", + "title": "Chart Heads", + "description": "As TreeSpider has different tree types so it also has different options of chart heads that can be chosen from, each trees has a fitting chart head, for example the rounded chart head goes well on the goldenRod tree, the chart heads are as follows", + "source": "@site/docs/chart-heads.mdx", + "sourceDirName": ".", + "slug": "/chart-heads", + "permalink": "/docs/chart-heads", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/chart-heads.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 6, + "frontMatter": { + "sidebar_position": 6 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "Trees", + "permalink": "/docs/trees" + }, + "next": { + "title": "Options", + "permalink": "/docs/options" + } +}; +const assets = { + +}; + + + + + +const TSpydExample1 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-tr-1", + random_data_length: 50, + width: '100%', + chart_head_type: "default" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-tr-1", + style: { + marginBottom: 25 + } + }); +}); +const TSpydExample2 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-tr-2", + random_data_length: 50, + width: '100%', + chart_head_type: "landscape" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-tr-2", + style: { + marginBottom: 25 + } + }); +}); +const TSpydExample3 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-tr-3", + random_data_length: 50, + width: '100%', + chart_head_type: "rounded" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-tr-3", + style: { + marginBottom: 25 + } + }); +}); +const toc = [{ + "value": "default", + "id": "default", + "level": 2 +}, { + "value": "landscape", + "id": "landscape", + "level": 2 +}, { + "value": "rounded", + "id": "rounded", + "level": 2 +}]; +function _createMdxContent(props) { + const _components = { + code: "code", + h1: "h1", + h2: "h2", + header: "header", + p: "p", + pre: "pre", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "chart-heads", + children: "Chart Heads" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["As TreeSpider has different tree types so it also has different options of chart heads that can be chosen from, each trees has a fitting chart head, for example the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "rounded" + }), " chart head goes well on the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "goldenRod" + }), " tree, the chart heads are as follows"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "default", + children: "default" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This is the default chart head, example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n chart_head_type: \"default\"\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "if you run this it would look somthing like this:" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample1, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "landscape", + children: "landscape" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "landscape" + }), " chart head is an horizontal chart head, example"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n chart_head_type: \"landscape\"\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "if you run this it would look something like this:" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample2, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "rounded", + children: "rounded" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The rounded chart head is a transparent head with bigger image shape, example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n chart_head_type: \"rounded\"\n})\n" + }) + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample3, {})] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 9523: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ TestTSpyder1: () => (/* binding */ TestTSpyder1), +/* harmony export */ TestTSpyder2: () => (/* binding */ TestTSpyder2), +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8453); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6540); +/* harmony import */ var treespider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8777); + + +const frontMatter = { + sidebar_position: 8 +}; +const contentTitle = 'Colors'; +const metadata = { + "id": "colors", + "title": "Colors", + "description": "This page explains more on the colorrange option, you can customize TreeSpider chart head colors to fit your taste by providing an array of colors to the colorrange option, by default, TreeSpider uses a range of rainbow colors, how does it work? TreeSpider interpolates the provided colors using d3.interpolateRgbBasis() which produces a color range based on the provided colors, it then slice out a color based on the index of the tree data of the chart head, the index gets converted into percentage, like for example if the index of the tree data is 98 and the total length of the tree data is 200, the maths is going to be 98/200 which then gives the percentage and with this percentage it is used to get a slice from the interpolated color range and then the tree data's chart head get assigned the color slice, next let's check out how it really works.", + "source": "@site/docs/colors.mdx", + "sourceDirName": ".", + "slug": "/colors", + "permalink": "/docs/colors", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/colors.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 8, + "frontMatter": { + "sidebar_position": 8 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "Options", + "permalink": "/docs/options" + }, + "next": { + "title": "Methods", + "permalink": "/docs/methods" + } +}; +const assets = { + +}; + + + + + +const TestTSpyder1 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#test-cont-cl-0", + width: "100%", + color_range: ['red', '#00FF00', 'blue'], + random_data_length: 30 + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "test-cont-cl-0", + style: { + marginBottom: 35 + } + }); +}); +const TestTSpyder2 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#test-cont-cl-1", + width: "100%", + color_range: ['yellow', 'purple'], + random_data_length: 30 + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "test-cont-cl-1", + style: { + marginBottom: 35 + } + }); +}); +const toc = []; +function _createMdxContent(props) { + const _components = { + a: "a", + code: "code", + h1: "h1", + header: "header", + p: "p", + pre: "pre", + strong: "strong", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "colors", + children: "Colors" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["This page explains more on the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "color_range" + }), " option, you can customize TreeSpider chart head colors to fit your taste by providing an array of colors to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "color_range" + }), " option, by default, TreeSpider uses a range of rainbow colors, how does it work? TreeSpider interpolates the provided colors using ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://d3js.org/d3-interpolate/color#interpolateRgbBasis", + children: "d3.interpolateRgbBasis()" + }), " which produces a color range based on the provided colors, it then slice out a color based on the index of the tree data of the chart head, the index gets converted into percentage, like for example if the index of the tree data is 98 and the total length of the tree data is 200, the maths is going to be 98/200 which then gives the percentage and with this percentage it is used to get a slice from the interpolated color range and then the tree data's chart head get assigned the color slice, next let's check out how it really works."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["For example lets use the 3 basic colors ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "red" + }), ", ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "green" + }), ", and ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "blue" + }), "."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: '#container-1',\n color_range: ['red', '#00FF00', 'blue']\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "If you noticed the second color in the array is in hex format which is to show that the format of the color passed can be either or both hex and color names, if you run this you will get something similar to this working example" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TestTSpyder1, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["You'll see that in this example the chart head colors are between the 3 provided colors, ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "red" + }), ", ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "green" + }), " and ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "blue" + }), ", there are no yellow, purple and other colors that are not within the 3 colors, and you will also notice that there are color variants of the 3 colors, like dark red, lighter blue, and darker green and others, that's the amazing work of d3 color interpolation."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Let's try just 2 colors, this time let's try ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "yellow" + }), " and ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "purple" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: '#container-2',\n color_range: ['yellow', 'purple']\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "If you run this it would look like the example below" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TestTSpyder2, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "As you can see the colors are only yellows and purples, that is how it works, and you can pass in any number of colors." + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 5451: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8453); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6540); +/* harmony import */ var treespider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8777); + + +const frontMatter = { + sidebar_position: 12 +}; +const contentTitle = 'Contributing'; +const metadata = { + "id": "contributing", + "title": "Contributing", + "description": "TreeSpider is still a work-in-progress and I am planning to make it better that it currently is, and your contribution is highly appreciated, and if you need a feature or want to add a tree type, a new chart head, a new link type or any other things you are welcome to contribute them, or if you noticed a bug you're welcome to create a pull request, your contributions are appreciated.", + "source": "@site/docs/contributing.mdx", + "sourceDirName": ".", + "slug": "/contributing", + "permalink": "/docs/contributing", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/contributing.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 12, + "frontMatter": { + "sidebar_position": 12 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "React JS", + "permalink": "/docs/frameworks/react-js" + } +}; +const assets = { + +}; + + + + + +const toc = [{ + "value": "Codebase short intro", + "id": "codebase-short-intro", + "level": 2 +}, { + "value": "Technologies used", + "id": "technologies-used", + "level": 2 +}, { + "value": "Getting started", + "id": "getting-started", + "level": 2 +}, { + "value": "Starting the project", + "id": "starting-the-project", + "level": 2 +}, { + "value": "Testing", + "id": "testing", + "level": 2 +}]; +function _createMdxContent(props) { + const _components = { + a: "a", + code: "code", + h1: "h1", + h2: "h2", + header: "header", + li: "li", + p: "p", + pre: "pre", + strong: "strong", + ul: "ul", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "contributing", + children: "Contributing" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "TreeSpider is still a work-in-progress and I am planning to make it better that it currently is, and your contribution is highly appreciated, and if you need a feature or want to add a tree type, a new chart head, a new link type or any other things you are welcome to contribute them, or if you noticed a bug you're welcome to create a pull request, your contributions are appreciated." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "codebase-short-intro", + children: "Codebase short intro" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["TreeSpider is fully built with D3 and object oriented TypeScript, and it also uses rollup as the bundler, the source code is under the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "src" + }), " directory and the output bundle is in the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "dist" + }), " directory."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "technologies-used", + children: "Technologies used" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The following are the technologies used" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: "D3.js" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: "TypeScript" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: "SCSS" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: "rollup" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: "babel" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: "jest" + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "getting-started", + children: "Getting started" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["To get started to contribute, in a convenient directory on your computer, open the terminal and clone the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://github.com/paulosabayomi/treeSpider", + children: "TreeSpider github repository" + }), ", then run ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "npm i" + }), " to install all the dev dependencies, then install ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "sass" + }), " globally with ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "npm i -g sass" + }), "."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "starting-the-project", + children: "Starting the project" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["To start the project, in the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "package.json" + }), " file check the list of commands under the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "scripts" + }), " property for all the commands needed for development and bundling, to start rollup bundler in watch-mode for development run"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-bash", + children: "npm run rollup-watch\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Next, start the sass css compiler in watch mode by running" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-bash", + children: "npm run sass\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Then you are good to go and to start making changes, the single scss file is under the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "/scss" + }), " directory."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "testing", + children: "Testing" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["After development, testing is neccessary, to test you can either add some test cases to the already created test files under the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "/__test__" + }), " directory or create new test files, after creating the tests or if no tests were added, run"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-bash", + children: "npm run test\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "If all tests passed, then you can create a pull request, no need for bundling as it will be bundled with GitHub Actions after it has been merged." + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 7928: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + sidebar_position: 10 +}; +const contentTitle = 'Events'; +const metadata = { + "id": "events", + "title": "Events", + "description": "TreeSpider has a list of events that can be listened for, the below is a list of all events.", + "source": "@site/docs/events.mdx", + "sourceDirName": ".", + "slug": "/events", + "permalink": "/docs/events", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/events.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 10, + "frontMatter": { + "sidebar_position": 10 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "Methods", + "permalink": "/docs/methods" + }, + "next": { + "title": "Frameworks", + "permalink": "/docs/category/frameworks" + } +}; +const assets = { + +}; + + + +const toc = [{ + "value": "library.init", + "id": "libraryinit", + "level": 2 +}, { + "value": "chart_head.create", + "id": "chart_headcreate", + "level": 2 +}, { + "value": "chart_head.expanded", + "id": "chart_headexpanded", + "level": 2 +}, { + "value": "chart_head.collapsed", + "id": "chart_headcollapsed", + "level": 2 +}, { + "value": "zooming", + "id": "zooming", + "level": 2 +}]; +function _createMdxContent(props) { + const _components = { + code: "code", + em: "em", + h1: "h1", + h2: "h2", + header: "header", + li: "li", + p: "p", + pre: "pre", + ul: "ul", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "events", + children: "Events" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "TreeSpider has a list of events that can be listened for, the below is a list of all events." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The events can be listened to by using the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "TreeSpider.addEventListener()" + }), " or with the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "on()" + }), " method."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "libraryinit", + children: "library.init" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Data: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "rootContainer: HTMLElement" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This event is emited once and immediately after TreeSpider has been initialized, example:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const inst1 = new TreeSpider({\n targetContainer: \"#container-1\"\n})\n\ninst1.addEventListener(\"library.init\", (e) => {\n console.log(\"TreeSpider has been initialized\")\n})\n\n// OR\n// inst1.on(\"library.init\", (e) => {\n// console.log(\"TreeSpider has been initialized\")\n// })\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "chart_headcreate", + children: "chart_head.create" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Data: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "headNode: SVG" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This event is emited after a chart head has been created and has not been added to the UI, it returns the SVG element of the chart head that was just created, this event is emited for each of the chat heads, example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const inst1 = new TreeSpider({\n targetContainer: \"#container-1\"\n})\n\ninst1.addEventListener(\"chart_head.create\", (e) => {\n console.log(\"Chat head created; SVG: \", e.detail.headNode)\n})\n\n// OR\n// inst1.on(\"chart_head.create\", (e) => {\n// console.log(\"Chat head created; SVG: \", e.detail.headNode)\n// })\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "chart_headexpanded", + children: "chart_head.expanded" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Data: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "svgNode: SVG, head_data: Object, pointPosition: number" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["This event is emited whenever a chat head got expanded, it returns the SVG node of the expanded chart head, the data of the chart head and the point position, the point position is always ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "1" + }), " except for chart heads with double point positions, example."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const inst1 = new TreeSpider({\n targetContainer: \"#container-1\"\n})\n\ninst1.addEventListener(\"chart_head.expanded\", (e) => {\n console.log(\"Chat head expanded; data \", e.detail)\n})\n\n// OR\n// inst1.on(\"chart_head.expanded\", (e) => {\n// console.log(\"Chat head expanded; data \", e.detail)\n// })\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "chart_headcollapsed", + children: "chart_head.collapsed" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Data: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "svgNode: SVG, head_data: Object, pointPosition: number" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["This event is emited whenever a chat head got collapsed, it is just like the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "chart_head.expanded" + }), " event and it also returns the SVG node of the expanded chart head, the data of the chart head and the point position, the point position is always ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "1" + }), " except for chart heads with double point positions, example."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const inst1 = new TreeSpider({\n targetContainer: \"#container-1\"\n})\n\ninst1.addEventListener(\"chart_head.collapsed\", (e) => {\n console.log(\"Chat head expanded; data \", e.detail)\n})\n\n// OR\n// inst1.on(\"chart_head.collapsed\", (e) => {\n// console.log(\"Chat head expanded; data \", e.detail)\n// })\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "zooming", + children: "zooming" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Data: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "e: ZoomBehavior" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This event is emited when zooming, note that it is also emited when panning and even when performing automatic zooming and panning, it returns d3 zoom behavior, example:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const inst1 = new TreeSpider({\n targetContainer: \"#container-1\"\n})\n\ninst1.addEventListener(\"zooming\", (e) => {\n console.log(\"Tree is zooming; data \", e.detail)\n})\n\n// OR\n// inst1.on(\"zooming\", (e) => {\n// cconsole.log(\"Tree is zooming; data \", e.detail)\n// })\n" + }) + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 9074: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + sidebar_position: 1 +}; +const contentTitle = 'React JS'; +const metadata = { + "id": "frameworks/react-js", + "title": "React JS", + "description": "TreeSpider can run in React JS applications, this documentation uses React JS and it runs TreeSpider, the following are the steps to running TreeSpider in a React JS application.", + "source": "@site/docs/frameworks/react-js.md", + "sourceDirName": "frameworks", + "slug": "/frameworks/react-js", + "permalink": "/docs/frameworks/react-js", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/frameworks/react-js.md", + "tags": [], + "version": "current", + "sidebarPosition": 1, + "frontMatter": { + "sidebar_position": 1 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "Frameworks", + "permalink": "/docs/category/frameworks" + }, + "next": { + "title": "Contributing", + "permalink": "/docs/contributing" + } +}; +const assets = { + +}; + + + +const toc = [{ + "value": "Installation", + "id": "installation", + "level": 2 +}, { + "value": "Usage", + "id": "usage", + "level": 2 +}]; +function _createMdxContent(props) { + const _components = { + code: "code", + h1: "h1", + h2: "h2", + header: "header", + p: "p", + pre: "pre", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "react-js", + children: "React JS" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "TreeSpider can run in React JS applications, this documentation uses React JS and it runs TreeSpider, the following are the steps to running TreeSpider in a React JS application." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "installation", + children: "Installation" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "To install TreeSpider in React JS, run" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-bash", + children: "npm i treespider\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This will install TreeSpider, next import TreeSpider in your application" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "usage", + children: "Usage" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Import TreeSpider." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "import TreeSpider from 'treespider';\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Next, add the CSS file to the index.js/ts file," + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "import \"treespider/dist/css/treeSpider.css\"\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Next, initialize it" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-tsx", + metastring: "title=\"src/ExampleComponent.tsx\"", + children: "const ExampleComponent = React.memo((props: any) => {\n const treeSpiderRef = React.useRef(null)\n\n React.useLayoutEffect(() => {\n treeSpiderRef.current = new TreeSpider({\n targetContainer: \"#container-1\",\n // ...\n })\n }, [])\n \n return (\n
\n )\n})\n\nexport default ExampleComponent;\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Then TreeSpider is going to be displayed in the browser, to access the methods and events you can use the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "treeSpiderRef" + }), ", and other options also works the same way as it would in a non-react js application."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The React JS library version of TreeSpider is coming soon." + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 2655: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + sidebar_position: 2 +}; +const contentTitle = 'Installation'; +const metadata = { + "id": "installation", + "title": "Installation", + "description": "TreeSpider can be installed with npm or can be included via CDN.", + "source": "@site/docs/installation.mdx", + "sourceDirName": ".", + "slug": "/installation", + "permalink": "/docs/installation", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/installation.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 2, + "frontMatter": { + "sidebar_position": 2 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "Introduction", + "permalink": "/docs/intro" + }, + "next": { + "title": "Basic Usage", + "permalink": "/docs/basic-usage" + } +}; +const assets = { + +}; + + + +const toc = [{ + "value": "NPM", + "id": "npm", + "level": 2 +}, { + "value": "CDN", + "id": "cdn", + "level": 2 +}, { + "value": "ES6", + "id": "es6", + "level": 3 +}, { + "value": "CSS", + "id": "css", + "level": 3 +}, { + "value": "Quick Start", + "id": "quick-start", + "level": 2 +}, { + "value": "NPM", + "id": "npm-1", + "level": 2 +}, { + "value": "ES6 import with bundler", + "id": "es6-import-with-bundler", + "level": 3 +}, { + "value": "ES6 import with no bundler", + "id": "es6-import-with-no-bundler", + "level": 3 +}, { + "value": "CSS", + "id": "css-1", + "level": 3 +}, { + "value": "CDN", + "id": "cdn-1", + "level": 2 +}, { + "value": "ES6", + "id": "es6-1", + "level": 3 +}, { + "value": "Browser", + "id": "browser", + "level": 3 +}, { + "value": "CSS", + "id": "css-2", + "level": 3 +}]; +function _createMdxContent(props) { + const _components = { + code: "code", + h1: "h1", + h2: "h2", + h3: "h3", + header: "header", + p: "p", + pre: "pre", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "installation", + children: "Installation" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "TreeSpider can be installed with npm or can be included via CDN." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "npm", + children: "NPM" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-bash", + children: "npm i treespider\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "cdn", + children: "CDN" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "You can choose any CDN of your choice but we will be using UNPKG in this doc, it is recommended to include the minified version of both the ES6 and browser bundles." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "es6", + children: "ES6" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-js", + children: "https://unpkg.com/treespider@latest/dist/es/treeSpider.bundle.min.js\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "css", + children: "CSS" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-css", + children: "https://unpkg.com/treespider@latest/dist/css/treeSpider.css\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "quick-start", + children: "Quick Start" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "After installing TreeSpider you can either import it directly into your project or load it through the script tag, and you can either choose to install it through npm or include it directly through CDN" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "npm-1", + children: "NPM" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "If you installed it with NPM import the ES6 and CSS directly like so, it is recommended to import the minified bundle." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "es6-import-with-bundler", + children: "ES6 import with bundler" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "import TreeSpider from \"treespider\"\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "es6-import-with-no-bundler", + children: "ES6 import with no bundler" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "If you installed TreeSpider into a project that has no bundler, move/copy the treespider folder from node_modules to the root of your project, then include TreeSpider like so" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "import TreeSpider from \"/path/to/installation/folder/dist/es/treeSpider.bundle.min.js\"\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["It is important note the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "es" + }), " in the path as it contains the ES6 bundles, to load it through the script tag"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-html", + children: "\n\n\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Then use it directly like so" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-html", + children: "\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "css-1", + children: "CSS" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The TreeSpider CSS file needs to be included, add it to the head of the body like so" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-html", + children: "\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "cdn-1", + children: "CDN" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "As the same as loading TreeSpider when installed with NPM, you can import and load TreeSpider directly from the CDN, using UNPKG" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "es6-1", + children: "ES6" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "import TreeSpider from \"https://unpkg.com/treespider@latest/dist/es/treeSpider.bundle.min.js\"\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["And you can replace the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "latest" + }), " with any version of your choice, you can also load it directly from CDN through the script tag."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "browser", + children: "Browser" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-html", + children: "\n\n\n\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Also note the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "es" + }), " and ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "browser" + }), " difference in the ES6 import and browser CDN link, next, add the CSS file from CDN."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "css-2", + children: "CSS" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-html", + children: "\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Next, the basic usage." + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 4505: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ TSpydExample1: () => (/* binding */ TSpydExample1), +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8453); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6540); +/* harmony import */ var treespider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8777); + + +const frontMatter = { + sidebar_position: 1 +}; +const contentTitle = 'Introduction'; +const metadata = { + "id": "intro", + "title": "Introduction", + "description": "TreeSpider is an easy-to-use javascript library built for the purpose of displaying organization structure and employee structure and hierarchy within the organization, i.e for displaying employee data to know who reports to who and in which department, it makes it easy to manage employees in any organization of all sizes.", + "source": "@site/docs/intro.mdx", + "sourceDirName": ".", + "slug": "/intro", + "permalink": "/docs/intro", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/intro.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 1, + "frontMatter": { + "sidebar_position": 1 + }, + "sidebar": "tutorialSidebar", + "next": { + "title": "Installation", + "permalink": "/docs/installation" + } +}; +const assets = { + +}; + + + + + +const TSpydExample1 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-ex-1", + random_data_length: 50, + chart_head_type: 'rounded', + width: '100%' + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-ex-1", + style: { + marginBottom: 25 + } + }); +}); +const toc = []; +function _createMdxContent(props) { + const _components = { + h1: "h1", + header: "header", + p: "p", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "introduction", + children: "Introduction" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "TreeSpider is an easy-to-use javascript library built for the purpose of displaying organization structure and employee structure and hierarchy within the organization, i.e for displaying employee data to know who reports to who and in which department, it makes it easy to manage employees in any organization of all sizes." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "TreeSpider is built completely with D3js and TypeScript" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample1, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "TreeSpider is highly customizable and can be personalized to fit your organization." + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 2781: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ TestTSpyder1: () => (/* binding */ TestTSpyder1), +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8453); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6540); +/* harmony import */ var treespider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8777); + + +const frontMatter = { + sidebar_position: 9 +}; +const contentTitle = 'Methods'; +const metadata = { + "id": "methods", + "title": "Methods", + "description": "The following methods can be used to interact with TreeSpider programmatically", + "source": "@site/docs/methods.mdx", + "sourceDirName": ".", + "slug": "/methods", + "permalink": "/docs/methods", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/methods.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 9, + "frontMatter": { + "sidebar_position": 9 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "Colors", + "permalink": "/docs/colors" + }, + "next": { + "title": "Events", + "permalink": "/docs/events" + } +}; +const assets = { + +}; + + + + + +const TestTSpyder1 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + const treeSpiderRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(); + const btnRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(); + const initializeTS = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(() => { + if (!treeSpiderRef.current) return; + treeSpiderRef.current.initialize(); + btnRef.current.remove(); + }, [treeSpiderRef.current, btnRef.current]); + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + treeSpiderRef.current = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#test-cont-mt-3", + width: "100%", + random_data_length: 30, + autoInitialize: false + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "test-cont-mt-3" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", { + ref: e => btnRef.current = e, + onClick: initializeTS, + children: "Click me to initialize TreeSpider" + })] + }); +}); +const toc = [{ + "value": "initialize", + "id": "initialize", + "level": 2 +}, { + "value": "resetZoom", + "id": "resetzoom", + "level": 2 +}, { + "value": "updateChartHeadBg", + "id": "updatechartheadbg", + "level": 2 +}, { + "value": "on", + "id": "on", + "level": 2 +}, { + "value": "setOptions", + "id": "setoptions", + "level": 2 +}, { + "value": "zoom", + "id": "zoom", + "level": 2 +}, { + "value": "startStopRotateCW", + "id": "startstoprotatecw", + "level": 2 +}, { + "value": "startStopRotateACW", + "id": "startstoprotateacw", + "level": 2 +}, { + "value": "rotateOnceCW", + "id": "rotateoncecw", + "level": 2 +}, { + "value": "rotateOnceACW", + "id": "rotateonceacw", + "level": 2 +}]; +function _createMdxContent(props) { + const _components = { + admonition: "admonition", + code: "code", + em: "em", + h1: "h1", + h2: "h2", + header: "header", + li: "li", + p: "p", + pre: "pre", + ul: "ul", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "methods", + children: "Methods" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The following methods can be used to interact with TreeSpider programmatically" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "initialize", + children: "initialize" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Params: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "none" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["If you want to manually initialize TreeSpider, set the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "autoInitialize" + }), " option to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }), " then programmatically call this method to manually initialize TreeSpider, example below:"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n autoInitialize: false\n})\n// ...\n\ndocument.querySelector(\"#random-btn\").onclick = () => instance1.initialize()\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Click on the button below to initialize TreeSpider" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TestTSpyder1, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "resetzoom", + children: "resetZoom" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Params: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "none" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Call this method to reset the zoom level to the default zoom level, and this will also recenter or re-place the root chart head back to the default position." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "updatechartheadbg", + children: "updateChartHeadBg" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Params: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "color: string" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This method is for programmatically setting the background color of the chart heads, it takes in the color as the argument, the color can be in hex format or a color name or any other CSS formats, example below" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\"\n})\n\n// ...\n\ndocument.querySelector(\"#random-btn\").onclick = () => instance1.updateChartHeadBg('black')\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "on", + children: "on" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Params: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "eventName: TEventType, callbackFn: (data?: any) => null" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["This method is a short form of the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "addEventListener" + }), " method and it works exactly like it, it can be used to listen to events, to learn more about using events check the events page, example below:"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\"\n})\n\ninstance1.on(\"library.init\", (e) => {\n console.log(\"library has been initialized\", e)\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "setoptions", + children: "setOptions" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Params: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "options_to_set: Omit" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["This option is for setting options that were not passed directly to the library and it will also override the options that were passed directly to the library, and it is recommended to call this method before initializing TreeSpider, and it is best to use this method when ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "autoInitialize" + }), " is set to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }), " and when TreeSpider will be manually initialized, example below:"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n autoInitialize: false,\n})\n\ninstance1.setOptions({\n tree_data: [...]\n})\n\ndocument.querySelector(\"#random-btn\").onclick = () => {\n instance1.initialize()\n}\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "zoom", + children: "zoom" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Params: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "dir: 'in' | 'out'" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["This option is for programmatically zooming in and out, it takes the direction of zoom either ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "in" + }), " or ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "out" + }), " as an argument."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.admonition, { + type: "note", + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The rotation feature is only available for radial or circular trees and the following methods will not work for none radial trees." + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "startstoprotatecw", + children: "startStopRotateCW" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Params: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "none" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This method is for starting or stopping the chart rotation in the clockwise direction." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "startstoprotateacw", + children: "startStopRotateACW" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Params: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "none" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This method is for starting or stopping the chart rotation in the anticlockwise direction." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "rotateoncecw", + children: "rotateOnceCW" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Params: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "none" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This method is for rotating the tree only once in the clockwise direction." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "rotateonceacw", + children: "rotateOnceACW" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Params: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "none" + }) + })] + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This method is for rotating the tree only once in the anticlockwise direction." + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 4269: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8453); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6540); +/* harmony import */ var treespider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8777); + + +const frontMatter = { + sidebar_position: 7 +}; +const contentTitle = 'Options'; +const metadata = { + "id": "options", + "title": "Options", + "description": "TreeSpider can be personalized and customized with the options, the options are as follows", + "source": "@site/docs/options.mdx", + "sourceDirName": ".", + "slug": "/options", + "permalink": "/docs/options", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/options.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 7, + "frontMatter": { + "sidebar_position": 7 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "Chart Heads", + "permalink": "/docs/chart-heads" + }, + "next": { + "title": "Colors", + "permalink": "/docs/colors" + } +}; +const assets = { + +}; + + + + + +const toc = [{ + "value": "targetContainer", + "id": "targetcontainer", + "level": 2 +}, { + "value": "placeEl", + "id": "placeel", + "level": 2 +}, { + "value": "width", + "id": "width", + "level": 2 +}, { + "value": "height", + "id": "height", + "level": 2 +}, { + "value": "autoInitialize", + "id": "autoinitialize", + "level": 2 +}, { + "value": "tree_data", + "id": "tree_data", + "level": 2 +}, { + "value": "color_range", + "id": "color_range", + "level": 2 +}, { + "value": "tree_type", + "id": "tree_type", + "level": 2 +}, { + "value": "chart_head_type", + "id": "chart_head_type", + "level": 2 +}, { + "value": "show_tools", + "id": "show_tools", + "level": 2 +}, { + "value": "show_chart_head_border", + "id": "show_chart_head_border", + "level": 2 +}, { + "value": "animation_rotation_speed", + "id": "animation_rotation_speed", + "level": 2 +}, { + "value": "animation_rotation_interval", + "id": "animation_rotation_interval", + "level": 2 +}, { + "value": "backgroundPattern", + "id": "backgroundpattern", + "level": 2 +}, { + "value": "backgroundPosition", + "id": "backgroundposition", + "level": 2 +}, { + "value": "backgroundSize", + "id": "backgroundsize", + "level": 2 +}, { + "value": "customBackground", + "id": "custombackground", + "level": 2 +}, { + "value": "head_linker_thumb_circle_radius", + "id": "head_linker_thumb_circle_radius", + "level": 2 +}, { + "value": "linker_thumb_icon_color", + "id": "linker_thumb_icon_color", + "level": 2 +}, { + "value": "linker_thumb_shape", + "id": "linker_thumb_shape", + "level": 2 +}, { + "value": "head_image_shape", + "id": "head_image_shape", + "level": 2 +}, { + "value": "chart_head_bg", + "id": "chart_head_bg", + "level": 2 +}, { + "value": "auto_set_chart_head_bg", + "id": "auto_set_chart_head_bg", + "level": 2 +}, { + "value": "display_tree_in_step", + "id": "display_tree_in_step", + "level": 2 +}, { + "value": "auto_display_tree_in_step", + "id": "auto_display_tree_in_step", + "level": 2 +}, { + "value": "tree_level_step", + "id": "tree_level_step", + "level": 2 +}, { + "value": "pallet", + "id": "pallet", + "level": 2 +}, { + "value": "tree_link_type", + "id": "tree_link_type", + "level": 2 +}, { + "value": "random_data_length", + "id": "random_data_length", + "level": 2 +}, { + "value": "zoom_in_distance", + "id": "zoom_in_distance", + "level": 2 +}, { + "value": "zoom_out_distance", + "id": "zoom_out_distance", + "level": 2 +}, { + "value": "verticalSpace", + "id": "verticalspace", + "level": 2 +}, { + "value": "font_link", + "id": "font_link", + "level": 2 +}, { + "value": "font_name", + "id": "font_name", + "level": 2 +}, { + "value": "Interfaces", + "id": "interfaces", + "level": 2 +}, { + "value": "ITreeSpiderMain", + "id": "itreespidermain", + "level": 3 +}, { + "value": "IChartHead", + "id": "icharthead", + "level": 3 +}, { + "value": "ID3DataFormat", + "id": "id3dataformat", + "level": 3 +}, { + "value": "Types", + "id": "types", + "level": 2 +}, { + "value": "TColorPallet", + "id": "tcolorpallet", + "level": 3 +}, { + "value": "TTreeType", + "id": "ttreetype", + "level": 3 +}, { + "value": "TChartHeadType", + "id": "tchartheadtype", + "level": 3 +}, { + "value": "TLinkType", + "id": "tlinktype", + "level": 3 +}, { + "value": "THeadImageShape", + "id": "theadimageshape", + "level": 3 +}, { + "value": "TLinkerCircleColor", + "id": "tlinkercirclecolor", + "level": 3 +}, { + "value": "TLinkerShape", + "id": "tlinkershape", + "level": 3 +}, { + "value": "TEventType", + "id": "teventtype", + "level": 3 +}]; +function _createMdxContent(props) { + const _components = { + a: "a", + code: "code", + em: "em", + h1: "h1", + h2: "h2", + h3: "h3", + header: "header", + li: "li", + p: "p", + pre: "pre", + strong: "strong", + table: "table", + tbody: "tbody", + td: "td", + th: "th", + thead: "thead", + tr: "tr", + ul: "ul", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "options", + children: "Options" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "TreeSpider can be personalized and customized with the options, the options are as follows" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "targetcontainer", + children: "targetContainer" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "string" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "none" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "required" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The target container in which TreeSpider will be spawned/created into, this is required, and it is the CSS selector of the HTML element in which you want TreeSpider should be created in, if you want TreeSpider to take the whole page, pass in ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "body" + }), "."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "placeel", + children: "placeEl" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.em, { + children: ["'override' | 'start' | 'end' | ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "{beforeEl: string}" + })] + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "'override'" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["How TreeSpider container should be placed in the target container, set it to an object if the TreeSpider root container should be placed before a container in the provided target container, pass in ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "beforeEl" + }), " and the CSS selector of the container which TreeSpider should be inserted before in the target container."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "width", + children: "width" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "900px" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The width of the TreeSpider wrapper container" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "height", + children: "height" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "500px" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The height of the TreeSpider wrapper container" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "autoinitialize", + children: "autoInitialize" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "boolean" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "true" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Set this option to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }), " if you want to programmatically initialize TreeSpider, treeSpider will not automatically get initialized if this option is set to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }), ", then you will have to call the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "TreeSpider.initialize()" + }), " method to manually initialize TreeSpider."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "tree_data", + children: "tree_data" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "Array" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "undefined" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["An array of data containing employee details and relationship, see ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "/tree-data", + children: "tree data" + }), " page for more info."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "color_range", + children: "color_range" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "string[]" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "['#b31212', '#b34712', '#b38d12', '#9ab312', '#2fb312', '#12b362', '#12b3a8', '#1278b3', '#1712b3', '#5712b3', '#8d12b3', '#b3128d', '#b3124a', '#b31212']" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["An array of colors which will be used as color range, set more than one color for better output, the provided number of colors should be more than one, by default it uses a set of color ranges, behind the scene TreeSpider will interpolates the provided color using ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://d3js.org/d3-interpolate/color#interpolateRgbBasis", + children: "d3.interpolateRgbBasis()" + }), " and then slice out the color at the index equivalent to the employee index in the provided tree data, the provided color can be either in hex format or color names like ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "yellow" + }), ", ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "red" + }), ", ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "green" + }), ", ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "blue" + }), " and so on."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "tree_type", + children: "tree_type" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "string" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "default" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The type of chart or tree, by default it uses the 'default' chart/tree which is the hierarchy-like tree type, the possible values is one of the following" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.table, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.thead, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Tree types" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tbody, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "default" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "cellar" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "goldenRod" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "hSpider" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "hSpiderWalk" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "radialSpiderLeg" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "vSpiderWalk" + }) + }) + })] + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "chart_head_type", + children: "chart_head_type" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "string" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "default" + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The type of chart head that will be used to display employee details, it is set to 'default' by default, and you can set it to either one of the following." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.table, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.thead, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Chart head types" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tbody, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "'default'" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "'landscape'" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "'rounded'" + }) + })] + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "show_tools", + children: "show_tools" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "boolean" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "true" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Set this to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }), " to not display the UI tools panel, the UI tool panel is the rectangular box floating at the top left corner of the TreeSpider container and it contains the tools for interacting with TreeSpider, note that some tools, like start rotating clockwise/anticlockwise and rotate once clockwise/anticlockwise, are only available for radial tree types or simply tree types that are circular in shape, example is the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "radialSpiderLeg" + }), " tree type."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "show_chart_head_border", + children: "show_chart_head_border" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "boolean" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "true" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Set this parameter to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }), " to not show border around the chart head, note setting this to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }), " will also remove the background color of the chart head when using the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "radialSpiderLeg" + }), " tree type."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "animation_rotation_speed", + children: "animation_rotation_speed" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "10" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Use this to set the animation rotation speed, it is in milliseconds, passing 1000 is going to be 1s, it works like the number passed to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "setInterval" + }), " that sets the duration, if it was set to, for example, 20 milliseconds, and during continuous rotation the rotation callback function will be called with a pause of 20 milliseconds, the smaller the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "animation_rotation_speed" + }), " the smoother and faster the rotation."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "animation_rotation_interval", + children: "animation_rotation_interval" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "1" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The degree increment of the rotation, default is 1, the provided number is going to be converted to degrees, for example if the provided number is 20 then the tree is going to be rotating 20 degrees per the interval set through the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "animation_rotation_speed" + }), " option, the smaller the interval the smoother the rotation."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "backgroundpattern", + children: "backgroundPattern" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "default" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The pattern is an SVG pattern that will be used as the background of the TreeSpider container, by default it is set to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "'default'" + }), " background pattern which is a dotted SVG background, the option can be one of the following."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.table, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.thead, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Patterns" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tbody, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "none" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "default" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "flux" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "quad" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "blurry" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "chaos" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "flurry" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "spiral" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "whirling" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "replicate" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "scribble" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "squiggly" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "gyrrate" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "leaves" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "spot" + }) + }) + })] + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "backgroundposition", + children: "backgroundPosition" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "undefined" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The CSS background position of the SVG background, to further customize the SVG background you can set this option to one of the following" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.table, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.thead, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Background positions" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tbody, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "bottom" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "center" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "inherit" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "initial" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "left" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "right" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "top" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "unset" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "${number}%" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "${number}px" + }) + }) + })] + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "backgroundsize", + children: "backgroundSize" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "undefined" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The size of the background svg pattern, for a further customization, you can set the size of the SVG background pattern, it is the CSS ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "background-size" + }), " property, it can be in any CSS units, like ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "px" + }), ", ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "%" + }), ", ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "pc" + }), ", ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "rem" + }), " and so on."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "custombackground", + children: "customBackground" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "undefined" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The SVG background to be used instead of the ones that comes with TreeSpider, if you would like to use a custom SVG background as the background pattern of the TreeSpider container you can set it with this option, set this option to the stringified SVG element to be used as the background pattern, then the above background options can be used to configure the provided custom background." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "head_linker_thumb_circle_radius", + children: "head_linker_thumb_circle_radius" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "8" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The radius/width of the linker thumb, ignore the confusing name of this option, the linker thumb is the SVG shape(s) that is/are at the edge(s) of chart heads which is/are used for hiding and unhiding chart children container and also for showing the link destination from a parent to child chart head, to change the size of the shape set this to a desired size." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "linker_thumb_icon_color", + children: "linker_thumb_icon_color" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "bright500" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The color of the linker thumb icon, that is, the icon inside the chart head link thumb, as described above, the inner thumb icon toggles between a plus icon and a times icon when the chart head child container hides and unhides, to customize the color you can set it to one of the following:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.table, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.thead, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Thumb icon colors" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tbody, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "brighter" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "bright500" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "bright100" + }) + }) + })] + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "linker_thumb_shape", + children: "linker_thumb_shape" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolCircle" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The shape of the linker thumb, the shape is a list of default D3 shapes, you can set it to the shape of your choice, the following is the of the supported shapes:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.table, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.thead, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Linker thumb shapes" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tbody, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolAsterisk" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolCircle" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolCross" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolDiamond" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolDiamond2" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolPlus" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolSquare" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolSquare2" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolStar" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolTriangle" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolTriangle2" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolWye" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolX" + }) + }) + })] + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "head_image_shape", + children: "head_image_shape" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolCircle" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The shape of the chart head image or the employee name initials container, just like the linker thumb, you can change the shape to the one you prefer, the shapes are default D3 shapes and the following is the list of shapes you can choose from:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.table, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.thead, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Head image shapes" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tbody, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolCircle" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolCross" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolDiamond" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolDiamond2" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolSquare" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolSquare2" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolStar" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolTriangle" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolTriangle2" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "symbolWye" + }) + }) + })] + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "chart_head_bg", + children: "chart_head_bg" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "#ffffff" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The chart head background color, useful in the scenerio where you want the background to match your website's color mode" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "auto_set_chart_head_bg", + children: "auto_set_chart_head_bg" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "boolean" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Set this option to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "true" + }), " if you want TreeSpider to automatically use the webpage's body tag as the background color of the chart heads."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "display_tree_in_step", + children: "display_tree_in_step" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "boolean" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["If this option is set to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "true" + }), ", TreeSpider will render the tree data in steps with the default or provided number of tree level steps, for instance, if the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "tree_level_step" + }), " option was set to 3, then the 3 level of the organization structure data will, by default on initialization, be displayed, excluding the root of the chart like, for example, ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "Root (CEO) -> Heads (level 1) -> Leads (level 2) -> Seniors (level 3)" + }), ", then if there are further levels below ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "level 3" + }), " the linker thumb will be added to each of the level 3 chart heads to render further levels with the same step meaning the further levels below level 3 will also be rendered in 3 levels down and that is how it is going to keep going until the last level, this feature is useful when the tree data is more than 1000, or in an organization with employees more than 1000, rendering tree data that is 1000 in length can take 2 to 4 seconds on a 16gb RAM computer (that's because that is the kind of computer I used to build the library) to render and in if a tree data of 5000 in length were to be rendered that would be the average time taken to render 1000 tree data length times 5, that would be around maximum of 10s which is going to be bad for user experience, setting this option to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "true" + }), " fixes this issue."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "auto_display_tree_in_step", + children: "auto_display_tree_in_step" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "boolean" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "true" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["This option, which is ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "true" + }), " by default, displays the tree data in steps if the tree data is more than 500 for optimization, better performance and good user experience, but you can set it ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "false" + }), ", though not recommended, if you are running TreeSpider on a computer with great capacity and that can render large tree data less than a second and will not affect the user experience."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "tree_level_step", + children: "tree_level_step" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "2" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The steps to display trees, on initialization the number of the provided steps will be rendered, when a tree whose children are hidden by default is expanded its children will also be rendered in the number of the provided step." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "pallet", + children: "pallet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "Object" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "{ h: 10, s: 0.5, l: 0.5, darker: 3, brighter: 0.8, bright100: 0.5, dark100: 0.5, gray: 50, gray85: 85 }" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This option is for tuning the colors of the items in the chart heads, the chart head has variants of colors, first the chart head gets assigned a color from the interpolated color, of the default or the provided colors, based on the index of its data in the tree data, then other colors are then gotten from the variant of the assigned color, and to customize these color variants you can set the value of the properties of the color pallet to match your need, explanation of the properties of the option is below:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.table, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.thead, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tr, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Property" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Type" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Description" + })] + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tbody, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tr, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "h" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "h stands for the hue in the hsl CSS color" + })] + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tr, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "s" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "s is the saturation in the hsl CSS color" + })] + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tr, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "l" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "l is the light in the hsl CSS color, use this to set the brightness of the color variants" + })] + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tr, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "darker" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "this property specifies how much darker should the darker variants be" + })] + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tr, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "brighter" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "This property specifies how much brighter the brighter variants should be, this brighter value is the direct variant of the original color" + })] + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tr, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "bright100" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "The brighter variant of the hsl tuned original color" + })] + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tr, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "dark100" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "The bright variant of the hsl tuned original color" + })] + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tr, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "gray" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.td, { + children: ["This is a gray color, generated with ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "d3.gray" + }), ", you can tune and set the level of the generated gray, the value ranges from ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "0-100" + }), " where 0 is the darkest gray and 100 is the lightest gray."] + })] + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tr, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: "gray85" + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.td, { + children: ["This property is just like ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "gray" + }), " except that it is set to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "85%" + }), " by default and you can reduce or increase it as you wish"] + })] + })] + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["See ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://d3js.org/d3-color", + children: "d3 color documentation" + }), " to learn more."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "tree_link_type", + children: "tree_link_type" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "undefined" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "TreeSpider uses d3 link curves, and some of the d3 curves are supported, the following are the d3 link curves that TreeSpider supports:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.table, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.thead, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.th, { + children: "Link types" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.tbody, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "curveBumpX" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "curveBumpY" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "curveBasisClosed" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "curveLinear" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "curveStep" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "curveStepAfter" + }) + }) + }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.tr, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.td, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "curveStepBefore" + }) + }) + })] + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "random_data_length", + children: "random_data_length" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "200" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The length of the random number, by default the length of the random generated fake data is 200 but you can increase or decrease it with this option." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "zoom_in_distance", + children: "zoom_in_distance" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "1.5" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The extent to be zoomed in when the zoom in button is clicked, this doesn't apply when zooming in with the mouse or touch event." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "zoom_out_distance", + children: "zoom_out_distance" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "number" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "0.5" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The extent to be zoomed out when the zoom out button is clicked, just like the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "zoom_in_distance" + }), " this option also doesn't apply to when zooming out with the mouse and touch event."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "verticalspace", + children: "verticalSpace" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "120px" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The vertical space between heads, set this to a lower or higher number to decrease or increase the distance between parent and children heads." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "font_link", + children: "font_link" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The link of the google font you would like TreeSpider to use, this can also be a path to a font available locally, but font CDN is highly recommended, and currently it is not guaranteed that other font CDNs except Google Fonts CDN are going to work well, but they can still be tried out." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "font_name", + children: "font_name" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Type: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.li, { + children: ["Default: ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "Lato" + }) + })] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["If you provide a custom font to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "font_link" + }), " option set this option to the name of the custom font that was provided to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "font_link" + }), " option, you can also set this option to the name of the font that has already been loaded in the application."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "interfaces", + children: "Interfaces" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The following are the TreeSpider typeScript interfaces." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "itreespidermain", + children: "ITreeSpiderMain" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This is the TreeSpider option typescript interface" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "{\n targetContainer: string;\n placeEl?: 'override' | 'start' | 'end' | {beforeEl: string};\n autoInitialize?: boolean;\n tree_data?: Array;\n color_range?: string[];\n tree_type?: 'default' | 'cellar' | 'goldenRod' | 'hSpider' | 'hSpiderWalk' | 'radialSpiderLeg' | 'vSpiderWalk';\n chart_head_type?: TChartHeadType;\n show_tools?: boolean;\n show_chart_head_border?: boolean;\n animation_rotation_speed?: number;\n animation_rotation_interval?: number;\n backgroundPattern?: 'none' | 'default' | 'flux' | 'quad' | 'blurry' | 'chaos' | \n 'flurry' | 'spiral' | 'whirling' | 'replicate' | 'scribble' | 'squiggly' | \n 'gyrrate' | 'leaves' | 'spot';\n backgroundPosition?: 'bottom' | 'center' | 'inherit' | 'initial' | 'left' | \n 'right' | 'top' | 'unset' | `${number}%` | `${number}px`;\n backgroundSize?: string;\n customBackground?: string;\n head_linker_thumb_circle_radius?: number;\n linker_thumb_icon_color?: TLinkerCircleColor;\n linker_thumb_shape?: TLinkerShape;\n head_image_shape?: THeadImageShape;\n chart_head_bg?: string;\n auto_set_chart_head_bg?: boolean;\n display_tree_in_step?: boolean;\n auto_display_tree_in_step?: boolean;\n tree_level_step?: number;\n pallet?: TColorPallet;\n tree_link_type?: TLinkType;\n random_data_length?: number;\n zoom_in_distance?: number;\n zoom_out_distance?: number;\n verticalSpace?: string;\n font_link?: string;\n font_name?: string;\n width?: string;\n height?: string;\n}\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "icharthead", + children: "IChartHead" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The tree data typescript interface" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "{\n id: string;\n name: string;\n role: string;\n location?: string;\n parentId?: string;\n stat?: number;\n image?: string;\n}\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "id3dataformat", + children: "ID3DataFormat" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["This is the d3 data format, it is just the same as the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "IChartHead" + }), " interface except that it has the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "children" + }), " property that is an array of ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "IChartHead" + }), "."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "ID3DataFormat extends IChartHead {\n children: IChartHead[];\n}\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "types", + children: "Types" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The following are the TreeSpider typeScript types" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "tcolorpallet", + children: "TColorPallet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This is the color pallet typescript type" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "{\n h: number;\n s: number;\n l: number;\n darker: number;\n brighter: number;\n bright100: number;\n dark100: number;\n gray: number;\n gray85: number;\n}\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "ttreetype", + children: "TTreeType" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This is the type of the TreeSpider tree types" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "'default' | 'cellar' | 'goldenRod' | 'hSpider' | 'hSpiderWalk' | 'radialSpiderLeg' | 'spiderlingsPack' | 'vSpiderWalk'\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "tchartheadtype", + children: "TChartHeadType" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The type of the chart head types" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "'default' | 'landscape' | 'rounded'\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "tlinktype", + children: "TLinkType" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The type of the link types" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "'curveBumpX' | 'curveBumpY' | 'curveBasisClosed' | 'curveLinear' | 'curveStep' | 'curveStepAfter' | 'curveStepBefore'\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "theadimageshape", + children: "THeadImageShape" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The type of the head image shapes" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "'symbolCircle' | 'symbolCross' | 'symbolDiamond' | 'symbolDiamond2' | 'symbolSquare' | 'symbolSquare2' | 'symbolStar' | 'symbolTriangle' | 'symbolTriangle2' | 'symbolWye'\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "tlinkercirclecolor", + children: "TLinkerCircleColor" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The type of the linker color" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "'brighter' | 'bright500' | 'bright100'\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "tlinkershape", + children: "TLinkerShape" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The type of the linker thumb shape" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "'symbolAsterisk' | 'symbolCircle' | 'symbolCross' | 'symbolDiamond' | 'symbolDiamond2' | 'symbolPlus' | 'symbolSquare' | 'symbolSquare2' | 'symbolStar' | 'symbolTriangle' | 'symbolTriangle2' | 'symbolWye' | 'symbolX'\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "teventtype", + children: "TEventType" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The type for the list of available events." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "'chart_head.create' | 'chart_head.expanded' | 'chart_head.collapsed' | 'zooming' | 'library.init'\n" + }) + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 9726: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ TestTSpyderTD: () => (/* binding */ TestTSpyderTD), +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8453); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6540); +/* harmony import */ var treespider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8777); + + +const frontMatter = { + sidebar_position: 4 +}; +const contentTitle = 'Tree Data'; +const metadata = { + "id": "tree-data", + "title": "Tree Data", + "description": "The TreeSpider tree data is straight forward, each employee has the required id and parentId properties, the parentId is for specifying the employee that an employee reports to, and the root employee or the overall head of the organization should not have the parentId property.", + "source": "@site/docs/tree-data.mdx", + "sourceDirName": ".", + "slug": "/tree-data", + "permalink": "/docs/tree-data", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/tree-data.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 4, + "frontMatter": { + "sidebar_position": 4 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "Basic Usage", + "permalink": "/docs/basic-usage" + }, + "next": { + "title": "Trees", + "permalink": "/docs/trees" + } +}; +const assets = { + +}; + + + + + +const TestTSpyderTD = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + const employee_data = [{ + id: "1", + role: "CEO", + name: "Lorem John" + }, { + id: "2", + role: "Chief of Engineering", + parentId: "1", + name: "Doe Ipsum" + }, { + id: "3", + role: "Lead Engineer", + parentId: "2", + name: "Walter Rock" + }, { + id: "4", + role: "Senior Engineer", + parentId: "3", + name: "Nick Rand" + }, { + id: "5", + role: "Junior Engineer no. 1", + parentId: "4", + name: "Bob Teest" + }, { + id: "6", + role: "Junior Engineer no. 2", + parentId: "4", + name: "Robb Derth" + }, { + id: "7", + role: "Junior Engineer no. 3", + parentId: "4", + name: "Pete Perth" + }]; + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#test-cont-td-1", + width: "100%", + tree_data: employee_data + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "test-cont-td-1" + }) + }); +}); +const toc = [{ + "value": "Simple representation", + "id": "simple-representation", + "level": 2 +}, { + "value": "Simple Data Example", + "id": "simple-data-example", + "level": 2 +}, { + "value": "Data definition", + "id": "data-definition", + "level": 2 +}, { + "value": "id", + "id": "id", + "level": 3 +}, { + "value": "parentId", + "id": "parentid", + "level": 3 +}, { + "value": "name", + "id": "name", + "level": 3 +}, { + "value": "role", + "id": "role", + "level": 3 +}, { + "value": "location", + "id": "location", + "level": 3 +}, { + "value": "image", + "id": "image", + "level": 3 +}]; +function _createMdxContent(props) { + const _components = { + code: "code", + em: "em", + h1: "h1", + h2: "h2", + h3: "h3", + header: "header", + li: "li", + p: "p", + pre: "pre", + strong: "strong", + ul: "ul", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "tree-data", + children: "Tree Data" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The TreeSpider tree data is straight forward, each employee has the required ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "id" + }), " and ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " properties, the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " is for specifying the employee that an employee reports to, and the root employee or the overall head of the organization should not have the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " property."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "simple-representation", + children: "Simple representation" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "In simple diagram, the data is like so" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-txt", + children: "CEO -> Chief of Engineering -> Lead Engineer -> Senior Engineer -> Junior Engineers\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["In the simple diagram the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "Junior Engineers" + }), " report to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "Senior Engineer" + }), " who reports to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "Lead Engineer" + }), " who then also reports to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "Chief of Engineering" + }), " who then finally reports to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "CEO" + }), ", the CEO doesn't reports to anyone except if there is a board then in that case the root of the structure is going to be the organization's name then the board of directors then the CEO, but in the case of the simple diagram the CEO is the root of the structure, so in the object representation, all the employees except the CEO will have a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " property pointing to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "id" + }), " of the employee they report to, for example the next section is the object representation of the above simple example diagram."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "simple-data-example", + children: "Simple Data Example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "[\n {\n id: \"1\",\n role: \"CEO\"\n },\n {\n id: \"2\",\n role: \"Chief of Engineering\",\n parentId: \"1\"\n },\n {\n id: \"3\",\n role: \"Lead Engineer\",\n parentId: \"2\"\n },\n {\n id: \"4\",\n role: \"Senior Engineer\",\n parentId: \"3\"\n },\n {\n id: \"5\",\n role: \"Junior Engineer no. 1\",\n parentId: \"4\"\n },\n {\n id: \"6\",\n role: \"Junior Engineer no. 2\",\n parentId: \"4\"\n },\n {\n id: \"7\",\n role: \"Junior Engineer no. 3\",\n parentId: \"4\"\n },\n\n]\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["In the above data, notice the CEO doesn't have a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " and the rest of the employees each have the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " which points to the id of the employee they report to, and also notice that all the junior engineers have a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " set to the id of the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "Senior Engineer" + }), " which they report to, this is a valid data that can be passed to TreeSpider, then TreeSpider will do the hard work of sorting, organizing and displaying the data with your choice of selected tree type."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Now passing the data, still using the example data above but adding ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "name" + }), " property to each employee"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "// ...\n\nconst employee_data = [\n {\n id: \"1\",\n role: \"CEO\",\n name: \"Lorem John\"\n },\n {\n id: \"2\",\n role: \"Chief of Engineering\",\n parentId: \"1\",\n name: \"Doe Ipsum\"\n },\n {\n id: \"3\",\n role: \"Lead Engineer\",\n parentId: \"2\",\n name: \"Walter Rock\"\n },\n {\n id: \"4\",\n role: \"Senior Engineer\",\n parentId: \"3\",\n name: \"Nick Rand\"\n },\n {\n id: \"5\",\n role: \"Junior Engineer no. 1\",\n parentId: \"4\",\n name: \"Bob Teest\"\n },\n {\n id: \"6\",\n role: \"Junior Engineer no. 2\",\n parentId: \"4\",\n name: \"Robb Derth\"\n },\n {\n id: \"7\",\n role: \"Junior Engineer no. 3\",\n parentId: \"4\",\n name: \"Pete Perth\"\n },\n\n]\n\nconst instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n tree_data: employee_data\n})\n\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The above data will be rendered like the working example below, zoom in and out and pan to interact" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TestTSpyderTD, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "data-definition", + children: "Data definition" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "More about the data and other properties that can be provided to the employee data, the data structure is as below:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "{\n id: string; \n parentId: string; \n name: string; \n role?: string; \n location?: string;\n image?: string;\n}\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Technically, only the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "id" + }), " is required, but the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " and ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "name" + }), " are also required for the data to make sense, explanation of each property below."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "id", + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "id" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "required" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "id" + }), " property is required and it is a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "string" + }), " that indicates the index of the data, if the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "id" + }), " of an object in the data array is missing, it can cause recursion issue and which will affect the rendering operation of the data, the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "id" + }), " is not compulsory to be ordered according to employee hierarchy, in fact the root of the organization can be ordered last in the array, it doesn't affect the data rendering."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "parentid", + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "required" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " is required to be added to each employee except the root/head of the organization, it points to the department head to which the employee reports, and it is required that only one object/data should not have a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " to indicate it as the root/head of the organization, if more than one data has a missing ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " it can give cause irregularities in the rendering or even an error."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "name", + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "name" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "required" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["The ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "name" + }), " is also on the same level of requirement as the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "parentId" + }), " except it indicate an employee instead of pointing to the lead which the employee reports too, as not everyone has first and last name, so at least a name must be provided either first or last, and if more than 2 names was provided in the name it would assume the first name comes first and the last name comes last and it will create the initials from them and also only display the first and last name, and in the case of only one name it will only render the only name passed and render the initial of the passed name."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "role", + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "role" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "Optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This is not required but neccessary to indicate the role, position, department or job title of the employee, set this role to the department name if the employee is a lead of their department." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "location", + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "location" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "Optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This is also not required but necessary to show the location of the employee, that is, the city and country of the employee." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "image", + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "image" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.em, { + children: "Optional" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The picture of the employee, the link/url to the employee's picture, if an employee doesn't have a picture leave the image field in the employee's data as undefined, TreeSpider in that case will automatically use the employee's initials instead." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The data to be provided to TreeSpider is going to be an array of the object described above, for example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "[\n { // taking this as the root, note this object is missing the parentId property\n id: string; \n name: string; \n role: string; \n location: string;\n image: string;\n },\n {\n id: string; \n parentId: string; \n name: string; \n role: string; \n location: string;\n image: string;\n },\n {\n id: string; \n parentId: string; \n name: string; \n role: string; \n location: string;\n image: string;\n }\n]\n" + }) + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 1715: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ TSpydExample1: () => (/* binding */ TSpydExample1), +/* harmony export */ TSpydExample2: () => (/* binding */ TSpydExample2), +/* harmony export */ TSpydExample3: () => (/* binding */ TSpydExample3), +/* harmony export */ TSpydExample4: () => (/* binding */ TSpydExample4), +/* harmony export */ TSpydExample5: () => (/* binding */ TSpydExample5), +/* harmony export */ TSpydExample6: () => (/* binding */ TSpydExample6), +/* harmony export */ TSpydExample7: () => (/* binding */ TSpydExample7), +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8453); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6540); +/* harmony import */ var treespider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8777); + + +const frontMatter = { + sidebar_position: 5 +}; +const contentTitle = 'Trees'; +const metadata = { + "id": "trees", + "title": "Trees", + "description": "These are the different tree choices that can be chosen from, they will be caterized into radial and non-radial trees:", + "source": "@site/docs/trees.mdx", + "sourceDirName": ".", + "slug": "/trees", + "permalink": "/docs/trees", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/docs/trees.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 5, + "frontMatter": { + "sidebar_position": 5 + }, + "sidebar": "tutorialSidebar", + "previous": { + "title": "Tree Data", + "permalink": "/docs/tree-data" + }, + "next": { + "title": "Chart Heads", + "permalink": "/docs/chart-heads" + } +}; +const assets = { + +}; + + + + + +const TSpydExample1 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-tr-1", + random_data_length: 50, + width: '100%', + tree_type: "goldenRod" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-tr-1", + style: { + marginBottom: 25 + } + }); +}); +const TSpydExample2 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-tr-2", + random_data_length: 50, + width: '100%', + tree_type: "radialSpiderLeg" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-tr-2", + style: { + marginBottom: 25 + } + }); +}); +const TSpydExample3 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-tr-3", + random_data_length: 50, + width: '100%', + tree_type: "default" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-tr-3", + style: { + marginBottom: 25 + } + }); +}); +const TSpydExample4 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-tr-4", + random_data_length: 50, + width: '100%', + tree_type: "cellar" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-tr-4", + style: { + marginBottom: 25 + } + }); +}); +const TSpydExample5 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-tr-5", + random_data_length: 50, + width: '100%', + tree_type: "hSpider" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-tr-5", + style: { + marginBottom: 25 + } + }); +}); +const TSpydExample6 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-tr-6", + random_data_length: 50, + width: '100%', + tree_type: "hSpiderWalk" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-tr-6", + style: { + marginBottom: 25 + } + }); +}); +const TSpydExample7 = react__WEBPACK_IMPORTED_MODULE_1__.memo(() => { + react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect(() => { + const inst1 = new treespider__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A({ + targetContainer: "#spyd-tr-7", + random_data_length: 50, + width: '100%', + tree_type: "vSpiderWalk" + }); + }, []); + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { + id: "spyd-tr-7", + style: { + marginBottom: 25 + } + }); +}); +const toc = [{ + "value": "Radial trees", + "id": "radial-trees", + "level": 2 +}, { + "value": "goldenRod", + "id": "goldenrod", + "level": 3 +}, { + "value": "radialSpiderLeg", + "id": "radialspiderleg", + "level": 3 +}, { + "value": "Non-radial trees", + "id": "non-radial-trees", + "level": 2 +}, { + "value": "default", + "id": "default", + "level": 3 +}, { + "value": "cellar", + "id": "cellar", + "level": 3 +}, { + "value": "hSpider", + "id": "hspider", + "level": 3 +}, { + "value": "hSpiderWalk", + "id": "hspiderwalk", + "level": 3 +}, { + "value": "vSpiderWalk", + "id": "vspiderwalk", + "level": 3 +}]; +function _createMdxContent(props) { + const _components = { + code: "code", + h1: "h1", + h2: "h2", + h3: "h3", + header: "header", + p: "p", + pre: "pre", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.header, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h1, { + id: "trees", + children: "Trees" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "These are the different tree choices that can be chosen from, they will be caterized into radial and non-radial trees:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "radial-trees", + children: "Radial trees" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The following are the radial or circular trees" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "goldenrod", + children: "goldenRod" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The goldenRod tree type is one of the radial tree types, example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n tree_type: \"goldenRod\"\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "if you run this it would look something like this:" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample1, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "radialspiderleg", + children: "radialSpiderLeg" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The radialSpiderLeg tree type is the second radial type tree types, example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n tree_type: \"radialSpiderLeg\"\n})\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "if you run this it would look something like this:" + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample2, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h2, { + id: "non-radial-trees", + children: "Non-radial trees" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The following are the non-radial trees types." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "default", + children: "default" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This is the default tree type, and it is also useful in but not limited to organizations with hierarchical type structure, example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n tree_type: \"default\"\n})\n" + }) + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample3, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "cellar", + children: "cellar" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The cellar tree structure is also useful in but not limited to organizations with hierarchical type structure, example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n tree_type: \"cellar\"\n})\n" + }) + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample4, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "hspider", + children: "hSpider" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The hSpider tree is an horizontal tree, example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n tree_type: \"hSpider\"\n})\n" + }) + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample5, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "hspiderwalk", + children: "hSpiderWalk" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The hSpiderWalk tree is an horizontal tree just like the hSpider but it is in the shape of the letter \"H\", example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n tree_type: \"hSpiderWalk\"\n})\n" + }) + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample6, {}), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.h3, { + id: "vspiderwalk", + children: "vSpiderWalk" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The vSpiderWalk tree is a verticaal tree just like the hSpiderWalk but it is vertical, example" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-ts", + children: "const instance1 = new TreeSpider({\n targetContainer: \"#container-1\",\n tree_type: \"vSpiderWalk\"\n})\n" + }) + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TSpydExample7, {})] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 4014: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + slug: 'first-blog-post', + title: 'First Blog Post', + authors: [ + 'slorber', + 'yangshun' + ], + tags: [ + 'hola', + 'docusaurus' + ] +}; +const contentTitle = undefined; +const metadata = { + "permalink": "/blog/first-blog-post", + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2019-05-28-first-blog-post.md", + "source": "@site/blog/2019-05-28-first-blog-post.md", + "title": "First Blog Post", + "description": "Lorem ipsum dolor sit amet...", + "date": "2019-05-28T00:00:00.000Z", + "tags": [ + { + "inline": false, + "label": "Hola", + "permalink": "/blog/tags/hola", + "description": "Hola tag description" + }, + { + "inline": false, + "label": "Docusaurus", + "permalink": "/blog/tags/docusaurus", + "description": "Docusaurus tag description" + } + ], + "readingTime": 0.135, + "hasTruncateMarker": true, + "authors": [ + { + "name": "Sébastien Lorber", + "title": "Docusaurus maintainer", + "url": "https://sebastienlorber.com", + "page": { + "permalink": "/blog/authors/all-sebastien-lorber-articles" + }, + "socials": { + "x": "https://x.com/sebastienlorber", + "linkedin": "https://www.linkedin.com/in/sebastienlorber/", + "github": "https://github.com/slorber", + "newsletter": "https://thisweekinreact.com" + }, + "imageURL": "https://github.com/slorber.png", + "key": "slorber" + }, + { + "name": "Yangshun Tay", + "title": "Front End Engineer @ Facebook", + "url": "https://github.com/yangshun", + "page": { + "permalink": "/blog/authors/yangshun" + }, + "socials": { + "x": "https://x.com/yangshunz", + "github": "https://github.com/yangshun" + }, + "imageURL": "https://github.com/yangshun.png", + "key": "yangshun" + } + ], + "frontMatter": { + "slug": "first-blog-post", + "title": "First Blog Post", + "authors": [ + "slorber", + "yangshun" + ], + "tags": [ + "hola", + "docusaurus" + ] + }, + "unlisted": false, + "prevItem": { + "title": "Long Blog Post", + "permalink": "/blog/long-blog-post" + } +}; +const assets = { +"authorsImageUrls": [undefined, undefined], +}; + + + +const toc = []; +function _createMdxContent(props) { + const _components = { + p: "p", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet..." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 5026: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + slug: 'first-blog-post', + title: 'First Blog Post', + authors: [ + 'slorber', + 'yangshun' + ], + tags: [ + 'hola', + 'docusaurus' + ] +}; +const contentTitle = undefined; +const metadata = { + "permalink": "/blog/first-blog-post", + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2019-05-28-first-blog-post.md", + "source": "@site/blog/2019-05-28-first-blog-post.md", + "title": "First Blog Post", + "description": "Lorem ipsum dolor sit amet...", + "date": "2019-05-28T00:00:00.000Z", + "tags": [ + { + "inline": false, + "label": "Hola", + "permalink": "/blog/tags/hola", + "description": "Hola tag description" + }, + { + "inline": false, + "label": "Docusaurus", + "permalink": "/blog/tags/docusaurus", + "description": "Docusaurus tag description" + } + ], + "readingTime": 0.135, + "hasTruncateMarker": true, + "authors": [ + { + "name": "Sébastien Lorber", + "title": "Docusaurus maintainer", + "url": "https://sebastienlorber.com", + "page": { + "permalink": "/blog/authors/all-sebastien-lorber-articles" + }, + "socials": { + "x": "https://x.com/sebastienlorber", + "linkedin": "https://www.linkedin.com/in/sebastienlorber/", + "github": "https://github.com/slorber", + "newsletter": "https://thisweekinreact.com" + }, + "imageURL": "https://github.com/slorber.png", + "key": "slorber" + }, + { + "name": "Yangshun Tay", + "title": "Front End Engineer @ Facebook", + "url": "https://github.com/yangshun", + "page": { + "permalink": "/blog/authors/yangshun" + }, + "socials": { + "x": "https://x.com/yangshunz", + "github": "https://github.com/yangshun" + }, + "imageURL": "https://github.com/yangshun.png", + "key": "yangshun" + } + ], + "frontMatter": { + "slug": "first-blog-post", + "title": "First Blog Post", + "authors": [ + "slorber", + "yangshun" + ], + "tags": [ + "hola", + "docusaurus" + ] + }, + "unlisted": false, + "prevItem": { + "title": "Long Blog Post", + "permalink": "/blog/long-blog-post" + } +}; +const assets = { +"authorsImageUrls": [undefined, undefined], +}; + + + +const toc = []; +function _createMdxContent(props) { + const _components = { + p: "p", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet..." + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 9581: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + slug: 'long-blog-post', + title: 'Long Blog Post', + authors: 'yangshun', + tags: [ + 'hello', + 'docusaurus' + ] +}; +const contentTitle = undefined; +const metadata = { + "permalink": "/blog/long-blog-post", + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2019-05-29-long-blog-post.md", + "source": "@site/blog/2019-05-29-long-blog-post.md", + "title": "Long Blog Post", + "description": "This is the summary of a very long blog post,", + "date": "2019-05-29T00:00:00.000Z", + "tags": [ + { + "inline": false, + "label": "Hello", + "permalink": "/blog/tags/hello", + "description": "Hello tag description" + }, + { + "inline": false, + "label": "Docusaurus", + "permalink": "/blog/tags/docusaurus", + "description": "Docusaurus tag description" + } + ], + "readingTime": 2.06, + "hasTruncateMarker": true, + "authors": [ + { + "name": "Yangshun Tay", + "title": "Front End Engineer @ Facebook", + "url": "https://github.com/yangshun", + "page": { + "permalink": "/blog/authors/yangshun" + }, + "socials": { + "x": "https://x.com/yangshunz", + "github": "https://github.com/yangshun" + }, + "imageURL": "https://github.com/yangshun.png", + "key": "yangshun" + } + ], + "frontMatter": { + "slug": "long-blog-post", + "title": "Long Blog Post", + "authors": "yangshun", + "tags": [ + "hello", + "docusaurus" + ] + }, + "unlisted": false, + "prevItem": { + "title": "MDX Blog Post", + "permalink": "/blog/mdx-blog-post" + }, + "nextItem": { + "title": "First Blog Post", + "permalink": "/blog/first-blog-post" + } +}; +const assets = { +"authorsImageUrls": [undefined], +}; + + + +const toc = []; +function _createMdxContent(props) { + const _components = { + code: "code", + p: "p", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This is the summary of a very long blog post," + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Use a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "" + }), " comment to limit blog post size in the list view."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet" + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 1615: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + slug: 'long-blog-post', + title: 'Long Blog Post', + authors: 'yangshun', + tags: [ + 'hello', + 'docusaurus' + ] +}; +const contentTitle = undefined; +const metadata = { + "permalink": "/blog/long-blog-post", + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2019-05-29-long-blog-post.md", + "source": "@site/blog/2019-05-29-long-blog-post.md", + "title": "Long Blog Post", + "description": "This is the summary of a very long blog post,", + "date": "2019-05-29T00:00:00.000Z", + "tags": [ + { + "inline": false, + "label": "Hello", + "permalink": "/blog/tags/hello", + "description": "Hello tag description" + }, + { + "inline": false, + "label": "Docusaurus", + "permalink": "/blog/tags/docusaurus", + "description": "Docusaurus tag description" + } + ], + "readingTime": 2.06, + "hasTruncateMarker": true, + "authors": [ + { + "name": "Yangshun Tay", + "title": "Front End Engineer @ Facebook", + "url": "https://github.com/yangshun", + "page": { + "permalink": "/blog/authors/yangshun" + }, + "socials": { + "x": "https://x.com/yangshunz", + "github": "https://github.com/yangshun" + }, + "imageURL": "https://github.com/yangshun.png", + "key": "yangshun" + } + ], + "frontMatter": { + "slug": "long-blog-post", + "title": "Long Blog Post", + "authors": "yangshun", + "tags": [ + "hello", + "docusaurus" + ] + }, + "unlisted": false, + "prevItem": { + "title": "MDX Blog Post", + "permalink": "/blog/mdx-blog-post" + }, + "nextItem": { + "title": "First Blog Post", + "permalink": "/blog/first-blog-post" + } +}; +const assets = { +"authorsImageUrls": [undefined], +}; + + + +const toc = []; +function _createMdxContent(props) { + const _components = { + code: "code", + p: "p", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "This is the summary of a very long blog post," + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Use a ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "" + }), " comment to limit blog post size in the list view."] + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 1180: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + slug: 'mdx-blog-post', + title: 'MDX Blog Post', + authors: [ + 'slorber' + ], + tags: [ + 'docusaurus' + ] +}; +const contentTitle = undefined; +const metadata = { + "permalink": "/blog/mdx-blog-post", + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2021-08-01-mdx-blog-post.mdx", + "source": "@site/blog/2021-08-01-mdx-blog-post.mdx", + "title": "MDX Blog Post", + "description": "Blog posts support Docusaurus Markdown features, such as MDX.", + "date": "2021-08-01T00:00:00.000Z", + "tags": [ + { + "inline": false, + "label": "Docusaurus", + "permalink": "/blog/tags/docusaurus", + "description": "Docusaurus tag description" + } + ], + "readingTime": 0.235, + "hasTruncateMarker": true, + "authors": [ + { + "name": "Sébastien Lorber", + "title": "Docusaurus maintainer", + "url": "https://sebastienlorber.com", + "page": { + "permalink": "/blog/authors/all-sebastien-lorber-articles" + }, + "socials": { + "x": "https://x.com/sebastienlorber", + "linkedin": "https://www.linkedin.com/in/sebastienlorber/", + "github": "https://github.com/slorber", + "newsletter": "https://thisweekinreact.com" + }, + "imageURL": "https://github.com/slorber.png", + "key": "slorber" + } + ], + "frontMatter": { + "slug": "mdx-blog-post", + "title": "MDX Blog Post", + "authors": [ + "slorber" + ], + "tags": [ + "docusaurus" + ] + }, + "unlisted": false, + "prevItem": { + "title": "Welcome", + "permalink": "/blog/welcome" + }, + "nextItem": { + "title": "Long Blog Post", + "permalink": "/blog/long-blog-post" + } +}; +const assets = { +"authorsImageUrls": [undefined], +}; + +/*truncate*/ + + +const toc = []; +function _createMdxContent(props) { + const _components = { + a: "a", + admonition: "admonition", + code: "code", + p: "p", + pre: "pre", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Blog posts support ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://docusaurus.io/docs/markdown-features", + children: "Docusaurus Markdown features" + }), ", such as ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://mdxjs.com/", + children: "MDX" + }), "."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.admonition, { + type: "tip", + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Use the power of React to create interactive blog posts." + }) + }), "\n", "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "For example, use JSX to create an interactive button:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.pre, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + className: "language-js", + children: "\n" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", { + onClick: () => alert('button clicked!'), + children: "Click me!" + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 5512: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + slug: 'mdx-blog-post', + title: 'MDX Blog Post', + authors: [ + 'slorber' + ], + tags: [ + 'docusaurus' + ] +}; +const contentTitle = undefined; +const metadata = { + "permalink": "/blog/mdx-blog-post", + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2021-08-01-mdx-blog-post.mdx", + "source": "@site/blog/2021-08-01-mdx-blog-post.mdx", + "title": "MDX Blog Post", + "description": "Blog posts support Docusaurus Markdown features, such as MDX.", + "date": "2021-08-01T00:00:00.000Z", + "tags": [ + { + "inline": false, + "label": "Docusaurus", + "permalink": "/blog/tags/docusaurus", + "description": "Docusaurus tag description" + } + ], + "readingTime": 0.235, + "hasTruncateMarker": true, + "authors": [ + { + "name": "Sébastien Lorber", + "title": "Docusaurus maintainer", + "url": "https://sebastienlorber.com", + "page": { + "permalink": "/blog/authors/all-sebastien-lorber-articles" + }, + "socials": { + "x": "https://x.com/sebastienlorber", + "linkedin": "https://www.linkedin.com/in/sebastienlorber/", + "github": "https://github.com/slorber", + "newsletter": "https://thisweekinreact.com" + }, + "imageURL": "https://github.com/slorber.png", + "key": "slorber" + } + ], + "frontMatter": { + "slug": "mdx-blog-post", + "title": "MDX Blog Post", + "authors": [ + "slorber" + ], + "tags": [ + "docusaurus" + ] + }, + "unlisted": false, + "prevItem": { + "title": "Welcome", + "permalink": "/blog/welcome" + }, + "nextItem": { + "title": "Long Blog Post", + "permalink": "/blog/long-blog-post" + } +}; +const assets = { +"authorsImageUrls": [undefined], +}; + + + +const toc = []; +function _createMdxContent(props) { + const _components = { + a: "a", + admonition: "admonition", + p: "p", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Blog posts support ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://docusaurus.io/docs/markdown-features", + children: "Docusaurus Markdown features" + }), ", such as ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://mdxjs.com/", + children: "MDX" + }), "."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.admonition, { + type: "tip", + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Use the power of React to create interactive blog posts." + }) + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 7447: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + slug: 'welcome', + title: 'Welcome', + authors: [ + 'slorber', + 'yangshun' + ], + tags: [ + 'facebook', + 'hello', + 'docusaurus' + ] +}; +const contentTitle = undefined; +const metadata = { + "permalink": "/blog/welcome", + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2021-08-26-welcome/index.md", + "source": "@site/blog/2021-08-26-welcome/index.md", + "title": "Welcome", + "description": "Docusaurus blogging features are powered by the blog plugin.", + "date": "2021-08-26T00:00:00.000Z", + "tags": [ + { + "inline": false, + "label": "Facebook", + "permalink": "/blog/tags/facebook", + "description": "Facebook tag description" + }, + { + "inline": false, + "label": "Hello", + "permalink": "/blog/tags/hello", + "description": "Hello tag description" + }, + { + "inline": false, + "label": "Docusaurus", + "permalink": "/blog/tags/docusaurus", + "description": "Docusaurus tag description" + } + ], + "readingTime": 0.465, + "hasTruncateMarker": true, + "authors": [ + { + "name": "Sébastien Lorber", + "title": "Docusaurus maintainer", + "url": "https://sebastienlorber.com", + "page": { + "permalink": "/blog/authors/all-sebastien-lorber-articles" + }, + "socials": { + "x": "https://x.com/sebastienlorber", + "linkedin": "https://www.linkedin.com/in/sebastienlorber/", + "github": "https://github.com/slorber", + "newsletter": "https://thisweekinreact.com" + }, + "imageURL": "https://github.com/slorber.png", + "key": "slorber" + }, + { + "name": "Yangshun Tay", + "title": "Front End Engineer @ Facebook", + "url": "https://github.com/yangshun", + "page": { + "permalink": "/blog/authors/yangshun" + }, + "socials": { + "x": "https://x.com/yangshunz", + "github": "https://github.com/yangshun" + }, + "imageURL": "https://github.com/yangshun.png", + "key": "yangshun" + } + ], + "frontMatter": { + "slug": "welcome", + "title": "Welcome", + "authors": [ + "slorber", + "yangshun" + ], + "tags": [ + "facebook", + "hello", + "docusaurus" + ] + }, + "unlisted": false, + "nextItem": { + "title": "MDX Blog Post", + "permalink": "/blog/mdx-blog-post" + } +}; +const assets = { +"authorsImageUrls": [undefined, undefined], +}; + + + +const toc = []; +function _createMdxContent(props) { + const _components = { + a: "a", + code: "code", + img: "img", + li: "li", + p: "p", + strong: "strong", + ul: "ul", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://docusaurus.io/docs/blog", + children: "Docusaurus blogging features" + }), " are powered by the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog", + children: "blog plugin" + }), "."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Here are a few tips you might find useful." + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Simply add Markdown files (or folders) to the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "blog" + }), " directory."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: ["Regular blog authors can be added to ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "authors.yml" + }), "."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The blog post date can be extracted from filenames, such as:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.ul, { + children: ["\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "2019-05-30-welcome.md" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.li, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "2019-05-30-welcome/index.md" + }) + }), "\n"] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "A blog post folder can be convenient to co-locate blog post images:" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.img, { + alt: "Docusaurus Plushie", + src: (__webpack_require__(1782)/* ["default"] */ .A) + "", + width: "1500", + height: "500" + }) + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "The blog supports tags as well!" + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.strong, { + children: "And if you don't want a blog" + }), ": just delete this directory, and use ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.code, { + children: "blog: false" + }), " in your Docusaurus config."] + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 4137: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ assets: () => (/* binding */ assets), +/* harmony export */ contentTitle: () => (/* binding */ contentTitle), +/* harmony export */ "default": () => (/* binding */ MDXContent), +/* harmony export */ frontMatter: () => (/* binding */ frontMatter), +/* harmony export */ metadata: () => (/* binding */ metadata), +/* harmony export */ toc: () => (/* binding */ toc) +/* harmony export */ }); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4848); +/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8453); + + +const frontMatter = { + slug: 'welcome', + title: 'Welcome', + authors: [ + 'slorber', + 'yangshun' + ], + tags: [ + 'facebook', + 'hello', + 'docusaurus' + ] +}; +const contentTitle = undefined; +const metadata = { + "permalink": "/blog/welcome", + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/blog/2021-08-26-welcome/index.md", + "source": "@site/blog/2021-08-26-welcome/index.md", + "title": "Welcome", + "description": "Docusaurus blogging features are powered by the blog plugin.", + "date": "2021-08-26T00:00:00.000Z", + "tags": [ + { + "inline": false, + "label": "Facebook", + "permalink": "/blog/tags/facebook", + "description": "Facebook tag description" + }, + { + "inline": false, + "label": "Hello", + "permalink": "/blog/tags/hello", + "description": "Hello tag description" + }, + { + "inline": false, + "label": "Docusaurus", + "permalink": "/blog/tags/docusaurus", + "description": "Docusaurus tag description" + } + ], + "readingTime": 0.465, + "hasTruncateMarker": true, + "authors": [ + { + "name": "Sébastien Lorber", + "title": "Docusaurus maintainer", + "url": "https://sebastienlorber.com", + "page": { + "permalink": "/blog/authors/all-sebastien-lorber-articles" + }, + "socials": { + "x": "https://x.com/sebastienlorber", + "linkedin": "https://www.linkedin.com/in/sebastienlorber/", + "github": "https://github.com/slorber", + "newsletter": "https://thisweekinreact.com" + }, + "imageURL": "https://github.com/slorber.png", + "key": "slorber" + }, + { + "name": "Yangshun Tay", + "title": "Front End Engineer @ Facebook", + "url": "https://github.com/yangshun", + "page": { + "permalink": "/blog/authors/yangshun" + }, + "socials": { + "x": "https://x.com/yangshunz", + "github": "https://github.com/yangshun" + }, + "imageURL": "https://github.com/yangshun.png", + "key": "yangshun" + } + ], + "frontMatter": { + "slug": "welcome", + "title": "Welcome", + "authors": [ + "slorber", + "yangshun" + ], + "tags": [ + "facebook", + "hello", + "docusaurus" + ] + }, + "unlisted": false, + "nextItem": { + "title": "MDX Blog Post", + "permalink": "/blog/mdx-blog-post" + } +}; +const assets = { +"authorsImageUrls": [undefined, undefined], +}; + + + +const toc = []; +function _createMdxContent(props) { + const _components = { + a: "a", + p: "p", + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components.p, { + children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://docusaurus.io/docs/blog", + children: "Docusaurus blogging features" + }), " are powered by the ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.a, { + href: "https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog", + children: "blog plugin" + }), "."] + }), "\n", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components.p, { + children: "Here are a few tips you might find useful." + })] + }); +} +function MDXContent(props = {}) { + const {wrapper: MDXLayout} = { + ...(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .useMDXComponents */ .R)(), + ...props.components + }; + return MDXLayout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MDXLayout, { + ...props, + children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_createMdxContent, { + ...props + }) + }) : _createMdxContent(props); +} + + + +/***/ }), + +/***/ 1596: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ routes) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +;// ./node_modules/@babel/runtime/helpers/esm/typeof.js +function _typeof(o) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, _typeof(o); +} + +;// ./node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js + +function _getRequireWildcardCache(e) { + if ("function" != typeof WeakMap) return null; + var r = new WeakMap(), + t = new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { + return e ? t : r; + })(e); +} +function _interopRequireWildcard(e, r) { + if (!r && e && e.__esModule) return e; + if (null === e || "object" != _typeof(e) && "function" != typeof e) return { + "default": e + }; + var t = _getRequireWildcardCache(r); + if (t && t.has(e)) return t.get(e); + var n = { + __proto__: null + }, + a = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { + var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; + i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; + } + return n["default"] = e, t && t.set(e, n), n; +} + +// EXTERNAL MODULE: ./node_modules/react-loadable/lib/index.js +var lib = __webpack_require__(3259); +var lib_default = /*#__PURE__*/__webpack_require__.n(lib); +;// ./.docusaurus/routesChunkNames.json +const routesChunkNames_namespaceObject = /*#__PURE__*/JSON.parse('{"/blog-b2f":{"__comp":"a6aa9e1f","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"__props":"c15d9823"},"/blog/archive-182":{"__comp":"9e4087bc","__context":{"plugin":"36994c47"},"__props":"f81c1134"},"/blog/authors-0b7":{"__comp":"621db11d","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","__props":"ef8b811a"},"/blog/authors/all-sebastien-lorber-articles-4a1":{"__comp":"33fc5bb8","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"925b3f96"}],"sidebar":"814f3328","__props":"c9c9bef8"},"/blog/authors/yangshun-a68":{"__comp":"33fc5bb8","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"items":[{"content":"7661071f"},{"content":"8717b14a"},{"content":"925b3f96"}],"sidebar":"814f3328","__props":"1dea6ca3"},"/blog/first-blog-post-89a":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"e273c56f"},"/blog/long-blog-post-9ad":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"73664a40"},"/blog/mdx-blog-post-e9f":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"59362658"},"/blog/tags-287":{"__comp":"01a85c17","__context":{"plugin":"36994c47"},"sidebar":"814f3328","__props":"3a2db09e"},"/blog/tags/docusaurus-704":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"__props":"3217192f"},"/blog/tags/facebook-858":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"}],"__props":"e5aefb32"},"/blog/tags/hello-299":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"8717b14a"}],"__props":"f82cd581"},"/blog/tags/hola-00d":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"925b3f96"}],"__props":"5e90a9b3"},"/blog/welcome-d2b":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"d9f32620"},"/examples-2c4":{"__comp":"1f391b9e","__context":{"plugin":"a7456010"},"content":"730f34f0"},"/docs-937":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/docs-b26":{"__comp":"a7bd4aaa","__props":"0058b4c6"},"/docs-e7c":{"__comp":"a94703ab"},"/docs/basic-usage-d84":{"__comp":"17896441","content":"1ff56eb1"},"/docs/category/frameworks-080":{"__comp":"14eb3368","__props":"72791873"},"/docs/chart-heads-5f9":{"__comp":"17896441","content":"c428a0e3"},"/docs/colors-425":{"__comp":"17896441","content":"573d089f"},"/docs/contributing-2a4":{"__comp":"17896441","content":"72a427b3"},"/docs/events-b92":{"__comp":"17896441","content":"3ee9ac3f"},"/docs/frameworks/react-js-cbb":{"__comp":"17896441","content":"c5727223"},"/docs/installation-08e":{"__comp":"17896441","content":"fa4d91bf"},"/docs/intro-89a":{"__comp":"17896441","content":"f8409a7e"},"/docs/methods-8ba":{"__comp":"17896441","content":"c95e31df"},"/docs/options-e49":{"__comp":"17896441","content":"0f2c6659"},"/docs/tree-data-959":{"__comp":"17896441","content":"86752f55"},"/docs/trees-0b7":{"__comp":"17896441","content":"9dcc72b5"},"/-e5f":{"__comp":"1df93b7f","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"}}'); +;// ./.docusaurus/registry.js +/* harmony default export */ const registry = ({"0058b4c6":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(6164))),"@generated/docusaurus-plugin-content-docs/default/p/docs-175.json",/*require.resolve*/(6164)],"01a85c17":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(5068))),"@theme/BlogTagsListPage",/*require.resolve*/(5068)],"0f2c6659":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(4269))),"@site/docs/options.mdx",/*require.resolve*/(4269)],"14eb3368":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(8367))),"@theme/DocCategoryGeneratedIndexPage",/*require.resolve*/(8367)],"17896441":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(1123))),"@theme/DocItem",/*require.resolve*/(1123)],"1dea6ca3":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(6067))),"@generated/docusaurus-plugin-content-blog/default/p/blog-authors-yangshun-af2.json",/*require.resolve*/(6067)],"1df93b7f":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(8431))),"@site/src/pages/index.tsx",/*require.resolve*/(8431)],"1f391b9e":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(4250))),"@theme/MDXPage",/*require.resolve*/(4250)],"1ff56eb1":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(1659))),"@site/docs/basic-usage.mdx",/*require.resolve*/(1659)],"3217192f":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(8174))),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-docusaurus-f20.json",/*require.resolve*/(8174)],"33fc5bb8":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(778))),"@theme/Blog/Pages/BlogAuthorsPostsPage",/*require.resolve*/(778)],"36994c47":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(5516))),"@generated/docusaurus-plugin-content-blog/default/__plugin.json",/*require.resolve*/(5516)],"3a2db09e":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(8070))),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-df9.json",/*require.resolve*/(8070)],"3ee9ac3f":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(7928))),"@site/docs/events.mdx",/*require.resolve*/(7928)],"573d089f":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(9523))),"@site/docs/colors.mdx",/*require.resolve*/(9523)],"59362658":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(1180))),"@site/blog/2021-08-01-mdx-blog-post.mdx",/*require.resolve*/(1180)],"5e90a9b3":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(7134))),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-hola-73f.json",/*require.resolve*/(7134)],"5e95c892":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(7121))),"@theme/DocsRoot",/*require.resolve*/(7121)],"5e9f5e1a":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(4784))),"@generated/docusaurus.config",/*require.resolve*/(4784)],"621db11d":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(5613))),"@theme/Blog/Pages/BlogAuthorsListPage",/*require.resolve*/(5613)],"6875c492":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(3069))),"@theme/BlogTagsPostsPage",/*require.resolve*/(3069)],"72791873":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(4916))),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-frameworks-fae.json",/*require.resolve*/(4916)],"72a427b3":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(5451))),"@site/docs/contributing.mdx",/*require.resolve*/(5451)],"730f34f0":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(6377))),"@site/src/pages/examples.mdx",/*require.resolve*/(6377)],"73664a40":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(9581))),"@site/blog/2019-05-29-long-blog-post.md",/*require.resolve*/(9581)],"7661071f":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(4137))),"@site/blog/2021-08-26-welcome/index.md?truncated=true",/*require.resolve*/(4137)],"814f3328":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(5513))),"~blog/default/blog-post-list-prop-default.json",/*require.resolve*/(5513)],"86752f55":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(9726))),"@site/docs/tree-data.mdx",/*require.resolve*/(9726)],"8717b14a":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(1615))),"@site/blog/2019-05-29-long-blog-post.md?truncated=true",/*require.resolve*/(1615)],"925b3f96":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(5026))),"@site/blog/2019-05-28-first-blog-post.md?truncated=true",/*require.resolve*/(5026)],"9dcc72b5":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(1715))),"@site/docs/trees.mdx",/*require.resolve*/(1715)],"9e4087bc":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(9331))),"@theme/BlogArchivePage",/*require.resolve*/(9331)],"a6aa9e1f":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(5124))),"@theme/BlogListPage",/*require.resolve*/(5124)],"a7456010":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(8552))),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",/*require.resolve*/(8552)],"a7bd4aaa":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(1723))),"@theme/DocVersionRoot",/*require.resolve*/(1723)],"a94703ab":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(8319))),"@theme/DocRoot",/*require.resolve*/(8319)],"aba21aa0":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(7093))),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",/*require.resolve*/(7093)],"acecf23e":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(1912))),"~blog/default/blogMetadata-default.json",/*require.resolve*/(1912)],"c15d9823":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(9328))),"@generated/docusaurus-plugin-content-blog/default/p/blog-bd9.json",/*require.resolve*/(9328)],"c428a0e3":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(6929))),"@site/docs/chart-heads.mdx",/*require.resolve*/(6929)],"c5727223":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(9074))),"@site/docs/frameworks/react-js.md",/*require.resolve*/(9074)],"c95e31df":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(2781))),"@site/docs/methods.mdx",/*require.resolve*/(2781)],"c9c9bef8":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(4971))),"@generated/docusaurus-plugin-content-blog/default/p/blog-authors-all-sebastien-lorber-articles-6eb.json",/*require.resolve*/(4971)],"ccc49370":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(3858))),"@theme/BlogPostPage",/*require.resolve*/(3858)],"d9f32620":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(7447))),"@site/blog/2021-08-26-welcome/index.md",/*require.resolve*/(7447)],"e273c56f":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(4014))),"@site/blog/2019-05-28-first-blog-post.md",/*require.resolve*/(4014)],"e5aefb32":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(8539))),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-facebook-f47.json",/*require.resolve*/(8539)],"ef8b811a":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(6600))),"@generated/docusaurus-plugin-content-blog/default/p/blog-authors-790.json",/*require.resolve*/(6600)],"f4f34a3a":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(5512))),"@site/blog/2021-08-01-mdx-blog-post.mdx?truncated=true",/*require.resolve*/(5512)],"f81c1134":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(7735))),"@generated/docusaurus-plugin-content-blog/default/p/blog-archive-f05.json",/*require.resolve*/(7735)],"f82cd581":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(4035))),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-hello-f96.json",/*require.resolve*/(4035)],"f8409a7e":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(4505))),"@site/docs/intro.mdx",/*require.resolve*/(4505)],"fa4d91bf":[()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(2655))),"@site/docs/installation.mdx",/*require.resolve*/(2655)]}); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/core/lib/client/theme-fallback/Loading/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Should we translate theme-fallback? +/* eslint-disable @docusaurus/no-untranslated-text */function Loading({error,retry,pastDelay}){if(error){return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{textAlign:'center',color:'#fff',backgroundColor:'#fa383e',borderColor:'#fa383e',borderStyle:'solid',borderRadius:'0.25rem',borderWidth:'1px',boxSizing:'border-box',display:'block',padding:'1rem',flex:'0 0 50%',marginLeft:'25%',marginRight:'25%',marginTop:'5rem',maxWidth:'50%',width:'100%'},children:[/*#__PURE__*/(0,jsx_runtime.jsx)("p",{children:String(error)}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{children:/*#__PURE__*/(0,jsx_runtime.jsx)("button",{type:"button",onClick:retry,children:"Retry"})})]});}if(pastDelay){return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{style:{display:'flex',justifyContent:'center',alignItems:'center',height:'100vh'},children:/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{id:"loader",style:{width:128,height:110,position:'absolute',top:'calc(100vh - 64%)'},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:/*#__PURE__*/(0,jsx_runtime.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[/*#__PURE__*/(0,jsx_runtime.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),/*#__PURE__*/(0,jsx_runtime.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),/*#__PURE__*/(0,jsx_runtime.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[/*#__PURE__*/(0,jsx_runtime.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),/*#__PURE__*/(0,jsx_runtime.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),/*#__PURE__*/(0,jsx_runtime.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),/*#__PURE__*/(0,jsx_runtime.jsx)("circle",{cx:"22",cy:"22",r:"8",children:/*#__PURE__*/(0,jsx_runtime.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})});}return null;} +;// ./node_modules/@docusaurus/core/lib/client/flat.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const isTree=x=>typeof x==='object'&&!!x&&Object.keys(x).length>0;/** + * Takes a tree, and flattens it into a map of keyPath -> value. + * + * ```js + * flat({ a: { b: 1 } }) === { "a.b": 1 }; + * flat({ a: [1, 2] }) === { "a.0": 1, "a.1": 2 }; + * ``` + */function flat(target){const delimiter='.';const output={};function dfs(object,prefix){Object.entries(object).forEach(([key,value])=>{const newKey=prefix?`${prefix}${delimiter}${key}`:key;if(isTree(value)){dfs(value,newKey);}else{output[newKey]=value;}});}dfs(target);return output;} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/routeContext.js +var client_routeContext = __webpack_require__(3102); +;// ./node_modules/@docusaurus/core/lib/client/exports/ComponentCreator.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function ComponentCreator(path,hash){// 404 page +if(path==='*'){return lib_default()({loading:Loading,loader:()=>Promise.resolve().then(()=>_interopRequireWildcard(__webpack_require__(4618))),modules:['@theme/NotFound'],webpack:()=>[/*require.resolve*/(4618)],render(loaded,props){const NotFound=loaded.default;return/*#__PURE__*/(0,jsx_runtime.jsx)(client_routeContext/* RouteContextProvider */.W// Do we want a better name than native-default? +,{value:{plugin:{name:'native',id:'default'}},children:/*#__PURE__*/(0,jsx_runtime.jsx)(NotFound,{...props})});}});}const chunkNames=routesChunkNames_namespaceObject[`${path}-${hash}`];// eslint-disable-next-line @typescript-eslint/no-explicit-any +const loader={};const modules=[];const optsWebpack=[];// A map from prop names to chunk names. +// e.g. Suppose the plugin added this as route: +// { __comp: "...", prop: { foo: "..." }, items: ["...", "..."] } +// It will become: +// { __comp: "...", "prop.foo": "...", "items.0": "...", "items.1": ... } +// Loadable.Map will _map_ over `loader` and load each key. +const flatChunkNames=flat(chunkNames);Object.entries(flatChunkNames).forEach(([keyPath,chunkName])=>{const chunkRegistry=registry[chunkName];if(chunkRegistry){// eslint-disable-next-line prefer-destructuring +loader[keyPath]=chunkRegistry[0];modules.push(chunkRegistry[1]);optsWebpack.push(chunkRegistry[2]);}});return lib_default().Map({loading:Loading,loader,modules,webpack:()=>optsWebpack,render(loaded,props){// `loaded` will be a map from key path (as returned from the flattened +// chunk names) to the modules loaded from the loaders. We now have to +// restore the chunk names' previous shape from this flat record. +// We do so by taking advantage of the existing `chunkNames` and replacing +// each chunk name with its loaded module, so we don't create another +// object from scratch. +const loadedModules=JSON.parse(JSON.stringify(chunkNames));Object.entries(loaded).forEach(([keyPath,loadedModule])=>{// JSON modules are also loaded as `{ default: ... }` (`import()` +// semantics) but we just want to pass the actual value to props. +const chunk=loadedModule.default;// One loaded chunk can only be one of two things: a module (props) or a +// component. Modules are always JSON, so `default` always exists. This +// could only happen with a user-defined component. +if(!chunk){throw new Error(`The page component at ${path} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);}// A module can be a primitive, for example, if the user stored a string +// as a prop. However, there seems to be a bug with swc-loader's CJS +// logic, in that it would load a JSON module with content "foo" as +// `{ default: "foo", 0: "f", 1: "o", 2: "o" }`. Just to be safe, we +// first make sure that the chunk is non-primitive. +if(typeof chunk==='object'||typeof chunk==='function'){Object.keys(loadedModule).filter(k=>k!=='default').forEach(nonDefaultKey=>{chunk[nonDefaultKey]=loadedModule[nonDefaultKey];});}// We now have this chunk prepared. Go down the key path and replace the +// chunk name with the actual chunk. +let val=loadedModules;const keyPaths=keyPath.split('.');keyPaths.slice(0,-1).forEach(k=>{val=val[k];});val[keyPaths[keyPaths.length-1]]=chunk;});/* eslint-disable no-underscore-dangle */const Component=loadedModules.__comp;delete loadedModules.__comp;const routeContext=loadedModules.__context;delete loadedModules.__context;const routeProps=loadedModules.__props;delete loadedModules.__props;/* eslint-enable no-underscore-dangle */// Is there any way to put this RouteContextProvider upper in the tree? +return/*#__PURE__*/(0,jsx_runtime.jsx)(client_routeContext/* RouteContextProvider */.W,{value:routeContext,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Component,{...loadedModules,...routeProps,...props})});}});} +;// ./.docusaurus/routes.js +/* harmony default export */ const routes = ([{path:'/blog',component:ComponentCreator('/blog','b2f'),exact:true},{path:'/blog/archive',component:ComponentCreator('/blog/archive','182'),exact:true},{path:'/blog/authors',component:ComponentCreator('/blog/authors','0b7'),exact:true},{path:'/blog/authors/all-sebastien-lorber-articles',component:ComponentCreator('/blog/authors/all-sebastien-lorber-articles','4a1'),exact:true},{path:'/blog/authors/yangshun',component:ComponentCreator('/blog/authors/yangshun','a68'),exact:true},{path:'/blog/first-blog-post',component:ComponentCreator('/blog/first-blog-post','89a'),exact:true},{path:'/blog/long-blog-post',component:ComponentCreator('/blog/long-blog-post','9ad'),exact:true},{path:'/blog/mdx-blog-post',component:ComponentCreator('/blog/mdx-blog-post','e9f'),exact:true},{path:'/blog/tags',component:ComponentCreator('/blog/tags','287'),exact:true},{path:'/blog/tags/docusaurus',component:ComponentCreator('/blog/tags/docusaurus','704'),exact:true},{path:'/blog/tags/facebook',component:ComponentCreator('/blog/tags/facebook','858'),exact:true},{path:'/blog/tags/hello',component:ComponentCreator('/blog/tags/hello','299'),exact:true},{path:'/blog/tags/hola',component:ComponentCreator('/blog/tags/hola','00d'),exact:true},{path:'/blog/welcome',component:ComponentCreator('/blog/welcome','d2b'),exact:true},{path:'/examples',component:ComponentCreator('/examples','2c4'),exact:true},{path:'/docs',component:ComponentCreator('/docs','937'),routes:[{path:'/docs',component:ComponentCreator('/docs','b26'),routes:[{path:'/docs',component:ComponentCreator('/docs','e7c'),routes:[{path:'/docs/basic-usage',component:ComponentCreator('/docs/basic-usage','d84'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/category/frameworks',component:ComponentCreator('/docs/category/frameworks','080'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/chart-heads',component:ComponentCreator('/docs/chart-heads','5f9'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/colors',component:ComponentCreator('/docs/colors','425'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/contributing',component:ComponentCreator('/docs/contributing','2a4'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/events',component:ComponentCreator('/docs/events','b92'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/frameworks/react-js',component:ComponentCreator('/docs/frameworks/react-js','cbb'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/installation',component:ComponentCreator('/docs/installation','08e'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/intro',component:ComponentCreator('/docs/intro','89a'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/methods',component:ComponentCreator('/docs/methods','8ba'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/options',component:ComponentCreator('/docs/options','e49'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/tree-data',component:ComponentCreator('/docs/tree-data','959'),exact:true,sidebar:"tutorialSidebar"},{path:'/docs/trees',component:ComponentCreator('/docs/trees','0b7'),exact:true,sidebar:"tutorialSidebar"}]}]}]},{path:'/',component:ComponentCreator('/','e5f'),exact:true},{path:'*',component:ComponentCreator('*')}]); + +/***/ }), + +/***/ 5643: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ $3: () => (/* binding */ createStatefulBrokenLinks), +/* harmony export */ B6: () => (/* binding */ useBrokenLinksContext), +/* harmony export */ k5: () => (/* binding */ BrokenLinksProvider) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const createStatefulBrokenLinks=()=>{// Set to dedup, as it's not useful to collect multiple times the same value +const allAnchors=new Set();const allLinks=new Set();return{collectAnchor:anchor=>{typeof anchor!=='undefined'&&allAnchors.add(anchor);},collectLink:link=>{typeof link!=='undefined'&&allLinks.add(link);},getCollectedAnchors:()=>[...allAnchors],getCollectedLinks:()=>[...allLinks]};};const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({collectAnchor:()=>{// No-op for client +},collectLink:()=>{// No-op for client +}});const useBrokenLinksContext=()=>(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);function BrokenLinksProvider({children,brokenLinks}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider,{value:brokenLinks,children:children});} + +/***/ }), + +/***/ 6125: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ o: () => (/* binding */ Context), +/* harmony export */ x: () => (/* binding */ BrowserContextProvider) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Encapsulate the logic to avoid React hydration problems +// See https://www.joshwcomeau.com/react/the-perils-of-rehydration/ +// On first client-side render, we need to render exactly as the server rendered +// isBrowser is set to true only after a successful hydration +// Note, isBrowser is not part of useDocusaurusContext() for perf reasons +// Using useDocusaurusContext() (much more common need) should not trigger +// re-rendering after a successful hydration +const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(false);function BrowserContextProvider({children}){const[isBrowser,setIsBrowser]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{setIsBrowser(true);},[]);return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider,{value:isBrowser,children:children});} + +/***/ }), + +/***/ 6988: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + o: () => (/* binding */ Context), + l: () => (/* binding */ DocusaurusContextProvider) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./.docusaurus/docusaurus.config.mjs +var docusaurus_config = __webpack_require__(4784); +;// ./.docusaurus/globalData.json +const globalData_namespaceObject = /*#__PURE__*/JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro","docs":[{"id":"basic-usage","path":"/docs/basic-usage","sidebar":"tutorialSidebar"},{"id":"chart-heads","path":"/docs/chart-heads","sidebar":"tutorialSidebar"},{"id":"colors","path":"/docs/colors","sidebar":"tutorialSidebar"},{"id":"contributing","path":"/docs/contributing","sidebar":"tutorialSidebar"},{"id":"events","path":"/docs/events","sidebar":"tutorialSidebar"},{"id":"frameworks/react-js","path":"/docs/frameworks/react-js","sidebar":"tutorialSidebar"},{"id":"installation","path":"/docs/installation","sidebar":"tutorialSidebar"},{"id":"intro","path":"/docs/intro","sidebar":"tutorialSidebar"},{"id":"methods","path":"/docs/methods","sidebar":"tutorialSidebar"},{"id":"options","path":"/docs/options","sidebar":"tutorialSidebar"},{"id":"tree-data","path":"/docs/tree-data","sidebar":"tutorialSidebar"},{"id":"trees","path":"/docs/trees","sidebar":"tutorialSidebar"},{"id":"/category/frameworks","path":"/docs/category/frameworks","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/intro","label":"intro"}}}}],"breadcrumbs":true}}}'); +;// ./.docusaurus/i18n.json +const i18n_namespaceObject = /*#__PURE__*/JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}'); +// EXTERNAL MODULE: ./.docusaurus/codeTranslations.json +var codeTranslations = __webpack_require__(2654); +;// ./.docusaurus/site-metadata.json +const site_metadata_namespaceObject = /*#__PURE__*/JSON.parse('{"docusaurusVersion":"3.5.2","siteVersion":"0.0.1","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.5.2"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.5.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.5.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.5.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.5.2"}}}'); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/core/lib/client/docusaurusContext.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Static value on purpose: don't make it dynamic! +// Using context is still useful for testability reasons. +const contextValue={siteConfig: docusaurus_config["default"],siteMetadata: site_metadata_namespaceObject,globalData: globalData_namespaceObject,i18n: i18n_namespaceObject,codeTranslations: codeTranslations};const Context=/*#__PURE__*/react.createContext(contextValue);function DocusaurusContextProvider({children}){return/*#__PURE__*/(0,jsx_runtime.jsx)(Context.Provider,{value:contextValue,children:children});} + +/***/ }), + +/***/ 7489: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ ErrorBoundary) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/ExecutionEnvironment.js +var ExecutionEnvironment = __webpack_require__(8193); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Head.js +var Head = __webpack_require__(5260); +// EXTERNAL MODULE: ./node_modules/@docusaurus/utils-common/lib/index.js +var lib = __webpack_require__(440); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Layout/index.js + 53 modules +var Layout = __webpack_require__(7356); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/routeContext.js +var routeContext = __webpack_require__(3102); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/core/lib/client/theme-fallback/Error/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Should we translate theme-fallback? +/* eslint-disable @docusaurus/no-untranslated-text */function ErrorDisplay({error,tryAgain}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{display:'flex',flexDirection:'column',justifyContent:'center',alignItems:'flex-start',minHeight:'100vh',width:'100%',maxWidth:'80ch',fontSize:'20px',margin:'0 auto',padding:'1rem'},children:[/*#__PURE__*/(0,jsx_runtime.jsx)("h1",{style:{fontSize:'3rem'},children:"This page crashed"}),/*#__PURE__*/(0,jsx_runtime.jsx)("button",{type:"button",onClick:tryAgain,style:{margin:'1rem 0',fontSize:'2rem',cursor:'pointer',borderRadius:20,padding:'1rem'},children:"Try again"}),/*#__PURE__*/(0,jsx_runtime.jsx)(ErrorBoundaryError,{error:error})]});}function ErrorBoundaryError({error}){const causalChain=(0,lib/* getErrorCausalChain */.rA)(error);const fullMessage=causalChain.map(e=>e.message).join('\n\nCause:\n');return/*#__PURE__*/(0,jsx_runtime.jsx)("p",{style:{whiteSpace:'pre-wrap'},children:fullMessage});}// A bit hacky: we need to add an artificial RouteContextProvider here +// The goal is to be able to render the error inside the theme layout +// Without this, our theme classic would crash due to lack of route context +// See also https://github.com/facebook/docusaurus/pull/9852 +function ErrorRouteContextProvider({children}){return/*#__PURE__*/(0,jsx_runtime.jsx)(routeContext/* RouteContextProvider */.W,{value:{plugin:{name:'docusaurus-core-error-boundary',id:'default'}},children:children});}function Error({error,tryAgain}){// We wrap the error in its own error boundary because the layout can actually +// throw too... Only the ErrorDisplay component is simple enough to be +// considered safe to never throw +return/*#__PURE__*/(0,jsx_runtime.jsx)(ErrorRouteContextProvider,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(ErrorBoundary// Note: we display the original error here, not the error that we +// captured in this extra error boundary +,{fallback:()=>/*#__PURE__*/(0,jsx_runtime.jsx)(ErrorDisplay,{error:error,tryAgain:tryAgain}),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Head/* default */.A,{children:/*#__PURE__*/(0,jsx_runtime.jsx)("title",{children:"Page Error"})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Layout/* default */.A,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(ErrorDisplay,{error:error,tryAgain:tryAgain})})]})});} +;// ./node_modules/@docusaurus/core/lib/client/exports/ErrorBoundary.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// eslint-disable-next-line react/function-component-definition +const DefaultFallback=params=>/*#__PURE__*/(0,jsx_runtime.jsx)(Error,{...params});class ErrorBoundary extends react.Component{constructor(props){super(props);this.state={error:null};}componentDidCatch(error){// Catch errors in any components below and re-render with error message +if(ExecutionEnvironment/* default */.A.canUseDOM){this.setState({error});}}render(){const{children}=this.props;const{error}=this.state;if(error){const fallbackParams={error,tryAgain:()=>this.setState({error:null})};const fallback=this.props.fallback??DefaultFallback;return fallback(fallbackParams);}// See https://github.com/facebook/docusaurus/issues/6337#issuecomment-1012913647 +return children??null;}} + +/***/ }), + +/***/ 8193: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const canUseDOM=typeof window!=='undefined'&&'document'in window&&'createElement'in window.document;const ExecutionEnvironment={canUseDOM,// window.attachEvent is IE-specific; it's very likely Docusaurus won't work +// on IE anyway. +canUseEventListeners:canUseDOM&&('addEventListener'in window||'attachEvent'in window),canUseIntersectionObserver:canUseDOM&&'IntersectionObserver'in window,canUseViewport:canUseDOM&&'screen'in window};/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ExecutionEnvironment); + +/***/ }), + +/***/ 5260: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ Head) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var react_helmet_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(545); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Head(props){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(react_helmet_async__WEBPACK_IMPORTED_MODULE_1__/* .Helmet */ .mg,{...props});} + +/***/ }), + +/***/ 725: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ exports_Link) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/react-router/esm/react-router.js +var react_router = __webpack_require__(6347); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js + 1 modules +var inheritsLoose = __webpack_require__(2892); +// EXTERNAL MODULE: ./node_modules/history/esm/history.js + 1 modules +var esm_history = __webpack_require__(1513); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js +var esm_extends = __webpack_require__(8168); +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +var objectWithoutPropertiesLoose = __webpack_require__(8587); +// EXTERNAL MODULE: ./node_modules/tiny-invariant/dist/esm/tiny-invariant.js +var tiny_invariant = __webpack_require__(1561); +;// ./node_modules/react-router-dom/esm/react-router-dom.js + + + + + + + + + + + +/** + * The public API for a that uses HTML5 history. + */ + +var BrowserRouter = /*#__PURE__*/function (_React$Component) { + (0,inheritsLoose/* default */.A)(BrowserRouter, _React$Component); + + function BrowserRouter() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this; + _this.history = (0,esm_history/* createBrowserHistory */.zR)(_this.props); + return _this; + } + + var _proto = BrowserRouter.prototype; + + _proto.render = function render() { + return /*#__PURE__*/react.createElement(react_router/* Router */.Ix, { + history: this.history, + children: this.props.children + }); + }; + + return BrowserRouter; +}(react.Component); + +if (false) {} + +/** + * The public API for a that uses window.location.hash. + */ + +var HashRouter = /*#__PURE__*/function (_React$Component) { + (0,inheritsLoose/* default */.A)(HashRouter, _React$Component); + + function HashRouter() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this; + _this.history = (0,esm_history/* createHashHistory */.TM)(_this.props); + return _this; + } + + var _proto = HashRouter.prototype; + + _proto.render = function render() { + return /*#__PURE__*/react.createElement(react_router/* Router */.Ix, { + history: this.history, + children: this.props.children + }); + }; + + return HashRouter; +}(react.Component); + +if (false) {} + +var resolveToLocation = function resolveToLocation(to, currentLocation) { + return typeof to === "function" ? to(currentLocation) : to; +}; +var normalizeToLocation = function normalizeToLocation(to, currentLocation) { + return typeof to === "string" ? (0,esm_history/* createLocation */.yJ)(to, null, null, currentLocation) : to; +}; + +var forwardRefShim = function forwardRefShim(C) { + return C; +}; + +var forwardRef = react.forwardRef; + +if (typeof forwardRef === "undefined") { + forwardRef = forwardRefShim; +} + +function isModifiedEvent(event) { + return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey); +} + +var LinkAnchor = forwardRef(function (_ref, forwardedRef) { + var innerRef = _ref.innerRef, + navigate = _ref.navigate, + _onClick = _ref.onClick, + rest = (0,objectWithoutPropertiesLoose/* default */.A)(_ref, ["innerRef", "navigate", "onClick"]); + + var target = rest.target; + + var props = (0,esm_extends/* default */.A)({}, rest, { + onClick: function onClick(event) { + try { + if (_onClick) _onClick(event); + } catch (ex) { + event.preventDefault(); + throw ex; + } + + if (!event.defaultPrevented && // onClick prevented default + event.button === 0 && ( // ignore everything but left clicks + !target || target === "_self") && // let browser handle "target=_blank" etc. + !isModifiedEvent(event) // ignore clicks with modifier keys + ) { + event.preventDefault(); + navigate(); + } + } + }); // React 15 compat + + + if (forwardRefShim !== forwardRef) { + props.ref = forwardedRef || innerRef; + } else { + props.ref = innerRef; + } + /* eslint-disable-next-line jsx-a11y/anchor-has-content */ + + + return /*#__PURE__*/react.createElement("a", props); +}); + +if (false) {} +/** + * The public API for rendering a history-aware . + */ + + +var Link = forwardRef(function (_ref2, forwardedRef) { + var _ref2$component = _ref2.component, + component = _ref2$component === void 0 ? LinkAnchor : _ref2$component, + replace = _ref2.replace, + to = _ref2.to, + innerRef = _ref2.innerRef, + rest = (0,objectWithoutPropertiesLoose/* default */.A)(_ref2, ["component", "replace", "to", "innerRef"]); + + return /*#__PURE__*/react.createElement(react_router/* __RouterContext */.XZ.Consumer, null, function (context) { + !context ? false ? 0 : (0,tiny_invariant/* default */.A)(false) : void 0; + var history = context.history; + var location = normalizeToLocation(resolveToLocation(to, context.location), context.location); + var href = location ? history.createHref(location) : ""; + + var props = (0,esm_extends/* default */.A)({}, rest, { + href: href, + navigate: function navigate() { + var location = resolveToLocation(to, context.location); + var isDuplicateNavigation = (0,esm_history/* createPath */.AO)(context.location) === (0,esm_history/* createPath */.AO)(normalizeToLocation(location)); + var method = replace || isDuplicateNavigation ? history.replace : history.push; + method(location); + } + }); // React 15 compat + + + if (forwardRefShim !== forwardRef) { + props.ref = forwardedRef || innerRef; + } else { + props.innerRef = innerRef; + } + + return /*#__PURE__*/react.createElement(component, props); + }); +}); + +if (false) { var refType, toType; } + +var forwardRefShim$1 = function forwardRefShim(C) { + return C; +}; + +var forwardRef$1 = react.forwardRef; + +if (typeof forwardRef$1 === "undefined") { + forwardRef$1 = forwardRefShim$1; +} + +function joinClassnames() { + for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) { + classnames[_key] = arguments[_key]; + } + + return classnames.filter(function (i) { + return i; + }).join(" "); +} +/** + * A wrapper that knows if it's "active" or not. + */ + + +var NavLink = forwardRef$1(function (_ref, forwardedRef) { + var _ref$ariaCurrent = _ref["aria-current"], + ariaCurrent = _ref$ariaCurrent === void 0 ? "page" : _ref$ariaCurrent, + _ref$activeClassName = _ref.activeClassName, + activeClassName = _ref$activeClassName === void 0 ? "active" : _ref$activeClassName, + activeStyle = _ref.activeStyle, + classNameProp = _ref.className, + exact = _ref.exact, + isActiveProp = _ref.isActive, + locationProp = _ref.location, + sensitive = _ref.sensitive, + strict = _ref.strict, + styleProp = _ref.style, + to = _ref.to, + innerRef = _ref.innerRef, + rest = (0,objectWithoutPropertiesLoose/* default */.A)(_ref, ["aria-current", "activeClassName", "activeStyle", "className", "exact", "isActive", "location", "sensitive", "strict", "style", "to", "innerRef"]); + + return /*#__PURE__*/react.createElement(react_router/* __RouterContext */.XZ.Consumer, null, function (context) { + !context ? false ? 0 : (0,tiny_invariant/* default */.A)(false) : void 0; + var currentLocation = locationProp || context.location; + var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation); + var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202 + + var escapedPath = path && path.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1"); + var match = escapedPath ? (0,react_router/* matchPath */.B6)(currentLocation.pathname, { + path: escapedPath, + exact: exact, + sensitive: sensitive, + strict: strict + }) : null; + var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match); + var className = typeof classNameProp === "function" ? classNameProp(isActive) : classNameProp; + var style = typeof styleProp === "function" ? styleProp(isActive) : styleProp; + + if (isActive) { + className = joinClassnames(className, activeClassName); + style = (0,esm_extends/* default */.A)({}, style, activeStyle); + } + + var props = (0,esm_extends/* default */.A)({ + "aria-current": isActive && ariaCurrent || null, + className: className, + style: style, + to: toLocation + }, rest); // React 15 compat + + + if (forwardRefShim$1 !== forwardRef$1) { + props.ref = forwardedRef || innerRef; + } else { + props.innerRef = innerRef; + } + + return /*#__PURE__*/react.createElement(Link, props); + }); +}); + +if (false) { var ariaCurrentType; } + + +//# sourceMappingURL=react-router-dom.js.map + +// EXTERNAL MODULE: ./node_modules/@docusaurus/utils-common/lib/index.js +var lib = __webpack_require__(440); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useDocusaurusContext.js +var useDocusaurusContext = __webpack_require__(4586); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/isInternalUrl.js +var isInternalUrl = __webpack_require__(6654); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/ExecutionEnvironment.js +var ExecutionEnvironment = __webpack_require__(8193); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useBrokenLinks.js +var useBrokenLinks = __webpack_require__(2521); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useBaseUrl.js +var useBaseUrl = __webpack_require__(6025); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/core/lib/client/exports/Link.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// TODO all this wouldn't be necessary if we used ReactRouter basename feature +// We don't automatically add base urls to all links, +// only the "safe" ones, starting with / (like /docs/introduction) +// this is because useBaseUrl() actually transforms relative links +// like "introduction" to "/baseUrl/introduction" => bad behavior to fix +const shouldAddBaseUrlAutomatically=to=>to.startsWith('/');function Link_Link({isNavLink,to,href,activeClassName,isActive,'data-noBrokenLinkCheck':noBrokenLinkCheck,autoAddBaseUrl=true,...props},forwardedRef){const{siteConfig}=(0,useDocusaurusContext/* default */.A)();const{trailingSlash,baseUrl}=siteConfig;const router=siteConfig.future.experimental_router;const{withBaseUrl}=(0,useBaseUrl/* useBaseUrlUtils */.hH)();const brokenLinks=(0,useBrokenLinks/* default */.A)();const innerRef=(0,react.useRef)(null);(0,react.useImperativeHandle)(forwardedRef,()=>innerRef.current);// IMPORTANT: using to or href should not change anything +// For example, MDX links will ALWAYS give us the href props +// Using one prop or the other should not be used to distinguish +// internal links (/docs/myDoc) from external links (https://github.com) +const targetLinkUnprefixed=to||href;function maybeAddBaseUrl(str){return autoAddBaseUrl&&shouldAddBaseUrlAutomatically(str)?withBaseUrl(str):str;}const isInternal=(0,isInternalUrl/* default */.A)(targetLinkUnprefixed);// pathname:// is a special "protocol" we use to tell Docusaurus link +// that a link is not "internal" and that we shouldn't use history.push() +// this is not ideal but a good enough escape hatch for now +// see https://github.com/facebook/docusaurus/issues/3309 +// note: we want baseUrl to be appended (see issue for details) +// TODO read routes and automatically detect internal/external links? +const targetLinkWithoutPathnameProtocol=targetLinkUnprefixed?.replace('pathname://','');// TODO we should use ReactRouter basename feature instead! +// Automatically apply base url in links that start with / +let targetLink=typeof targetLinkWithoutPathnameProtocol!=='undefined'?maybeAddBaseUrl(targetLinkWithoutPathnameProtocol):undefined;// TODO find a way to solve this problem properly +// Fix edge case when useBaseUrl is used on a link +// "./" is useful for images and other resources +// But we don't need it for +// unfortunately we can't really make the difference :/ +if(router==='hash'&&targetLink?.startsWith('./')){targetLink=targetLink?.slice(1);}if(targetLink&&isInternal){targetLink=(0,lib/* applyTrailingSlash */.Ks)(targetLink,{trailingSlash,baseUrl});}const preloaded=(0,react.useRef)(false);const LinkComponent=isNavLink?NavLink:Link;const IOSupported=ExecutionEnvironment/* default */.A.canUseIntersectionObserver;const ioRef=(0,react.useRef)();const handleRef=el=>{innerRef.current=el;if(IOSupported&&el&&isInternal){// If IO supported and element reference found, set up Observer. +ioRef.current=new window.IntersectionObserver(entries=>{entries.forEach(entry=>{if(el===entry.target){// If element is in viewport, stop observing and run callback. +// https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API +if(entry.isIntersecting||entry.intersectionRatio>0){ioRef.current.unobserve(el);ioRef.current.disconnect();if(targetLink!=null){window.docusaurus.prefetch(targetLink);}}}});});// Add element to the observer. +ioRef.current.observe(el);}};const onInteractionEnter=()=>{if(!preloaded.current&&targetLink!=null){window.docusaurus.preload(targetLink);preloaded.current=true;}};(0,react.useEffect)(()=>{// If IO is not supported. We prefetch by default (only once). +if(!IOSupported&&isInternal&&ExecutionEnvironment/* default */.A.canUseDOM){if(targetLink!=null){window.docusaurus.prefetch(targetLink);}}// When unmounting, stop intersection observer from watching. +return()=>{if(IOSupported&&ioRef.current){ioRef.current.disconnect();}};},[ioRef,targetLink,IOSupported,isInternal]);// It is simple local anchor link targeting current page? +const isAnchorLink=targetLink?.startsWith('#')??false;// See also RR logic: +// https://github.com/remix-run/react-router/blob/v5/packages/react-router-dom/modules/Link.js#L47 +const hasInternalTarget=!props.target||props.target==='_self';// Should we use a regular tag instead of React-Router Link component? +const isRegularHtmlLink=!targetLink||!isInternal||!hasInternalTarget||// When using the hash router, we can't use the regular link for anchors +// We need to use React Router to navigate to /#/pathname/#anchor +// And not /#anchor +// See also https://github.com/facebook/docusaurus/pull/10311 +isAnchorLink&&router!=='hash';if(!noBrokenLinkCheck&&(isAnchorLink||!isRegularHtmlLink)){brokenLinks.collectLink(targetLink);}if(props.id){brokenLinks.collectAnchor(props.id);}// These props are only added in unit tests to assert/capture the type of link +const testOnlyProps= false?0:{};return isRegularHtmlLink?/*#__PURE__*/// eslint-disable-next-line jsx-a11y/anchor-has-content, @docusaurus/no-html-links +(0,jsx_runtime.jsx)("a",{ref:innerRef,href:targetLink,...(targetLinkUnprefixed&&!isInternal&&{target:'_blank',rel:'noopener noreferrer'}),...props,...testOnlyProps}):/*#__PURE__*/(0,jsx_runtime.jsx)(LinkComponent,{...props,onMouseEnter:onInteractionEnter,onTouchStart:onInteractionEnter,innerRef:handleRef,to:targetLink// Avoid "React does not recognize the `activeClassName` prop on a DOM +// element" +,...(isNavLink&&{isActive,activeClassName}),...testOnlyProps});}/* harmony default export */ const exports_Link = (/*#__PURE__*/react.forwardRef(Link_Link)); + +/***/ }), + +/***/ 418: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (()=>null); + +/***/ }), + +/***/ 1312: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ Translate), + T: () => (/* binding */ translate) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/core/lib/client/exports/Interpolate.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function interpolate(text,values){// eslint-disable-next-line prefer-named-capture-group +const segments=text.split(/(\{\w+\})/).map((seg,index)=>{// Odd indices (1, 3, 5...) of the segments are (potentially) interpolatable +if(index%2===1){const value=values?.[seg.slice(1,-1)];if(value!==undefined){return value;}// No match: add warning? There's no way to "escape" interpolation though +}return seg;});if(segments.some(seg=>/*#__PURE__*/(0,react.isValidElement)(seg))){return segments.map((seg,index)=>/*#__PURE__*/(0,react.isValidElement)(seg)?/*#__PURE__*/react.cloneElement(seg,{key:index}):seg).filter(seg=>seg!=='');}return segments.join('');}function Interpolate({children,values}){if(typeof children!=='string'){throw new Error(`The Docusaurus component only accept simple string values. Received: ${/*#__PURE__*/isValidElement(children)?'React element':typeof children}`);}return/*#__PURE__*/_jsx(_Fragment,{children:interpolate(children,values)});} +// EXTERNAL MODULE: ./.docusaurus/codeTranslations.json +var codeTranslations = __webpack_require__(2654); +;// ./node_modules/@docusaurus/core/lib/client/exports/Translate.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Can't read it from context, due to exposing imperative API +function getLocalizedMessage({id,message}){if(typeof id==='undefined'&&typeof message==='undefined'){throw new Error('Docusaurus translation declarations must have at least a translation id or a default translation message');}return codeTranslations[id??message]??message??id;}// Imperative translation API is useful for some edge-cases: +// - translating page titles (meta) +// - translating string props (input placeholders, image alt, aria labels...) +function translate({message,id},values){const localizedMessage=getLocalizedMessage({message,id});return interpolate(localizedMessage,values);}// Maybe we'll want to improve this component with additional features +// Like toggling a translation mode that adds a little translation button near +// the text? +function Translate({children,id,values}){if(children&&typeof children!=='string'){console.warn('Illegal children',children);throw new Error('The Docusaurus component only accept simple string values');}const localizedMessage=getLocalizedMessage({message:children,id});return/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:interpolate(localizedMessage,values)});} + +/***/ }), + +/***/ 7065: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ W: () => (/* binding */ DEFAULT_PLUGIN_ID) +/* harmony export */ }); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Constants used on the client-side: duplicated from server-side code +const DEFAULT_PLUGIN_ID='default'; + +/***/ }), + +/***/ 6654: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ isInternalUrl), +/* harmony export */ z: () => (/* binding */ hasProtocol) +/* harmony export */ }); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function hasProtocol(url){return /^(?:\w*:|\/\/)/.test(url);}function isInternalUrl(url){return typeof url!=='undefined'&&!hasProtocol(url);} + +/***/ }), + +/***/ 6025: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Ay: () => (/* binding */ useBaseUrl), +/* harmony export */ hH: () => (/* binding */ useBaseUrlUtils) +/* harmony export */ }); +/* unused harmony export addBaseUrl */ +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _useDocusaurusContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4586); +/* harmony import */ var _isInternalUrl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6654); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function addBaseUrl({siteUrl,baseUrl,url,options:{forcePrependBaseUrl=false,absolute=false}={},router}){// It never makes sense to add base url to a local anchor url, or one with a +// protocol +if(!url||url.startsWith('#')||(0,_isInternalUrl__WEBPACK_IMPORTED_MODULE_2__/* .hasProtocol */ .z)(url)){return url;}// TODO hash router + /baseUrl/ is unlikely to work well in all situations +// This will support most cases, but not all +// See https://github.com/facebook/docusaurus/pull/9859 +if(router==='hash'){return url.startsWith('/')?`.${url}`:`./${url}`;}if(forcePrependBaseUrl){return baseUrl+url.replace(/^\//,'');}// /baseUrl -> /baseUrl/ +// https://github.com/facebook/docusaurus/issues/6315 +if(url===baseUrl.replace(/\/$/,'')){return baseUrl;}// We should avoid adding the baseurl twice if it's already there +const shouldAddBaseUrl=!url.startsWith(baseUrl);const basePath=shouldAddBaseUrl?baseUrl+url.replace(/^\//,''):url;return absolute?siteUrl+basePath:basePath;}function useBaseUrlUtils(){const{siteConfig}=(0,_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)();const{baseUrl,url:siteUrl}=siteConfig;const router=siteConfig.future.experimental_router;const withBaseUrl=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((url,options)=>addBaseUrl({siteUrl,baseUrl,url,options,router}),[siteUrl,baseUrl,router]);return{withBaseUrl};}function useBaseUrl(url,options={}){const{withBaseUrl}=useBaseUrlUtils();return withBaseUrl(url,options);} + +/***/ }), + +/***/ 2521: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ useBrokenLinks) +/* harmony export */ }); +/* harmony import */ var _BrokenLinksContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5643); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useBrokenLinks(){return (0,_BrokenLinksContext__WEBPACK_IMPORTED_MODULE_0__/* .useBrokenLinksContext */ .B6)();} + +/***/ }), + +/***/ 4586: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ useDocusaurusContext) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurusContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6988); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useDocusaurusContext(){return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_docusaurusContext__WEBPACK_IMPORTED_MODULE_1__/* .Context */ .o);} + +/***/ }), + +/***/ 2303: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ useIsBrowser) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _browserContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6125); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useIsBrowser(){return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_browserContext__WEBPACK_IMPORTED_MODULE_1__/* .Context */ .o);} + +/***/ }), + +/***/ 205: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8193); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * This hook is like `useLayoutEffect`, but without the SSR warning. + * It seems hacky but it's used in many React libs (Redux, Formik...). + * Also mentioned here: https://github.com/facebook/react/issues/16956 + * + * It is useful when you need to update a ref as soon as possible after a React + * render (before `useEffect`). + * + * TODO should become unnecessary in React v19? + * https://github.com/facebook/react/pull/26395 + * This was added in core with Docusaurus v3 but kept undocumented on purpose + */const useIsomorphicLayoutEffect=_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.canUseDOM?react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect:react__WEBPACK_IMPORTED_MODULE_0__.useEffect;/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useIsomorphicLayoutEffect); + +/***/ }), + +/***/ 6803: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ useRouteContext) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _routeContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3102); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useRouteContext(){const context=react__WEBPACK_IMPORTED_MODULE_0__.useContext(_routeContext__WEBPACK_IMPORTED_MODULE_1__/* .Context */ .o);if(!context){throw new Error('Unexpected: no Docusaurus route context found');}return context;} + +/***/ }), + +/***/ 3102: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ W: () => (/* binding */ RouteContextProvider), +/* harmony export */ o: () => (/* binding */ Context) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);function mergeContexts({parent,value}){if(!parent){if(!value){throw new Error('Unexpected: no Docusaurus route context found');}else if(!('plugin'in value)){throw new Error('Unexpected: Docusaurus topmost route context has no `plugin` attribute');}return value;}// TODO deep merge this +const data={...parent.data,...value?.data};return{// Nested routes are not supposed to override plugin attribute +plugin:parent.plugin,data};}function RouteContextProvider({children,value}){const parent=react__WEBPACK_IMPORTED_MODULE_0__.useContext(Context);const mergedValue=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>mergeContexts({parent,value}),[parent,value]);return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider,{value:mergedValue,children:children});} + +/***/ }), + +/***/ 5890: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": () => (/* binding */ serverEntry) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/react-router/esm/react-router.js +var react_router = __webpack_require__(6347); +// EXTERNAL MODULE: ./node_modules/react-helmet-async/lib/index.module.js +var index_module = __webpack_require__(545); +// EXTERNAL MODULE: ./node_modules/react-loadable/lib/index.js +var lib = __webpack_require__(3259); +var lib_default = /*#__PURE__*/__webpack_require__.n(lib); +// EXTERNAL MODULE: ./node_modules/react-dom/server.js +var server = __webpack_require__(7422); +// EXTERNAL MODULE: external "stream" +var external_stream_ = __webpack_require__(2203); +;// ./node_modules/@docusaurus/core/lib/client/renderToHtml.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */async function renderToHtml(app){// Inspired from +// https://react.dev/reference/react-dom/server/renderToPipeableStream#waiting-for-all-content-to-load-for-crawlers-and-static-generation +// https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/cache-dir/static-entry.js +const writableStream=new WritableAsPromise();const{pipe}=(0,server.renderToPipeableStream)(app,{onError(error){writableStream.destroy(error);},onAllReady(){pipe(writableStream);}});return writableStream.getPromise();}// WritableAsPromise inspired by https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/cache-dir/server-utils/writable-as-promise.js +/* eslint-disable no-underscore-dangle */class WritableAsPromise extends external_stream_.Writable{_output;_deferred;constructor(){super();this._output=``;this._deferred={promise:null,resolve:()=>null,reject:()=>null};this._deferred.promise=new Promise((resolve,reject)=>{this._deferred.resolve=resolve;this._deferred.reject=reject;});}_write(chunk,_enc,next){this._output+=chunk.toString();next();}_destroy(error,next){if(error instanceof Error){this._deferred.reject(error);}else{next();}}end(){this._deferred.resolve(this._output);return this.destroy();}getPromise(){return this._deferred.promise;}} +// EXTERNAL MODULE: ./.docusaurus/routes.js + 7 modules +var routes = __webpack_require__(1596); +// EXTERNAL MODULE: ./node_modules/react-router-config/esm/react-router-config.js +var react_router_config = __webpack_require__(2831); +;// ./node_modules/@docusaurus/core/lib/client/preload.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Helper function to make sure all async components for that particular route + * is preloaded before rendering. This is especially useful to avoid loading + * screens. + * + * @param pathname the route pathname, example: /docs/installation + * @returns Promise object represents whether pathname has been preloaded + */function preload(pathname){const matches=Array.from(new Set([pathname,decodeURI(pathname)])).map(p=>(0,react_router_config/* matchRoutes */.u)(routes/* default */.A,p)).flat();return Promise.all(matches.map(match=>match.route.component.preload?.()));} +;// ./.docusaurus/client-modules.js +/* harmony default export */ const client_modules = ([__webpack_require__(4835),__webpack_require__(6134),__webpack_require__(6294),__webpack_require__(5364)]); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/core/lib/client/theme-fallback/Root/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Wrapper at the very top of the app, that is applied constantly +// and does not depend on current route (unlike the layout) +// +// Gives the opportunity to add stateful providers on top of the app +// and these providers won't reset state when we navigate +// +// See https://github.com/facebook/docusaurus/issues/3919 +function Root({children}){return/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:children});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Head.js +var Head = __webpack_require__(5260); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useDocusaurusContext.js +var useDocusaurusContext = __webpack_require__(4586); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useBaseUrl.js +var useBaseUrl = __webpack_require__(6025); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useThemeConfig.js +var useThemeConfig = __webpack_require__(6342); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.js + 1 modules +var metadataUtils = __webpack_require__(1213); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useAlternatePageUtils.js +var useAlternatePageUtils = __webpack_require__(2131); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useKeyboardNavigation.js + 1 modules +var useKeyboardNavigation = __webpack_require__(1386); +;// ./node_modules/@docusaurus/theme-common/lib/utils/searchUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const DEFAULT_SEARCH_TAG='default'; +// EXTERNAL MODULE: ./node_modules/@docusaurus/utils-common/lib/index.js +var utils_common_lib = __webpack_require__(440); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/SearchMetadata/index.js +var SearchMetadata = __webpack_require__(1463); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/SiteMetadata/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// TODO move to SiteMetadataDefaults or theme-common ? +// Useful for i18n/SEO +// See https://developers.google.com/search/docs/advanced/crawling/localized-versions +// See https://github.com/facebook/docusaurus/issues/3317 +function AlternateLangHeaders(){const{i18n:{currentLocale,defaultLocale,localeConfigs}}=(0,useDocusaurusContext/* default */.A)();const alternatePageUtils=(0,useAlternatePageUtils/* useAlternatePageUtils */.o)();const currentHtmlLang=localeConfigs[currentLocale].htmlLang;// HTML lang is a BCP 47 tag, but the Open Graph protocol requires +// using underscores instead of dashes. +// See https://ogp.me/#optional +// See https://en.wikipedia.org/wiki/IETF_language_tag) +const bcp47ToOpenGraphLocale=code=>code.replace('-','_');// Note: it is fine to use both "x-default" and "en" to target the same url +// See https://www.searchviu.com/en/multiple-hreflang-tags-one-url/ +return/*#__PURE__*/(0,jsx_runtime.jsxs)(Head/* default */.A,{children:[Object.entries(localeConfigs).map(([locale,{htmlLang}])=>/*#__PURE__*/(0,jsx_runtime.jsx)("link",{rel:"alternate",href:alternatePageUtils.createUrl({locale,fullyQualified:true}),hrefLang:htmlLang},locale)),/*#__PURE__*/(0,jsx_runtime.jsx)("link",{rel:"alternate",href:alternatePageUtils.createUrl({locale:defaultLocale,fullyQualified:true}),hrefLang:"x-default"}),/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{property:"og:locale",content:bcp47ToOpenGraphLocale(currentHtmlLang)}),Object.values(localeConfigs).filter(config=>currentHtmlLang!==config.htmlLang).map(config=>/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{property:"og:locale:alternate",content:bcp47ToOpenGraphLocale(config.htmlLang)},`meta-og-${config.htmlLang}`))]});}// Default canonical url inferred from current page location pathname +function useDefaultCanonicalUrl(){const{siteConfig:{url:siteUrl,baseUrl,trailingSlash}}=(0,useDocusaurusContext/* default */.A)();// TODO using useLocation().pathname is not a super idea +// See https://github.com/facebook/docusaurus/issues/9170 +const{pathname}=(0,react_router/* useLocation */.zy)();const canonicalPathname=(0,utils_common_lib/* applyTrailingSlash */.Ks)((0,useBaseUrl/* default */.Ay)(pathname),{trailingSlash,baseUrl});return siteUrl+canonicalPathname;}// TODO move to SiteMetadataDefaults or theme-common ? +function CanonicalUrlHeaders({permalink}){const{siteConfig:{url:siteUrl}}=(0,useDocusaurusContext/* default */.A)();const defaultCanonicalUrl=useDefaultCanonicalUrl();const canonicalUrl=permalink?`${siteUrl}${permalink}`:defaultCanonicalUrl;return/*#__PURE__*/(0,jsx_runtime.jsxs)(Head/* default */.A,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{property:"og:url",content:canonicalUrl}),/*#__PURE__*/(0,jsx_runtime.jsx)("link",{rel:"canonical",href:canonicalUrl})]});}function SiteMetadata(){const{i18n:{currentLocale}}=(0,useDocusaurusContext/* default */.A)();// TODO maybe move these 2 themeConfig to siteConfig? +// These seems useful for other themes as well +const{metadata,image:defaultImage}=(0,useThemeConfig/* useThemeConfig */.p)();return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Head/* default */.A,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),/*#__PURE__*/(0,jsx_runtime.jsx)("body",{className:useKeyboardNavigation/* keyboardFocusedClassName */.w})]}),defaultImage&&/*#__PURE__*/(0,jsx_runtime.jsx)(metadataUtils/* PageMetadata */.be,{image:defaultImage}),/*#__PURE__*/(0,jsx_runtime.jsx)(CanonicalUrlHeaders,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(AlternateLangHeaders,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(SearchMetadata/* default */.A,{tag:DEFAULT_SEARCH_TAG,locale:currentLocale}),/*#__PURE__*/(0,jsx_runtime.jsx)(Head/* default */.A,{children:metadata.map((metadatum,i)=>/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{...metadatum},i))})]});} +;// ./node_modules/@docusaurus/core/lib/client/normalizeLocation.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Memoize previously normalized pathnames. +const pathnames=new Map();function normalizeLocation(location){if(pathnames.has(location.pathname)){return{...location,pathname:pathnames.get(location.pathname)};}// If the location was registered with an `.html` extension, we don't strip it +// away, or it will render to a 404 page. +const matchedRoutes=(0,react_router_config/* matchRoutes */.u)(routes/* default */.A,location.pathname);if(matchedRoutes.some(({route})=>route.exact===true)){pathnames.set(location.pathname,location.pathname);return location;}const pathname=location.pathname.trim().replace(/(?:\/index)?\.html$/,'')||'/';pathnames.set(location.pathname,pathname);return{...location,pathname};} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/browserContext.js +var browserContext = __webpack_require__(6125); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/docusaurusContext.js + 3 modules +var docusaurusContext = __webpack_require__(6988); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useIsomorphicLayoutEffect.js +var useIsomorphicLayoutEffect = __webpack_require__(205); +;// ./node_modules/@docusaurus/core/lib/client/ClientLifecyclesDispatcher.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function dispatchLifecycleAction(lifecycleAction,...args){const callbacks=client_modules.map(clientModule=>{const lifecycleFunction=clientModule.default?.[lifecycleAction]??clientModule[lifecycleAction];return lifecycleFunction?.(...args);});return()=>callbacks.forEach(cb=>cb?.());}function scrollAfterNavigation({location,previousLocation}){if(!previousLocation){return;// no-op: use native browser feature +}const samePathname=location.pathname===previousLocation.pathname;const sameHash=location.hash===previousLocation.hash;const sameSearch=location.search===previousLocation.search;// Query-string changes: do not scroll to top/hash +if(samePathname&&sameHash&&!sameSearch){return;}const{hash}=location;if(!hash){window.scrollTo(0,0);}else{const id=decodeURIComponent(hash.substring(1));const element=document.getElementById(id);element?.scrollIntoView();}}function ClientLifecyclesDispatcher({children,location,previousLocation}){(0,useIsomorphicLayoutEffect/* default */.A)(()=>{if(previousLocation!==location){scrollAfterNavigation({location,previousLocation});dispatchLifecycleAction('onRouteDidUpdate',{previousLocation,location});}},[previousLocation,location]);return children;}/* harmony default export */ const client_ClientLifecyclesDispatcher = (ClientLifecyclesDispatcher); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/ExecutionEnvironment.js +var ExecutionEnvironment = __webpack_require__(8193); +;// ./node_modules/@docusaurus/core/lib/client/PendingNavigation.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */class PendingNavigation extends react.Component{previousLocation;routeUpdateCleanupCb;constructor(props){super(props);// previousLocation doesn't affect rendering, hence not stored in state. +this.previousLocation=null;this.routeUpdateCleanupCb=ExecutionEnvironment/* default */.A.canUseDOM?dispatchLifecycleAction('onRouteUpdate',{previousLocation:null,location:this.props.location}):()=>{};this.state={nextRouteHasLoaded:true};}// Intercept location update and still show current route until next route +// is done loading. +shouldComponentUpdate(nextProps,nextState){if(nextProps.location===this.props.location){// `nextRouteHasLoaded` is false means there's a pending route transition. +// Don't update until it's done. +return nextState.nextRouteHasLoaded;}// props.location being different means the router is trying to navigate to +// a new route. We will preload the new route. +const nextLocation=nextProps.location;// Save the location first. +this.previousLocation=this.props.location;this.setState({nextRouteHasLoaded:false});this.routeUpdateCleanupCb=dispatchLifecycleAction('onRouteUpdate',{previousLocation:this.previousLocation,location:nextLocation});// Load data while the old screen remains. Force preload instead of using +// `window.docusaurus`, because we want to avoid loading screen even when +// user is on saveData +preload(nextLocation.pathname).then(()=>{this.routeUpdateCleanupCb();this.setState({nextRouteHasLoaded:true});}).catch(e=>{console.warn(e);// If chunk loading failed, it could be because the path to a chunk +// no longer exists due to a new deployment. Force refresh the page +// instead of just not navigating. +window.location.reload();});return false;}render(){const{children,location}=this.props;// Use a controlled to trick all descendants into rendering the old +// location. +return/*#__PURE__*/(0,jsx_runtime.jsx)(client_ClientLifecyclesDispatcher,{previousLocation:this.previousLocation,location:location,children:/*#__PURE__*/(0,jsx_runtime.jsx)(react_router/* Route */.qh,{location:location,render:()=>children})});}}/* harmony default export */ const client_PendingNavigation = (PendingNavigation); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/BaseUrlIssueBanner/styles.module.css +var styles_module = __webpack_require__(9832); +;// ./node_modules/@docusaurus/core/lib/client/BaseUrlIssueBanner/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Double-security: critical CSS will hide the banner if CSS can load! +// __ prefix allows search crawlers (Algolia/DocSearch) to ignore anchors +// https://github.com/facebook/docusaurus/issues/8883#issuecomment-1516328368 +const BannerContainerId='__docusaurus-base-url-issue-banner-container';const BannerId='__docusaurus-base-url-issue-banner';const SuggestionContainerId='__docusaurus-base-url-issue-banner-suggestion-container';// It is important to not use React to render this banner +// otherwise Google would index it, even if it's hidden with some critical CSS! +// See https://github.com/facebook/docusaurus/issues/4028 +// - We can't SSR (or it would be indexed) +// - We can't CSR (as it means the baseurl is correct) +function createInlineHtmlBanner(baseUrl){return` +
+

Your Docusaurus site did not load properly.

+

A very common reason is a wrong site baseUrl configuration.

+

Current configured baseUrl = ${baseUrl} ${baseUrl==='/'?' (default value)':''}

+

We suggest trying baseUrl =

+
+`;}// Needs to work for older browsers! +function createInlineScript(baseUrl){/* language=js */return` +document.addEventListener('DOMContentLoaded', function maybeInsertBanner() { + var shouldInsert = typeof window['docusaurus'] === 'undefined'; + shouldInsert && insertBanner(); +}); + +function insertBanner() { + var bannerContainer = document.createElement('div'); + bannerContainer.id = '${BannerContainerId}'; + var bannerHtml = ${JSON.stringify(createInlineHtmlBanner(baseUrl))// See https://redux.js.org/recipes/server-rendering/#security-considerations +.replace(/ after hydration +function HasHydratedDataAttribute(){const isBrowser=(0,useIsBrowser/* default */.A)();return/*#__PURE__*/(0,jsx_runtime.jsx)(Head/* default */.A,{children:/*#__PURE__*/(0,jsx_runtime.jsx)("html",{"data-has-hydrated":isBrowser})});} +;// ./node_modules/@docusaurus/core/lib/client/App.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// TODO, quick fix for CSS insertion order +// eslint-disable-next-line import/order +const routesElement=(0,react_router_config/* renderRoutes */.v)(routes/* default */.A);function AppNavigation(){const location=(0,react_router/* useLocation */.zy)();const normalizedLocation=normalizeLocation(location);return/*#__PURE__*/(0,jsx_runtime.jsx)(client_PendingNavigation,{location:normalizedLocation,children:routesElement});}function App(){return/*#__PURE__*/(0,jsx_runtime.jsx)(ErrorBoundary/* default */.A,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(docusaurusContext/* DocusaurusContextProvider */.l,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(browserContext/* BrowserContextProvider */.x,{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Root,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(SiteMetadataDefaults,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(SiteMetadata,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(MaybeBaseUrlIssueBanner,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(AppNavigation,{})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(HasHydratedDataAttribute,{})]})})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/BrokenLinksContext.js +var BrokenLinksContext = __webpack_require__(5643); +;// ./node_modules/@docusaurus/core/lib/client/serverEntry.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const render=async({pathname})=>{await preload(pathname);const modules=new Set();const routerContext={};const helmetContext={};const statefulBrokenLinks=(0,BrokenLinksContext/* createStatefulBrokenLinks */.$3)();const app=/*#__PURE__*/// @ts-expect-error: we are migrating away from react-loadable anyways +(0,jsx_runtime.jsx)((lib_default()).Capture,{report:moduleName=>modules.add(moduleName),children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_module/* HelmetProvider */.vd,{context:helmetContext,children:/*#__PURE__*/(0,jsx_runtime.jsx)(react_router/* StaticRouter */.kO,{location:pathname,context:routerContext,children:/*#__PURE__*/(0,jsx_runtime.jsx)(BrokenLinksContext/* BrokenLinksProvider */.k5,{brokenLinks:statefulBrokenLinks,children:/*#__PURE__*/(0,jsx_runtime.jsx)(App,{})})})})});const html=await renderToHtml(app);const collectedData={helmet:helmetContext.helmet,anchors:statefulBrokenLinks.getCollectedAnchors(),links:statefulBrokenLinks.getCollectedLinks(),modules:Array.from(modules)};return{html,collectedData};};/* harmony default export */ const serverEntry = (render); + +/***/ }), + +/***/ 4096: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "in": () => (/* reexport */ BlogPostProvider), + OU: () => (/* reexport */ BlogSidebarItemList), + Ki: () => (/* reexport */ groupBlogSidebarItemsByYear), + kJ: () => (/* reexport */ useBlogListPageStructuredData), + x: () => (/* reexport */ useBlogMetadata), + e7: () => (/* reexport */ useBlogPost), + J_: () => (/* reexport */ useBlogPostStructuredData), + Gx: () => (/* reexport */ useVisibleBlogSidebarItems) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/reactUtils.js +var reactUtils = __webpack_require__(9532); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useRouteContext.js +var useRouteContext = __webpack_require__(6803); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/plugin-content-blog/lib/client/contexts.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useBlogMetadata(){const routeContext=(0,useRouteContext/* default */.A)();const blogMetadata=routeContext?.data?.blogMetadata;if(!blogMetadata){throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");}return blogMetadata;}const Context=/*#__PURE__*/react.createContext(null);/** + * Note: we don't use `PropBlogPostContent` as context value on purpose. + * Metadata is currently stored inside the MDX component, but we may want to + * change that in the future. + */function useContextValue({content,isBlogPostPage}){return (0,react.useMemo)(()=>({metadata:content.metadata,frontMatter:content.frontMatter,assets:content.assets,toc:content.toc,isBlogPostPage}),[content,isBlogPostPage]);}/** + * This is a very thin layer around the `content` received from the MDX loader. + * It provides metadata about the blog post to the children tree. + */function BlogPostProvider({children,content,isBlogPostPage=false}){const contextValue=useContextValue({content,isBlogPostPage});return/*#__PURE__*/(0,jsx_runtime.jsx)(Context.Provider,{value:contextValue,children:children});}/** + * Returns the data of the currently browsed blog post. Gives access to + * front matter, metadata, TOC, etc. + * When swizzling a low-level component (e.g. the "Edit this page" link) + * and you need some extra metadata, you don't have to drill the props + * all the way through the component tree: simply use this hook instead. + */function useBlogPost(){const blogPost=(0,react.useContext)(Context);if(blogPost===null){throw new reactUtils/* ReactContextError */.dV('BlogPostProvider');}return blogPost;} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useBaseUrl.js +var useBaseUrl = __webpack_require__(6025); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useDocusaurusContext.js +var useDocusaurusContext = __webpack_require__(4586); +;// ./node_modules/@docusaurus/plugin-content-blog/lib/client/structuredDataUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const convertDate=dateMs=>new Date(dateMs).toISOString();function getBlogPost(blogPostContent,siteConfig,withBaseUrl){const{assets,frontMatter,metadata}=blogPostContent;const{date,title,description,lastUpdatedAt}=metadata;const image=assets.image??frontMatter.image;const keywords=frontMatter.keywords??[];const blogUrl=`${siteConfig.url}${metadata.permalink}`;const dateModified=lastUpdatedAt?convertDate(lastUpdatedAt):undefined;return{'@type':'BlogPosting','@id':blogUrl,mainEntityOfPage:blogUrl,url:blogUrl,headline:title,name:title,description,datePublished:date,...(dateModified?{dateModified}:{}),...getAuthor(metadata.authors),...getImage(image,withBaseUrl,title),...(keywords?{keywords}:{})};}function getAuthor(authors){const authorsStructuredData=authors.map(createPersonStructuredData);return{author:authorsStructuredData.length===1?authorsStructuredData[0]:authorsStructuredData};}function getImage(image,withBaseUrl,title){return image?{image:createImageStructuredData({imageUrl:withBaseUrl(image,{absolute:true}),caption:`title image for the blog post: ${title}`})}:{};}function useBlogListPageStructuredData(props){const{siteConfig}=(0,useDocusaurusContext/* default */.A)();const{withBaseUrl}=(0,useBaseUrl/* useBaseUrlUtils */.hH)();const{metadata:{blogDescription,blogTitle,permalink}}=props;const url=`${siteConfig.url}${permalink}`;// details on structured data support: https://schema.org/Blog +return{'@context':'https://schema.org','@type':'Blog','@id':url,mainEntityOfPage:url,headline:blogTitle,description:blogDescription,blogPost:props.items.map(blogItem=>getBlogPost(blogItem.content,siteConfig,withBaseUrl))};}function useBlogPostStructuredData(){const blogMetadata=useBlogMetadata();const{assets,metadata}=useBlogPost();const{siteConfig}=(0,useDocusaurusContext/* default */.A)();const{withBaseUrl}=(0,useBaseUrl/* useBaseUrlUtils */.hH)();const{date,title,description,frontMatter,lastUpdatedAt}=metadata;const image=assets.image??frontMatter.image;const keywords=frontMatter.keywords??[];const dateModified=lastUpdatedAt?convertDate(lastUpdatedAt):undefined;const url=`${siteConfig.url}${metadata.permalink}`;// details on structured data support: https://schema.org/BlogPosting +// BlogPosting is one of the structured data types that Google explicitly +// supports: https://developers.google.com/search/docs/appearance/structured-data/article#structured-data-type-definitions +return{'@context':'https://schema.org','@type':'BlogPosting','@id':url,mainEntityOfPage:url,url,headline:title,name:title,description,datePublished:date,...(dateModified?{dateModified}:{}),...getAuthor(metadata.authors),...getImage(image,withBaseUrl,title),...(keywords?{keywords}:{}),isPartOf:{'@type':'Blog','@id':`${siteConfig.url}${blogMetadata.blogBasePath}`,name:blogMetadata.blogTitle}};}/** @returns A {@link https://schema.org/Person} constructed from the {@link Author} */function createPersonStructuredData(author){return{'@type':'Person',...(author.name?{name:author.name}:{}),...(author.title?{description:author.title}:{}),...(author.url?{url:author.url}:{}),...(author.email?{email:author.email}:{}),...(author.imageURL?{image:author.imageURL}:{})};}/** @returns A {@link https://schema.org/ImageObject} */function createImageStructuredData({imageUrl,caption}){return{'@type':'ImageObject','@id':imageUrl,url:imageUrl,contentUrl:imageUrl,caption};} +// EXTERNAL MODULE: ./node_modules/react-router/esm/react-router.js +var react_router = __webpack_require__(6347); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/jsUtils.js +var jsUtils = __webpack_require__(1682); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/routesUtils.js +var routesUtils = __webpack_require__(9169); +;// ./node_modules/@docusaurus/plugin-content-blog/lib/client/sidebarUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function isVisible(item,pathname){if(item.unlisted&&!(0,routesUtils/* isSamePath */.ys)(item.permalink,pathname)){return false;}return true;}/** + * Return the visible blog sidebar items to display. + * Unlisted items are filtered. + */function useVisibleBlogSidebarItems(items){const{pathname}=(0,react_router/* useLocation */.zy)();return (0,react.useMemo)(()=>items.filter(item=>isVisible(item,pathname)),[items,pathname]);}function groupBlogSidebarItemsByYear(items){const groupedByYear=(0,jsUtils/* groupBy */.$z)(items,item=>{return`${new Date(item.date).getFullYear()}`;});// "as" is safe here +// see https://github.com/microsoft/TypeScript/pull/56805#issuecomment-2196526425 +const entries=Object.entries(groupedByYear);// We have to use entries because of https://x.com/sebastienlorber/status/1806371668614369486 +// Objects with string/number keys are automatically sorted asc... +// Even if keys are strings like "2024" +// We want descending order for years +// Alternative: using Map.groupBy (not affected by this "reordering") +entries.reverse();return entries;}function BlogSidebarItemList({items,ulClassName,liClassName,linkClassName,linkActiveClassName}){return/*#__PURE__*/(0,jsx_runtime.jsx)("ul",{className:ulClassName,children:items.map(item=>/*#__PURE__*/(0,jsx_runtime.jsx)("li",{className:liClassName,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{isNavLink:true,to:item.permalink,className:linkClassName,activeClassName:linkActiveClassName,children:item.title})},item.permalink))});} +;// ./node_modules/@docusaurus/plugin-content-blog/lib/client/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/***/ }), + +/***/ 3886: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ VQ: () => (/* binding */ DocsPreferredVersionContextProvider), +/* harmony export */ g1: () => (/* binding */ useDocsPreferredVersion) +/* harmony export */ }); +/* unused harmony export useDocsPreferredVersionByPluginId */ +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4070); +/* harmony import */ var _docusaurus_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7065); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6342); +/* harmony import */ var _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(679); +/* harmony import */ var _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9532); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const storageKey=pluginId=>`docs-preferred-version-${pluginId}`;const DocsPreferredVersionStorage={save:(pluginId,persistence,versionName)=>{(0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_2__/* .createStorageSlot */ .Wf)(storageKey(pluginId),{persistence}).set(versionName);},read:(pluginId,persistence)=>(0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_2__/* .createStorageSlot */ .Wf)(storageKey(pluginId),{persistence}).get(),clear:(pluginId,persistence)=>{(0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_2__/* .createStorageSlot */ .Wf)(storageKey(pluginId),{persistence}).del();}};/** + * Initial state is always null as we can't read local storage from node SSR + */const getInitialState=pluginIds=>Object.fromEntries(pluginIds.map(id=>[id,{preferredVersionName:null}]));/** + * Read storage for all docs plugins, assigning each doc plugin a preferred + * version (if found) + */function readStorageState({pluginIds,versionPersistence,allDocsData}){/** + * The storage value we read might be stale, and belong to a version that does + * not exist in the site anymore. In such case, we remove the storage value to + * avoid downstream errors. + */function restorePluginState(pluginId){const preferredVersionNameUnsafe=DocsPreferredVersionStorage.read(pluginId,versionPersistence);const pluginData=allDocsData[pluginId];const versionExists=pluginData.versions.some(version=>version.name===preferredVersionNameUnsafe);if(versionExists){return{preferredVersionName:preferredVersionNameUnsafe};}DocsPreferredVersionStorage.clear(pluginId,versionPersistence);return{preferredVersionName:null};}return Object.fromEntries(pluginIds.map(id=>[id,restorePluginState(id)]));}function useVersionPersistence(){return (0,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__/* .useThemeConfig */ .p)().docs.versionPersistence;}const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);function useContextValue(){const allDocsData=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_4__/* .useAllDocsData */ .Gy)();const versionPersistence=useVersionPersistence();const pluginIds=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>Object.keys(allDocsData),[allDocsData]);// Initial state is empty, as we can't read browser storage in node/SSR +const[state,setState]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(()=>getInitialState(pluginIds));// On mount, we set the state read from browser storage +(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{setState(readStorageState({allDocsData,versionPersistence,pluginIds}));},[allDocsData,versionPersistence,pluginIds]);// The API that we expose to consumer hooks (memo for constant object) +const api=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>{function savePreferredVersion(pluginId,versionName){DocsPreferredVersionStorage.save(pluginId,versionPersistence,versionName);setState(s=>({...s,[pluginId]:{preferredVersionName:versionName}}));}return{savePreferredVersion};},[versionPersistence]);return[state,api];}function DocsPreferredVersionContextProviderUnsafe({children}){const value=useContextValue();return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider,{value:value,children:children});}/** + * This is a maybe-layer. If the docs plugin is not enabled, this provider is a + * simple pass-through. + */function DocsPreferredVersionContextProvider({children}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(DocsPreferredVersionContextProviderUnsafe,{children:children});}function useDocsPreferredVersionContext(){const value=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(!value){throw new _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_5__/* .ReactContextError */ .dV('DocsPreferredVersionContextProvider');}return value;}/** + * Returns a read-write interface to a plugin's preferred version. The + * "preferred version" is defined as the last version that the user visited. + * For example, if a user is using v3, even when v4 is later published, the user + * would still be browsing v3 docs when she opens the website next time. Note, + * the `preferredVersion` attribute will always be `null` before mount. + */function useDocsPreferredVersion(pluginId=_docusaurus_constants__WEBPACK_IMPORTED_MODULE_6__/* .DEFAULT_PLUGIN_ID */ .W){const docsData=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_4__/* .useDocsData */ .ht)(pluginId);const[state,api]=useDocsPreferredVersionContext();const{preferredVersionName}=state[pluginId];const preferredVersion=docsData.versions.find(version=>version.name===preferredVersionName)??null;const savePreferredVersionName=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(versionName=>{api.savePreferredVersion(pluginId,versionName);},[api,pluginId]);return{preferredVersion,savePreferredVersionName};}function useDocsPreferredVersionByPluginId(){const allDocsData=useAllDocsData();const[state]=useDocsPreferredVersionContext();function getPluginIdPreferredVersion(pluginId){const docsData=allDocsData[pluginId];const{preferredVersionName}=state[pluginId];return docsData.versions.find(version=>version.name===preferredVersionName)??null;}const pluginIds=Object.keys(allDocsData);return Object.fromEntries(pluginIds.map(id=>[id,getPluginIdPreferredVersion(id)]));} + +/***/ }), + +/***/ 609: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ V: () => (/* binding */ DocsSidebarProvider), +/* harmony export */ t: () => (/* binding */ useDocsSidebar) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9532); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Using a Symbol because null is a valid context value (a doc with no sidebar) +// Inspired by https://github.com/jamiebuilds/unstated-next/blob/master/src/unstated-next.tsx +const EmptyContext=Symbol('EmptyContext');const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(EmptyContext);/** + * Provide the current sidebar to your children. + */function DocsSidebarProvider({children,name,items}){const stableValue=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>name&&items?{name,items}:null,[name,items]);return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider,{value:stableValue,children:children});}/** + * Gets the sidebar that's currently displayed, or `null` if there isn't one + */function useDocsSidebar(){const value=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(value===EmptyContext){throw new _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_2__/* .ReactContextError */ .dV('DocsSidebarProvider');}return value;} + +/***/ }), + +/***/ 6972: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ $S: () => (/* binding */ useCurrentSidebarCategory), +/* harmony export */ B5: () => (/* binding */ useDocRootMetadata), +/* harmony export */ Nr: () => (/* binding */ findFirstSidebarItemLink), +/* harmony export */ OF: () => (/* binding */ useSidebarBreadcrumbs), +/* harmony export */ QB: () => (/* binding */ useLayoutDoc), +/* harmony export */ Vd: () => (/* binding */ useDocsVersionCandidates), +/* harmony export */ Y: () => (/* binding */ useVisibleSidebarItems), +/* harmony export */ cC: () => (/* binding */ useDocById), +/* harmony export */ d1: () => (/* binding */ filterDocCardListItems), +/* harmony export */ fW: () => (/* binding */ useLayoutDocsSidebar), +/* harmony export */ w8: () => (/* binding */ isActiveSidebarItem) +/* harmony export */ }); +/* unused harmony exports findSidebarCategory, findFirstSidebarItemCategoryLink, isVisibleSidebarItem */ +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6347); +/* harmony import */ var _docusaurus_renderRoutes__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2831); +/* harmony import */ var _docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4070); +/* harmony import */ var _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9169); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1682); +/* harmony import */ var _docsPreferredVersion__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3886); +/* harmony import */ var _docsVersion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3025); +/* harmony import */ var _docsSidebar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(609); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useDocById(id){const version=(0,_docsVersion__WEBPACK_IMPORTED_MODULE_1__/* .useDocsVersion */ .r)();if(!id){return undefined;}const doc=version.docs[id];if(!doc){throw new Error(`no version doc found by id=${id}`);}return doc;}/** + * Pure function, similar to `Array#find`, but works on the sidebar tree. + */function findSidebarCategory(sidebar,predicate){for(const item of sidebar){if(item.type==='category'){if(predicate(item)){return item;}const subItem=findSidebarCategory(item.items,predicate);if(subItem){return subItem;}}}return undefined;}/** + * Best effort to assign a link to a sidebar category. If the category doesn't + * have a link itself, we link to the first sub item with a link. + */function findFirstSidebarItemCategoryLink(item){if(item.href&&!item.linkUnlisted){return item.href;}for(const subItem of item.items){const link=findFirstSidebarItemLink(subItem);if(link){return link;}}return undefined;}/** + * Best effort to assign a link to a sidebar item. + */function findFirstSidebarItemLink(item){if(item.type==='link'&&!item.unlisted){return item.href;}if(item.type==='category'){return findFirstSidebarItemCategoryLink(item);}// Other items types, like "html" +return undefined;}/** + * Gets the category associated with the current location. Should only be used + * on category index pages. + */function useCurrentSidebarCategory(){const{pathname}=(0,_docusaurus_router__WEBPACK_IMPORTED_MODULE_2__/* .useLocation */ .zy)();const sidebar=(0,_docsSidebar__WEBPACK_IMPORTED_MODULE_3__/* .useDocsSidebar */ .t)();if(!sidebar){throw new Error('Unexpected: cant find current sidebar in context');}const categoryBreadcrumbs=getSidebarBreadcrumbs({sidebarItems:sidebar.items,pathname,onlyCategories:true});const deepestCategory=categoryBreadcrumbs.slice(-1)[0];if(!deepestCategory){throw new Error(`${pathname} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);}return deepestCategory;}const isActive=(testedPath,activePath)=>typeof testedPath!=='undefined'&&(0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_4__/* .isSamePath */ .ys)(testedPath,activePath);const containsActiveSidebarItem=(items,activePath)=>items.some(subItem=>isActiveSidebarItem(subItem,activePath));/** + * Checks if a sidebar item should be active, based on the active path. + */function isActiveSidebarItem(item,activePath){if(item.type==='link'){return isActive(item.href,activePath);}if(item.type==='category'){return isActive(item.href,activePath)||containsActiveSidebarItem(item.items,activePath);}return false;}function isVisibleSidebarItem(item,activePath){switch(item.type){case'category':return isActiveSidebarItem(item,activePath)||item.items.some(subItem=>isVisibleSidebarItem(subItem,activePath));case'link':// An unlisted item remains visible if it is active +return!item.unlisted||isActiveSidebarItem(item,activePath);default:return true;}}function useVisibleSidebarItems(items,activePath){return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>items.filter(item=>isVisibleSidebarItem(item,activePath)),[items,activePath]);}/** + * Get the sidebar the breadcrumbs for a given pathname + * Ordered from top to bottom + */function getSidebarBreadcrumbs({sidebarItems,pathname,onlyCategories=false}){const breadcrumbs=[];function extract(items){for(const item of items){if(item.type==='category'&&((0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_4__/* .isSamePath */ .ys)(item.href,pathname)||extract(item.items))||item.type==='link'&&(0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_4__/* .isSamePath */ .ys)(item.href,pathname)){const filtered=onlyCategories&&item.type!=='category';if(!filtered){breadcrumbs.unshift(item);}return true;}}return false;}extract(sidebarItems);return breadcrumbs;}/** + * Gets the breadcrumbs of the current doc page, based on its sidebar location. + * Returns `null` if there's no sidebar or breadcrumbs are disabled. + */function useSidebarBreadcrumbs(){const sidebar=(0,_docsSidebar__WEBPACK_IMPORTED_MODULE_3__/* .useDocsSidebar */ .t)();const{pathname}=(0,_docusaurus_router__WEBPACK_IMPORTED_MODULE_2__/* .useLocation */ .zy)();const breadcrumbsOption=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_5__/* .useActivePlugin */ .vT)()?.pluginData.breadcrumbs;if(breadcrumbsOption===false||!sidebar){return null;}return getSidebarBreadcrumbs({sidebarItems:sidebar.items,pathname});}/** + * "Version candidates" are mostly useful for the layout components, which must + * be able to work on all pages. For example, if a user has `{ type: "doc", + * docId: "intro" }` as a navbar item, which version does that refer to? We + * believe that it could refer to at most three version candidates: + * + * 1. The **active version**, the one that the user is currently browsing. See + * {@link useActiveDocContext}. + * 2. The **preferred version**, the one that the user last visited. See + * {@link useDocsPreferredVersion}. + * 3. The **latest version**, the "default". See {@link useLatestVersion}. + * + * @param docsPluginId The plugin ID to get versions from. + * @returns An array of 1~3 versions with priorities defined above, guaranteed + * to be unique and non-sparse. Will be memoized, hence stable for deps array. + */function useDocsVersionCandidates(docsPluginId){const{activeVersion}=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_5__/* .useActiveDocContext */ .zK)(docsPluginId);const{preferredVersion}=(0,_docsPreferredVersion__WEBPACK_IMPORTED_MODULE_6__/* .useDocsPreferredVersion */ .g1)(docsPluginId);const latestVersion=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_5__/* .useLatestVersion */ .r7)(docsPluginId);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>(0,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_7__/* .uniq */ .sb)([activeVersion,preferredVersion,latestVersion].filter(Boolean)),[activeVersion,preferredVersion,latestVersion]);}/** + * The layout components, like navbar items, must be able to work on all pages, + * even on non-doc ones where there's no version context, so a sidebar ID could + * be ambiguous. This hook would always return a sidebar to be linked to. See + * also {@link useDocsVersionCandidates} for how this selection is done. + * + * @throws This hook throws if a sidebar with said ID is not found. + */function useLayoutDocsSidebar(sidebarId,docsPluginId){const versions=useDocsVersionCandidates(docsPluginId);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>{const allSidebars=versions.flatMap(version=>version.sidebars?Object.entries(version.sidebars):[]);const sidebarEntry=allSidebars.find(sidebar=>sidebar[0]===sidebarId);if(!sidebarEntry){throw new Error(`Can't find any sidebar with id "${sidebarId}" in version${versions.length>1?'s':''} ${versions.map(version=>version.name).join(', ')}". +Available sidebar ids are: +- ${allSidebars.map(entry=>entry[0]).join('\n- ')}`);}return sidebarEntry[1];},[sidebarId,versions]);}/** + * The layout components, like navbar items, must be able to work on all pages, + * even on non-doc ones where there's no version context, so a doc ID could be + * ambiguous. This hook would always return a doc to be linked to. See also + * {@link useDocsVersionCandidates} for how this selection is done. + * + * @throws This hook throws if a doc with said ID is not found. + */function useLayoutDoc(docId,docsPluginId){const versions=useDocsVersionCandidates(docsPluginId);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>{const allDocs=versions.flatMap(version=>version.docs);const doc=allDocs.find(versionDoc=>versionDoc.id===docId);if(!doc){const isDraft=versions.flatMap(version=>version.draftIds).includes(docId);// Drafts should be silently filtered instead of throwing +if(isDraft){return null;}throw new Error(`Couldn't find any doc with id "${docId}" in version${versions.length>1?'s':''} "${versions.map(version=>version.name).join(', ')}". +Available doc ids are: +- ${(0,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_7__/* .uniq */ .sb)(allDocs.map(versionDoc=>versionDoc.id)).join('\n- ')}`);}return doc;},[docId,versions]);}// TODO later read version/route directly from context +/** + * The docs plugin creates nested routes, with the top-level route providing the + * version metadata, and the subroutes creating individual doc pages. This hook + * will match the current location against all known sub-routes. + * + * @param props The props received by `@theme/DocRoot` + * @returns The data of the relevant document at the current location, or `null` + * if no document associated with the current location can be found. + */function useDocRootMetadata({route}){const location=(0,_docusaurus_router__WEBPACK_IMPORTED_MODULE_2__/* .useLocation */ .zy)();const versionMetadata=(0,_docsVersion__WEBPACK_IMPORTED_MODULE_1__/* .useDocsVersion */ .r)();const docRoutes=route.routes;const currentDocRoute=docRoutes.find(docRoute=>(0,_docusaurus_router__WEBPACK_IMPORTED_MODULE_2__/* .matchPath */ .B6)(location.pathname,docRoute));if(!currentDocRoute){return null;}// For now, the sidebarName is added as route config: not ideal! +const sidebarName=currentDocRoute.sidebar;const sidebarItems=sidebarName?versionMetadata.docsSidebars[sidebarName]:undefined;const docElement=(0,_docusaurus_renderRoutes__WEBPACK_IMPORTED_MODULE_8__/* .renderRoutes */ .v)(docRoutes);return{docElement,sidebarName,sidebarItems};}/** + * Filter items we don't want to display on the doc card list view + * @param items + */function filterDocCardListItems(items){return items.filter(item=>{const canHaveLink=item.type==='category'||item.type==='link';if(canHaveLink){return!!findFirstSidebarItemLink(item);}return true;});} + +/***/ }), + +/***/ 3025: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ n: () => (/* binding */ DocsVersionProvider), +/* harmony export */ r: () => (/* binding */ useDocsVersion) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9532); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);/** + * Provide the current version's metadata to your children. + */function DocsVersionProvider({children,version}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider,{value:version,children:children});}/** + * Gets the version metadata of the current doc page. + */function useDocsVersion(){const version=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(version===null){throw new _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_2__/* .ReactContextError */ .dV('DocsVersionProvider');}return version;} + +/***/ }), + +/***/ 4070: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + zK: () => (/* binding */ useActiveDocContext), + vT: () => (/* binding */ useActivePlugin), + Gy: () => (/* binding */ useAllDocsData), + HW: () => (/* binding */ useDocVersionSuggestions), + ht: () => (/* binding */ useDocsData), + r7: () => (/* binding */ useLatestVersion), + jh: () => (/* binding */ useVersions) +}); + +// UNUSED EXPORTS: DocProvider, DocSidebarItemsExpandedStateProvider, DocsPreferredVersionContextProvider, DocsSidebarProvider, DocsVersionProvider, filterDocCardListItems, findFirstSidebarItemLink, findSidebarCategory, getDocsVersionSearchTag, isActiveSidebarItem, isVisibleSidebarItem, useActivePluginAndVersion, useActiveVersion, useCurrentSidebarCategory, useDoc, useDocById, useDocRootMetadata, useDocSidebarItemsExpandedState, useDocsContextualSearchTags, useDocsPreferredVersion, useDocsPreferredVersionByPluginId, useDocsSidebar, useDocsVersion, useDocsVersionCandidates, useLayoutDoc, useLayoutDocsSidebar, useSidebarBreadcrumbs, useVisibleSidebarItems + +// EXTERNAL MODULE: ./node_modules/react-router/esm/react-router.js +var react_router = __webpack_require__(6347); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useDocusaurusContext.js +var useDocusaurusContext = __webpack_require__(4586); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/constants.js +var constants = __webpack_require__(7065); +;// ./node_modules/@docusaurus/core/lib/client/exports/useGlobalData.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useGlobalData(){const{globalData}=(0,useDocusaurusContext/* default */.A)();return globalData;}function useAllPluginInstancesData(pluginName,options={}){const globalData=useGlobalData();const pluginGlobalData=globalData[pluginName];if(!pluginGlobalData&&options.failfast){throw new Error(`Docusaurus plugin global data not found for "${pluginName}" plugin.`);}return pluginGlobalData;}function usePluginData(pluginName,pluginId=constants/* DEFAULT_PLUGIN_ID */.W,options={}){const pluginGlobalData=useAllPluginInstancesData(pluginName);const pluginInstanceGlobalData=pluginGlobalData?.[pluginId];if(!pluginInstanceGlobalData&&options.failfast){throw new Error(`Docusaurus plugin global data not found for "${pluginName}" plugin with id "${pluginId}".`);}return pluginInstanceGlobalData;} +;// ./node_modules/@docusaurus/plugin-content-docs/lib/client/docsClientUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// This code is not part of the api surface, not in ./theme on purpose +// get the data of the plugin that is currently "active" +// ie the docs of that plugin are currently browsed +// it is useful to support multiple docs plugin instances +function getActivePlugin(allPluginData,pathname,options={}){const activeEntry=Object.entries(allPluginData)// Route sorting: '/android/foo' should match '/android' instead of '/' +.sort((a,b)=>b[1].path.localeCompare(a[1].path)).find(([,pluginData])=>!!(0,react_router/* matchPath */.B6)(pathname,{path:pluginData.path,exact:false,strict:false}));const activePlugin=activeEntry?{pluginId:activeEntry[0],pluginData:activeEntry[1]}:undefined;if(!activePlugin&&options.failfast){throw new Error(`Can't find active docs plugin for "${pathname}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(allPluginData).map(plugin=>plugin.path).join(', ')}`);}return activePlugin;}const getLatestVersion=data=>data.versions.find(version=>version.isLast);function docsClientUtils_getActiveVersion(data,pathname){// Sort paths so that a match-all version like /docs/* is matched last +// Otherwise /docs/* would match /docs/1.0.0/* routes +// This is simplified but similar to the core sortRoutes() logic +const sortedVersions=[...data.versions].sort((a,b)=>{if(a.path===b.path){return 0;}if(a.path.includes(b.path)){return-1;}if(b.path.includes(a.path)){return 1;}return 0;});return sortedVersions.find(version=>!!(0,react_router/* matchPath */.B6)(pathname,{path:version.path,exact:false,strict:false}));}function getActiveDocContext(data,pathname){const activeVersion=docsClientUtils_getActiveVersion(data,pathname);const activeDoc=activeVersion?.docs.find(doc=>!!(0,react_router/* matchPath */.B6)(pathname,{path:doc.path,exact:true,strict:false}));function getAlternateVersionDocs(docId){const result={};data.versions.forEach(version=>{version.docs.forEach(doc=>{if(doc.id===docId){result[version.name]=doc;}});});return result;}const alternateVersionDocs=activeDoc?getAlternateVersionDocs(activeDoc.id):{};return{activeVersion,activeDoc,alternateDocVersions:alternateVersionDocs};}function getDocVersionSuggestions(data,pathname){const latestVersion=getLatestVersion(data);const activeDocContext=getActiveDocContext(data,pathname);const latestDocSuggestion=activeDocContext.alternateDocVersions[latestVersion.name];return{latestDocSuggestion,latestVersionSuggestion:latestVersion};} +;// ./node_modules/@docusaurus/plugin-content-docs/lib/client/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Important to use a constant object to avoid React useEffect executions etc. +// see https://github.com/facebook/docusaurus/issues/5089 +const StableEmptyObject={};// In blog-only mode, docs hooks are still used by the theme. We need a fail- +// safe fallback when the docs plugin is not in use +const useAllDocsData=()=>useAllPluginInstancesData('docusaurus-plugin-content-docs')??StableEmptyObject;const useDocsData=pluginId=>{try{return usePluginData('docusaurus-plugin-content-docs',pluginId,{failfast:true});}catch(error){throw new Error(`You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled${pluginId==='Default'?'':` (pluginId=${pluginId}`}`,{cause:error});}};// TODO this feature should be provided by docusaurus core +function useActivePlugin(options={}){const data=useAllDocsData();const{pathname}=(0,react_router/* useLocation */.zy)();return getActivePlugin(data,pathname,options);}function useActivePluginAndVersion(options={}){const activePlugin=useActivePlugin(options);const{pathname}=useLocation();if(!activePlugin){return undefined;}const activeVersion=getActiveVersion(activePlugin.pluginData,pathname);return{activePlugin,activeVersion};}/** Versions are returned ordered (most recent first). */function useVersions(pluginId){const data=useDocsData(pluginId);return data.versions;}function useLatestVersion(pluginId){const data=useDocsData(pluginId);return getLatestVersion(data);}/** + * Returns `undefined` on doc-unrelated pages, because there's no version + * currently considered as active. + */function useActiveVersion(pluginId){const data=useDocsData(pluginId);const{pathname}=useLocation();return getActiveVersion(data,pathname);}function useActiveDocContext(pluginId){const data=useDocsData(pluginId);const{pathname}=(0,react_router/* useLocation */.zy)();return getActiveDocContext(data,pathname);}/** + * Useful to say "hey, you are not on the latest docs version, please switch" + */function useDocVersionSuggestions(pluginId){const data=useDocsData(pluginId);const{pathname}=(0,react_router/* useLocation */.zy)();return getDocVersionSuggestions(data,pathname);} + +/***/ }), + +/***/ 6294: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var nprogress__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5947); +/* harmony import */ var nprogress__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(nprogress__WEBPACK_IMPORTED_MODULE_0__); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */nprogress__WEBPACK_IMPORTED_MODULE_0___default().configure({showSpinner:false});const delay=200;const clientModule={onRouteUpdate({location,previousLocation}){if(previousLocation&&location.pathname!==previousLocation.pathname){const progressBarTimeout=window.setTimeout(()=>{nprogress__WEBPACK_IMPORTED_MODULE_0___default().start();},delay);return()=>window.clearTimeout(progressBarTimeout);}return undefined;},onRouteDidUpdate(){nprogress__WEBPACK_IMPORTED_MODULE_0___default().done();}};/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (clientModule); + +/***/ }), + +/***/ 6134: +/***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXTERNAL MODULE: ./node_modules/prism-react-renderer/dist/index.mjs +var dist = __webpack_require__(1765); +// EXTERNAL MODULE: ./.docusaurus/docusaurus.config.mjs +var docusaurus_config = __webpack_require__(4784); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/prism-include-languages.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function prismIncludeLanguages(PrismObject){const{themeConfig:{prism}}=docusaurus_config["default"];const{additionalLanguages}=prism;// Prism components work on the Prism instance on the window, while prism- +// react-renderer uses its own Prism instance. We temporarily mount the +// instance onto window, import components to enhance it, then remove it to +// avoid polluting global namespace. +// You can mutate PrismObject: registering plugins, deleting languages... As +// long as you don't re-assign it +globalThis.Prism=PrismObject;additionalLanguages.forEach(lang=>{if(lang==='php'){// eslint-disable-next-line global-require +__webpack_require__(9700);}// eslint-disable-next-line global-require, import/no-dynamic-require +__webpack_require__(8692)(`./prism-${lang}`);});delete globalThis.Prism;} +;// ./node_modules/@docusaurus/theme-classic/lib/prism-include-languages.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */prismIncludeLanguages(dist/* Prism */.My); + +/***/ }), + +/***/ 9364: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ Admonition) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-common/lib/utils/admonitionUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Workaround because it's difficult in MDX v1 to provide a MDX title as props +// See https://github.com/facebook/docusaurus/pull/7152#issuecomment-1145779682 +function extractMDXAdmonitionTitle(children){const items=react.Children.toArray(children);const mdxAdmonitionTitleWrapper=items.find(item=>/*#__PURE__*/react.isValidElement(item)&&item.type==='mdxAdmonitionTitle');const rest=items.filter(item=>item!==mdxAdmonitionTitleWrapper);const mdxAdmonitionTitle=mdxAdmonitionTitleWrapper?.props.children;return{mdxAdmonitionTitle,rest:rest.length>0?/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:rest}):null};}function processAdmonitionProps(props){const{mdxAdmonitionTitle,rest}=extractMDXAdmonitionTitle(props.children);const title=props.title??mdxAdmonitionTitle;return{...props,// Do not return "title: undefined" prop +// this might create unwanted props overrides when merging props +// For example: {...default,...props} +...(title&&{title}),children:rest};} +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Layout/styles.module.css +var styles_module = __webpack_require__(6175); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Layout/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function AdmonitionContainer({type,className,children}){return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.common.admonition,ThemeClassNames/* ThemeClassNames */.G.common.admonitionType(type),(styles_module_default()).admonition,className),children:children});}function AdmonitionHeading({icon,title}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(styles_module_default()).admonitionHeading,children:[/*#__PURE__*/(0,jsx_runtime.jsx)("span",{className:(styles_module_default()).admonitionIcon,children:icon}),title]});}function AdmonitionContent({children}){return children?/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(styles_module_default()).admonitionContent,children:children}):null;}function AdmonitionLayout(props){const{type,icon,title,children,className}=props;return/*#__PURE__*/(0,jsx_runtime.jsxs)(AdmonitionContainer,{type:type,className:className,children:[title||icon?/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionHeading,{title:title,icon:icon}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionContent,{children:children})]});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Icon/Note.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function AdmonitionIconNote(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 14 16",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Type/Note.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const infimaClassName='alert alert--secondary';const defaultProps={icon:/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionIconNote,{}),title:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function AdmonitionTypeNote(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionLayout,{...defaultProps,...props,className:(0,clsx/* default */.A)(infimaClassName,props.className),children:props.children});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Icon/Tip.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function AdmonitionIconTip(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 12 16",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Type/Tip.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Tip_infimaClassName='alert alert--success';const Tip_defaultProps={icon:/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionIconTip,{}),title:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function AdmonitionTypeTip(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionLayout,{...Tip_defaultProps,...props,className:(0,clsx/* default */.A)(Tip_infimaClassName,props.className),children:props.children});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Icon/Info.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function AdmonitionIconInfo(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 14 16",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Type/Info.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Info_infimaClassName='alert alert--info';const Info_defaultProps={icon:/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionIconInfo,{}),title:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function AdmonitionTypeInfo(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionLayout,{...Info_defaultProps,...props,className:(0,clsx/* default */.A)(Info_infimaClassName,props.className),children:props.children});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Icon/Warning.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function AdmonitionIconCaution(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 16 16",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Type/Warning.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Warning_infimaClassName='alert alert--warning';const Warning_defaultProps={icon:/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionIconCaution,{}),title:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function AdmonitionTypeWarning(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionLayout,{...Warning_defaultProps,...props,className:(0,clsx/* default */.A)(Warning_infimaClassName,props.className),children:props.children});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Icon/Danger.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function AdmonitionIconDanger(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 12 16",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Type/Danger.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Danger_infimaClassName='alert alert--danger';const Danger_defaultProps={icon:/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionIconDanger,{}),title:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};function AdmonitionTypeDanger(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionLayout,{...Danger_defaultProps,...props,className:(0,clsx/* default */.A)(Danger_infimaClassName,props.className),children:props.children});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Type/Caution.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Caution_infimaClassName='alert alert--warning';const Caution_defaultProps={icon:/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionIconCaution,{}),title:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};// TODO remove before v4: Caution replaced by Warning +// see https://github.com/facebook/docusaurus/issues/7558 +function AdmonitionTypeCaution(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionLayout,{...Caution_defaultProps,...props,className:(0,clsx/* default */.A)(Caution_infimaClassName,props.className),children:props.children});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/Types.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const admonitionTypes={note:AdmonitionTypeNote,tip:AdmonitionTypeTip,info:AdmonitionTypeInfo,warning:AdmonitionTypeWarning,danger:AdmonitionTypeDanger};// Undocumented legacy admonition type aliases +// Provide hardcoded/untranslated retrocompatible label +// See also https://github.com/facebook/docusaurus/issues/7767 +const admonitionAliases={secondary:props=>/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionTypeNote,{title:"secondary",...props}),important:props=>/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionTypeInfo,{title:"important",...props}),success:props=>/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionTypeTip,{title:"success",...props}),caution:AdmonitionTypeCaution};/* harmony default export */ const Types = ({...admonitionTypes,...admonitionAliases}); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function getAdmonitionTypeComponent(type){const component=Types[type];if(component){return component;}console.warn(`No admonition component found for admonition type "${type}". Using Info as fallback.`);return Types.info;}function Admonition(unprocessedProps){const props=processAdmonitionProps(unprocessedProps);const AdmonitionTypeComponent=getAdmonitionTypeComponent(props.type);return/*#__PURE__*/(0,jsx_runtime.jsx)(AdmonitionTypeComponent,{...props});} + +/***/ }), + +/***/ 1111: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ BlogAuthor) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Socials/Twitter/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// SVG Source: https://svgl.app/ +function Twitter(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 256 209",width:"1em",height:"1em",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M256 25.45c-9.42 4.177-19.542 7-30.166 8.27 10.845-6.5 19.172-16.793 23.093-29.057a105.183 105.183 0 0 1-33.351 12.745C205.995 7.201 192.346.822 177.239.822c-29.006 0-52.523 23.516-52.523 52.52 0 4.117.465 8.125 1.36 11.97-43.65-2.191-82.35-23.1-108.255-54.876-4.52 7.757-7.11 16.78-7.11 26.404 0 18.222 9.273 34.297 23.365 43.716a52.312 52.312 0 0 1-23.79-6.57c-.003.22-.003.44-.003.661 0 25.447 18.104 46.675 42.13 51.5a52.592 52.592 0 0 1-23.718.9c6.683 20.866 26.08 36.05 49.062 36.475-17.975 14.086-40.622 22.483-65.228 22.483-4.24 0-8.42-.249-12.529-.734 23.243 14.902 50.85 23.597 80.51 23.597 96.607 0 149.434-80.031 149.434-149.435 0-2.278-.05-4.543-.152-6.795A106.748 106.748 0 0 0 256 25.45",fill:"#55acee"})});}/* harmony default export */ const Socials_Twitter = (Twitter); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Socials/GitHub/styles.module.css +var styles_module = __webpack_require__(4824); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Socials/GitHub/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// SVG Source: https://svgl.app/ +function GitHub(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 256 250",width:"1em",height:"1em",...props,className:(0,clsx/* default */.A)(props.className,(styles_module_default()).githubSvg),xmlns:"http://www.w3.org/2000/svg",style:{'--dark':'#000','--light':'#fff'},preserveAspectRatio:"xMidYMid",children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M128.001 0C57.317 0 0 57.307 0 128.001c0 56.554 36.676 104.535 87.535 121.46 6.397 1.185 8.746-2.777 8.746-6.158 0-3.052-.12-13.135-.174-23.83-35.61 7.742-43.124-15.103-43.124-15.103-5.823-14.795-14.213-18.73-14.213-18.73-11.613-7.944.876-7.78.876-7.78 12.853.902 19.621 13.19 19.621 13.19 11.417 19.568 29.945 13.911 37.249 10.64 1.149-8.272 4.466-13.92 8.127-17.116-28.431-3.236-58.318-14.212-58.318-63.258 0-13.975 5-25.394 13.188-34.358-1.329-3.224-5.71-16.242 1.24-33.874 0 0 10.749-3.44 35.21 13.121 10.21-2.836 21.16-4.258 32.038-4.307 10.878.049 21.837 1.47 32.066 4.307 24.431-16.56 35.165-13.12 35.165-13.12 6.967 17.63 2.584 30.65 1.255 33.873 8.207 8.964 13.173 20.383 13.173 34.358 0 49.163-29.944 59.988-58.447 63.157 4.591 3.972 8.682 11.762 8.682 23.704 0 17.126-.148 30.91-.148 35.126 0 3.407 2.304 7.398 8.792 6.14C219.37 232.5 256 184.537 256 128.002 256 57.307 198.691 0 128.001 0Zm-80.06 182.34c-.282.636-1.283.827-2.194.39-.929-.417-1.45-1.284-1.15-1.922.276-.655 1.279-.838 2.205-.399.93.418 1.46 1.293 1.139 1.931Zm6.296 5.618c-.61.566-1.804.303-2.614-.591-.837-.892-.994-2.086-.375-2.66.63-.566 1.787-.301 2.626.591.838.903 1 2.088.363 2.66Zm4.32 7.188c-.785.545-2.067.034-2.86-1.104-.784-1.138-.784-2.503.017-3.05.795-.547 2.058-.055 2.861 1.075.782 1.157.782 2.522-.019 3.08Zm7.304 8.325c-.701.774-2.196.566-3.29-.49-1.119-1.032-1.43-2.496-.726-3.27.71-.776 2.213-.558 3.315.49 1.11 1.03 1.45 2.505.701 3.27Zm9.442 2.81c-.31 1.003-1.75 1.459-3.199 1.033-1.448-.439-2.395-1.613-2.103-2.626.301-1.01 1.747-1.484 3.207-1.028 1.446.436 2.396 1.602 2.095 2.622Zm10.744 1.193c.036 1.055-1.193 1.93-2.715 1.95-1.53.034-2.769-.82-2.786-1.86 0-1.065 1.202-1.932 2.733-1.958 1.522-.03 2.768.818 2.768 1.868Zm10.555-.405c.182 1.03-.875 2.088-2.387 2.37-1.485.271-2.861-.365-3.05-1.386-.184-1.056.893-2.114 2.376-2.387 1.514-.263 2.868.356 3.061 1.403Z"})});}/* harmony default export */ const Socials_GitHub = (GitHub); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Socials/X/styles.module.css +var X_styles_module = __webpack_require__(8451); +var X_styles_module_default = /*#__PURE__*/__webpack_require__.n(X_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Socials/X/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// SVG Source: https://svgl.app/ +function X(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"none",viewBox:"0 0 1200 1227",...props,className:(0,clsx/* default */.A)(props.className,(X_styles_module_default()).xSvg),style:{'--dark':'#000','--light':'#fff'},children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"})});}/* harmony default export */ const Socials_X = (X); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Socials/StackOverflow/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// SVG Source: https://svgl.app/ +function StackOverflow(props){return/*#__PURE__*/(0,jsx_runtime.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 169.61 200",width:"1em",height:"1em",...props,children:[/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M140.44 178.38v-48.65h21.61V200H0v-70.27h21.61v48.65z",fill:"#bcbbbb"}),/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M124.24 140.54l4.32-16.22-86.97-17.83-3.78 17.83zM49.7 82.16L130.72 120l7.56-16.22-81.02-37.83zm22.68-40l68.06 57.3 11.35-13.51-68.6-57.3-11.35 13.51zM116.14 0l-14.59 10.81 53.48 71.89 14.58-10.81zM37.81 162.16h86.43v-16.21H37.81z",fill:"#f48024"})]});}/* harmony default export */ const Socials_StackOverflow = (StackOverflow); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Socials/LinkedIn/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// SVG Source: https://svgl.app/ +function LinkedIn(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{width:"1em",height:"1em",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid",viewBox:"0 0 256 256",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M218.123 218.127h-37.931v-59.403c0-14.165-.253-32.4-19.728-32.4-19.756 0-22.779 15.434-22.779 31.369v60.43h-37.93V95.967h36.413v16.694h.51a39.907 39.907 0 0 1 35.928-19.733c38.445 0 45.533 25.288 45.533 58.186l-.016 67.013ZM56.955 79.27c-12.157.002-22.014-9.852-22.016-22.009-.002-12.157 9.851-22.014 22.008-22.016 12.157-.003 22.014 9.851 22.016 22.008A22.013 22.013 0 0 1 56.955 79.27m18.966 138.858H37.95V95.967h37.97v122.16ZM237.033.018H18.89C8.58-.098.125 8.161-.001 18.471v219.053c.122 10.315 8.576 18.582 18.89 18.474h218.144c10.336.128 18.823-8.139 18.966-18.474V18.454c-.147-10.33-8.635-18.588-18.966-18.453",fill:"#0A66C2"})});}/* harmony default export */ const Socials_LinkedIn = (LinkedIn); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Socials/Default/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// SVG Source: https://tabler.io/ +function DefaultSocial(props){return/*#__PURE__*/(0,jsx_runtime.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...props,children:[/*#__PURE__*/(0,jsx_runtime.jsx)("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0"}),/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M3.6 9h16.8"}),/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M3.6 15h16.8"}),/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M11.5 3a17 17 0 0 0 0 18"}),/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M12.5 3a17 17 0 0 1 0 18"})]});}/* harmony default export */ const Default = (DefaultSocial); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Blog/Components/Author/Socials/styles.module.css +var Socials_styles_module = __webpack_require__(2022); +var Socials_styles_module_default = /*#__PURE__*/__webpack_require__.n(Socials_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Blog/Components/Author/Socials/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const SocialPlatformConfigs={twitter:{Icon:Socials_Twitter,label:'Twitter'},github:{Icon:Socials_GitHub,label:'GitHub'},stackoverflow:{Icon:Socials_StackOverflow,label:'Stack Overflow'},linkedin:{Icon:Socials_LinkedIn,label:'LinkedIn'},x:{Icon:Socials_X,label:'X'}};function getSocialPlatformConfig(platformKey){return SocialPlatformConfigs[platformKey]??{Icon:Default,label:platformKey};}function SocialLink({platform,link}){const{Icon,label}=getSocialPlatformConfig(platform);return/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{className:(Socials_styles_module_default()).authorSocialLink,href:link,title:label,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Icon,{className:(0,clsx/* default */.A)((Socials_styles_module_default()).authorSocialLink)})});}function BlogAuthorSocials({author}){const entries=Object.entries(author.socials??{});return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(Socials_styles_module_default()).authorSocials,children:entries.map(([platform,linkUrl])=>{return/*#__PURE__*/(0,jsx_runtime.jsx)(SocialLink,{platform:platform,link:linkUrl},platform);})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Heading/index.js +var Heading = __webpack_require__(4608); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Blog/Components/Author/styles.module.css +var Author_styles_module = __webpack_require__(7339); +var Author_styles_module_default = /*#__PURE__*/__webpack_require__.n(Author_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Blog/Components/Author/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function MaybeLink(props){if(props.href){return/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{...props});}return/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:props.children});}function AuthorTitle({title}){return/*#__PURE__*/(0,jsx_runtime.jsx)("small",{className:(Author_styles_module_default()).authorTitle,title:title,children:title});}function AuthorName({name,as}){if(!as){return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{className:(Author_styles_module_default()).authorName,children:name});}else{return/*#__PURE__*/(0,jsx_runtime.jsx)(Heading/* default */.A,{as:as,className:(Author_styles_module_default()).authorName,children:name});}}function AuthorBlogPostCount({count}){return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{className:(0,clsx/* default */.A)((Author_styles_module_default()).authorBlogPostCount),children:count});}// Note: in the future we might want to have multiple "BlogAuthor" components +// Creating different display modes with the "as" prop may not be the best idea +// Explainer: https://kyleshevlin.com/prefer-multiple-compositions/ +// For now, we almost use the same design for all cases, so it's good enough +function BlogAuthor({as,author,className,count}){const{name,title,url,imageURL,email,page}=author;const link=page?.permalink||url||email&&`mailto:${email}`||undefined;return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)('avatar margin-bottom--sm',className,(Author_styles_module_default())[`author-as-${as}`]),children:[imageURL&&/*#__PURE__*/(0,jsx_runtime.jsx)(MaybeLink,{href:link,className:"avatar__photo-link",children:/*#__PURE__*/(0,jsx_runtime.jsx)("img",{className:(0,clsx/* default */.A)('avatar__photo',(Author_styles_module_default()).authorImage),src:imageURL,alt:name})}),(name||title)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)('avatar__intro',(Author_styles_module_default()).authorDetails),children:[/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"avatar__name",children:[name&&/*#__PURE__*/(0,jsx_runtime.jsx)(MaybeLink,{href:link,children:/*#__PURE__*/(0,jsx_runtime.jsx)(AuthorName,{name:name,as:as})}),count&&/*#__PURE__*/(0,jsx_runtime.jsx)(AuthorBlogPostCount,{count:count})]}),!!title&&/*#__PURE__*/(0,jsx_runtime.jsx)(AuthorTitle,{title:title}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogAuthorSocials,{author:author})]})]});} + +/***/ }), + +/***/ 5613: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ BlogAuthorsListPage) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(1213); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(7559); +/* harmony import */ var _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(6461); +/* harmony import */ var _theme_BlogLayout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2448); +/* harmony import */ var _theme_SearchMetadata__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1463); +/* harmony import */ var _theme_Heading__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4608); +/* harmony import */ var _theme_Blog_Components_Author__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1111); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2701); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_styles_module_css__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function AuthorListItem({author}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("li",{className:(_styles_module_css__WEBPACK_IMPORTED_MODULE_5___default().authorListItem),children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_theme_Blog_Components_Author__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A,{as:"h2",author:author,count:author.count})});}function AuthorsList({authors}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("section",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)('margin-vert--lg',(_styles_module_css__WEBPACK_IMPORTED_MODULE_5___default().authorsListSection)),children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("ul",{children:authors.map(author=>/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(AuthorListItem,{author:author},author.key))})});}function BlogAuthorsListPage({authors,sidebar}){const title=(0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_8__/* .translateBlogAuthorsListPageTitle */ .uz)();return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_9__/* .HtmlClassNameProvider */ .e3,{className:(0,clsx__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_10__/* .ThemeClassNames */ .G.wrapper.blogPages,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_10__/* .ThemeClassNames */ .G.page.blogAuthorsListPage),children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_9__/* .PageMetadata */ .be,{title:title}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_theme_SearchMetadata__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{tag:"blog_authors_list"}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_theme_BlogLayout__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{sidebar:sidebar,children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_theme_Heading__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A,{as:"h1",children:title}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(AuthorsList,{authors:authors})]})]});} + +/***/ }), + +/***/ 778: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ BlogAuthorsPostsPage) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(1213); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(7559); +/* harmony import */ var _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(6461); +/* harmony import */ var _docusaurus_Link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(725); +/* harmony import */ var _docusaurus_plugin_content_blog_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4096); +/* harmony import */ var _theme_BlogLayout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2448); +/* harmony import */ var _theme_BlogListPaginator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7713); +/* harmony import */ var _theme_SearchMetadata__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1463); +/* harmony import */ var _theme_BlogPostItems__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3892); +/* harmony import */ var _theme_Blog_Components_Author__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1111); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Metadata({author}){const title=(0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_9__/* .useBlogAuthorPageTitle */ .wI)(author);return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment,{children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_10__/* .PageMetadata */ .be,{title:title}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_theme_SearchMetadata__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A,{tag:"blog_authors_posts"})]});}function ViewAllAuthorsLink(){const{authorsListPath}=(0,_docusaurus_plugin_content_blog_client__WEBPACK_IMPORTED_MODULE_2__/* .useBlogMetadata */ .x)();return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_docusaurus_Link__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{href:authorsListPath,children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_9__/* .BlogAuthorsListViewAllLabel */ .np,{})});}function Content({author,items,sidebar,listMetadata}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_theme_BlogLayout__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A,{sidebar:sidebar,children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)("header",{className:"margin-bottom--xl",children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_theme_Blog_Components_Author__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A,{as:"h1",author:author}),author.description&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("p",{children:author.description}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(ViewAllAuthorsLink,{})]}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("hr",{}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_theme_BlogPostItems__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A,{items:items}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_theme_BlogListPaginator__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A,{metadata:listMetadata})]});}function BlogAuthorsPostsPage(props){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_10__/* .HtmlClassNameProvider */ .e3,{className:(0,clsx__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .A)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_12__/* .ThemeClassNames */ .G.wrapper.blogPages,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_12__/* .ThemeClassNames */ .G.page.blogAuthorsPostsPage),children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(Metadata,{...props}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(Content,{...props})]});} + +/***/ }), + +/***/ 9331: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ BlogArchive) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_Link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(725); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1312); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1213); +/* harmony import */ var _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6266); +/* harmony import */ var _theme_Layout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7356); +/* harmony import */ var _theme_Heading__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4608); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Year({year,posts}){const dateTimeFormat=(0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_6__/* .useDateTimeFormat */ .i)({day:'numeric',month:'long',timeZone:'UTC'});const formatDate=lastUpdated=>dateTimeFormat.format(new Date(lastUpdated));return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment,{children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_theme_Heading__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A,{as:"h3",id:year,children:year}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("ul",{children:posts.map(post=>/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("li",{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_docusaurus_Link__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{to:post.metadata.permalink,children:[formatDate(post.metadata.date)," - ",post.metadata.title]})},post.metadata.date))})]});}function YearsSection({years}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("section",{className:"margin-vert--lg",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"container",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"row",children:years.map((_props,idx)=>/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"col col--4 margin-vert--lg",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(Year,{..._props})},idx))})})});}function listPostsByYears(blogPosts){const postsByYear=blogPosts.reduce((posts,post)=>{const year=post.metadata.date.split('-')[0];const yearPosts=posts.get(year)??[];return posts.set(year,[post,...yearPosts]);},new Map());return Array.from(postsByYear,([year,posts])=>({year,posts}));}function BlogArchive({archive}){const title=(0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_2__/* .translate */ .T)({id:'theme.blog.archive.title',message:'Archive',description:'The page & hero title of the blog archive page'});const description=(0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_2__/* .translate */ .T)({id:'theme.blog.archive.description',message:'Archive',description:'The page & hero description of the blog archive page'});const years=listPostsByYears(archive.blogPosts);return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment,{children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_7__/* .PageMetadata */ .be,{title:title,description:description}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_theme_Layout__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A,{children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("header",{className:"hero hero--primary",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("div",{className:"container",children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_theme_Heading__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A,{as:"h1",className:"hero__title",children:title}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("p",{className:"hero__subtitle",children:description})]})}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("main",{children:years.length>0&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(YearsSection,{years:years})})]})]});} + +/***/ }), + +/***/ 2448: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ BlogLayout) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Layout/index.js + 53 modules +var Layout = __webpack_require__(7356); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useWindowSize.js +var useWindowSize = __webpack_require__(4581); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-blog/lib/client/index.js + 3 modules +var client = __webpack_require__(4096); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useThemeConfig.js +var useThemeConfig = __webpack_require__(6342); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Heading/index.js +var Heading = __webpack_require__(4608); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogSidebar/Content/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogSidebarYearGroup({year,yearGroupHeadingClassName,children}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{role:"group",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Heading/* default */.A,{as:"h3",className:yearGroupHeadingClassName,children:year}),children]});}function BlogSidebarContent({items,yearGroupHeadingClassName,ListComponent}){const themeConfig=(0,useThemeConfig/* useThemeConfig */.p)();if(themeConfig.blog.sidebar.groupByYear){const itemsByYear=(0,client/* groupBlogSidebarItemsByYear */.Ki)(items);return/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:itemsByYear.map(([year,yearItems])=>/*#__PURE__*/(0,jsx_runtime.jsx)(BlogSidebarYearGroup,{year:year,yearGroupHeadingClassName:yearGroupHeadingClassName,children:/*#__PURE__*/(0,jsx_runtime.jsx)(ListComponent,{items:yearItems})},year))});}else{return/*#__PURE__*/(0,jsx_runtime.jsx)(ListComponent,{items:items});}}/* harmony default export */ const Content = (/*#__PURE__*/(0,react.memo)(BlogSidebarContent)); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogSidebar/Desktop/styles.module.css +var styles_module = __webpack_require__(4669); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogSidebar/Desktop/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const ListComponent=({items})=>{return/*#__PURE__*/(0,jsx_runtime.jsx)(client/* BlogSidebarItemList */.OU,{items:items,ulClassName:(0,clsx/* default */.A)((styles_module_default()).sidebarItemList,'clean-list'),liClassName:(styles_module_default()).sidebarItem,linkClassName:(styles_module_default()).sidebarItemLink,linkActiveClassName:(styles_module_default()).sidebarItemLinkActive});};function BlogSidebarDesktop({sidebar}){const items=(0,client/* useVisibleBlogSidebarItems */.Gx)(sidebar.items);return/*#__PURE__*/(0,jsx_runtime.jsx)("aside",{className:"col col--3",children:/*#__PURE__*/(0,jsx_runtime.jsxs)("nav",{className:(0,clsx/* default */.A)((styles_module_default()).sidebar,'thin-scrollbar'),"aria-label":(0,Translate/* translate */.T)({id:'theme.blog.sidebar.navAriaLabel',message:'Blog recent posts navigation',description:'The ARIA label for recent posts in the blog sidebar'}),children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)((styles_module_default()).sidebarItemTitle,'margin-bottom--md'),children:sidebar.title}),/*#__PURE__*/(0,jsx_runtime.jsx)(Content,{items:items,ListComponent:ListComponent,yearGroupHeadingClassName:(styles_module_default()).yearGroupHeading})]})});}/* harmony default export */ const Desktop = (/*#__PURE__*/(0,react.memo)(BlogSidebarDesktop)); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/navbarSecondaryMenu/content.js +var content = __webpack_require__(5600); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogSidebar/Mobile/styles.module.css +var Mobile_styles_module = __webpack_require__(3265); +var Mobile_styles_module_default = /*#__PURE__*/__webpack_require__.n(Mobile_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogSidebar/Mobile/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Mobile_ListComponent=({items})=>{return/*#__PURE__*/(0,jsx_runtime.jsx)(client/* BlogSidebarItemList */.OU,{items:items,ulClassName:"menu__list",liClassName:"menu__list-item",linkClassName:"menu__link",linkActiveClassName:"menu__link--active"});};function BlogSidebarMobileSecondaryMenu({sidebar}){const items=(0,client/* useVisibleBlogSidebarItems */.Gx)(sidebar.items);return/*#__PURE__*/(0,jsx_runtime.jsx)(Content,{items:items,ListComponent:Mobile_ListComponent,yearGroupHeadingClassName:(Mobile_styles_module_default()).yearGroupHeading});}function BlogSidebarMobile(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(content/* NavbarSecondaryMenuFiller */.GX,{component:BlogSidebarMobileSecondaryMenu,props:props});}/* harmony default export */ const Mobile = (/*#__PURE__*/(0,react.memo)(BlogSidebarMobile)); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogSidebar/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogSidebar({sidebar}){const windowSize=(0,useWindowSize/* useWindowSize */.l)();if(!sidebar?.items.length){return null;}// Mobile sidebar doesn't need to be server-rendered +if(windowSize==='mobile'){return/*#__PURE__*/(0,jsx_runtime.jsx)(Mobile,{sidebar:sidebar});}return/*#__PURE__*/(0,jsx_runtime.jsx)(Desktop,{sidebar:sidebar});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogLayout/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogLayout(props){const{sidebar,toc,children,...layoutProps}=props;const hasSidebar=sidebar&&sidebar.items.length>0;return/*#__PURE__*/(0,jsx_runtime.jsx)(Layout/* default */.A,{...layoutProps,children:/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"container margin-vert--lg",children:/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"row",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BlogSidebar,{sidebar:sidebar}),/*#__PURE__*/(0,jsx_runtime.jsx)("main",{className:(0,clsx/* default */.A)('col',{'col--7':hasSidebar,'col--9 col--offset-1':!hasSidebar}),children:children}),toc&&/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"col col--2",children:toc})]})})});} + +/***/ }), + +/***/ 5124: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": () => (/* binding */ BlogListPage) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useDocusaurusContext.js +var useDocusaurusContext = __webpack_require__(4586); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.js + 1 modules +var metadataUtils = __webpack_require__(1213); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogLayout/index.js + 4 modules +var BlogLayout = __webpack_require__(2448); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogListPaginator/index.js +var BlogListPaginator = __webpack_require__(7713); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/SearchMetadata/index.js +var SearchMetadata = __webpack_require__(1463); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItems/index.js +var BlogPostItems = __webpack_require__(3892); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Head.js +var Head = __webpack_require__(5260); +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-blog/lib/client/index.js + 3 modules +var client = __webpack_require__(4096); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogListPage/StructuredData/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogListPageStructuredData(props){const structuredData=(0,client/* useBlogListPageStructuredData */.kJ)(props);return/*#__PURE__*/(0,jsx_runtime.jsx)(Head/* default */.A,{children:/*#__PURE__*/(0,jsx_runtime.jsx)("script",{type:"application/ld+json",children:JSON.stringify(structuredData)})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogListPage/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogListPageMetadata(props){const{metadata}=props;const{siteConfig:{title:siteTitle}}=(0,useDocusaurusContext/* default */.A)();const{blogDescription,blogTitle,permalink}=metadata;const isBlogOnlyMode=permalink==='/';const title=isBlogOnlyMode?siteTitle:blogTitle;return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(metadataUtils/* PageMetadata */.be,{title:title,description:blogDescription}),/*#__PURE__*/(0,jsx_runtime.jsx)(SearchMetadata/* default */.A,{tag:"blog_posts_list"})]});}function BlogListPageContent(props){const{metadata,items,sidebar}=props;return/*#__PURE__*/(0,jsx_runtime.jsxs)(BlogLayout/* default */.A,{sidebar:sidebar,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostItems/* default */.A,{items:items}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogListPaginator/* default */.A,{metadata:metadata})]});}function BlogListPage(props){return/*#__PURE__*/(0,jsx_runtime.jsxs)(metadataUtils/* HtmlClassNameProvider */.e3,{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.wrapper.blogPages,ThemeClassNames/* ThemeClassNames */.G.page.blogListPage),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BlogListPageMetadata,{...props}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogListPageStructuredData,{...props}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogListPageContent,{...props})]});} + +/***/ }), + +/***/ 7713: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ BlogListPaginator) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1312); +/* harmony import */ var _theme_PaginatorNavLink__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9022); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogListPaginator(props){const{metadata}=props;const{previousPage,nextPage}=metadata;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("nav",{className:"pagination-nav","aria-label":(0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .T)({id:'theme.blog.paginator.navAriaLabel',message:'Blog list page navigation',description:'The ARIA label for the blog pagination'}),children:[previousPage&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_theme_PaginatorNavLink__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{permalink:previousPage,title:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer entries"})}),nextPage&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_theme_PaginatorNavLink__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{permalink:nextPage,title:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older entries"}),isNext:true})]});} + +/***/ }), + +/***/ 2237: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ BlogPostItem) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-blog/lib/client/index.js + 3 modules +var client = __webpack_require__(4096); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Container/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogPostItemContainer({children,className}){return/*#__PURE__*/(0,jsx_runtime.jsx)("article",{className:className,children:children});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Header/Title/styles.module.css +var styles_module = __webpack_require__(9202); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Header/Title/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogPostItemHeaderTitle({className}){const{metadata,isBlogPostPage}=(0,client/* useBlogPost */.e7)();const{permalink,title}=metadata;const TitleHeading=isBlogPostPage?'h1':'h2';return/*#__PURE__*/(0,jsx_runtime.jsx)(TitleHeading,{className:(0,clsx/* default */.A)((styles_module_default()).title,className),children:isBlogPostPage?title:/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{to:permalink,children:title})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/usePluralForm.js +var usePluralForm = __webpack_require__(5846); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/IntlUtils.js +var IntlUtils = __webpack_require__(6266); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Header/Info/styles.module.css +var Info_styles_module = __webpack_require__(968); +var Info_styles_module_default = /*#__PURE__*/__webpack_require__.n(Info_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Header/Info/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Very simple pluralization: probably good enough for now +function useReadingTimePlural(){const{selectMessage}=(0,usePluralForm/* usePluralForm */.W)();return readingTimeFloat=>{const readingTime=Math.ceil(readingTimeFloat);return selectMessage(readingTime,(0,Translate/* translate */.T)({id:'theme.blog.post.readingTime.plurals',description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:'One min read|{readingTime} min read'},{readingTime}));};}function ReadingTime({readingTime}){const readingTimePlural=useReadingTimePlural();return/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:readingTimePlural(readingTime)});}function DateTime({date,formattedDate}){return/*#__PURE__*/(0,jsx_runtime.jsx)("time",{dateTime:date,children:formattedDate});}function Spacer(){return/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:' · '});}function BlogPostItemHeaderInfo({className}){const{metadata}=(0,client/* useBlogPost */.e7)();const{date,readingTime}=metadata;const dateTimeFormat=(0,IntlUtils/* useDateTimeFormat */.i)({day:'numeric',month:'long',year:'numeric',timeZone:'UTC'});const formatDate=blogDate=>dateTimeFormat.format(new Date(blogDate));return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)((Info_styles_module_default()).container,'margin-vert--md',className),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DateTime,{date:date,formattedDate:formatDate(date)}),typeof readingTime!=='undefined'&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Spacer,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(ReadingTime,{readingTime:readingTime})]})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Blog/Components/Author/index.js + 7 modules +var Author = __webpack_require__(1111); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Header/Authors/styles.module.css +var Authors_styles_module = __webpack_require__(1720); +var Authors_styles_module_default = /*#__PURE__*/__webpack_require__.n(Authors_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Header/Authors/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Component responsible for the authors layout +function BlogPostItemHeaderAuthors({className}){const{metadata:{authors},assets}=(0,client/* useBlogPost */.e7)();const authorsCount=authors.length;if(authorsCount===0){return null;}const imageOnly=authors.every(({name})=>!name);const singleAuthor=authors.length===1;return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)('margin-top--md margin-bottom--sm',imageOnly?(Authors_styles_module_default()).imageOnlyAuthorRow:'row',className),children:authors.map((author,idx)=>/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)(!imageOnly&&(singleAuthor?'col col--12':'col col--6'),imageOnly?(Authors_styles_module_default()).imageOnlyAuthorCol:(Authors_styles_module_default()).authorCol),children:/*#__PURE__*/(0,jsx_runtime.jsx)(Author/* default */.A,{author:{...author,// Handle author images using relative paths +imageURL:assets.authorsImageUrls[idx]??author.imageURL}})},idx))});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Header/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogPostItemHeader(){return/*#__PURE__*/(0,jsx_runtime.jsxs)("header",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostItemHeaderTitle,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostItemHeaderInfo,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostItemHeaderAuthors,{})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/utils-common/lib/index.js +var lib = __webpack_require__(440); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXContent/index.js + 27 modules +var MDXContent = __webpack_require__(9966); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Content/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogPostItemContent({children,className}){const{isBlogPostPage}=(0,client/* useBlogPost */.e7)();return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{// This ID is used for the feed generation to locate the main content +id:isBlogPostPage?lib/* blogPostContainerID */.LU:undefined,className:(0,clsx/* default */.A)('markdown',className),children:/*#__PURE__*/(0,jsx_runtime.jsx)(MDXContent/* default */.A,{children:children})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/EditMetaRow/index.js + 3 modules +var EditMetaRow = __webpack_require__(4722); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/TagsListInline/index.js +var TagsListInline = __webpack_require__(8986); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Footer/ReadMoreLink/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function ReadMoreLabel(){return/*#__PURE__*/(0,jsx_runtime.jsx)("b",{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read more"})});}function BlogPostItemFooterReadMoreLink(props){const{blogPostTitle,...linkProps}=props;return/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{"aria-label":(0,Translate/* translate */.T)({message:'Read more about {title}',id:'theme.blog.post.readMoreLabel',description:'The ARIA label for the link to full blog posts from excerpts'},{title:blogPostTitle}),...linkProps,children:/*#__PURE__*/(0,jsx_runtime.jsx)(ReadMoreLabel,{})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/Footer/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogPostItemFooter(){const{metadata,isBlogPostPage}=(0,client/* useBlogPost */.e7)();const{tags,title,editUrl,hasTruncateMarker,lastUpdatedBy,lastUpdatedAt}=metadata;// A post is truncated if it's in the "list view" and it has a truncate marker +const truncatedPost=!isBlogPostPage&&hasTruncateMarker;const tagsExists=tags.length>0;const renderFooter=tagsExists||truncatedPost||editUrl;if(!renderFooter){return null;}// BlogPost footer - details view +if(isBlogPostPage){const canDisplayEditMetaRow=!!(editUrl||lastUpdatedAt||lastUpdatedBy);return/*#__PURE__*/(0,jsx_runtime.jsxs)("footer",{className:"docusaurus-mt-lg",children:[tagsExists&&/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)('row','margin-top--sm',ThemeClassNames/* ThemeClassNames */.G.blog.blogFooterEditMetaRow),children:/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"col",children:/*#__PURE__*/(0,jsx_runtime.jsx)(TagsListInline/* default */.A,{tags:tags})})}),canDisplayEditMetaRow&&/*#__PURE__*/(0,jsx_runtime.jsx)(EditMetaRow/* default */.A,{className:(0,clsx/* default */.A)('margin-top--sm',ThemeClassNames/* ThemeClassNames */.G.blog.blogFooterEditMetaRow),editUrl:editUrl,lastUpdatedAt:lastUpdatedAt,lastUpdatedBy:lastUpdatedBy})]});}// BlogPost footer - list view +else{return/*#__PURE__*/(0,jsx_runtime.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[tagsExists&&/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)('col',{'col--9':truncatedPost}),children:/*#__PURE__*/(0,jsx_runtime.jsx)(TagsListInline/* default */.A,{tags:tags})}),truncatedPost&&/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)('col text--right',{'col--3':tagsExists}),children:/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostItemFooterReadMoreLink,{blogPostTitle:title,to:metadata.permalink})})]});}} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// apply a bottom margin in list view +function useContainerClassName(){const{isBlogPostPage}=(0,client/* useBlogPost */.e7)();return!isBlogPostPage?'margin-bottom--xl':undefined;}function BlogPostItem({children,className}){const containerClassName=useContainerClassName();return/*#__PURE__*/(0,jsx_runtime.jsxs)(BlogPostItemContainer,{className:(0,clsx/* default */.A)(containerClassName,className),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostItemHeader,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostItemContent,{children:children}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostItemFooter,{})]});} + +/***/ }), + +/***/ 3892: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ BlogPostItems) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_plugin_content_blog_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4096); +/* harmony import */ var _theme_BlogPostItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2237); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogPostItems({items,component:BlogPostItemComponent=_theme_BlogPostItem__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment,{children:items.map(({content:BlogPostContent})=>/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_plugin_content_blog_client__WEBPACK_IMPORTED_MODULE_1__/* .BlogPostProvider */ ["in"],{content:BlogPostContent,children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(BlogPostItemComponent,{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(BlogPostContent,{})})},BlogPostContent.metadata.permalink))});} + +/***/ }), + +/***/ 3858: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": () => (/* binding */ BlogPostPage) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.js + 1 modules +var metadataUtils = __webpack_require__(1213); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-blog/lib/client/index.js + 3 modules +var client = __webpack_require__(4096); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogLayout/index.js + 4 modules +var BlogLayout = __webpack_require__(2448); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostItem/index.js + 8 modules +var BlogPostItem = __webpack_require__(2237); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/PaginatorNavLink/index.js +var PaginatorNavLink = __webpack_require__(9022); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostPaginator/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogPostPaginator(props){const{nextItem,prevItem}=props;return/*#__PURE__*/(0,jsx_runtime.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,Translate/* translate */.T)({id:'theme.blog.post.paginator.navAriaLabel',message:'Blog post page navigation',description:'The ARIA label for the blog posts pagination'}),children:[prevItem&&/*#__PURE__*/(0,jsx_runtime.jsx)(PaginatorNavLink/* default */.A,{...prevItem,subLabel:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post",children:"Newer post"})}),nextItem&&/*#__PURE__*/(0,jsx_runtime.jsx)(PaginatorNavLink/* default */.A,{...nextItem,subLabel:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post",children:"Older post"}),isNext:true})]});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostPage/Metadata/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogPostPageMetadata(){const{assets,metadata}=(0,client/* useBlogPost */.e7)();const{title,description,date,tags,authors,frontMatter}=metadata;const{keywords}=frontMatter;const image=assets.image??frontMatter.image;return/*#__PURE__*/(0,jsx_runtime.jsxs)(metadataUtils/* PageMetadata */.be,{title:title,description:description,keywords:keywords,image:image,children:[/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{property:"og:type",content:"article"}),/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{property:"article:published_time",content:date}),authors.some(author=>author.url)&&/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{property:"article:author",content:authors.map(author=>author.url).filter(Boolean).join(',')}),tags.length>0&&/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{property:"article:tag",content:tags.map(tag=>tag.label).join(',')})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Head.js +var Head = __webpack_require__(5260); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostPage/StructuredData/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogPostStructuredData(){const structuredData=(0,client/* useBlogPostStructuredData */.J_)();return/*#__PURE__*/(0,jsx_runtime.jsx)(Head/* default */.A,{children:/*#__PURE__*/(0,jsx_runtime.jsx)("script",{type:"application/ld+json",children:JSON.stringify(structuredData)})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/TOC/index.js +var TOC = __webpack_require__(32); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/ContentVisibility/index.js + 1 modules +var ContentVisibility = __webpack_require__(1689); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogPostPage/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogPostPageContent({sidebar,children}){const{metadata,toc}=(0,client/* useBlogPost */.e7)();const{nextItem,prevItem,frontMatter}=metadata;const{hide_table_of_contents:hideTableOfContents,toc_min_heading_level:tocMinHeadingLevel,toc_max_heading_level:tocMaxHeadingLevel}=frontMatter;return/*#__PURE__*/(0,jsx_runtime.jsxs)(BlogLayout/* default */.A,{sidebar:sidebar,toc:!hideTableOfContents&&toc.length>0?/*#__PURE__*/(0,jsx_runtime.jsx)(TOC/* default */.A,{toc:toc,minHeadingLevel:tocMinHeadingLevel,maxHeadingLevel:tocMaxHeadingLevel}):undefined,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ContentVisibility/* default */.A,{metadata:metadata}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostItem/* default */.A,{children:children}),(nextItem||prevItem)&&/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostPaginator,{nextItem:nextItem,prevItem:prevItem})]});}function BlogPostPage(props){const BlogPostContent=props.content;return/*#__PURE__*/(0,jsx_runtime.jsx)(client/* BlogPostProvider */["in"],{content:props.content,isBlogPostPage:true,children:/*#__PURE__*/(0,jsx_runtime.jsxs)(metadataUtils/* HtmlClassNameProvider */.e3,{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.wrapper.blogPages,ThemeClassNames/* ThemeClassNames */.G.page.blogPostPage),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostPageMetadata,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostStructuredData,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostPageContent,{sidebar:props.sidebar,children:/*#__PURE__*/(0,jsx_runtime.jsx)(BlogPostContent,{})})]})});} + +/***/ }), + +/***/ 5068: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": () => (/* binding */ BlogTagsListPage) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +;// ./node_modules/@docusaurus/theme-common/lib/utils/tagsUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const translateTagsPageTitle=()=>(0,Translate/* translate */.T)({id:'theme.tags.tagsPageTitle',message:'Tags',description:'The title of the tag list page'});function getTagLetter(tag){return tag[0].toUpperCase();}/** + * Takes a list of tags (as provided by the content plugins), and groups them by + * their initials. + */function listTagsByLetters(tags){const groups={};Object.values(tags).forEach(tag=>{const initial=getTagLetter(tag.label);groups[initial]??=[];groups[initial].push(tag);});return Object.entries(groups)// Sort letters +.sort(([letter1],[letter2])=>letter1.localeCompare(letter2)).map(([letter,letterTags])=>{// Sort tags inside a letter +const sortedTags=letterTags.sort((tag1,tag2)=>tag1.label.localeCompare(tag2.label));return{letter,tags:sortedTags};});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.js + 1 modules +var metadataUtils = __webpack_require__(1213); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BlogLayout/index.js + 4 modules +var BlogLayout = __webpack_require__(2448); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Tag/index.js +var Tag = __webpack_require__(8282); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Heading/index.js +var Heading = __webpack_require__(4608); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/TagsListByLetter/styles.module.css +var styles_module = __webpack_require__(6216); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/TagsListByLetter/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function TagLetterEntryItem({letterEntry}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("article",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Heading/* default */.A,{as:"h2",id:letterEntry.letter,children:letterEntry.letter}),/*#__PURE__*/(0,jsx_runtime.jsx)("ul",{className:"padding--none",children:letterEntry.tags.map(tag=>/*#__PURE__*/(0,jsx_runtime.jsx)("li",{className:(styles_module_default()).tag,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Tag/* default */.A,{...tag})},tag.permalink))}),/*#__PURE__*/(0,jsx_runtime.jsx)("hr",{})]});}function TagsListByLetter({tags}){const letterList=listTagsByLetters(tags);return/*#__PURE__*/(0,jsx_runtime.jsx)("section",{className:"margin-vert--lg",children:letterList.map(letterEntry=>/*#__PURE__*/(0,jsx_runtime.jsx)(TagLetterEntryItem,{letterEntry:letterEntry},letterEntry.letter))});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/SearchMetadata/index.js +var SearchMetadata = __webpack_require__(1463); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BlogTagsListPage/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogTagsListPage({tags,sidebar}){const title=translateTagsPageTitle();return/*#__PURE__*/(0,jsx_runtime.jsxs)(metadataUtils/* HtmlClassNameProvider */.e3,{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.wrapper.blogPages,ThemeClassNames/* ThemeClassNames */.G.page.blogTagsListPage),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(metadataUtils/* PageMetadata */.be,{title:title}),/*#__PURE__*/(0,jsx_runtime.jsx)(SearchMetadata/* default */.A,{tag:"blog_tags_list"}),/*#__PURE__*/(0,jsx_runtime.jsxs)(BlogLayout/* default */.A,{sidebar:sidebar,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Heading/* default */.A,{as:"h1",children:title}),/*#__PURE__*/(0,jsx_runtime.jsx)(TagsListByLetter,{tags:tags})]})]});} + +/***/ }), + +/***/ 3069: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ BlogTagsPostsPage) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1312); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(1213); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(7559); +/* harmony import */ var _docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(6461); +/* harmony import */ var _docusaurus_Link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(725); +/* harmony import */ var _theme_BlogLayout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2448); +/* harmony import */ var _theme_BlogListPaginator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7713); +/* harmony import */ var _theme_SearchMetadata__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1463); +/* harmony import */ var _theme_BlogPostItems__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3892); +/* harmony import */ var _theme_ContentVisibility_Unlisted__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(2234); +/* harmony import */ var _theme_Heading__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(4608); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BlogTagsPostsPageMetadata({tag}){const title=(0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_10__/* .useBlogTagsPostsPageTitle */ .ZD)(tag);return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment,{children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_11__/* .PageMetadata */ .be,{title:title,description:tag.description}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_theme_SearchMetadata__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A,{tag:"blog_tags_posts"})]});}function BlogTagsPostsPageContent({tag,items,sidebar,listMetadata}){const title=(0,_docusaurus_theme_common_internal__WEBPACK_IMPORTED_MODULE_10__/* .useBlogTagsPostsPageTitle */ .ZD)(tag);return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_theme_BlogLayout__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A,{sidebar:sidebar,children:[tag.unlisted&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_theme_ContentVisibility_Unlisted__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A,{}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("header",{className:"margin-bottom--xl",children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_theme_Heading__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A,{as:"h1",children:title}),tag.description&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("p",{children:tag.description}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_docusaurus_Link__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{href:tag.allTagsPath,children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page",children:"View All Tags"})})]}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_theme_BlogPostItems__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A,{items:items}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_theme_BlogListPaginator__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A,{metadata:listMetadata})]});}function BlogTagsPostsPage(props){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_11__/* .HtmlClassNameProvider */ .e3,{className:(0,clsx__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .A)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_13__/* .ThemeClassNames */ .G.wrapper.blogPages,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_13__/* .ThemeClassNames */ .G.page.blogTagPostListPage),children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(BlogTagsPostsPageMetadata,{...props}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(BlogTagsPostsPageContent,{...props})]});} + +/***/ }), + +/***/ 2234: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ Unlisted) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4084); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7559); +/* harmony import */ var _theme_Admonition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9364); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function UnlistedBanner({className}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_theme_Admonition__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{type:"caution",title:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__/* .UnlistedBannerTitle */ .Rc,{}),className:(0,clsx__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(className,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__/* .ThemeClassNames */ .G.common.unlistedBanner),children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__/* .UnlistedBannerMessage */ .Uh,{})});}function Unlisted(props){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment,{children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__/* .UnlistedMetadata */ .AE,{}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(UnlistedBanner,{...props})]});} + +/***/ }), + +/***/ 1689: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ ContentVisibility) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/translations/contentVisibilityTranslations.js +var contentVisibilityTranslations = __webpack_require__(4084); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/index.js + 14 modules +var Admonition = __webpack_require__(9364); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/ContentVisibility/Draft/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Draft({className}){return/*#__PURE__*/(0,jsx_runtime.jsx)(Admonition/* default */.A,{type:"caution",title:/*#__PURE__*/(0,jsx_runtime.jsx)(contentVisibilityTranslations/* DraftBannerTitle */.Yh,{}),className:(0,clsx/* default */.A)(className,ThemeClassNames/* ThemeClassNames */.G.common.draftBanner),children:/*#__PURE__*/(0,jsx_runtime.jsx)(contentVisibilityTranslations/* DraftBannerMessage */.TT,{})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/ContentVisibility/Unlisted/index.js +var Unlisted = __webpack_require__(2234); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/ContentVisibility/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function ContentVisibility({metadata}){const{unlisted,frontMatter}=metadata;// Reading draft/unlisted status from frontMatter is useful to display +// the banners in dev mode (in dev, metadata.unlisted is always false) +// See https://github.com/facebook/docusaurus/issues/8285 +return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[(unlisted||frontMatter.unlisted)&&/*#__PURE__*/(0,jsx_runtime.jsx)(Unlisted/* default */.A,{}),frontMatter.draft&&/*#__PURE__*/(0,jsx_runtime.jsx)(Draft,{})]});} + +/***/ }), + +/***/ 6179: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ DocBreadcrumbs) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-docs/lib/client/docsUtils.js +var docsUtils = __webpack_require__(6972); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/routesUtils.js +var routesUtils = __webpack_require__(9169); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useBaseUrl.js +var useBaseUrl = __webpack_require__(6025); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Home/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconHome(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 24 24",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocBreadcrumbs/Items/Home/styles.module.css +var styles_module = __webpack_require__(3801); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocBreadcrumbs/Items/Home/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function HomeBreadcrumbItem(){const homeHref=(0,useBaseUrl/* default */.Ay)('/');return/*#__PURE__*/(0,jsx_runtime.jsx)("li",{className:"breadcrumbs__item",children:/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{"aria-label":(0,Translate/* translate */.T)({id:'theme.docs.breadcrumbs.home',message:'Home page',description:'The ARIA label for the home page in the breadcrumbs'}),className:"breadcrumbs__link",href:homeHref,children:/*#__PURE__*/(0,jsx_runtime.jsx)(IconHome,{className:(styles_module_default()).breadcrumbHomeIcon})})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocBreadcrumbs/styles.module.css +var DocBreadcrumbs_styles_module = __webpack_require__(3928); +var DocBreadcrumbs_styles_module_default = /*#__PURE__*/__webpack_require__.n(DocBreadcrumbs_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocBreadcrumbs/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// TODO move to design system folder +function BreadcrumbsItemLink({children,href,isLast}){const className='breadcrumbs__link';if(isLast){return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{className:className,itemProp:"name",children:children});}return href?/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{className:className,href:href,itemProp:"item",children:/*#__PURE__*/(0,jsx_runtime.jsx)("span",{itemProp:"name",children:children})}):/*#__PURE__*/// TODO Google search console doesn't like breadcrumb items without href. +// The schema doesn't seem to require `id` for each `item`, although Google +// insist to infer one, even if it's invalid. Removing `itemProp="item +// name"` for now, since I don't know how to properly fix it. +// See https://github.com/facebook/docusaurus/issues/7241 +(0,jsx_runtime.jsx)("span",{className:className,children:children});}// TODO move to design system folder +function BreadcrumbsItem({children,active,index,addMicrodata}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("li",{...(addMicrodata&&{itemScope:true,itemProp:'itemListElement',itemType:'https://schema.org/ListItem'}),className:(0,clsx/* default */.A)('breadcrumbs__item',{'breadcrumbs__item--active':active}),children:[children,/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{itemProp:"position",content:String(index+1)})]});}function DocBreadcrumbs(){const breadcrumbs=(0,docsUtils/* useSidebarBreadcrumbs */.OF)();const homePageRoute=(0,routesUtils/* useHomePageRoute */.Dt)();if(!breadcrumbs){return null;}return/*#__PURE__*/(0,jsx_runtime.jsx)("nav",{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.docs.docBreadcrumbs,(DocBreadcrumbs_styles_module_default()).breadcrumbsContainer),"aria-label":(0,Translate/* translate */.T)({id:'theme.docs.breadcrumbs.navAriaLabel',message:'Breadcrumbs',description:'The ARIA label for the breadcrumbs'}),children:/*#__PURE__*/(0,jsx_runtime.jsxs)("ul",{className:"breadcrumbs",itemScope:true,itemType:"https://schema.org/BreadcrumbList",children:[homePageRoute&&/*#__PURE__*/(0,jsx_runtime.jsx)(HomeBreadcrumbItem,{}),breadcrumbs.map((item,idx)=>{const isLast=idx===breadcrumbs.length-1;const href=item.type==='category'&&item.linkUnlisted?undefined:item.href;return/*#__PURE__*/(0,jsx_runtime.jsx)(BreadcrumbsItem,{active:isLast,index:idx,addMicrodata:!!href,children:/*#__PURE__*/(0,jsx_runtime.jsx)(BreadcrumbsItemLink,{href:href,isLast:isLast,children:item.label})},idx);})]})});} + +/***/ }), + +/***/ 8367: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": () => (/* binding */ DocCategoryGeneratedIndexPage) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.js + 1 modules +var metadataUtils = __webpack_require__(1213); +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-docs/lib/client/docsUtils.js +var docsUtils = __webpack_require__(6972); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useBaseUrl.js +var useBaseUrl = __webpack_require__(6025); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/usePluralForm.js +var usePluralForm = __webpack_require__(5846); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/isInternalUrl.js +var isInternalUrl = __webpack_require__(6654); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Heading/index.js +var Heading = __webpack_require__(4608); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocCard/styles.module.css +var styles_module = __webpack_require__(6112); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocCard/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useCategoryItemsPlural(){const{selectMessage}=(0,usePluralForm/* usePluralForm */.W)();return count=>selectMessage(count,(0,Translate/* translate */.T)({message:'1 item|{count} items',id:'theme.docs.DocCard.categoryDescription.plurals',description:'The default description for a category card in the generated index about how many items this category includes'},{count}));}function CardContainer({href,children}){return/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{href:href,className:(0,clsx/* default */.A)('card padding--lg',(styles_module_default()).cardContainer),children:children});}function CardLayout({href,icon,title,description}){return/*#__PURE__*/(0,jsx_runtime.jsxs)(CardContainer,{href:href,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Heading/* default */.A,{as:"h2",className:(0,clsx/* default */.A)('text--truncate',(styles_module_default()).cardTitle),title:title,children:[icon," ",title]}),description&&/*#__PURE__*/(0,jsx_runtime.jsx)("p",{className:(0,clsx/* default */.A)('text--truncate',(styles_module_default()).cardDescription),title:description,children:description})]});}function CardCategory({item}){const href=(0,docsUtils/* findFirstSidebarItemLink */.Nr)(item);const categoryItemsPlural=useCategoryItemsPlural();// Unexpected: categories that don't have a link have been filtered upfront +if(!href){return null;}return/*#__PURE__*/(0,jsx_runtime.jsx)(CardLayout,{href:href,icon:"\uD83D\uDDC3\uFE0F",title:item.label,description:item.description??categoryItemsPlural(item.items.length)});}function CardLink({item}){const icon=(0,isInternalUrl/* default */.A)(item.href)?'📄️':'🔗';const doc=(0,docsUtils/* useDocById */.cC)(item.docId??undefined);return/*#__PURE__*/(0,jsx_runtime.jsx)(CardLayout,{href:item.href,icon:icon,title:item.label,description:item.description??doc?.description});}function DocCard({item}){switch(item.type){case'link':return/*#__PURE__*/(0,jsx_runtime.jsx)(CardLink,{item:item});case'category':return/*#__PURE__*/(0,jsx_runtime.jsx)(CardCategory,{item:item});default:throw new Error(`unknown item type ${JSON.stringify(item)}`);}} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocCardList/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocCardListForCurrentSidebarCategory({className}){const category=(0,docsUtils/* useCurrentSidebarCategory */.$S)();return/*#__PURE__*/(0,jsx_runtime.jsx)(DocCardList,{items:category.items,className:className});}function DocCardList(props){const{items,className}=props;if(!items){return/*#__PURE__*/(0,jsx_runtime.jsx)(DocCardListForCurrentSidebarCategory,{...props});}const filteredItems=(0,docsUtils/* filterDocCardListItems */.d1)(items);return/*#__PURE__*/(0,jsx_runtime.jsx)("section",{className:(0,clsx/* default */.A)('row',className),children:filteredItems.map((item,index)=>/*#__PURE__*/(0,jsx_runtime.jsx)("article",{className:"col col--6 margin-bottom--lg",children:/*#__PURE__*/(0,jsx_runtime.jsx)(DocCard,{item:item})},index))});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocPaginator/index.js +var DocPaginator = __webpack_require__(7719); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocVersionBanner/index.js +var DocVersionBanner = __webpack_require__(1878); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocVersionBadge/index.js +var DocVersionBadge = __webpack_require__(4267); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocBreadcrumbs/index.js + 2 modules +var DocBreadcrumbs = __webpack_require__(6179); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +var DocCategoryGeneratedIndexPage_styles_module = __webpack_require__(1902); +var DocCategoryGeneratedIndexPage_styles_module_default = /*#__PURE__*/__webpack_require__.n(DocCategoryGeneratedIndexPage_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocCategoryGeneratedIndexPage/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocCategoryGeneratedIndexPageMetadata({categoryGeneratedIndex}){return/*#__PURE__*/(0,jsx_runtime.jsx)(metadataUtils/* PageMetadata */.be,{title:categoryGeneratedIndex.title,description:categoryGeneratedIndex.description,keywords:categoryGeneratedIndex.keywords// TODO `require` this? +,image:(0,useBaseUrl/* default */.Ay)(categoryGeneratedIndex.image)});}function DocCategoryGeneratedIndexPageContent({categoryGeneratedIndex}){const category=(0,docsUtils/* useCurrentSidebarCategory */.$S)();return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(DocCategoryGeneratedIndexPage_styles_module_default()).generatedIndexPage,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DocVersionBanner/* default */.A,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocBreadcrumbs/* default */.A,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocVersionBadge/* default */.A,{}),/*#__PURE__*/(0,jsx_runtime.jsxs)("header",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Heading/* default */.A,{as:"h1",className:(DocCategoryGeneratedIndexPage_styles_module_default()).title,children:categoryGeneratedIndex.title}),categoryGeneratedIndex.description&&/*#__PURE__*/(0,jsx_runtime.jsx)("p",{children:categoryGeneratedIndex.description})]}),/*#__PURE__*/(0,jsx_runtime.jsx)("article",{className:"margin-top--lg",children:/*#__PURE__*/(0,jsx_runtime.jsx)(DocCardList,{items:category.items,className:(DocCategoryGeneratedIndexPage_styles_module_default()).list})}),/*#__PURE__*/(0,jsx_runtime.jsx)("footer",{className:"margin-top--lg",children:/*#__PURE__*/(0,jsx_runtime.jsx)(DocPaginator/* default */.A,{previous:categoryGeneratedIndex.navigation.previous,next:categoryGeneratedIndex.navigation.next})})]});}function DocCategoryGeneratedIndexPage(props){return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DocCategoryGeneratedIndexPageMetadata,{...props}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocCategoryGeneratedIndexPageContent,{...props})]});} + +/***/ }), + +/***/ 1123: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": () => (/* binding */ DocItem) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.js + 1 modules +var metadataUtils = __webpack_require__(1213); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/reactUtils.js +var reactUtils = __webpack_require__(9532); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/plugin-content-docs/lib/client/doc.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Context=/*#__PURE__*/react.createContext(null);/** + * Note: we don't use `PropDoc` as context value on purpose. Metadata is + * currently stored inside the MDX component, but we may want to change that in + * the future. This layer is a good opportunity to decouple storage from + * consuming API, potentially allowing us to provide metadata as both props and + * route context without duplicating the chunks in the future. + */function useContextValue(content){return (0,react.useMemo)(()=>({metadata:content.metadata,frontMatter:content.frontMatter,assets:content.assets,contentTitle:content.contentTitle,toc:content.toc}),[content]);}/** + * This is a very thin layer around the `content` received from the MDX loader. + * It provides metadata about the doc to the children tree. + */function DocProvider({children,content}){const contextValue=useContextValue(content);return/*#__PURE__*/(0,jsx_runtime.jsx)(Context.Provider,{value:contextValue,children:children});}/** + * Returns the data of the currently browsed doc. Gives access to the doc's MDX + * Component, front matter, metadata, TOC, etc. When swizzling a low-level + * component (e.g. the "Edit this page" link) and you need some extra metadata, + * you don't have to drill the props all the way through the component tree: + * simply use this hook instead. + */function useDoc(){const doc=(0,react.useContext)(Context);if(doc===null){throw new reactUtils/* ReactContextError */.dV('DocProvider');}return doc;} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocItem/Metadata/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocItemMetadata(){const{metadata,frontMatter,assets}=useDoc();return/*#__PURE__*/(0,jsx_runtime.jsx)(metadataUtils/* PageMetadata */.be,{title:metadata.title,description:metadata.description,keywords:frontMatter.keywords,image:assets.image??frontMatter.image});} +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useWindowSize.js +var useWindowSize = __webpack_require__(4581); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocPaginator/index.js +var DocPaginator = __webpack_require__(7719); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocItem/Paginator/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * This extra component is needed, because should remain generic. + * DocPaginator is used in non-docs contexts too: generated-index pages... + */function DocItemPaginator(){const{metadata}=useDoc();return/*#__PURE__*/(0,jsx_runtime.jsx)(DocPaginator/* default */.A,{previous:metadata.previous,next:metadata.next});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocVersionBanner/index.js +var DocVersionBanner = __webpack_require__(1878); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocVersionBadge/index.js +var DocVersionBadge = __webpack_require__(4267); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/TagsListInline/index.js +var TagsListInline = __webpack_require__(8986); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/EditMetaRow/index.js + 3 modules +var EditMetaRow = __webpack_require__(4722); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocItem/Footer/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocItemFooter(){const{metadata}=useDoc();const{editUrl,lastUpdatedAt,lastUpdatedBy,tags}=metadata;const canDisplayTagsRow=tags.length>0;const canDisplayEditMetaRow=!!(editUrl||lastUpdatedAt||lastUpdatedBy);const canDisplayFooter=canDisplayTagsRow||canDisplayEditMetaRow;if(!canDisplayFooter){return null;}return/*#__PURE__*/(0,jsx_runtime.jsxs)("footer",{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.docs.docFooter,'docusaurus-mt-lg'),children:[canDisplayTagsRow&&/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)('row margin-top--sm',ThemeClassNames/* ThemeClassNames */.G.docs.docFooterTagsRow),children:/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"col",children:/*#__PURE__*/(0,jsx_runtime.jsx)(TagsListInline/* default */.A,{tags:tags})})}),canDisplayEditMetaRow&&/*#__PURE__*/(0,jsx_runtime.jsx)(EditMetaRow/* default */.A,{className:(0,clsx/* default */.A)('margin-top--sm',ThemeClassNames/* ThemeClassNames */.G.docs.docFooterEditMetaRow),editUrl:editUrl,lastUpdatedAt:lastUpdatedAt,lastUpdatedBy:lastUpdatedBy})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/components/Collapsible/index.js +var Collapsible = __webpack_require__(1422); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/TOCItems/index.js + 3 modules +var TOCItems = __webpack_require__(5195); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/TOCCollapsible/CollapseButton/styles.module.css +var styles_module = __webpack_require__(9136); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/TOCCollapsible/CollapseButton/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function TOCCollapsibleCollapseButton({collapsed,...props}){return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{type:"button",...props,className:(0,clsx/* default */.A)('clean-btn',(styles_module_default()).tocCollapsibleButton,!collapsed&&(styles_module_default()).tocCollapsibleButtonExpanded,props.className),children:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/TOCCollapsible/styles.module.css +var TOCCollapsible_styles_module = __webpack_require__(2586); +var TOCCollapsible_styles_module_default = /*#__PURE__*/__webpack_require__.n(TOCCollapsible_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/TOCCollapsible/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function TOCCollapsible({toc,className,minHeadingLevel,maxHeadingLevel}){const{collapsed,toggleCollapsed}=(0,Collapsible/* useCollapsible */.u)({initialState:true});return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)((TOCCollapsible_styles_module_default()).tocCollapsible,!collapsed&&(TOCCollapsible_styles_module_default()).tocCollapsibleExpanded,className),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(TOCCollapsibleCollapseButton,{collapsed:collapsed,onClick:toggleCollapsed}),/*#__PURE__*/(0,jsx_runtime.jsx)(Collapsible/* Collapsible */.N,{lazy:true,className:(TOCCollapsible_styles_module_default()).tocCollapsibleContent,collapsed:collapsed,children:/*#__PURE__*/(0,jsx_runtime.jsx)(TOCItems/* default */.A,{toc:toc,minHeadingLevel:minHeadingLevel,maxHeadingLevel:maxHeadingLevel})})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocItem/TOC/Mobile/styles.module.css +var Mobile_styles_module = __webpack_require__(4061); +var Mobile_styles_module_default = /*#__PURE__*/__webpack_require__.n(Mobile_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocItem/TOC/Mobile/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocItemTOCMobile(){const{toc,frontMatter}=useDoc();return/*#__PURE__*/(0,jsx_runtime.jsx)(TOCCollapsible,{toc:toc,minHeadingLevel:frontMatter.toc_min_heading_level,maxHeadingLevel:frontMatter.toc_max_heading_level,className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.docs.docTocMobile,(Mobile_styles_module_default()).tocMobile)});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/TOC/index.js +var TOC = __webpack_require__(32); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocItem/TOC/Desktop/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocItemTOCDesktop(){const{toc,frontMatter}=useDoc();return/*#__PURE__*/(0,jsx_runtime.jsx)(TOC/* default */.A,{toc:toc,minHeadingLevel:frontMatter.toc_min_heading_level,maxHeadingLevel:frontMatter.toc_max_heading_level,className:ThemeClassNames/* ThemeClassNames */.G.docs.docTocDesktop});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Heading/index.js +var Heading = __webpack_require__(4608); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXContent/index.js + 27 modules +var MDXContent = __webpack_require__(9966); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocItem/Content/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + Title can be declared inside md content or declared through + front matter and added manually. To make both cases consistent, + the added title is added under the same div.markdown block + See https://github.com/facebook/docusaurus/pull/4882#issuecomment-853021120 + + We render a "synthetic title" if: + - user doesn't ask to hide it with front matter + - the markdown content does not already contain a top-level h1 heading +*/function useSyntheticTitle(){const{metadata,frontMatter,contentTitle}=useDoc();const shouldRender=!frontMatter.hide_title&&typeof contentTitle==='undefined';if(!shouldRender){return null;}return metadata.title;}function DocItemContent({children}){const syntheticTitle=useSyntheticTitle();return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.docs.docMarkdown,'markdown'),children:[syntheticTitle&&/*#__PURE__*/(0,jsx_runtime.jsx)("header",{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Heading/* default */.A,{as:"h1",children:syntheticTitle})}),/*#__PURE__*/(0,jsx_runtime.jsx)(MDXContent/* default */.A,{children:children})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocBreadcrumbs/index.js + 2 modules +var DocBreadcrumbs = __webpack_require__(6179); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/ContentVisibility/index.js + 1 modules +var ContentVisibility = __webpack_require__(1689); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocItem/Layout/styles.module.css +var Layout_styles_module = __webpack_require__(6024); +var Layout_styles_module_default = /*#__PURE__*/__webpack_require__.n(Layout_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocItem/Layout/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Decide if the toc should be rendered, on mobile or desktop viewports + */function useDocTOC(){const{frontMatter,toc}=useDoc();const windowSize=(0,useWindowSize/* useWindowSize */.l)();const hidden=frontMatter.hide_table_of_contents;const canRender=!hidden&&toc.length>0;const mobile=canRender?/*#__PURE__*/(0,jsx_runtime.jsx)(DocItemTOCMobile,{}):undefined;const desktop=canRender&&(windowSize==='desktop'||windowSize==='ssr')?/*#__PURE__*/(0,jsx_runtime.jsx)(DocItemTOCDesktop,{}):undefined;return{hidden,mobile,desktop};}function DocItemLayout({children}){const docTOC=useDocTOC();const{metadata}=useDoc();return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"row",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)('col',!docTOC.hidden&&(Layout_styles_module_default()).docItemCol),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ContentVisibility/* default */.A,{metadata:metadata}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocVersionBanner/* default */.A,{}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(Layout_styles_module_default()).docItemContainer,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)("article",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DocBreadcrumbs/* default */.A,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocVersionBadge/* default */.A,{}),docTOC.mobile,/*#__PURE__*/(0,jsx_runtime.jsx)(DocItemContent,{children:children}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocItemFooter,{})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocItemPaginator,{})]})]}),docTOC.desktop&&/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"col col--3",children:docTOC.desktop})]});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocItem/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocItem(props){const docHtmlClassName=`docs-doc-id-${props.content.metadata.id}`;const MDXComponent=props.content;return/*#__PURE__*/(0,jsx_runtime.jsx)(DocProvider,{content:props.content,children:/*#__PURE__*/(0,jsx_runtime.jsxs)(metadataUtils/* HtmlClassNameProvider */.e3,{className:docHtmlClassName,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DocItemMetadata,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocItemLayout,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(MDXComponent,{})})]})});} + +/***/ }), + +/***/ 7719: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ DocPaginator) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1312); +/* harmony import */ var _theme_PaginatorNavLink__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9022); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocPaginator(props){const{previous,next}=props;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .T)({id:'theme.docs.paginator.navAriaLabel',message:'Docs pages',description:'The ARIA label for the docs pagination'}),children:[previous&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_theme_PaginatorNavLink__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{...previous,subLabel:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),next&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_theme_PaginatorNavLink__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{...next,subLabel:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:true})]});} + +/***/ }), + +/***/ 8319: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": () => (/* binding */ DocRoot) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.js + 1 modules +var metadataUtils = __webpack_require__(1213); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-docs/lib/client/docsUtils.js +var docsUtils = __webpack_require__(6972); +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-docs/lib/client/docsSidebar.js +var docsSidebar = __webpack_require__(609); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/scrollUtils.js +var scrollUtils = __webpack_require__(3104); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useLocationChange.js +var useLocationChange = __webpack_require__(5062); +;// ./node_modules/@docusaurus/theme-common/lib/hooks/useBackToTopButton.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** Wires the logic for the back to top button. */function useBackToTopButton({threshold}){const[shown,setShown]=(0,react.useState)(false);const isFocusedAnchor=(0,react.useRef)(false);const{startScroll,cancelScroll}=(0,scrollUtils/* useSmoothScrollTo */.gk)();(0,scrollUtils/* useScrollPosition */.Mq)(({scrollY:scrollTop},lastPosition)=>{const lastScrollTop=lastPosition?.scrollY;// Component is just being mounted. Not really a scroll event from the user. +// Ignore it. +if(!lastScrollTop){return;}if(isFocusedAnchor.current){// This scroll position change is triggered by navigating to an anchor. +// Ignore it. +isFocusedAnchor.current=false;}else if(scrollTop>=lastScrollTop){// The user has scrolled down to "fight against" the animation. Cancel any +// animation under progress. +cancelScroll();setShown(false);}else if(scrollTop{if(locationChangeEvent.location.hash){isFocusedAnchor.current=true;setShown(false);}});return{shown,scrollToTop:()=>startScroll(0)};} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/BackToTopButton/styles.module.css +var styles_module = __webpack_require__(1871); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/BackToTopButton/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function BackToTopButton(){const{shown,scrollToTop}=useBackToTopButton({threshold:300});return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{"aria-label":(0,Translate/* translate */.T)({id:'theme.BackToTopButton.buttonAriaLabel',message:'Scroll back to top',description:'The ARIA label for the back to top button'}),className:(0,clsx/* default */.A)('clean-btn',ThemeClassNames/* ThemeClassNames */.G.common.backToTopButton,(styles_module_default()).backToTopButton,shown&&(styles_module_default()).backToTopButtonShow),type:"button",onClick:scrollToTop});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/accessibilityUtils.js +var accessibilityUtils = __webpack_require__(3109); +// EXTERNAL MODULE: ./node_modules/react-router/esm/react-router.js +var react_router = __webpack_require__(6347); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useWindowSize.js +var useWindowSize = __webpack_require__(4581); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useThemeConfig.js +var useThemeConfig = __webpack_require__(6342); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Logo/index.js +var Logo = __webpack_require__(3465); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Arrow/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconArrow(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...props,children:/*#__PURE__*/(0,jsx_runtime.jsxs)("g",{fill:"#7a7a7a",children:[/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +var CollapseButton_styles_module = __webpack_require__(5599); +var CollapseButton_styles_module_default = /*#__PURE__*/__webpack_require__.n(CollapseButton_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebar/Desktop/CollapseButton/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function CollapseButton({onClick}){return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{type:"button",title:(0,Translate/* translate */.T)({id:'theme.docs.sidebar.collapseButtonTitle',message:'Collapse sidebar',description:'The title attribute for collapse button of doc sidebar'}),"aria-label":(0,Translate/* translate */.T)({id:'theme.docs.sidebar.collapseButtonAriaLabel',message:'Collapse sidebar',description:'The title attribute for collapse button of doc sidebar'}),className:(0,clsx/* default */.A)('button button--secondary button--outline',(CollapseButton_styles_module_default()).collapseSidebarButton),onClick:onClick,children:/*#__PURE__*/(0,jsx_runtime.jsx)(IconArrow,{className:(CollapseButton_styles_module_default()).collapseSidebarButtonIcon})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/announcementBar.js +var announcementBar = __webpack_require__(5041); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/reactUtils.js +var reactUtils = __webpack_require__(9532); +;// ./node_modules/@docusaurus/plugin-content-docs/lib/client/docSidebarItemsExpandedState.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const EmptyContext=Symbol('EmptyContext');const Context=/*#__PURE__*/react.createContext(EmptyContext);/** + * Should be used to wrap one sidebar category level. This provider syncs the + * expanded states of all sibling categories, and categories can choose to + * collapse itself if another one is expanded. + */function DocSidebarItemsExpandedStateProvider({children}){const[expandedItem,setExpandedItem]=(0,react.useState)(null);const contextValue=(0,react.useMemo)(()=>({expandedItem,setExpandedItem}),[expandedItem]);return/*#__PURE__*/(0,jsx_runtime.jsx)(Context.Provider,{value:contextValue,children:children});}function useDocSidebarItemsExpandedState(){const value=(0,react.useContext)(Context);if(value===EmptyContext){throw new reactUtils/* ReactContextError */.dV('DocSidebarItemsExpandedStateProvider');}return value;} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/components/Collapsible/index.js +var Collapsible = __webpack_require__(1422); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/routesUtils.js +var routesUtils = __webpack_require__(9169); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useIsBrowser.js +var useIsBrowser = __webpack_require__(2303); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebarItem/Category/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// If we navigate to a category and it becomes active, it should automatically +// expand itself +function useAutoExpandActiveCategory({isActive,collapsed,updateCollapsed}){const wasActive=(0,reactUtils/* usePrevious */.ZC)(isActive);(0,react.useEffect)(()=>{const justBecameActive=isActive&&!wasActive;if(justBecameActive&&collapsed){updateCollapsed(false);}},[isActive,wasActive,collapsed,updateCollapsed]);}/** + * When a collapsible category has no link, we still link it to its first child + * during SSR as a temporary fallback. This allows to be able to navigate inside + * the category even when JS fails to load, is delayed or simply disabled + * React hydration becomes an optional progressive enhancement + * see https://github.com/facebookincubator/infima/issues/36#issuecomment-772543188 + * see https://github.com/facebook/docusaurus/issues/3030 + */function useCategoryHrefWithSSRFallback(item){const isBrowser=(0,useIsBrowser/* default */.A)();return (0,react.useMemo)(()=>{if(item.href&&!item.linkUnlisted){return item.href;}// In these cases, it's not necessary to render a fallback +// We skip the "findFirstCategoryLink" computation +if(isBrowser||!item.collapsible){return undefined;}return (0,docsUtils/* findFirstSidebarItemLink */.Nr)(item);},[item,isBrowser]);}function Category_CollapseButton({collapsed,categoryLabel,onClick}){return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{"aria-label":collapsed?(0,Translate/* translate */.T)({id:'theme.DocSidebarItem.expandCategoryAriaLabel',message:"Expand sidebar category '{label}'",description:'The ARIA label to expand the sidebar category'},{label:categoryLabel}):(0,Translate/* translate */.T)({id:'theme.DocSidebarItem.collapseCategoryAriaLabel',message:"Collapse sidebar category '{label}'",description:'The ARIA label to collapse the sidebar category'},{label:categoryLabel}),"aria-expanded":!collapsed,type:"button",className:"clean-btn menu__caret",onClick:onClick});}function DocSidebarItemCategory({item,onItemClick,activePath,level,index,...props}){const{items,label,collapsible,className,href}=item;const{docs:{sidebar:{autoCollapseCategories}}}=(0,useThemeConfig/* useThemeConfig */.p)();const hrefWithSSRFallback=useCategoryHrefWithSSRFallback(item);const isActive=(0,docsUtils/* isActiveSidebarItem */.w8)(item,activePath);const isCurrentPage=(0,routesUtils/* isSamePath */.ys)(href,activePath);const{collapsed,setCollapsed}=(0,Collapsible/* useCollapsible */.u)({// Active categories are always initialized as expanded. The default +// (`item.collapsed`) is only used for non-active categories. +initialState:()=>{if(!collapsible){return false;}return isActive?false:item.collapsed;}});const{expandedItem,setExpandedItem}=useDocSidebarItemsExpandedState();// Use this instead of `setCollapsed`, because it is also reactive +const updateCollapsed=(toCollapsed=!collapsed)=>{setExpandedItem(toCollapsed?null:index);setCollapsed(toCollapsed);};useAutoExpandActiveCategory({isActive,collapsed,updateCollapsed});(0,react.useEffect)(()=>{if(collapsible&&expandedItem!=null&&expandedItem!==index&&autoCollapseCategories){setCollapsed(true);}},[collapsible,expandedItem,index,setCollapsed,autoCollapseCategories]);return/*#__PURE__*/(0,jsx_runtime.jsxs)("li",{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.docs.docSidebarItemCategory,ThemeClassNames/* ThemeClassNames */.G.docs.docSidebarItemCategoryLevel(level),'menu__list-item',{'menu__list-item--collapsed':collapsed},className),children:[/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)('menu__list-item-collapsible',{'menu__list-item-collapsible--active':isCurrentPage}),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{className:(0,clsx/* default */.A)('menu__link',{'menu__link--sublist':collapsible,'menu__link--sublist-caret':!href&&collapsible,'menu__link--active':isActive}),onClick:collapsible?e=>{onItemClick?.(item);if(href){updateCollapsed(false);}else{e.preventDefault();updateCollapsed();}}:()=>{onItemClick?.(item);},"aria-current":isCurrentPage?'page':undefined,role:collapsible&&!href?'button':undefined,"aria-expanded":collapsible&&!href?!collapsed:undefined,href:collapsible?hrefWithSSRFallback??'#':hrefWithSSRFallback,...props,children:label}),href&&collapsible&&/*#__PURE__*/(0,jsx_runtime.jsx)(Category_CollapseButton,{collapsed:collapsed,categoryLabel:label,onClick:e=>{e.preventDefault();updateCollapsed();}})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(Collapsible/* Collapsible */.N,{lazy:true,as:"ul",className:"menu__list",collapsed:collapsed,children:/*#__PURE__*/(0,jsx_runtime.jsx)(theme_DocSidebarItems,{items:items,tabIndex:collapsed?-1:0,onItemClick:onItemClick,activePath:activePath,level:level+1})})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/isInternalUrl.js +var isInternalUrl = __webpack_require__(6654); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/ExternalLink/index.js +var ExternalLink = __webpack_require__(5835); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebarItem/Link/styles.module.css +var Link_styles_module = __webpack_require__(1398); +var Link_styles_module_default = /*#__PURE__*/__webpack_require__.n(Link_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebarItem/Link/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocSidebarItemLink({item,onItemClick,activePath,level,index,...props}){const{href,label,className,autoAddBaseUrl}=item;const isActive=(0,docsUtils/* isActiveSidebarItem */.w8)(item,activePath);const isInternalLink=(0,isInternalUrl/* default */.A)(href);return/*#__PURE__*/(0,jsx_runtime.jsx)("li",{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.docs.docSidebarItemLink,ThemeClassNames/* ThemeClassNames */.G.docs.docSidebarItemLinkLevel(level),'menu__list-item',className),children:/*#__PURE__*/(0,jsx_runtime.jsxs)(Link/* default */.A,{className:(0,clsx/* default */.A)('menu__link',!isInternalLink&&(Link_styles_module_default()).menuExternalLink,{'menu__link--active':isActive}),autoAddBaseUrl:autoAddBaseUrl,"aria-current":isActive?'page':undefined,to:href,...(isInternalLink&&{onClick:onItemClick?()=>onItemClick(item):undefined}),...props,children:[label,!isInternalLink&&/*#__PURE__*/(0,jsx_runtime.jsx)(ExternalLink/* default */.A,{})]})},label);} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebarItem/Html/styles.module.css +var Html_styles_module = __webpack_require__(2105); +var Html_styles_module_default = /*#__PURE__*/__webpack_require__.n(Html_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebarItem/Html/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocSidebarItemHtml({item,level,index}){const{value,defaultStyle,className}=item;return/*#__PURE__*/(0,jsx_runtime.jsx)("li",{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.docs.docSidebarItemLink,ThemeClassNames/* ThemeClassNames */.G.docs.docSidebarItemLinkLevel(level),defaultStyle&&[(Html_styles_module_default()).menuHtmlItem,'menu__list-item'],className),// eslint-disable-next-line react/no-danger +dangerouslySetInnerHTML:{__html:value}},index);} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebarItem/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocSidebarItem({item,...props}){switch(item.type){case'category':return/*#__PURE__*/(0,jsx_runtime.jsx)(DocSidebarItemCategory,{item:item,...props});case'html':return/*#__PURE__*/(0,jsx_runtime.jsx)(DocSidebarItemHtml,{item:item,...props});case'link':default:return/*#__PURE__*/(0,jsx_runtime.jsx)(DocSidebarItemLink,{item:item,...props});}} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebarItems/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocSidebarItems({items,...props}){const visibleItems=(0,docsUtils/* useVisibleSidebarItems */.Y)(items,props.activePath);return/*#__PURE__*/(0,jsx_runtime.jsx)(DocSidebarItemsExpandedStateProvider,{children:visibleItems.map((item,index)=>/*#__PURE__*/(0,jsx_runtime.jsx)(DocSidebarItem,{item:item,index:index,...props},index))});}// Optimize sidebar at each "level" +/* harmony default export */ const theme_DocSidebarItems = (/*#__PURE__*/(0,react.memo)(DocSidebarItems)); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebar/Desktop/Content/styles.module.css +var Content_styles_module = __webpack_require__(1733); +var Content_styles_module_default = /*#__PURE__*/__webpack_require__.n(Content_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebar/Desktop/Content/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useShowAnnouncementBar(){const{isActive}=(0,announcementBar/* useAnnouncementBar */.M)();const[showAnnouncementBar,setShowAnnouncementBar]=(0,react.useState)(isActive);(0,scrollUtils/* useScrollPosition */.Mq)(({scrollY})=>{if(isActive){setShowAnnouncementBar(scrollY===0);}},[isActive]);return isActive&&showAnnouncementBar;}function DocSidebarDesktopContent({path,sidebar,className}){const showAnnouncementBar=useShowAnnouncementBar();return/*#__PURE__*/(0,jsx_runtime.jsx)("nav",{"aria-label":(0,Translate/* translate */.T)({id:'theme.docs.sidebar.navAriaLabel',message:'Docs sidebar',description:'The ARIA label for the sidebar navigation'}),className:(0,clsx/* default */.A)('menu thin-scrollbar',(Content_styles_module_default()).menu,showAnnouncementBar&&(Content_styles_module_default()).menuWithAnnouncementBar,className),children:/*#__PURE__*/(0,jsx_runtime.jsx)("ul",{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.docs.docSidebarMenu,'menu__list'),children:/*#__PURE__*/(0,jsx_runtime.jsx)(theme_DocSidebarItems,{items:sidebar,activePath:path,level:1})})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebar/Desktop/styles.module.css +var Desktop_styles_module = __webpack_require__(6263); +var Desktop_styles_module_default = /*#__PURE__*/__webpack_require__.n(Desktop_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebar/Desktop/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocSidebarDesktop({path,sidebar,onCollapse,isHidden}){const{navbar:{hideOnScroll},docs:{sidebar:{hideable}}}=(0,useThemeConfig/* useThemeConfig */.p)();return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)((Desktop_styles_module_default()).sidebar,hideOnScroll&&(Desktop_styles_module_default()).sidebarWithHideableNavbar,isHidden&&(Desktop_styles_module_default()).sidebarHidden),children:[hideOnScroll&&/*#__PURE__*/(0,jsx_runtime.jsx)(Logo/* default */.A,{tabIndex:-1,className:(Desktop_styles_module_default()).sidebarLogo}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocSidebarDesktopContent,{path:path,sidebar:sidebar}),hideable&&/*#__PURE__*/(0,jsx_runtime.jsx)(CollapseButton,{onClick:onCollapse})]});}/* harmony default export */ const Desktop = (/*#__PURE__*/react.memo(DocSidebarDesktop)); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/navbarSecondaryMenu/content.js +var content = __webpack_require__(5600); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/navbarMobileSidebar.js + 1 modules +var navbarMobileSidebar = __webpack_require__(9876); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebar/Mobile/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// eslint-disable-next-line react/function-component-definition +const DocSidebarMobileSecondaryMenu=({sidebar,path})=>{const mobileSidebar=(0,navbarMobileSidebar/* useNavbarMobileSidebar */.M)();return/*#__PURE__*/(0,jsx_runtime.jsx)("ul",{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.docs.docSidebarMenu,'menu__list'),children:/*#__PURE__*/(0,jsx_runtime.jsx)(theme_DocSidebarItems,{items:sidebar,activePath:path,onItemClick:item=>{// Mobile sidebar should only be closed if the category has a link +if(item.type==='category'&&item.href){mobileSidebar.toggle();}if(item.type==='link'){mobileSidebar.toggle();}},level:1})});};function DocSidebarMobile(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(content/* NavbarSecondaryMenuFiller */.GX,{component:DocSidebarMobileSecondaryMenu,props:props});}/* harmony default export */ const Mobile = (/*#__PURE__*/react.memo(DocSidebarMobile)); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocSidebar/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocSidebar(props){const windowSize=(0,useWindowSize/* useWindowSize */.l)();// Desktop sidebar visible on hydration: need SSR rendering +const shouldRenderSidebarDesktop=windowSize==='desktop'||windowSize==='ssr';// Mobile sidebar not visible on hydration: can avoid SSR rendering +const shouldRenderSidebarMobile=windowSize==='mobile';return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[shouldRenderSidebarDesktop&&/*#__PURE__*/(0,jsx_runtime.jsx)(Desktop,{...props}),shouldRenderSidebarMobile&&/*#__PURE__*/(0,jsx_runtime.jsx)(Mobile,{...props})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocRoot/Layout/Sidebar/ExpandButton/styles.module.css +var ExpandButton_styles_module = __webpack_require__(8721); +var ExpandButton_styles_module_default = /*#__PURE__*/__webpack_require__.n(ExpandButton_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocRoot/Layout/Sidebar/ExpandButton/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocRootLayoutSidebarExpandButton({toggleSidebar}){return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(ExpandButton_styles_module_default()).expandButton,title:(0,Translate/* translate */.T)({id:'theme.docs.sidebar.expandButtonTitle',message:'Expand sidebar',description:'The ARIA label and title attribute for expand button of doc sidebar'}),"aria-label":(0,Translate/* translate */.T)({id:'theme.docs.sidebar.expandButtonAriaLabel',message:'Expand sidebar',description:'The ARIA label and title attribute for expand button of doc sidebar'}),tabIndex:0,role:"button",onKeyDown:toggleSidebar,onClick:toggleSidebar,children:/*#__PURE__*/(0,jsx_runtime.jsx)(IconArrow,{className:(ExpandButton_styles_module_default()).expandButtonIcon})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocRoot/Layout/Sidebar/styles.module.css +var Sidebar_styles_module = __webpack_require__(5710); +var Sidebar_styles_module_default = /*#__PURE__*/__webpack_require__.n(Sidebar_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocRoot/Layout/Sidebar/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Reset sidebar state when sidebar changes +// Use React key to unmount/remount the children +// See https://github.com/facebook/docusaurus/issues/3414 +function ResetOnSidebarChange({children}){const sidebar=(0,docsSidebar/* useDocsSidebar */.t)();return/*#__PURE__*/(0,jsx_runtime.jsx)(react.Fragment,{children:children},sidebar?.name??'noSidebar');}function DocRootLayoutSidebar({sidebar,hiddenSidebarContainer,setHiddenSidebarContainer}){const{pathname}=(0,react_router/* useLocation */.zy)();const[hiddenSidebar,setHiddenSidebar]=(0,react.useState)(false);const toggleSidebar=(0,react.useCallback)(()=>{if(hiddenSidebar){setHiddenSidebar(false);}// onTransitionEnd won't fire when sidebar animation is disabled +// fixes https://github.com/facebook/docusaurus/issues/8918 +if(!hiddenSidebar&&(0,accessibilityUtils/* prefersReducedMotion */.O)()){setHiddenSidebar(true);}setHiddenSidebarContainer(value=>!value);},[setHiddenSidebarContainer,hiddenSidebar]);return/*#__PURE__*/(0,jsx_runtime.jsx)("aside",{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.docs.docSidebarContainer,(Sidebar_styles_module_default()).docSidebarContainer,hiddenSidebarContainer&&(Sidebar_styles_module_default()).docSidebarContainerHidden),onTransitionEnd:e=>{if(!e.currentTarget.classList.contains((Sidebar_styles_module_default()).docSidebarContainer)){return;}if(hiddenSidebarContainer){setHiddenSidebar(true);}},children:/*#__PURE__*/(0,jsx_runtime.jsx)(ResetOnSidebarChange,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)((Sidebar_styles_module_default()).sidebarViewport,hiddenSidebar&&(Sidebar_styles_module_default()).sidebarViewportHidden),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DocSidebar,{sidebar:sidebar,path:pathname,onCollapse:toggleSidebar,isHidden:hiddenSidebar}),hiddenSidebar&&/*#__PURE__*/(0,jsx_runtime.jsx)(DocRootLayoutSidebarExpandButton,{toggleSidebar:toggleSidebar})]})})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocRoot/Layout/Main/styles.module.css +var Main_styles_module = __webpack_require__(3685); +var Main_styles_module_default = /*#__PURE__*/__webpack_require__.n(Main_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocRoot/Layout/Main/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocRootLayoutMain({hiddenSidebarContainer,children}){const sidebar=(0,docsSidebar/* useDocsSidebar */.t)();return/*#__PURE__*/(0,jsx_runtime.jsx)("main",{className:(0,clsx/* default */.A)((Main_styles_module_default()).docMainContainer,(hiddenSidebarContainer||!sidebar)&&(Main_styles_module_default()).docMainContainerEnhanced),children:/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)('container padding-top--md padding-bottom--lg',(Main_styles_module_default()).docItemWrapper,hiddenSidebarContainer&&(Main_styles_module_default()).docItemWrapperEnhanced),children:children})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/DocRoot/Layout/styles.module.css +var Layout_styles_module = __webpack_require__(2607); +var Layout_styles_module_default = /*#__PURE__*/__webpack_require__.n(Layout_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocRoot/Layout/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocRootLayout({children}){const sidebar=(0,docsSidebar/* useDocsSidebar */.t)();const[hiddenSidebarContainer,setHiddenSidebarContainer]=(0,react.useState)(false);return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(Layout_styles_module_default()).docsWrapper,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BackToTopButton,{}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(Layout_styles_module_default()).docRoot,children:[sidebar&&/*#__PURE__*/(0,jsx_runtime.jsx)(DocRootLayoutSidebar,{sidebar:sidebar.items,hiddenSidebarContainer:hiddenSidebarContainer,setHiddenSidebarContainer:setHiddenSidebarContainer}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocRootLayoutMain,{hiddenSidebarContainer:hiddenSidebarContainer,children:children})]})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/NotFound/Content/index.js +var Content = __webpack_require__(3363); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocRoot/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocRoot(props){const currentDocRouteMetadata=(0,docsUtils/* useDocRootMetadata */.B5)(props);if(!currentDocRouteMetadata){// We only render the not found content to avoid a double layout +// see https://github.com/facebook/docusaurus/pull/7966#pullrequestreview-1077276692 +return/*#__PURE__*/(0,jsx_runtime.jsx)(Content/* default */.A,{});}const{docElement,sidebarName,sidebarItems}=currentDocRouteMetadata;return/*#__PURE__*/(0,jsx_runtime.jsx)(metadataUtils/* HtmlClassNameProvider */.e3,{className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.page.docsDocPage),children:/*#__PURE__*/(0,jsx_runtime.jsx)(docsSidebar/* DocsSidebarProvider */.V,{name:sidebarName,items:sidebarItems,children:/*#__PURE__*/(0,jsx_runtime.jsx)(DocRootLayout,{children:docElement})})});} + +/***/ }), + +/***/ 4267: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ DocVersionBadge) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1312); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7559); +/* harmony import */ var _docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3025); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocVersionBadge({className}){const versionMetadata=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_3__/* .useDocsVersion */ .r)();if(versionMetadata.badge){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("span",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(className,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__/* .ThemeClassNames */ .G.docs.docVersionBadge,'badge badge--secondary'),children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.docs.versionBadge.label",values:{versionLabel:versionMetadata.label},children:'Version: {versionLabel}'})});}return null;} + +/***/ }), + +/***/ 1878: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ DocVersionBanner) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4586); +/* harmony import */ var _docusaurus_Link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(725); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1312); +/* harmony import */ var _docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4070); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7559); +/* harmony import */ var _docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3886); +/* harmony import */ var _docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(3025); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function UnreleasedVersionLabel({siteTitle,versionMetadata}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle,versionLabel:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b",{children:versionMetadata.label})},children:'This is unreleased documentation for {siteTitle} {versionLabel} version.'});}function UnmaintainedVersionLabel({siteTitle,versionMetadata}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle,versionLabel:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b",{children:versionMetadata.label})},children:'This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.'});}const BannerLabelComponents={unreleased:UnreleasedVersionLabel,unmaintained:UnmaintainedVersionLabel};function BannerLabel(props){const BannerLabelComponent=BannerLabelComponents[props.versionMetadata.banner];return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(BannerLabelComponent,{...props});}function LatestVersionSuggestionLabel({versionLabel,to,onClick}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel,latestVersionLink:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b",{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_docusaurus_Link__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{to:to,onClick:onClick,children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:'For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).'});}function DocVersionBannerEnabled({className,versionMetadata}){const{siteConfig:{title:siteTitle}}=(0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)();const{pluginId}=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_5__/* .useActivePlugin */ .vT)({failfast:true});const getVersionMainDoc=version=>version.docs.find(doc=>doc.id===version.mainDocId);const{savePreferredVersionName}=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_6__/* .useDocsPreferredVersion */ .g1)(pluginId);const{latestDocSuggestion,latestVersionSuggestion}=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_5__/* .useDocVersionSuggestions */ .HW)(pluginId);// Try to link to same doc in latest version (not always possible), falling +// back to main doc of latest version +const latestVersionSuggestedDoc=latestDocSuggestion??getVersionMainDoc(latestVersionSuggestion);return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(className,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_8__/* .ThemeClassNames */ .G.docs.docVersionBanner,'alert alert--warning margin-bottom--md'),role:"alert",children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div",{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(BannerLabel,{siteTitle:siteTitle,versionMetadata:versionMetadata})}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div",{className:"margin-top--md",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(LatestVersionSuggestionLabel,{versionLabel:latestVersionSuggestion.label,to:latestVersionSuggestedDoc.path,onClick:()=>savePreferredVersionName(latestVersionSuggestion.name)})})]});}function DocVersionBanner({className}){const versionMetadata=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_9__/* .useDocsVersion */ .r)();if(versionMetadata.banner){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(DocVersionBannerEnabled,{className:className,versionMetadata:versionMetadata});}return null;} + +/***/ }), + +/***/ 1723: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": () => (/* binding */ DocVersionRoot) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.js + 1 modules +var metadataUtils = __webpack_require__(1213); +;// ./node_modules/@docusaurus/plugin-content-docs/lib/client/docsSearch.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** The search tag to append as each doc's metadata. */function getDocsVersionSearchTag(pluginId,versionName){return`docs-${pluginId}-${versionName}`;}/** + * Gets the relevant docs tags to search. + * This is the logic that powers the contextual search feature. + * + * If user is browsing Android 1.4 docs, he'll get presented with: + * - Android '1.4' docs + * - iOS 'preferred | latest' docs + * + * The result is generic and not coupled to Algolia/DocSearch on purpose. + */function useDocsContextualSearchTags(){const allDocsData=useAllDocsData();const activePluginAndVersion=useActivePluginAndVersion();const docsPreferredVersionByPluginId=useDocsPreferredVersionByPluginId();// This can't use more specialized hooks because we are mapping over all +// plugin instances. +function getDocPluginTags(pluginId){const activeVersion=activePluginAndVersion?.activePlugin.pluginId===pluginId?activePluginAndVersion.activeVersion:undefined;const preferredVersion=docsPreferredVersionByPluginId[pluginId];const latestVersion=allDocsData[pluginId].versions.find(v=>v.isLast);const version=activeVersion??preferredVersion??latestVersion;return getDocsVersionSearchTag(pluginId,version.name);}return[...Object.keys(allDocsData).map(getDocPluginTags)];} +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-docs/lib/client/docsVersion.js +var docsVersion = __webpack_require__(3025); +// EXTERNAL MODULE: ./node_modules/react-router-config/esm/react-router-config.js +var react_router_config = __webpack_require__(2831); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/SearchMetadata/index.js +var SearchMetadata = __webpack_require__(1463); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/DocVersionRoot/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocVersionRootMetadata(props){const{version}=props;return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(SearchMetadata/* default */.A,{version:version.version,tag:getDocsVersionSearchTag(version.pluginId,version.version)}),/*#__PURE__*/(0,jsx_runtime.jsx)(metadataUtils/* PageMetadata */.be,{children:version.noIndex&&/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]});}function DocVersionRootContent(props){const{version,route}=props;return/*#__PURE__*/(0,jsx_runtime.jsx)(metadataUtils/* HtmlClassNameProvider */.e3,{className:version.className,children:/*#__PURE__*/(0,jsx_runtime.jsx)(docsVersion/* DocsVersionProvider */.n,{version:version,children:(0,react_router_config/* renderRoutes */.v)(route.routes)})});}function DocVersionRoot(props){return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DocVersionRootMetadata,{...props}),/*#__PURE__*/(0,jsx_runtime.jsx)(DocVersionRootContent,{...props})]});} + +/***/ }), + +/***/ 7121: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ DocsRoot) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1213); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7559); +/* harmony import */ var _docusaurus_renderRoutes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2831); +/* harmony import */ var _theme_Layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7356); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocsRoot(props){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__/* .HtmlClassNameProvider */ .e3,{className:(0,clsx__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__/* .ThemeClassNames */ .G.wrapper.docsPages),children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_theme_Layout__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{children:(0,_docusaurus_renderRoutes__WEBPACK_IMPORTED_MODULE_6__/* .renderRoutes */ .v)(props.route.routes)})});} + +/***/ }), + +/***/ 4722: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ EditMetaRow) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Edit/styles.module.css +var styles_module = __webpack_require__(1930); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Edit/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconEdit({className,...restProps}){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,clsx/* default */.A)((styles_module_default()).iconEdit,className),"aria-hidden":"true",...restProps,children:/*#__PURE__*/(0,jsx_runtime.jsx)("g",{children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/EditThisPage/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function EditThisPage({editUrl}){return/*#__PURE__*/(0,jsx_runtime.jsxs)(Link/* default */.A,{to:editUrl,className:ThemeClassNames/* ThemeClassNames */.G.common.editThisPage,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(IconEdit,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/IntlUtils.js +var IntlUtils = __webpack_require__(6266); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/LastUpdated/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function LastUpdatedAtDate({lastUpdatedAt}){const atDate=new Date(lastUpdatedAt);const dateTimeFormat=(0,IntlUtils/* useDateTimeFormat */.i)({day:'numeric',month:'short',year:'numeric',timeZone:'UTC'});const formattedLastUpdatedAt=dateTimeFormat.format(atDate);return/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:/*#__PURE__*/(0,jsx_runtime.jsx)("b",{children:/*#__PURE__*/(0,jsx_runtime.jsx)("time",{dateTime:atDate.toISOString(),itemProp:"dateModified",children:formattedLastUpdatedAt})})},children:' on {date}'});}function LastUpdatedByUser({lastUpdatedBy}){return/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:/*#__PURE__*/(0,jsx_runtime.jsx)("b",{children:lastUpdatedBy})},children:' by {user}'});}function LastUpdated({lastUpdatedAt,lastUpdatedBy}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("span",{className:ThemeClassNames/* ThemeClassNames */.G.common.lastUpdated,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:lastUpdatedAt?/*#__PURE__*/(0,jsx_runtime.jsx)(LastUpdatedAtDate,{lastUpdatedAt:lastUpdatedAt}):'',byUser:lastUpdatedBy?/*#__PURE__*/(0,jsx_runtime.jsx)(LastUpdatedByUser,{lastUpdatedBy:lastUpdatedBy}):''},children:'Last updated{atDate}{byUser}'}), false&&/*#__PURE__*/0]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/EditMetaRow/styles.module.css +var EditMetaRow_styles_module = __webpack_require__(901); +var EditMetaRow_styles_module_default = /*#__PURE__*/__webpack_require__.n(EditMetaRow_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/EditMetaRow/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function EditMetaRow({className,editUrl,lastUpdatedAt,lastUpdatedBy}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)('row',className),children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"col",children:editUrl&&/*#__PURE__*/(0,jsx_runtime.jsx)(EditThisPage,{editUrl:editUrl})}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)('col',(EditMetaRow_styles_module_default()).lastUpdated),children:(lastUpdatedAt||lastUpdatedBy)&&/*#__PURE__*/(0,jsx_runtime.jsx)(LastUpdated,{lastUpdatedAt:lastUpdatedAt,lastUpdatedBy:lastUpdatedBy})})]});} + +/***/ }), + +/***/ 4608: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ Heading) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1312); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6342); +/* harmony import */ var _docusaurus_Link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(725); +/* harmony import */ var _docusaurus_useBrokenLinks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2521); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4738); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_styles_module_css__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Heading({as:As,id,...props}){const brokenLinks=(0,_docusaurus_useBrokenLinks__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)();const{navbar:{hideOnScroll}}=(0,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_6__/* .useThemeConfig */ .p)();// H1 headings do not need an id because they don't appear in the TOC. +if(As==='h1'||!id){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(As,{...props,id:undefined});}brokenLinks.collectAnchor(id);const anchorTitle=(0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .T)({id:'theme.common.headingLinkTitle',message:'Direct link to {heading}',description:'Title for link to heading'},{heading:typeof props.children==='string'?props.children:id});return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(As,{...props,className:(0,clsx__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)('anchor',hideOnScroll?(_styles_module_css__WEBPACK_IMPORTED_MODULE_4___default().anchorWithHideOnScrollNavbar):(_styles_module_css__WEBPACK_IMPORTED_MODULE_4___default().anchorWithStickyNavbar),props.className),id:id,children:[props.children,/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_docusaurus_Link__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{className:"hash-link",to:`#${id}`,"aria-label":anchorTitle,title:anchorTitle,children:"\u200B"})]});} + +/***/ }), + +/***/ 5835: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ IconExternalLink) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1455); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_styles_module_css__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconExternalLink({width=13.5,height=13.5}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("svg",{width:width,height:height,"aria-hidden":"true",viewBox:"0 0 24 24",className:(_styles_module_css__WEBPACK_IMPORTED_MODULE_1___default().iconExternalLink),children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})});} + +/***/ }), + +/***/ 7356: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ Layout) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/ErrorBoundary.js + 1 modules +var ErrorBoundary = __webpack_require__(7489); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.js + 1 modules +var metadataUtils = __webpack_require__(1213); +// EXTERNAL MODULE: ./node_modules/react-router/esm/react-router.js +var react_router = __webpack_require__(6347); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useLocationChange.js +var useLocationChange = __webpack_require__(5062); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-common/lib/utils/skipToContentUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * The id of the element that should become focused on a page + * that does not have a
html tag. + * Focusing the Docusaurus Layout children is a reasonable fallback. + * + * __ prefix allows search crawlers (Algolia/DocSearch) to ignore anchors + * https://github.com/facebook/docusaurus/issues/8883#issuecomment-1516328368 + */const SkipToContentFallbackId='__docusaurus_skipToContent_fallback';/** + * Returns the skip to content element to focus when the link is clicked. + */function getSkipToContentTarget(){return(// Try to focus the
in priority +// Note: this will only work if JS is enabled +// See https://github.com/facebook/docusaurus/issues/6411#issuecomment-1284136069 +document.querySelector('main:first-of-type')??// Then try to focus the fallback element (usually the Layout children) +document.getElementById(SkipToContentFallbackId));}function programmaticFocus(el){el.setAttribute('tabindex','-1');el.focus();el.removeAttribute('tabindex');}/** This hook wires the logic for a skip-to-content link. */function useSkipToContent(){const containerRef=(0,react.useRef)(null);const{action}=(0,react_router/* useHistory */.W6)();const onClick=(0,react.useCallback)(e=>{e.preventDefault();const targetElement=getSkipToContentTarget();if(targetElement){programmaticFocus(targetElement);}},[]);// "Reset" focus when navigating. +// See https://github.com/facebook/docusaurus/pull/8204#issuecomment-1276547558 +(0,useLocationChange/* useLocationChange */.$)(({location})=>{if(containerRef.current&&!location.hash&&action==='PUSH'){programmaticFocus(containerRef.current);}});return{containerRef,onClick};}const DefaultSkipToContentLabel=(0,Translate/* translate */.T)({id:'theme.common.skipToMainContent',description:'The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation',message:'Skip to main content'});function SkipToContentLink(props){const linkLabel=props.children??DefaultSkipToContentLabel;const{containerRef,onClick}=useSkipToContent();return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{ref:containerRef,role:"region","aria-label":DefaultSkipToContentLabel,children:/*#__PURE__*/(0,jsx_runtime.jsx)("a",{...props,// Note this is a fallback href in case JS is disabled +// It has limitations, see https://github.com/facebook/docusaurus/issues/6411#issuecomment-1284136069 +href:`#${SkipToContentFallbackId}`,onClick:onClick,children:linkLabel})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useKeyboardNavigation.js + 1 modules +var useKeyboardNavigation = __webpack_require__(1386); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/SkipToContent/styles.module.css +var styles_module = __webpack_require__(5521); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/SkipToContent/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function SkipToContent(){return/*#__PURE__*/(0,jsx_runtime.jsx)(SkipToContentLink,{className:(styles_module_default()).skipToContent});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useThemeConfig.js +var useThemeConfig = __webpack_require__(6342); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/announcementBar.js +var contexts_announcementBar = __webpack_require__(5041); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Close/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconClose({width=21,height=21,color='currentColor',strokeWidth=1.2,className,...restProps}){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 15 15",width:width,height:height,...restProps,children:/*#__PURE__*/(0,jsx_runtime.jsx)("g",{stroke:color,strokeWidth:strokeWidth,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/AnnouncementBar/CloseButton/styles.module.css +var CloseButton_styles_module = __webpack_require__(7521); +var CloseButton_styles_module_default = /*#__PURE__*/__webpack_require__.n(CloseButton_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/AnnouncementBar/CloseButton/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function AnnouncementBarCloseButton(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{type:"button","aria-label":(0,Translate/* translate */.T)({id:'theme.AnnouncementBar.closeButtonAriaLabel',message:'Close',description:'The ARIA label for close button of announcement bar'}),...props,className:(0,clsx/* default */.A)('clean-btn close',(CloseButton_styles_module_default()).closeButton,props.className),children:/*#__PURE__*/(0,jsx_runtime.jsx)(IconClose,{width:14,height:14,strokeWidth:3.1})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/AnnouncementBar/Content/styles.module.css +var Content_styles_module = __webpack_require__(9034); +var Content_styles_module_default = /*#__PURE__*/__webpack_require__.n(Content_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/AnnouncementBar/Content/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function AnnouncementBarContent(props){const{announcementBar}=(0,useThemeConfig/* useThemeConfig */.p)();const{content}=announcementBar;return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{...props,className:(0,clsx/* default */.A)((Content_styles_module_default()).content,props.className)// Developer provided the HTML, so assume it's safe. +// eslint-disable-next-line react/no-danger +,dangerouslySetInnerHTML:{__html:content}});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/AnnouncementBar/styles.module.css +var AnnouncementBar_styles_module = __webpack_require__(2804); +var AnnouncementBar_styles_module_default = /*#__PURE__*/__webpack_require__.n(AnnouncementBar_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/AnnouncementBar/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function AnnouncementBar(){const{announcementBar}=(0,useThemeConfig/* useThemeConfig */.p)();const{isActive,close}=(0,contexts_announcementBar/* useAnnouncementBar */.M)();if(!isActive){return null;}const{backgroundColor,textColor,isCloseable}=announcementBar;return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(AnnouncementBar_styles_module_default()).announcementBar,style:{backgroundColor,color:textColor},role:"banner",children:[isCloseable&&/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(AnnouncementBar_styles_module_default()).announcementBarPlaceholder}),/*#__PURE__*/(0,jsx_runtime.jsx)(AnnouncementBarContent,{className:(AnnouncementBar_styles_module_default()).announcementBarContent}),isCloseable&&/*#__PURE__*/(0,jsx_runtime.jsx)(AnnouncementBarCloseButton,{onClick:close,className:(AnnouncementBar_styles_module_default()).announcementBarClose})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/navbarMobileSidebar.js + 1 modules +var navbarMobileSidebar = __webpack_require__(9876); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/scrollUtils.js +var scrollUtils = __webpack_require__(3104); +;// ./node_modules/@docusaurus/theme-common/lib/hooks/useHideableNavbar.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Wires the imperative logic of a hideable navbar. + * @param hideOnScroll If `false`, this hook is basically a no-op. + */function useHideableNavbar(hideOnScroll){const[isNavbarVisible,setIsNavbarVisible]=(0,react.useState)(hideOnScroll);const isFocusedAnchor=(0,react.useRef)(false);const navbarHeight=(0,react.useRef)(0);const navbarRef=(0,react.useCallback)(node=>{if(node!==null){navbarHeight.current=node.getBoundingClientRect().height;}},[]);(0,scrollUtils/* useScrollPosition */.Mq)(({scrollY:scrollTop},lastPosition)=>{if(!hideOnScroll){return;}// Needed mostly for handling rubber band scrolling. +// See https://github.com/facebook/docusaurus/pull/5721 +if(scrollTop=lastScrollTop){setIsNavbarVisible(false);}else if(scrollTop+windowHeight{if(!hideOnScroll){return;}// See https://github.com/facebook/docusaurus/pull/8059#issuecomment-1239639480 +const currentHash=locationChangeEvent.location.hash;const currentHashAnchor=currentHash?document.getElementById(currentHash.substring(1)):undefined;if(currentHashAnchor){isFocusedAnchor.current=true;setIsNavbarVisible(false);return;}setIsNavbarVisible(true);});return{navbarRef,isNavbarVisible};} +;// ./node_modules/@docusaurus/theme-common/lib/hooks/useLockBodyScroll.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Side-effect that locks the document body's scroll throughout the lifetime of + * the containing component. e.g. when the mobile sidebar is expanded. + */function useLockBodyScroll(lock=true){(0,react.useEffect)(()=>{document.body.style.overflow=lock?'hidden':'visible';return()=>{document.body.style.overflow='visible';};},[lock]);} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/reactUtils.js +var reactUtils = __webpack_require__(9532); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/navbarSecondaryMenu/content.js +var navbarSecondaryMenu_content = __webpack_require__(5600); +;// ./node_modules/@docusaurus/theme-common/lib/contexts/navbarSecondaryMenu/display.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Context=/*#__PURE__*/react.createContext(null);function useContextValue(){const mobileSidebar=(0,navbarMobileSidebar/* useNavbarMobileSidebar */.M)();const content=(0,navbarSecondaryMenu_content/* useNavbarSecondaryMenuContent */.YL)();const[shown,setShown]=(0,react.useState)(false);const hasContent=content.component!==null;const previousHasContent=(0,reactUtils/* usePrevious */.ZC)(hasContent);// When content is become available for the first time (set in useEffect) +// we set this content to be shown! +(0,react.useEffect)(()=>{const contentBecameAvailable=hasContent&&!previousHasContent;if(contentBecameAvailable){setShown(true);}},[hasContent,previousHasContent]);// On sidebar close, secondary menu is set to be shown on next re-opening +// (if any secondary menu content available) +(0,react.useEffect)(()=>{if(!hasContent){setShown(false);return;}if(!mobileSidebar.shown){setShown(true);}},[mobileSidebar.shown,hasContent]);return (0,react.useMemo)(()=>[shown,setShown],[shown]);}/** @internal */function NavbarSecondaryMenuDisplayProvider({children}){const value=useContextValue();return/*#__PURE__*/(0,jsx_runtime.jsx)(Context.Provider,{value:value,children:children});}function renderElement(content){if(content.component){const Comp=content.component;return/*#__PURE__*/(0,jsx_runtime.jsx)(Comp,{...content.props});}return undefined;}/** Wires the logic for rendering the mobile navbar secondary menu. */function useNavbarSecondaryMenu(){const value=(0,react.useContext)(Context);if(!value){throw new reactUtils/* ReactContextError */.dV('NavbarSecondaryMenuDisplayProvider');}const[shown,setShown]=value;const hide=(0,react.useCallback)(()=>setShown(false),[setShown]);const content=(0,navbarSecondaryMenu_content/* useNavbarSecondaryMenuContent */.YL)();return (0,react.useMemo)(()=>({shown,hide,content:renderElement(content)}),[hide,content,shown]);} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/MobileSidebar/Layout/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function NavbarMobileSidebarLayout({header,primaryMenu,secondaryMenu}){const{shown:secondaryMenuShown}=useNavbarSecondaryMenu();return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"navbar-sidebar",children:[header,/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(0,clsx/* default */.A)('navbar-sidebar__items',{'navbar-sidebar__items--show-secondary':secondaryMenuShown}),children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"navbar-sidebar__item menu",children:primaryMenu}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"navbar-sidebar__item menu",children:secondaryMenu})]})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/colorMode.js +var contexts_colorMode = __webpack_require__(5293); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useIsBrowser.js +var useIsBrowser = __webpack_require__(2303); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/LightMode/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconLightMode(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/DarkMode/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconDarkMode(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/ColorModeToggle/styles.module.css +var ColorModeToggle_styles_module = __webpack_require__(3384); +var ColorModeToggle_styles_module_default = /*#__PURE__*/__webpack_require__.n(ColorModeToggle_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/ColorModeToggle/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function ColorModeToggle({className,buttonClassName,value,onChange}){const isBrowser=(0,useIsBrowser/* default */.A)();const title=(0,Translate/* translate */.T)({message:'Switch between dark and light mode (currently {mode})',id:'theme.colorToggle.ariaLabel',description:'The ARIA label for the navbar color mode toggle'},{mode:value==='dark'?(0,Translate/* translate */.T)({message:'dark mode',id:'theme.colorToggle.ariaLabel.mode.dark',description:'The name for the dark color mode'}):(0,Translate/* translate */.T)({message:'light mode',id:'theme.colorToggle.ariaLabel.mode.light',description:'The name for the light color mode'})});return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)((ColorModeToggle_styles_module_default()).toggle,className),children:/*#__PURE__*/(0,jsx_runtime.jsxs)("button",{className:(0,clsx/* default */.A)('clean-btn',(ColorModeToggle_styles_module_default()).toggleButton,!isBrowser&&(ColorModeToggle_styles_module_default()).toggleButtonDisabled,buttonClassName),type:"button",onClick:()=>onChange(value==='dark'?'light':'dark'),disabled:!isBrowser,title:title,"aria-label":title,"aria-live":"polite",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(IconLightMode,{className:(0,clsx/* default */.A)((ColorModeToggle_styles_module_default()).toggleIcon,(ColorModeToggle_styles_module_default()).lightToggleIcon)}),/*#__PURE__*/(0,jsx_runtime.jsx)(IconDarkMode,{className:(0,clsx/* default */.A)((ColorModeToggle_styles_module_default()).toggleIcon,(ColorModeToggle_styles_module_default()).darkToggleIcon)})]})});}/* harmony default export */ const theme_ColorModeToggle = (/*#__PURE__*/react.memo(ColorModeToggle)); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/ColorModeToggle/styles.module.css +var Navbar_ColorModeToggle_styles_module = __webpack_require__(3127); +var Navbar_ColorModeToggle_styles_module_default = /*#__PURE__*/__webpack_require__.n(Navbar_ColorModeToggle_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/ColorModeToggle/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function NavbarColorModeToggle({className}){const navbarStyle=(0,useThemeConfig/* useThemeConfig */.p)().navbar.style;const disabled=(0,useThemeConfig/* useThemeConfig */.p)().colorMode.disableSwitch;const{colorMode,setColorMode}=(0,contexts_colorMode/* useColorMode */.G)();if(disabled){return null;}return/*#__PURE__*/(0,jsx_runtime.jsx)(theme_ColorModeToggle,{className:className,buttonClassName:navbarStyle==='dark'?(Navbar_ColorModeToggle_styles_module_default()).darkNavbarColorModeToggle:undefined,value:colorMode,onChange:setColorMode});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Logo/index.js +var Logo = __webpack_require__(3465); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/Logo/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function NavbarLogo(){return/*#__PURE__*/(0,jsx_runtime.jsx)(Logo/* default */.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/MobileSidebar/Header/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function CloseButton(){const mobileSidebar=(0,navbarMobileSidebar/* useNavbarMobileSidebar */.M)();return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{type:"button","aria-label":(0,Translate/* translate */.T)({id:'theme.docs.sidebar.closeSidebarButtonAriaLabel',message:'Close navigation bar',description:'The ARIA label for close button of mobile sidebar'}),className:"clean-btn navbar-sidebar__close",onClick:()=>mobileSidebar.toggle(),children:/*#__PURE__*/(0,jsx_runtime.jsx)(IconClose,{color:"var(--ifm-color-emphasis-600)"})});}function NavbarMobileSidebarHeader(){return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"navbar-sidebar__brand",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarLogo,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarColorModeToggle,{className:"margin-right--md"}),/*#__PURE__*/(0,jsx_runtime.jsx)(CloseButton,{})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useBaseUrl.js +var useBaseUrl = __webpack_require__(6025); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/isInternalUrl.js +var isInternalUrl = __webpack_require__(6654); +;// ./node_modules/@docusaurus/theme-common/lib/utils/regexpUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Matches a string regex (as provided from the config) against a target in a + * null-safe fashion, case insensitive and global. + */function isRegexpStringMatch(regexAsString,valueToTest){if(typeof regexAsString==='undefined'||typeof valueToTest==='undefined'){return false;}return new RegExp(regexAsString,'gi').test(valueToTest);} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/ExternalLink/index.js +var ExternalLink = __webpack_require__(5835); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/NavbarNavLink.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function NavbarNavLink({activeBasePath,activeBaseRegex,to,href,label,html,isDropdownLink,prependBaseUrlToHref,...props}){// TODO all this seems hacky +// {to: 'version'} should probably be forbidden, in favor of {to: '/version'} +const toUrl=(0,useBaseUrl/* default */.Ay)(to);const activeBaseUrl=(0,useBaseUrl/* default */.Ay)(activeBasePath);const normalizedHref=(0,useBaseUrl/* default */.Ay)(href,{forcePrependBaseUrl:true});const isExternalLink=label&&href&&!(0,isInternalUrl/* default */.A)(href);// Link content is set through html XOR label +const linkContentProps=html?{dangerouslySetInnerHTML:{__html:html}}:{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[label,isExternalLink&&/*#__PURE__*/(0,jsx_runtime.jsx)(ExternalLink/* default */.A,{...(isDropdownLink&&{width:12,height:12})})]})};if(href){return/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{href:prependBaseUrlToHref?normalizedHref:href,...props,...linkContentProps});}return/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{to:toUrl,isNavLink:true,...((activeBasePath||activeBaseRegex)&&{isActive:(_match,location)=>activeBaseRegex?isRegexpStringMatch(activeBaseRegex,location.pathname):location.pathname.startsWith(activeBaseUrl)}),...props,...linkContentProps});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/DefaultNavbarItem.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DefaultNavbarItemDesktop({className,isDropdownItem=false,...props}){const element=/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarNavLink,{className:(0,clsx/* default */.A)(isDropdownItem?'dropdown__link':'navbar__item navbar__link',className),isDropdownLink:isDropdownItem,...props});if(isDropdownItem){return/*#__PURE__*/(0,jsx_runtime.jsx)("li",{children:element});}return element;}function DefaultNavbarItemMobile({className,isDropdownItem,...props}){return/*#__PURE__*/(0,jsx_runtime.jsx)("li",{className:"menu__list-item",children:/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarNavLink,{className:(0,clsx/* default */.A)('menu__link',className),...props})});}function DefaultNavbarItem({mobile=false,position,// Need to destructure position from props so that it doesn't get passed on. +...props}){const Comp=mobile?DefaultNavbarItemMobile:DefaultNavbarItemDesktop;return/*#__PURE__*/(0,jsx_runtime.jsx)(Comp,{...props,activeClassName:props.activeClassName??(mobile?'menu__link--active':'navbar__link--active')});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/components/Collapsible/index.js +var Collapsible = __webpack_require__(1422); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/routesUtils.js +var routesUtils = __webpack_require__(9169); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useDocusaurusContext.js +var useDocusaurusContext = __webpack_require__(4586); +;// ./node_modules/@docusaurus/theme-common/lib/utils/useLocalPathname.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Get the pathname of current route, without the optional site baseUrl. + * - `/docs/myDoc` => `/docs/myDoc` + * - `/baseUrl/docs/myDoc` => `/docs/myDoc` + */function useLocalPathname(){const{siteConfig:{baseUrl}}=(0,useDocusaurusContext/* default */.A)();const{pathname}=(0,react_router/* useLocation */.zy)();return pathname.replace(baseUrl,'/');} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/DropdownNavbarItem/styles.module.css +var DropdownNavbarItem_styles_module = __webpack_require__(6214); +var DropdownNavbarItem_styles_module_default = /*#__PURE__*/__webpack_require__.n(DropdownNavbarItem_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/DropdownNavbarItem/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function isItemActive(item,localPathname){if((0,routesUtils/* isSamePath */.ys)(item.to,localPathname)){return true;}if(isRegexpStringMatch(item.activeBaseRegex,localPathname)){return true;}if(item.activeBasePath&&localPathname.startsWith(item.activeBasePath)){return true;}return false;}function containsActiveItems(items,localPathname){return items.some(item=>isItemActive(item,localPathname));}function DropdownNavbarItemDesktop({items,position,className,onClick,...props}){const dropdownRef=(0,react.useRef)(null);const[showDropdown,setShowDropdown]=(0,react.useState)(false);(0,react.useEffect)(()=>{const handleClickOutside=event=>{if(!dropdownRef.current||dropdownRef.current.contains(event.target)){return;}setShowDropdown(false);};document.addEventListener('mousedown',handleClickOutside);document.addEventListener('touchstart',handleClickOutside);document.addEventListener('focusin',handleClickOutside);return()=>{document.removeEventListener('mousedown',handleClickOutside);document.removeEventListener('touchstart',handleClickOutside);document.removeEventListener('focusin',handleClickOutside);};},[dropdownRef]);return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{ref:dropdownRef,className:(0,clsx/* default */.A)('navbar__item','dropdown','dropdown--hoverable',{'dropdown--right':position==='right','dropdown--show':showDropdown}),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarNavLink,{"aria-haspopup":"true","aria-expanded":showDropdown,role:"button"// # hash permits to make the tag focusable in case no link target +// See https://github.com/facebook/docusaurus/pull/6003 +// There's probably a better solution though... +,href:props.to?undefined:'#',className:(0,clsx/* default */.A)('navbar__link',className),...props,onClick:props.to?undefined:e=>e.preventDefault(),onKeyDown:e=>{if(e.key==='Enter'){e.preventDefault();setShowDropdown(!showDropdown);}},children:props.children??props.label}),/*#__PURE__*/(0,jsx_runtime.jsx)("ul",{className:"dropdown__menu",children:items.map((childItemProps,i)=>/*#__PURE__*/(0,react.createElement)(NavbarItem,{isDropdownItem:true,activeClassName:"dropdown__link--active",...childItemProps,key:i}))})]});}function DropdownNavbarItemMobile({items,className,position,// Need to destructure position from props so that it doesn't get passed on. +onClick,...props}){const localPathname=useLocalPathname();const containsActive=containsActiveItems(items,localPathname);const{collapsed,toggleCollapsed,setCollapsed}=(0,Collapsible/* useCollapsible */.u)({initialState:()=>!containsActive});// Expand/collapse if any item active after a navigation +(0,react.useEffect)(()=>{if(containsActive){setCollapsed(!containsActive);}},[localPathname,containsActive,setCollapsed]);return/*#__PURE__*/(0,jsx_runtime.jsxs)("li",{className:(0,clsx/* default */.A)('menu__list-item',{'menu__list-item--collapsed':collapsed}),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarNavLink,{role:"button",className:(0,clsx/* default */.A)((DropdownNavbarItem_styles_module_default()).dropdownNavbarItemMobile,'menu__link menu__link--sublist menu__link--sublist-caret',className),...props,onClick:e=>{e.preventDefault();toggleCollapsed();},children:props.children??props.label}),/*#__PURE__*/(0,jsx_runtime.jsx)(Collapsible/* Collapsible */.N,{lazy:true,as:"ul",className:"menu__list",collapsed:collapsed,children:items.map((childItemProps,i)=>/*#__PURE__*/(0,react.createElement)(NavbarItem,{mobile:true,isDropdownItem:true,onClick:onClick,activeClassName:"menu__link--active",...childItemProps,key:i}))})]});}function DropdownNavbarItem({mobile=false,...props}){const Comp=mobile?DropdownNavbarItemMobile:DropdownNavbarItemDesktop;return/*#__PURE__*/(0,jsx_runtime.jsx)(Comp,{...props});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useAlternatePageUtils.js +var useAlternatePageUtils = __webpack_require__(2131); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Language/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconLanguage({width=20,height=20,...props}){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 24 24",width:width,height:height,"aria-hidden":true,...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +var LocaleDropdownNavbarItem_styles_module = __webpack_require__(8244); +var LocaleDropdownNavbarItem_styles_module_default = /*#__PURE__*/__webpack_require__.n(LocaleDropdownNavbarItem_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function LocaleDropdownNavbarItem({mobile,dropdownItemsBefore,dropdownItemsAfter,queryString='',...props}){const{i18n:{currentLocale,locales,localeConfigs}}=(0,useDocusaurusContext/* default */.A)();const alternatePageUtils=(0,useAlternatePageUtils/* useAlternatePageUtils */.o)();const{search,hash}=(0,react_router/* useLocation */.zy)();const localeItems=locales.map(locale=>{const baseTo=`pathname://${alternatePageUtils.createUrl({locale,fullyQualified:false})}`;// preserve ?search#hash suffix on locale switches +const to=`${baseTo}${search}${hash}${queryString}`;return{label:localeConfigs[locale].label,lang:localeConfigs[locale].htmlLang,to,target:'_self',autoAddBaseUrl:false,className:// eslint-disable-next-line no-nested-ternary +locale===currentLocale?// Similar idea as DefaultNavbarItem: select the right Infima active +// class name. This cannot be substituted with isActive, because the +// target URLs contain `pathname://` and therefore are not NavLinks! +mobile?'menu__link--active':'dropdown__link--active':''};});const items=[...dropdownItemsBefore,...localeItems,...dropdownItemsAfter];// Mobile is handled a bit differently +const dropdownLabel=mobile?(0,Translate/* translate */.T)({message:'Languages',id:'theme.navbar.mobileLanguageDropdown.label',description:'The label for the mobile language switcher dropdown'}):localeConfigs[currentLocale].label;return/*#__PURE__*/(0,jsx_runtime.jsx)(DropdownNavbarItem,{...props,mobile:mobile,label:/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(IconLanguage,{className:(LocaleDropdownNavbarItem_styles_module_default()).iconLanguage}),dropdownLabel]}),items:items});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Noop.js +var Noop = __webpack_require__(418); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/Search/styles.module.css +var Search_styles_module = __webpack_require__(7921); +var Search_styles_module_default = /*#__PURE__*/__webpack_require__.n(Search_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/Search/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function NavbarSearch({children,className}){return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(0,clsx/* default */.A)(className,(Search_styles_module_default()).navbarSearchContainer),children:children});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/SearchNavbarItem.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function SearchNavbarItem({mobile,className}){if(mobile){return null;}return/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarSearch,{className:className,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Noop/* default */.A,{})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/HtmlNavbarItem.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function HtmlNavbarItem({value,className,mobile=false,isDropdownItem=false}){const Comp=isDropdownItem?'li':'div';return/*#__PURE__*/(0,jsx_runtime.jsx)(Comp,{className:(0,clsx/* default */.A)({navbar__item:!mobile&&!isDropdownItem,'menu__list-item':mobile},className),dangerouslySetInnerHTML:{__html:value}});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-docs/lib/client/index.js + 2 modules +var client = __webpack_require__(4070); +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-docs/lib/client/docsUtils.js +var docsUtils = __webpack_require__(6972); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/DocNavbarItem.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocNavbarItem({docId,label:staticLabel,docsPluginId,...props}){const{activeDoc}=(0,client/* useActiveDocContext */.zK)(docsPluginId);const doc=(0,docsUtils/* useLayoutDoc */.QB)(docId,docsPluginId);const pageActive=activeDoc?.path===doc?.path;// Draft and unlisted items are not displayed in the navbar. +if(doc===null||doc.unlisted&&!pageActive){return null;}return/*#__PURE__*/(0,jsx_runtime.jsx)(DefaultNavbarItem,{exact:true,...props,isActive:()=>pageActive||!!activeDoc?.sidebar&&activeDoc.sidebar===doc.sidebar,label:staticLabel??doc.id,to:doc.path});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/DocSidebarNavbarItem.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocSidebarNavbarItem({sidebarId,label,docsPluginId,...props}){const{activeDoc}=(0,client/* useActiveDocContext */.zK)(docsPluginId);const sidebarLink=(0,docsUtils/* useLayoutDocsSidebar */.fW)(sidebarId,docsPluginId).link;if(!sidebarLink){throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${sidebarId}" doesn't have anything to be linked to.`);}return/*#__PURE__*/(0,jsx_runtime.jsx)(DefaultNavbarItem,{exact:true,...props,isActive:()=>activeDoc?.sidebar===sidebarId,label:label??sidebarLink.label,to:sidebarLink.path});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/DocsVersionNavbarItem.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const getVersionMainDoc=version=>version.docs.find(doc=>doc.id===version.mainDocId);function DocsVersionNavbarItem({label:staticLabel,to:staticTo,docsPluginId,...props}){const version=(0,docsUtils/* useDocsVersionCandidates */.Vd)(docsPluginId)[0];const label=staticLabel??version.label;const path=staticTo??getVersionMainDoc(version).path;return/*#__PURE__*/(0,jsx_runtime.jsx)(DefaultNavbarItem,{...props,label:label,to:path});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-docs/lib/client/docsPreferredVersion.js +var docsPreferredVersion = __webpack_require__(3886); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function DocsVersionDropdownNavbarItem_getVersionMainDoc(version){return version.docs.find(doc=>doc.id===version.mainDocId);}function getVersionTargetDoc(version,activeDocContext){// We try to link to the same doc, in another version +// When not possible, fallback to the "main doc" of the version +return activeDocContext.alternateDocVersions[version.name]??DocsVersionDropdownNavbarItem_getVersionMainDoc(version);}function DocsVersionDropdownNavbarItem({mobile,docsPluginId,dropdownActiveClassDisabled,dropdownItemsBefore,dropdownItemsAfter,...props}){const{search,hash}=(0,react_router/* useLocation */.zy)();const activeDocContext=(0,client/* useActiveDocContext */.zK)(docsPluginId);const versions=(0,client/* useVersions */.jh)(docsPluginId);const{savePreferredVersionName}=(0,docsPreferredVersion/* useDocsPreferredVersion */.g1)(docsPluginId);function versionToLink(version){const targetDoc=getVersionTargetDoc(version,activeDocContext);return{label:version.label,// preserve ?search#hash suffix on version switches +to:`${targetDoc.path}${search}${hash}`,isActive:()=>version===activeDocContext.activeVersion,onClick:()=>savePreferredVersionName(version.name)};}const items=[...dropdownItemsBefore,...versions.map(versionToLink),...dropdownItemsAfter];const dropdownVersion=(0,docsUtils/* useDocsVersionCandidates */.Vd)(docsPluginId)[0];// Mobile dropdown is handled a bit differently +const dropdownLabel=mobile&&items.length>1?(0,Translate/* translate */.T)({id:'theme.navbar.mobileVersionsDropdown.label',message:'Versions',description:'The label for the navbar versions dropdown on mobile view'}):dropdownVersion.label;const dropdownTo=mobile&&items.length>1?undefined:getVersionTargetDoc(dropdownVersion,activeDocContext).path;// We don't want to render a version dropdown with 0 or 1 item. If we build +// the site with a single docs version (onlyIncludeVersions: ['1.0.0']), +// We'd rather render a button instead of a dropdown +if(items.length<=1){return/*#__PURE__*/(0,jsx_runtime.jsx)(DefaultNavbarItem,{...props,mobile:mobile,label:dropdownLabel,to:dropdownTo,isActive:dropdownActiveClassDisabled?()=>false:undefined});}return/*#__PURE__*/(0,jsx_runtime.jsx)(DropdownNavbarItem,{...props,mobile:mobile,label:dropdownLabel,to:dropdownTo,items:items,isActive:dropdownActiveClassDisabled?()=>false:undefined});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/ComponentTypes.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const ComponentTypes={default:DefaultNavbarItem,localeDropdown:LocaleDropdownNavbarItem,search:SearchNavbarItem,dropdown:DropdownNavbarItem,html:HtmlNavbarItem,doc:DocNavbarItem,docSidebar:DocSidebarNavbarItem,docsVersion:DocsVersionNavbarItem,docsVersionDropdown:DocsVersionDropdownNavbarItem};/* harmony default export */ const NavbarItem_ComponentTypes = (ComponentTypes); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/NavbarItem/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function normalizeComponentType(type,props){// Backward compatibility: navbar item with no type set +// but containing dropdown items should use the type "dropdown" +if(!type||type==='default'){return'items'in props?'dropdown':'default';}return type;}function NavbarItem({type,...props}){const componentType=normalizeComponentType(type,props);const NavbarItemComponent=NavbarItem_ComponentTypes[componentType];if(!NavbarItemComponent){throw new Error(`No NavbarItem component found for type "${type}".`);}return/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarItemComponent,{...props});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useNavbarItems(){// TODO temporary casting until ThemeConfig type is improved +return (0,useThemeConfig/* useThemeConfig */.p)().navbar.items;}// The primary menu displays the navbar items +function NavbarMobilePrimaryMenu(){const mobileSidebar=(0,navbarMobileSidebar/* useNavbarMobileSidebar */.M)();// TODO how can the order be defined for mobile? +// Should we allow providing a different list of items? +const items=useNavbarItems();return/*#__PURE__*/(0,jsx_runtime.jsx)("ul",{className:"menu__list",children:items.map((item,i)=>/*#__PURE__*/(0,react.createElement)(NavbarItem,{mobile:true,...item,onClick:()=>mobileSidebar.toggle(),key:i}))});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function SecondaryMenuBackButton(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{...props,type:"button",className:"clean-btn navbar-sidebar__back",children:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})});}// The secondary menu slides from the right and shows contextual information +// such as the docs sidebar +function NavbarMobileSidebarSecondaryMenu(){const isPrimaryMenuEmpty=(0,useThemeConfig/* useThemeConfig */.p)().navbar.items.length===0;const secondaryMenu=useNavbarSecondaryMenu();return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[!isPrimaryMenuEmpty&&/*#__PURE__*/(0,jsx_runtime.jsx)(SecondaryMenuBackButton,{onClick:()=>secondaryMenu.hide()}),secondaryMenu.content]});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/MobileSidebar/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function NavbarMobileSidebar(){const mobileSidebar=(0,navbarMobileSidebar/* useNavbarMobileSidebar */.M)();useLockBodyScroll(mobileSidebar.shown);if(!mobileSidebar.shouldRender){return null;}return/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarMobileSidebarLayout,{header:/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarMobileSidebarHeader,{}),primaryMenu:/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarMobilePrimaryMenu,{}),secondaryMenu:/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarMobileSidebarSecondaryMenu,{})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/Layout/styles.module.css +var Layout_styles_module = __webpack_require__(231); +var Layout_styles_module_default = /*#__PURE__*/__webpack_require__.n(Layout_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/Layout/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function NavbarBackdrop(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{role:"presentation",...props,className:(0,clsx/* default */.A)('navbar-sidebar__backdrop',props.className)});}function NavbarLayout({children}){const{navbar:{hideOnScroll,style}}=(0,useThemeConfig/* useThemeConfig */.p)();const mobileSidebar=(0,navbarMobileSidebar/* useNavbarMobileSidebar */.M)();const{navbarRef,isNavbarVisible}=useHideableNavbar(hideOnScroll);return/*#__PURE__*/(0,jsx_runtime.jsxs)("nav",{ref:navbarRef,"aria-label":(0,Translate/* translate */.T)({id:'theme.NavBar.navAriaLabel',message:'Main',description:'The ARIA label for the main navigation'}),className:(0,clsx/* default */.A)('navbar','navbar--fixed-top',hideOnScroll&&[(Layout_styles_module_default()).navbarHideable,!isNavbarVisible&&(Layout_styles_module_default()).navbarHidden],{'navbar--dark':style==='dark','navbar--primary':style==='primary','navbar-sidebar--show':mobileSidebar.shown}),children:[children,/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarBackdrop,{onClick:mobileSidebar.toggle}),/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarMobileSidebar,{})]});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/utils-common/lib/index.js +var lib = __webpack_require__(440); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/errorBoundaryUtils.module.css +var errorBoundaryUtils_module = __webpack_require__(7983); +var errorBoundaryUtils_module_default = /*#__PURE__*/__webpack_require__.n(errorBoundaryUtils_module); +;// ./node_modules/@docusaurus/theme-common/lib/utils/errorBoundaryUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function ErrorBoundaryTryAgainButton(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{type:"button",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})});}// A very simple reusable ErrorBoundary fallback component +function ErrorBoundaryErrorMessageFallback({error,tryAgain}){return/*#__PURE__*/_jsxs("div",{className:styles.errorBoundaryFallback,children:[/*#__PURE__*/_jsx("p",{children:error.message}),/*#__PURE__*/_jsx(ErrorBoundaryTryAgainButton,{onClick:tryAgain})]});}function ErrorBoundaryError({error}){const causalChain=(0,lib/* getErrorCausalChain */.rA)(error);const fullMessage=causalChain.map(e=>e.message).join('\n\nCause:\n');return/*#__PURE__*/(0,jsx_runtime.jsx)("p",{className:(errorBoundaryUtils_module_default()).errorBoundaryError,children:fullMessage});}/** + * This component is useful to wrap a low-level error into a more meaningful + * error with extra context, using the ES error-cause feature. + * + * new Error("extra context message",{cause: error})} + * > + * + * + */class ErrorCauseBoundary extends react.Component{componentDidCatch(error,errorInfo){throw this.props.onError(error,errorInfo);}render(){return this.props.children;}} +;// ./node_modules/@docusaurus/theme-common/lib/utils/navbarUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const DefaultNavItemPosition='right';/** + * Split links by left/right. If position is unspecified, fallback to right. + */function splitNavbarItems(items){function isLeft(item){return(item.position??DefaultNavItemPosition)==='left';}const leftItems=items.filter(isLeft);const rightItems=items.filter(item=>!isLeft(item));return[leftItems,rightItems];}/** + * Composes multiple navbar state providers that are mutually dependent and + * hence can't be re-ordered. + */function NavbarProvider({children}){return/*#__PURE__*/(0,jsx_runtime.jsx)(navbarSecondaryMenu_content/* NavbarSecondaryMenuContentProvider */.y_,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(navbarMobileSidebar/* NavbarMobileSidebarProvider */.e,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarSecondaryMenuDisplayProvider,{children:children})})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Menu/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconMenu({width=30,height=30,className,...restProps}){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{className:className,width:width,height:height,viewBox:"0 0 30 30","aria-hidden":"true",...restProps,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/MobileSidebar/Toggle/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function MobileSidebarToggle(){const{toggle,shown}=(0,navbarMobileSidebar/* useNavbarMobileSidebar */.M)();return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{onClick:toggle,"aria-label":(0,Translate/* translate */.T)({id:'theme.docs.sidebar.toggleSidebarButtonAriaLabel',message:'Toggle navigation bar',description:'The ARIA label for hamburger menu button of mobile navigation'}),"aria-expanded":shown,className:"navbar__toggle clean-btn",type:"button",children:/*#__PURE__*/(0,jsx_runtime.jsx)(IconMenu,{})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/Content/styles.module.css +var Navbar_Content_styles_module = __webpack_require__(8484); +var Navbar_Content_styles_module_default = /*#__PURE__*/__webpack_require__.n(Navbar_Content_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/Content/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Content_useNavbarItems(){// TODO temporary casting until ThemeConfig type is improved +return (0,useThemeConfig/* useThemeConfig */.p)().navbar.items;}function NavbarItems({items}){return/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:items.map((item,i)=>/*#__PURE__*/(0,jsx_runtime.jsx)(ErrorCauseBoundary,{onError:error=>new Error(`A theme navbar item failed to render. +Please double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config: +${JSON.stringify(item,null,2)}`,{cause:error}),children:/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarItem,{...item})},i))});}function NavbarContentLayout({left,right}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"navbar__inner",children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"navbar__items",children:left}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"navbar__items navbar__items--right",children:right})]});}function NavbarContent(){const mobileSidebar=(0,navbarMobileSidebar/* useNavbarMobileSidebar */.M)();const items=Content_useNavbarItems();const[leftItems,rightItems]=splitNavbarItems(items);const searchBarItem=items.find(item=>item.type==='search');return/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarContentLayout,{left:/*#__PURE__*/// TODO stop hardcoding items? +(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[!mobileSidebar.disabled&&/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSidebarToggle,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarLogo,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarItems,{items:leftItems})]}),right:/*#__PURE__*/// TODO stop hardcoding items? +// Ask the user to add the respective navbar items => more flexible +(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarItems,{items:rightItems}),/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarColorModeToggle,{className:(Navbar_Content_styles_module_default()).colorModeToggle}),!searchBarItem&&/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarSearch,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Noop/* default */.A,{})})]})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Navbar/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Navbar(){return/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarLayout,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(NavbarContent,{})});} +;// ./node_modules/@docusaurus/theme-common/lib/utils/footerUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * A rough duck-typing about whether the `footer.links` is intended to be multi- + * column. + */function isMultiColumnFooterLinks(links){return'title'in links[0];} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Footer/LinkItem/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function FooterLinkItem({item}){const{to,href,label,prependBaseUrlToHref,...props}=item;const toUrl=(0,useBaseUrl/* default */.Ay)(to);const normalizedHref=(0,useBaseUrl/* default */.Ay)(href,{forcePrependBaseUrl:true});return/*#__PURE__*/(0,jsx_runtime.jsxs)(Link/* default */.A,{className:"footer__link-item",...(href?{href:prependBaseUrlToHref?normalizedHref:href}:{to:toUrl}),...props,children:[label,href&&!(0,isInternalUrl/* default */.A)(href)&&/*#__PURE__*/(0,jsx_runtime.jsx)(ExternalLink/* default */.A,{})]});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Footer/Links/MultiColumn/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function ColumnLinkItem({item}){return item.html?/*#__PURE__*/(0,jsx_runtime.jsx)("li",{className:"footer__item"// Developer provided the HTML, so assume it's safe. +// eslint-disable-next-line react/no-danger +,dangerouslySetInnerHTML:{__html:item.html}}):/*#__PURE__*/(0,jsx_runtime.jsx)("li",{className:"footer__item",children:/*#__PURE__*/(0,jsx_runtime.jsx)(FooterLinkItem,{item:item})},item.href??item.to);}function Column({column}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"col footer__col",children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"footer__title",children:column.title}),/*#__PURE__*/(0,jsx_runtime.jsx)("ul",{className:"footer__items clean-list",children:column.items.map((item,i)=>/*#__PURE__*/(0,jsx_runtime.jsx)(ColumnLinkItem,{item:item},i))})]});}function FooterLinksMultiColumn({columns}){return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"row footer__links",children:columns.map((column,i)=>/*#__PURE__*/(0,jsx_runtime.jsx)(Column,{column:column},i))});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Footer/Links/Simple/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Separator(){return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{className:"footer__link-separator",children:"\xB7"});}function SimpleLinkItem({item}){return item.html?/*#__PURE__*/(0,jsx_runtime.jsx)("span",{className:"footer__link-item"// Developer provided the HTML, so assume it's safe. +// eslint-disable-next-line react/no-danger +,dangerouslySetInnerHTML:{__html:item.html}}):/*#__PURE__*/(0,jsx_runtime.jsx)(FooterLinkItem,{item:item});}function FooterLinksSimple({links}){return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"footer__links text--center",children:/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"footer__links",children:links.map((item,i)=>/*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(SimpleLinkItem,{item:item}),links.length!==i+1&&/*#__PURE__*/(0,jsx_runtime.jsx)(Separator,{})]},i))})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Footer/Links/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function FooterLinks({links}){return isMultiColumnFooterLinks(links)?/*#__PURE__*/(0,jsx_runtime.jsx)(FooterLinksMultiColumn,{columns:links}):/*#__PURE__*/(0,jsx_runtime.jsx)(FooterLinksSimple,{links:links});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/ThemedImage/index.js + 1 modules +var ThemedImage = __webpack_require__(2903); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Footer/Logo/styles.module.css +var Logo_styles_module = __webpack_require__(5309); +var Logo_styles_module_default = /*#__PURE__*/__webpack_require__.n(Logo_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Footer/Logo/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function LogoImage({logo}){const{withBaseUrl}=(0,useBaseUrl/* useBaseUrlUtils */.hH)();const sources={light:withBaseUrl(logo.src),dark:withBaseUrl(logo.srcDark??logo.src)};return/*#__PURE__*/(0,jsx_runtime.jsx)(ThemedImage/* default */.A,{className:(0,clsx/* default */.A)('footer__logo',logo.className),alt:logo.alt,sources:sources,width:logo.width,height:logo.height,style:logo.style});}function FooterLogo({logo}){return logo.href?/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{href:logo.href,className:(Logo_styles_module_default()).footerLogoLink,target:logo.target,children:/*#__PURE__*/(0,jsx_runtime.jsx)(LogoImage,{logo:logo})}):/*#__PURE__*/(0,jsx_runtime.jsx)(LogoImage,{logo:logo});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Footer/Copyright/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function FooterCopyright({copyright}){return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"footer__copyright"// Developer provided the HTML, so assume it's safe. +// eslint-disable-next-line react/no-danger +,dangerouslySetInnerHTML:{__html:copyright}});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Footer/Layout/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function FooterLayout({style,links,logo,copyright}){return/*#__PURE__*/(0,jsx_runtime.jsx)("footer",{className:(0,clsx/* default */.A)('footer',{'footer--dark':style==='dark'}),children:/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"container container-fluid",children:[links,(logo||copyright)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"footer__bottom text--center",children:[logo&&/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"margin-bottom--sm",children:logo}),copyright]})]})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Footer/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Footer(){const{footer}=(0,useThemeConfig/* useThemeConfig */.p)();if(!footer){return null;}const{copyright,links,logo,style}=footer;return/*#__PURE__*/(0,jsx_runtime.jsx)(FooterLayout,{style:style,links:links&&links.length>0&&/*#__PURE__*/(0,jsx_runtime.jsx)(FooterLinks,{links:links}),logo:logo&&/*#__PURE__*/(0,jsx_runtime.jsx)(FooterLogo,{logo:logo}),copyright:copyright&&/*#__PURE__*/(0,jsx_runtime.jsx)(FooterCopyright,{copyright:copyright})});}/* harmony default export */ const theme_Footer = (/*#__PURE__*/react.memo(Footer)); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Layout/Provider/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Provider=(0,reactUtils/* composeProviders */.fM)([contexts_colorMode/* ColorModeProvider */.a,contexts_announcementBar/* AnnouncementBarProvider */.o,scrollUtils/* ScrollControllerProvider */.Tv,docsPreferredVersion/* DocsPreferredVersionContextProvider */.VQ,metadataUtils/* PluginHtmlClassNameProvider */.Jx,NavbarProvider]);function LayoutProvider({children}){return/*#__PURE__*/(0,jsx_runtime.jsx)(Provider,{children:children});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Heading/index.js +var Heading = __webpack_require__(4608); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/ErrorPageContent.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function ErrorPageContent({error,tryAgain}){return/*#__PURE__*/(0,jsx_runtime.jsx)("main",{className:"container margin-vert--xl",children:/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"row",children:/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"col col--6 col--offset-3",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Heading/* default */.A,{as:"h1",className:"hero__title",children:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"margin-vert--lg",children:/*#__PURE__*/(0,jsx_runtime.jsx)(ErrorBoundaryTryAgainButton,{onClick:tryAgain,className:"button button--primary shadow--lw"})}),/*#__PURE__*/(0,jsx_runtime.jsx)("hr",{}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"margin-vert--md",children:/*#__PURE__*/(0,jsx_runtime.jsx)(ErrorBoundaryError,{error:error})})]})})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Layout/styles.module.css +var theme_Layout_styles_module = __webpack_require__(6218); +var theme_Layout_styles_module_default = /*#__PURE__*/__webpack_require__.n(theme_Layout_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Layout/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Layout(props){const{children,noFooter,wrapperClassName,// Not really layout-related, but kept for convenience/retro-compatibility +title,description}=props;(0,useKeyboardNavigation/* useKeyboardNavigation */.J)();return/*#__PURE__*/(0,jsx_runtime.jsxs)(LayoutProvider,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(metadataUtils/* PageMetadata */.be,{title:title,description:description}),/*#__PURE__*/(0,jsx_runtime.jsx)(SkipToContent,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(AnnouncementBar,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(Navbar,{}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{id:SkipToContentFallbackId,className:(0,clsx/* default */.A)(ThemeClassNames/* ThemeClassNames */.G.wrapper.main,(theme_Layout_styles_module_default()).mainWrapper,wrapperClassName),children:/*#__PURE__*/(0,jsx_runtime.jsx)(ErrorBoundary/* default */.A,{fallback:params=>/*#__PURE__*/(0,jsx_runtime.jsx)(ErrorPageContent,{...params}),children:children})}),!noFooter&&/*#__PURE__*/(0,jsx_runtime.jsx)(theme_Footer,{})]});} + +/***/ }), + +/***/ 3465: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ Logo) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_Link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(725); +/* harmony import */ var _docusaurus_useBaseUrl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6025); +/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4586); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6342); +/* harmony import */ var _theme_ThemedImage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2903); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function LogoThemedImage({logo,alt,imageClassName}){const sources={light:(0,_docusaurus_useBaseUrl__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay)(logo.src),dark:(0,_docusaurus_useBaseUrl__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay)(logo.srcDark||logo.src)};const themedImage=/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_theme_ThemedImage__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A,{className:logo.className,sources:sources,height:logo.height,width:logo.width,alt:alt,style:logo.style});// Is this extra div really necessary? +// introduced in https://github.com/facebook/docusaurus/pull/5666 +return imageClassName?/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:imageClassName,children:themedImage}):themedImage;}function Logo(props){const{siteConfig:{title}}=(0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)();const{navbar:{title:navbarTitle,logo}}=(0,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_6__/* .useThemeConfig */ .p)();const{imageClassName,titleClassName,...propsRest}=props;const logoLink=(0,_docusaurus_useBaseUrl__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay)(logo?.href||'/');// If visible title is shown, fallback alt text should be +// an empty string to mark the logo as decorative. +const fallbackAlt=navbarTitle?'':title;// Use logo alt text if provided (including empty string), +// and provide a sensible fallback otherwise. +const alt=logo?.alt??fallbackAlt;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_docusaurus_Link__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{to:logoLink,...propsRest,...(logo?.target&&{target:logo.target}),children:[logo&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(LogoThemedImage,{logo:logo,alt:alt,imageClassName:imageClassName}),navbarTitle!=null&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("b",{className:titleClassName,children:navbarTitle})]});} + +/***/ }), + +/***/ 9966: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ MDXContent) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/@mdx-js/react/lib/index.js +var lib = __webpack_require__(8453); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Head.js +var Head = __webpack_require__(5260); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useIsBrowser.js +var useIsBrowser = __webpack_require__(2303); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/colorMode.js +var contexts_colorMode = __webpack_require__(5293); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useThemeConfig.js +var useThemeConfig = __webpack_require__(6342); +;// ./node_modules/@docusaurus/theme-common/lib/hooks/usePrismTheme.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Returns a color-mode-dependent Prism theme: whatever the user specified in + * the config. Falls back to `palenight`. + */function usePrismTheme(){const{prism}=(0,useThemeConfig/* useThemeConfig */.p)();const{colorMode}=(0,contexts_colorMode/* useColorMode */.G)();const lightModeTheme=prism.theme;const darkModeTheme=prism.darkTheme||lightModeTheme;const prismTheme=colorMode==='dark'?darkModeTheme:lightModeTheme;return prismTheme;} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/ThemeClassNames.js +var ThemeClassNames = __webpack_require__(7559); +// EXTERNAL MODULE: ./node_modules/parse-numeric-range/index.js +var parse_numeric_range = __webpack_require__(8426); +var parse_numeric_range_default = /*#__PURE__*/__webpack_require__.n(parse_numeric_range); +;// ./node_modules/@docusaurus/theme-common/lib/utils/codeBlockUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const codeBlockTitleRegex=/title=(?["'])(?.*?)\1/;const metastringLinesRangeRegex=/\{(?<range>[\d,-]+)\}/;// Supported types of highlight comments +const popularCommentPatterns={js:{start:'\\/\\/',end:''},jsBlock:{start:'\\/\\*',end:'\\*\\/'},jsx:{start:'\\{\\s*\\/\\*',end:'\\*\\/\\s*\\}'},bash:{start:'#',end:''},html:{start:'<!--',end:'-->'}};const commentPatterns={...popularCommentPatterns,// shallow copy is sufficient +// minor comment styles +lua:{start:'--',end:''},wasm:{start:'\\;\\;',end:''},tex:{start:'%',end:''},vb:{start:"['‘’]",end:''},vbnet:{start:"(?:_\\s*)?['‘’]",end:''},// Visual Studio 2019 or later +rem:{start:'[Rr][Ee][Mm]\\b',end:''},f90:{start:'!',end:''},// Free format only +ml:{start:'\\(\\*',end:'\\*\\)'},cobol:{start:'\\*>',end:''}// Free format only +};const popularCommentTypes=Object.keys(popularCommentPatterns);function getCommentPattern(languages,magicCommentDirectives){// To be more reliable, the opening and closing comment must match +const commentPattern=languages.map(lang=>{const{start,end}=commentPatterns[lang];return`(?:${start}\\s*(${magicCommentDirectives.flatMap(d=>[d.line,d.block?.start,d.block?.end].filter(Boolean)).join('|')})\\s*${end})`;}).join('|');// White space is allowed, but otherwise it should be on it's own line +return new RegExp(`^\\s*(?:${commentPattern})\\s*$`);}/** + * Select comment styles based on language + */function getAllMagicCommentDirectiveStyles(lang,magicCommentDirectives){switch(lang){case'js':case'javascript':case'ts':case'typescript':return getCommentPattern(['js','jsBlock'],magicCommentDirectives);case'jsx':case'tsx':return getCommentPattern(['js','jsBlock','jsx'],magicCommentDirectives);case'html':return getCommentPattern(['js','jsBlock','html'],magicCommentDirectives);case'python':case'py':case'bash':return getCommentPattern(['bash'],magicCommentDirectives);case'markdown':case'md':// Text uses HTML, front matter uses bash +return getCommentPattern(['html','jsx','bash'],magicCommentDirectives);case'tex':case'latex':case'matlab':return getCommentPattern(['tex'],magicCommentDirectives);case'lua':case'haskell':case'sql':return getCommentPattern(['lua'],magicCommentDirectives);case'wasm':return getCommentPattern(['wasm'],magicCommentDirectives);case'vb':case'vba':case'visual-basic':return getCommentPattern(['vb','rem'],magicCommentDirectives);case'vbnet':return getCommentPattern(['vbnet','rem'],magicCommentDirectives);case'batch':return getCommentPattern(['rem'],magicCommentDirectives);case'basic':// https://github.com/PrismJS/prism/blob/master/components/prism-basic.js#L3 +return getCommentPattern(['rem','f90'],magicCommentDirectives);case'fsharp':return getCommentPattern(['js','ml'],magicCommentDirectives);case'ocaml':case'sml':return getCommentPattern(['ml'],magicCommentDirectives);case'fortran':return getCommentPattern(['f90'],magicCommentDirectives);case'cobol':return getCommentPattern(['cobol'],magicCommentDirectives);default:// All popular comment types +return getCommentPattern(popularCommentTypes,magicCommentDirectives);}}function parseCodeBlockTitle(metastring){return metastring?.match(codeBlockTitleRegex)?.groups.title??'';}function containsLineNumbers(metastring){return Boolean(metastring?.includes('showLineNumbers'));}/** + * Gets the language name from the class name (set by MDX). + * e.g. `"language-javascript"` => `"javascript"`. + * Returns undefined if there is no language class name. + */function parseLanguage(className){const languageClassName=className.split(' ').find(str=>str.startsWith('language-'));return languageClassName?.replace(/language-/,'');}/** + * Parses the code content, strips away any magic comments, and returns the + * clean content and the highlighted lines marked by the comments or metastring. + * + * If the metastring contains a range, the `content` will be returned as-is + * without any parsing. The returned `lineClassNames` will be a map from that + * number range to the first magic comment config entry (which _should_ be for + * line highlight directives.) + * + * @param content The raw code with magic comments. Trailing newline will be + * trimmed upfront. + * @param options Options for parsing behavior. + */function parseLines(content,options){let code=content.replace(/\n$/,'');const{language,magicComments,metastring}=options;// Highlighted lines specified in props: don't parse the content +if(metastring&&metastringLinesRangeRegex.test(metastring)){const linesRange=metastring.match(metastringLinesRangeRegex).groups.range;if(magicComments.length===0){throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${metastring}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);}const metastringRangeClassName=magicComments[0].className;const lines=parse_numeric_range_default()(linesRange).filter(n=>n>0).map(n=>[n-1,[metastringRangeClassName]]);return{lineClassNames:Object.fromEntries(lines),code};}if(language===undefined){return{lineClassNames:{},code};}const directiveRegex=getAllMagicCommentDirectiveStyles(language,magicComments);// Go through line by line +const lines=code.split('\n');const blocks=Object.fromEntries(magicComments.map(d=>[d.className,{start:0,range:''}]));const lineToClassName=Object.fromEntries(magicComments.filter(d=>d.line).map(({className,line})=>[line,className]));const blockStartToClassName=Object.fromEntries(magicComments.filter(d=>d.block).map(({className,block})=>[block.start,className]));const blockEndToClassName=Object.fromEntries(magicComments.filter(d=>d.block).map(({className,block})=>[block.end,className]));for(let lineNumber=0;lineNumber<lines.length;){const line=lines[lineNumber];const match=line.match(directiveRegex);if(!match){// Lines without directives are unchanged +lineNumber+=1;continue;}const directive=match.slice(1).find(item=>item!==undefined);if(lineToClassName[directive]){blocks[lineToClassName[directive]].range+=`${lineNumber},`;}else if(blockStartToClassName[directive]){blocks[blockStartToClassName[directive]].start=lineNumber;}else if(blockEndToClassName[directive]){blocks[blockEndToClassName[directive]].range+=`${blocks[blockEndToClassName[directive]].start}-${lineNumber-1},`;}lines.splice(lineNumber,1);}code=lines.join('\n');const lineClassNames={};Object.entries(blocks).forEach(([className,{range}])=>{parse_numeric_range_default()(range).forEach(l=>{lineClassNames[l]??=[];lineClassNames[l].push(className);});});return{lineClassNames,code};}function getPrismCssVariables(prismTheme){const mapping={color:'--prism-color',backgroundColor:'--prism-background-color'};const properties={};Object.entries(prismTheme.plain).forEach(([key,value])=>{const varName=mapping[key];if(varName&&typeof value==='string'){properties[varName]=value;}});return properties;} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Container/styles.module.css +var styles_module = __webpack_require__(1702); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Container/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function CodeBlockContainer({as:As,...props}){const prismTheme=usePrismTheme();const prismCssVariables=getPrismCssVariables(prismTheme);return/*#__PURE__*/(0,jsx_runtime.jsx)(As// Polymorphic components are hard to type, without `oneOf` generics +,{...props,style:prismCssVariables,className:(0,clsx/* default */.A)(props.className,(styles_module_default()).codeBlockContainer,ThemeClassNames/* ThemeClassNames */.G.common.codeBlock)});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Content/styles.module.css +var Content_styles_module = __webpack_require__(6128); +var Content_styles_module_default = /*#__PURE__*/__webpack_require__.n(Content_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Content/Element.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// <pre> tags in markdown map to CodeBlocks. They may contain JSX children. When +// the children is not a simple string, we just return a styled block without +// actually highlighting. +function CodeBlockJSX({children,className}){return/*#__PURE__*/(0,jsx_runtime.jsx)(CodeBlockContainer,{as:"pre",tabIndex:0,className:(0,clsx/* default */.A)((Content_styles_module_default()).codeBlockStandalone,'thin-scrollbar',className),children:/*#__PURE__*/(0,jsx_runtime.jsx)("code",{className:(Content_styles_module_default()).codeBlockLines,children:children})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/reactUtils.js +var reactUtils = __webpack_require__(9532); +;// ./node_modules/@docusaurus/theme-common/lib/hooks/useMutationObserver.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const DefaultOptions={attributes:true,characterData:true,childList:true,subtree:true};function useMutationObserver(target,callback,options=DefaultOptions){const stableCallback=(0,reactUtils/* useEvent */._q)(callback);// MutationObserver options are not nested much +// so this should be to memo options in 99% +// TODO handle options.attributeFilter array +const stableOptions=(0,reactUtils/* useShallowMemoObject */.Be)(options);(0,react.useEffect)(()=>{const observer=new MutationObserver(stableCallback);if(target){observer.observe(target,stableOptions);}return()=>observer.disconnect();},[target,stableCallback,stableOptions]);} +;// ./node_modules/@docusaurus/theme-common/lib/hooks/useCodeWordWrap.js +// Callback fires when the "hidden" attribute of a tabpanel changes +// See https://github.com/facebook/docusaurus/pull/7485 +function useTabBecameVisibleCallback(codeBlockRef,callback){const[hiddenTabElement,setHiddenTabElement]=(0,react.useState)();const updateHiddenTabElement=(0,react.useCallback)(()=>{// No need to observe non-hidden tabs +// + we want to force a re-render when a tab becomes visible +setHiddenTabElement(codeBlockRef.current?.closest('[role=tabpanel][hidden]'));},[codeBlockRef,setHiddenTabElement]);(0,react.useEffect)(()=>{updateHiddenTabElement();},[updateHiddenTabElement]);useMutationObserver(hiddenTabElement,mutations=>{mutations.forEach(mutation=>{if(mutation.type==='attributes'&&mutation.attributeName==='hidden'){callback();updateHiddenTabElement();}});},{attributes:true,characterData:false,childList:false,subtree:false});}function useCodeWordWrap(){const[isEnabled,setIsEnabled]=(0,react.useState)(false);const[isCodeScrollable,setIsCodeScrollable]=(0,react.useState)(false);const codeBlockRef=(0,react.useRef)(null);const toggle=(0,react.useCallback)(()=>{const codeElement=codeBlockRef.current.querySelector('code');if(isEnabled){codeElement.removeAttribute('style');}else{codeElement.style.whiteSpace='pre-wrap';// When code wrap is enabled, we want to avoid a scrollbar in any case +// Ensure that very very long words/strings/tokens still wrap +codeElement.style.overflowWrap='anywhere';}setIsEnabled(value=>!value);},[codeBlockRef,isEnabled]);const updateCodeIsScrollable=(0,react.useCallback)(()=>{const{scrollWidth,clientWidth}=codeBlockRef.current;const isScrollable=scrollWidth>clientWidth||codeBlockRef.current.querySelector('code').hasAttribute('style');setIsCodeScrollable(isScrollable);},[codeBlockRef]);useTabBecameVisibleCallback(codeBlockRef,updateCodeIsScrollable);(0,react.useEffect)(()=>{updateCodeIsScrollable();},[isEnabled,updateCodeIsScrollable]);(0,react.useEffect)(()=>{window.addEventListener('resize',updateCodeIsScrollable,{passive:true});return()=>{window.removeEventListener('resize',updateCodeIsScrollable);};},[updateCodeIsScrollable]);return{codeBlockRef,isEnabled,isCodeScrollable,toggle};} +// EXTERNAL MODULE: ./node_modules/prism-react-renderer/dist/index.mjs +var dist = __webpack_require__(1765); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Line/styles.module.css +var Line_styles_module = __webpack_require__(3083); +var Line_styles_module_default = /*#__PURE__*/__webpack_require__.n(Line_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Line/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function CodeBlockLine({line,classNames,showLineNumbers,getLineProps,getTokenProps}){if(line.length===1&&line[0].content==='\n'){line[0].content='';}const lineProps=getLineProps({line,className:(0,clsx/* default */.A)(classNames,showLineNumbers&&(Line_styles_module_default()).codeLine)});const lineTokens=line.map((token,key)=>/*#__PURE__*/(0,jsx_runtime.jsx)("span",{...getTokenProps({token})},key));return/*#__PURE__*/(0,jsx_runtime.jsxs)("span",{...lineProps,children:[showLineNumbers?/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)("span",{className:(Line_styles_module_default()).codeLineNumber}),/*#__PURE__*/(0,jsx_runtime.jsx)("span",{className:(Line_styles_module_default()).codeLineContent,children:lineTokens})]}):lineTokens,/*#__PURE__*/(0,jsx_runtime.jsx)("br",{})]});} +;// ./node_modules/copy-text-to-clipboard/index.js +function copyTextToClipboard(text,{target=document.body}={}){if(typeof text!=='string'){throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof text}\`.`);}const element=document.createElement('textarea');const previouslyFocusedElement=document.activeElement;element.value=text;// Prevent keyboard from showing on mobile +element.setAttribute('readonly','');element.style.contain='strict';element.style.position='absolute';element.style.left='-9999px';element.style.fontSize='12pt';// Prevent zooming on iOS +const selection=document.getSelection();const originalRange=selection.rangeCount>0&&selection.getRangeAt(0);target.append(element);element.select();// Explicit selection workaround for iOS +element.selectionStart=0;element.selectionEnd=text.length;let isSuccess=false;try{isSuccess=document.execCommand('copy');}catch{}element.remove();if(originalRange){selection.removeAllRanges();selection.addRange(originalRange);}// Get the focus back on the previously focused element, if any +if(previouslyFocusedElement){previouslyFocusedElement.focus();}return isSuccess;} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules +var Translate = __webpack_require__(1312); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Copy/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconCopy(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 24 24",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Success/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconSuccess(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 24 24",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/CopyButton/styles.module.css +var CopyButton_styles_module = __webpack_require__(4142); +var CopyButton_styles_module_default = /*#__PURE__*/__webpack_require__.n(CopyButton_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/CopyButton/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function CopyButton({code,className}){const[isCopied,setIsCopied]=(0,react.useState)(false);const copyTimeout=(0,react.useRef)(undefined);const handleCopyCode=(0,react.useCallback)(()=>{copyTextToClipboard(code);setIsCopied(true);copyTimeout.current=window.setTimeout(()=>{setIsCopied(false);},1000);},[code]);(0,react.useEffect)(()=>()=>window.clearTimeout(copyTimeout.current),[]);return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{type:"button","aria-label":isCopied?(0,Translate/* translate */.T)({id:'theme.CodeBlock.copied',message:'Copied',description:'The copied button label on code blocks'}):(0,Translate/* translate */.T)({id:'theme.CodeBlock.copyButtonAriaLabel',message:'Copy code to clipboard',description:'The ARIA label for copy code blocks button'}),title:(0,Translate/* translate */.T)({id:'theme.CodeBlock.copy',message:'Copy',description:'The copy button label on code blocks'}),className:(0,clsx/* default */.A)('clean-btn',className,(CopyButton_styles_module_default()).copyButton,isCopied&&(CopyButton_styles_module_default()).copyButtonCopied),onClick:handleCopyCode,children:/*#__PURE__*/(0,jsx_runtime.jsxs)("span",{className:(CopyButton_styles_module_default()).copyButtonIcons,"aria-hidden":"true",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(IconCopy,{className:(CopyButton_styles_module_default()).copyButtonIcon}),/*#__PURE__*/(0,jsx_runtime.jsx)(IconSuccess,{className:(CopyButton_styles_module_default()).copyButtonSuccessIcon})]})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/WordWrap/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function IconWordWrap(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("svg",{viewBox:"0 0 24 24",...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/WordWrapButton/styles.module.css +var WordWrapButton_styles_module = __webpack_require__(9501); +var WordWrapButton_styles_module_default = /*#__PURE__*/__webpack_require__.n(WordWrapButton_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/WordWrapButton/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function WordWrapButton({className,onClick,isEnabled}){const title=(0,Translate/* translate */.T)({id:'theme.CodeBlock.wordWrapToggle',message:'Toggle word wrap',description:'The title attribute for toggle word wrapping button of code block lines'});return/*#__PURE__*/(0,jsx_runtime.jsx)("button",{type:"button",onClick:onClick,className:(0,clsx/* default */.A)('clean-btn',className,isEnabled&&(WordWrapButton_styles_module_default()).wordWrapButtonEnabled),"aria-label":title,title:title,children:/*#__PURE__*/(0,jsx_runtime.jsx)(IconWordWrap,{className:(WordWrapButton_styles_module_default()).wordWrapButtonIcon,"aria-hidden":"true"})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Content/String.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Prism languages are always lowercase +// We want to fail-safe and allow both "php" and "PHP" +// See https://github.com/facebook/docusaurus/issues/9012 +function normalizeLanguage(language){return language?.toLowerCase();}function CodeBlockString({children,className:blockClassName='',metastring,title:titleProp,showLineNumbers:showLineNumbersProp,language:languageProp}){const{prism:{defaultLanguage,magicComments}}=(0,useThemeConfig/* useThemeConfig */.p)();const language=normalizeLanguage(languageProp??parseLanguage(blockClassName)??defaultLanguage);const prismTheme=usePrismTheme();const wordWrap=useCodeWordWrap();// We still parse the metastring in case we want to support more syntax in the +// future. Note that MDX doesn't strip quotes when parsing metastring: +// "title=\"xyz\"" => title: "\"xyz\"" +const title=parseCodeBlockTitle(metastring)||titleProp;const{lineClassNames,code}=parseLines(children,{metastring,language,magicComments});const showLineNumbers=showLineNumbersProp??containsLineNumbers(metastring);return/*#__PURE__*/(0,jsx_runtime.jsxs)(CodeBlockContainer,{as:"div",className:(0,clsx/* default */.A)(blockClassName,language&&!blockClassName.includes(`language-${language}`)&&`language-${language}`),children:[title&&/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(Content_styles_module_default()).codeBlockTitle,children:title}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(Content_styles_module_default()).codeBlockContent,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(dist/* Highlight */.f4,{theme:prismTheme,code:code,language:language??'text',children:({className,style,tokens,getLineProps,getTokenProps})=>/*#__PURE__*/(0,jsx_runtime.jsx)("pre",{/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */tabIndex:0,ref:wordWrap.codeBlockRef,className:(0,clsx/* default */.A)(className,(Content_styles_module_default()).codeBlock,'thin-scrollbar'),style:style,children:/*#__PURE__*/(0,jsx_runtime.jsx)("code",{className:(0,clsx/* default */.A)((Content_styles_module_default()).codeBlockLines,showLineNumbers&&(Content_styles_module_default()).codeBlockLinesWithNumbering),children:tokens.map((line,i)=>/*#__PURE__*/(0,jsx_runtime.jsx)(CodeBlockLine,{line:line,getLineProps:getLineProps,getTokenProps:getTokenProps,classNames:lineClassNames[i],showLineNumbers:showLineNumbers},i))})})}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:(Content_styles_module_default()).buttonGroup,children:[(wordWrap.isEnabled||wordWrap.isCodeScrollable)&&/*#__PURE__*/(0,jsx_runtime.jsx)(WordWrapButton,{className:(Content_styles_module_default()).codeButton,onClick:()=>wordWrap.toggle(),isEnabled:wordWrap.isEnabled}),/*#__PURE__*/(0,jsx_runtime.jsx)(CopyButton,{className:(Content_styles_module_default()).codeButton,code:code})]})]})]});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Best attempt to make the children a plain string so it is copyable. If there + * are react elements, we will not be able to copy the content, and it will + * return `children` as-is; otherwise, it concatenates the string children + * together. + */function maybeStringifyChildren(children){if(react.Children.toArray(children).some(el=>/*#__PURE__*/(0,react.isValidElement)(el))){return children;}// The children is now guaranteed to be one/more plain strings +return Array.isArray(children)?children.join(''):children;}function CodeBlock({children:rawChildren,...props}){// The Prism theme on SSR is always the default theme but the site theme can +// be in a different mode. React hydration doesn't update DOM styles that come +// from SSR. Hence force a re-render after mounting to apply the current +// relevant styles. +const isBrowser=(0,useIsBrowser/* default */.A)();const children=maybeStringifyChildren(rawChildren);const CodeBlockComp=typeof children==='string'?CodeBlockString:CodeBlockJSX;return/*#__PURE__*/(0,jsx_runtime.jsx)(CodeBlockComp,{...props,children:children},String(isBrowser));} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/CodeInline/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Simple component used to render inline code blocks +// its purpose is to be swizzled and customized +// MDX 1 used to have a inlineCode comp, see https://mdxjs.com/migrating/v2/ +function CodeInline(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("code",{...props});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Code.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function shouldBeInline(props){return(// empty code blocks have no props.children, +// see https://github.com/facebook/docusaurus/pull/9704 +typeof props.children!=='undefined'&&react.Children.toArray(props.children).every(el=>typeof el==='string'&&!el.includes('\n')));}function MDXCode(props){return shouldBeInline(props)?/*#__PURE__*/(0,jsx_runtime.jsx)(CodeInline,{...props}):/*#__PURE__*/(0,jsx_runtime.jsx)(CodeBlock,{...props});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/A.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function MDXA(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{...props});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Pre.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function MDXPre(props){// With MDX 2, this element is only used for fenced code blocks +// It always receives a MDXComponents/Code as children +return/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:props.children});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useBrokenLinks.js +var useBrokenLinks = __webpack_require__(2521); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/components/Collapsible/index.js +var Collapsible = __webpack_require__(1422); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/components/Details/styles.module.css +var Details_styles_module = __webpack_require__(6062); +var Details_styles_module_default = /*#__PURE__*/__webpack_require__.n(Details_styles_module); +;// ./node_modules/@docusaurus/theme-common/lib/components/Details/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function isInSummary(node){if(!node){return false;}return node.tagName==='SUMMARY'||isInSummary(node.parentElement);}function hasParent(node,parent){if(!node){return false;}return node===parent||hasParent(node.parentElement,parent);}/** + * A mostly un-styled `<details>` element with smooth collapsing. Provides some + * very lightweight styles, but you should bring your UI. + */function Details({summary,children,...props}){(0,useBrokenLinks/* default */.A)().collectAnchor(props.id);const isBrowser=(0,useIsBrowser/* default */.A)();const detailsRef=(0,react.useRef)(null);const{collapsed,setCollapsed}=(0,Collapsible/* useCollapsible */.u)({initialState:!props.open});// Use a separate state for the actual details prop, because it must be set +// only after animation completes, otherwise close animations won't work +const[open,setOpen]=(0,react.useState)(props.open);const summaryElement=/*#__PURE__*/react.isValidElement(summary)?summary:/*#__PURE__*/(0,jsx_runtime.jsx)("summary",{children:summary??'Details'});return(/*#__PURE__*/// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions +(0,jsx_runtime.jsxs)("details",{...props,ref:detailsRef,open:open,"data-collapsed":collapsed,className:(0,clsx/* default */.A)((Details_styles_module_default()).details,isBrowser&&(Details_styles_module_default()).isBrowser,props.className),onMouseDown:e=>{const target=e.target;// Prevent a double-click to highlight summary text +if(isInSummary(target)&&e.detail>1){e.preventDefault();}},onClick:e=>{e.stopPropagation();// For isolation of multiple nested details/summary +const target=e.target;const shouldToggle=isInSummary(target)&&hasParent(target,detailsRef.current);if(!shouldToggle){return;}e.preventDefault();if(collapsed){setCollapsed(false);setOpen(true);}else{setCollapsed(true);// Don't do this, it breaks close animation! +// setOpen(false); +}},children:[summaryElement,/*#__PURE__*/(0,jsx_runtime.jsx)(Collapsible/* Collapsible */.N,{lazy:false// Content might matter for SEO in this case +,collapsed:collapsed,disableSSRStyle:true// Allows component to work fine even with JS disabled! +,onCollapseTransitionEnd:newCollapsed=>{setCollapsed(newCollapsed);setOpen(!newCollapsed);},children:/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(Details_styles_module_default()).collapsibleContent,children:children})})]}));} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Details/styles.module.css +var theme_Details_styles_module = __webpack_require__(3406); +var theme_Details_styles_module_default = /*#__PURE__*/__webpack_require__.n(theme_Details_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/Details/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Should we have a custom details/summary comp in Infima instead of reusing +// alert classes? +const InfimaClasses='alert alert--info';function Details_Details({...props}){return/*#__PURE__*/(0,jsx_runtime.jsx)(Details,{...props,className:(0,clsx/* default */.A)(InfimaClasses,(theme_Details_styles_module_default()).details,props.className)});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Details.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function MDXDetails(props){const items=react.Children.toArray(props.children);// Split summary item from the rest to pass it as a separate prop to the +// Details theme component +const summary=items.find(item=>/*#__PURE__*/react.isValidElement(item)&&item.type==='summary');const children=/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:items.filter(item=>item!==summary)});return/*#__PURE__*/(0,jsx_runtime.jsx)(Details_Details,{...props,summary:summary,children:children});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Heading/index.js +var Heading = __webpack_require__(4608); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Heading.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function MDXHeading(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(Heading/* default */.A,{...props});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Ul/styles.module.css +var Ul_styles_module = __webpack_require__(7691); +var Ul_styles_module_default = /*#__PURE__*/__webpack_require__.n(Ul_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Ul/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function transformUlClassName(className){// Fix https://github.com/facebook/docusaurus/issues/9098 +if(typeof className==='undefined'){return undefined;}return (0,clsx/* default */.A)(className,// This class is set globally by GitHub/MDX. We keep the global class, and +// add another class to get a task list without the default ul styling +// See https://github.com/syntax-tree/mdast-util-to-hast/issues/28 +className?.includes('contains-task-list')&&(Ul_styles_module_default()).containsTaskList);}function MDXUl(props){return/*#__PURE__*/(0,jsx_runtime.jsx)("ul",{...props,className:transformUlClassName(props.className)});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Li.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function MDXLi(props){// MDX Footnotes have ids such as <li id="user-content-fn-1-953011"> +(0,useBrokenLinks/* default */.A)().collectAnchor(props.id);return/*#__PURE__*/(0,jsx_runtime.jsx)("li",{...props});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Img/styles.module.css +var Img_styles_module = __webpack_require__(8081); +var Img_styles_module_default = /*#__PURE__*/__webpack_require__.n(Img_styles_module); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Img/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function transformImgClassName(className){return (0,clsx/* default */.A)(className,(Img_styles_module_default()).img);}function MDXImg(props){return(/*#__PURE__*/// eslint-disable-next-line jsx-a11y/alt-text +(0,jsx_runtime.jsx)("img",{decoding:"async",loading:"lazy",...props,className:transformImgClassName(props.className)}));} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/index.js + 14 modules +var Admonition = __webpack_require__(9364); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Noop.js +var Noop = __webpack_require__(418); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const MDXComponents={Head: Head/* default */.A,details:MDXDetails,// For MD mode support, see https://github.com/facebook/docusaurus/issues/9092#issuecomment-1602902274 +Details:MDXDetails,code:MDXCode,a:MDXA,pre:MDXPre,ul:MDXUl,li:MDXLi,img:MDXImg,h1:props=>/*#__PURE__*/(0,jsx_runtime.jsx)(MDXHeading,{as:"h1",...props}),h2:props=>/*#__PURE__*/(0,jsx_runtime.jsx)(MDXHeading,{as:"h2",...props}),h3:props=>/*#__PURE__*/(0,jsx_runtime.jsx)(MDXHeading,{as:"h3",...props}),h4:props=>/*#__PURE__*/(0,jsx_runtime.jsx)(MDXHeading,{as:"h4",...props}),h5:props=>/*#__PURE__*/(0,jsx_runtime.jsx)(MDXHeading,{as:"h5",...props}),h6:props=>/*#__PURE__*/(0,jsx_runtime.jsx)(MDXHeading,{as:"h6",...props}),admonition:Admonition/* default */.A,mermaid:Noop/* default */.A};/* harmony default export */ const theme_MDXComponents = (MDXComponents); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/MDXContent/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function MDXContent({children}){return/*#__PURE__*/(0,jsx_runtime.jsx)(lib/* MDXProvider */.x,{components:theme_MDXComponents,children:children});} + +/***/ }), + +/***/ 4250: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ MDXPage) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1213); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(7559); +/* harmony import */ var _theme_Layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7356); +/* harmony import */ var _theme_MDXContent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9966); +/* harmony import */ var _theme_TOC__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32); +/* harmony import */ var _theme_ContentVisibility__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1689); +/* harmony import */ var _theme_EditMetaRow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4722); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1696); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_styles_module_css__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function MDXPage(props){const{content:MDXPageContent}=props;const{metadata,assets}=MDXPageContent;const{title,editUrl,description,frontMatter,lastUpdatedBy,lastUpdatedAt}=metadata;const{keywords,wrapperClassName,hide_table_of_contents:hideTableOfContents}=frontMatter;const image=assets.image??frontMatter.image;const canDisplayEditMetaRow=!!(editUrl||lastUpdatedAt||lastUpdatedBy);return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_8__/* .HtmlClassNameProvider */ .e3,{className:(0,clsx__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(wrapperClassName??_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_10__/* .ThemeClassNames */ .G.wrapper.mdxPages,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_10__/* .ThemeClassNames */ .G.page.mdxPage),children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_theme_Layout__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_8__/* .PageMetadata */ .be,{title:title,description:description,keywords:keywords,image:image}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)("main",{className:"container container--fluid margin-vert--lg",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)("div",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)('row',(_styles_module_css__WEBPACK_IMPORTED_MODULE_6___default().mdxPageWrapper)),children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)("div",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)('col',!hideTableOfContents&&'col--8'),children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_theme_ContentVisibility__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A,{metadata:metadata}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)("article",{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_theme_MDXContent__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(MDXPageContent,{})})}),canDisplayEditMetaRow&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_theme_EditMetaRow__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A,{className:(0,clsx__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)('margin-top--sm',_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_10__/* .ThemeClassNames */ .G.pages.pageFooterEditMetaRow),editUrl:editUrl,lastUpdatedAt:lastUpdatedAt,lastUpdatedBy:lastUpdatedBy})]}),!hideTableOfContents&&MDXPageContent.toc.length>0&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)("div",{className:"col col--2",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_theme_TOC__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A,{toc:MDXPageContent.toc,minHeadingLevel:frontMatter.toc_min_heading_level,maxHeadingLevel:frontMatter.toc_max_heading_level})})]})})]})});} + +/***/ }), + +/***/ 3363: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ NotFoundContent) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1312); +/* harmony import */ var _theme_Heading__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4608); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function NotFoundContent({className}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("main",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)('container margin-vert--xl',className),children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div",{className:"row",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div",{className:"col col--6 col--offset-3",children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_theme_Heading__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{as:"h1",className:"hero__title",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("p",{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("p",{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})});} + +/***/ }), + +/***/ 4618: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Index) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1312); +/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1213); +/* harmony import */ var _theme_Layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7356); +/* harmony import */ var _theme_NotFound_Content__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3363); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Index(){const title=(0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .T)({id:'theme.NotFound.title',message:'Page Not Found'});return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment,{children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__/* .PageMetadata */ .be,{title:title}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_theme_Layout__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_theme_NotFound_Content__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A,{})})]});} + +/***/ }), + +/***/ 9022: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ PaginatorNavLink) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_Link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(725); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function PaginatorNavLink(props){const{permalink,title,subLabel,isNext}=props;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(_docusaurus_Link__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{className:(0,clsx__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)('pagination-nav__link',isNext?'pagination-nav__link--next':'pagination-nav__link--prev'),to:permalink,children:[subLabel&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",{className:"pagination-nav__sublabel",children:subLabel}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",{className:"pagination-nav__label",children:title})]});} + +/***/ }), + +/***/ 1463: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ SearchMetadata) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_Head__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5260); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Note: we bias toward using Algolia metadata on purpose +// Not doing so leads to confusion in the community, +// as it requires to first crawl the site with the Algolia plugin enabled first +// - https://github.com/facebook/docusaurus/issues/6693 +// - https://github.com/facebook/docusaurus/issues/4555 +function SearchMetadata({locale,version,tag}){// Seems safe to consider here the locale is the language, as the existing +// docsearch:language filter is afaik a regular string-based filter +const language=locale;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(_docusaurus_Head__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{children:[locale&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("meta",{name:"docusaurus_locale",content:locale}),version&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("meta",{name:"docusaurus_version",content:version}),tag&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("meta",{name:"docusaurus_tag",content:tag}),language&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("meta",{name:"docsearch:language",content:language}),version&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("meta",{name:"docsearch:version",content:version}),tag&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("meta",{name:"docsearch:docusaurus_tag",content:tag})]});} + +/***/ }), + +/***/ 32: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ TOC) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4164); +/* harmony import */ var _theme_TOCItems__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5195); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5490); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_styles_module_css__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Using a custom className +// This prevents TOCInline/TOCCollapsible getting highlighted by mistake +const LINK_CLASS_NAME='table-of-contents__link toc-highlight';const LINK_ACTIVE_CLASS_NAME='table-of-contents__link--active';function TOC({className,...props}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)((_styles_module_css__WEBPACK_IMPORTED_MODULE_2___default().tableOfContents),'thin-scrollbar',className),children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_theme_TOCItems__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{...props,linkClassName:LINK_CLASS_NAME,linkActiveClassName:LINK_ACTIVE_CLASS_NAME})});} + +/***/ }), + +/***/ 5195: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ TOCItems) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useThemeConfig.js +var useThemeConfig = __webpack_require__(6342); +;// ./node_modules/@docusaurus/theme-common/lib/utils/tocUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function treeifyTOC(flatTOC){const headings=flatTOC.map(heading=>({...heading,parentIndex:-1,children:[]}));// Keep track of which previous index would be the current heading's direct +// parent. Each entry <i> is the last index of the `headings` array at heading +// level <i>. We will modify these indices as we iterate through all headings. +// e.g. if an ### H3 was last seen at index 2, then prevIndexForLevel[3] === 2 +// indices 0 and 1 will remain unused. +const prevIndexForLevel=Array(7).fill(-1);headings.forEach((curr,currIndex)=>{// Take the last seen index for each ancestor level. the highest index will +// be the direct ancestor of the current heading. +const ancestorLevelIndexes=prevIndexForLevel.slice(2,curr.level);curr.parentIndex=Math.max(...ancestorLevelIndexes);// Mark that curr.level was last seen at the current index. +prevIndexForLevel[curr.level]=currIndex;});const rootNodes=[];// For a given parentIndex, add each Node into that parent's `children` array +headings.forEach(heading=>{const{parentIndex,...rest}=heading;if(parentIndex>=0){headings[parentIndex].children.push(rest);}else{rootNodes.push(rest);}});return rootNodes;}/** + * Takes a flat TOC list (from the MDX loader) and treeifies it into what the + * TOC components expect. Memoized for performance. + */function useTreeifiedTOC(toc){return useMemo(()=>treeifyTOC(toc),[toc]);}function filterTOC({toc,minHeadingLevel,maxHeadingLevel}){function isValid(item){return item.level>=minHeadingLevel&&item.level<=maxHeadingLevel;}return toc.flatMap(item=>{const filteredChildren=filterTOC({toc:item.children,minHeadingLevel,maxHeadingLevel});if(isValid(item)){return[{...item,children:filteredChildren}];}return filteredChildren;});}/** + * Takes a flat TOC list (from the MDX loader) and treeifies it into what the + * TOC components expect, applying the `minHeadingLevel` and `maxHeadingLevel`. + * Memoized for performance. + * + * **Important**: this is not the same as `useTreeifiedTOC(toc.filter(...))`, + * because we have to filter the TOC after it has been treeified. This is mostly + * to ensure that weird TOC structures preserve their semantics. For example, an + * h3-h2-h4 sequence should not be treeified as an "h3 > h4" hierarchy with + * min=3, max=4, but should rather be "[h3, h4]" (since the h2 heading has split + * the two headings and they are not parent-children) + */function useFilteredAndTreeifiedTOC({toc,minHeadingLevel,maxHeadingLevel}){return (0,react.useMemo)(()=>filterTOC({toc:treeifyTOC(toc),minHeadingLevel,maxHeadingLevel}),[toc,minHeadingLevel,maxHeadingLevel]);} +;// ./node_modules/@docusaurus/theme-common/lib/hooks/useTOCHighlight.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// TODO make the hardcoded theme-classic classnames configurable (or add them +// to ThemeClassNames?) +/** + * If the anchor has no height and is just a "marker" in the DOM; we'll use the + * parent (normally the link text) rect boundaries instead + */function getVisibleBoundingClientRect(element){const rect=element.getBoundingClientRect();const hasNoHeight=rect.top===rect.bottom;if(hasNoHeight){return getVisibleBoundingClientRect(element.parentNode);}return rect;}/** + * Considering we divide viewport into 2 zones of each 50vh, this returns true + * if an element is in the first zone (i.e., appear in viewport, near the top) + */function isInViewportTopHalf(boundingRect){return boundingRect.top>0&&boundingRect.bottom<window.innerHeight/2;}function getAnchors({minHeadingLevel,maxHeadingLevel}){const selectors=[];for(let i=minHeadingLevel;i<=maxHeadingLevel;i+=1){selectors.push(`h${i}.anchor`);}return Array.from(document.querySelectorAll(selectors.join()));}function getActiveAnchor(anchors,{anchorTopOffset}){// Naming is hard: The "nextVisibleAnchor" is the first anchor that appear +// under the viewport top boundary. It does not mean this anchor is visible +// yet, but if user continues scrolling down, it will be the first to become +// visible +const nextVisibleAnchor=anchors.find(anchor=>{const boundingRect=getVisibleBoundingClientRect(anchor);return boundingRect.top>=anchorTopOffset;});if(nextVisibleAnchor){const boundingRect=getVisibleBoundingClientRect(nextVisibleAnchor);// If anchor is in the top half of the viewport: it is the one we consider +// "active" (unless it's too close to the top and and soon to be scrolled +// outside viewport) +if(isInViewportTopHalf(boundingRect)){return nextVisibleAnchor;}// If anchor is in the bottom half of the viewport, or under the viewport, +// we consider the active anchor is the previous one. This is because the +// main text appearing in the user screen mostly belong to the previous +// anchor. Returns null for the first anchor, see +// https://github.com/facebook/docusaurus/issues/5318 +return anchors[anchors.indexOf(nextVisibleAnchor)-1]??null;}// No anchor under viewport top (i.e. we are at the bottom of the page), +// highlight the last anchor found +return anchors[anchors.length-1]??null;}function getLinkAnchorValue(link){return decodeURIComponent(link.href.substring(link.href.indexOf('#')+1));}function getLinks(linkClassName){return Array.from(document.getElementsByClassName(linkClassName));}function getNavbarHeight(){// Not ideal to obtain actual height this way +// Using TS ! (not ?) because otherwise a bad selector would be un-noticed +return document.querySelector('.navbar').clientHeight;}function useAnchorTopOffsetRef(){const anchorTopOffsetRef=(0,react.useRef)(0);const{navbar:{hideOnScroll}}=(0,useThemeConfig/* useThemeConfig */.p)();(0,react.useEffect)(()=>{anchorTopOffsetRef.current=hideOnScroll?0:getNavbarHeight();},[hideOnScroll]);return anchorTopOffsetRef;}/** + * Side-effect that applies the active class name to the TOC heading that the + * user is currently viewing. Disabled when `config` is undefined. + */function useTOCHighlight(config){const lastActiveLinkRef=(0,react.useRef)(undefined);const anchorTopOffsetRef=useAnchorTopOffsetRef();(0,react.useEffect)(()=>{if(!config){// No-op, highlighting is disabled +return()=>{};}const{linkClassName,linkActiveClassName,minHeadingLevel,maxHeadingLevel}=config;function updateLinkActiveClass(link,active){if(active){if(lastActiveLinkRef.current&&lastActiveLinkRef.current!==link){lastActiveLinkRef.current.classList.remove(linkActiveClassName);}link.classList.add(linkActiveClassName);lastActiveLinkRef.current=link;// link.scrollIntoView({block: 'nearest'}); +}else{link.classList.remove(linkActiveClassName);}}function updateActiveLink(){const links=getLinks(linkClassName);const anchors=getAnchors({minHeadingLevel,maxHeadingLevel});const activeAnchor=getActiveAnchor(anchors,{anchorTopOffset:anchorTopOffsetRef.current});const activeLink=links.find(link=>activeAnchor&&activeAnchor.id===getLinkAnchorValue(link));links.forEach(link=>{updateLinkActiveClass(link,link===activeLink);});}document.addEventListener('scroll',updateActiveLink);document.addEventListener('resize',updateActiveLink);updateActiveLink();return()=>{document.removeEventListener('scroll',updateActiveLink);document.removeEventListener('resize',updateActiveLink);};},[config,anchorTopOffsetRef]);} +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/TOCItems/Tree.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Recursive component rendering the toc tree +function TOCItemTree({toc,className,linkClassName,isChild}){if(!toc.length){return null;}return/*#__PURE__*/(0,jsx_runtime.jsx)("ul",{className:isChild?undefined:className,children:toc.map(heading=>/*#__PURE__*/(0,jsx_runtime.jsxs)("li",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{to:`#${heading.id}`,className:linkClassName??undefined// Developer provided the HTML, so assume it's safe. +,dangerouslySetInnerHTML:{__html:heading.value}}),/*#__PURE__*/(0,jsx_runtime.jsx)(TOCItemTree,{isChild:true,toc:heading.children,className:className,linkClassName:linkClassName})]},heading.id))});}// Memo only the tree root is enough +/* harmony default export */ const Tree = (/*#__PURE__*/react.memo(TOCItemTree)); +;// ./node_modules/@docusaurus/theme-classic/lib/theme/TOCItems/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function TOCItems({toc,className='table-of-contents table-of-contents__left-border',linkClassName='table-of-contents__link',linkActiveClassName=undefined,minHeadingLevel:minHeadingLevelOption,maxHeadingLevel:maxHeadingLevelOption,...props}){const themeConfig=(0,useThemeConfig/* useThemeConfig */.p)();const minHeadingLevel=minHeadingLevelOption??themeConfig.tableOfContents.minHeadingLevel;const maxHeadingLevel=maxHeadingLevelOption??themeConfig.tableOfContents.maxHeadingLevel;const tocTree=useFilteredAndTreeifiedTOC({toc,minHeadingLevel,maxHeadingLevel});const tocHighlightConfig=(0,react.useMemo)(()=>{if(linkClassName&&linkActiveClassName){return{linkClassName,linkActiveClassName,minHeadingLevel,maxHeadingLevel};}return undefined;},[linkClassName,linkActiveClassName,minHeadingLevel,maxHeadingLevel]);useTOCHighlight(tocHighlightConfig);return/*#__PURE__*/(0,jsx_runtime.jsx)(Tree,{toc:tocTree,className:className,linkClassName:linkClassName,...props});} + +/***/ }), + +/***/ 8282: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ Tag) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_Link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(725); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(448); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_styles_module_css__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Tag({permalink,label,count,description}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_docusaurus_Link__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{href:permalink,title:description,className:(0,clsx__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)((_styles_module_css__WEBPACK_IMPORTED_MODULE_2___default().tag),count?(_styles_module_css__WEBPACK_IMPORTED_MODULE_2___default().tagWithCount):(_styles_module_css__WEBPACK_IMPORTED_MODULE_2___default().tagRegular)),children:[label,count&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("span",{children:count})]});} + +/***/ }), + +/***/ 8986: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ TagsListInline) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4164); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1312); +/* harmony import */ var _theme_Tag__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8282); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4088); +/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_styles_module_css__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function TagsListInline({tags}){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment,{children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b",{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("ul",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((_styles_module_css__WEBPACK_IMPORTED_MODULE_3___default().tags),'padding--none','margin-left--sm'),children:tags.map(tag=>/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("li",{className:(_styles_module_css__WEBPACK_IMPORTED_MODULE_3___default().tag),children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_theme_Tag__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{...tag})},tag.permalink))})]});} + +/***/ }), + +/***/ 2903: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ ThemedImage) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useIsBrowser.js +var useIsBrowser = __webpack_require__(2303); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/colorMode.js +var contexts_colorMode = __webpack_require__(5293); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/components/ThemedComponent/styles.module.css +var styles_module = __webpack_require__(6878); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-common/lib/components/ThemedComponent/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const AllThemes=(/* unused pure expression or super */ null && (['light','dark']));/** + * Generic component to render anything themed in light/dark + * Note: it's preferable to use CSS for theming because this component + * will need to render all the variants during SSR to avoid a theme flash. + * + * Use this only when CSS customizations are not convenient or impossible. + * For example, rendering themed images or SVGs... + * + * @param className applied to all the variants + * @param children function to render a theme variant + * @constructor + */function ThemedComponent({className,children}){const isBrowser=(0,useIsBrowser/* default */.A)();const{colorMode}=(0,contexts_colorMode/* useColorMode */.G)();function getThemesToRender(){if(isBrowser){return colorMode==='dark'?['dark']:['light'];}// We need to render both components on the server / hydration to avoid: +// - a flash of wrong theme before hydration +// - React hydration mismatches +// See https://github.com/facebook/docusaurus/pull/3730 +return['light','dark'];}return/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:getThemesToRender().map(theme=>{const themedElement=children({theme,className:(0,clsx/* default */.A)(className,(styles_module_default()).themedComponent,(styles_module_default())[`themedComponent--${theme}`])});return/*#__PURE__*/(0,jsx_runtime.jsx)(react.Fragment,{children:themedElement},theme);})});} +;// ./node_modules/@docusaurus/theme-classic/lib/theme/ThemedImage/index.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function ThemedImage(props){const{sources,className:parentClassName,alt,...propsRest}=props;return/*#__PURE__*/(0,jsx_runtime.jsx)(ThemedComponent,{className:parentClassName,children:({theme,className})=>/*#__PURE__*/(0,jsx_runtime.jsx)("img",{src:sources[theme],alt:alt,className:className,...propsRest})});} + +/***/ }), + +/***/ 1422: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ N: () => (/* binding */ Collapsible), +/* harmony export */ u: () => (/* binding */ useCollapsible) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8193); +/* harmony import */ var _docusaurus_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(205); +/* harmony import */ var _utils_accessibilityUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3109); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const DefaultAnimationEasing='ease-in-out';/** + * This hook is a very thin wrapper around a `useState`. + */function useCollapsible({initialState}){const[collapsed,setCollapsed]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initialState??false);const toggleCollapsed=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(()=>{setCollapsed(expanded=>!expanded);},[]);return{collapsed,setCollapsed,toggleCollapsed};}const CollapsedStyles={display:'none',overflow:'hidden',height:'0px'};const ExpandedStyles={display:'block',overflow:'visible',height:'auto'};function applyCollapsedStyle(el,collapsed){const collapsedStyles=collapsed?CollapsedStyles:ExpandedStyles;el.style.display=collapsedStyles.display;el.style.overflow=collapsedStyles.overflow;el.style.height=collapsedStyles.height;}/* +Lex111: Dynamic transition duration is used in Material design, this technique +is good for a large number of items. +https://material.io/archive/guidelines/motion/duration-easing.html#duration-easing-dynamic-durations +https://github.com/mui-org/material-ui/blob/e724d98eba018e55e1a684236a2037e24bcf050c/packages/material-ui/src/styles/createTransitions.js#L40-L43 + */function getAutoHeightDuration(height){if((0,_utils_accessibilityUtils__WEBPACK_IMPORTED_MODULE_4__/* .prefersReducedMotion */ .O)()){// Not using 0 because it prevents onTransitionEnd to fire and bubble up :/ +// See https://github.com/facebook/docusaurus/pull/8906 +return 1;}const constant=height/36;return Math.round((4+15*constant**0.25+constant/5)*10);}function useCollapseAnimation({collapsibleRef,collapsed,animation}){const mounted=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{const el=collapsibleRef.current;function getTransitionStyles(){const height=el.scrollHeight;const duration=animation?.duration??getAutoHeightDuration(height);const easing=animation?.easing??DefaultAnimationEasing;return{transition:`height ${duration}ms ${easing}`,height:`${height}px`};}function applyTransitionStyles(){const transitionStyles=getTransitionStyles();el.style.transition=transitionStyles.transition;el.style.height=transitionStyles.height;}// On mount, we just apply styles, no animated transition +if(!mounted.current){applyCollapsedStyle(el,collapsed);mounted.current=true;return undefined;}el.style.willChange='height';function startAnimation(){const animationFrame=requestAnimationFrame(()=>{// When collapsing +if(collapsed){applyTransitionStyles();requestAnimationFrame(()=>{el.style.height=CollapsedStyles.height;el.style.overflow=CollapsedStyles.overflow;});}// When expanding +else{el.style.display='block';requestAnimationFrame(()=>{applyTransitionStyles();});}});return()=>cancelAnimationFrame(animationFrame);}return startAnimation();},[collapsibleRef,collapsed,animation]);}/** + * Prevent hydration layout shift before animations are handled imperatively + * with JS + */function getSSRStyle(collapsed){if(_docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.canUseDOM){return undefined;}return collapsed?CollapsedStyles:ExpandedStyles;}function CollapsibleBase({as:As='div',collapsed,children,animation,onCollapseTransitionEnd,className,disableSSRStyle}){const collapsibleRef=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);useCollapseAnimation({collapsibleRef,collapsed,animation});return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(As// @ts-expect-error: the "too complicated type" is produced from +// "CollapsibleElementType" being a huge union +,{ref:collapsibleRef// Refs are contravariant, which is not expressible in TS +,style:disableSSRStyle?undefined:getSSRStyle(collapsed),onTransitionEnd:e=>{if(e.propertyName!=='height'){return;}applyCollapsedStyle(collapsibleRef.current,collapsed);onCollapseTransitionEnd?.(collapsed);},className:className,children:children});}function CollapsibleLazy({collapsed,...props}){const[mounted,setMounted]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(!collapsed);// Updated in effect so that first expansion transition can work +const[lazyCollapsed,setLazyCollapsed]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(collapsed);(0,_docusaurus_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(()=>{if(!collapsed){setMounted(true);}},[collapsed]);(0,_docusaurus_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(()=>{if(mounted){setLazyCollapsed(collapsed);}},[mounted,collapsed]);return mounted?/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(CollapsibleBase,{...props,collapsed:lazyCollapsed}):null;}/** + * A headless component providing smooth and uniform collapsing behavior. The + * component will be invisible (zero height) when collapsed. Doesn't provide + * interactivity by itself: collapse state is toggled through props. + */function Collapsible({lazy,...props}){const Comp=lazy?CollapsibleLazy:CollapsibleBase;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Comp,{...props});} + +/***/ }), + +/***/ 5041: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ M: () => (/* binding */ useAnnouncementBar), +/* harmony export */ o: () => (/* binding */ AnnouncementBarProvider) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_useIsBrowser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2303); +/* harmony import */ var _utils_storageUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(679); +/* harmony import */ var _utils_reactUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9532); +/* harmony import */ var _utils_useThemeConfig__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6342); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Keep these keys in sync with the inlined script +// See packages/docusaurus-theme-classic/src/inlineScripts.ts +const AnnouncementBarDismissStorage=(0,_utils_storageUtils__WEBPACK_IMPORTED_MODULE_3__/* .createStorageSlot */ .Wf)('docusaurus.announcement.dismiss');const IdStorage=(0,_utils_storageUtils__WEBPACK_IMPORTED_MODULE_3__/* .createStorageSlot */ .Wf)('docusaurus.announcement.id');const isDismissedInStorage=()=>AnnouncementBarDismissStorage.get()==='true';const setDismissedInStorage=bool=>AnnouncementBarDismissStorage.set(String(bool));const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);function useContextValue(){const{announcementBar}=(0,_utils_useThemeConfig__WEBPACK_IMPORTED_MODULE_4__/* .useThemeConfig */ .p)();const isBrowser=(0,_docusaurus_useIsBrowser__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)();const[isClosed,setClosed]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(()=>isBrowser?// On client navigation: init with local storage value +isDismissedInStorage():// On server/hydration: always visible to prevent layout shifts (will be hidden with css if needed) +false);// Update state after hydration +(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{setClosed(isDismissedInStorage());},[]);const handleClose=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(()=>{setDismissedInStorage(true);setClosed(true);},[]);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(!announcementBar){return;}const{id}=announcementBar;let viewedId=IdStorage.get();// Retrocompatibility due to spelling mistake of default id +// see https://github.com/facebook/docusaurus/issues/3338 +// cSpell:ignore annoucement +if(viewedId==='annoucement-bar'){viewedId='announcement-bar';}const isNewAnnouncement=id!==viewedId;IdStorage.set(id);if(isNewAnnouncement){setDismissedInStorage(false);}if(isNewAnnouncement||!isDismissedInStorage()){setClosed(false);}},[announcementBar]);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({isActive:!!announcementBar&&!isClosed,close:handleClose}),[announcementBar,isClosed,handleClose]);}function AnnouncementBarProvider({children}){const value=useContextValue();return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Context.Provider,{value:value,children:children});}function useAnnouncementBar(){const api=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(!api){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_5__/* .ReactContextError */ .dV('AnnouncementBarProvider');}return api;} + +/***/ }), + +/***/ 5293: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ G: () => (/* binding */ useColorMode), +/* harmony export */ a: () => (/* binding */ ColorModeProvider) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8193); +/* harmony import */ var _utils_reactUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9532); +/* harmony import */ var _utils_storageUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(679); +/* harmony import */ var _utils_useThemeConfig__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6342); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(undefined);const ColorModeStorageKey='theme';const ColorModeStorage=(0,_utils_storageUtils__WEBPACK_IMPORTED_MODULE_3__/* .createStorageSlot */ .Wf)(ColorModeStorageKey);const ColorModes={light:'light',dark:'dark'};// Ensure to always return a valid colorMode even if input is invalid +const coerceToColorMode=colorMode=>colorMode===ColorModes.dark?ColorModes.dark:ColorModes.light;const getInitialColorMode=defaultMode=>_docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.canUseDOM?coerceToColorMode(document.documentElement.getAttribute('data-theme')):coerceToColorMode(defaultMode);const storeColorMode=newColorMode=>{ColorModeStorage.set(coerceToColorMode(newColorMode));};function useContextValue(){const{colorMode:{defaultMode,disableSwitch,respectPrefersColorScheme}}=(0,_utils_useThemeConfig__WEBPACK_IMPORTED_MODULE_4__/* .useThemeConfig */ .p)();const[colorMode,setColorModeState]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(getInitialColorMode(defaultMode));(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{// A site is deployed without disableSwitch +// => User visits the site and has a persisted value +// => Site later enabled disableSwitch +// => Clear the previously stored value to apply the site's setting +if(disableSwitch){ColorModeStorage.del();}},[disableSwitch]);const setColorMode=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((newColorMode,options={})=>{const{persist=true}=options;if(newColorMode){setColorModeState(newColorMode);if(persist){storeColorMode(newColorMode);}}else{if(respectPrefersColorScheme){setColorModeState(window.matchMedia('(prefers-color-scheme: dark)').matches?ColorModes.dark:ColorModes.light);}else{setColorModeState(defaultMode);}ColorModeStorage.del();}},[respectPrefersColorScheme,defaultMode]);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{document.documentElement.setAttribute('data-theme',coerceToColorMode(colorMode));},[colorMode]);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(disableSwitch){return undefined;}const onChange=e=>{if(e.key!==ColorModeStorageKey){return;}const storedColorMode=ColorModeStorage.get();if(storedColorMode!==null){setColorMode(coerceToColorMode(storedColorMode));}};window.addEventListener('storage',onChange);return()=>window.removeEventListener('storage',onChange);},[disableSwitch,setColorMode]);// PCS is coerced to light mode when printing, which causes the color mode to +// be reset to dark when exiting print mode, disregarding user settings. When +// the listener fires only because of a print/screen switch, we don't change +// color mode. See https://github.com/facebook/docusaurus/pull/6490 +const previousMediaIsPrint=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(disableSwitch&&!respectPrefersColorScheme){return undefined;}const mql=window.matchMedia('(prefers-color-scheme: dark)');const onChange=()=>{if(window.matchMedia('print').matches||previousMediaIsPrint.current){previousMediaIsPrint.current=window.matchMedia('print').matches;return;}setColorMode(null);};mql.addListener(onChange);return()=>mql.removeListener(onChange);},[setColorMode,disableSwitch,respectPrefersColorScheme]);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({colorMode,setColorMode,get isDarkTheme(){if(false){}return colorMode===ColorModes.dark;},setLightTheme(){if(false){}setColorMode(ColorModes.light);},setDarkTheme(){if(false){}setColorMode(ColorModes.dark);}}),[colorMode,setColorMode]);}function ColorModeProvider({children}){const value=useContextValue();return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Context.Provider,{value:value,children:children});}function useColorMode(){const context=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(context==null){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_5__/* .ReactContextError */ .dV('ColorModeProvider','Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.');}return context;} + +/***/ }), + +/***/ 9876: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + e: () => (/* binding */ NavbarMobileSidebarProvider), + M: () => (/* binding */ useNavbarMobileSidebar) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/navbarSecondaryMenu/content.js +var content = __webpack_require__(5600); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useWindowSize.js +var useWindowSize = __webpack_require__(4581); +// EXTERNAL MODULE: ./node_modules/react-router/esm/react-router.js +var react_router = __webpack_require__(6347); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/reactUtils.js +var reactUtils = __webpack_require__(9532); +;// ./node_modules/@docusaurus/theme-common/lib/utils/historyUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Permits to register a handler that will be called on history actions (pop, + * push, replace). If the handler returns `false`, the navigation transition + * will be blocked/cancelled. + */function useHistoryActionHandler(handler){const history=(0,react_router/* useHistory */.W6)();const stableHandler=(0,reactUtils/* useEvent */._q)(handler);(0,react.useEffect)(// See https://github.com/remix-run/history/blob/main/docs/blocking-transitions.md +()=>history.block((location,action)=>stableHandler(location,action)),[history,stableHandler]);}/** + * Permits to register a handler that will be called on history pop navigation + * (backward/forward). If the handler returns `false`, the backward/forward + * transition will be blocked. Unfortunately there's no good way to detect the + * "direction" (backward/forward) of the POP event. + */function useHistoryPopHandler(handler){useHistoryActionHandler((location,action)=>{if(action==='POP'){// Maybe block navigation if handler returns false +return handler(location,action);}// Don't block other navigation actions +return undefined;});}/** + * Permits to efficiently subscribe to a slice of the history + * See https://thisweekinreact.com/articles/useSyncExternalStore-the-underrated-react-api + * @param selector + */function useHistorySelector(selector){const history=useHistory();return useSyncExternalStore(history.listen,()=>selector(history),()=>selector(history));}/** + * Permits to efficiently subscribe to a specific querystring value + * @param key + */function useQueryStringValue(key){return useHistorySelector(history=>{if(key===null){return null;}return new URLSearchParams(history.location.search).get(key);});}function useQueryStringUpdater(key){const history=useHistory();return useCallback((newValue,options)=>{const searchParams=new URLSearchParams(history.location.search);if(newValue){searchParams.set(key,newValue);}else{searchParams.delete(key);}const updateHistory=options?.push?history.push:history.replace;updateHistory({search:searchParams.toString()});},[key,history]);}function useQueryString(key){const value=useQueryStringValue(key)??'';const update=useQueryStringUpdater(key);return[value,update];}function useQueryStringListValues(key){// Unfortunately we can't just use searchParams.getAll(key) in the selector +// It would create a new array every time and lead to an infinite loop... +// The selector has to return a primitive/string value to avoid that... +const arrayJsonString=useHistorySelector(history=>{const values=new URLSearchParams(history.location.search).getAll(key);return JSON.stringify(values);});return useMemo(()=>JSON.parse(arrayJsonString),[arrayJsonString]);}function useQueryStringListUpdater(key){const history=useHistory();const setValues=useCallback((update,options)=>{const searchParams=new URLSearchParams(history.location.search);const newValues=Array.isArray(update)?update:update(searchParams.getAll(key));searchParams.delete(key);newValues.forEach(v=>searchParams.append(key,v));const updateHistory=options?.push?history.push:history.replace;updateHistory({search:searchParams.toString()});},[history,key]);return setValues;}function useQueryStringList(key){const values=useQueryStringListValues(key);const setValues=useQueryStringListUpdater(key);return[values,setValues];}function useClearQueryString(){const history=useHistory();return useCallback(()=>{history.replace({search:undefined});},[history]);} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useThemeConfig.js +var useThemeConfig = __webpack_require__(6342); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-common/lib/contexts/navbarMobileSidebar.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Context=/*#__PURE__*/react.createContext(undefined);function useIsNavbarMobileSidebarDisabled(){const secondaryMenuContent=(0,content/* useNavbarSecondaryMenuContent */.YL)();const{items}=(0,useThemeConfig/* useThemeConfig */.p)().navbar;return items.length===0&&!secondaryMenuContent.component;}function useContextValue(){const disabled=useIsNavbarMobileSidebarDisabled();const windowSize=(0,useWindowSize/* useWindowSize */.l)();const shouldRender=!disabled&&windowSize==='mobile';const[shown,setShown]=(0,react.useState)(false);// Close mobile sidebar on navigation pop +// Most likely firing when using the Android back button (but not only) +useHistoryPopHandler(()=>{if(shown){setShown(false);// Prevent pop navigation; seems desirable enough +// See https://github.com/facebook/docusaurus/pull/5462#issuecomment-911699846 +return false;}return undefined;});const toggle=(0,react.useCallback)(()=>{setShown(s=>!s);},[]);(0,react.useEffect)(()=>{if(windowSize==='desktop'){setShown(false);}},[windowSize]);return (0,react.useMemo)(()=>({disabled,shouldRender,toggle,shown}),[disabled,shouldRender,toggle,shown]);}function NavbarMobileSidebarProvider({children}){const value=useContextValue();return/*#__PURE__*/(0,jsx_runtime.jsx)(Context.Provider,{value:value,children:children});}function useNavbarMobileSidebar(){const context=react.useContext(Context);if(context===undefined){throw new reactUtils/* ReactContextError */.dV('NavbarMobileSidebarProvider');}return context;} + +/***/ }), + +/***/ 5600: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ GX: () => (/* binding */ NavbarSecondaryMenuFiller), +/* harmony export */ YL: () => (/* binding */ useNavbarSecondaryMenuContent), +/* harmony export */ y_: () => (/* binding */ NavbarSecondaryMenuContentProvider) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _utils_reactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9532); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);/** @internal */function NavbarSecondaryMenuContentProvider({children}){const value=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({component:null,props:null});return(/*#__PURE__*/// @ts-expect-error: this context is hard to type +(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider,{value:value,children:children}));}/** @internal */function useNavbarSecondaryMenuContent(){const value=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(!value){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_2__/* .ReactContextError */ .dV('NavbarSecondaryMenuContentProvider');}return value[0];}/** + * This component renders nothing by itself, but it fills the placeholder in the + * generic secondary menu layout. This reduces coupling between the main layout + * and the specific page. + * + * This kind of feature is often called portal/teleport/gateway/outlet... + * Various unmaintained React libs exist. Most up-to-date one: + * https://github.com/gregberge/react-teleporter + * Not sure any of those is safe regarding concurrent mode. + */function NavbarSecondaryMenuFiller({component,props}){const context=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(!context){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_2__/* .ReactContextError */ .dV('NavbarSecondaryMenuContentProvider');}const[,setContent]=context;// To avoid useless context re-renders, props are memoized shallowly +const memoizedProps=(0,_utils_reactUtils__WEBPACK_IMPORTED_MODULE_2__/* .useShallowMemoObject */ .Be)(props);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{// @ts-expect-error: this context is hard to type +setContent({component,props:memoizedProps});},[setContent,component,memoizedProps]);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>()=>setContent({component:null,props:null}),[setContent]);return null;} + +/***/ }), + +/***/ 1386: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + w: () => (/* binding */ keyboardFocusedClassName), + J: () => (/* binding */ useKeyboardNavigation) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +;// ./node_modules/@docusaurus/theme-common/lib/hooks/styles.css +// extracted by mini-css-extract-plugin + +;// ./node_modules/@docusaurus/theme-common/lib/hooks/useKeyboardNavigation.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const keyboardFocusedClassName='navigation-with-keyboard';/** + * Side-effect that adds the `keyboardFocusedClassName` to the body element when + * the keyboard has been pressed, or removes it when the mouse is clicked. + * + * The presence of this class name signals that the user may be using keyboard + * for navigation, and the theme **must** add focus outline when this class name + * is present. (And optionally not if it's absent, for design purposes) + * + * Inspired by https://hackernoon.com/removing-that-ugly-focus-ring-and-keeping-it-too-6c8727fefcd2 + */function useKeyboardNavigation(){(0,react.useEffect)(()=>{function handleOutlineStyles(e){if(e.type==='keydown'&&e.key==='Tab'){document.body.classList.add(keyboardFocusedClassName);}if(e.type==='mousedown'){document.body.classList.remove(keyboardFocusedClassName);}}document.addEventListener('keydown',handleOutlineStyles);document.addEventListener('mousedown',handleOutlineStyles);return()=>{document.body.classList.remove(keyboardFocusedClassName);document.removeEventListener('keydown',handleOutlineStyles);document.removeEventListener('mousedown',handleOutlineStyles);};},[]);} + +/***/ }), + +/***/ 4581: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ l: () => (/* binding */ useWindowSize) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8193); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const windowSizes={desktop:'desktop',mobile:'mobile',ssr:'ssr'};// Note: this value is also hardcoded in Infima +// Both JS and CSS must have the same value +// Updating this JS value alone is not enough +// See https://github.com/facebook/docusaurus/issues/9603 +const DesktopBreakpoint=996;function getWindowSize(desktopBreakpoint){if(!_docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.canUseDOM){throw new Error('getWindowSize() should only be called after React hydration');}return window.innerWidth>desktopBreakpoint?windowSizes.desktop:windowSizes.mobile;}/** + * Gets the current window size as an enum value. We don't want it to return the + * actual width value, so that it only re-renders once a breakpoint is crossed. + * + * It may return `"ssr"`, which is very important to handle hydration FOUC or + * layout shifts. You have to handle it explicitly upfront. On the server, you + * may need to render BOTH the mobile/desktop elements (and hide one of them + * with mediaquery). We don't return `undefined` on purpose, to make it more + * explicit. + */function useWindowSize({desktopBreakpoint=DesktopBreakpoint}={}){const[windowSize,setWindowSize]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(()=>// super important to return a constant value to avoid hydration mismatch +// see https://github.com/facebook/docusaurus/issues/9379 +'ssr');(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{function updateWindowSize(){setWindowSize(getWindowSize(desktopBreakpoint));}updateWindowSize();window.addEventListener('resize',updateWindowSize);return()=>{window.removeEventListener('resize',updateWindowSize);};},[desktopBreakpoint]);return windowSize;} + +/***/ }), + +/***/ 6461: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ ZD: () => (/* binding */ useBlogTagsPostsPageTitle), +/* harmony export */ np: () => (/* binding */ BlogAuthorsListViewAllLabel), +/* harmony export */ uz: () => (/* binding */ translateBlogAuthorsListPageTitle), +/* harmony export */ wI: () => (/* binding */ useBlogAuthorPageTitle) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1312); +/* harmony import */ var _utils_usePluralForm__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5846); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Only used locally +function useBlogPostsPlural(){const{selectMessage}=(0,_utils_usePluralForm__WEBPACK_IMPORTED_MODULE_3__/* .usePluralForm */ .W)();return count=>selectMessage(count,(0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .T)({id:'theme.blog.post.plurals',description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:'One post|{count} posts'},{count}));}function useBlogTagsPostsPageTitle(tag){const blogPostsPlural=useBlogPostsPlural();return (0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .T)({id:'theme.blog.tagTitle',description:'The title of the page for a blog tag',message:'{nPosts} tagged with "{tagName}"'},{nPosts:blogPostsPlural(tag.count),tagName:tag.label});}function useBlogAuthorPageTitle(author){const blogPostsPlural=useBlogPostsPlural();return (0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .T)({id:'theme.blog.author.pageTitle',description:'The title of the page for a blog author',message:'{authorName} - {nPosts}'},{nPosts:blogPostsPlural(author.count),authorName:author.name||author.key});}const translateBlogAuthorsListPageTitle=()=>(0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .T)({id:'theme.blog.authorsList.pageTitle',message:'Authors',description:'The title of the authors page'});function BlogAuthorsListViewAllLabel(){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.blog.authorsList.viewAll",description:"The label of the link targeting the blog authors page",children:"View all authors"});} + +/***/ }), + +/***/ 4084: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ AE: () => (/* binding */ UnlistedMetadata), +/* harmony export */ Rc: () => (/* binding */ UnlistedBannerTitle), +/* harmony export */ TT: () => (/* binding */ DraftBannerMessage), +/* harmony export */ Uh: () => (/* binding */ UnlistedBannerMessage), +/* harmony export */ Yh: () => (/* binding */ DraftBannerTitle) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1312); +/* harmony import */ var _docusaurus_Head__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5260); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function UnlistedBannerTitle(){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"});}function UnlistedBannerMessage(){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."});}// TODO Docusaurus v4 breaking change (since it's v3 public theme-common API :/) +// Move this to theme/ContentVisibility/Unlisted +function UnlistedMetadata(){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Head__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A,{children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("meta",{name:"robots",content:"noindex, nofollow"})});}function DraftBannerTitle(){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"});}function DraftBannerMessage(){return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."});} + +/***/ }), + +/***/ 6266: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ i: () => (/* binding */ useDateTimeFormat) +/* harmony export */ }); +/* unused harmony export useCalendar */ +/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4586); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useCalendar(){const{i18n:{currentLocale,localeConfigs}}=(0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)();return localeConfigs[currentLocale].calendar;}function useDateTimeFormat(options={}){const{i18n:{currentLocale}}=(0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)();const calendar=useCalendar();return new Intl.DateTimeFormat(currentLocale,{calendar,...options});} + +/***/ }), + +/***/ 7559: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ G: () => (/* binding */ ThemeClassNames) +/* harmony export */ }); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// Please do not modify the classnames! This is a breaking change, and annoying +// for users! +/** + * These class names are used to style page layouts in Docusaurus, meant to be + * targeted by user-provided custom CSS selectors. + */const ThemeClassNames={page:{blogListPage:'blog-list-page',blogPostPage:'blog-post-page',blogTagsListPage:'blog-tags-list-page',blogTagPostListPage:'blog-tags-post-list-page',blogAuthorsListPage:'blog-authors-list-page',blogAuthorsPostsPage:'blog-authors-posts-page',docsDocPage:'docs-doc-page',docsTagsListPage:'docs-tags-list-page',docsTagDocListPage:'docs-tags-doc-list-page',mdxPage:'mdx-page'},wrapper:{main:'main-wrapper',// TODO these wrapper class names are now quite useless +// TODO do breaking change later in 3.0 +// we already add plugin name/id class on <html>: that's enough +blogPages:'blog-wrapper',docsPages:'docs-wrapper',mdxPages:'mdx-wrapper'},common:{editThisPage:'theme-edit-this-page',lastUpdated:'theme-last-updated',backToTopButton:'theme-back-to-top-button',codeBlock:'theme-code-block',admonition:'theme-admonition',unlistedBanner:'theme-unlisted-banner',draftBanner:'theme-draft-banner',admonitionType:type=>`theme-admonition-${type}`},layout:{// TODO add other stable classNames here +},/** + * Follows the naming convention "theme-{blog,doc,version,page}?-<suffix>" + */docs:{docVersionBanner:'theme-doc-version-banner',docVersionBadge:'theme-doc-version-badge',docBreadcrumbs:'theme-doc-breadcrumbs',docMarkdown:'theme-doc-markdown',docTocMobile:'theme-doc-toc-mobile',docTocDesktop:'theme-doc-toc-desktop',docFooter:'theme-doc-footer',docFooterTagsRow:'theme-doc-footer-tags-row',docFooterEditMetaRow:'theme-doc-footer-edit-meta-row',docSidebarContainer:'theme-doc-sidebar-container',docSidebarMenu:'theme-doc-sidebar-menu',docSidebarItemCategory:'theme-doc-sidebar-item-category',docSidebarItemLink:'theme-doc-sidebar-item-link',docSidebarItemCategoryLevel:level=>`theme-doc-sidebar-item-category-level-${level}`,docSidebarItemLinkLevel:level=>`theme-doc-sidebar-item-link-level-${level}`// TODO add other stable classNames here +},blog:{// TODO add other stable classNames here +blogFooterTagsRow:'theme-blog-footer-tags-row',blogFooterEditMetaRow:'theme-blog-footer-edit-meta-row'},pages:{pageFooterEditMetaRow:'theme-pages-footer-edit-meta-row'}}; + +/***/ }), + +/***/ 3109: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ O: () => (/* binding */ prefersReducedMotion) +/* harmony export */ }); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function prefersReducedMotion(){return window.matchMedia('(prefers-reduced-motion: reduce)').matches;} + +/***/ }), + +/***/ 1682: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ $z: () => (/* binding */ groupBy), +/* harmony export */ sb: () => (/* binding */ uniq) +/* harmony export */ }); +/* unused harmony export duplicates */ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// A replacement of lodash in client code +/** + * Gets the duplicate values in an array. + * @param arr The array. + * @param comparator Compares two values and returns `true` if they are equal + * (duplicated). + * @returns Value of the elements `v` that have a preceding element `u` where + * `comparator(u, v) === true`. Values within the returned array are not + * guaranteed to be unique. + */function duplicates(arr,comparator=(a,b)=>a===b){return arr.filter((v,vIndex)=>arr.findIndex(u=>comparator(u,v))!==vIndex);}/** + * Remove duplicate array items (similar to `_.uniq`) + * @param arr The array. + * @returns An array with duplicate elements removed by reference comparison. + */function uniq(arr){// Note: had problems with [...new Set()]: https://github.com/facebook/docusaurus/issues/4972#issuecomment-863895061 +return Array.from(new Set(arr));}// TODO 2025: replace by std Object.groupBy ? +// This is a local polyfill with exact same TS signature +// see https://github.com/microsoft/TypeScript/blob/main/src/lib/esnext.object.d.ts +function groupBy(items,keySelector){const result={};let index=0;for(const item of items){const key=keySelector(item,index);result[key]??=[];result[key].push(item);index+=1;}return result;} + +/***/ }), + +/***/ 1213: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + e3: () => (/* binding */ HtmlClassNameProvider), + be: () => (/* binding */ PageMetadata), + Jx: () => (/* binding */ PluginHtmlClassNameProvider) +}); + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Head.js +var Head = __webpack_require__(5260); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useRouteContext.js +var useRouteContext = __webpack_require__(6803); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useBaseUrl.js +var useBaseUrl = __webpack_require__(6025); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useDocusaurusContext.js +var useDocusaurusContext = __webpack_require__(4586); +;// ./node_modules/@docusaurus/theme-common/lib/utils/generalUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Formats the page's title based on relevant site config and other contexts. + */function useTitleFormatter(title){const{siteConfig}=(0,useDocusaurusContext/* default */.A)();const{title:siteTitle,titleDelimiter}=siteConfig;return title?.trim().length?`${title.trim()} ${titleDelimiter} ${siteTitle}`:siteTitle;} +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Helper component to manipulate page metadata and override site defaults. + * Works in the same way as Helmet. + */function PageMetadata({title,description,keywords,image,children}){const pageTitle=useTitleFormatter(title);const{withBaseUrl}=(0,useBaseUrl/* useBaseUrlUtils */.hH)();const pageImage=image?withBaseUrl(image,{absolute:true}):undefined;return/*#__PURE__*/(0,jsx_runtime.jsxs)(Head/* default */.A,{children:[title&&/*#__PURE__*/(0,jsx_runtime.jsx)("title",{children:pageTitle}),title&&/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{property:"og:title",content:pageTitle}),description&&/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{name:"description",content:description}),description&&/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{property:"og:description",content:description}),keywords&&/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{name:"keywords",content:// https://github.com/microsoft/TypeScript/issues/17002 +Array.isArray(keywords)?keywords.join(','):keywords}),pageImage&&/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{property:"og:image",content:pageImage}),pageImage&&/*#__PURE__*/(0,jsx_runtime.jsx)("meta",{name:"twitter:image",content:pageImage}),children]});}const HtmlClassNameContext=/*#__PURE__*/react.createContext(undefined);/** + * Every layer of this provider will append a class name to the HTML element. + * There's no consumer for this hook: it's side-effect-only. This wrapper is + * necessary because Helmet does not "merge" classes. + * @see https://github.com/staylor/react-helmet-async/issues/161 + */function HtmlClassNameProvider({className:classNameProp,children}){const classNameContext=react.useContext(HtmlClassNameContext);const className=(0,clsx/* default */.A)(classNameContext,classNameProp);return/*#__PURE__*/(0,jsx_runtime.jsxs)(HtmlClassNameContext.Provider,{value:className,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Head/* default */.A,{children:/*#__PURE__*/(0,jsx_runtime.jsx)("html",{className:className})}),children]});}function pluginNameToClassName(pluginName){return`plugin-${pluginName.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,'')}`;}/** + * A very thin wrapper around `HtmlClassNameProvider` that adds the plugin ID + + * name to the HTML class name. + */function PluginHtmlClassNameProvider({children}){const routeContext=(0,useRouteContext/* default */.A)();const nameClass=pluginNameToClassName(routeContext.plugin.name);const idClass=`plugin-id-${routeContext.plugin.id}`;return/*#__PURE__*/(0,jsx_runtime.jsx)(HtmlClassNameProvider,{className:(0,clsx/* default */.A)(nameClass,idClass),children:children});} + +/***/ }), + +/***/ 9532: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Be: () => (/* binding */ useShallowMemoObject), +/* harmony export */ ZC: () => (/* binding */ usePrevious), +/* harmony export */ _q: () => (/* binding */ useEvent), +/* harmony export */ dV: () => (/* binding */ ReactContextError), +/* harmony export */ fM: () => (/* binding */ composeProviders) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(205); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Temporary userland implementation until an official hook is implemented + * See RFC: https://github.com/reactjs/rfcs/pull/220 + * + * Permits to transform an unstable callback (like an arrow function provided as + * props) to a "stable" callback that is safe to use in a `useEffect` dependency + * array. Useful to avoid React stale closure problems + avoid useless effect + * re-executions. + * + * This generally works but has some potential drawbacks, such as + * https://github.com/facebook/react/issues/16956#issuecomment-536636418 + */function useEvent(callback){const ref=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(callback);(0,_docusaurus_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(()=>{ref.current=callback;},[callback]);// @ts-expect-error: TS is right that this callback may be a supertype of T, +// but good enough for our use +return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((...args)=>ref.current(...args),[]);}/** + * Gets `value` from the last render. + */function usePrevious(value){const ref=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();(0,_docusaurus_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(()=>{ref.current=value;});return ref.current;}/** + * This error is thrown when a context is consumed outside its provider. Allows + * reusing a generic error message format and reduces bundle size. The hook's + * name will be extracted from its stack, so only the provider's name is needed. + */class ReactContextError extends Error{constructor(providerName,additionalInfo){super();this.name='ReactContextError';this.message=`Hook ${this.stack?.split('\n')[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??''} is called outside the <${providerName}>. ${additionalInfo??''}`;}}/** + * Shallow-memoize an object. This means the returned object will be the same as + * the previous render if the property keys and values did not change. This + * works for simple cases: when property values are primitives or stable + * objects. + * + * @param obj + */function useShallowMemoObject(obj){const deps=Object.entries(obj);// Sort by keys to make it order-insensitive +deps.sort((a,b)=>a[0].localeCompare(b[0]));// eslint-disable-next-line react-hooks/exhaustive-deps +return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>obj,deps.flat());}/** + * Creates a single React provider from an array of existing providers + * assuming providers only take "children" as props. + * + * Prevents the annoying React element nesting + * Example here: https://getfrontend.tips/compose-multiple-react-providers/ + * + * The order matters: + * - The first provider is at the top of the tree. + * - The last provider is the most nested one + * + * @param providers array of providers to compose + */function composeProviders(providers){// Creates a single React component: it's cheaper to compose JSX elements +return({children})=>/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment,{children:providers.reduceRight((element,CurrentProvider)=>/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(CurrentProvider,{children:element}),children)});} + +/***/ }), + +/***/ 9169: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Dt: () => (/* binding */ useHomePageRoute), +/* harmony export */ ys: () => (/* binding */ isSamePath) +/* harmony export */ }); +/* unused harmony export findHomePageRoute */ +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _generated_routes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1596); +/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4586); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Compare the 2 paths, case insensitive and ignoring trailing slash + */function isSamePath(path1,path2){const normalize=pathname=>(!pathname||pathname.endsWith('/')?pathname:`${pathname}/`)?.toLowerCase();return normalize(path1)===normalize(path2);}/** + * Note that sites don't always have a homepage in practice, so we can't assume + * that linking to '/' is always safe. + * @see https://github.com/facebook/docusaurus/pull/6517#issuecomment-1048709116 + */function findHomePageRoute({baseUrl,routes:initialRoutes}){function isHomePageRoute(route){return route.path===baseUrl&&route.exact===true;}function isHomeParentRoute(route){return route.path===baseUrl&&!route.exact;}function doFindHomePageRoute(routes){if(routes.length===0){return undefined;}const homePage=routes.find(isHomePageRoute);if(homePage){return homePage;}const indexSubRoutes=routes.filter(isHomeParentRoute).flatMap(route=>route.routes??[]);return doFindHomePageRoute(indexSubRoutes);}return doFindHomePageRoute(initialRoutes);}/** + * Fetches the route that points to "/". Use this instead of the naive "/", + * because the homepage may not exist. + */function useHomePageRoute(){const{baseUrl}=(0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)().siteConfig;return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>findHomePageRoute({routes:_generated_routes__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A,baseUrl}),[baseUrl]);} + +/***/ }), + +/***/ 3104: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Mq: () => (/* binding */ useScrollPosition), +/* harmony export */ Tv: () => (/* binding */ ScrollControllerProvider), +/* harmony export */ gk: () => (/* binding */ useSmoothScrollTo) +/* harmony export */ }); +/* unused harmony exports useScrollController, useScrollPositionBlocker */ +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8193); +/* harmony import */ var _docusaurus_useIsBrowser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2303); +/* harmony import */ var _docusaurus_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(205); +/* harmony import */ var _reactUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9532); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4848); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function useScrollControllerContextValue(){const scrollEventsEnabledRef=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(true);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({scrollEventsEnabledRef,enableScrollEvents:()=>{scrollEventsEnabledRef.current=true;},disableScrollEvents:()=>{scrollEventsEnabledRef.current=false;}}),[]);}const ScrollMonitorContext=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(undefined);function ScrollControllerProvider({children}){const value=useScrollControllerContextValue();return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(ScrollMonitorContext.Provider,{value:value,children:children});}/** + * We need a way to update the scroll position while ignoring scroll events + * so as not to toggle Navbar/BackToTop visibility. + * + * This API permits to temporarily disable/ignore scroll events. Motivated by + * https://github.com/facebook/docusaurus/pull/5618 + */function useScrollController(){const context=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ScrollMonitorContext);if(context==null){throw new _reactUtils__WEBPACK_IMPORTED_MODULE_5__/* .ReactContextError */ .dV('ScrollControllerProvider');}return context;}const getScrollPosition=()=>_docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;/** + * This hook fires an effect when the scroll position changes. The effect will + * be provided with the before/after scroll positions. Note that the effect may + * not be always run: if scrolling is disabled through `useScrollController`, it + * will be a no-op. + * + * @see {@link useScrollController} + */function useScrollPosition(effect,deps=[]){const{scrollEventsEnabledRef}=useScrollController();const lastPositionRef=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(getScrollPosition());const dynamicEffect=(0,_reactUtils__WEBPACK_IMPORTED_MODULE_5__/* .useEvent */ ._q)(effect);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{const handleScroll=()=>{if(!scrollEventsEnabledRef.current){return;}const currentPosition=getScrollPosition();dynamicEffect(currentPosition,lastPositionRef.current);lastPositionRef.current=currentPosition;};const opts={passive:true};handleScroll();window.addEventListener('scroll',handleScroll,opts);return()=>window.removeEventListener('scroll',handleScroll,opts);// eslint-disable-next-line react-hooks/exhaustive-deps +},[dynamicEffect,scrollEventsEnabledRef,...deps]);}function useScrollPositionSaver(){const lastElementRef=useRef({elem:null,top:0});const save=useCallback(elem=>{lastElementRef.current={elem,top:elem.getBoundingClientRect().top};},[]);const restore=useCallback(()=>{const{current:{elem,top}}=lastElementRef;if(!elem){return{restored:false};}const newTop=elem.getBoundingClientRect().top;const heightDiff=newTop-top;if(heightDiff){window.scrollBy({left:0,top:heightDiff});}lastElementRef.current={elem:null,top:0};return{restored:heightDiff!==0};},[]);return useMemo(()=>({save,restore}),[restore,save]);}/** + * This hook permits to "block" the scroll position of a DOM element. + * The idea is that we should be able to update DOM content above this element + * but the screen position of this element should not change. + * + * Feature motivated by the Tabs groups: clicking on a tab may affect tabs of + * the same group upper in the tree, yet to avoid a bad UX, the clicked tab must + * remain under the user mouse. + * + * @see https://github.com/facebook/docusaurus/pull/5618 + */function useScrollPositionBlocker(){const scrollController=useScrollController();const scrollPositionSaver=useScrollPositionSaver();const nextLayoutEffectCallbackRef=useRef(undefined);const blockElementScrollPositionUntilNextRender=useCallback(el=>{scrollPositionSaver.save(el);scrollController.disableScrollEvents();nextLayoutEffectCallbackRef.current=()=>{const{restored}=scrollPositionSaver.restore();nextLayoutEffectCallbackRef.current=undefined;// Restoring the former scroll position will trigger a scroll event. We +// need to wait for next scroll event to happen before enabling the +// scrollController events again. +if(restored){const handleScrollRestoreEvent=()=>{scrollController.enableScrollEvents();window.removeEventListener('scroll',handleScrollRestoreEvent);};window.addEventListener('scroll',handleScrollRestoreEvent);}else{scrollController.enableScrollEvents();}};},[scrollController,scrollPositionSaver]);useIsomorphicLayoutEffect(()=>{// Queuing permits to restore scroll position after all useLayoutEffect +// have run, and yet preserve the sync nature of the scroll restoration +// See https://github.com/facebook/docusaurus/issues/8625 +queueMicrotask(()=>nextLayoutEffectCallbackRef.current?.());});return{blockElementScrollPositionUntilNextRender};}function smoothScrollNative(top){window.scrollTo({top,behavior:'smooth'});return()=>{// Nothing to cancel, it's natively cancelled if user tries to scroll down +};}function smoothScrollPolyfill(top){let raf=null;const isUpScroll=document.documentElement.scrollTop>top;function rafRecursion(){const currentScroll=document.documentElement.scrollTop;if(isUpScroll&¤tScroll>top||!isUpScroll&¤tScroll<top){raf=requestAnimationFrame(rafRecursion);window.scrollTo(0,Math.floor((currentScroll-top)*0.85)+top);}}rafRecursion();// Break the recursion. Prevents the user from "fighting" against that +// recursion producing a weird UX +return()=>raf&&cancelAnimationFrame(raf);}/** + * A "smart polyfill" of `window.scrollTo({ top, behavior: "smooth" })`. + * This currently always uses a polyfilled implementation unless + * `scroll-behavior: smooth` has been set in CSS, because native support + * detection for scroll behavior seems unreliable. + * + * This hook does not do anything by itself: it returns a start and a stop + * handle. You can execute either handle at any time. + */function useSmoothScrollTo(){const cancelRef=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);const isBrowser=(0,_docusaurus_useIsBrowser__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)();// Not all have support for smooth scrolling (particularly Safari mobile iOS) +// TODO proper detection is currently unreliable! +// see https://github.com/wessberg/scroll-behavior-polyfill/issues/16 +// For now, we only use native scroll behavior if smooth is already set, +// because otherwise the polyfill produces a weird UX when both CSS and JS try +// to scroll a page, and they cancel each other. +const supportsNativeSmoothScrolling=isBrowser&&getComputedStyle(document.documentElement).scrollBehavior==='smooth';return{startScroll:top=>{cancelRef.current=supportsNativeSmoothScrolling?smoothScrollNative(top):smoothScrollPolyfill(top);},cancelScroll:()=>cancelRef.current?.()};} + +/***/ }), + +/***/ 679: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + Wf: () => (/* binding */ createStorageSlot) +}); + +// UNUSED EXPORTS: listStorageKeys, useStorageSlot + +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +;// ./.docusaurus/site-storage.json +const site_storage_namespaceObject = /*#__PURE__*/JSON.parse('{"N":"localStorage","M":""}'); +;// ./node_modules/@docusaurus/theme-common/lib/utils/storageUtils.js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */const DefaultStorageType=site_storage_namespaceObject.N;function applyNamespace(storageKey){return`${storageKey}${site_storage_namespaceObject.M}`;}// window.addEventListener('storage') only works for different windows... +// so for current window we have to dispatch the event manually +// Now we can listen for both cross-window / current-window storage changes! +// see https://stackoverflow.com/a/71177640/82609 +// see https://stackoverflow.com/questions/26974084/listen-for-changes-with-localstorage-on-the-same-window +function dispatchChangeEvent({key,oldValue,newValue,storage}){// If we set multiple times the same storage value, events should not be fired +// The native events behave this way, so our manual event dispatch should +// rather behave exactly the same. Not doing so might create infinite loops. +// See https://github.com/facebook/docusaurus/issues/8594 +if(oldValue===newValue){return;}const event=document.createEvent('StorageEvent');event.initStorageEvent('storage',false,false,key,oldValue,newValue,window.location.href,storage);window.dispatchEvent(event);}/** + * Will return `null` if browser storage is unavailable (like running Docusaurus + * in an iframe). This should NOT be called in SSR. + * + * @see https://github.com/facebook/docusaurus/pull/4501 + */function getBrowserStorage(storageType=DefaultStorageType){if(typeof window==='undefined'){throw new Error('Browser storage is not available on Node.js/Docusaurus SSR process.');}if(storageType==='none'){return null;}try{return window[storageType];}catch(err){logOnceBrowserStorageNotAvailableWarning(err);return null;}}let hasLoggedBrowserStorageNotAvailableWarning=false;/** + * Poor man's memoization to avoid logging multiple times the same warning. + * Sometimes, `localStorage`/`sessionStorage` is unavailable due to browser + * policies. + */function logOnceBrowserStorageNotAvailableWarning(error){if(!hasLoggedBrowserStorageNotAvailableWarning){console.warn(`Docusaurus browser storage is not available. +Possible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.`,error);hasLoggedBrowserStorageNotAvailableWarning=true;}}const NoopStorageSlot={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};// Fail-fast, as storage APIs should not be used during the SSR process +function createServerStorageSlot(key){function throwError(){throw new Error(`Illegal storage API usage for storage key "${key}". +Docusaurus storage APIs are not supposed to be called on the server-rendering process. +Please only call storage APIs in effects and event handlers.`);}return{get:throwError,set:throwError,del:throwError,listen:throwError};}/** + * Creates an interface to work on a particular key in the storage model. + * Note that this function only initializes the interface, but doesn't allocate + * anything by itself (i.e. no side-effects). + * + * The API is fail-safe, since usage of browser storage should be considered + * unreliable. Local storage might simply be unavailable (iframe + browser + * security) or operations might fail individually. Please assume that using + * this API can be a no-op. See also https://github.com/facebook/docusaurus/issues/6036 + */function createStorageSlot(keyInput,options){const key=applyNamespace(keyInput);if(typeof window==='undefined'){return createServerStorageSlot(key);}const storage=getBrowserStorage(options?.persistence);if(storage===null){return NoopStorageSlot;}return{get:()=>{try{return storage.getItem(key);}catch(err){console.error(`Docusaurus storage error, can't get key=${key}`,err);return null;}},set:newValue=>{try{const oldValue=storage.getItem(key);storage.setItem(key,newValue);dispatchChangeEvent({key,oldValue,newValue,storage});}catch(err){console.error(`Docusaurus storage error, can't set ${key}=${newValue}`,err);}},del:()=>{try{const oldValue=storage.getItem(key);storage.removeItem(key);dispatchChangeEvent({key,oldValue,newValue:null,storage});}catch(err){console.error(`Docusaurus storage error, can't delete key=${key}`,err);}},listen:onChange=>{try{const listener=event=>{if(event.storageArea===storage&&event.key===key){onChange(event);}};window.addEventListener('storage',listener);return()=>window.removeEventListener('storage',listener);}catch(err){console.error(`Docusaurus storage error, can't listen for changes of key=${key}`,err);return()=>{};}}};}function useStorageSlot(key,options){// Not ideal but good enough: assumes storage slot config is constant +const storageSlot=useRef(()=>{if(key===null){return NoopStorageSlot;}return createStorageSlot(key,options);}).current();const listen=useCallback(onChange=>{// Do not try to add a listener during SSR +if(typeof window==='undefined'){return()=>{};}return storageSlot.listen(onChange);},[storageSlot]);const currentValue=useSyncExternalStore(listen,()=>{// TODO this check should be useless after React 18 +if(typeof window==='undefined'){return null;}return storageSlot.get();},()=>null);return[currentValue,storageSlot];}/** + * Returns a list of all the keys currently stored in browser storage, + * or an empty list if browser storage can't be accessed. + */function listStorageKeys(storageType=DefaultStorageType){const browserStorage=getBrowserStorage(storageType);if(!browserStorage){return[];}const keys=[];for(let i=0;i<browserStorage.length;i+=1){const key=browserStorage.key(i);if(key!==null){keys.push(key);}}return keys;} + +/***/ }), + +/***/ 2131: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ o: () => (/* binding */ useAlternatePageUtils) +/* harmony export */ }); +/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4586); +/* harmony import */ var _docusaurus_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6347); +/* harmony import */ var _docusaurus_utils_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(440); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Permits to obtain the url of the current page in another locale, useful to + * generate hreflang meta headers etc... + * + * @see https://developers.google.com/search/docs/advanced/crawling/localized-versions + */function useAlternatePageUtils(){const{siteConfig:{baseUrl,url,trailingSlash},i18n:{defaultLocale,currentLocale}}=(0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)();// TODO using useLocation().pathname is not a super idea +// See https://github.com/facebook/docusaurus/issues/9170 +const{pathname}=(0,_docusaurus_router__WEBPACK_IMPORTED_MODULE_1__/* .useLocation */ .zy)();const canonicalPathname=(0,_docusaurus_utils_common__WEBPACK_IMPORTED_MODULE_2__/* .applyTrailingSlash */ .Ks)(pathname,{trailingSlash,baseUrl});const baseUrlUnlocalized=currentLocale===defaultLocale?baseUrl:baseUrl.replace(`/${currentLocale}/`,'/');const pathnameSuffix=canonicalPathname.replace(baseUrl,'');function getLocalizedBaseUrl(locale){return locale===defaultLocale?`${baseUrlUnlocalized}`:`${baseUrlUnlocalized}${locale}/`;}// TODO support correct alternate url when localized site is deployed on +// another domain +function createUrl({locale,fullyQualified}){return`${fullyQualified?url:''}${getLocalizedBaseUrl(locale)}${pathnameSuffix}`;}return{createUrl};} + +/***/ }), + +/***/ 5062: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ $: () => (/* binding */ useLocationChange) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6347); +/* harmony import */ var _reactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9532); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * Fires an effect when the location changes (which includes hash, query, etc.). + * Importantly, doesn't fire when there's no previous location: see + * https://github.com/facebook/docusaurus/pull/6696 + */function useLocationChange(onLocationChange){const location=(0,_docusaurus_router__WEBPACK_IMPORTED_MODULE_1__/* .useLocation */ .zy)();const previousLocation=(0,_reactUtils__WEBPACK_IMPORTED_MODULE_2__/* .usePrevious */ .ZC)(location);const onLocationChangeDynamic=(0,_reactUtils__WEBPACK_IMPORTED_MODULE_2__/* .useEvent */ ._q)(onLocationChange);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(!previousLocation){return;}if(location!==previousLocation){onLocationChangeDynamic({location,previousLocation});}},[onLocationChangeDynamic,location,previousLocation]);} + +/***/ }), + +/***/ 5846: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ W: () => (/* binding */ usePluralForm) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4586); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */// We want to ensurer a stable plural form order in all cases +// It is more convenient and natural to handle "small values" first +// See https://twitter.com/sebastienlorber/status/1366820663261077510 +const OrderedPluralForms=['zero','one','two','few','many','other'];function sortPluralForms(pluralForms){return OrderedPluralForms.filter(pf=>pluralForms.includes(pf));}// Hardcoded english/fallback implementation +const EnglishPluralForms={locale:'en',pluralForms:sortPluralForms(['one','other']),select:count=>count===1?'one':'other'};function createLocalePluralForms(locale){const pluralRules=new Intl.PluralRules(locale);return{locale,pluralForms:sortPluralForms(pluralRules.resolvedOptions().pluralCategories),select:count=>pluralRules.select(count)};}/** + * Poor man's `PluralSelector` implementation, using an English fallback. We + * want a lightweight, future-proof and good-enough solution. We don't want a + * perfect and heavy solution. + * + * Docusaurus classic theme has only 2 deeply nested labels requiring complex + * plural rules. We don't want to use `Intl` + `PluralRules` polyfills + full + * ICU syntax (react-intl) just for that. + * + * Notes: + * - 2021: 92+% Browsers support `Intl.PluralRules`, and support will increase + * in the future + * - NodeJS >= 13 has full ICU support by default + * - In case of "mismatch" between SSR and Browser ICU support, React keeps + * working! + */function useLocalePluralForms(){const{i18n:{currentLocale}}=(0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)();return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>{try{return createLocalePluralForms(currentLocale);}catch(err){console.error(`Failed to use Intl.PluralRules for locale "${currentLocale}". +Docusaurus will fallback to the default (English) implementation. +Error: ${err.message} +`);return EnglishPluralForms;}},[currentLocale]);}function selectPluralMessage(pluralMessages,count,localePluralForms){const separator='|';const parts=pluralMessages.split(separator);if(parts.length===1){return parts[0];}if(parts.length>localePluralForms.pluralForms.length){console.error(`For locale=${localePluralForms.locale}, a maximum of ${localePluralForms.pluralForms.length} plural forms are expected (${localePluralForms.pluralForms.join(',')}), but the message contains ${parts.length}: ${pluralMessages}`);}const pluralForm=localePluralForms.select(count);const pluralFormIndex=localePluralForms.pluralForms.indexOf(pluralForm);// In case of not enough plural form messages, we take the last one (other) +// instead of returning undefined +return parts[Math.min(pluralFormIndex,parts.length-1)];}/** + * Reads the current locale and returns an interface very similar to + * `Intl.PluralRules`. + */function usePluralForm(){const localePluralForm=useLocalePluralForms();return{selectMessage:(count,pluralMessages)=>selectPluralMessage(pluralMessages,count,localePluralForm)};} + +/***/ }), + +/***/ 6342: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ p: () => (/* binding */ useThemeConfig) +/* harmony export */ }); +/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4586); +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *//** + * A convenient/more semantic way to get theme config from context. + */function useThemeConfig(){return (0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)().siteConfig.themeConfig;} + +/***/ }), + +/***/ 2983: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */Object.defineProperty(exports, "__esModule", ({value:true}));exports.addTrailingSlash=addTrailingSlash;exports["default"]=applyTrailingSlash;exports.addLeadingSlash=addLeadingSlash;exports.removeTrailingSlash=removeTrailingSlash;const stringUtils_1=__webpack_require__(2566);function addTrailingSlash(str){return str.endsWith('/')?str:`${str}/`;}// Trailing slash handling depends in some site configuration options +function applyTrailingSlash(path,options){const{trailingSlash,baseUrl}=options;if(path.startsWith('#')){// Never apply trailing slash to an anchor link +return path;}function handleTrailingSlash(str,trailing){return trailing?addTrailingSlash(str):removeTrailingSlash(str);}// undefined = legacy retrocompatible behavior +if(typeof trailingSlash==='undefined'){return path;}// The trailing slash should be handled before the ?search#hash ! +const[pathname]=path.split(/[#?]/);// Never transform '/' to '' +// Never remove the baseUrl trailing slash! +// If baseUrl = /myBase/, we want to emit /myBase/index.html and not +// /myBase.html! See https://github.com/facebook/docusaurus/issues/5077 +const shouldNotApply=pathname==='/'||pathname===baseUrl;const newPathname=shouldNotApply?pathname:handleTrailingSlash(pathname,trailingSlash);return path.replace(pathname,newPathname);}/** Appends a leading slash to `str`, if one doesn't exist. */function addLeadingSlash(str){return(0,stringUtils_1.addPrefix)(str,'/');}/** Removes the trailing slash from `str`. */function removeTrailingSlash(str){return(0,stringUtils_1.removeSuffix)(str,'/');} + +/***/ }), + +/***/ 253: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +Object.defineProperty(exports, "__esModule", ({value:true}));exports.getErrorCausalChain=getErrorCausalChain;function getErrorCausalChain(error){if(error.cause){return[error,...getErrorCausalChain(error.cause)];}return[error];} + +/***/ }), + +/***/ 440: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +var __webpack_unused_export__; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */__webpack_unused_export__ = ({value:true});exports.rA=__webpack_unused_export__=__webpack_unused_export__=__webpack_unused_export__=__webpack_unused_export__=__webpack_unused_export__=__webpack_unused_export__=__webpack_unused_export__=exports.Ks=exports.LU=void 0;const tslib_1=__webpack_require__(1635);// __ prefix allows search crawlers (Algolia/DocSearch) to ignore anchors +// https://github.com/facebook/docusaurus/issues/8883#issuecomment-1516328368 +exports.LU='__blog-post-container';var applyTrailingSlash_1=__webpack_require__(2983);Object.defineProperty(exports, "Ks", ({enumerable:true,get:function(){return tslib_1.__importDefault(applyTrailingSlash_1).default;}}));__webpack_unused_export__ = ({enumerable:true,get:function(){return applyTrailingSlash_1.addTrailingSlash;}});__webpack_unused_export__ = ({enumerable:true,get:function(){return applyTrailingSlash_1.addLeadingSlash;}});__webpack_unused_export__ = ({enumerable:true,get:function(){return applyTrailingSlash_1.removeTrailingSlash;}});var stringUtils_1=__webpack_require__(2566);__webpack_unused_export__ = ({enumerable:true,get:function(){return stringUtils_1.addPrefix;}});__webpack_unused_export__ = ({enumerable:true,get:function(){return stringUtils_1.removeSuffix;}});__webpack_unused_export__ = ({enumerable:true,get:function(){return stringUtils_1.addSuffix;}});__webpack_unused_export__ = ({enumerable:true,get:function(){return stringUtils_1.removePrefix;}});var errorUtils_1=__webpack_require__(253);Object.defineProperty(exports, "rA", ({enumerable:true,get:function(){return errorUtils_1.getErrorCausalChain;}})); + +/***/ }), + +/***/ 2566: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */Object.defineProperty(exports, "__esModule", ({value:true}));exports.addPrefix=addPrefix;exports.removeSuffix=removeSuffix;exports.addSuffix=addSuffix;exports.removePrefix=removePrefix;/** Adds a given string prefix to `str`. */function addPrefix(str,prefix){return str.startsWith(prefix)?str:`${prefix}${str}`;}/** Removes a given string suffix from `str`. */function removeSuffix(str,suffix){if(suffix===''){// str.slice(0, 0) is "" +return str;}return str.endsWith(suffix)?str.slice(0,-suffix.length):str;}/** Adds a given string suffix to `str`. */function addSuffix(str,suffix){return str.endsWith(suffix)?str:`${str}${suffix}`;}/** Removes a given string prefix from `str`. */function removePrefix(str,prefix){return str.startsWith(prefix)?str.slice(prefix.length):str;} + +/***/ }), + +/***/ 8431: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": () => (/* binding */ Home) +}); + +// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs +var clsx = __webpack_require__(4164); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useDocusaurusContext.js +var useDocusaurusContext = __webpack_require__(4586); +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Layout/index.js + 53 modules +var Layout = __webpack_require__(7356); +// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules +var Link = __webpack_require__(725); +// EXTERNAL MODULE: ./src/components/HomepageFeatures/styles.module.css +var styles_module = __webpack_require__(3552); +var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); +// EXTERNAL MODULE: ./node_modules/react/index.js +var react = __webpack_require__(6540); +// EXTERNAL MODULE: ./node_modules/treespider/dist/es/treeSpider.bundle.min.js +var treeSpider_bundle_min = __webpack_require__(8777); +// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js +var jsx_runtime = __webpack_require__(4848); +;// ./src/components/HomepageFeatures/index.tsx +function HomepageFeatures(){react.useEffect(()=>{const instance1=new treeSpider_bundle_min/* default */.A({targetContainer:'#container-1',random_data_length:120});const instance2=new treeSpider_bundle_min/* default */.A({targetContainer:'#container-2',random_data_length:120,tree_type:'hSpiderWalk',chart_head_type:'landscape',backgroundPattern:'flurry'});const instance3=new treeSpider_bundle_min/* default */.A({targetContainer:'#container-3',random_data_length:120,tree_type:'cellar',chart_head_type:'rounded',backgroundPattern:'blurry'});},[]);return/*#__PURE__*/(0,jsx_runtime.jsx)("section",{className:(styles_module_default()).features,children:/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"container",children:/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"row",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"sections-container",children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:(styles_module_default()).sectionsTitle,children:"Choose the tree that fits your organization"}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"tree-type-title",children:"Default Tree"}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"tree-container",id:"container-1"}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"tree-type-title",children:"hSpiderWalk Tree with landscape chart heads with gyrrate background pattern"}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"tree-container",id:"container-2"}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"tree-type-title",children:"cellar Tree with rounded chart heads with blurry background pattern"}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{className:"tree-container",id:"container-3"})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"sections-container last-container",children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",{children:"And more"}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Link/* default */.A,{to:"/docs/intro",children:/*#__PURE__*/(0,jsx_runtime.jsx)("button",{className:"try-it-btn",style:{cursor:"pointer"},children:"try it out"})})})]})]})})});} +// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Heading/index.js +var Heading = __webpack_require__(4608); +// EXTERNAL MODULE: ./src/pages/index.module.css +var index_module = __webpack_require__(6830); +var index_module_default = /*#__PURE__*/__webpack_require__.n(index_module); +;// ./src/pages/index.tsx +function HomepageHeader(){const{siteConfig}=(0,useDocusaurusContext/* default */.A)();return/*#__PURE__*/(0,jsx_runtime.jsx)("header",{className:(0,clsx/* default */.A)('hero',(index_module_default()).heroBanner),children:/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{className:"container",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Heading/* default */.A,{as:"h1",className:"hero__title",children:siteConfig.title}),/*#__PURE__*/(0,jsx_runtime.jsx)("p",{className:"hero__subtitle",children:siteConfig.tagline})]})});}function Home(){const{siteConfig}=(0,useDocusaurusContext/* default */.A)();return/*#__PURE__*/(0,jsx_runtime.jsxs)(Layout/* default */.A,{title:`${siteConfig.title}`,description:"Description will go into a meta tag in <head />",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(HomepageHeader,{}),/*#__PURE__*/(0,jsx_runtime.jsx)("main",{children:/*#__PURE__*/(0,jsx_runtime.jsx)(HomepageFeatures,{})})]});} + +/***/ }), + +/***/ 9832: +/***/ ((module) => { + +// Exports +module.exports = { + +}; + + +/***/ }), + +/***/ 6175: +/***/ ((module) => { + +// Exports +module.exports = { + "admonition": `admonition_xJq3`, + "admonitionHeading": `admonitionHeading_Gvgb`, + "admonitionIcon": `admonitionIcon_Rf37`, + "admonitionContent": `admonitionContent_BuS1` +}; + + +/***/ }), + +/***/ 7521: +/***/ ((module) => { + +// Exports +module.exports = { + "closeButton": `closeButton_CVFx` +}; + + +/***/ }), + +/***/ 9034: +/***/ ((module) => { + +// Exports +module.exports = { + "content": `content_knG7` +}; + + +/***/ }), + +/***/ 2804: +/***/ ((module) => { + +// Exports +module.exports = { + "announcementBar": `announcementBar_mb4j`, + "announcementBarPlaceholder": `announcementBarPlaceholder_vyr4`, + "announcementBarClose": `announcementBarClose_gvF7`, + "announcementBarContent": `announcementBarContent_xLdY` +}; + + +/***/ }), + +/***/ 1871: +/***/ ((module) => { + +// Exports +module.exports = { + "backToTopButton": `backToTopButton_sjWU`, + "backToTopButtonShow": `backToTopButtonShow_xfvO` +}; + + +/***/ }), + +/***/ 2022: +/***/ ((module) => { + +// Exports +module.exports = { + "authorSocials": `authorSocials_rSDt`, + "authorSocialLink": `authorSocialLink_owbf`, + "authorSocialIcon": `authorSocialIcon_XYv3` +}; + + +/***/ }), + +/***/ 7339: +/***/ ((module) => { + +// Exports +module.exports = { + "authorImage": `authorImage_XqGP`, + "author-as-h1": `author-as-h1_n9oJ`, + "author-as-h2": `author-as-h2_gXvM`, + "authorDetails": `authorDetails_lV9A`, + "authorName": `authorName_yefp`, + "authorTitle": `authorTitle_nd0D`, + "authorBlogPostCount": `authorBlogPostCount_iiJ5` +}; + + +/***/ }), + +/***/ 2701: +/***/ ((module) => { + +// Exports +module.exports = { + "authorListItem": `authorListItem_n3yI` +}; + + +/***/ }), + +/***/ 1720: +/***/ ((module) => { + +// Exports +module.exports = { + "authorCol": `authorCol_Hf19`, + "imageOnlyAuthorRow": `imageOnlyAuthorRow_pa_O`, + "imageOnlyAuthorCol": `imageOnlyAuthorCol_G86a` +}; + + +/***/ }), + +/***/ 968: +/***/ ((module) => { + +// Exports +module.exports = { + "container": `container_mt6G` +}; + + +/***/ }), + +/***/ 9202: +/***/ ((module) => { + +// Exports +module.exports = { + "title": `title_f1Hy` +}; + + +/***/ }), + +/***/ 4669: +/***/ ((module) => { + +// Exports +module.exports = { + "sidebar": `sidebar_re4s`, + "sidebarItemTitle": `sidebarItemTitle_pO2u`, + "sidebarItemList": `sidebarItemList_Yudw`, + "sidebarItem": `sidebarItem__DBe`, + "sidebarItemLink": `sidebarItemLink_mo7H`, + "sidebarItemLinkActive": `sidebarItemLinkActive_I1ZP`, + "yearGroupHeading": `yearGroupHeading_rMGB` +}; + + +/***/ }), + +/***/ 3265: +/***/ ((module) => { + +// Exports +module.exports = { + "yearGroupHeading": `yearGroupHeading_QT03` +}; + + +/***/ }), + +/***/ 1702: +/***/ ((module) => { + +// Exports +module.exports = { + "codeBlockContainer": `codeBlockContainer_Ckt0` +}; + + +/***/ }), + +/***/ 6128: +/***/ ((module) => { + +// Exports +module.exports = { + "codeBlockContent": `codeBlockContent_biex`, + "codeBlockTitle": `codeBlockTitle_Ktv7`, + "codeBlock": `codeBlock_bY9V`, + "codeBlockStandalone": `codeBlockStandalone_MEMb`, + "codeBlockLines": `codeBlockLines_e6Vv`, + "codeBlockLinesWithNumbering": `codeBlockLinesWithNumbering_o6Pm`, + "buttonGroup": `buttonGroup__atx` +}; + + +/***/ }), + +/***/ 4142: +/***/ ((module) => { + +// Exports +module.exports = { + "copyButtonCopied": `copyButtonCopied_obH4`, + "copyButtonIcons": `copyButtonIcons_eSgA`, + "copyButtonIcon": `copyButtonIcon_y97N`, + "copyButtonSuccessIcon": `copyButtonSuccessIcon_LjdS` +}; + + +/***/ }), + +/***/ 3083: +/***/ ((module) => { + +// Exports +module.exports = { + "codeLine": `codeLine_lJS_`, + "codeLineNumber": `codeLineNumber_Tfdd`, + "codeLineContent": `codeLineContent_feaV` +}; + + +/***/ }), + +/***/ 9501: +/***/ ((module) => { + +// Exports +module.exports = { + "wordWrapButtonIcon": `wordWrapButtonIcon_Bwma`, + "wordWrapButtonEnabled": `wordWrapButtonEnabled_EoeP` +}; + + +/***/ }), + +/***/ 3384: +/***/ ((module) => { + +// Exports +module.exports = { + "toggle": `toggle_vylO`, + "toggleButton": `toggleButton_gllP`, + "darkToggleIcon": `darkToggleIcon_wfgR`, + "lightToggleIcon": `lightToggleIcon_pyhR`, + "toggleButtonDisabled": `toggleButtonDisabled_aARS` +}; + + +/***/ }), + +/***/ 3406: +/***/ ((module) => { + +// Exports +module.exports = { + "details": `details_b_Ee` +}; + + +/***/ }), + +/***/ 3801: +/***/ ((module) => { + +// Exports +module.exports = { + "breadcrumbHomeIcon": `breadcrumbHomeIcon_YNFT` +}; + + +/***/ }), + +/***/ 3928: +/***/ ((module) => { + +// Exports +module.exports = { + "breadcrumbsContainer": `breadcrumbsContainer_Z_bl` +}; + + +/***/ }), + +/***/ 6112: +/***/ ((module) => { + +// Exports +module.exports = { + "cardContainer": `cardContainer_fWXF`, + "cardTitle": `cardTitle_rnsV`, + "cardDescription": `cardDescription_PWke` +}; + + +/***/ }), + +/***/ 1902: +/***/ ((module) => { + +// Exports +module.exports = { + "generatedIndexPage": `generatedIndexPage_vN6x`, + "list": `list_eTzJ`, + "title": `title_kItE` +}; + + +/***/ }), + +/***/ 6024: +/***/ ((module) => { + +// Exports +module.exports = { + "docItemContainer": `docItemContainer_Djhp`, + "docItemCol": `docItemCol_VOVn` +}; + + +/***/ }), + +/***/ 4061: +/***/ ((module) => { + +// Exports +module.exports = { + "tocMobile": `tocMobile_ITEo` +}; + + +/***/ }), + +/***/ 3685: +/***/ ((module) => { + +// Exports +module.exports = { + "docMainContainer": `docMainContainer_TBSr`, + "docMainContainerEnhanced": `docMainContainerEnhanced_lQrH`, + "docItemWrapperEnhanced": `docItemWrapperEnhanced_JWYK` +}; + + +/***/ }), + +/***/ 8721: +/***/ ((module) => { + +// Exports +module.exports = { + "expandButton": `expandButton_TmdG`, + "expandButtonIcon": `expandButtonIcon_i1dp` +}; + + +/***/ }), + +/***/ 5710: +/***/ ((module) => { + +// Exports +module.exports = { + "docSidebarContainer": `docSidebarContainer_YfHR`, + "docSidebarContainerHidden": `docSidebarContainerHidden_DPk8`, + "sidebarViewport": `sidebarViewport_aRkj` +}; + + +/***/ }), + +/***/ 2607: +/***/ ((module) => { + +// Exports +module.exports = { + "docRoot": `docRoot_UBD9`, + "docsWrapper": `docsWrapper_hBAB` +}; + + +/***/ }), + +/***/ 5599: +/***/ ((module) => { + +// Exports +module.exports = { + "collapseSidebarButton": `collapseSidebarButton_PEFL`, + "collapseSidebarButtonIcon": `collapseSidebarButtonIcon_kv0_` +}; + + +/***/ }), + +/***/ 1733: +/***/ ((module) => { + +// Exports +module.exports = { + "menu": `menu_SIkG`, + "menuWithAnnouncementBar": `menuWithAnnouncementBar_GW3s` +}; + + +/***/ }), + +/***/ 6263: +/***/ ((module) => { + +// Exports +module.exports = { + "sidebar": `sidebar_njMd`, + "sidebarWithHideableNavbar": `sidebarWithHideableNavbar_wUlq`, + "sidebarHidden": `sidebarHidden_VK0M`, + "sidebarLogo": `sidebarLogo_isFc` +}; + + +/***/ }), + +/***/ 2105: +/***/ ((module) => { + +// Exports +module.exports = { + "menuHtmlItem": `menuHtmlItem_M9Kj` +}; + + +/***/ }), + +/***/ 1398: +/***/ ((module) => { + +// Exports +module.exports = { + "menuExternalLink": `menuExternalLink_NmtK` +}; + + +/***/ }), + +/***/ 901: +/***/ ((module) => { + +// Exports +module.exports = { + "lastUpdated": `lastUpdated_JAkA` +}; + + +/***/ }), + +/***/ 5309: +/***/ ((module) => { + +// Exports +module.exports = { + "footerLogoLink": `footerLogoLink_BH7S` +}; + + +/***/ }), + +/***/ 4738: +/***/ ((module) => { + +// Exports +module.exports = { + "anchorWithStickyNavbar": `anchorWithStickyNavbar_LWe7`, + "anchorWithHideOnScrollNavbar": `anchorWithHideOnScrollNavbar_WYt5` +}; + + +/***/ }), + +/***/ 1930: +/***/ ((module) => { + +// Exports +module.exports = { + "iconEdit": `iconEdit_Z9Sw` +}; + + +/***/ }), + +/***/ 1455: +/***/ ((module) => { + +// Exports +module.exports = { + "iconExternalLink": `iconExternalLink_nPIU` +}; + + +/***/ }), + +/***/ 4824: +/***/ ((module) => { + +// Exports +module.exports = { + "githubSvg": `githubSvg_Uu4N` +}; + + +/***/ }), + +/***/ 8451: +/***/ ((module) => { + +// Exports +module.exports = { + "xSvg": `xSvg_y3PF` +}; + + +/***/ }), + +/***/ 6218: +/***/ ((module) => { + +// Exports +module.exports = { + "mainWrapper": `mainWrapper_z2l0` +}; + + +/***/ }), + +/***/ 8081: +/***/ ((module) => { + +// Exports +module.exports = { + "img": `img_ev3q` +}; + + +/***/ }), + +/***/ 7691: +/***/ ((module) => { + +// Exports +module.exports = { + "containsTaskList": `containsTaskList_mC6p` +}; + + +/***/ }), + +/***/ 1696: +/***/ ((module) => { + +// Exports +module.exports = { + "mdxPageWrapper": `mdxPageWrapper_j9I6` +}; + + +/***/ }), + +/***/ 3127: +/***/ ((module) => { + +// Exports +module.exports = { + "darkNavbarColorModeToggle": `darkNavbarColorModeToggle_X3D1` +}; + + +/***/ }), + +/***/ 8484: +/***/ ((module) => { + +// Exports +module.exports = { + "colorModeToggle": `colorModeToggle_DEke` +}; + + +/***/ }), + +/***/ 231: +/***/ ((module) => { + +// Exports +module.exports = { + "navbarHideable": `navbarHideable_m1mJ`, + "navbarHidden": `navbarHidden_jGov` +}; + + +/***/ }), + +/***/ 7921: +/***/ ((module) => { + +// Exports +module.exports = { + "navbarSearchContainer": `navbarSearchContainer_Bca1` +}; + + +/***/ }), + +/***/ 6214: +/***/ ((module) => { + +// Exports +module.exports = { + "dropdownNavbarItemMobile": `dropdownNavbarItemMobile_S0Fm` +}; + + +/***/ }), + +/***/ 8244: +/***/ ((module) => { + +// Exports +module.exports = { + "iconLanguage": `iconLanguage_nlXk` +}; + + +/***/ }), + +/***/ 5521: +/***/ ((module) => { + +// Exports +module.exports = { + "skipToContent": `skipToContent_fXgn` +}; + + +/***/ }), + +/***/ 5490: +/***/ ((module) => { + +// Exports +module.exports = { + "tableOfContents": `tableOfContents_bqdL`, + "docItemContainer": `docItemContainer_F8PC` +}; + + +/***/ }), + +/***/ 9136: +/***/ ((module) => { + +// Exports +module.exports = { + "tocCollapsibleButton": `tocCollapsibleButton_TO0P`, + "tocCollapsibleButtonExpanded": `tocCollapsibleButtonExpanded_MG3E` +}; + + +/***/ }), + +/***/ 2586: +/***/ ((module) => { + +// Exports +module.exports = { + "tocCollapsible": `tocCollapsible_ETCw`, + "tocCollapsibleContent": `tocCollapsibleContent_vkbj`, + "tocCollapsibleExpanded": `tocCollapsibleExpanded_sAul` +}; + + +/***/ }), + +/***/ 448: +/***/ ((module) => { + +// Exports +module.exports = { + "tag": `tag_zVej`, + "tagRegular": `tagRegular_sFm0`, + "tagWithCount": `tagWithCount_h2kH` +}; + + +/***/ }), + +/***/ 6216: +/***/ ((module) => { + +// Exports +module.exports = { + "tag": `tag_Nnez` +}; + + +/***/ }), + +/***/ 4088: +/***/ ((module) => { + +// Exports +module.exports = { + "tags": `tags_jXut`, + "tag": `tag_QGVx` +}; + + +/***/ }), + +/***/ 6062: +/***/ ((module) => { + +// Exports +module.exports = { + "details": `details_lb9f`, + "isBrowser": `isBrowser_bmU9`, + "collapsibleContent": `collapsibleContent_i85q` +}; + + +/***/ }), + +/***/ 6878: +/***/ ((module) => { + +// Exports +module.exports = { + "themedComponent": `themedComponent_mlkZ`, + "themedComponent--light": `themedComponent--light_NVdE`, + "themedComponent--dark": `themedComponent--dark_xIcU` +}; + + +/***/ }), + +/***/ 7983: +/***/ ((module) => { + +// Exports +module.exports = { + "errorBoundaryError": `errorBoundaryError_a6uf`, + "errorBoundaryFallback": `errorBoundaryFallback_VBag` +}; + + +/***/ }), + +/***/ 3552: +/***/ ((module) => { + +// Exports +module.exports = { + "features": `features_t9lD`, + "featureSvg": `featureSvg_GfXr`, + "sectionsTitle": `sectionsTitle_GVc4` +}; + + +/***/ }), + +/***/ 6830: +/***/ ((module) => { + +// Exports +module.exports = { + "heroBanner": `heroBanner_qdFl`, + "buttons": `buttons_AeoN` +}; + + +/***/ }), + +/***/ 1513: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + zR: () => (/* binding */ createBrowserHistory), + TM: () => (/* binding */ createHashHistory), + yJ: () => (/* binding */ createLocation), + sC: () => (/* binding */ createMemoryHistory), + AO: () => (/* binding */ createPath) +}); + +// UNUSED EXPORTS: locationsAreEqual, parsePath + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js +var esm_extends = __webpack_require__(8168); +;// ./node_modules/resolve-pathname/esm/resolve-pathname.js +function isAbsolute(pathname) { + return pathname.charAt(0) === '/'; +} + +// About 1.5x faster than the two-arg version of Array#splice() +function spliceOne(list, index) { + for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) { + list[i] = list[k]; + } + + list.pop(); +} + +// This implementation is based heavily on node's url.parse +function resolvePathname(to, from) { + if (from === undefined) from = ''; + + var toParts = (to && to.split('/')) || []; + var fromParts = (from && from.split('/')) || []; + + var isToAbs = to && isAbsolute(to); + var isFromAbs = from && isAbsolute(from); + var mustEndAbs = isToAbs || isFromAbs; + + if (to && isAbsolute(to)) { + // to is absolute + fromParts = toParts; + } else if (toParts.length) { + // to is relative, drop the filename + fromParts.pop(); + fromParts = fromParts.concat(toParts); + } + + if (!fromParts.length) return '/'; + + var hasTrailingSlash; + if (fromParts.length) { + var last = fromParts[fromParts.length - 1]; + hasTrailingSlash = last === '.' || last === '..' || last === ''; + } else { + hasTrailingSlash = false; + } + + var up = 0; + for (var i = fromParts.length; i >= 0; i--) { + var part = fromParts[i]; + + if (part === '.') { + spliceOne(fromParts, i); + } else if (part === '..') { + spliceOne(fromParts, i); + up++; + } else if (up) { + spliceOne(fromParts, i); + up--; + } + } + + if (!mustEndAbs) for (; up--; up) fromParts.unshift('..'); + + if ( + mustEndAbs && + fromParts[0] !== '' && + (!fromParts[0] || !isAbsolute(fromParts[0])) + ) + fromParts.unshift(''); + + var result = fromParts.join('/'); + + if (hasTrailingSlash && result.substr(-1) !== '/') result += '/'; + + return result; +} + +/* harmony default export */ const resolve_pathname = (resolvePathname); + +// EXTERNAL MODULE: ./node_modules/tiny-invariant/dist/esm/tiny-invariant.js +var tiny_invariant = __webpack_require__(1561); +;// ./node_modules/history/esm/history.js + + + + + + +function addLeadingSlash(path) { + return path.charAt(0) === '/' ? path : '/' + path; +} +function stripLeadingSlash(path) { + return path.charAt(0) === '/' ? path.substr(1) : path; +} +function hasBasename(path, prefix) { + return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1; +} +function stripBasename(path, prefix) { + return hasBasename(path, prefix) ? path.substr(prefix.length) : path; +} +function stripTrailingSlash(path) { + return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path; +} +function parsePath(path) { + var pathname = path || '/'; + var search = ''; + var hash = ''; + var hashIndex = pathname.indexOf('#'); + + if (hashIndex !== -1) { + hash = pathname.substr(hashIndex); + pathname = pathname.substr(0, hashIndex); + } + + var searchIndex = pathname.indexOf('?'); + + if (searchIndex !== -1) { + search = pathname.substr(searchIndex); + pathname = pathname.substr(0, searchIndex); + } + + return { + pathname: pathname, + search: search === '?' ? '' : search, + hash: hash === '#' ? '' : hash + }; +} +function createPath(location) { + var pathname = location.pathname, + search = location.search, + hash = location.hash; + var path = pathname || '/'; + if (search && search !== '?') path += search.charAt(0) === '?' ? search : "?" + search; + if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : "#" + hash; + return path; +} + +function createLocation(path, state, key, currentLocation) { + var location; + + if (typeof path === 'string') { + // Two-arg form: push(path, state) + location = parsePath(path); + location.state = state; + } else { + // One-arg form: push(location) + location = (0,esm_extends/* default */.A)({}, path); + if (location.pathname === undefined) location.pathname = ''; + + if (location.search) { + if (location.search.charAt(0) !== '?') location.search = '?' + location.search; + } else { + location.search = ''; + } + + if (location.hash) { + if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash; + } else { + location.hash = ''; + } + + if (state !== undefined && location.state === undefined) location.state = state; + } + + try { + location.pathname = decodeURI(location.pathname); + } catch (e) { + if (e instanceof URIError) { + throw new URIError('Pathname "' + location.pathname + '" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.'); + } else { + throw e; + } + } + + if (key) location.key = key; + + if (currentLocation) { + // Resolve incomplete/relative pathname relative to current location. + if (!location.pathname) { + location.pathname = currentLocation.pathname; + } else if (location.pathname.charAt(0) !== '/') { + location.pathname = resolve_pathname(location.pathname, currentLocation.pathname); + } + } else { + // When there is no prior location and pathname is empty, set it to / + if (!location.pathname) { + location.pathname = '/'; + } + } + + return location; +} +function locationsAreEqual(a, b) { + return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state); +} + +function createTransitionManager() { + var prompt = null; + + function setPrompt(nextPrompt) { + false ? 0 : void 0; + prompt = nextPrompt; + return function () { + if (prompt === nextPrompt) prompt = null; + }; + } + + function confirmTransitionTo(location, action, getUserConfirmation, callback) { + // TODO: If another transition starts while we're still confirming + // the previous one, we may end up in a weird state. Figure out the + // best way to handle this. + if (prompt != null) { + var result = typeof prompt === 'function' ? prompt(location, action) : prompt; + + if (typeof result === 'string') { + if (typeof getUserConfirmation === 'function') { + getUserConfirmation(result, callback); + } else { + false ? 0 : void 0; + callback(true); + } + } else { + // Return false from a transition hook to cancel the transition. + callback(result !== false); + } + } else { + callback(true); + } + } + + var listeners = []; + + function appendListener(fn) { + var isActive = true; + + function listener() { + if (isActive) fn.apply(void 0, arguments); + } + + listeners.push(listener); + return function () { + isActive = false; + listeners = listeners.filter(function (item) { + return item !== listener; + }); + }; + } + + function notifyListeners() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + listeners.forEach(function (listener) { + return listener.apply(void 0, args); + }); + } + + return { + setPrompt: setPrompt, + confirmTransitionTo: confirmTransitionTo, + appendListener: appendListener, + notifyListeners: notifyListeners + }; +} + +var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); +function getConfirmation(message, callback) { + callback(window.confirm(message)); // eslint-disable-line no-alert +} +/** + * Returns true if the HTML5 history API is supported. Taken from Modernizr. + * + * https://github.com/Modernizr/Modernizr/blob/master/LICENSE + * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js + * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586 + */ + +function supportsHistory() { + var ua = window.navigator.userAgent; + if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false; + return window.history && 'pushState' in window.history; +} +/** + * Returns true if browser fires popstate on hash change. + * IE10 and IE11 do not. + */ + +function supportsPopStateOnHashChange() { + return window.navigator.userAgent.indexOf('Trident') === -1; +} +/** + * Returns false if using go(n) with hash history causes a full page reload. + */ + +function supportsGoWithoutReloadUsingHash() { + return window.navigator.userAgent.indexOf('Firefox') === -1; +} +/** + * Returns true if a given popstate event is an extraneous WebKit event. + * Accounts for the fact that Chrome on iOS fires real popstate events + * containing undefined state when pressing the back button. + */ + +function isExtraneousPopstateEvent(event) { + return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1; +} + +var PopStateEvent = 'popstate'; +var HashChangeEvent = 'hashchange'; + +function getHistoryState() { + try { + return window.history.state || {}; + } catch (e) { + // IE 11 sometimes throws when accessing window.history.state + // See https://github.com/ReactTraining/history/pull/289 + return {}; + } +} +/** + * Creates a history object that uses the HTML5 history API including + * pushState, replaceState, and the popstate event. + */ + + +function createBrowserHistory(props) { + if (props === void 0) { + props = {}; + } + + !canUseDOM ? false ? 0 : (0,tiny_invariant/* default */.A)(false) : void 0; + var globalHistory = window.history; + var canUseHistory = supportsHistory(); + var needsHashChangeListener = !supportsPopStateOnHashChange(); + var _props = props, + _props$forceRefresh = _props.forceRefresh, + forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh, + _props$getUserConfirm = _props.getUserConfirmation, + getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm, + _props$keyLength = _props.keyLength, + keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength; + var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : ''; + + function getDOMLocation(historyState) { + var _ref = historyState || {}, + key = _ref.key, + state = _ref.state; + + var _window$location = window.location, + pathname = _window$location.pathname, + search = _window$location.search, + hash = _window$location.hash; + var path = pathname + search + hash; + false ? 0 : void 0; + if (basename) path = stripBasename(path, basename); + return createLocation(path, state, key); + } + + function createKey() { + return Math.random().toString(36).substr(2, keyLength); + } + + var transitionManager = createTransitionManager(); + + function setState(nextState) { + (0,esm_extends/* default */.A)(history, nextState); + + history.length = globalHistory.length; + transitionManager.notifyListeners(history.location, history.action); + } + + function handlePopState(event) { + // Ignore extraneous popstate events in WebKit. + if (isExtraneousPopstateEvent(event)) return; + handlePop(getDOMLocation(event.state)); + } + + function handleHashChange() { + handlePop(getDOMLocation(getHistoryState())); + } + + var forceNextPop = false; + + function handlePop(location) { + if (forceNextPop) { + forceNextPop = false; + setState(); + } else { + var action = 'POP'; + transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { + if (ok) { + setState({ + action: action, + location: location + }); + } else { + revertPop(location); + } + }); + } + } + + function revertPop(fromLocation) { + var toLocation = history.location; // TODO: We could probably make this more reliable by + // keeping a list of keys we've seen in sessionStorage. + // Instead, we just default to 0 for keys we don't know. + + var toIndex = allKeys.indexOf(toLocation.key); + if (toIndex === -1) toIndex = 0; + var fromIndex = allKeys.indexOf(fromLocation.key); + if (fromIndex === -1) fromIndex = 0; + var delta = toIndex - fromIndex; + + if (delta) { + forceNextPop = true; + go(delta); + } + } + + var initialLocation = getDOMLocation(getHistoryState()); + var allKeys = [initialLocation.key]; // Public interface + + function createHref(location) { + return basename + createPath(location); + } + + function push(path, state) { + false ? 0 : void 0; + var action = 'PUSH'; + var location = createLocation(path, state, createKey(), history.location); + transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { + if (!ok) return; + var href = createHref(location); + var key = location.key, + state = location.state; + + if (canUseHistory) { + globalHistory.pushState({ + key: key, + state: state + }, null, href); + + if (forceRefresh) { + window.location.href = href; + } else { + var prevIndex = allKeys.indexOf(history.location.key); + var nextKeys = allKeys.slice(0, prevIndex + 1); + nextKeys.push(location.key); + allKeys = nextKeys; + setState({ + action: action, + location: location + }); + } + } else { + false ? 0 : void 0; + window.location.href = href; + } + }); + } + + function replace(path, state) { + false ? 0 : void 0; + var action = 'REPLACE'; + var location = createLocation(path, state, createKey(), history.location); + transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { + if (!ok) return; + var href = createHref(location); + var key = location.key, + state = location.state; + + if (canUseHistory) { + globalHistory.replaceState({ + key: key, + state: state + }, null, href); + + if (forceRefresh) { + window.location.replace(href); + } else { + var prevIndex = allKeys.indexOf(history.location.key); + if (prevIndex !== -1) allKeys[prevIndex] = location.key; + setState({ + action: action, + location: location + }); + } + } else { + false ? 0 : void 0; + window.location.replace(href); + } + }); + } + + function go(n) { + globalHistory.go(n); + } + + function goBack() { + go(-1); + } + + function goForward() { + go(1); + } + + var listenerCount = 0; + + function checkDOMListeners(delta) { + listenerCount += delta; + + if (listenerCount === 1 && delta === 1) { + window.addEventListener(PopStateEvent, handlePopState); + if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange); + } else if (listenerCount === 0) { + window.removeEventListener(PopStateEvent, handlePopState); + if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange); + } + } + + var isBlocked = false; + + function block(prompt) { + if (prompt === void 0) { + prompt = false; + } + + var unblock = transitionManager.setPrompt(prompt); + + if (!isBlocked) { + checkDOMListeners(1); + isBlocked = true; + } + + return function () { + if (isBlocked) { + isBlocked = false; + checkDOMListeners(-1); + } + + return unblock(); + }; + } + + function listen(listener) { + var unlisten = transitionManager.appendListener(listener); + checkDOMListeners(1); + return function () { + checkDOMListeners(-1); + unlisten(); + }; + } + + var history = { + length: globalHistory.length, + action: 'POP', + location: initialLocation, + createHref: createHref, + push: push, + replace: replace, + go: go, + goBack: goBack, + goForward: goForward, + block: block, + listen: listen + }; + return history; +} + +var HashChangeEvent$1 = 'hashchange'; +var HashPathCoders = { + hashbang: { + encodePath: function encodePath(path) { + return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path); + }, + decodePath: function decodePath(path) { + return path.charAt(0) === '!' ? path.substr(1) : path; + } + }, + noslash: { + encodePath: stripLeadingSlash, + decodePath: addLeadingSlash + }, + slash: { + encodePath: addLeadingSlash, + decodePath: addLeadingSlash + } +}; + +function stripHash(url) { + var hashIndex = url.indexOf('#'); + return hashIndex === -1 ? url : url.slice(0, hashIndex); +} + +function getHashPath() { + // We can't use window.location.hash here because it's not + // consistent across browsers - Firefox will pre-decode it! + var href = window.location.href; + var hashIndex = href.indexOf('#'); + return hashIndex === -1 ? '' : href.substring(hashIndex + 1); +} + +function pushHashPath(path) { + window.location.hash = path; +} + +function replaceHashPath(path) { + window.location.replace(stripHash(window.location.href) + '#' + path); +} + +function createHashHistory(props) { + if (props === void 0) { + props = {}; + } + + !canUseDOM ? false ? 0 : (0,tiny_invariant/* default */.A)(false) : void 0; + var globalHistory = window.history; + var canGoWithoutReload = supportsGoWithoutReloadUsingHash(); + var _props = props, + _props$getUserConfirm = _props.getUserConfirmation, + getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm, + _props$hashType = _props.hashType, + hashType = _props$hashType === void 0 ? 'slash' : _props$hashType; + var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : ''; + var _HashPathCoders$hashT = HashPathCoders[hashType], + encodePath = _HashPathCoders$hashT.encodePath, + decodePath = _HashPathCoders$hashT.decodePath; + + function getDOMLocation() { + var path = decodePath(getHashPath()); + false ? 0 : void 0; + if (basename) path = stripBasename(path, basename); + return createLocation(path); + } + + var transitionManager = createTransitionManager(); + + function setState(nextState) { + (0,esm_extends/* default */.A)(history, nextState); + + history.length = globalHistory.length; + transitionManager.notifyListeners(history.location, history.action); + } + + var forceNextPop = false; + var ignorePath = null; + + function locationsAreEqual$$1(a, b) { + return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash; + } + + function handleHashChange() { + var path = getHashPath(); + var encodedPath = encodePath(path); + + if (path !== encodedPath) { + // Ensure we always have a properly-encoded hash. + replaceHashPath(encodedPath); + } else { + var location = getDOMLocation(); + var prevLocation = history.location; + if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change. + + if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace. + + ignorePath = null; + handlePop(location); + } + } + + function handlePop(location) { + if (forceNextPop) { + forceNextPop = false; + setState(); + } else { + var action = 'POP'; + transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { + if (ok) { + setState({ + action: action, + location: location + }); + } else { + revertPop(location); + } + }); + } + } + + function revertPop(fromLocation) { + var toLocation = history.location; // TODO: We could probably make this more reliable by + // keeping a list of paths we've seen in sessionStorage. + // Instead, we just default to 0 for paths we don't know. + + var toIndex = allPaths.lastIndexOf(createPath(toLocation)); + if (toIndex === -1) toIndex = 0; + var fromIndex = allPaths.lastIndexOf(createPath(fromLocation)); + if (fromIndex === -1) fromIndex = 0; + var delta = toIndex - fromIndex; + + if (delta) { + forceNextPop = true; + go(delta); + } + } // Ensure the hash is encoded properly before doing anything else. + + + var path = getHashPath(); + var encodedPath = encodePath(path); + if (path !== encodedPath) replaceHashPath(encodedPath); + var initialLocation = getDOMLocation(); + var allPaths = [createPath(initialLocation)]; // Public interface + + function createHref(location) { + var baseTag = document.querySelector('base'); + var href = ''; + + if (baseTag && baseTag.getAttribute('href')) { + href = stripHash(window.location.href); + } + + return href + '#' + encodePath(basename + createPath(location)); + } + + function push(path, state) { + false ? 0 : void 0; + var action = 'PUSH'; + var location = createLocation(path, undefined, undefined, history.location); + transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { + if (!ok) return; + var path = createPath(location); + var encodedPath = encodePath(basename + path); + var hashChanged = getHashPath() !== encodedPath; + + if (hashChanged) { + // We cannot tell if a hashchange was caused by a PUSH, so we'd + // rather setState here and ignore the hashchange. The caveat here + // is that other hash histories in the page will consider it a POP. + ignorePath = path; + pushHashPath(encodedPath); + var prevIndex = allPaths.lastIndexOf(createPath(history.location)); + var nextPaths = allPaths.slice(0, prevIndex + 1); + nextPaths.push(path); + allPaths = nextPaths; + setState({ + action: action, + location: location + }); + } else { + false ? 0 : void 0; + setState(); + } + }); + } + + function replace(path, state) { + false ? 0 : void 0; + var action = 'REPLACE'; + var location = createLocation(path, undefined, undefined, history.location); + transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { + if (!ok) return; + var path = createPath(location); + var encodedPath = encodePath(basename + path); + var hashChanged = getHashPath() !== encodedPath; + + if (hashChanged) { + // We cannot tell if a hashchange was caused by a REPLACE, so we'd + // rather setState here and ignore the hashchange. The caveat here + // is that other hash histories in the page will consider it a POP. + ignorePath = path; + replaceHashPath(encodedPath); + } + + var prevIndex = allPaths.indexOf(createPath(history.location)); + if (prevIndex !== -1) allPaths[prevIndex] = path; + setState({ + action: action, + location: location + }); + }); + } + + function go(n) { + false ? 0 : void 0; + globalHistory.go(n); + } + + function goBack() { + go(-1); + } + + function goForward() { + go(1); + } + + var listenerCount = 0; + + function checkDOMListeners(delta) { + listenerCount += delta; + + if (listenerCount === 1 && delta === 1) { + window.addEventListener(HashChangeEvent$1, handleHashChange); + } else if (listenerCount === 0) { + window.removeEventListener(HashChangeEvent$1, handleHashChange); + } + } + + var isBlocked = false; + + function block(prompt) { + if (prompt === void 0) { + prompt = false; + } + + var unblock = transitionManager.setPrompt(prompt); + + if (!isBlocked) { + checkDOMListeners(1); + isBlocked = true; + } + + return function () { + if (isBlocked) { + isBlocked = false; + checkDOMListeners(-1); + } + + return unblock(); + }; + } + + function listen(listener) { + var unlisten = transitionManager.appendListener(listener); + checkDOMListeners(1); + return function () { + checkDOMListeners(-1); + unlisten(); + }; + } + + var history = { + length: globalHistory.length, + action: 'POP', + location: initialLocation, + createHref: createHref, + push: push, + replace: replace, + go: go, + goBack: goBack, + goForward: goForward, + block: block, + listen: listen + }; + return history; +} + +function clamp(n, lowerBound, upperBound) { + return Math.min(Math.max(n, lowerBound), upperBound); +} +/** + * Creates a history object that stores locations in memory. + */ + + +function createMemoryHistory(props) { + if (props === void 0) { + props = {}; + } + + var _props = props, + getUserConfirmation = _props.getUserConfirmation, + _props$initialEntries = _props.initialEntries, + initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries, + _props$initialIndex = _props.initialIndex, + initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex, + _props$keyLength = _props.keyLength, + keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength; + var transitionManager = createTransitionManager(); + + function setState(nextState) { + (0,esm_extends/* default */.A)(history, nextState); + + history.length = history.entries.length; + transitionManager.notifyListeners(history.location, history.action); + } + + function createKey() { + return Math.random().toString(36).substr(2, keyLength); + } + + var index = clamp(initialIndex, 0, initialEntries.length - 1); + var entries = initialEntries.map(function (entry) { + return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey()); + }); // Public interface + + var createHref = createPath; + + function push(path, state) { + false ? 0 : void 0; + var action = 'PUSH'; + var location = createLocation(path, state, createKey(), history.location); + transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { + if (!ok) return; + var prevIndex = history.index; + var nextIndex = prevIndex + 1; + var nextEntries = history.entries.slice(0); + + if (nextEntries.length > nextIndex) { + nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location); + } else { + nextEntries.push(location); + } + + setState({ + action: action, + location: location, + index: nextIndex, + entries: nextEntries + }); + }); + } + + function replace(path, state) { + false ? 0 : void 0; + var action = 'REPLACE'; + var location = createLocation(path, state, createKey(), history.location); + transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { + if (!ok) return; + history.entries[history.index] = location; + setState({ + action: action, + location: location + }); + }); + } + + function go(n) { + var nextIndex = clamp(history.index + n, 0, history.entries.length - 1); + var action = 'POP'; + var location = history.entries[nextIndex]; + transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { + if (ok) { + setState({ + action: action, + location: location, + index: nextIndex + }); + } else { + // Mimic the behavior of DOM histories by + // causing a render after a cancelled POP. + setState(); + } + }); + } + + function goBack() { + go(-1); + } + + function goForward() { + go(1); + } + + function canGo(n) { + var nextIndex = history.index + n; + return nextIndex >= 0 && nextIndex < history.entries.length; + } + + function block(prompt) { + if (prompt === void 0) { + prompt = false; + } + + return transitionManager.setPrompt(prompt); + } + + function listen(listener) { + return transitionManager.appendListener(listener); + } + + var history = { + length: entries.length, + action: 'POP', + location: entries[index], + index: index, + entries: entries, + createHref: createHref, + push: push, + replace: replace, + go: go, + goBack: goBack, + goForward: goForward, + canGo: canGo, + block: block, + listen: listen + }; + return history; +} + + + + +/***/ }), + +/***/ 4146: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var reactIs = __webpack_require__(4363); + +/** + * Copyright 2015, Yahoo! Inc. + * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +var REACT_STATICS = { + childContextTypes: true, + contextType: true, + contextTypes: true, + defaultProps: true, + displayName: true, + getDefaultProps: true, + getDerivedStateFromError: true, + getDerivedStateFromProps: true, + mixins: true, + propTypes: true, + type: true +}; +var KNOWN_STATICS = { + name: true, + length: true, + prototype: true, + caller: true, + callee: true, + arguments: true, + arity: true +}; +var FORWARD_REF_STATICS = { + '$$typeof': true, + render: true, + defaultProps: true, + displayName: true, + propTypes: true +}; +var MEMO_STATICS = { + '$$typeof': true, + compare: true, + defaultProps: true, + displayName: true, + propTypes: true, + type: true +}; +var TYPE_STATICS = {}; +TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS; +TYPE_STATICS[reactIs.Memo] = MEMO_STATICS; + +function getStatics(component) { + // React v16.11 and below + if (reactIs.isMemo(component)) { + return MEMO_STATICS; + } // React v16.12 and above + + + return TYPE_STATICS[component['$$typeof']] || REACT_STATICS; +} + +var defineProperty = Object.defineProperty; +var getOwnPropertyNames = Object.getOwnPropertyNames; +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var getPrototypeOf = Object.getPrototypeOf; +var objectPrototype = Object.prototype; +function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { + if (typeof sourceComponent !== 'string') { + // don't hoist over string (html) components + if (objectPrototype) { + var inheritedComponent = getPrototypeOf(sourceComponent); + + if (inheritedComponent && inheritedComponent !== objectPrototype) { + hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); + } + } + + var keys = getOwnPropertyNames(sourceComponent); + + if (getOwnPropertySymbols) { + keys = keys.concat(getOwnPropertySymbols(sourceComponent)); + } + + var targetStatics = getStatics(targetComponent); + var sourceStatics = getStatics(sourceComponent); + + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + + if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) { + var descriptor = getOwnPropertyDescriptor(sourceComponent, key); + + try { + // Avoid failures from read-only properties + defineProperty(targetComponent, key, descriptor); + } catch (e) {} + } + } + } + + return targetComponent; +} + +module.exports = hoistNonReactStatics; + + +/***/ }), + +/***/ 7927: +/***/ ((module) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var NODE_ENV = "production"; + +var invariant = function(condition, format, a, b, c, d, e, f) { + if (NODE_ENV !== 'production') { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + } + + if (!condition) { + var error; + if (format === undefined) { + error = new Error( + 'Minified exception occurred; use the non-minified dev environment ' + + 'for the full error message and additional helpful warnings.' + ); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error( + format.replace(/%s/g, function() { return args[argIndex++]; }) + ); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +}; + +module.exports = invariant; + + +/***/ }), + +/***/ 4634: +/***/ ((module) => { + +module.exports = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]'; +}; + + +/***/ }), + +/***/ 4835: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ 5364: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ 5947: +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +;(function(root, factory) { + + if (true) { + !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : + __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else {} + +})(this, function() { + var NProgress = {}; + + NProgress.version = '0.2.0'; + + var Settings = NProgress.settings = { + minimum: 0.08, + easing: 'ease', + positionUsing: '', + speed: 200, + trickle: true, + trickleRate: 0.02, + trickleSpeed: 800, + showSpinner: true, + barSelector: '[role="bar"]', + spinnerSelector: '[role="spinner"]', + parent: 'body', + template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>' + }; + + /** + * Updates configuration. + * + * NProgress.configure({ + * minimum: 0.1 + * }); + */ + NProgress.configure = function(options) { + var key, value; + for (key in options) { + value = options[key]; + if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value; + } + + return this; + }; + + /** + * Last number. + */ + + NProgress.status = null; + + /** + * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`. + * + * NProgress.set(0.4); + * NProgress.set(1.0); + */ + + NProgress.set = function(n) { + var started = NProgress.isStarted(); + + n = clamp(n, Settings.minimum, 1); + NProgress.status = (n === 1 ? null : n); + + var progress = NProgress.render(!started), + bar = progress.querySelector(Settings.barSelector), + speed = Settings.speed, + ease = Settings.easing; + + progress.offsetWidth; /* Repaint */ + + queue(function(next) { + // Set positionUsing if it hasn't already been set + if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS(); + + // Add transition + css(bar, barPositionCSS(n, speed, ease)); + + if (n === 1) { + // Fade out + css(progress, { + transition: 'none', + opacity: 1 + }); + progress.offsetWidth; /* Repaint */ + + setTimeout(function() { + css(progress, { + transition: 'all ' + speed + 'ms linear', + opacity: 0 + }); + setTimeout(function() { + NProgress.remove(); + next(); + }, speed); + }, speed); + } else { + setTimeout(next, speed); + } + }); + + return this; + }; + + NProgress.isStarted = function() { + return typeof NProgress.status === 'number'; + }; + + /** + * Shows the progress bar. + * This is the same as setting the status to 0%, except that it doesn't go backwards. + * + * NProgress.start(); + * + */ + NProgress.start = function() { + if (!NProgress.status) NProgress.set(0); + + var work = function() { + setTimeout(function() { + if (!NProgress.status) return; + NProgress.trickle(); + work(); + }, Settings.trickleSpeed); + }; + + if (Settings.trickle) work(); + + return this; + }; + + /** + * Hides the progress bar. + * This is the *sort of* the same as setting the status to 100%, with the + * difference being `done()` makes some placebo effect of some realistic motion. + * + * NProgress.done(); + * + * If `true` is passed, it will show the progress bar even if its hidden. + * + * NProgress.done(true); + */ + + NProgress.done = function(force) { + if (!force && !NProgress.status) return this; + + return NProgress.inc(0.3 + 0.5 * Math.random()).set(1); + }; + + /** + * Increments by a random amount. + */ + + NProgress.inc = function(amount) { + var n = NProgress.status; + + if (!n) { + return NProgress.start(); + } else { + if (typeof amount !== 'number') { + amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95); + } + + n = clamp(n + amount, 0, 0.994); + return NProgress.set(n); + } + }; + + NProgress.trickle = function() { + return NProgress.inc(Math.random() * Settings.trickleRate); + }; + + /** + * Waits for all supplied jQuery promises and + * increases the progress as the promises resolve. + * + * @param $promise jQUery Promise + */ + (function() { + var initial = 0, current = 0; + + NProgress.promise = function($promise) { + if (!$promise || $promise.state() === "resolved") { + return this; + } + + if (current === 0) { + NProgress.start(); + } + + initial++; + current++; + + $promise.always(function() { + current--; + if (current === 0) { + initial = 0; + NProgress.done(); + } else { + NProgress.set((initial - current) / initial); + } + }); + + return this; + }; + + })(); + + /** + * (Internal) renders the progress bar markup based on the `template` + * setting. + */ + + NProgress.render = function(fromStart) { + if (NProgress.isRendered()) return document.getElementById('nprogress'); + + addClass(document.documentElement, 'nprogress-busy'); + + var progress = document.createElement('div'); + progress.id = 'nprogress'; + progress.innerHTML = Settings.template; + + var bar = progress.querySelector(Settings.barSelector), + perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0), + parent = document.querySelector(Settings.parent), + spinner; + + css(bar, { + transition: 'all 0 linear', + transform: 'translate3d(' + perc + '%,0,0)' + }); + + if (!Settings.showSpinner) { + spinner = progress.querySelector(Settings.spinnerSelector); + spinner && removeElement(spinner); + } + + if (parent != document.body) { + addClass(parent, 'nprogress-custom-parent'); + } + + parent.appendChild(progress); + return progress; + }; + + /** + * Removes the element. Opposite of render(). + */ + + NProgress.remove = function() { + removeClass(document.documentElement, 'nprogress-busy'); + removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent'); + var progress = document.getElementById('nprogress'); + progress && removeElement(progress); + }; + + /** + * Checks if the progress bar is rendered. + */ + + NProgress.isRendered = function() { + return !!document.getElementById('nprogress'); + }; + + /** + * Determine which positioning CSS rule to use. + */ + + NProgress.getPositioningCSS = function() { + // Sniff on document.body.style + var bodyStyle = document.body.style; + + // Sniff prefixes + var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' : + ('MozTransform' in bodyStyle) ? 'Moz' : + ('msTransform' in bodyStyle) ? 'ms' : + ('OTransform' in bodyStyle) ? 'O' : ''; + + if (vendorPrefix + 'Perspective' in bodyStyle) { + // Modern browsers with 3D support, e.g. Webkit, IE10 + return 'translate3d'; + } else if (vendorPrefix + 'Transform' in bodyStyle) { + // Browsers without 3D support, e.g. IE9 + return 'translate'; + } else { + // Browsers without translate() support, e.g. IE7-8 + return 'margin'; + } + }; + + /** + * Helpers + */ + + function clamp(n, min, max) { + if (n < min) return min; + if (n > max) return max; + return n; + } + + /** + * (Internal) converts a percentage (`0..1`) to a bar translateX + * percentage (`-100%..0%`). + */ + + function toBarPerc(n) { + return (-1 + n) * 100; + } + + + /** + * (Internal) returns the correct CSS for changing the bar's + * position given an n percentage, and speed and ease from Settings + */ + + function barPositionCSS(n, speed, ease) { + var barCSS; + + if (Settings.positionUsing === 'translate3d') { + barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' }; + } else if (Settings.positionUsing === 'translate') { + barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' }; + } else { + barCSS = { 'margin-left': toBarPerc(n)+'%' }; + } + + barCSS.transition = 'all '+speed+'ms '+ease; + + return barCSS; + } + + /** + * (Internal) Queues a function to be executed. + */ + + var queue = (function() { + var pending = []; + + function next() { + var fn = pending.shift(); + if (fn) { + fn(next); + } + } + + return function(fn) { + pending.push(fn); + if (pending.length == 1) next(); + }; + })(); + + /** + * (Internal) Applies css properties to an element, similar to the jQuery + * css method. + * + * While this helper does assist with vendor prefixed property names, it + * does not perform any manipulation of values prior to setting styles. + */ + + var css = (function() { + var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ], + cssProps = {}; + + function camelCase(string) { + return string.replace(/^-ms-/, 'ms-').replace(/-([\da-z])/gi, function(match, letter) { + return letter.toUpperCase(); + }); + } + + function getVendorProp(name) { + var style = document.body.style; + if (name in style) return name; + + var i = cssPrefixes.length, + capName = name.charAt(0).toUpperCase() + name.slice(1), + vendorName; + while (i--) { + vendorName = cssPrefixes[i] + capName; + if (vendorName in style) return vendorName; + } + + return name; + } + + function getStyleProp(name) { + name = camelCase(name); + return cssProps[name] || (cssProps[name] = getVendorProp(name)); + } + + function applyCss(element, prop, value) { + prop = getStyleProp(prop); + element.style[prop] = value; + } + + return function(element, properties) { + var args = arguments, + prop, + value; + + if (args.length == 2) { + for (prop in properties) { + value = properties[prop]; + if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value); + } + } else { + applyCss(element, args[1], args[2]); + } + } + })(); + + /** + * (Internal) Determines if an element or space separated list of class names contains a class name. + */ + + function hasClass(element, name) { + var list = typeof element == 'string' ? element : classList(element); + return list.indexOf(' ' + name + ' ') >= 0; + } + + /** + * (Internal) Adds a class to an element. + */ + + function addClass(element, name) { + var oldList = classList(element), + newList = oldList + name; + + if (hasClass(oldList, name)) return; + + // Trim the opening space. + element.className = newList.substring(1); + } + + /** + * (Internal) Removes a class from an element. + */ + + function removeClass(element, name) { + var oldList = classList(element), + newList; + + if (!hasClass(element, name)) return; + + // Replace the class name. + newList = oldList.replace(' ' + name + ' ', ' '); + + // Trim the opening and closing spaces. + element.className = newList.substring(1, newList.length - 1); + } + + /** + * (Internal) Gets a space separated list of the class names on the element. + * The list is wrapped with a single space on each end to facilitate finding + * matches within the list. + */ + + function classList(element) { + return (' ' + (element.className || '') + ' ').replace(/\s+/gi, ' '); + } + + /** + * (Internal) Removes an element from the DOM. + */ + + function removeElement(element) { + element && element.parentNode && element.parentNode.removeChild(element); + } + + return NProgress; +}); + + + +/***/ }), + +/***/ 8426: +/***/ ((module, exports) => { + +/** + * @param {string} string The string to parse + * @returns {Array<number>} Returns an energetic array. + */ +function parsePart(string) { + let res = []; + let m; + + for (let str of string.split(",").map((str) => str.trim())) { + // just a number + if (/^-?\d+$/.test(str)) { + res.push(parseInt(str, 10)); + } else if ( + (m = str.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)) + ) { + // 1-5 or 1..5 (equivalent) or 1...5 (doesn't include 5) + let [_, lhs, sep, rhs] = m; + + if (lhs && rhs) { + lhs = parseInt(lhs); + rhs = parseInt(rhs); + const incr = lhs < rhs ? 1 : -1; + + // Make it inclusive by moving the right 'stop-point' away by one. + if (sep === "-" || sep === ".." || sep === "\u2025") rhs += incr; + + for (let i = lhs; i !== rhs; i += incr) res.push(i); + } + } + } + + return res; +} + +exports["default"] = parsePart; +module.exports = parsePart; + + +/***/ }), + +/***/ 5302: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var isarray = __webpack_require__(4634) + +/** + * Expose `pathToRegexp`. + */ +module.exports = pathToRegexp +module.exports.parse = parse +module.exports.compile = compile +module.exports.tokensToFunction = tokensToFunction +module.exports.tokensToRegExp = tokensToRegExp + +/** + * The main path matching regexp utility. + * + * @type {RegExp} + */ +var PATH_REGEXP = new RegExp([ + // Match escaped characters that would otherwise appear in future matches. + // This allows the user to escape special characters that won't transform. + '(\\\\.)', + // Match Express-style parameters and un-named parameters with a prefix + // and optional suffixes. Matches appear as: + // + // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined] + // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] + // "/*" => ["/", undefined, undefined, undefined, undefined, "*"] + '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))' +].join('|'), 'g') + +/** + * Parse a string for the raw tokens. + * + * @param {string} str + * @param {Object=} options + * @return {!Array} + */ +function parse (str, options) { + var tokens = [] + var key = 0 + var index = 0 + var path = '' + var defaultDelimiter = options && options.delimiter || '/' + var res + + while ((res = PATH_REGEXP.exec(str)) != null) { + var m = res[0] + var escaped = res[1] + var offset = res.index + path += str.slice(index, offset) + index = offset + m.length + + // Ignore already escaped sequences. + if (escaped) { + path += escaped[1] + continue + } + + var next = str[index] + var prefix = res[2] + var name = res[3] + var capture = res[4] + var group = res[5] + var modifier = res[6] + var asterisk = res[7] + + // Push the current path onto the tokens. + if (path) { + tokens.push(path) + path = '' + } + + var partial = prefix != null && next != null && next !== prefix + var repeat = modifier === '+' || modifier === '*' + var optional = modifier === '?' || modifier === '*' + var delimiter = prefix || defaultDelimiter + var pattern = capture || group + var prevText = prefix || (typeof tokens[tokens.length - 1] === 'string' ? tokens[tokens.length - 1] : '') + + tokens.push({ + name: name || key++, + prefix: prefix || '', + delimiter: delimiter, + optional: optional, + repeat: repeat, + partial: partial, + asterisk: !!asterisk, + pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : restrictBacktrack(delimiter, prevText)) + }) + } + + // Match any characters still remaining. + if (index < str.length) { + path += str.substr(index) + } + + // If the path exists, push it onto the end. + if (path) { + tokens.push(path) + } + + return tokens +} + +function restrictBacktrack(delimiter, prevText) { + if (!prevText || prevText.indexOf(delimiter) > -1) { + return '[^' + escapeString(delimiter) + ']+?' + } + + return escapeString(prevText) + '|(?:(?!' + escapeString(prevText) + ')[^' + escapeString(delimiter) + '])+?' +} + +/** + * Compile a string to a template function for the path. + * + * @param {string} str + * @param {Object=} options + * @return {!function(Object=, Object=)} + */ +function compile (str, options) { + return tokensToFunction(parse(str, options), options) +} + +/** + * Prettier encoding of URI path segments. + * + * @param {string} + * @return {string} + */ +function encodeURIComponentPretty (str) { + return encodeURI(str).replace(/[\/?#]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) +} + +/** + * Encode the asterisk parameter. Similar to `pretty`, but allows slashes. + * + * @param {string} + * @return {string} + */ +function encodeAsterisk (str) { + return encodeURI(str).replace(/[?#]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) +} + +/** + * Expose a method for transforming tokens into the path function. + */ +function tokensToFunction (tokens, options) { + // Compile all the tokens into regexps. + var matches = new Array(tokens.length) + + // Compile all the patterns before compilation. + for (var i = 0; i < tokens.length; i++) { + if (typeof tokens[i] === 'object') { + matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options)) + } + } + + return function (obj, opts) { + var path = '' + var data = obj || {} + var options = opts || {} + var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent + + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i] + + if (typeof token === 'string') { + path += token + + continue + } + + var value = data[token.name] + var segment + + if (value == null) { + if (token.optional) { + // Prepend partial segment prefixes. + if (token.partial) { + path += token.prefix + } + + continue + } else { + throw new TypeError('Expected "' + token.name + '" to be defined') + } + } + + if (isarray(value)) { + if (!token.repeat) { + throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`') + } + + if (value.length === 0) { + if (token.optional) { + continue + } else { + throw new TypeError('Expected "' + token.name + '" to not be empty') + } + } + + for (var j = 0; j < value.length; j++) { + segment = encode(value[j]) + + if (!matches[i].test(segment)) { + throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`') + } + + path += (j === 0 ? token.prefix : token.delimiter) + segment + } + + continue + } + + segment = token.asterisk ? encodeAsterisk(value) : encode(value) + + if (!matches[i].test(segment)) { + throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"') + } + + path += token.prefix + segment + } + + return path + } +} + +/** + * Escape a regular expression string. + * + * @param {string} str + * @return {string} + */ +function escapeString (str) { + return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1') +} + +/** + * Escape the capturing group by escaping special characters and meaning. + * + * @param {string} group + * @return {string} + */ +function escapeGroup (group) { + return group.replace(/([=!:$\/()])/g, '\\$1') +} + +/** + * Attach the keys as a property of the regexp. + * + * @param {!RegExp} re + * @param {Array} keys + * @return {!RegExp} + */ +function attachKeys (re, keys) { + re.keys = keys + return re +} + +/** + * Get the flags for a regexp from the options. + * + * @param {Object} options + * @return {string} + */ +function flags (options) { + return options && options.sensitive ? '' : 'i' +} + +/** + * Pull out keys from a regexp. + * + * @param {!RegExp} path + * @param {!Array} keys + * @return {!RegExp} + */ +function regexpToRegexp (path, keys) { + // Use a negative lookahead to match only capturing groups. + var groups = path.source.match(/\((?!\?)/g) + + if (groups) { + for (var i = 0; i < groups.length; i++) { + keys.push({ + name: i, + prefix: null, + delimiter: null, + optional: false, + repeat: false, + partial: false, + asterisk: false, + pattern: null + }) + } + } + + return attachKeys(path, keys) +} + +/** + * Transform an array into a regexp. + * + * @param {!Array} path + * @param {Array} keys + * @param {!Object} options + * @return {!RegExp} + */ +function arrayToRegexp (path, keys, options) { + var parts = [] + + for (var i = 0; i < path.length; i++) { + parts.push(pathToRegexp(path[i], keys, options).source) + } + + var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)) + + return attachKeys(regexp, keys) +} + +/** + * Create a path regexp from string input. + * + * @param {string} path + * @param {!Array} keys + * @param {!Object} options + * @return {!RegExp} + */ +function stringToRegexp (path, keys, options) { + return tokensToRegExp(parse(path, options), keys, options) +} + +/** + * Expose a function for taking tokens and returning a RegExp. + * + * @param {!Array} tokens + * @param {(Array|Object)=} keys + * @param {Object=} options + * @return {!RegExp} + */ +function tokensToRegExp (tokens, keys, options) { + if (!isarray(keys)) { + options = /** @type {!Object} */ (keys || options) + keys = [] + } + + options = options || {} + + var strict = options.strict + var end = options.end !== false + var route = '' + + // Iterate over the tokens and create our regexp string. + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i] + + if (typeof token === 'string') { + route += escapeString(token) + } else { + var prefix = escapeString(token.prefix) + var capture = '(?:' + token.pattern + ')' + + keys.push(token) + + if (token.repeat) { + capture += '(?:' + prefix + capture + ')*' + } + + if (token.optional) { + if (!token.partial) { + capture = '(?:' + prefix + '(' + capture + '))?' + } else { + capture = prefix + '(' + capture + ')?' + } + } else { + capture = prefix + '(' + capture + ')' + } + + route += capture + } + } + + var delimiter = escapeString(options.delimiter || '/') + var endsWithDelimiter = route.slice(-delimiter.length) === delimiter + + // In non-strict mode we allow a slash at the end of match. If the path to + // match already ends with a slash, we remove it for consistency. The slash + // is valid at the end of a path match, not in the middle. This is important + // in non-ending mode, where "/test/" shouldn't match "/test//route". + if (!strict) { + route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?' + } + + if (end) { + route += '$' + } else { + // In non-ending mode, we need the capturing groups to match as much as + // possible by using a positive lookahead to the end or next path segment. + route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)' + } + + return attachKeys(new RegExp('^' + route, flags(options)), keys) +} + +/** + * Normalize the given path string, returning a regular expression. + * + * An empty array can be passed in for the keys, which will hold the + * placeholder key descriptions. For example, using `/user/:id`, `keys` will + * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`. + * + * @param {(string|RegExp|Array)} path + * @param {(Array|Object)=} keys + * @param {Object=} options + * @return {!RegExp} + */ +function pathToRegexp (path, keys, options) { + if (!isarray(keys)) { + options = /** @type {!Object} */ (keys || options) + keys = [] + } + + options = options || {} + + if (path instanceof RegExp) { + return regexpToRegexp(path, /** @type {!Array} */ (keys)) + } + + if (isarray(path)) { + return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options) + } + + return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options) +} + + +/***/ }), + +/***/ 6969: +/***/ ((module) => { + +var components = {"core":{"meta":{"path":"components/prism-core.js","option":"mandatory"},"core":"Core"},"themes":{"meta":{"path":"themes/{id}.css","link":"index.html?theme={id}","exclusive":true},"prism":{"title":"Default","option":"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{"title":"Okaidia","owner":"ocodia"},"prism-twilight":{"title":"Twilight","owner":"remybach"},"prism-coy":{"title":"Coy","owner":"tshedor"},"prism-solarizedlight":{"title":"Solarized Light","owner":"hectormatos2011 "},"prism-tomorrow":{"title":"Tomorrow Night","owner":"Rosey"}},"languages":{"meta":{"path":"components/prism-{id}","noCSS":true,"examplesPath":"examples/prism-{id}","addCheckAll":true},"markup":{"title":"Markup","alias":["html","xml","svg","mathml","ssml","atom","rss"],"aliasTitles":{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","ssml":"SSML","atom":"Atom","rss":"RSS"},"option":"default"},"css":{"title":"CSS","option":"default","modify":"markup"},"clike":{"title":"C-like","option":"default"},"javascript":{"title":"JavaScript","require":"clike","modify":"markup","optional":"regex","alias":"js","option":"default"},"abap":{"title":"ABAP","owner":"dellagustin"},"abnf":{"title":"ABNF","owner":"RunDevelopment"},"actionscript":{"title":"ActionScript","require":"javascript","modify":"markup","owner":"Golmote"},"ada":{"title":"Ada","owner":"Lucretia"},"agda":{"title":"Agda","owner":"xy-ren"},"al":{"title":"AL","owner":"RunDevelopment"},"antlr4":{"title":"ANTLR4","alias":"g4","owner":"RunDevelopment"},"apacheconf":{"title":"Apache Configuration","owner":"GuiTeK"},"apex":{"title":"Apex","require":["clike","sql"],"owner":"RunDevelopment"},"apl":{"title":"APL","owner":"ngn"},"applescript":{"title":"AppleScript","owner":"Golmote"},"aql":{"title":"AQL","owner":"RunDevelopment"},"arduino":{"title":"Arduino","require":"cpp","alias":"ino","owner":"dkern"},"arff":{"title":"ARFF","owner":"Golmote"},"armasm":{"title":"ARM Assembly","alias":"arm-asm","owner":"RunDevelopment"},"arturo":{"title":"Arturo","alias":"art","optional":["bash","css","javascript","markup","markdown","sql"],"owner":"drkameleon"},"asciidoc":{"alias":"adoc","title":"AsciiDoc","owner":"Golmote"},"aspnet":{"title":"ASP.NET (C#)","require":["markup","csharp"],"owner":"nauzilus"},"asm6502":{"title":"6502 Assembly","owner":"kzurawel"},"asmatmel":{"title":"Atmel AVR Assembly","owner":"cerkit"},"autohotkey":{"title":"AutoHotkey","owner":"aviaryan"},"autoit":{"title":"AutoIt","owner":"Golmote"},"avisynth":{"title":"AviSynth","alias":"avs","owner":"Zinfidel"},"avro-idl":{"title":"Avro IDL","alias":"avdl","owner":"RunDevelopment"},"awk":{"title":"AWK","alias":"gawk","aliasTitles":{"gawk":"GAWK"},"owner":"RunDevelopment"},"bash":{"title":"Bash","alias":["sh","shell"],"aliasTitles":{"sh":"Shell","shell":"Shell"},"owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","owner":"Golmote"},"bbcode":{"title":"BBcode","alias":"shortcode","aliasTitles":{"shortcode":"Shortcode"},"owner":"RunDevelopment"},"bbj":{"title":"BBj","owner":"hyyan"},"bicep":{"title":"Bicep","owner":"johnnyreilly"},"birb":{"title":"Birb","require":"clike","owner":"Calamity210"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"bnf":{"title":"BNF","alias":"rbnf","aliasTitles":{"rbnf":"RBNF"},"owner":"RunDevelopment"},"bqn":{"title":"BQN","owner":"yewscion"},"brainfuck":{"title":"Brainfuck","owner":"Golmote"},"brightscript":{"title":"BrightScript","owner":"RunDevelopment"},"bro":{"title":"Bro","owner":"wayward710"},"bsl":{"title":"BSL (1C:Enterprise)","alias":"oscript","aliasTitles":{"oscript":"OneScript"},"owner":"Diversus23"},"c":{"title":"C","require":"clike","owner":"zeitgeist87"},"csharp":{"title":"C#","require":"clike","alias":["cs","dotnet"],"owner":"mvalipour"},"cpp":{"title":"C++","require":"c","owner":"zeitgeist87"},"cfscript":{"title":"CFScript","require":"clike","alias":"cfc","owner":"mjclemente"},"chaiscript":{"title":"ChaiScript","require":["clike","cpp"],"owner":"RunDevelopment"},"cil":{"title":"CIL","owner":"sbrl"},"cilkc":{"title":"Cilk/C","require":"c","alias":"cilk-c","owner":"OpenCilk"},"cilkcpp":{"title":"Cilk/C++","require":"cpp","alias":["cilk-cpp","cilk"],"owner":"OpenCilk"},"clojure":{"title":"Clojure","owner":"troglotit"},"cmake":{"title":"CMake","owner":"mjrogozinski"},"cobol":{"title":"COBOL","owner":"RunDevelopment"},"coffeescript":{"title":"CoffeeScript","require":"javascript","alias":"coffee","owner":"R-osey"},"concurnas":{"title":"Concurnas","alias":"conc","owner":"jasontatton"},"csp":{"title":"Content-Security-Policy","owner":"ScottHelme"},"cooklang":{"title":"Cooklang","owner":"ahue"},"coq":{"title":"Coq","owner":"RunDevelopment"},"crystal":{"title":"Crystal","require":"ruby","owner":"MakeNowJust"},"css-extras":{"title":"CSS Extras","require":"css","modify":"css","owner":"milesj"},"csv":{"title":"CSV","owner":"RunDevelopment"},"cue":{"title":"CUE","owner":"RunDevelopment"},"cypher":{"title":"Cypher","owner":"RunDevelopment"},"d":{"title":"D","require":"clike","owner":"Golmote"},"dart":{"title":"Dart","require":"clike","owner":"Golmote"},"dataweave":{"title":"DataWeave","owner":"machaval"},"dax":{"title":"DAX","owner":"peterbud"},"dhall":{"title":"Dhall","owner":"RunDevelopment"},"diff":{"title":"Diff","owner":"uranusjr"},"django":{"title":"Django/Jinja2","require":"markup-templating","alias":"jinja2","owner":"romanvm"},"dns-zone-file":{"title":"DNS zone file","owner":"RunDevelopment","alias":"dns-zone"},"docker":{"title":"Docker","alias":"dockerfile","owner":"JustinBeckwith"},"dot":{"title":"DOT (Graphviz)","alias":"gv","optional":"markup","owner":"RunDevelopment"},"ebnf":{"title":"EBNF","owner":"RunDevelopment"},"editorconfig":{"title":"EditorConfig","owner":"osipxd"},"eiffel":{"title":"Eiffel","owner":"Conaclos"},"ejs":{"title":"EJS","require":["javascript","markup-templating"],"owner":"RunDevelopment","alias":"eta","aliasTitles":{"eta":"Eta"}},"elixir":{"title":"Elixir","owner":"Golmote"},"elm":{"title":"Elm","owner":"zwilias"},"etlua":{"title":"Embedded Lua templating","require":["lua","markup-templating"],"owner":"RunDevelopment"},"erb":{"title":"ERB","require":["ruby","markup-templating"],"owner":"Golmote"},"erlang":{"title":"Erlang","owner":"Golmote"},"excel-formula":{"title":"Excel Formula","alias":["xlsx","xls"],"owner":"RunDevelopment"},"fsharp":{"title":"F#","require":"clike","owner":"simonreynolds7"},"factor":{"title":"Factor","owner":"catb0t"},"false":{"title":"False","owner":"edukisto"},"firestore-security-rules":{"title":"Firestore security rules","require":"clike","owner":"RunDevelopment"},"flow":{"title":"Flow","require":"javascript","owner":"Golmote"},"fortran":{"title":"Fortran","owner":"Golmote"},"ftl":{"title":"FreeMarker Template Language","require":"markup-templating","owner":"RunDevelopment"},"gml":{"title":"GameMaker Language","alias":"gamemakerlanguage","require":"clike","owner":"LiarOnce"},"gap":{"title":"GAP (CAS)","owner":"RunDevelopment"},"gcode":{"title":"G-code","owner":"RunDevelopment"},"gdscript":{"title":"GDScript","owner":"RunDevelopment"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gettext":{"title":"gettext","alias":"po","owner":"RunDevelopment"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"c","owner":"Golmote"},"gn":{"title":"GN","alias":"gni","owner":"RunDevelopment"},"linker-script":{"title":"GNU Linker Script","alias":"ld","owner":"RunDevelopment"},"go":{"title":"Go","require":"clike","owner":"arnehormann"},"go-module":{"title":"Go module","alias":"go-mod","owner":"RunDevelopment"},"gradle":{"title":"Gradle","require":"clike","owner":"zeabdelkhalek-badido18"},"graphql":{"title":"GraphQL","optional":"markdown","owner":"Golmote"},"groovy":{"title":"Groovy","require":"clike","owner":"robfletcher"},"haml":{"title":"Haml","require":"ruby","optional":["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],"owner":"Golmote"},"handlebars":{"title":"Handlebars","require":"markup-templating","alias":["hbs","mustache"],"aliasTitles":{"mustache":"Mustache"},"owner":"Golmote"},"haskell":{"title":"Haskell","alias":"hs","owner":"bholst"},"haxe":{"title":"Haxe","require":"clike","optional":"regex","owner":"Golmote"},"hcl":{"title":"HCL","owner":"outsideris"},"hlsl":{"title":"HLSL","require":"c","owner":"RunDevelopment"},"hoon":{"title":"Hoon","owner":"matildepark"},"http":{"title":"HTTP","optional":["csp","css","hpkp","hsts","javascript","json","markup","uri"],"owner":"danielgtaylor"},"hpkp":{"title":"HTTP Public-Key-Pins","owner":"ScottHelme"},"hsts":{"title":"HTTP Strict-Transport-Security","owner":"ScottHelme"},"ichigojam":{"title":"IchigoJam","owner":"BlueCocoa"},"icon":{"title":"Icon","owner":"Golmote"},"icu-message-format":{"title":"ICU Message Format","owner":"RunDevelopment"},"idris":{"title":"Idris","alias":"idr","owner":"KeenS","require":"haskell"},"ignore":{"title":".ignore","owner":"osipxd","alias":["gitignore","hgignore","npmignore"],"aliasTitles":{"gitignore":".gitignore","hgignore":".hgignore","npmignore":".npmignore"}},"inform7":{"title":"Inform 7","owner":"Golmote"},"ini":{"title":"Ini","owner":"aviaryan"},"io":{"title":"Io","owner":"AlesTsurko"},"j":{"title":"J","owner":"Golmote"},"java":{"title":"Java","require":"clike","owner":"sherblot"},"javadoc":{"title":"JavaDoc","require":["markup","java","javadoclike"],"modify":"java","optional":"scala","owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","modify":["java","javascript","php"],"owner":"RunDevelopment"},"javastacktrace":{"title":"Java stack trace","owner":"RunDevelopment"},"jexl":{"title":"Jexl","owner":"czosel"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jq":{"title":"JQ","owner":"RunDevelopment"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike","typescript"],"modify":"javascript","optional":["actionscript","coffeescript"],"owner":"RunDevelopment"},"js-extras":{"title":"JS Extras","require":"javascript","modify":"javascript","optional":["actionscript","coffeescript","flow","n4js","typescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","alias":"webmanifest","aliasTitles":{"webmanifest":"Web App Manifest"},"owner":"CupOfTea696"},"json5":{"title":"JSON5","require":"json","owner":"RunDevelopment"},"jsonp":{"title":"JSONP","require":"json","owner":"RunDevelopment"},"jsstacktrace":{"title":"JS stack trace","owner":"sbrl"},"js-templates":{"title":"JS Templates","require":"javascript","modify":"javascript","optional":["css","css-extras","graphql","markdown","markup","sql"],"owner":"RunDevelopment"},"julia":{"title":"Julia","owner":"cdagnino"},"keepalived":{"title":"Keepalived Configure","owner":"dev-itsheng"},"keyman":{"title":"Keyman","owner":"mcdurdin"},"kotlin":{"title":"Kotlin","alias":["kt","kts"],"aliasTitles":{"kts":"Kotlin Script"},"require":"clike","owner":"Golmote"},"kumir":{"title":"KuMir (КуМир)","alias":"kum","owner":"edukisto"},"kusto":{"title":"Kusto","owner":"RunDevelopment"},"latex":{"title":"LaTeX","alias":["tex","context"],"aliasTitles":{"tex":"TeX","context":"ConTeXt"},"owner":"japborst"},"latte":{"title":"Latte","require":["clike","markup-templating","php"],"owner":"nette"},"less":{"title":"Less","require":"css","optional":"css-extras","owner":"Golmote"},"lilypond":{"title":"LilyPond","require":"scheme","alias":"ly","owner":"RunDevelopment"},"liquid":{"title":"Liquid","require":"markup-templating","owner":"cinhtau"},"lisp":{"title":"Lisp","alias":["emacs","elisp","emacs-lisp"],"owner":"JuanCaicedo"},"livescript":{"title":"LiveScript","owner":"Golmote"},"llvm":{"title":"LLVM IR","owner":"porglezomp"},"log":{"title":"Log file","optional":"javastacktrace","owner":"RunDevelopment"},"lolcode":{"title":"LOLCODE","owner":"Golmote"},"lua":{"title":"Lua","owner":"Golmote"},"magma":{"title":"Magma (CAS)","owner":"RunDevelopment"},"makefile":{"title":"Makefile","owner":"Golmote"},"markdown":{"title":"Markdown","require":"markup","optional":"yaml","alias":"md","owner":"Golmote"},"markup-templating":{"title":"Markup templating","require":"markup","owner":"Golmote"},"mata":{"title":"Mata","owner":"RunDevelopment"},"matlab":{"title":"MATLAB","owner":"Golmote"},"maxscript":{"title":"MAXScript","owner":"RunDevelopment"},"mel":{"title":"MEL","owner":"Golmote"},"mermaid":{"title":"Mermaid","owner":"RunDevelopment"},"metafont":{"title":"METAFONT","owner":"LaeriExNihilo"},"mizar":{"title":"Mizar","owner":"Golmote"},"mongodb":{"title":"MongoDB","owner":"airs0urce","require":"javascript"},"monkey":{"title":"Monkey","owner":"Golmote"},"moonscript":{"title":"MoonScript","alias":"moon","owner":"RunDevelopment"},"n1ql":{"title":"N1QL","owner":"TMWilds"},"n4js":{"title":"N4JS","require":"javascript","optional":"jsdoc","alias":"n4jsd","owner":"bsmith-n4"},"nand2tetris-hdl":{"title":"Nand To Tetris HDL","owner":"stephanmax"},"naniscript":{"title":"Naninovel Script","owner":"Elringus","alias":"nani"},"nasm":{"title":"NASM","owner":"rbmj"},"neon":{"title":"NEON","owner":"nette"},"nevod":{"title":"Nevod","owner":"nezaboodka"},"nginx":{"title":"nginx","owner":"volado"},"nim":{"title":"Nim","owner":"Golmote"},"nix":{"title":"Nix","owner":"Golmote"},"nsis":{"title":"NSIS","owner":"idleberg"},"objectivec":{"title":"Objective-C","require":"c","alias":"objc","owner":"uranusjr"},"ocaml":{"title":"OCaml","owner":"Golmote"},"odin":{"title":"Odin","owner":"edukisto"},"opencl":{"title":"OpenCL","require":"c","modify":["c","cpp"],"owner":"Milania1"},"openqasm":{"title":"OpenQasm","alias":"qasm","owner":"RunDevelopment"},"oz":{"title":"Oz","owner":"Golmote"},"parigp":{"title":"PARI/GP","owner":"Golmote"},"parser":{"title":"Parser","require":"markup","owner":"Golmote"},"pascal":{"title":"Pascal","alias":"objectpascal","aliasTitles":{"objectpascal":"Object Pascal"},"owner":"Golmote"},"pascaligo":{"title":"Pascaligo","owner":"DefinitelyNotAGoat"},"psl":{"title":"PATROL Scripting Language","owner":"bertysentry"},"pcaxis":{"title":"PC-Axis","alias":"px","owner":"RunDevelopment"},"peoplecode":{"title":"PeopleCode","alias":"pcode","owner":"RunDevelopment"},"perl":{"title":"Perl","owner":"Golmote"},"php":{"title":"PHP","require":"markup-templating","owner":"milesj"},"phpdoc":{"title":"PHPDoc","require":["php","javadoclike"],"modify":"php","owner":"RunDevelopment"},"php-extras":{"title":"PHP Extras","require":"php","modify":"php","owner":"milesj"},"plant-uml":{"title":"PlantUML","alias":"plantuml","owner":"RunDevelopment"},"plsql":{"title":"PL/SQL","require":"sql","owner":"Golmote"},"powerquery":{"title":"PowerQuery","alias":["pq","mscript"],"owner":"peterbud"},"powershell":{"title":"PowerShell","owner":"nauzilus"},"processing":{"title":"Processing","require":"clike","owner":"Golmote"},"prolog":{"title":"Prolog","owner":"Golmote"},"promql":{"title":"PromQL","owner":"arendjr"},"properties":{"title":".properties","owner":"Golmote"},"protobuf":{"title":"Protocol Buffers","require":"clike","owner":"just-boris"},"pug":{"title":"Pug","require":["markup","javascript"],"optional":["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],"owner":"Golmote"},"puppet":{"title":"Puppet","owner":"Golmote"},"pure":{"title":"Pure","optional":["c","cpp","fortran"],"owner":"Golmote"},"purebasic":{"title":"PureBasic","require":"clike","alias":"pbfasm","owner":"HeX0R101"},"purescript":{"title":"PureScript","require":"haskell","alias":"purs","owner":"sriharshachilakapati"},"python":{"title":"Python","alias":"py","owner":"multipetros"},"qsharp":{"title":"Q#","require":"clike","alias":"qs","owner":"fedonman"},"q":{"title":"Q (kdb+ database)","owner":"Golmote"},"qml":{"title":"QML","require":"javascript","owner":"RunDevelopment"},"qore":{"title":"Qore","require":"clike","owner":"temnroegg"},"r":{"title":"R","owner":"Golmote"},"racket":{"title":"Racket","require":"scheme","alias":"rkt","owner":"RunDevelopment"},"cshtml":{"title":"Razor C#","alias":"razor","require":["markup","csharp"],"optional":["css","css-extras","javascript","js-extras"],"owner":"RunDevelopment"},"jsx":{"title":"React JSX","require":["markup","javascript"],"optional":["jsdoc","js-extras","js-templates"],"owner":"vkbansal"},"tsx":{"title":"React TSX","require":["jsx","typescript"]},"reason":{"title":"Reason","require":"clike","owner":"Golmote"},"regex":{"title":"Regex","owner":"RunDevelopment"},"rego":{"title":"Rego","owner":"JordanSh"},"renpy":{"title":"Ren'py","alias":"rpy","owner":"HyuchiaDiego"},"rescript":{"title":"ReScript","alias":"res","owner":"vmarcosp"},"rest":{"title":"reST (reStructuredText)","owner":"Golmote"},"rip":{"title":"Rip","owner":"ravinggenius"},"roboconf":{"title":"Roboconf","owner":"Golmote"},"robotframework":{"title":"Robot Framework","alias":"robot","owner":"RunDevelopment"},"ruby":{"title":"Ruby","require":"clike","alias":"rb","owner":"samflores"},"rust":{"title":"Rust","owner":"Golmote"},"sas":{"title":"SAS","optional":["groovy","lua","sql"],"owner":"Golmote"},"sass":{"title":"Sass (Sass)","require":"css","optional":"css-extras","owner":"Golmote"},"scss":{"title":"Sass (SCSS)","require":"css","optional":"css-extras","owner":"MoOx"},"scala":{"title":"Scala","require":"java","owner":"jozic"},"scheme":{"title":"Scheme","owner":"bacchus123"},"shell-session":{"title":"Shell session","require":"bash","alias":["sh-session","shellsession"],"owner":"RunDevelopment"},"smali":{"title":"Smali","owner":"RunDevelopment"},"smalltalk":{"title":"Smalltalk","owner":"Golmote"},"smarty":{"title":"Smarty","require":"markup-templating","optional":"php","owner":"Golmote"},"sml":{"title":"SML","alias":"smlnj","aliasTitles":{"smlnj":"SML/NJ"},"owner":"RunDevelopment"},"solidity":{"title":"Solidity (Ethereum)","alias":"sol","require":"clike","owner":"glachaud"},"solution-file":{"title":"Solution file","alias":"sln","owner":"RunDevelopment"},"soy":{"title":"Soy (Closure Template)","require":"markup-templating","owner":"Golmote"},"sparql":{"title":"SPARQL","require":"turtle","owner":"Triply-Dev","alias":"rq"},"splunk-spl":{"title":"Splunk SPL","owner":"RunDevelopment"},"sqf":{"title":"SQF: Status Quo Function (Arma 3)","require":"clike","owner":"RunDevelopment"},"sql":{"title":"SQL","owner":"multipetros"},"squirrel":{"title":"Squirrel","require":"clike","owner":"RunDevelopment"},"stan":{"title":"Stan","owner":"RunDevelopment"},"stata":{"title":"Stata Ado","require":["mata","java","python"],"owner":"RunDevelopment"},"iecst":{"title":"Structured Text (IEC 61131-3)","owner":"serhioromano"},"stylus":{"title":"Stylus","owner":"vkbansal"},"supercollider":{"title":"SuperCollider","alias":"sclang","owner":"RunDevelopment"},"swift":{"title":"Swift","owner":"chrischares"},"systemd":{"title":"Systemd configuration file","owner":"RunDevelopment"},"t4-templating":{"title":"T4 templating","owner":"RunDevelopment"},"t4-cs":{"title":"T4 Text Templates (C#)","require":["t4-templating","csharp"],"alias":"t4","owner":"RunDevelopment"},"t4-vb":{"title":"T4 Text Templates (VB)","require":["t4-templating","vbnet"],"owner":"RunDevelopment"},"tap":{"title":"TAP","owner":"isaacs","require":"yaml"},"tcl":{"title":"Tcl","owner":"PeterChaplin"},"tt2":{"title":"Template Toolkit 2","require":["clike","markup-templating"],"owner":"gflohr"},"textile":{"title":"Textile","require":"markup","optional":"css","owner":"Golmote"},"toml":{"title":"TOML","owner":"RunDevelopment"},"tremor":{"title":"Tremor","alias":["trickle","troy"],"owner":"darach","aliasTitles":{"trickle":"trickle","troy":"troy"}},"turtle":{"title":"Turtle","alias":"trig","aliasTitles":{"trig":"TriG"},"owner":"jakubklimek"},"twig":{"title":"Twig","require":"markup-templating","owner":"brandonkelly"},"typescript":{"title":"TypeScript","require":"javascript","optional":"js-templates","alias":"ts","owner":"vkbansal"},"typoscript":{"title":"TypoScript","alias":"tsconfig","aliasTitles":{"tsconfig":"TSConfig"},"owner":"dkern"},"unrealscript":{"title":"UnrealScript","alias":["uscript","uc"],"owner":"RunDevelopment"},"uorazor":{"title":"UO Razor Script","owner":"jaseowns"},"uri":{"title":"URI","alias":"url","aliasTitles":{"url":"URL"},"owner":"RunDevelopment"},"v":{"title":"V","require":"clike","owner":"taggon"},"vala":{"title":"Vala","require":"clike","optional":"regex","owner":"TemplarVolk"},"vbnet":{"title":"VB.Net","require":"basic","owner":"Bigsby"},"velocity":{"title":"Velocity","require":"markup","owner":"Golmote"},"verilog":{"title":"Verilog","owner":"a-rey"},"vhdl":{"title":"VHDL","owner":"a-rey"},"vim":{"title":"vim","owner":"westonganger"},"visual-basic":{"title":"Visual Basic","alias":["vb","vba"],"aliasTitles":{"vba":"VBA"},"owner":"Golmote"},"warpscript":{"title":"WarpScript","owner":"RunDevelopment"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"web-idl":{"title":"Web IDL","alias":"webidl","owner":"RunDevelopment"},"wgsl":{"title":"WGSL","owner":"Dr4gonthree"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"wolfram":{"title":"Wolfram language","alias":["mathematica","nb","wl"],"aliasTitles":{"mathematica":"Mathematica","nb":"Mathematica Notebook"},"owner":"msollami"},"wren":{"title":"Wren","owner":"clsource"},"xeora":{"title":"Xeora","require":"markup","alias":"xeoracube","aliasTitles":{"xeoracube":"XeoraCube"},"owner":"freakmaxi"},"xml-doc":{"title":"XML doc (.net)","require":"markup","modify":["csharp","fsharp","vbnet"],"owner":"RunDevelopment"},"xojo":{"title":"Xojo (REALbasic)","owner":"Golmote"},"xquery":{"title":"XQuery","require":"markup","owner":"Golmote"},"yaml":{"title":"YAML","alias":"yml","owner":"hason"},"yang":{"title":"YANG","owner":"RunDevelopment"},"zig":{"title":"Zig","owner":"RunDevelopment"}},"plugins":{"meta":{"path":"plugins/{id}/prism-{id}","link":"plugins/{id}/"},"line-highlight":{"title":"Line Highlight","description":"Highlights specific lines and/or line ranges."},"line-numbers":{"title":"Line Numbers","description":"Line number at the beginning of code lines.","owner":"kuba-kubula"},"show-invisibles":{"title":"Show Invisibles","description":"Show hidden characters such as tabs and line breaks.","optional":["autolinker","data-uri-highlight"]},"autolinker":{"title":"Autolinker","description":"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},"wpd":{"title":"WebPlatform Docs","description":"Makes tokens link to <a href=\"https://webplatform.github.io/docs/\">WebPlatform.org documentation</a>. The links open in a new tab."},"custom-class":{"title":"Custom Class","description":"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.","owner":"dvkndn","noCSS":true},"file-highlight":{"title":"File Highlight","description":"Fetch external files and highlight them with Prism. Used on the Prism website itself.","noCSS":true},"show-language":{"title":"Show Language","description":"Display the highlighted language in code blocks (inline code does not show the label).","owner":"nauzilus","noCSS":true,"require":"toolbar"},"jsonp-highlight":{"title":"JSONP Highlight","description":"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).","noCSS":true,"owner":"nauzilus"},"highlight-keywords":{"title":"Highlight Keywords","description":"Adds special CSS classes for each keyword for fine-grained highlighting.","owner":"vkbansal","noCSS":true},"remove-initial-line-feed":{"title":"Remove initial line feed","description":"Removes the initial line feed in code blocks.","owner":"Golmote","noCSS":true},"inline-color":{"title":"Inline color","description":"Adds a small inline preview for colors in style sheets.","require":"css-extras","owner":"RunDevelopment"},"previewers":{"title":"Previewers","description":"Previewers for angles, colors, gradients, easing and time.","require":"css-extras","owner":"Golmote"},"autoloader":{"title":"Autoloader","description":"Automatically loads the needed languages to highlight the code blocks.","owner":"Golmote","noCSS":true},"keep-markup":{"title":"Keep Markup","description":"Prevents custom markup from being dropped out during highlighting.","owner":"Golmote","optional":"normalize-whitespace","noCSS":true},"command-line":{"title":"Command Line","description":"Display a command line with a prompt and, optionally, the output/response from the commands.","owner":"chriswells0"},"unescaped-markup":{"title":"Unescaped Markup","description":"Write markup without having to escape anything."},"normalize-whitespace":{"title":"Normalize Whitespace","description":"Supports multiple operations to normalize whitespace in code blocks.","owner":"zeitgeist87","optional":"unescaped-markup","noCSS":true},"data-uri-highlight":{"title":"Data-URI Highlight","description":"Highlights data-URI contents.","owner":"Golmote","noCSS":true},"toolbar":{"title":"Toolbar","description":"Attach a toolbar for plugins to easily register buttons on the top of a code block.","owner":"mAAdhaTTah"},"copy-to-clipboard":{"title":"Copy to Clipboard Button","description":"Add a button that copies the code block to the clipboard when clicked.","owner":"mAAdhaTTah","require":"toolbar","noCSS":true},"download-button":{"title":"Download Button","description":"A button in the toolbar of a code block adding a convenient way to download a code file.","owner":"Golmote","require":"toolbar","noCSS":true},"match-braces":{"title":"Match braces","description":"Highlights matching braces.","owner":"RunDevelopment"},"diff-highlight":{"title":"Diff Highlight","description":"Highlights the code inside diff blocks.","owner":"RunDevelopment","require":"diff"},"filter-highlight-all":{"title":"Filter highlightAll","description":"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.","owner":"RunDevelopment","noCSS":true},"treeview":{"title":"Treeview","description":"A language with special styles to highlight file system tree structures.","owner":"Golmote"}}}; +if ( true && module.exports) { module.exports = components; } + +/***/ }), + +/***/ 8722: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const components = __webpack_require__(6969); +const getLoader = __webpack_require__(8380); + + +/** + * The set of all languages which have been loaded using the below function. + * + * @type {Set<string>} + */ +const loadedLanguages = new Set(); + +/** + * Loads the given languages and adds them to the current Prism instance. + * + * If no languages are provided, __all__ Prism languages will be loaded. + * + * @param {string|string[]} [languages] + * @returns {void} + */ +function loadLanguages(languages) { + if (languages === undefined) { + languages = Object.keys(components.languages).filter(l => l != 'meta'); + } else if (!Array.isArray(languages)) { + languages = [languages]; + } + + // the user might have loaded languages via some other way or used `prism.js` which already includes some + // we don't need to validate the ids because `getLoader` will ignore invalid ones + const loaded = [...loadedLanguages, ...Object.keys(Prism.languages)]; + + getLoader(components, languages, loaded).load(lang => { + if (!(lang in components.languages)) { + if (!loadLanguages.silent) { + console.warn('Language does not exist: ' + lang); + } + return; + } + + const pathToLanguage = './prism-' + lang; + + // remove from require cache and from Prism + delete __webpack_require__.c[/*require.resolve*/(__webpack_require__(3157).resolve(pathToLanguage))]; + delete Prism.languages[lang]; + + __webpack_require__(3157)(pathToLanguage); + + loadedLanguages.add(lang); + }); +} + +/** + * Set this to `true` to prevent all warning messages `loadLanguages` logs. + */ +loadLanguages.silent = false; + +module.exports = loadLanguages; + + +/***/ }), + +/***/ 9700: +/***/ (() => { + +(function (Prism) { + + /** + * Returns the placeholder for the given language id and index. + * + * @param {string} language + * @param {string|number} index + * @returns {string} + */ + function getPlaceholder(language, index) { + return '___' + language.toUpperCase() + index + '___'; + } + + Object.defineProperties(Prism.languages['markup-templating'] = {}, { + buildPlaceholders: { + /** + * Tokenize all inline templating expressions matching `placeholderPattern`. + * + * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns + * `true` will be replaced. + * + * @param {object} env The environment of the `before-tokenize` hook. + * @param {string} language The language id. + * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders. + * @param {(match: string) => boolean} [replaceFilter] + */ + value: function (env, language, placeholderPattern, replaceFilter) { + if (env.language !== language) { + return; + } + + var tokenStack = env.tokenStack = []; + + env.code = env.code.replace(placeholderPattern, function (match) { + if (typeof replaceFilter === 'function' && !replaceFilter(match)) { + return match; + } + var i = tokenStack.length; + var placeholder; + + // Check for existing strings + while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) { + ++i; + } + + // Create a sparse array + tokenStack[i] = match; + + return placeholder; + }); + + // Switch the grammar to markup + env.grammar = Prism.languages.markup; + } + }, + tokenizePlaceholders: { + /** + * Replace placeholders with proper tokens after tokenizing. + * + * @param {object} env The environment of the `after-tokenize` hook. + * @param {string} language The language id. + */ + value: function (env, language) { + if (env.language !== language || !env.tokenStack) { + return; + } + + // Switch the grammar back + env.grammar = Prism.languages[language]; + + var j = 0; + var keys = Object.keys(env.tokenStack); + + function walkTokens(tokens) { + for (var i = 0; i < tokens.length; i++) { + // all placeholders are replaced already + if (j >= keys.length) { + break; + } + + var token = tokens[i]; + if (typeof token === 'string' || (token.content && typeof token.content === 'string')) { + var k = keys[j]; + var t = env.tokenStack[k]; + var s = typeof token === 'string' ? token : token.content; + var placeholder = getPlaceholder(language, k); + + var index = s.indexOf(placeholder); + if (index > -1) { + ++j; + + var before = s.substring(0, index); + var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t); + var after = s.substring(index + placeholder.length); + + var replacement = []; + if (before) { + replacement.push.apply(replacement, walkTokens([before])); + } + replacement.push(middle); + if (after) { + replacement.push.apply(replacement, walkTokens([after])); + } + + if (typeof token === 'string') { + tokens.splice.apply(tokens, [i, 1].concat(replacement)); + } else { + token.content = replacement; + } + } + } else if (token.content /* && typeof token.content !== 'string' */) { + walkTokens(token.content); + } + } + + return tokens; + } + + walkTokens(env.tokens); + } + } + }); + +}(Prism)); + + +/***/ }), + +/***/ 8692: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var map = { + "./": 8722 +}; + + +function webpackContext(req) { + var id = webpackContextResolve(req); + return __webpack_require__(id); +} +function webpackContextResolve(req) { + if(!__webpack_require__.o(map, req)) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; + } + return map[req]; +} +webpackContext.keys = function webpackContextKeys() { + return Object.keys(map); +}; +webpackContext.resolve = webpackContextResolve; +module.exports = webpackContext; +webpackContext.id = 8692; + +/***/ }), + +/***/ 3157: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var map = { + "./": 8722 +}; + + +function webpackContext(req) { + var id = webpackContextResolve(req); + return __webpack_require__(id); +} +function webpackContextResolve(req) { + if(!__webpack_require__.o(map, req)) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; + } + return map[req]; +} +webpackContext.keys = function webpackContextKeys() { + return Object.keys(map); +}; +webpackContext.resolve = webpackContextResolve; +module.exports = webpackContext; +webpackContext.id = 3157; + +/***/ }), + +/***/ 8380: +/***/ ((module) => { + +"use strict"; + + +/** + * @typedef {Object<string, ComponentCategory>} Components + * @typedef {Object<string, ComponentEntry | string>} ComponentCategory + * + * @typedef ComponentEntry + * @property {string} [title] The title of the component. + * @property {string} [owner] The GitHub user name of the owner. + * @property {boolean} [noCSS=false] Whether the component doesn't have style sheets which should also be loaded. + * @property {string | string[]} [alias] An optional list of aliases for the id of the component. + * @property {Object<string, string>} [aliasTitles] An optional map from an alias to its title. + * + * Aliases which are not in this map will the get title of the component. + * @property {string | string[]} [optional] + * @property {string | string[]} [require] + * @property {string | string[]} [modify] + */ + +var getLoader = (function () { + + /** + * A function which does absolutely nothing. + * + * @type {any} + */ + var noop = function () { }; + + /** + * Invokes the given callback for all elements of the given value. + * + * If the given value is an array, the callback will be invokes for all elements. If the given value is `null` or + * `undefined`, the callback will not be invoked. In all other cases, the callback will be invoked with the given + * value as parameter. + * + * @param {null | undefined | T | T[]} value + * @param {(value: T, index: number) => void} callbackFn + * @returns {void} + * @template T + */ + function forEach(value, callbackFn) { + if (Array.isArray(value)) { + value.forEach(callbackFn); + } else if (value != null) { + callbackFn(value, 0); + } + } + + /** + * Returns a new set for the given string array. + * + * @param {string[]} array + * @returns {StringSet} + * + * @typedef {Object<string, true>} StringSet + */ + function toSet(array) { + /** @type {StringSet} */ + var set = {}; + for (var i = 0, l = array.length; i < l; i++) { + set[array[i]] = true; + } + return set; + } + + /** + * Creates a map of every components id to its entry. + * + * @param {Components} components + * @returns {EntryMap} + * + * @typedef {{ readonly [id: string]: Readonly<ComponentEntry> | undefined }} EntryMap + */ + function createEntryMap(components) { + /** @type {Object<string, Readonly<ComponentEntry>>} */ + var map = {}; + + for (var categoryName in components) { + var category = components[categoryName]; + for (var id in category) { + if (id != 'meta') { + /** @type {ComponentEntry | string} */ + var entry = category[id]; + map[id] = typeof entry == 'string' ? { title: entry } : entry; + } + } + } + + return map; + } + + /** + * Creates a full dependencies map which includes all types of dependencies and their transitive dependencies. + * + * @param {EntryMap} entryMap + * @returns {DependencyResolver} + * + * @typedef {(id: string) => StringSet} DependencyResolver + */ + function createDependencyResolver(entryMap) { + /** @type {Object<string, StringSet>} */ + var map = {}; + var _stackArray = []; + + /** + * Adds the dependencies of the given component to the dependency map. + * + * @param {string} id + * @param {string[]} stack + */ + function addToMap(id, stack) { + if (id in map) { + return; + } + + stack.push(id); + + // check for circular dependencies + var firstIndex = stack.indexOf(id); + if (firstIndex < stack.length - 1) { + throw new Error('Circular dependency: ' + stack.slice(firstIndex).join(' -> ')); + } + + /** @type {StringSet} */ + var dependencies = {}; + + var entry = entryMap[id]; + if (entry) { + /** + * This will add the direct dependency and all of its transitive dependencies to the set of + * dependencies of `entry`. + * + * @param {string} depId + * @returns {void} + */ + function handleDirectDependency(depId) { + if (!(depId in entryMap)) { + throw new Error(id + ' depends on an unknown component ' + depId); + } + if (depId in dependencies) { + // if the given dependency is already in the set of deps, then so are its transitive deps + return; + } + + addToMap(depId, stack); + dependencies[depId] = true; + for (var transitiveDepId in map[depId]) { + dependencies[transitiveDepId] = true; + } + } + + forEach(entry.require, handleDirectDependency); + forEach(entry.optional, handleDirectDependency); + forEach(entry.modify, handleDirectDependency); + } + + map[id] = dependencies; + + stack.pop(); + } + + return function (id) { + var deps = map[id]; + if (!deps) { + addToMap(id, _stackArray); + deps = map[id]; + } + return deps; + }; + } + + /** + * Returns a function which resolves the aliases of its given id of alias. + * + * @param {EntryMap} entryMap + * @returns {(idOrAlias: string) => string} + */ + function createAliasResolver(entryMap) { + /** @type {Object<string, string> | undefined} */ + var map; + + return function (idOrAlias) { + if (idOrAlias in entryMap) { + return idOrAlias; + } else { + // only create the alias map if necessary + if (!map) { + map = {}; + + for (var id in entryMap) { + var entry = entryMap[id]; + forEach(entry && entry.alias, function (alias) { + if (alias in map) { + throw new Error(alias + ' cannot be alias for both ' + id + ' and ' + map[alias]); + } + if (alias in entryMap) { + throw new Error(alias + ' cannot be alias of ' + id + ' because it is a component.'); + } + map[alias] = id; + }); + } + } + return map[idOrAlias] || idOrAlias; + } + }; + } + + /** + * @typedef LoadChainer + * @property {(before: T, after: () => T) => T} series + * @property {(values: T[]) => T} parallel + * @template T + */ + + /** + * Creates an implicit DAG from the given components and dependencies and call the given `loadComponent` for each + * component in topological order. + * + * @param {DependencyResolver} dependencyResolver + * @param {StringSet} ids + * @param {(id: string) => T} loadComponent + * @param {LoadChainer<T>} [chainer] + * @returns {T} + * @template T + */ + function loadComponentsInOrder(dependencyResolver, ids, loadComponent, chainer) { + var series = chainer ? chainer.series : undefined; + var parallel = chainer ? chainer.parallel : noop; + + /** @type {Object<string, T>} */ + var cache = {}; + + /** + * A set of ids of nodes which are not depended upon by any other node in the graph. + * + * @type {StringSet} + */ + var ends = {}; + + /** + * Loads the given component and its dependencies or returns the cached value. + * + * @param {string} id + * @returns {T} + */ + function handleId(id) { + if (id in cache) { + return cache[id]; + } + + // assume that it's an end + // if it isn't, it will be removed later + ends[id] = true; + + // all dependencies of the component in the given ids + var dependsOn = []; + for (var depId in dependencyResolver(id)) { + if (depId in ids) { + dependsOn.push(depId); + } + } + + /** + * The value to be returned. + * + * @type {T} + */ + var value; + + if (dependsOn.length === 0) { + value = loadComponent(id); + } else { + var depsValue = parallel(dependsOn.map(function (depId) { + var value = handleId(depId); + // none of the dependencies can be ends + delete ends[depId]; + return value; + })); + if (series) { + // the chainer will be responsibly for calling the function calling loadComponent + value = series(depsValue, function () { return loadComponent(id); }); + } else { + // we don't have a chainer, so we call loadComponent ourselves + loadComponent(id); + } + } + + // cache and return + return cache[id] = value; + } + + for (var id in ids) { + handleId(id); + } + + /** @type {T[]} */ + var endValues = []; + for (var endId in ends) { + endValues.push(cache[endId]); + } + return parallel(endValues); + } + + /** + * Returns whether the given object has any keys. + * + * @param {object} obj + */ + function hasKeys(obj) { + for (var key in obj) { + return true; + } + return false; + } + + /** + * Returns an object which provides methods to get the ids of the components which have to be loaded (`getIds`) and + * a way to efficiently load them in synchronously and asynchronous contexts (`load`). + * + * The set of ids to be loaded is a superset of `load`. If some of these ids are in `loaded`, the corresponding + * components will have to reloaded. + * + * The ids in `load` and `loaded` may be in any order and can contain duplicates. + * + * @param {Components} components + * @param {string[]} load + * @param {string[]} [loaded=[]] A list of already loaded components. + * + * If a component is in this list, then all of its requirements will also be assumed to be in the list. + * @returns {Loader} + * + * @typedef Loader + * @property {() => string[]} getIds A function to get all ids of the components to load. + * + * The returned ids will be duplicate-free, alias-free and in load order. + * @property {LoadFunction} load A functional interface to load components. + * + * @typedef {<T> (loadComponent: (id: string) => T, chainer?: LoadChainer<T>) => T} LoadFunction + * A functional interface to load components. + * + * The `loadComponent` function will be called for every component in the order in which they have to be loaded. + * + * The `chainer` is useful for asynchronous loading and its `series` and `parallel` functions can be thought of as + * `Promise#then` and `Promise.all`. + * + * @example + * load(id => { loadComponent(id); }); // returns undefined + * + * await load( + * id => loadComponentAsync(id), // returns a Promise for each id + * { + * series: async (before, after) => { + * await before; + * await after(); + * }, + * parallel: async (values) => { + * await Promise.all(values); + * } + * } + * ); + */ + function getLoader(components, load, loaded) { + var entryMap = createEntryMap(components); + var resolveAlias = createAliasResolver(entryMap); + + load = load.map(resolveAlias); + loaded = (loaded || []).map(resolveAlias); + + var loadSet = toSet(load); + var loadedSet = toSet(loaded); + + // add requirements + + load.forEach(addRequirements); + function addRequirements(id) { + var entry = entryMap[id]; + forEach(entry && entry.require, function (reqId) { + if (!(reqId in loadedSet)) { + loadSet[reqId] = true; + addRequirements(reqId); + } + }); + } + + // add components to reload + + // A component x in `loaded` has to be reloaded if + // 1) a component in `load` modifies x. + // 2) x depends on a component in `load`. + // The above two condition have to be applied until nothing changes anymore. + + var dependencyResolver = createDependencyResolver(entryMap); + + /** @type {StringSet} */ + var loadAdditions = loadSet; + /** @type {StringSet} */ + var newIds; + while (hasKeys(loadAdditions)) { + newIds = {}; + + // condition 1) + for (var loadId in loadAdditions) { + var entry = entryMap[loadId]; + forEach(entry && entry.modify, function (modId) { + if (modId in loadedSet) { + newIds[modId] = true; + } + }); + } + + // condition 2) + for (var loadedId in loadedSet) { + if (!(loadedId in loadSet)) { + for (var depId in dependencyResolver(loadedId)) { + if (depId in loadSet) { + newIds[loadedId] = true; + break; + } + } + } + } + + loadAdditions = newIds; + for (var newId in loadAdditions) { + loadSet[newId] = true; + } + } + + /** @type {Loader} */ + var loader = { + getIds: function () { + var ids = []; + loader.load(function (id) { + ids.push(id); + }); + return ids; + }, + load: function (loadComponent, chainer) { + return loadComponentsInOrder(dependencyResolver, loadSet, loadComponent, chainer); + } + }; + + return loader; + } + + return getLoader; + +}()); + +if (true) { + module.exports = getLoader; +} + + +/***/ }), + +/***/ 2694: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactPropTypesSecret = __webpack_require__(6925); + +function emptyFunction() {} +function emptyFunctionWithReset() {} +emptyFunctionWithReset.resetWarningCache = emptyFunction; + +module.exports = function() { + function shim(props, propName, componentName, location, propFullName, secret) { + if (secret === ReactPropTypesSecret) { + // It is still safe when called from React. + return; + } + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use PropTypes.checkPropTypes() to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + }; + shim.isRequired = shim; + function getShim() { + return shim; + }; + // Important! + // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. + var ReactPropTypes = { + array: shim, + bigint: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, + + any: shim, + arrayOf: getShim, + element: shim, + elementType: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim, + + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction + }; + + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + + +/***/ }), + +/***/ 5556: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (false) { var throwOnDirectAccess, ReactIs; } else { + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = __webpack_require__(2694)(); +} + + +/***/ }), + +/***/ 6925: +/***/ ((module) => { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + + +/***/ }), + +/***/ 6711: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/** + * @license React + * react-dom-server-legacy.node.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var ea=__webpack_require__(6540),fa=__webpack_require__(2203),n=Object.prototype.hasOwnProperty,ha=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,ia={},ja={}; +function ka(a){if(n.call(ja,a))return!0;if(n.call(ia,a))return!1;if(ha.test(a))return ja[a]=!0;ia[a]=!0;return!1}function q(a,b,c,d,f,e,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=e;this.removeEmptyString=g}var r={}; +"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){r[a]=new q(a,0,!1,a,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var b=a[0];r[b]=new q(b,1,!1,a[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(a){r[a]=new q(a,2,!1,a.toLowerCase(),null,!1,!1)}); +["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){r[a]=new q(a,2,!1,a,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){r[a]=new q(a,3,!1,a.toLowerCase(),null,!1,!1)}); +["checked","multiple","muted","selected"].forEach(function(a){r[a]=new q(a,3,!0,a,null,!1,!1)});["capture","download"].forEach(function(a){r[a]=new q(a,4,!1,a,null,!1,!1)});["cols","rows","size","span"].forEach(function(a){r[a]=new q(a,6,!1,a,null,!1,!1)});["rowSpan","start"].forEach(function(a){r[a]=new q(a,5,!1,a.toLowerCase(),null,!1,!1)});var la=/[\-:]([a-z])/g;function ma(a){return a[1].toUpperCase()} +"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var b=a.replace(la, +ma);r[b]=new q(b,1,!1,a,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var b=a.replace(la,ma);r[b]=new q(b,1,!1,a,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(a){var b=a.replace(la,ma);r[b]=new q(b,1,!1,a,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(a){r[a]=new q(a,1,!1,a.toLowerCase(),null,!1,!1)}); +r.xlinkHref=new q("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(a){r[a]=new q(a,1,!1,a.toLowerCase(),null,!0,!0)}); +var t={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0, +fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},na=["Webkit","ms","Moz","O"];Object.keys(t).forEach(function(a){na.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);t[b]=t[a]})});var oa=/["'&<>]/; +function u(a){if("boolean"===typeof a||"number"===typeof a)return""+a;a=""+a;var b=oa.exec(a);if(b){var c="",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=""";break;case 38:b="&";break;case 39:b="'";break;case 60:b="<";break;case 62:b=">";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}var pa=/([A-Z])/g,qa=/^ms-/,ra=Array.isArray;function v(a,b){return{insertionMode:a,selectedValue:b}} +function sa(a,b,c){switch(b){case "select":return v(1,null!=c.value?c.value:c.defaultValue);case "svg":return v(2,null);case "math":return v(3,null);case "foreignObject":return v(1,null);case "table":return v(4,null);case "thead":case "tbody":case "tfoot":return v(5,null);case "colgroup":return v(7,null);case "tr":return v(6,null)}return 4<=a.insertionMode||0===a.insertionMode?v(1,null):a}var ta=new Map; +function ua(a,b,c){if("object"!==typeof c)throw Error("The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.");b=!0;for(var d in c)if(n.call(c,d)){var f=c[d];if(null!=f&&"boolean"!==typeof f&&""!==f){if(0===d.indexOf("--")){var e=u(d);f=u((""+f).trim())}else{e=d;var g=ta.get(e);void 0!==g?e=g:(g=u(e.replace(pa,"-$1").toLowerCase().replace(qa,"-ms-")),ta.set(e,g),e=g);f="number"===typeof f?0===f||n.call(t, +d)?""+f:f+"px":u((""+f).trim())}b?(b=!1,a.push(' style="',e,":",f)):a.push(";",e,":",f)}}b||a.push('"')} +function w(a,b,c,d){switch(c){case "style":ua(a,b,d);return;case "defaultValue":case "defaultChecked":case "innerHTML":case "suppressContentEditableWarning":case "suppressHydrationWarning":return}if(!(2<c.length)||"o"!==c[0]&&"O"!==c[0]||"n"!==c[1]&&"N"!==c[1])if(b=r.hasOwnProperty(c)?r[c]:null,null!==b){switch(typeof d){case "function":case "symbol":return;case "boolean":if(!b.acceptsBooleans)return}c=b.attributeName;switch(b.type){case 3:d&&a.push(" ",c,'=""');break;case 4:!0===d?a.push(" ",c,'=""'): +!1!==d&&a.push(" ",c,'="',u(d),'"');break;case 5:isNaN(d)||a.push(" ",c,'="',u(d),'"');break;case 6:!isNaN(d)&&1<=d&&a.push(" ",c,'="',u(d),'"');break;default:b.sanitizeURL&&(d=""+d),a.push(" ",c,'="',u(d),'"')}}else if(ka(c)){switch(typeof d){case "function":case "symbol":return;case "boolean":if(b=c.toLowerCase().slice(0,5),"data-"!==b&&"aria-"!==b)return}a.push(" ",c,'="',u(d),'"')}} +function x(a,b,c){if(null!=b){if(null!=c)throw Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");if("object"!==typeof b||!("__html"in b))throw Error("`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://reactjs.org/link/dangerously-set-inner-html for more information.");b=b.__html;null!==b&&void 0!==b&&a.push(""+b)}}function va(a){var b="";ea.Children.forEach(a,function(a){null!=a&&(b+=a)});return b} +function wa(a,b,c,d){a.push(z(c));var f=c=null,e;for(e in b)if(n.call(b,e)){var g=b[e];if(null!=g)switch(e){case "children":c=g;break;case "dangerouslySetInnerHTML":f=g;break;default:w(a,d,e,g)}}a.push(">");x(a,f,c);return"string"===typeof c?(a.push(u(c)),null):c}var xa=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,ya=new Map;function z(a){var b=ya.get(a);if(void 0===b){if(!xa.test(a))throw Error("Invalid tag: "+a);b="<"+a;ya.set(a,b)}return b} +function za(a,b,c,d,f){switch(b){case "select":a.push(z("select"));var e=null,g=null;for(l in c)if(n.call(c,l)){var h=c[l];if(null!=h)switch(l){case "children":e=h;break;case "dangerouslySetInnerHTML":g=h;break;case "defaultValue":case "value":break;default:w(a,d,l,h)}}a.push(">");x(a,g,e);return e;case "option":g=f.selectedValue;a.push(z("option"));var k=h=null,m=null;var l=null;for(e in c)if(n.call(c,e)){var p=c[e];if(null!=p)switch(e){case "children":h=p;break;case "selected":m=p;break;case "dangerouslySetInnerHTML":l= +p;break;case "value":k=p;default:w(a,d,e,p)}}if(null!=g)if(c=null!==k?""+k:va(h),ra(g))for(d=0;d<g.length;d++){if(""+g[d]===c){a.push(' selected=""');break}}else""+g===c&&a.push(' selected=""');else m&&a.push(' selected=""');a.push(">");x(a,l,h);return h;case "textarea":a.push(z("textarea"));l=g=e=null;for(h in c)if(n.call(c,h)&&(k=c[h],null!=k))switch(h){case "children":l=k;break;case "value":e=k;break;case "defaultValue":g=k;break;case "dangerouslySetInnerHTML":throw Error("`dangerouslySetInnerHTML` does not make sense on <textarea>."); +default:w(a,d,h,k)}null===e&&null!==g&&(e=g);a.push(">");if(null!=l){if(null!=e)throw Error("If you supply `defaultValue` on a <textarea>, do not pass children.");if(ra(l)&&1<l.length)throw Error("<textarea> can only have at most one child.");e=""+l}"string"===typeof e&&"\n"===e[0]&&a.push("\n");null!==e&&a.push(u(""+e));return null;case "input":a.push(z("input"));k=l=h=e=null;for(g in c)if(n.call(c,g)&&(m=c[g],null!=m))switch(g){case "children":case "dangerouslySetInnerHTML":throw Error("input is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`."); +case "defaultChecked":k=m;break;case "defaultValue":h=m;break;case "checked":l=m;break;case "value":e=m;break;default:w(a,d,g,m)}null!==l?w(a,d,"checked",l):null!==k&&w(a,d,"checked",k);null!==e?w(a,d,"value",e):null!==h&&w(a,d,"value",h);a.push("/>");return null;case "menuitem":a.push(z("menuitem"));for(var B in c)if(n.call(c,B)&&(e=c[B],null!=e))switch(B){case "children":case "dangerouslySetInnerHTML":throw Error("menuitems cannot have `children` nor `dangerouslySetInnerHTML`.");default:w(a,d,B, +e)}a.push(">");return null;case "title":a.push(z("title"));e=null;for(p in c)if(n.call(c,p)&&(g=c[p],null!=g))switch(p){case "children":e=g;break;case "dangerouslySetInnerHTML":throw Error("`dangerouslySetInnerHTML` does not make sense on <title>.");default:w(a,d,p,g)}a.push(">");return e;case "listing":case "pre":a.push(z(b));g=e=null;for(k in c)if(n.call(c,k)&&(h=c[k],null!=h))switch(k){case "children":e=h;break;case "dangerouslySetInnerHTML":g=h;break;default:w(a,d,k,h)}a.push(">");if(null!=g){if(null!= +e)throw Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");if("object"!==typeof g||!("__html"in g))throw Error("`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://reactjs.org/link/dangerously-set-inner-html for more information.");c=g.__html;null!==c&&void 0!==c&&("string"===typeof c&&0<c.length&&"\n"===c[0]?a.push("\n",c):a.push(""+c))}"string"===typeof e&&"\n"===e[0]&&a.push("\n");return e;case "area":case "base":case "br":case "col":case "embed":case "hr":case "img":case "keygen":case "link":case "meta":case "param":case "source":case "track":case "wbr":a.push(z(b)); +for(var C in c)if(n.call(c,C)&&(e=c[C],null!=e))switch(C){case "children":case "dangerouslySetInnerHTML":throw Error(b+" is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`.");default:w(a,d,C,e)}a.push("/>");return null;case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return wa(a,c,b,d);case "html":return 0===f.insertionMode&&a.push("<!DOCTYPE html>"), +wa(a,c,b,d);default:if(-1===b.indexOf("-")&&"string"!==typeof c.is)return wa(a,c,b,d);a.push(z(b));g=e=null;for(m in c)if(n.call(c,m)&&(h=c[m],null!=h))switch(m){case "children":e=h;break;case "dangerouslySetInnerHTML":g=h;break;case "style":ua(a,d,h);break;case "suppressContentEditableWarning":case "suppressHydrationWarning":break;default:ka(m)&&"function"!==typeof h&&"symbol"!==typeof h&&a.push(" ",m,'="',u(h),'"')}a.push(">");x(a,g,e);return e}} +function Aa(a,b,c){a.push('\x3c!--$?--\x3e<template id="');if(null===c)throw Error("An ID must have been assigned before we can complete the boundary.");a.push(c);return a.push('"></template>')} +function Ba(a,b,c,d){switch(c.insertionMode){case 0:case 1:return a.push('<div hidden id="'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('">');case 2:return a.push('<svg aria-hidden="true" style="display:none" id="'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('">');case 3:return a.push('<math aria-hidden="true" style="display:none" id="'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('">');case 4:return a.push('<table hidden id="'),a.push(b.segmentPrefix), +b=d.toString(16),a.push(b),a.push('">');case 5:return a.push('<table hidden><tbody id="'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('">');case 6:return a.push('<table hidden><tr id="'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('">');case 7:return a.push('<table hidden><colgroup id="'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('">');default:throw Error("Unknown insertion mode. This is a bug in React.");}} +function Ca(a,b){switch(b.insertionMode){case 0:case 1:return a.push("</div>");case 2:return a.push("</svg>");case 3:return a.push("</math>");case 4:return a.push("</table>");case 5:return a.push("</tbody></table>");case 6:return a.push("</tr></table>");case 7:return a.push("</colgroup></table>");default:throw Error("Unknown insertion mode. This is a bug in React.");}}var Da=/[<\u2028\u2029]/g; +function Ea(a){return JSON.stringify(a).replace(Da,function(a){switch(a){case "<":return"\\u003c";case "\u2028":return"\\u2028";case "\u2029":return"\\u2029";default:throw Error("escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React");}})} +function Fa(a,b){b=void 0===b?"":b;return{bootstrapChunks:[],startInlineScript:"<script>",placeholderPrefix:b+"P:",segmentPrefix:b+"S:",boundaryPrefix:b+"B:",idPrefix:b,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1,generateStaticMarkup:a}}function Ga(){return{insertionMode:1,selectedValue:null}}function Ha(a,b,c,d){if(c.generateStaticMarkup)return a.push(u(b)),!1;""===b?a=d:(d&&a.push("\x3c!-- --\x3e"),a.push(u(b)),a=!0);return a} +var A=Object.assign,Ia=Symbol.for("react.element"),Ja=Symbol.for("react.portal"),Ka=Symbol.for("react.fragment"),La=Symbol.for("react.strict_mode"),Ma=Symbol.for("react.profiler"),Na=Symbol.for("react.provider"),Oa=Symbol.for("react.context"),Pa=Symbol.for("react.forward_ref"),Qa=Symbol.for("react.suspense"),Ra=Symbol.for("react.suspense_list"),Sa=Symbol.for("react.memo"),Ta=Symbol.for("react.lazy"),Ua=Symbol.for("react.scope"),Va=Symbol.for("react.debug_trace_mode"),Wa=Symbol.for("react.legacy_hidden"), +Xa=Symbol.for("react.default_value"),Ya=Symbol.iterator; +function Za(a){if(null==a)return null;if("function"===typeof a)return a.displayName||a.name||null;if("string"===typeof a)return a;switch(a){case Ka:return"Fragment";case Ja:return"Portal";case Ma:return"Profiler";case La:return"StrictMode";case Qa:return"Suspense";case Ra:return"SuspenseList"}if("object"===typeof a)switch(a.$$typeof){case Oa:return(a.displayName||"Context")+".Consumer";case Na:return(a._context.displayName||"Context")+".Provider";case Pa:var b=a.render;a=a.displayName;a||(a=b.displayName|| +b.name||"",a=""!==a?"ForwardRef("+a+")":"ForwardRef");return a;case Sa:return b=a.displayName||null,null!==b?b:Za(a.type)||"Memo";case Ta:b=a._payload;a=a._init;try{return Za(a(b))}catch(c){}}return null}var $a={};function ab(a,b){a=a.contextTypes;if(!a)return $a;var c={},d;for(d in a)c[d]=b[d];return c}var D=null; +function E(a,b){if(a!==b){a.context._currentValue2=a.parentValue;a=a.parent;var c=b.parent;if(null===a){if(null!==c)throw Error("The stacks must reach the root at the same time. This is a bug in React.");}else{if(null===c)throw Error("The stacks must reach the root at the same time. This is a bug in React.");E(a,c)}b.context._currentValue2=b.value}}function bb(a){a.context._currentValue2=a.parentValue;a=a.parent;null!==a&&bb(a)} +function cb(a){var b=a.parent;null!==b&&cb(b);a.context._currentValue2=a.value}function db(a,b){a.context._currentValue2=a.parentValue;a=a.parent;if(null===a)throw Error("The depth must equal at least at zero before reaching the root. This is a bug in React.");a.depth===b.depth?E(a,b):db(a,b)} +function eb(a,b){var c=b.parent;if(null===c)throw Error("The depth must equal at least at zero before reaching the root. This is a bug in React.");a.depth===c.depth?E(a,c):eb(a,c);b.context._currentValue2=b.value}function F(a){var b=D;b!==a&&(null===b?cb(a):null===a?bb(b):b.depth===a.depth?E(b,a):b.depth>a.depth?db(b,a):eb(b,a),D=a)} +var fb={isMounted:function(){return!1},enqueueSetState:function(a,b){a=a._reactInternals;null!==a.queue&&a.queue.push(b)},enqueueReplaceState:function(a,b){a=a._reactInternals;a.replace=!0;a.queue=[b]},enqueueForceUpdate:function(){}}; +function gb(a,b,c,d){var f=void 0!==a.state?a.state:null;a.updater=fb;a.props=c;a.state=f;var e={queue:[],replace:!1};a._reactInternals=e;var g=b.contextType;a.context="object"===typeof g&&null!==g?g._currentValue2:d;g=b.getDerivedStateFromProps;"function"===typeof g&&(g=g(c,f),f=null===g||void 0===g?f:A({},f,g),a.state=f);if("function"!==typeof b.getDerivedStateFromProps&&"function"!==typeof a.getSnapshotBeforeUpdate&&("function"===typeof a.UNSAFE_componentWillMount||"function"===typeof a.componentWillMount))if(b= +a.state,"function"===typeof a.componentWillMount&&a.componentWillMount(),"function"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),b!==a.state&&fb.enqueueReplaceState(a,a.state,null),null!==e.queue&&0<e.queue.length)if(b=e.queue,g=e.replace,e.queue=null,e.replace=!1,g&&1===b.length)a.state=b[0];else{e=g?b[0]:a.state;f=!0;for(g=g?1:0;g<b.length;g++){var h=b[g];h="function"===typeof h?h.call(a,e,c,d):h;null!=h&&(f?(f=!1,e=A({},e,h)):A(e,h))}a.state=e}else e.queue=null} +var hb={id:1,overflow:""};function ib(a,b,c){var d=a.id;a=a.overflow;var f=32-G(d)-1;d&=~(1<<f);c+=1;var e=32-G(b)+f;if(30<e){var g=f-f%5;e=(d&(1<<g)-1).toString(32);d>>=g;f-=g;return{id:1<<32-G(b)+f|c<<f|d,overflow:e+a}}return{id:1<<e|c<<f|d,overflow:a}}var G=Math.clz32?Math.clz32:jb,kb=Math.log,lb=Math.LN2;function jb(a){a>>>=0;return 0===a?32:31-(kb(a)/lb|0)|0}function mb(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b} +var nb="function"===typeof Object.is?Object.is:mb,H=null,ob=null,I=null,J=null,K=!1,L=!1,M=0,N=null,O=0; +function P(){if(null===H)throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.");return H} +function rb(){if(0<O)throw Error("Rendered more hooks than during the previous render");return{memoizedState:null,queue:null,next:null}}function sb(){null===J?null===I?(K=!1,I=J=rb()):(K=!0,J=I):null===J.next?(K=!1,J=J.next=rb()):(K=!0,J=J.next);return J}function tb(){ob=H=null;L=!1;I=null;O=0;J=N=null}function ub(a,b){return"function"===typeof b?b(a):b} +function vb(a,b,c){H=P();J=sb();if(K){var d=J.queue;b=d.dispatch;if(null!==N&&(c=N.get(d),void 0!==c)){N.delete(d);d=J.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);J.memoizedState=d;return[d,b]}return[J.memoizedState,b]}a=a===ub?"function"===typeof b?b():b:void 0!==c?c(b):b;J.memoizedState=a;a=J.queue={last:null,dispatch:null};a=a.dispatch=wb.bind(null,H,a);return[J.memoizedState,a]} +function xb(a,b){H=P();J=sb();b=void 0===b?null:b;if(null!==J){var c=J.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!nb(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();J.memoizedState=[a,b];return a} +function wb(a,b,c){if(25<=O)throw Error("Too many re-renders. React limits the number of renders to prevent an infinite loop.");if(a===H)if(L=!0,a={action:c,next:null},null===N&&(N=new Map),c=N.get(b),void 0===c)N.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function yb(){throw Error("startTransition cannot be called during server rendering.");}function Q(){} +var zb={readContext:function(a){return a._currentValue2},useContext:function(a){P();return a._currentValue2},useMemo:xb,useReducer:vb,useRef:function(a){H=P();J=sb();var b=J.memoizedState;return null===b?(a={current:a},J.memoizedState=a):b},useState:function(a){return vb(ub,a)},useInsertionEffect:Q,useLayoutEffect:function(){},useCallback:function(a,b){return xb(function(){return a},b)},useImperativeHandle:Q,useEffect:Q,useDebugValue:Q,useDeferredValue:function(a){P();return a},useTransition:function(){P(); +return[!1,yb]},useId:function(){var a=ob.treeContext;var b=a.overflow;a=a.id;a=(a&~(1<<32-G(a)-1)).toString(32)+b;var c=R;if(null===c)throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component.");b=M++;a=":"+c.idPrefix+"R"+a;0<b&&(a+="H"+b.toString(32));return a+":"},useMutableSource:function(a,b){P();return b(a._source)},useSyncExternalStore:function(a,b,c){if(void 0===c)throw Error("Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering."); +return c()}},R=null,Ab=ea.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function Bb(a){console.error(a);return null}function S(){} +function Cb(a,b,c,d,f,e,g,h,k){var m=[],l=new Set;b={destination:null,responseState:b,progressiveChunkSize:void 0===d?12800:d,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:l,pingedTasks:m,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===f?Bb:f,onAllReady:void 0===e?S:e,onShellReady:void 0===g?S:g,onShellError:void 0===h?S:h,onFatalError:void 0===k?S:k};c=T(b,0,null,c,!1,!1);c.parentFlushed= +!0;a=Db(b,a,null,c,l,$a,null,hb);m.push(a);return b}function Db(a,b,c,d,f,e,g,h){a.allPendingTasks++;null===c?a.pendingRootTasks++:c.pendingTasks++;var k={node:b,ping:function(){var b=a.pingedTasks;b.push(k);1===b.length&&Eb(a)},blockedBoundary:c,blockedSegment:d,abortSet:f,legacyContext:e,context:g,treeContext:h};f.add(k);return k}function T(a,b,c,d,f,e){return{status:0,id:-1,index:b,parentFlushed:!1,chunks:[],children:[],formatContext:d,boundary:c,lastPushedText:f,textEmbedded:e}} +function U(a,b){a=a.onError(b);if(null!=a&&"string"!==typeof a)throw Error('onError returned something with a type other than "string". onError should return a string and may return null or undefined but must not return anything else. It received something of type "'+typeof a+'" instead');return a}function V(a,b){var c=a.onShellError;c(b);c=a.onFatalError;c(b);null!==a.destination?(a.status=2,a.destination.destroy(b)):(a.status=1,a.fatalError=b)} +function Fb(a,b,c,d,f){H={};ob=b;M=0;for(a=c(d,f);L;)L=!1,M=0,O+=1,J=null,a=c(d,f);tb();return a}function Gb(a,b,c,d){var f=c.render(),e=d.childContextTypes;if(null!==e&&void 0!==e){var g=b.legacyContext;if("function"!==typeof c.getChildContext)d=g;else{c=c.getChildContext();for(var h in c)if(!(h in e))throw Error((Za(d)||"Unknown")+'.getChildContext(): key "'+h+'" is not defined in childContextTypes.');d=A({},g,c)}b.legacyContext=d;W(a,b,f);b.legacyContext=g}else W(a,b,f)} +function Hb(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b} +function Ib(a,b,c,d,f){if("function"===typeof c)if(c.prototype&&c.prototype.isReactComponent){f=ab(c,b.legacyContext);var e=c.contextType;e=new c(d,"object"===typeof e&&null!==e?e._currentValue2:f);gb(e,c,d,f);Gb(a,b,e,c)}else{e=ab(c,b.legacyContext);f=Fb(a,b,c,d,e);var g=0!==M;if("object"===typeof f&&null!==f&&"function"===typeof f.render&&void 0===f.$$typeof)gb(f,c,d,e),Gb(a,b,f,c);else if(g){d=b.treeContext;b.treeContext=ib(d,1,0);try{W(a,b,f)}finally{b.treeContext=d}}else W(a,b,f)}else if("string"=== +typeof c){f=b.blockedSegment;e=za(f.chunks,c,d,a.responseState,f.formatContext);f.lastPushedText=!1;g=f.formatContext;f.formatContext=sa(g,c,d);Jb(a,b,e);f.formatContext=g;switch(c){case "area":case "base":case "br":case "col":case "embed":case "hr":case "img":case "input":case "keygen":case "link":case "meta":case "param":case "source":case "track":case "wbr":break;default:f.chunks.push("</",c,">")}f.lastPushedText=!1}else{switch(c){case Wa:case Va:case La:case Ma:case Ka:W(a,b,d.children);return; +case Ra:W(a,b,d.children);return;case Ua:throw Error("ReactDOMServer does not yet support scope components.");case Qa:a:{c=b.blockedBoundary;f=b.blockedSegment;e=d.fallback;d=d.children;g=new Set;var h={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:g,errorDigest:null},k=T(a,f.chunks.length,h,f.formatContext,!1,!1);f.children.push(k);f.lastPushedText=!1;var m=T(a,0,null,f.formatContext,!1,!1);m.parentFlushed=!0; +b.blockedBoundary=h;b.blockedSegment=m;try{if(Jb(a,b,d),a.responseState.generateStaticMarkup||m.lastPushedText&&m.textEmbedded&&m.chunks.push("\x3c!-- --\x3e"),m.status=1,X(h,m),0===h.pendingTasks)break a}catch(l){m.status=4,h.forceClientRender=!0,h.errorDigest=U(a,l)}finally{b.blockedBoundary=c,b.blockedSegment=f}b=Db(a,e,c,k,g,b.legacyContext,b.context,b.treeContext);a.pingedTasks.push(b)}return}if("object"===typeof c&&null!==c)switch(c.$$typeof){case Pa:d=Fb(a,b,c.render,d,f);if(0!==M){c=b.treeContext; +b.treeContext=ib(c,1,0);try{W(a,b,d)}finally{b.treeContext=c}}else W(a,b,d);return;case Sa:c=c.type;d=Hb(c,d);Ib(a,b,c,d,f);return;case Na:f=d.children;c=c._context;d=d.value;e=c._currentValue2;c._currentValue2=d;g=D;D=d={parent:g,depth:null===g?0:g.depth+1,context:c,parentValue:e,value:d};b.context=d;W(a,b,f);a=D;if(null===a)throw Error("Tried to pop a Context at the root of the app. This is a bug in React.");d=a.parentValue;a.context._currentValue2=d===Xa?a.context._defaultValue:d;a=D=a.parent; +b.context=a;return;case Oa:d=d.children;d=d(c._currentValue2);W(a,b,d);return;case Ta:f=c._init;c=f(c._payload);d=Hb(c,d);Ib(a,b,c,d,void 0);return}throw Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: "+((null==c?c:typeof c)+"."));}} +function W(a,b,c){b.node=c;if("object"===typeof c&&null!==c){switch(c.$$typeof){case Ia:Ib(a,b,c.type,c.props,c.ref);return;case Ja:throw Error("Portals are not currently supported by the server renderer. Render them conditionally so that they only appear on the client render.");case Ta:var d=c._init;c=d(c._payload);W(a,b,c);return}if(ra(c)){Kb(a,b,c);return}null===c||"object"!==typeof c?d=null:(d=Ya&&c[Ya]||c["@@iterator"],d="function"===typeof d?d:null);if(d&&(d=d.call(c))){c=d.next();if(!c.done){var f= +[];do f.push(c.value),c=d.next();while(!c.done);Kb(a,b,f)}return}a=Object.prototype.toString.call(c);throw Error("Objects are not valid as a React child (found: "+("[object Object]"===a?"object with keys {"+Object.keys(c).join(", ")+"}":a)+"). If you meant to render a collection of children, use an array instead.");}"string"===typeof c?(d=b.blockedSegment,d.lastPushedText=Ha(b.blockedSegment.chunks,c,a.responseState,d.lastPushedText)):"number"===typeof c&&(d=b.blockedSegment,d.lastPushedText=Ha(b.blockedSegment.chunks, +""+c,a.responseState,d.lastPushedText))}function Kb(a,b,c){for(var d=c.length,f=0;f<d;f++){var e=b.treeContext;b.treeContext=ib(e,d,f);try{Jb(a,b,c[f])}finally{b.treeContext=e}}} +function Jb(a,b,c){var d=b.blockedSegment.formatContext,f=b.legacyContext,e=b.context;try{return W(a,b,c)}catch(k){if(tb(),"object"===typeof k&&null!==k&&"function"===typeof k.then){c=k;var g=b.blockedSegment,h=T(a,g.chunks.length,null,g.formatContext,g.lastPushedText,!0);g.children.push(h);g.lastPushedText=!1;a=Db(a,b.node,b.blockedBoundary,h,b.abortSet,b.legacyContext,b.context,b.treeContext).ping;c.then(a,a);b.blockedSegment.formatContext=d;b.legacyContext=f;b.context=e;F(e)}else throw b.blockedSegment.formatContext= +d,b.legacyContext=f,b.context=e,F(e),k;}}function Lb(a){var b=a.blockedBoundary;a=a.blockedSegment;a.status=3;Mb(this,b,a)} +function Nb(a,b,c){var d=a.blockedBoundary;a.blockedSegment.status=3;null===d?(b.allPendingTasks--,2!==b.status&&(b.status=2,null!==b.destination&&b.destination.push(null))):(d.pendingTasks--,d.forceClientRender||(d.forceClientRender=!0,d.errorDigest=b.onError(void 0===c?Error("The render was aborted by the server without a reason."):c),d.parentFlushed&&b.clientRenderedBoundaries.push(d)),d.fallbackAbortableTasks.forEach(function(a){return Nb(a,b,c)}),d.fallbackAbortableTasks.clear(),b.allPendingTasks--, +0===b.allPendingTasks&&(a=b.onAllReady,a()))}function X(a,b){if(0===b.chunks.length&&1===b.children.length&&null===b.children[0].boundary){var c=b.children[0];c.id=b.id;c.parentFlushed=!0;1===c.status&&X(a,c)}else a.completedSegments.push(b)} +function Mb(a,b,c){if(null===b){if(c.parentFlushed){if(null!==a.completedRootSegment)throw Error("There can only be one root segment. This is a bug in React.");a.completedRootSegment=c}a.pendingRootTasks--;0===a.pendingRootTasks&&(a.onShellError=S,b=a.onShellReady,b())}else b.pendingTasks--,b.forceClientRender||(0===b.pendingTasks?(c.parentFlushed&&1===c.status&&X(b,c),b.parentFlushed&&a.completedBoundaries.push(b),b.fallbackAbortableTasks.forEach(Lb,a),b.fallbackAbortableTasks.clear()):c.parentFlushed&& +1===c.status&&(X(b,c),1===b.completedSegments.length&&b.parentFlushed&&a.partialBoundaries.push(b)));a.allPendingTasks--;0===a.allPendingTasks&&(a=a.onAllReady,a())} +function Eb(a){if(2!==a.status){var b=D,c=Ab.current;Ab.current=zb;var d=R;R=a.responseState;try{var f=a.pingedTasks,e;for(e=0;e<f.length;e++){var g=f[e];var h=a,k=g.blockedSegment;if(0===k.status){F(g.context);try{W(h,g,g.node),h.responseState.generateStaticMarkup||k.lastPushedText&&k.textEmbedded&&k.chunks.push("\x3c!-- --\x3e"),g.abortSet.delete(g),k.status=1,Mb(h,g.blockedBoundary,k)}catch(y){if(tb(),"object"===typeof y&&null!==y&&"function"===typeof y.then){var m=g.ping;y.then(m,m)}else{g.abortSet.delete(g); +k.status=4;var l=g.blockedBoundary,p=y,B=U(h,p);null===l?V(h,p):(l.pendingTasks--,l.forceClientRender||(l.forceClientRender=!0,l.errorDigest=B,l.parentFlushed&&h.clientRenderedBoundaries.push(l)));h.allPendingTasks--;if(0===h.allPendingTasks){var C=h.onAllReady;C()}}}finally{}}}f.splice(0,e);null!==a.destination&&Ob(a,a.destination)}catch(y){U(a,y),V(a,y)}finally{R=d,Ab.current=c,c===zb&&F(b)}}} +function Y(a,b,c){c.parentFlushed=!0;switch(c.status){case 0:var d=c.id=a.nextSegmentId++;c.lastPushedText=!1;c.textEmbedded=!1;a=a.responseState;b.push('<template id="');b.push(a.placeholderPrefix);a=d.toString(16);b.push(a);return b.push('"></template>');case 1:c.status=2;var f=!0;d=c.chunks;var e=0;c=c.children;for(var g=0;g<c.length;g++){for(f=c[g];e<f.index;e++)b.push(d[e]);f=Z(a,b,f)}for(;e<d.length-1;e++)b.push(d[e]);e<d.length&&(f=b.push(d[e]));return f;default:throw Error("Aborted, errored or already flushed boundaries should not be flushed again. This is a bug in React."); +}} +function Z(a,b,c){var d=c.boundary;if(null===d)return Y(a,b,c);d.parentFlushed=!0;if(d.forceClientRender)return a.responseState.generateStaticMarkup||(d=d.errorDigest,b.push("\x3c!--$!--\x3e"),b.push("<template"),d&&(b.push(' data-dgst="'),d=u(d),b.push(d),b.push('"')),b.push("></template>")),Y(a,b,c),a=a.responseState.generateStaticMarkup?!0:b.push("\x3c!--/$--\x3e"),a;if(0<d.pendingTasks){d.rootSegmentID=a.nextSegmentId++;0<d.completedSegments.length&&a.partialBoundaries.push(d);var f=a.responseState;var e= +f.nextSuspenseID++;f=f.boundaryPrefix+e.toString(16);d=d.id=f;Aa(b,a.responseState,d);Y(a,b,c);return b.push("\x3c!--/$--\x3e")}if(d.byteSize>a.progressiveChunkSize)return d.rootSegmentID=a.nextSegmentId++,a.completedBoundaries.push(d),Aa(b,a.responseState,d.id),Y(a,b,c),b.push("\x3c!--/$--\x3e");a.responseState.generateStaticMarkup||b.push("\x3c!--$--\x3e");c=d.completedSegments;if(1!==c.length)throw Error("A previously unvisited boundary must have exactly one root segment. This is a bug in React."); +Z(a,b,c[0]);a=a.responseState.generateStaticMarkup?!0:b.push("\x3c!--/$--\x3e");return a}function Pb(a,b,c){Ba(b,a.responseState,c.formatContext,c.id);Z(a,b,c);return Ca(b,c.formatContext)} +function Qb(a,b,c){for(var d=c.completedSegments,f=0;f<d.length;f++)Rb(a,b,c,d[f]);d.length=0;a=a.responseState;d=c.id;c=c.rootSegmentID;b.push(a.startInlineScript);a.sentCompleteBoundaryFunction?b.push('$RC("'):(a.sentCompleteBoundaryFunction=!0,b.push('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d)if(0===e)break;else e--;else"$"!==d&&"$?"!==d&&"$!"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data="$";a._reactRetry&&a._reactRetry()}};$RC("'));if(null=== +d)throw Error("An ID must have been assigned before we can complete the boundary.");c=c.toString(16);b.push(d);b.push('","');b.push(a.segmentPrefix);b.push(c);return b.push('")\x3c/script>')} +function Rb(a,b,c,d){if(2===d.status)return!0;var f=d.id;if(-1===f){if(-1===(d.id=c.rootSegmentID))throw Error("A root segment ID must have been assigned by now. This is a bug in React.");return Pb(a,b,d)}Pb(a,b,d);a=a.responseState;b.push(a.startInlineScript);a.sentCompleteSegmentFunction?b.push('$RS("'):(a.sentCompleteSegmentFunction=!0,b.push('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS("')); +b.push(a.segmentPrefix);f=f.toString(16);b.push(f);b.push('","');b.push(a.placeholderPrefix);b.push(f);return b.push('")\x3c/script>')} +function Ob(a,b){try{var c=a.completedRootSegment;if(null!==c&&0===a.pendingRootTasks){Z(a,b,c);a.completedRootSegment=null;var d=a.responseState.bootstrapChunks;for(c=0;c<d.length-1;c++)b.push(d[c]);c<d.length&&b.push(d[c])}var f=a.clientRenderedBoundaries,e;for(e=0;e<f.length;e++){var g=f[e];d=b;var h=a.responseState,k=g.id,m=g.errorDigest,l=g.errorMessage,p=g.errorComponentStack;d.push(h.startInlineScript);h.sentClientRenderFunction?d.push('$RX("'):(h.sentClientRenderFunction=!0,d.push('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data="$!",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX("')); +if(null===k)throw Error("An ID must have been assigned before we can complete the boundary.");d.push(k);d.push('"');if(m||l||p){d.push(",");var B=Ea(m||"");d.push(B)}if(l||p){d.push(",");var C=Ea(l||"");d.push(C)}if(p){d.push(",");var y=Ea(p);d.push(y)}if(!d.push(")\x3c/script>")){a.destination=null;e++;f.splice(0,e);return}}f.splice(0,e);var aa=a.completedBoundaries;for(e=0;e<aa.length;e++)if(!Qb(a,b,aa[e])){a.destination=null;e++;aa.splice(0,e);return}aa.splice(0,e);var ba=a.partialBoundaries;for(e= +0;e<ba.length;e++){var pb=ba[e];a:{f=a;g=b;var ca=pb.completedSegments;for(h=0;h<ca.length;h++)if(!Rb(f,g,pb,ca[h])){h++;ca.splice(0,h);var qb=!1;break a}ca.splice(0,h);qb=!0}if(!qb){a.destination=null;e++;ba.splice(0,e);return}}ba.splice(0,e);var da=a.completedBoundaries;for(e=0;e<da.length;e++)if(!Qb(a,b,da[e])){a.destination=null;e++;da.splice(0,e);return}da.splice(0,e)}finally{0===a.allPendingTasks&&0===a.pingedTasks.length&&0===a.clientRenderedBoundaries.length&&0===a.completedBoundaries.length&& +b.push(null)}}function Sb(a,b){if(1===a.status)a.status=2,b.destroy(a.fatalError);else if(2!==a.status&&null===a.destination){a.destination=b;try{Ob(a,b)}catch(c){U(a,c),V(a,c)}}}function Tb(a,b){try{var c=a.abortableTasks;c.forEach(function(c){return Nb(c,a,b)});c.clear();null!==a.destination&&Ob(a,a.destination)}catch(d){U(a,d),V(a,d)}}function Ub(){} +function Vb(a,b,c,d){var f=!1,e=null,g="",h=!1;a=Cb(a,Fa(c,b?b.identifierPrefix:void 0),Ga(),Infinity,Ub,void 0,function(){h=!0},void 0,void 0);Eb(a);Tb(a,d);Sb(a,{push:function(a){null!==a&&(g+=a);return!0},destroy:function(a){f=!0;e=a}});if(f)throw e;if(!h)throw Error("A component suspended while responding to synchronous input. This will cause the UI to be replaced with a loading indicator. To fix, updates that suspend should be wrapped with startTransition.");return g} +function Wb(a,b){a.prototype=Object.create(b.prototype);a.prototype.constructor=a;a.__proto__=b}var Xb=function(a){function b(){var b=a.call(this,{})||this;b.request=null;b.startedFlowing=!1;return b}Wb(b,a);var c=b.prototype;c._destroy=function(a,b){Tb(this.request);b(a)};c._read=function(){this.startedFlowing&&Sb(this.request,this)};return b}(fa.Readable);function Yb(){} +function Zb(a,b){var c=new Xb,d=Cb(a,Fa(!1,b?b.identifierPrefix:void 0),Ga(),Infinity,Yb,function(){c.startedFlowing=!0;Sb(d,c)},void 0,void 0);c.request=d;Eb(d);return c}exports.renderToNodeStream=function(a,b){return Zb(a,b)};exports.renderToStaticMarkup=function(a,b){return Vb(a,b,!0,'The server used "renderToStaticMarkup" which does not support Suspense. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server')}; +exports.renderToStaticNodeStream=function(a,b){return Zb(a,b)};exports.renderToString=function(a,b){return Vb(a,b,!1,'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server')}; +exports.version="18.3.1"; + + +/***/ }), + +/***/ 6513: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/** + * @license React + * react-dom-server.node.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var aa=__webpack_require__(9023),ba=__webpack_require__(6540),k=null,l=0,q=!0; +function r(a,b){if("string"===typeof b){if(0!==b.length)if(2048<3*b.length)0<l&&(t(a,k.subarray(0,l)),k=new Uint8Array(2048),l=0),t(a,u.encode(b));else{var c=k;0<l&&(c=k.subarray(l));c=u.encodeInto(b,c);var d=c.read;l+=c.written;d<b.length&&(t(a,k),k=new Uint8Array(2048),l=u.encodeInto(b.slice(d),k).written);2048===l&&(t(a,k),k=new Uint8Array(2048),l=0)}}else 0!==b.byteLength&&(2048<b.byteLength?(0<l&&(t(a,k.subarray(0,l)),k=new Uint8Array(2048),l=0),t(a,b)):(c=k.length-l,c<b.byteLength&&(0===c?t(a, +k):(k.set(b.subarray(0,c),l),l+=c,t(a,k),b=b.subarray(c)),k=new Uint8Array(2048),l=0),k.set(b,l),l+=b.byteLength,2048===l&&(t(a,k),k=new Uint8Array(2048),l=0)))}function t(a,b){a=a.write(b);q=q&&a}function w(a,b){r(a,b);return q}function ca(a){k&&0<l&&a.write(k.subarray(0,l));k=null;l=0;q=!0}var u=new aa.TextEncoder;function x(a){return u.encode(a)} +var y=Object.prototype.hasOwnProperty,da=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,ea={},fa={}; +function ha(a){if(y.call(fa,a))return!0;if(y.call(ea,a))return!1;if(da.test(a))return fa[a]=!0;ea[a]=!0;return!1}function z(a,b,c,d,f,e,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=e;this.removeEmptyString=g}var A={}; +"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){A[a]=new z(a,0,!1,a,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var b=a[0];A[b]=new z(b,1,!1,a[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(a){A[a]=new z(a,2,!1,a.toLowerCase(),null,!1,!1)}); +["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){A[a]=new z(a,2,!1,a,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){A[a]=new z(a,3,!1,a.toLowerCase(),null,!1,!1)}); +["checked","multiple","muted","selected"].forEach(function(a){A[a]=new z(a,3,!0,a,null,!1,!1)});["capture","download"].forEach(function(a){A[a]=new z(a,4,!1,a,null,!1,!1)});["cols","rows","size","span"].forEach(function(a){A[a]=new z(a,6,!1,a,null,!1,!1)});["rowSpan","start"].forEach(function(a){A[a]=new z(a,5,!1,a.toLowerCase(),null,!1,!1)});var ia=/[\-:]([a-z])/g;function ja(a){return a[1].toUpperCase()} +"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var b=a.replace(ia, +ja);A[b]=new z(b,1,!1,a,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var b=a.replace(ia,ja);A[b]=new z(b,1,!1,a,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(a){var b=a.replace(ia,ja);A[b]=new z(b,1,!1,a,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(a){A[a]=new z(a,1,!1,a.toLowerCase(),null,!1,!1)}); +A.xlinkHref=new z("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(a){A[a]=new z(a,1,!1,a.toLowerCase(),null,!0,!0)}); +var B={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0, +fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ka=["Webkit","ms","Moz","O"];Object.keys(B).forEach(function(a){ka.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);B[b]=B[a]})});var la=/["'&<>]/; +function F(a){if("boolean"===typeof a||"number"===typeof a)return""+a;a=""+a;var b=la.exec(a);if(b){var c="",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=""";break;case 38:b="&";break;case 39:b="'";break;case 60:b="<";break;case 62:b=">";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a} +var ma=/([A-Z])/g,pa=/^ms-/,qa=Array.isArray,ra=x("<script>"),sa=x("\x3c/script>"),ta=x('<script src="'),ua=x('<script type="module" src="'),va=x('" async="">\x3c/script>'),wa=/(<\/|<)(s)(cript)/gi;function xa(a,b,c,d){return""+b+("s"===c?"\\u0073":"\\u0053")+d}function G(a,b){return{insertionMode:a,selectedValue:b}} +function ya(a,b,c){switch(b){case "select":return G(1,null!=c.value?c.value:c.defaultValue);case "svg":return G(2,null);case "math":return G(3,null);case "foreignObject":return G(1,null);case "table":return G(4,null);case "thead":case "tbody":case "tfoot":return G(5,null);case "colgroup":return G(7,null);case "tr":return G(6,null)}return 4<=a.insertionMode||0===a.insertionMode?G(1,null):a}var za=x("\x3c!-- --\x3e");function Aa(a,b,c,d){if(""===b)return d;d&&a.push(za);a.push(F(b));return!0} +var Ba=new Map,Ca=x(' style="'),Da=x(":"),Ea=x(";"); +function Fa(a,b,c){if("object"!==typeof c)throw Error("The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.");b=!0;for(var d in c)if(y.call(c,d)){var f=c[d];if(null!=f&&"boolean"!==typeof f&&""!==f){if(0===d.indexOf("--")){var e=F(d);f=F((""+f).trim())}else{e=d;var g=Ba.get(e);void 0!==g?e=g:(g=x(F(e.replace(ma,"-$1").toLowerCase().replace(pa,"-ms-"))),Ba.set(e,g),e=g);f="number"===typeof f?0===f||y.call(B, +d)?""+f:f+"px":F((""+f).trim())}b?(b=!1,a.push(Ca,e,Da,f)):a.push(Ea,e,Da,f)}}b||a.push(H)}var I=x(" "),J=x('="'),H=x('"'),Ga=x('=""'); +function K(a,b,c,d){switch(c){case "style":Fa(a,b,d);return;case "defaultValue":case "defaultChecked":case "innerHTML":case "suppressContentEditableWarning":case "suppressHydrationWarning":return}if(!(2<c.length)||"o"!==c[0]&&"O"!==c[0]||"n"!==c[1]&&"N"!==c[1])if(b=A.hasOwnProperty(c)?A[c]:null,null!==b){switch(typeof d){case "function":case "symbol":return;case "boolean":if(!b.acceptsBooleans)return}c=b.attributeName;switch(b.type){case 3:d&&a.push(I,c,Ga);break;case 4:!0===d?a.push(I,c,Ga):!1!== +d&&a.push(I,c,J,F(d),H);break;case 5:isNaN(d)||a.push(I,c,J,F(d),H);break;case 6:!isNaN(d)&&1<=d&&a.push(I,c,J,F(d),H);break;default:b.sanitizeURL&&(d=""+d),a.push(I,c,J,F(d),H)}}else if(ha(c)){switch(typeof d){case "function":case "symbol":return;case "boolean":if(b=c.toLowerCase().slice(0,5),"data-"!==b&&"aria-"!==b)return}a.push(I,c,J,F(d),H)}}var L=x(">"),Ha=x("/>"); +function M(a,b,c){if(null!=b){if(null!=c)throw Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");if("object"!==typeof b||!("__html"in b))throw Error("`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://reactjs.org/link/dangerously-set-inner-html for more information.");b=b.__html;null!==b&&void 0!==b&&a.push(""+b)}}function Ia(a){var b="";ba.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Ja=x(' selected=""'); +function Ka(a,b,c,d){a.push(N(c));var f=c=null,e;for(e in b)if(y.call(b,e)){var g=b[e];if(null!=g)switch(e){case "children":c=g;break;case "dangerouslySetInnerHTML":f=g;break;default:K(a,d,e,g)}}a.push(L);M(a,f,c);return"string"===typeof c?(a.push(F(c)),null):c}var La=x("\n"),Ma=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,Na=new Map;function N(a){var b=Na.get(a);if(void 0===b){if(!Ma.test(a))throw Error("Invalid tag: "+a);b=x("<"+a);Na.set(a,b)}return b}var Oa=x("<!DOCTYPE html>"); +function Pa(a,b,c,d,f){switch(b){case "select":a.push(N("select"));var e=null,g=null;for(p in c)if(y.call(c,p)){var h=c[p];if(null!=h)switch(p){case "children":e=h;break;case "dangerouslySetInnerHTML":g=h;break;case "defaultValue":case "value":break;default:K(a,d,p,h)}}a.push(L);M(a,g,e);return e;case "option":g=f.selectedValue;a.push(N("option"));var m=h=null,n=null;var p=null;for(e in c)if(y.call(c,e)){var v=c[e];if(null!=v)switch(e){case "children":h=v;break;case "selected":n=v;break;case "dangerouslySetInnerHTML":p= +v;break;case "value":m=v;default:K(a,d,e,v)}}if(null!=g)if(c=null!==m?""+m:Ia(h),qa(g))for(d=0;d<g.length;d++){if(""+g[d]===c){a.push(Ja);break}}else""+g===c&&a.push(Ja);else n&&a.push(Ja);a.push(L);M(a,p,h);return h;case "textarea":a.push(N("textarea"));p=g=e=null;for(h in c)if(y.call(c,h)&&(m=c[h],null!=m))switch(h){case "children":p=m;break;case "value":e=m;break;case "defaultValue":g=m;break;case "dangerouslySetInnerHTML":throw Error("`dangerouslySetInnerHTML` does not make sense on <textarea>."); +default:K(a,d,h,m)}null===e&&null!==g&&(e=g);a.push(L);if(null!=p){if(null!=e)throw Error("If you supply `defaultValue` on a <textarea>, do not pass children.");if(qa(p)&&1<p.length)throw Error("<textarea> can only have at most one child.");e=""+p}"string"===typeof e&&"\n"===e[0]&&a.push(La);null!==e&&a.push(F(""+e));return null;case "input":a.push(N("input"));m=p=h=e=null;for(g in c)if(y.call(c,g)&&(n=c[g],null!=n))switch(g){case "children":case "dangerouslySetInnerHTML":throw Error("input is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`."); +case "defaultChecked":m=n;break;case "defaultValue":h=n;break;case "checked":p=n;break;case "value":e=n;break;default:K(a,d,g,n)}null!==p?K(a,d,"checked",p):null!==m&&K(a,d,"checked",m);null!==e?K(a,d,"value",e):null!==h&&K(a,d,"value",h);a.push(Ha);return null;case "menuitem":a.push(N("menuitem"));for(var C in c)if(y.call(c,C)&&(e=c[C],null!=e))switch(C){case "children":case "dangerouslySetInnerHTML":throw Error("menuitems cannot have `children` nor `dangerouslySetInnerHTML`.");default:K(a,d,C,e)}a.push(L); +return null;case "title":a.push(N("title"));e=null;for(v in c)if(y.call(c,v)&&(g=c[v],null!=g))switch(v){case "children":e=g;break;case "dangerouslySetInnerHTML":throw Error("`dangerouslySetInnerHTML` does not make sense on <title>.");default:K(a,d,v,g)}a.push(L);return e;case "listing":case "pre":a.push(N(b));g=e=null;for(m in c)if(y.call(c,m)&&(h=c[m],null!=h))switch(m){case "children":e=h;break;case "dangerouslySetInnerHTML":g=h;break;default:K(a,d,m,h)}a.push(L);if(null!=g){if(null!=e)throw Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`."); +if("object"!==typeof g||!("__html"in g))throw Error("`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://reactjs.org/link/dangerously-set-inner-html for more information.");c=g.__html;null!==c&&void 0!==c&&("string"===typeof c&&0<c.length&&"\n"===c[0]?a.push(La,c):a.push(""+c))}"string"===typeof e&&"\n"===e[0]&&a.push(La);return e;case "area":case "base":case "br":case "col":case "embed":case "hr":case "img":case "keygen":case "link":case "meta":case "param":case "source":case "track":case "wbr":a.push(N(b)); +for(var D in c)if(y.call(c,D)&&(e=c[D],null!=e))switch(D){case "children":case "dangerouslySetInnerHTML":throw Error(b+" is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`.");default:K(a,d,D,e)}a.push(Ha);return null;case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return Ka(a,c,b,d);case "html":return 0===f.insertionMode&&a.push(Oa),Ka(a,c, +b,d);default:if(-1===b.indexOf("-")&&"string"!==typeof c.is)return Ka(a,c,b,d);a.push(N(b));g=e=null;for(n in c)if(y.call(c,n)&&(h=c[n],null!=h))switch(n){case "children":e=h;break;case "dangerouslySetInnerHTML":g=h;break;case "style":Fa(a,d,h);break;case "suppressContentEditableWarning":case "suppressHydrationWarning":break;default:ha(n)&&"function"!==typeof h&&"symbol"!==typeof h&&a.push(I,n,J,F(h),H)}a.push(L);M(a,g,e);return e}} +var Qa=x("</"),Ra=x(">"),Sa=x('<template id="'),Ta=x('"></template>'),Ua=x("\x3c!--$--\x3e"),Va=x('\x3c!--$?--\x3e<template id="'),Wa=x('"></template>'),Xa=x("\x3c!--$!--\x3e"),Ya=x("\x3c!--/$--\x3e"),Za=x("<template"),$a=x('"'),ab=x(' data-dgst="');x(' data-msg="');x(' data-stck="');var bb=x("></template>");function cb(a,b,c){r(a,Va);if(null===c)throw Error("An ID must have been assigned before we can complete the boundary.");r(a,c);return w(a,Wa)} +var db=x('<div hidden id="'),eb=x('">'),fb=x("</div>"),gb=x('<svg aria-hidden="true" style="display:none" id="'),hb=x('">'),ib=x("</svg>"),jb=x('<math aria-hidden="true" style="display:none" id="'),kb=x('">'),lb=x("</math>"),mb=x('<table hidden id="'),nb=x('">'),ob=x("</table>"),pb=x('<table hidden><tbody id="'),qb=x('">'),rb=x("</tbody></table>"),sb=x('<table hidden><tr id="'),tb=x('">'),ub=x("</tr></table>"),vb=x('<table hidden><colgroup id="'),wb=x('">'),xb=x("</colgroup></table>"); +function yb(a,b,c,d){switch(c.insertionMode){case 0:case 1:return r(a,db),r(a,b.segmentPrefix),r(a,d.toString(16)),w(a,eb);case 2:return r(a,gb),r(a,b.segmentPrefix),r(a,d.toString(16)),w(a,hb);case 3:return r(a,jb),r(a,b.segmentPrefix),r(a,d.toString(16)),w(a,kb);case 4:return r(a,mb),r(a,b.segmentPrefix),r(a,d.toString(16)),w(a,nb);case 5:return r(a,pb),r(a,b.segmentPrefix),r(a,d.toString(16)),w(a,qb);case 6:return r(a,sb),r(a,b.segmentPrefix),r(a,d.toString(16)),w(a,tb);case 7:return r(a,vb),r(a, +b.segmentPrefix),r(a,d.toString(16)),w(a,wb);default:throw Error("Unknown insertion mode. This is a bug in React.");}}function zb(a,b){switch(b.insertionMode){case 0:case 1:return w(a,fb);case 2:return w(a,ib);case 3:return w(a,lb);case 4:return w(a,ob);case 5:return w(a,rb);case 6:return w(a,ub);case 7:return w(a,xb);default:throw Error("Unknown insertion mode. This is a bug in React.");}} +var Ab=x('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS("'),Bb=x('$RS("'),Cb=x('","'),Db=x('")\x3c/script>'),Fb=x('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d)if(0===e)break;else e--;else"$"!==d&&"$?"!==d&&"$!"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data="$";a._reactRetry&&a._reactRetry()}};$RC("'), +Gb=x('$RC("'),Hb=x('","'),Ib=x('")\x3c/script>'),Jb=x('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data="$!",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX("'),Kb=x('$RX("'),Lb=x('"'),Mb=x(")\x3c/script>"),Nb=x(","),Ob=/[<\u2028\u2029]/g; +function Pb(a){return JSON.stringify(a).replace(Ob,function(a){switch(a){case "<":return"\\u003c";case "\u2028":return"\\u2028";case "\u2029":return"\\u2029";default:throw Error("escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React");}})} +var O=Object.assign,Qb=Symbol.for("react.element"),Rb=Symbol.for("react.portal"),Sb=Symbol.for("react.fragment"),Tb=Symbol.for("react.strict_mode"),Ub=Symbol.for("react.profiler"),Vb=Symbol.for("react.provider"),Wb=Symbol.for("react.context"),Xb=Symbol.for("react.forward_ref"),Yb=Symbol.for("react.suspense"),Zb=Symbol.for("react.suspense_list"),$b=Symbol.for("react.memo"),ac=Symbol.for("react.lazy"),bc=Symbol.for("react.scope"),cc=Symbol.for("react.debug_trace_mode"),dc=Symbol.for("react.legacy_hidden"), +ec=Symbol.for("react.default_value"),fc=Symbol.iterator; +function gc(a){if(null==a)return null;if("function"===typeof a)return a.displayName||a.name||null;if("string"===typeof a)return a;switch(a){case Sb:return"Fragment";case Rb:return"Portal";case Ub:return"Profiler";case Tb:return"StrictMode";case Yb:return"Suspense";case Zb:return"SuspenseList"}if("object"===typeof a)switch(a.$$typeof){case Wb:return(a.displayName||"Context")+".Consumer";case Vb:return(a._context.displayName||"Context")+".Provider";case Xb:var b=a.render;a=a.displayName;a||(a=b.displayName|| +b.name||"",a=""!==a?"ForwardRef("+a+")":"ForwardRef");return a;case $b:return b=a.displayName||null,null!==b?b:gc(a.type)||"Memo";case ac:b=a._payload;a=a._init;try{return gc(a(b))}catch(c){}}return null}var hc={};function ic(a,b){a=a.contextTypes;if(!a)return hc;var c={},d;for(d in a)c[d]=b[d];return c}var P=null; +function Q(a,b){if(a!==b){a.context._currentValue=a.parentValue;a=a.parent;var c=b.parent;if(null===a){if(null!==c)throw Error("The stacks must reach the root at the same time. This is a bug in React.");}else{if(null===c)throw Error("The stacks must reach the root at the same time. This is a bug in React.");Q(a,c)}b.context._currentValue=b.value}}function jc(a){a.context._currentValue=a.parentValue;a=a.parent;null!==a&&jc(a)} +function kc(a){var b=a.parent;null!==b&&kc(b);a.context._currentValue=a.value}function lc(a,b){a.context._currentValue=a.parentValue;a=a.parent;if(null===a)throw Error("The depth must equal at least at zero before reaching the root. This is a bug in React.");a.depth===b.depth?Q(a,b):lc(a,b)} +function mc(a,b){var c=b.parent;if(null===c)throw Error("The depth must equal at least at zero before reaching the root. This is a bug in React.");a.depth===c.depth?Q(a,c):mc(a,c);b.context._currentValue=b.value}function nc(a){var b=P;b!==a&&(null===b?kc(a):null===a?jc(b):b.depth===a.depth?Q(b,a):b.depth>a.depth?lc(b,a):mc(b,a),P=a)} +var oc={isMounted:function(){return!1},enqueueSetState:function(a,b){a=a._reactInternals;null!==a.queue&&a.queue.push(b)},enqueueReplaceState:function(a,b){a=a._reactInternals;a.replace=!0;a.queue=[b]},enqueueForceUpdate:function(){}}; +function pc(a,b,c,d){var f=void 0!==a.state?a.state:null;a.updater=oc;a.props=c;a.state=f;var e={queue:[],replace:!1};a._reactInternals=e;var g=b.contextType;a.context="object"===typeof g&&null!==g?g._currentValue:d;g=b.getDerivedStateFromProps;"function"===typeof g&&(g=g(c,f),f=null===g||void 0===g?f:O({},f,g),a.state=f);if("function"!==typeof b.getDerivedStateFromProps&&"function"!==typeof a.getSnapshotBeforeUpdate&&("function"===typeof a.UNSAFE_componentWillMount||"function"===typeof a.componentWillMount))if(b= +a.state,"function"===typeof a.componentWillMount&&a.componentWillMount(),"function"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),b!==a.state&&oc.enqueueReplaceState(a,a.state,null),null!==e.queue&&0<e.queue.length)if(b=e.queue,g=e.replace,e.queue=null,e.replace=!1,g&&1===b.length)a.state=b[0];else{e=g?b[0]:a.state;f=!0;for(g=g?1:0;g<b.length;g++){var h=b[g];h="function"===typeof h?h.call(a,e,c,d):h;null!=h&&(f?(f=!1,e=O({},e,h)):O(e,h))}a.state=e}else e.queue=null} +var qc={id:1,overflow:""};function rc(a,b,c){var d=a.id;a=a.overflow;var f=32-sc(d)-1;d&=~(1<<f);c+=1;var e=32-sc(b)+f;if(30<e){var g=f-f%5;e=(d&(1<<g)-1).toString(32);d>>=g;f-=g;return{id:1<<32-sc(b)+f|c<<f|d,overflow:e+a}}return{id:1<<e|c<<f|d,overflow:a}}var sc=Math.clz32?Math.clz32:tc,uc=Math.log,vc=Math.LN2;function tc(a){a>>>=0;return 0===a?32:31-(uc(a)/vc|0)|0}function wc(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b} +var xc="function"===typeof Object.is?Object.is:wc,R=null,yc=null,zc=null,S=null,T=!1,Ac=!1,U=0,V=null,Bc=0; +function W(){if(null===R)throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.");return R} +function Cc(){if(0<Bc)throw Error("Rendered more hooks than during the previous render");return{memoizedState:null,queue:null,next:null}}function Dc(){null===S?null===zc?(T=!1,zc=S=Cc()):(T=!0,S=zc):null===S.next?(T=!1,S=S.next=Cc()):(T=!0,S=S.next);return S}function Ec(){yc=R=null;Ac=!1;zc=null;Bc=0;S=V=null}function Fc(a,b){return"function"===typeof b?b(a):b} +function Gc(a,b,c){R=W();S=Dc();if(T){var d=S.queue;b=d.dispatch;if(null!==V&&(c=V.get(d),void 0!==c)){V.delete(d);d=S.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);S.memoizedState=d;return[d,b]}return[S.memoizedState,b]}a=a===Fc?"function"===typeof b?b():b:void 0!==c?c(b):b;S.memoizedState=a;a=S.queue={last:null,dispatch:null};a=a.dispatch=Hc.bind(null,R,a);return[S.memoizedState,a]} +function Ic(a,b){R=W();S=Dc();b=void 0===b?null:b;if(null!==S){var c=S.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!xc(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();S.memoizedState=[a,b];return a} +function Hc(a,b,c){if(25<=Bc)throw Error("Too many re-renders. React limits the number of renders to prevent an infinite loop.");if(a===R)if(Ac=!0,a={action:c,next:null},null===V&&(V=new Map),c=V.get(b),void 0===c)V.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function Jc(){throw Error("startTransition cannot be called during server rendering.");}function Kc(){} +var Mc={readContext:function(a){return a._currentValue},useContext:function(a){W();return a._currentValue},useMemo:Ic,useReducer:Gc,useRef:function(a){R=W();S=Dc();var b=S.memoizedState;return null===b?(a={current:a},S.memoizedState=a):b},useState:function(a){return Gc(Fc,a)},useInsertionEffect:Kc,useLayoutEffect:function(){},useCallback:function(a,b){return Ic(function(){return a},b)},useImperativeHandle:Kc,useEffect:Kc,useDebugValue:Kc,useDeferredValue:function(a){W();return a},useTransition:function(){W(); +return[!1,Jc]},useId:function(){var a=yc.treeContext;var b=a.overflow;a=a.id;a=(a&~(1<<32-sc(a)-1)).toString(32)+b;var c=Lc;if(null===c)throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component.");b=U++;a=":"+c.idPrefix+"R"+a;0<b&&(a+="H"+b.toString(32));return a+":"},useMutableSource:function(a,b){W();return b(a._source)},useSyncExternalStore:function(a,b,c){if(void 0===c)throw Error("Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering."); +return c()}},Lc=null,Nc=ba.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function Oc(a){console.error(a);return null}function X(){}function Pc(a,b){var c=a.pingedTasks;c.push(b);1===c.length&&setImmediate(function(){return Qc(a)})} +function Rc(a,b,c,d,f,e,g,h){a.allPendingTasks++;null===c?a.pendingRootTasks++:c.pendingTasks++;var m={node:b,ping:function(){return Pc(a,m)},blockedBoundary:c,blockedSegment:d,abortSet:f,legacyContext:e,context:g,treeContext:h};f.add(m);return m}function Sc(a,b,c,d,f,e){return{status:0,id:-1,index:b,parentFlushed:!1,chunks:[],children:[],formatContext:d,boundary:c,lastPushedText:f,textEmbedded:e}} +function Y(a,b){a=a.onError(b);if(null!=a&&"string"!==typeof a)throw Error('onError returned something with a type other than "string". onError should return a string and may return null or undefined but must not return anything else. It received something of type "'+typeof a+'" instead');return a}function Tc(a,b){var c=a.onShellError;c(b);c=a.onFatalError;c(b);null!==a.destination?(a.status=2,a.destination.destroy(b)):(a.status=1,a.fatalError=b)} +function Uc(a,b,c,d,f){R={};yc=b;U=0;for(a=c(d,f);Ac;)Ac=!1,U=0,Bc+=1,S=null,a=c(d,f);Ec();return a}function Vc(a,b,c,d){var f=c.render(),e=d.childContextTypes;if(null!==e&&void 0!==e){var g=b.legacyContext;if("function"!==typeof c.getChildContext)d=g;else{c=c.getChildContext();for(var h in c)if(!(h in e))throw Error((gc(d)||"Unknown")+'.getChildContext(): key "'+h+'" is not defined in childContextTypes.');d=O({},g,c)}b.legacyContext=d;Z(a,b,f);b.legacyContext=g}else Z(a,b,f)} +function Wc(a,b){if(a&&a.defaultProps){b=O({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b} +function Xc(a,b,c,d,f){if("function"===typeof c)if(c.prototype&&c.prototype.isReactComponent){f=ic(c,b.legacyContext);var e=c.contextType;e=new c(d,"object"===typeof e&&null!==e?e._currentValue:f);pc(e,c,d,f);Vc(a,b,e,c)}else{e=ic(c,b.legacyContext);f=Uc(a,b,c,d,e);var g=0!==U;if("object"===typeof f&&null!==f&&"function"===typeof f.render&&void 0===f.$$typeof)pc(f,c,d,e),Vc(a,b,f,c);else if(g){d=b.treeContext;b.treeContext=rc(d,1,0);try{Z(a,b,f)}finally{b.treeContext=d}}else Z(a,b,f)}else if("string"=== +typeof c){f=b.blockedSegment;e=Pa(f.chunks,c,d,a.responseState,f.formatContext);f.lastPushedText=!1;g=f.formatContext;f.formatContext=ya(g,c,d);Yc(a,b,e);f.formatContext=g;switch(c){case "area":case "base":case "br":case "col":case "embed":case "hr":case "img":case "input":case "keygen":case "link":case "meta":case "param":case "source":case "track":case "wbr":break;default:f.chunks.push(Qa,c,Ra)}f.lastPushedText=!1}else{switch(c){case dc:case cc:case Tb:case Ub:case Sb:Z(a,b,d.children);return;case Zb:Z(a, +b,d.children);return;case bc:throw Error("ReactDOMServer does not yet support scope components.");case Yb:a:{c=b.blockedBoundary;f=b.blockedSegment;e=d.fallback;d=d.children;g=new Set;var h={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:g,errorDigest:null},m=Sc(a,f.chunks.length,h,f.formatContext,!1,!1);f.children.push(m);f.lastPushedText=!1;var n=Sc(a,0,null,f.formatContext,!1,!1);n.parentFlushed=!0;b.blockedBoundary= +h;b.blockedSegment=n;try{if(Yc(a,b,d),n.lastPushedText&&n.textEmbedded&&n.chunks.push(za),n.status=1,Zc(h,n),0===h.pendingTasks)break a}catch(p){n.status=4,h.forceClientRender=!0,h.errorDigest=Y(a,p)}finally{b.blockedBoundary=c,b.blockedSegment=f}b=Rc(a,e,c,m,g,b.legacyContext,b.context,b.treeContext);a.pingedTasks.push(b)}return}if("object"===typeof c&&null!==c)switch(c.$$typeof){case Xb:d=Uc(a,b,c.render,d,f);if(0!==U){c=b.treeContext;b.treeContext=rc(c,1,0);try{Z(a,b,d)}finally{b.treeContext=c}}else Z(a, +b,d);return;case $b:c=c.type;d=Wc(c,d);Xc(a,b,c,d,f);return;case Vb:f=d.children;c=c._context;d=d.value;e=c._currentValue;c._currentValue=d;g=P;P=d={parent:g,depth:null===g?0:g.depth+1,context:c,parentValue:e,value:d};b.context=d;Z(a,b,f);a=P;if(null===a)throw Error("Tried to pop a Context at the root of the app. This is a bug in React.");d=a.parentValue;a.context._currentValue=d===ec?a.context._defaultValue:d;a=P=a.parent;b.context=a;return;case Wb:d=d.children;d=d(c._currentValue);Z(a,b,d);return; +case ac:f=c._init;c=f(c._payload);d=Wc(c,d);Xc(a,b,c,d,void 0);return}throw Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: "+((null==c?c:typeof c)+"."));}} +function Z(a,b,c){b.node=c;if("object"===typeof c&&null!==c){switch(c.$$typeof){case Qb:Xc(a,b,c.type,c.props,c.ref);return;case Rb:throw Error("Portals are not currently supported by the server renderer. Render them conditionally so that they only appear on the client render.");case ac:var d=c._init;c=d(c._payload);Z(a,b,c);return}if(qa(c)){$c(a,b,c);return}null===c||"object"!==typeof c?d=null:(d=fc&&c[fc]||c["@@iterator"],d="function"===typeof d?d:null);if(d&&(d=d.call(c))){c=d.next();if(!c.done){var f= +[];do f.push(c.value),c=d.next();while(!c.done);$c(a,b,f)}return}a=Object.prototype.toString.call(c);throw Error("Objects are not valid as a React child (found: "+("[object Object]"===a?"object with keys {"+Object.keys(c).join(", ")+"}":a)+"). If you meant to render a collection of children, use an array instead.");}"string"===typeof c?(d=b.blockedSegment,d.lastPushedText=Aa(b.blockedSegment.chunks,c,a.responseState,d.lastPushedText)):"number"===typeof c&&(d=b.blockedSegment,d.lastPushedText=Aa(b.blockedSegment.chunks, +""+c,a.responseState,d.lastPushedText))}function $c(a,b,c){for(var d=c.length,f=0;f<d;f++){var e=b.treeContext;b.treeContext=rc(e,d,f);try{Yc(a,b,c[f])}finally{b.treeContext=e}}} +function Yc(a,b,c){var d=b.blockedSegment.formatContext,f=b.legacyContext,e=b.context;try{return Z(a,b,c)}catch(m){if(Ec(),"object"===typeof m&&null!==m&&"function"===typeof m.then){c=m;var g=b.blockedSegment,h=Sc(a,g.chunks.length,null,g.formatContext,g.lastPushedText,!0);g.children.push(h);g.lastPushedText=!1;a=Rc(a,b.node,b.blockedBoundary,h,b.abortSet,b.legacyContext,b.context,b.treeContext).ping;c.then(a,a);b.blockedSegment.formatContext=d;b.legacyContext=f;b.context=e;nc(e)}else throw b.blockedSegment.formatContext= +d,b.legacyContext=f,b.context=e,nc(e),m;}}function ad(a){var b=a.blockedBoundary;a=a.blockedSegment;a.status=3;bd(this,b,a)} +function cd(a,b,c){var d=a.blockedBoundary;a.blockedSegment.status=3;null===d?(b.allPendingTasks--,2!==b.status&&(b.status=2,null!==b.destination&&b.destination.end())):(d.pendingTasks--,d.forceClientRender||(d.forceClientRender=!0,d.errorDigest=b.onError(void 0===c?Error("The render was aborted by the server without a reason."):c),d.parentFlushed&&b.clientRenderedBoundaries.push(d)),d.fallbackAbortableTasks.forEach(function(a){return cd(a,b,c)}),d.fallbackAbortableTasks.clear(),b.allPendingTasks--, +0===b.allPendingTasks&&(a=b.onAllReady,a()))}function Zc(a,b){if(0===b.chunks.length&&1===b.children.length&&null===b.children[0].boundary){var c=b.children[0];c.id=b.id;c.parentFlushed=!0;1===c.status&&Zc(a,c)}else a.completedSegments.push(b)} +function bd(a,b,c){if(null===b){if(c.parentFlushed){if(null!==a.completedRootSegment)throw Error("There can only be one root segment. This is a bug in React.");a.completedRootSegment=c}a.pendingRootTasks--;0===a.pendingRootTasks&&(a.onShellError=X,b=a.onShellReady,b())}else b.pendingTasks--,b.forceClientRender||(0===b.pendingTasks?(c.parentFlushed&&1===c.status&&Zc(b,c),b.parentFlushed&&a.completedBoundaries.push(b),b.fallbackAbortableTasks.forEach(ad,a),b.fallbackAbortableTasks.clear()):c.parentFlushed&& +1===c.status&&(Zc(b,c),1===b.completedSegments.length&&b.parentFlushed&&a.partialBoundaries.push(b)));a.allPendingTasks--;0===a.allPendingTasks&&(a=a.onAllReady,a())} +function Qc(a){if(2!==a.status){var b=P,c=Nc.current;Nc.current=Mc;var d=Lc;Lc=a.responseState;try{var f=a.pingedTasks,e;for(e=0;e<f.length;e++){var g=f[e];var h=a,m=g.blockedSegment;if(0===m.status){nc(g.context);try{Z(h,g,g.node),m.lastPushedText&&m.textEmbedded&&m.chunks.push(za),g.abortSet.delete(g),m.status=1,bd(h,g.blockedBoundary,m)}catch(E){if(Ec(),"object"===typeof E&&null!==E&&"function"===typeof E.then){var n=g.ping;E.then(n,n)}else{g.abortSet.delete(g);m.status=4;var p=g.blockedBoundary, +v=E,C=Y(h,v);null===p?Tc(h,v):(p.pendingTasks--,p.forceClientRender||(p.forceClientRender=!0,p.errorDigest=C,p.parentFlushed&&h.clientRenderedBoundaries.push(p)));h.allPendingTasks--;if(0===h.allPendingTasks){var D=h.onAllReady;D()}}}finally{}}}f.splice(0,e);null!==a.destination&&dd(a,a.destination)}catch(E){Y(a,E),Tc(a,E)}finally{Lc=d,Nc.current=c,c===Mc&&nc(b)}}} +function ed(a,b,c){c.parentFlushed=!0;switch(c.status){case 0:var d=c.id=a.nextSegmentId++;c.lastPushedText=!1;c.textEmbedded=!1;a=a.responseState;r(b,Sa);r(b,a.placeholderPrefix);a=d.toString(16);r(b,a);return w(b,Ta);case 1:c.status=2;var f=!0;d=c.chunks;var e=0;c=c.children;for(var g=0;g<c.length;g++){for(f=c[g];e<f.index;e++)r(b,d[e]);f=fd(a,b,f)}for(;e<d.length-1;e++)r(b,d[e]);e<d.length&&(f=w(b,d[e]));return f;default:throw Error("Aborted, errored or already flushed boundaries should not be flushed again. This is a bug in React."); +}} +function fd(a,b,c){var d=c.boundary;if(null===d)return ed(a,b,c);d.parentFlushed=!0;if(d.forceClientRender)d=d.errorDigest,w(b,Xa),r(b,Za),d&&(r(b,ab),r(b,F(d)),r(b,$a)),w(b,bb),ed(a,b,c);else if(0<d.pendingTasks){d.rootSegmentID=a.nextSegmentId++;0<d.completedSegments.length&&a.partialBoundaries.push(d);var f=a.responseState;var e=f.nextSuspenseID++;f=x(f.boundaryPrefix+e.toString(16));d=d.id=f;cb(b,a.responseState,d);ed(a,b,c)}else if(d.byteSize>a.progressiveChunkSize)d.rootSegmentID=a.nextSegmentId++,a.completedBoundaries.push(d), +cb(b,a.responseState,d.id),ed(a,b,c);else{w(b,Ua);c=d.completedSegments;if(1!==c.length)throw Error("A previously unvisited boundary must have exactly one root segment. This is a bug in React.");fd(a,b,c[0])}return w(b,Ya)}function gd(a,b,c){yb(b,a.responseState,c.formatContext,c.id);fd(a,b,c);return zb(b,c.formatContext)} +function hd(a,b,c){for(var d=c.completedSegments,f=0;f<d.length;f++)id(a,b,c,d[f]);d.length=0;a=a.responseState;d=c.id;c=c.rootSegmentID;r(b,a.startInlineScript);a.sentCompleteBoundaryFunction?r(b,Gb):(a.sentCompleteBoundaryFunction=!0,r(b,Fb));if(null===d)throw Error("An ID must have been assigned before we can complete the boundary.");c=c.toString(16);r(b,d);r(b,Hb);r(b,a.segmentPrefix);r(b,c);return w(b,Ib)} +function id(a,b,c,d){if(2===d.status)return!0;var f=d.id;if(-1===f){if(-1===(d.id=c.rootSegmentID))throw Error("A root segment ID must have been assigned by now. This is a bug in React.");return gd(a,b,d)}gd(a,b,d);a=a.responseState;r(b,a.startInlineScript);a.sentCompleteSegmentFunction?r(b,Bb):(a.sentCompleteSegmentFunction=!0,r(b,Ab));r(b,a.segmentPrefix);f=f.toString(16);r(b,f);r(b,Cb);r(b,a.placeholderPrefix);r(b,f);return w(b,Db)} +function dd(a,b){k=new Uint8Array(2048);l=0;q=!0;try{var c=a.completedRootSegment;if(null!==c&&0===a.pendingRootTasks){fd(a,b,c);a.completedRootSegment=null;var d=a.responseState.bootstrapChunks;for(c=0;c<d.length-1;c++)r(b,d[c]);c<d.length&&w(b,d[c])}var f=a.clientRenderedBoundaries,e;for(e=0;e<f.length;e++){var g=f[e];d=b;var h=a.responseState,m=g.id,n=g.errorDigest,p=g.errorMessage,v=g.errorComponentStack;r(d,h.startInlineScript);h.sentClientRenderFunction?r(d,Kb):(h.sentClientRenderFunction=!0, +r(d,Jb));if(null===m)throw Error("An ID must have been assigned before we can complete the boundary.");r(d,m);r(d,Lb);if(n||p||v)r(d,Nb),r(d,Pb(n||""));if(p||v)r(d,Nb),r(d,Pb(p||""));v&&(r(d,Nb),r(d,Pb(v)));if(!w(d,Mb)){a.destination=null;e++;f.splice(0,e);return}}f.splice(0,e);var C=a.completedBoundaries;for(e=0;e<C.length;e++)if(!hd(a,b,C[e])){a.destination=null;e++;C.splice(0,e);return}C.splice(0,e);ca(b);k=new Uint8Array(2048);l=0;q=!0;var D=a.partialBoundaries;for(e=0;e<D.length;e++){var E=D[e]; +a:{f=a;g=b;var na=E.completedSegments;for(h=0;h<na.length;h++)if(!id(f,g,E,na[h])){h++;na.splice(0,h);var Eb=!1;break a}na.splice(0,h);Eb=!0}if(!Eb){a.destination=null;e++;D.splice(0,e);return}}D.splice(0,e);var oa=a.completedBoundaries;for(e=0;e<oa.length;e++)if(!hd(a,b,oa[e])){a.destination=null;e++;oa.splice(0,e);return}oa.splice(0,e)}finally{ca(b),"function"===typeof b.flush&&b.flush(),0===a.allPendingTasks&&0===a.pingedTasks.length&&0===a.clientRenderedBoundaries.length&&0===a.completedBoundaries.length&& +b.end()}}function jd(a){setImmediate(function(){return Qc(a)})}function kd(a,b){if(1===a.status)a.status=2,b.destroy(a.fatalError);else if(2!==a.status&&null===a.destination){a.destination=b;try{dd(a,b)}catch(c){Y(a,c),Tc(a,c)}}}function ld(a,b){try{var c=a.abortableTasks;c.forEach(function(c){return cd(c,a,b)});c.clear();null!==a.destination&&dd(a,a.destination)}catch(d){Y(a,d),Tc(a,d)}}function md(a,b){return function(){return kd(b,a)}}function nd(a,b){return function(){return ld(a,b)}} +function od(a,b){var c=b?b.identifierPrefix:void 0,d=b?b.nonce:void 0,f=b?b.bootstrapScriptContent:void 0,e=b?b.bootstrapScripts:void 0;var g=b?b.bootstrapModules:void 0;c=void 0===c?"":c;d=void 0===d?ra:x('<script nonce="'+F(d)+'">');var h=[];void 0!==f&&h.push(d,(""+f).replace(wa,xa),sa);if(void 0!==e)for(f=0;f<e.length;f++)h.push(ta,F(e[f]),va);if(void 0!==g)for(e=0;e<g.length;e++)h.push(ua,F(g[e]),va);g={bootstrapChunks:h,startInlineScript:d,placeholderPrefix:x(c+"P:"),segmentPrefix:x(c+"S:"), +boundaryPrefix:c+"B:",idPrefix:c,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1};e=b?b.namespaceURI:void 0;e=G("http://www.w3.org/2000/svg"===e?2:"http://www.w3.org/1998/Math/MathML"===e?3:0,null);f=b?b.progressiveChunkSize:void 0;d=b?b.onError:void 0;h=b?b.onAllReady:void 0;var m=b?b.onShellReady:void 0,n=b?b.onShellError:void 0;b=[];c=new Set;g={destination:null,responseState:g,progressiveChunkSize:void 0===f?12800:f,status:0,fatalError:null, +nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:c,pingedTasks:b,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===d?Oc:d,onAllReady:void 0===h?X:h,onShellReady:void 0===m?X:m,onShellError:void 0===n?X:n,onFatalError:X};e=Sc(g,0,null,e,!1,!1);e.parentFlushed=!0;a=Rc(g,a,null,e,c,hc,null,qc);b.push(a);return g} +exports.renderToPipeableStream=function(a,b){var c=od(a,b),d=!1;jd(c);return{pipe:function(a){if(d)throw Error("React currently only supports piping to one writable stream.");d=!0;kd(c,a);a.on("drain",md(a,c));a.on("error",nd(c,Error("The destination stream errored while writing data.")));a.on("close",nd(c,Error("The destination stream closed early.")));return a},abort:function(a){ld(c,a)}}};exports.version="18.3.1"; + + +/***/ }), + +/***/ 7422: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +module.exports = __webpack_require__(4362); + + +/***/ }), + +/***/ 4362: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +var __webpack_unused_export__; + + +var l, s; +if (true) { + l = __webpack_require__(6711); + s = __webpack_require__(6513); +} else {} + +__webpack_unused_export__ = l.version; +__webpack_unused_export__ = l.renderToString; +__webpack_unused_export__ = l.renderToStaticMarkup; +__webpack_unused_export__ = l.renderToNodeStream; +__webpack_unused_export__ = l.renderToStaticNodeStream; +exports.renderToPipeableStream = s.renderToPipeableStream; + + +/***/ }), + +/***/ 115: +/***/ ((module) => { + +/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */ + +var hasElementType = typeof Element !== 'undefined'; +var hasMap = typeof Map === 'function'; +var hasSet = typeof Set === 'function'; +var hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; + +// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js + +function equal(a, b) { + // START: fast-deep-equal es6/index.js 3.1.3 + if (a === b) return true; + + if (a && b && typeof a == 'object' && typeof b == 'object') { + if (a.constructor !== b.constructor) return false; + + var length, i, keys; + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (!equal(a[i], b[i])) return false; + return true; + } + + // START: Modifications: + // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code + // to co-exist with es5. + // 2. Replace `for of` with es5 compliant iteration using `for`. + // Basically, take: + // + // ```js + // for (i of a.entries()) + // if (!b.has(i[0])) return false; + // ``` + // + // ... and convert to: + // + // ```js + // it = a.entries(); + // while (!(i = it.next()).done) + // if (!b.has(i.value[0])) return false; + // ``` + // + // **Note**: `i` access switches to `i.value`. + var it; + if (hasMap && (a instanceof Map) && (b instanceof Map)) { + if (a.size !== b.size) return false; + it = a.entries(); + while (!(i = it.next()).done) + if (!b.has(i.value[0])) return false; + it = a.entries(); + while (!(i = it.next()).done) + if (!equal(i.value[1], b.get(i.value[0]))) return false; + return true; + } + + if (hasSet && (a instanceof Set) && (b instanceof Set)) { + if (a.size !== b.size) return false; + it = a.entries(); + while (!(i = it.next()).done) + if (!b.has(i.value[0])) return false; + return true; + } + // END: Modifications + + if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (a[i] !== b[i]) return false; + return true; + } + + if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; + // START: Modifications: + // Apply guards for `Object.create(null)` handling. See: + // - https://github.com/FormidableLabs/react-fast-compare/issues/64 + // - https://github.com/epoberezkin/fast-deep-equal/issues/49 + if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf(); + if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString(); + // END: Modifications + + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) return false; + + for (i = length; i-- !== 0;) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + // END: fast-deep-equal + + // START: react-fast-compare + // custom handling for DOM elements + if (hasElementType && a instanceof Element) return false; + + // custom handling for React/Preact + for (i = length; i-- !== 0;) { + if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) { + // React-specific: avoid traversing React elements' _owner + // Preact-specific: avoid traversing Preact elements' __v and __o + // __v = $_original / $_vnode + // __o = $_owner + // These properties contain circular references and are not needed when + // comparing the actual elements (and not their owners) + // .$$typeof and ._store on just reasonable markers of elements + + continue; + } + + // all other properties should be traversed as usual + if (!equal(a[keys[i]], b[keys[i]])) return false; + } + // END: react-fast-compare + + // START: fast-deep-equal + return true; + } + + return a !== a && b !== b; +} +// end fast-deep-equal + +module.exports = function isEqual(a, b) { + try { + return equal(a, b); + } catch (error) { + if (((error.message || '').match(/stack|recursion/i))) { + // warn on circular references, don't crash + // browsers give this different errors name and messages: + // chrome/safari: "RangeError", "Maximum call stack size exceeded" + // firefox: "InternalError", too much recursion" + // edge: "Error", "Out of stack space" + console.warn('react-fast-compare cannot handle circular refs'); + return false; + } + // some other error. we should definitely know about these + throw error; + } +}; + + +/***/ }), + +/***/ 545: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ mg: () => (/* binding */ W), +/* harmony export */ vd: () => (/* binding */ q) +/* harmony export */ }); +/* unused harmony export HelmetData */ +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5556); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var react_fast_compare__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(115); +/* harmony import */ var react_fast_compare__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_fast_compare__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7927); +/* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(invariant__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var shallowequal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2833); +/* harmony import */ var shallowequal__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(shallowequal__WEBPACK_IMPORTED_MODULE_3__); +function a(){return a=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},a.apply(this,arguments)}function s(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,c(t,e)}function c(t,e){return c=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},c(t,e)}function u(t,e){if(null==t)return{};var r,n,i={},o=Object.keys(t);for(n=0;n<o.length;n++)e.indexOf(r=o[n])>=0||(i[r]=t[r]);return i}var l={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},p={rel:["amphtml","canonical","alternate"]},f={type:["application/ld+json"]},d={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},h=Object.keys(l).map(function(t){return l[t]}),m={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},y=Object.keys(m).reduce(function(t,e){return t[m[e]]=e,t},{}),T=function(t,e){for(var r=t.length-1;r>=0;r-=1){var n=t[r];if(Object.prototype.hasOwnProperty.call(n,e))return n[e]}return null},g=function(t){var e=T(t,l.TITLE),r=T(t,"titleTemplate");if(Array.isArray(e)&&(e=e.join("")),r&&e)return r.replace(/%s/g,function(){return e});var n=T(t,"defaultTitle");return e||n||void 0},b=function(t){return T(t,"onChangeClientState")||function(){}},v=function(t,e){return e.filter(function(e){return void 0!==e[t]}).map(function(e){return e[t]}).reduce(function(t,e){return a({},t,e)},{})},A=function(t,e){return e.filter(function(t){return void 0!==t[l.BASE]}).map(function(t){return t[l.BASE]}).reverse().reduce(function(e,r){if(!e.length)for(var n=Object.keys(r),i=0;i<n.length;i+=1){var o=n[i].toLowerCase();if(-1!==t.indexOf(o)&&r[o])return e.concat(r)}return e},[])},C=function(t,e,r){var n={};return r.filter(function(e){return!!Array.isArray(e[t])||(void 0!==e[t]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+t+' should be of type "Array". Instead found type "'+typeof e[t]+'"'),!1)}).map(function(e){return e[t]}).reverse().reduce(function(t,r){var i={};r.filter(function(t){for(var r,o=Object.keys(t),a=0;a<o.length;a+=1){var s=o[a],c=s.toLowerCase();-1===e.indexOf(c)||"rel"===r&&"canonical"===t[r].toLowerCase()||"rel"===c&&"stylesheet"===t[c].toLowerCase()||(r=c),-1===e.indexOf(s)||"innerHTML"!==s&&"cssText"!==s&&"itemprop"!==s||(r=s)}if(!r||!t[r])return!1;var u=t[r].toLowerCase();return n[r]||(n[r]={}),i[r]||(i[r]={}),!n[r][u]&&(i[r][u]=!0,!0)}).reverse().forEach(function(e){return t.push(e)});for(var o=Object.keys(i),s=0;s<o.length;s+=1){var c=o[s],u=a({},n[c],i[c]);n[c]=u}return t},[]).reverse()},O=function(t,e){if(Array.isArray(t)&&t.length)for(var r=0;r<t.length;r+=1)if(t[r][e])return!0;return!1},S=function(t){return Array.isArray(t)?t.join(""):t},E=function(t,e){return Array.isArray(t)?t.reduce(function(t,r){return function(t,e){for(var r=Object.keys(t),n=0;n<r.length;n+=1)if(e[r[n]]&&e[r[n]].includes(t[r[n]]))return!0;return!1}(r,e)?t.priority.push(r):t.default.push(r),t},{priority:[],default:[]}):{default:t}},I=function(t,e){var r;return a({},t,((r={})[e]=void 0,r))},P=[l.NOSCRIPT,l.SCRIPT,l.STYLE],w=function(t,e){return void 0===e&&(e=!0),!1===e?String(t):String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},x=function(t){return Object.keys(t).reduce(function(e,r){var n=void 0!==t[r]?r+'="'+t[r]+'"':""+r;return e?e+" "+n:n},"")},L=function(t,e){return void 0===e&&(e={}),Object.keys(t).reduce(function(e,r){return e[m[r]||r]=t[r],e},e)},j=function(e,r){return r.map(function(r,n){var i,o=((i={key:n})["data-rh"]=!0,i);return Object.keys(r).forEach(function(t){var e=m[t]||t;"innerHTML"===e||"cssText"===e?o.dangerouslySetInnerHTML={__html:r.innerHTML||r.cssText}:o[e]=r[t]}),react__WEBPACK_IMPORTED_MODULE_0__.createElement(e,o)})},M=function(e,r,n){switch(e){case l.TITLE:return{toComponent:function(){return n=r.titleAttributes,(i={key:e=r.title})["data-rh"]=!0,o=L(n,i),[react__WEBPACK_IMPORTED_MODULE_0__.createElement(l.TITLE,o,e)];var e,n,i,o},toString:function(){return function(t,e,r,n){var i=x(r),o=S(e);return i?"<"+t+' data-rh="true" '+i+">"+w(o,n)+"</"+t+">":"<"+t+' data-rh="true">'+w(o,n)+"</"+t+">"}(e,r.title,r.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return L(r)},toString:function(){return x(r)}};default:return{toComponent:function(){return j(e,r)},toString:function(){return function(t,e,r){return e.reduce(function(e,n){var i=Object.keys(n).filter(function(t){return!("innerHTML"===t||"cssText"===t)}).reduce(function(t,e){var i=void 0===n[e]?e:e+'="'+w(n[e],r)+'"';return t?t+" "+i:i},""),o=n.innerHTML||n.cssText||"",a=-1===P.indexOf(t);return e+"<"+t+' data-rh="true" '+i+(a?"/>":">"+o+"</"+t+">")},"")}(e,r,n)}}}},k=function(t){var e=t.baseTag,r=t.bodyAttributes,n=t.encode,i=t.htmlAttributes,o=t.noscriptTags,a=t.styleTags,s=t.title,c=void 0===s?"":s,u=t.titleAttributes,h=t.linkTags,m=t.metaTags,y=t.scriptTags,T={toComponent:function(){},toString:function(){return""}};if(t.prioritizeSeoTags){var g=function(t){var e=t.linkTags,r=t.scriptTags,n=t.encode,i=E(t.metaTags,d),o=E(e,p),a=E(r,f);return{priorityMethods:{toComponent:function(){return[].concat(j(l.META,i.priority),j(l.LINK,o.priority),j(l.SCRIPT,a.priority))},toString:function(){return M(l.META,i.priority,n)+" "+M(l.LINK,o.priority,n)+" "+M(l.SCRIPT,a.priority,n)}},metaTags:i.default,linkTags:o.default,scriptTags:a.default}}(t);T=g.priorityMethods,h=g.linkTags,m=g.metaTags,y=g.scriptTags}return{priority:T,base:M(l.BASE,e,n),bodyAttributes:M("bodyAttributes",r,n),htmlAttributes:M("htmlAttributes",i,n),link:M(l.LINK,h,n),meta:M(l.META,m,n),noscript:M(l.NOSCRIPT,o,n),script:M(l.SCRIPT,y,n),style:M(l.STYLE,a,n),title:M(l.TITLE,{title:c,titleAttributes:u},n)}},H=[],N=function(t,e){var r=this;void 0===e&&(e="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(t){r.context.helmet=t},helmetInstances:{get:function(){return r.canUseDOM?H:r.instances},add:function(t){(r.canUseDOM?H:r.instances).push(t)},remove:function(t){var e=(r.canUseDOM?H:r.instances).indexOf(t);(r.canUseDOM?H:r.instances).splice(e,1)}}},this.context=t,this.canUseDOM=e,e||(t.helmet=k({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},R=react__WEBPACK_IMPORTED_MODULE_0__.createContext({}),D=prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({setHelmet:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),helmetInstances:prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({get:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),add:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),remove:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().func)})}),U="undefined"!=typeof document,q=/*#__PURE__*/function(e){function r(t){var n;return(n=e.call(this,t)||this).helmetData=new N(n.props.context,r.canUseDOM),n}return s(r,e),r.prototype.render=function(){/*#__PURE__*/return react__WEBPACK_IMPORTED_MODULE_0__.createElement(R.Provider,{value:this.helmetData.value},this.props.children)},r}(react__WEBPACK_IMPORTED_MODULE_0__.Component);q.canUseDOM=U,q.propTypes={context:prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({helmet:prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape()}),children:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().node).isRequired},q.defaultProps={context:{}},q.displayName="HelmetProvider";var Y=function(t,e){var r,n=document.head||document.querySelector(l.HEAD),i=n.querySelectorAll(t+"[data-rh]"),o=[].slice.call(i),a=[];return e&&e.length&&e.forEach(function(e){var n=document.createElement(t);for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&("innerHTML"===i?n.innerHTML=e.innerHTML:"cssText"===i?n.styleSheet?n.styleSheet.cssText=e.cssText:n.appendChild(document.createTextNode(e.cssText)):n.setAttribute(i,void 0===e[i]?"":e[i]));n.setAttribute("data-rh","true"),o.some(function(t,e){return r=e,n.isEqualNode(t)})?o.splice(r,1):a.push(n)}),o.forEach(function(t){return t.parentNode.removeChild(t)}),a.forEach(function(t){return n.appendChild(t)}),{oldTags:o,newTags:a}},B=function(t,e){var r=document.getElementsByTagName(t)[0];if(r){for(var n=r.getAttribute("data-rh"),i=n?n.split(","):[],o=[].concat(i),a=Object.keys(e),s=0;s<a.length;s+=1){var c=a[s],u=e[c]||"";r.getAttribute(c)!==u&&r.setAttribute(c,u),-1===i.indexOf(c)&&i.push(c);var l=o.indexOf(c);-1!==l&&o.splice(l,1)}for(var p=o.length-1;p>=0;p-=1)r.removeAttribute(o[p]);i.length===o.length?r.removeAttribute("data-rh"):r.getAttribute("data-rh")!==a.join(",")&&r.setAttribute("data-rh",a.join(","))}},K=function(t,e){var r=t.baseTag,n=t.htmlAttributes,i=t.linkTags,o=t.metaTags,a=t.noscriptTags,s=t.onChangeClientState,c=t.scriptTags,u=t.styleTags,p=t.title,f=t.titleAttributes;B(l.BODY,t.bodyAttributes),B(l.HTML,n),function(t,e){void 0!==t&&document.title!==t&&(document.title=S(t)),B(l.TITLE,e)}(p,f);var d={baseTag:Y(l.BASE,r),linkTags:Y(l.LINK,i),metaTags:Y(l.META,o),noscriptTags:Y(l.NOSCRIPT,a),scriptTags:Y(l.SCRIPT,c),styleTags:Y(l.STYLE,u)},h={},m={};Object.keys(d).forEach(function(t){var e=d[t],r=e.newTags,n=e.oldTags;r.length&&(h[t]=r),n.length&&(m[t]=d[t].oldTags)}),e&&e(),s(t,h,m)},_=null,z=/*#__PURE__*/function(t){function e(){for(var e,r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return(e=t.call.apply(t,[this].concat(n))||this).rendered=!1,e}s(e,t);var r=e.prototype;return r.shouldComponentUpdate=function(t){return!shallowequal__WEBPACK_IMPORTED_MODULE_3___default()(t,this.props)},r.componentDidUpdate=function(){this.emitChange()},r.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},r.emitChange=function(){var t,e,r=this.props.context,n=r.setHelmet,i=null,o=(t=r.helmetInstances.get().map(function(t){var e=a({},t.props);return delete e.context,e}),{baseTag:A(["href"],t),bodyAttributes:v("bodyAttributes",t),defer:T(t,"defer"),encode:T(t,"encodeSpecialCharacters"),htmlAttributes:v("htmlAttributes",t),linkTags:C(l.LINK,["rel","href"],t),metaTags:C(l.META,["name","charset","http-equiv","property","itemprop"],t),noscriptTags:C(l.NOSCRIPT,["innerHTML"],t),onChangeClientState:b(t),scriptTags:C(l.SCRIPT,["src","innerHTML"],t),styleTags:C(l.STYLE,["cssText"],t),title:g(t),titleAttributes:v("titleAttributes",t),prioritizeSeoTags:O(t,"prioritizeSeoTags")});q.canUseDOM?(e=o,_&&cancelAnimationFrame(_),e.defer?_=requestAnimationFrame(function(){K(e,function(){_=null})}):(K(e),_=null)):k&&(i=k(o)),n(i)},r.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},r.render=function(){return this.init(),null},e}(react__WEBPACK_IMPORTED_MODULE_0__.Component);z.propTypes={context:D.isRequired},z.displayName="HelmetDispatcher";var F=["children"],G=["children"],W=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}s(r,e);var o=r.prototype;return o.shouldComponentUpdate=function(t){return!react_fast_compare__WEBPACK_IMPORTED_MODULE_1___default()(I(this.props,"helmetData"),I(t,"helmetData"))},o.mapNestedChildrenToProps=function(t,e){if(!e)return null;switch(t.type){case l.SCRIPT:case l.NOSCRIPT:return{innerHTML:e};case l.STYLE:return{cssText:e};default:throw new Error("<"+t.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},o.flattenArrayTypeChildren=function(t){var e,r=t.child,n=t.arrayTypeChildren;return a({},n,((e={})[r.type]=[].concat(n[r.type]||[],[a({},t.newChildProps,this.mapNestedChildrenToProps(r,t.nestedChildren))]),e))},o.mapObjectTypeChildren=function(t){var e,r,n=t.child,i=t.newProps,o=t.newChildProps,s=t.nestedChildren;switch(n.type){case l.TITLE:return a({},i,((e={})[n.type]=s,e.titleAttributes=a({},o),e));case l.BODY:return a({},i,{bodyAttributes:a({},o)});case l.HTML:return a({},i,{htmlAttributes:a({},o)});default:return a({},i,((r={})[n.type]=a({},o),r))}},o.mapArrayTypeChildrenToProps=function(t,e){var r=a({},e);return Object.keys(t).forEach(function(e){var n;r=a({},r,((n={})[e]=t[e],n))}),r},o.warnOnInvalidChildren=function(t,e){return invariant__WEBPACK_IMPORTED_MODULE_2___default()(h.some(function(e){return t.type===e}),"function"==typeof t.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+h.join(", ")+" are allowed. Helmet does not support rendering <"+t.type+"> elements. Refer to our API for more information."),invariant__WEBPACK_IMPORTED_MODULE_2___default()(!e||"string"==typeof e||Array.isArray(e)&&!e.some(function(t){return"string"!=typeof t}),"Helmet expects a string as a child of <"+t.type+">. Did you forget to wrap your children in braces? ( <"+t.type+">{``}</"+t.type+"> ) Refer to our API for more information."),!0},o.mapChildrenToProps=function(e,r){var n=this,i={};return react__WEBPACK_IMPORTED_MODULE_0__.Children.forEach(e,function(t){if(t&&t.props){var e=t.props,o=e.children,a=u(e,F),s=Object.keys(a).reduce(function(t,e){return t[y[e]||e]=a[e],t},{}),c=t.type;switch("symbol"==typeof c?c=c.toString():n.warnOnInvalidChildren(t,o),c){case l.FRAGMENT:r=n.mapChildrenToProps(o,r);break;case l.LINK:case l.META:case l.NOSCRIPT:case l.SCRIPT:case l.STYLE:i=n.flattenArrayTypeChildren({child:t,arrayTypeChildren:i,newChildProps:s,nestedChildren:o});break;default:r=n.mapObjectTypeChildren({child:t,newProps:r,newChildProps:s,nestedChildren:o})}}}),this.mapArrayTypeChildrenToProps(i,r)},o.render=function(){var e=this.props,r=e.children,n=u(e,G),i=a({},n),o=n.helmetData;return r&&(i=this.mapChildrenToProps(r,i)),!o||o instanceof N||(o=new N(o.context,o.instances)),o?/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(z,a({},i,{context:o.value,helmetData:void 0})):/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(R.Consumer,null,function(e){/*#__PURE__*/return react__WEBPACK_IMPORTED_MODULE_0__.createElement(z,a({},i,{context:e}))})},r}(react__WEBPACK_IMPORTED_MODULE_0__.Component);W.propTypes={base:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().object),bodyAttributes:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().object),children:prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)),(prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)]),defaultTitle:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),defer:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool),encodeSpecialCharacters:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool),htmlAttributes:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().object),link:prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)),meta:prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)),noscript:prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)),onChangeClientState:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),script:prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)),style:prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)),title:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),titleAttributes:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().object),titleTemplate:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),prioritizeSeoTags:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool),helmetData:(prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)},W.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},W.displayName="Helmet"; +//# sourceMappingURL=index.module.js.map + + +/***/ }), + +/***/ 2799: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b? +Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119; +function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d; +exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t}; +exports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p}; +exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z; + + +/***/ }), + +/***/ 4363: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +if (true) { + module.exports = __webpack_require__(2799); +} else {} + + +/***/ }), + +/***/ 3259: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +var React = __webpack_require__(6540); + +var ALL_INITIALIZERS = []; +var READY_INITIALIZERS = []; + +function isWebpackReady(getModuleIds) { + if (false) {} + + return getModuleIds().every(function (moduleId) { + return typeof moduleId !== "undefined" && typeof __webpack_require__.m[moduleId] !== "undefined"; + }); +} + +var LoadableCaptureContext = React.createContext(null); + +function load(loader) { + var promise = loader(); + var state = { + loading: true, + loaded: null, + error: null + }; + state.promise = promise.then(function (loaded) { + state.loading = false; + state.loaded = loaded; + return loaded; + }).catch(function (err) { + state.loading = false; + state.error = err; + throw err; + }); + return state; +} + +function loadMap(obj) { + var state = { + loading: false, + loaded: {}, + error: null + }; + var promises = []; + + try { + Object.keys(obj).forEach(function (key) { + var result = load(obj[key]); + + if (!result.loading) { + state.loaded[key] = result.loaded; + state.error = result.error; + } else { + state.loading = true; + } + + promises.push(result.promise); + result.promise.then(function (res) { + state.loaded[key] = res; + }).catch(function (err) { + state.error = err; + }); + }); + } catch (err) { + state.error = err; + } + + state.promise = Promise.all(promises).then(function (res) { + state.loading = false; + return res; + }).catch(function (err) { + state.loading = false; + throw err; + }); + return state; +} + +function resolve(obj) { + return obj && obj.__esModule ? obj.default : obj; +} + +function render(loaded, props) { + return React.createElement(resolve(loaded), props); +} + +function createLoadableComponent(loadFn, options) { + var _class, _temp; + + if (!options.loading) { + throw new Error("react-loadable requires a `loading` component"); + } + + var opts = _extends({ + loader: null, + loading: null, + delay: 200, + timeout: null, + render: render, + webpack: null, + modules: null + }, options); + + var res = null; + + function init() { + if (!res) { + res = loadFn(opts.loader); + } + + return res.promise; + } + + ALL_INITIALIZERS.push(init); + + if (typeof opts.webpack === "function") { + READY_INITIALIZERS.push(function () { + if (isWebpackReady(opts.webpack)) { + return init(); + } + }); + } + + return _temp = _class = + /*#__PURE__*/ + function (_React$Component) { + _inheritsLoose(LoadableComponent, _React$Component); + + function LoadableComponent(props) { + var _this; + + _this = _React$Component.call(this, props) || this; + + _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "retry", function () { + _this.setState({ + error: null, + loading: true, + timedOut: false + }); + + res = loadFn(opts.loader); + + _this._loadModule(); + }); + + init(); + _this.state = { + error: res.error, + pastDelay: false, + timedOut: false, + loading: res.loading, + loaded: res.loaded + }; + return _this; + } + + LoadableComponent.preload = function preload() { + return init(); + }; + + var _proto = LoadableComponent.prototype; + + _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() { + this._loadModule(); + }; + + _proto.componentDidMount = function componentDidMount() { + this._mounted = true; + }; + + _proto._loadModule = function _loadModule() { + var _this2 = this; + + if (this.context && Array.isArray(opts.modules)) { + opts.modules.forEach(function (moduleName) { + _this2.context.report(moduleName); + }); + } + + if (!res.loading) { + return; + } + + var setStateWithMountCheck = function setStateWithMountCheck(newState) { + if (!_this2._mounted) { + return; + } + + _this2.setState(newState); + }; + + if (typeof opts.delay === 'number') { + if (opts.delay === 0) { + this.setState({ + pastDelay: true + }); + } else { + this._delay = setTimeout(function () { + setStateWithMountCheck({ + pastDelay: true + }); + }, opts.delay); + } + } + + if (typeof opts.timeout === "number") { + this._timeout = setTimeout(function () { + setStateWithMountCheck({ + timedOut: true + }); + }, opts.timeout); + } + + var update = function update() { + setStateWithMountCheck({ + error: res.error, + loaded: res.loaded, + loading: res.loading + }); + + _this2._clearTimeouts(); + }; + + res.promise.then(function () { + update(); + return null; + }).catch(function (err) { + update(); + return null; + }); + }; + + _proto.componentWillUnmount = function componentWillUnmount() { + this._mounted = false; + + this._clearTimeouts(); + }; + + _proto._clearTimeouts = function _clearTimeouts() { + clearTimeout(this._delay); + clearTimeout(this._timeout); + }; + + _proto.render = function render() { + if (this.state.loading || this.state.error) { + return React.createElement(opts.loading, { + isLoading: this.state.loading, + pastDelay: this.state.pastDelay, + timedOut: this.state.timedOut, + error: this.state.error, + retry: this.retry + }); + } else if (this.state.loaded) { + return opts.render(this.state.loaded, this.props); + } else { + return null; + } + }; + + return LoadableComponent; + }(React.Component), _defineProperty(_class, "contextType", LoadableCaptureContext), _temp; +} + +function Loadable(opts) { + return createLoadableComponent(load, opts); +} + +function LoadableMap(opts) { + if (typeof opts.render !== "function") { + throw new Error("LoadableMap requires a `render(loaded, props)` function"); + } + + return createLoadableComponent(loadMap, opts); +} + +Loadable.Map = LoadableMap; + +var Capture = +/*#__PURE__*/ +function (_React$Component2) { + _inheritsLoose(Capture, _React$Component2); + + function Capture() { + return _React$Component2.apply(this, arguments) || this; + } + + var _proto2 = Capture.prototype; + + _proto2.render = function render() { + return React.createElement(LoadableCaptureContext.Provider, { + value: { + report: this.props.report + } + }, React.Children.only(this.props.children)); + }; + + return Capture; +}(React.Component); + +Loadable.Capture = Capture; + +function flushInitializers(initializers) { + var promises = []; + + while (initializers.length) { + var init = initializers.pop(); + promises.push(init()); + } + + return Promise.all(promises).then(function () { + if (initializers.length) { + return flushInitializers(initializers); + } + }); +} + +Loadable.preloadAll = function () { + return new Promise(function (resolve, reject) { + flushInitializers(ALL_INITIALIZERS).then(resolve, reject); + }); +}; + +Loadable.preloadReady = function () { + return new Promise(function (resolve, reject) { + // We always will resolve, errors should be handled within loading UIs. + flushInitializers(READY_INITIALIZERS).then(resolve, resolve); + }); +}; + +module.exports = Loadable; + +/***/ }), + +/***/ 2831: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ u: () => (/* binding */ matchRoutes), +/* harmony export */ v: () => (/* binding */ renderRoutes) +/* harmony export */ }); +/* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6347); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8168); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); + + + + +function matchRoutes(routes, pathname, +/*not public API*/ +branch) { + if (branch === void 0) { + branch = []; + } + + routes.some(function (route) { + var match = route.path ? (0,react_router__WEBPACK_IMPORTED_MODULE_1__/* .matchPath */ .B6)(pathname, route) : branch.length ? branch[branch.length - 1].match // use parent match + : react_router__WEBPACK_IMPORTED_MODULE_1__/* .Router */ .Ix.computeRootMatch(pathname); // use default "root" match + + if (match) { + branch.push({ + route: route, + match: match + }); + + if (route.routes) { + matchRoutes(route.routes, pathname, branch); + } + } + + return match; + }); + return branch; +} + +function renderRoutes(routes, extraProps, switchProps) { + if (extraProps === void 0) { + extraProps = {}; + } + + if (switchProps === void 0) { + switchProps = {}; + } + + return routes ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_1__/* .Switch */ .dO, switchProps, routes.map(function (route, i) { + return react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_1__/* .Route */ .qh, { + key: route.key || i, + path: route.path, + exact: route.exact, + strict: route.strict, + render: function render(props) { + return route.render ? route.render((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)({}, props, {}, extraProps, { + route: route + })) : react__WEBPACK_IMPORTED_MODULE_0__.createElement(route.component, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)({}, props, extraProps, { + route: route + })); + } + }); + })) : null; +} + + +//# sourceMappingURL=react-router-config.js.map + + +/***/ }), + +/***/ 6347: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ B6: () => (/* binding */ matchPath), +/* harmony export */ Ix: () => (/* binding */ Router), +/* harmony export */ W6: () => (/* binding */ useHistory), +/* harmony export */ XZ: () => (/* binding */ context), +/* harmony export */ dO: () => (/* binding */ Switch), +/* harmony export */ kO: () => (/* binding */ StaticRouter), +/* harmony export */ qh: () => (/* binding */ Route), +/* harmony export */ zy: () => (/* binding */ useLocation) +/* harmony export */ }); +/* unused harmony exports MemoryRouter, Prompt, Redirect, __HistoryContext, generatePath, useParams, useRouteMatch, withRouter */ +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2892); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5556); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var history__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1513); +/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1561); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(8168); +/* harmony import */ var path_to_regexp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5302); +/* harmony import */ var path_to_regexp__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path_to_regexp__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4363); +/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(8587); +/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4146); +/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_3__); + + + + + + + + + + + + +var MAX_SIGNED_31_BIT_INT = 1073741823; +var commonjsGlobal = typeof globalThis !== "undefined" // 'global proper' +? // eslint-disable-next-line no-undef +globalThis : typeof window !== "undefined" ? window // Browser +: typeof global !== "undefined" ? global // node.js +: {}; + +function getUniqueId() { + var key = "__global_unique_id__"; + return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1; +} // Inlined Object.is polyfill. +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + + +function objectIs(x, y) { + if (x === y) { + return x !== 0 || 1 / x === 1 / y; + } else { + // eslint-disable-next-line no-self-compare + return x !== x && y !== y; + } +} + +function createEventEmitter(value) { + var handlers = []; + return { + on: function on(handler) { + handlers.push(handler); + }, + off: function off(handler) { + handlers = handlers.filter(function (h) { + return h !== handler; + }); + }, + get: function get() { + return value; + }, + set: function set(newValue, changedBits) { + value = newValue; + handlers.forEach(function (handler) { + return handler(value, changedBits); + }); + } + }; +} + +function onlyChild(children) { + return Array.isArray(children) ? children[0] : children; +} + +function createReactContext(defaultValue, calculateChangedBits) { + var _Provider$childContex, _Consumer$contextType; + + var contextProp = "__create-react-context-" + getUniqueId() + "__"; + + var Provider = /*#__PURE__*/function (_React$Component) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(Provider, _React$Component); + + function Provider() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this; + _this.emitter = createEventEmitter(_this.props.value); + return _this; + } + + var _proto = Provider.prototype; + + _proto.getChildContext = function getChildContext() { + var _ref; + + return _ref = {}, _ref[contextProp] = this.emitter, _ref; + }; + + _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { + if (this.props.value !== nextProps.value) { + var oldValue = this.props.value; + var newValue = nextProps.value; + var changedBits; + + if (objectIs(oldValue, newValue)) { + changedBits = 0; // No change + } else { + changedBits = typeof calculateChangedBits === "function" ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT; + + if (false) {} + + changedBits |= 0; + + if (changedBits !== 0) { + this.emitter.set(nextProps.value, changedBits); + } + } + } + }; + + _proto.render = function render() { + return this.props.children; + }; + + return Provider; + }(react__WEBPACK_IMPORTED_MODULE_0__.Component); + + Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object).isRequired, _Provider$childContex); + + var Consumer = /*#__PURE__*/function (_React$Component2) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(Consumer, _React$Component2); + + function Consumer() { + var _this2; + + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + _this2 = _React$Component2.call.apply(_React$Component2, [this].concat(args)) || this; + _this2.observedBits = void 0; + _this2.state = { + value: _this2.getValue() + }; + + _this2.onUpdate = function (newValue, changedBits) { + var observedBits = _this2.observedBits | 0; + + if ((observedBits & changedBits) !== 0) { + _this2.setState({ + value: _this2.getValue() + }); + } + }; + + return _this2; + } + + var _proto2 = Consumer.prototype; + + _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { + var observedBits = nextProps.observedBits; + this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default + : observedBits; + }; + + _proto2.componentDidMount = function componentDidMount() { + if (this.context[contextProp]) { + this.context[contextProp].on(this.onUpdate); + } + + var observedBits = this.props.observedBits; + this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default + : observedBits; + }; + + _proto2.componentWillUnmount = function componentWillUnmount() { + if (this.context[contextProp]) { + this.context[contextProp].off(this.onUpdate); + } + }; + + _proto2.getValue = function getValue() { + if (this.context[contextProp]) { + return this.context[contextProp].get(); + } else { + return defaultValue; + } + }; + + _proto2.render = function render() { + return onlyChild(this.props.children)(this.state.value); + }; + + return Consumer; + }(react__WEBPACK_IMPORTED_MODULE_0__.Component); + + Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object), _Consumer$contextType); + return { + Provider: Provider, + Consumer: Consumer + }; +} + +// MIT License +var createContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext || createReactContext; + +// TODO: Replace with React.createContext once we can assume React 16+ + +var createNamedContext = function createNamedContext(name) { + var context = createContext(); + context.displayName = name; + return context; +}; + +var historyContext = /*#__PURE__*/createNamedContext("Router-History"); + +var context = /*#__PURE__*/createNamedContext("Router"); + +/** + * The public API for putting history on context. + */ + +var Router = /*#__PURE__*/function (_React$Component) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(Router, _React$Component); + + Router.computeRootMatch = function computeRootMatch(pathname) { + return { + path: "/", + url: "/", + params: {}, + isExact: pathname === "/" + }; + }; + + function Router(props) { + var _this; + + _this = _React$Component.call(this, props) || this; + _this.state = { + location: props.history.location + }; // This is a bit of a hack. We have to start listening for location + // changes here in the constructor in case there are any <Redirect>s + // on the initial render. If there are, they will replace/push when + // they mount and since cDM fires in children before parents, we may + // get a new location before the <Router> is mounted. + + _this._isMounted = false; + _this._pendingLocation = null; + + if (!props.staticContext) { + _this.unlisten = props.history.listen(function (location) { + _this._pendingLocation = location; + }); + } + + return _this; + } + + var _proto = Router.prototype; + + _proto.componentDidMount = function componentDidMount() { + var _this2 = this; + + this._isMounted = true; + + if (this.unlisten) { + // Any pre-mount location changes have been captured at + // this point, so unregister the listener. + this.unlisten(); + } + + if (!this.props.staticContext) { + this.unlisten = this.props.history.listen(function (location) { + if (_this2._isMounted) { + _this2.setState({ + location: location + }); + } + }); + } + + if (this._pendingLocation) { + this.setState({ + location: this._pendingLocation + }); + } + }; + + _proto.componentWillUnmount = function componentWillUnmount() { + if (this.unlisten) { + this.unlisten(); + this._isMounted = false; + this._pendingLocation = null; + } + }; + + _proto.render = function render() { + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(context.Provider, { + value: { + history: this.props.history, + location: this.state.location, + match: Router.computeRootMatch(this.state.location.pathname), + staticContext: this.props.staticContext + } + }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(historyContext.Provider, { + children: this.props.children || null, + value: this.props.history + })); + }; + + return Router; +}(react__WEBPACK_IMPORTED_MODULE_0__.Component); + +if (false) {} + +/** + * The public API for a <Router> that stores location in memory. + */ + +var MemoryRouter = /*#__PURE__*/function (_React$Component) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(MemoryRouter, _React$Component); + + function MemoryRouter() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this; + _this.history = (0,history__WEBPACK_IMPORTED_MODULE_6__/* .createMemoryHistory */ .sC)(_this.props); + return _this; + } + + var _proto = MemoryRouter.prototype; + + _proto.render = function render() { + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Router, { + history: this.history, + children: this.props.children + }); + }; + + return MemoryRouter; +}(react__WEBPACK_IMPORTED_MODULE_0__.Component); + +if (false) {} + +var Lifecycle = /*#__PURE__*/function (_React$Component) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(Lifecycle, _React$Component); + + function Lifecycle() { + return _React$Component.apply(this, arguments) || this; + } + + var _proto = Lifecycle.prototype; + + _proto.componentDidMount = function componentDidMount() { + if (this.props.onMount) this.props.onMount.call(this, this); + }; + + _proto.componentDidUpdate = function componentDidUpdate(prevProps) { + if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps); + }; + + _proto.componentWillUnmount = function componentWillUnmount() { + if (this.props.onUnmount) this.props.onUnmount.call(this, this); + }; + + _proto.render = function render() { + return null; + }; + + return Lifecycle; +}(react__WEBPACK_IMPORTED_MODULE_0__.Component); + +/** + * The public API for prompting the user before navigating away from a screen. + */ + +function Prompt(_ref) { + var message = _ref.message, + _ref$when = _ref.when, + when = _ref$when === void 0 ? true : _ref$when; + return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) { + !context ? false ? 0 : invariant(false) : void 0; + if (!when || context.staticContext) return null; + var method = context.history.block; + return /*#__PURE__*/React.createElement(Lifecycle, { + onMount: function onMount(self) { + self.release = method(message); + }, + onUpdate: function onUpdate(self, prevProps) { + if (prevProps.message !== message) { + self.release(); + self.release = method(message); + } + }, + onUnmount: function onUnmount(self) { + self.release(); + }, + message: message + }); + }); +} + +if (false) { var messageType; } + +var cache = {}; +var cacheLimit = 10000; +var cacheCount = 0; + +function compilePath(path) { + if (cache[path]) return cache[path]; + var generator = pathToRegexp.compile(path); + + if (cacheCount < cacheLimit) { + cache[path] = generator; + cacheCount++; + } + + return generator; +} +/** + * Public API for generating a URL pathname from a path and parameters. + */ + + +function generatePath(path, params) { + if (path === void 0) { + path = "/"; + } + + if (params === void 0) { + params = {}; + } + + return path === "/" ? path : compilePath(path)(params, { + pretty: true + }); +} + +/** + * The public API for navigating programmatically with a component. + */ + +function Redirect(_ref) { + var computedMatch = _ref.computedMatch, + to = _ref.to, + _ref$push = _ref.push, + push = _ref$push === void 0 ? false : _ref$push; + return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) { + !context ? false ? 0 : invariant(false) : void 0; + var history = context.history, + staticContext = context.staticContext; + var method = push ? history.push : history.replace; + var location = createLocation(computedMatch ? typeof to === "string" ? generatePath(to, computedMatch.params) : _extends({}, to, { + pathname: generatePath(to.pathname, computedMatch.params) + }) : to); // When rendering in a static context, + // set the new location immediately. + + if (staticContext) { + method(location); + return null; + } + + return /*#__PURE__*/React.createElement(Lifecycle, { + onMount: function onMount() { + method(location); + }, + onUpdate: function onUpdate(self, prevProps) { + var prevLocation = createLocation(prevProps.to); + + if (!locationsAreEqual(prevLocation, _extends({}, location, { + key: prevLocation.key + }))) { + method(location); + } + }, + to: to + }); + }); +} + +if (false) {} + +var cache$1 = {}; +var cacheLimit$1 = 10000; +var cacheCount$1 = 0; + +function compilePath$1(path, options) { + var cacheKey = "" + options.end + options.strict + options.sensitive; + var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {}); + if (pathCache[path]) return pathCache[path]; + var keys = []; + var regexp = path_to_regexp__WEBPACK_IMPORTED_MODULE_1___default()(path, keys, options); + var result = { + regexp: regexp, + keys: keys + }; + + if (cacheCount$1 < cacheLimit$1) { + pathCache[path] = result; + cacheCount$1++; + } + + return result; +} +/** + * Public API for matching a URL pathname to a path. + */ + + +function matchPath(pathname, options) { + if (options === void 0) { + options = {}; + } + + if (typeof options === "string" || Array.isArray(options)) { + options = { + path: options + }; + } + + var _options = options, + path = _options.path, + _options$exact = _options.exact, + exact = _options$exact === void 0 ? false : _options$exact, + _options$strict = _options.strict, + strict = _options$strict === void 0 ? false : _options$strict, + _options$sensitive = _options.sensitive, + sensitive = _options$sensitive === void 0 ? false : _options$sensitive; + var paths = [].concat(path); + return paths.reduce(function (matched, path) { + if (!path && path !== "") return null; + if (matched) return matched; + + var _compilePath = compilePath$1(path, { + end: exact, + strict: strict, + sensitive: sensitive + }), + regexp = _compilePath.regexp, + keys = _compilePath.keys; + + var match = regexp.exec(pathname); + if (!match) return null; + var url = match[0], + values = match.slice(1); + var isExact = pathname === url; + if (exact && !isExact) return null; + return { + path: path, + // the path used to match + url: path === "/" && url === "" ? "/" : url, + // the matched portion of the URL + isExact: isExact, + // whether or not we matched exactly + params: keys.reduce(function (memo, key, index) { + memo[key.name] = values[index]; + return memo; + }, {}) + }; + }, null); +} + +function isEmptyChildren(children) { + return react__WEBPACK_IMPORTED_MODULE_0__.Children.count(children) === 0; +} + +function evalChildrenDev(children, props, path) { + var value = children(props); + false ? 0 : void 0; + return value || null; +} +/** + * The public API for matching a single path and rendering. + */ + + +var Route = /*#__PURE__*/function (_React$Component) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(Route, _React$Component); + + function Route() { + return _React$Component.apply(this, arguments) || this; + } + + var _proto = Route.prototype; + + _proto.render = function render() { + var _this = this; + + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(context.Consumer, null, function (context$1) { + !context$1 ? false ? 0 : (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(false) : void 0; + var location = _this.props.location || context$1.location; + var match = _this.props.computedMatch ? _this.props.computedMatch // <Switch> already computed the match for us + : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match; + + var props = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)({}, context$1, { + location: location, + match: match + }); + + var _this$props = _this.props, + children = _this$props.children, + component = _this$props.component, + render = _this$props.render; // Preact uses an empty array as children by + // default, so use null if that's the case. + + if (Array.isArray(children) && isEmptyChildren(children)) { + children = null; + } + + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(context.Provider, { + value: props + }, props.match ? children ? typeof children === "function" ? false ? 0 : children(props) : children : component ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(component, props) : render ? render(props) : null : typeof children === "function" ? false ? 0 : children(props) : null); + }); + }; + + return Route; +}(react__WEBPACK_IMPORTED_MODULE_0__.Component); + +if (false) {} + +function addLeadingSlash(path) { + return path.charAt(0) === "/" ? path : "/" + path; +} + +function addBasename(basename, location) { + if (!basename) return location; + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)({}, location, { + pathname: addLeadingSlash(basename) + location.pathname + }); +} + +function stripBasename(basename, location) { + if (!basename) return location; + var base = addLeadingSlash(basename); + if (location.pathname.indexOf(base) !== 0) return location; + return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)({}, location, { + pathname: location.pathname.substr(base.length) + }); +} + +function createURL(location) { + return typeof location === "string" ? location : (0,history__WEBPACK_IMPORTED_MODULE_6__/* .createPath */ .AO)(location); +} + +function staticHandler(methodName) { + return function () { + false ? 0 : (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(false) ; + }; +} + +function noop() {} +/** + * The public top-level API for a "static" <Router>, so-called because it + * can't actually change the current location. Instead, it just records + * location changes in a context object. Useful mainly in testing and + * server-rendering scenarios. + */ + + +var StaticRouter = /*#__PURE__*/function (_React$Component) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(StaticRouter, _React$Component); + + function StaticRouter() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this; + + _this.handlePush = function (location) { + return _this.navigateTo(location, "PUSH"); + }; + + _this.handleReplace = function (location) { + return _this.navigateTo(location, "REPLACE"); + }; + + _this.handleListen = function () { + return noop; + }; + + _this.handleBlock = function () { + return noop; + }; + + return _this; + } + + var _proto = StaticRouter.prototype; + + _proto.navigateTo = function navigateTo(location, action) { + var _this$props = this.props, + _this$props$basename = _this$props.basename, + basename = _this$props$basename === void 0 ? "" : _this$props$basename, + _this$props$context = _this$props.context, + context = _this$props$context === void 0 ? {} : _this$props$context; + context.action = action; + context.location = addBasename(basename, (0,history__WEBPACK_IMPORTED_MODULE_6__/* .createLocation */ .yJ)(location)); + context.url = createURL(context.location); + }; + + _proto.render = function render() { + var _this$props2 = this.props, + _this$props2$basename = _this$props2.basename, + basename = _this$props2$basename === void 0 ? "" : _this$props2$basename, + _this$props2$context = _this$props2.context, + context = _this$props2$context === void 0 ? {} : _this$props2$context, + _this$props2$location = _this$props2.location, + location = _this$props2$location === void 0 ? "/" : _this$props2$location, + rest = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(_this$props2, ["basename", "context", "location"]); + + var history = { + createHref: function createHref(path) { + return addLeadingSlash(basename + createURL(path)); + }, + action: "POP", + location: stripBasename(basename, (0,history__WEBPACK_IMPORTED_MODULE_6__/* .createLocation */ .yJ)(location)), + push: this.handlePush, + replace: this.handleReplace, + go: staticHandler("go"), + goBack: staticHandler("goBack"), + goForward: staticHandler("goForward"), + listen: this.handleListen, + block: this.handleBlock + }; + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Router, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)({}, rest, { + history: history, + staticContext: context + })); + }; + + return StaticRouter; +}(react__WEBPACK_IMPORTED_MODULE_0__.Component); + +if (false) {} + +/** + * The public API for rendering the first <Route> that matches. + */ + +var Switch = /*#__PURE__*/function (_React$Component) { + (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(Switch, _React$Component); + + function Switch() { + return _React$Component.apply(this, arguments) || this; + } + + var _proto = Switch.prototype; + + _proto.render = function render() { + var _this = this; + + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(context.Consumer, null, function (context) { + !context ? false ? 0 : (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(false) : void 0; + var location = _this.props.location || context.location; + var element, match; // We use React.Children.forEach instead of React.Children.toArray().find() + // here because toArray adds keys to all child elements and we do not want + // to trigger an unmount/remount for two <Route>s that render the same + // component at different URLs. + + react__WEBPACK_IMPORTED_MODULE_0__.Children.forEach(_this.props.children, function (child) { + if (match == null && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(child)) { + element = child; + var path = child.props.path || child.props.from; + match = path ? matchPath(location.pathname, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)({}, child.props, { + path: path + })) : context.match; + } + }); + return match ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(element, { + location: location, + computedMatch: match + }) : null; + }); + }; + + return Switch; +}(react__WEBPACK_IMPORTED_MODULE_0__.Component); + +if (false) {} + +/** + * A public higher-order component to access the imperative API + */ + +function withRouter(Component) { + var displayName = "withRouter(" + (Component.displayName || Component.name) + ")"; + + var C = function C(props) { + var wrappedComponentRef = props.wrappedComponentRef, + remainingProps = _objectWithoutPropertiesLoose(props, ["wrappedComponentRef"]); + + return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) { + !context ? false ? 0 : invariant(false) : void 0; + return /*#__PURE__*/React.createElement(Component, _extends({}, remainingProps, context, { + ref: wrappedComponentRef + })); + }); + }; + + C.displayName = displayName; + C.WrappedComponent = Component; + + if (false) {} + + return hoistStatics(C, Component); +} + +var useContext = react__WEBPACK_IMPORTED_MODULE_0__.useContext; +function useHistory() { + if (false) {} + + return useContext(historyContext); +} +function useLocation() { + if (false) {} + + return useContext(context).location; +} +function useParams() { + if (false) {} + + var match = useContext(context).match; + return match ? match.params : {}; +} +function useRouteMatch(path) { + if (false) {} + + var location = useLocation(); + var match = useContext(context).match; + return path ? matchPath(location.pathname, path) : match; +} + +if (false) { var secondaryBuildName, initialBuildName, buildNames, key, global$1; } + + +//# sourceMappingURL=react-router.js.map + + +/***/ }), + +/***/ 1020: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var f=__webpack_require__(6540),k=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0}; +function q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=""+g);void 0!==a.key&&(e=""+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q; + + +/***/ }), + +/***/ 5287: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var l=Symbol.for("react.element"),n=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),q=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),t=Symbol.for("react.provider"),u=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),z=Symbol.iterator;function A(a){if(null===a||"object"!==typeof a)return null;a=z&&a[z]||a["@@iterator"];return"function"===typeof a?a:null} +var B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={}; +E.prototype.setState=function(a,b){if("object"!==typeof a&&"function"!==typeof a&&null!=a)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,a,b,"setState")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,"forceUpdate")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F; +H.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0}; +function M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=""+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}} +function N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return"object"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={"=":"=0",":":"=2"};return"$"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\/+/g;function Q(a,b){return"object"===typeof a&&null!==a&&null!=a.key?escape(""+a.key):b.toString(36)} +function R(a,b,e,d,c){var k=typeof a;if("undefined"===k||"boolean"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case "string":case "number":h=!0;break;case "object":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=""===d?"."+Q(h,0):d,I(c)?(e="",null!=a&&(e=a.replace(P,"$&/")+"/"),R(c,b,e,"",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?"":(""+c.key).replace(P,"$&/")+"/")+a)),b.push(c)),1;h=0;d=""===d?".":d+":";if(I(a))for(var g=0;g<a.length;g++){k= +a[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),"function"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if("object"===k)throw b=String(a),Error("Objects are not valid as a React child (found: "+("[object Object]"===b?"object with keys {"+Object.keys(a).join(", ")+"}":b)+"). If you meant to render a collection of children, use an array instead.");return h} +function S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,"","",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;} +var U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error("act(...) is not supported in production builds of React.");} +exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error("React.Children.only expected to receive a single React element child.");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w; +exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X; +exports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+a+".");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=""+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f); +for(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}}; +exports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)}; +exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)}; +exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version="18.3.1"; + + +/***/ }), + +/***/ 6540: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +if (true) { + module.exports = __webpack_require__(5287); +} else {} + + +/***/ }), + +/***/ 4848: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +if (true) { + module.exports = __webpack_require__(1020); +} else {} + + +/***/ }), + +/***/ 2833: +/***/ ((module) => { + +// + +module.exports = function shallowEqual(objA, objB, compare, compareContext) { + var ret = compare ? compare.call(compareContext, objA, objB) : void 0; + + if (ret !== void 0) { + return !!ret; + } + + if (objA === objB) { + return true; + } + + if (typeof objA !== "object" || !objA || typeof objB !== "object" || !objB) { + return false; + } + + var keysA = Object.keys(objA); + var keysB = Object.keys(objB); + + if (keysA.length !== keysB.length) { + return false; + } + + var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); + + // Test for A's keys different from B. + for (var idx = 0; idx < keysA.length; idx++) { + var key = keysA[idx]; + + if (!bHasOwnProperty(key)) { + return false; + } + + var valueA = objA[key]; + var valueB = objB[key]; + + ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0; + + if (ret === false || (ret === void 0 && valueA !== valueB)) { + return false; + } + } + + return true; +}; + + +/***/ }), + +/***/ 8777: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ l_) +/* harmony export */ }); +var e={flux:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 700 700" width="700" height="700" opacity="1">\n <defs>\n <filter id="nnnoise-filter" x="-20%" y="-20%" width="140%" height="140%" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="linearRGB">\n <feTurbulence type="turbulence" baseFrequency="0.102" numOctaves="4" seed="15" stitchTiles="stitch" x="0%" y="0%" width="100%" height="100%" result="turbulence"></feTurbulence>\n <feSpecularLighting surfaceScale="15" specularConstant="0.75" specularExponent="20" lighting-color="#9013fe" x="0%" y="0%" width="100%" height="100%" in="turbulence" result="specularLighting">\n <feDistantLight azimuth="3" elevation="100"></feDistantLight>\n </feSpecularLighting>\n\n </filter></defs><rect width="700" height="700" fill="#fafafa00"></rect><rect width="700" height="700" fill="#9013fe" filter="url(#nnnoise-filter)"></rect></svg>',quad:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 1422 800"><g shape-rendering="crispEdges" stroke-linejoin="round" fill="none" stroke-width="2" stroke="#555555"><polygon points="1422,200 1066.5,200 1422,0"></polygon><polygon points="888.75,100 1066.5,100 1066.5,0"></polygon><polygon points="888.75,100 888.75,0 711,0"></polygon><polygon points="711,200 888.75,200 888.75,100"></polygon><polygon points="888.75,200 888.75,100 1066.5,100"></polygon><polygon points="1066.5,200 1066.5,300 888.75,300"></polygon><polygon points="888.75,300 888.75,200 711,300"></polygon><polygon points="888.75,300 711,300 888.75,400"></polygon><polygon points="977.625,300 1066.5,350 1066.5,300"></polygon><polygon points="977.625,300 888.75,300 977.625,350"></polygon><polygon points="977.625,400 888.75,350 888.75,400"></polygon><polygon points="1066.5,350 977.625,350 977.625,400"></polygon><polygon points="1422,300 1244.25,300 1244.25,200"></polygon><polygon points="1244.25,200 1155.375,200 1155.375,250"></polygon><polygon points="1066.5,250 1155.375,250 1155.375,200"></polygon><polygon points="1155.375,250 1155.375,300 1066.5,300"></polygon><polygon points="1155.375,300 1244.25,250 1244.25,300"></polygon><polygon points="1244.25,300 1244.25,400 1066.5,300"></polygon><polygon points="1244.25,400 1422,400 1422,300"></polygon><polygon points="711,0 533.25,100 533.25,0"></polygon><polygon points="533.25,100 533.25,0 355.5,0"></polygon><polygon points="533.25,100 444.375,150 533.25,150"></polygon><polygon points="355.5,100 444.375,150 355.5,150"></polygon><polygon points="444.375,150 444.375,200 355.5,150"></polygon><polygon points="444.375,200 533.25,150 533.25,200"></polygon><polygon points="711,200 711,100 533.25,100"></polygon><polygon points="0,0 355.5,200 0,200"></polygon><polygon points="177.75,200 355.5,300 355.5,200"></polygon><polygon points="0,300 0,200 177.75,300"></polygon><polygon points="177.75,400 177.75,300 0,300"></polygon><polygon points="355.5,300 355.5,400 177.75,400"></polygon><polygon points="711,200 533.25,200 711,300"></polygon><polygon points="533.25,200 355.5,200 533.25,300"></polygon><polygon points="355.5,300 533.25,400 355.5,400"></polygon><polygon points="622.125,300 711,350 622.125,350"></polygon><polygon points="622.125,300 622.125,350 533.25,300"></polygon><polygon points="622.125,350 622.125,400 533.25,400"></polygon><polygon points="711,350 711,400 622.125,400"></polygon><polygon points="711,450 622.125,450 711,400"></polygon><polygon points="622.125,400 533.25,400 533.25,450"></polygon><polygon points="622.125,500 622.125,450 533.25,450"></polygon><polygon points="711,450 622.125,450 711,500"></polygon><polygon points="444.375,450 533.25,400 444.375,400"></polygon><polygon points="444.375,450 444.375,400 355.5,450"></polygon><polygon points="444.375,450 355.5,450 444.375,500"></polygon><polygon points="533.25,450 444.375,500 444.375,450"></polygon><polygon points="533.25,600 355.5,500 355.5,600"></polygon><polygon points="711,600 711,500 533.25,500"></polygon><polygon points="355.5,400 355.5,500 177.75,400"></polygon><polygon points="177.75,400 0,500 0,400"></polygon><polygon points="0,600 0,500 177.75,600"></polygon><polygon points="177.75,500 355.5,600 355.5,500"></polygon><polygon points="355.5,700 355.5,600 177.75,600"></polygon><polygon points="177.75,600 177.75,700 0,700"></polygon><polygon points="177.75,800 177.75,700 0,700"></polygon><polygon points="355.5,700 355.5,800 177.75,700"></polygon><polygon points="533.25,600 711,700 711,600"></polygon><polygon points="355.5,600 533.25,700 355.5,700"></polygon><polygon points="533.25,800 533.25,700 355.5,700"></polygon><polygon points="711,800 711,700 533.25,800"></polygon><polygon points="1244.25,400 1422,400 1422,500"></polygon><polygon points="1066.5,400 1244.25,500 1244.25,400"></polygon><polygon points="1244.25,600 1066.5,600 1066.5,500"></polygon><polygon points="1244.25,600 1422,500 1422,600"></polygon><polygon points="888.75,500 888.75,400 1066.5,400"></polygon><polygon points="888.75,500 711,500 711,400"></polygon><polygon points="888.75,550 888.75,500 799.875,550"></polygon><polygon points="799.875,550 711,550 711,500"></polygon><polygon points="799.875,600 711,550 799.875,550"></polygon><polygon points="888.75,550 888.75,600 799.875,550"></polygon><polygon points="1066.5,500 1066.5,600 888.75,600"></polygon><polygon points="1066.5,600 888.75,700 888.75,600"></polygon><polygon points="888.75,700 711,700 711,600"></polygon><polygon points="888.75,800 711,700 888.75,700"></polygon><polygon points="1066.5,700 1066.5,800 888.75,800"></polygon><polygon points="1066.5,600 1422,800 1422,600"></polygon></g><g fill="hsl(220, 62%, 45%)" stroke-width="3" stroke="hsl(220, 43%, 13%)"></g></svg>',blurry:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><filter id="bbblurry-filter" x="-100%" y="-100%" width="400%" height="400%" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">\n <feGaussianBlur stdDeviation="40" x="0%" y="0%" width="100%" height="100%" in="SourceGraphic" edgeMode="none" result="blur"></feGaussianBlur></filter></defs><g filter="url(#bbblurry-filter)"><ellipse rx="150" ry="150" cx="480.2749546822011" cy="522.7053198219844" fill="hsla(0, 0%, 82%, 1.00)"></ellipse><ellipse rx="150" ry="150" cx="408.35757076303446" cy="306.69744219029485" fill="hsla(0, 0%, 73%, 1.00)"></ellipse><ellipse rx="150" ry="150" cx="573.4834909452665" cy="492.0339400445383" fill="hsla(0, 0%, 47%, 1.00)"></ellipse></g></svg>',chaos:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="ccchaos-grad"><stop stop-color="hsl(206, 1%, 81%)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsl(0, 0%, 22%)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><g stroke-width="2" stroke="url(#ccchaos-grad)" fill="none" stroke-linecap="round"><path d="M383.62 112.25C393.11 115.52 402.64 119.18 412.22 123.05 421.82 126.56 431.49 130.04 441.21 133.4 450.99 136.14 460.86 138.67 470.83 141.01 480.89 142.73 491.07 144.34 501.38 145.91 511.8 147.08 522.36 148.39 533.02 149.96 543.79 151.42 554.64 153.33 565.52 155.76 576.41 158.35 587.24 161.6 597.89 165.53 608.39 169.8 618.56 174.79 628.25 180.49 637.54 186.57 646.14 193.32 653.87 200.69 660.95 208.39 666.96 216.62 671.78 225.31 675.75 234.25 678.42 243.56 679.74 253.14 680.24 262.9 679.48 272.86 677.53 282.96 675.09 293.16 671.78 303.45 667.79 313.77 663.93 324.14 659.88 334.52 655.88 344.86 652.74 355.23 650.13 365.54 648.28 375.75 647.81 385.98 648.34 396.1 649.92 406.06 652.95 416.02 656.79 425.58 661.2 434.7 666.49 443.8 671.85 452.45 676.98 460.62 682.19 468.75 686.64 476.39 690.11 483.53 692.96 490.63 694.48 497.22 694.57 503.33 693.69 509.44 691.29 515.11 687.45 520.39 682.62 525.78 676.47 530.89 669.17 535.8 661.14 541.02 652.21 546.21 642.57 551.49 632.55 557.31 622.07 563.42 611.32 569.92 600.49 577.17 589.57 584.95 578.67 593.3 567.9 602.43 557.24 612.11 546.75 622.27 536.47 632.94 526.37 643.83 516.45 654.7 506.74 665.51 497.18 675.83 487.74 685.32 478.47 693.99 469.26 701.31 460.1 706.96 451.04 711.17 441.97 713.39 432.87 713.5 423.81 712.06 414.69 708.63 405.5 703.39 396.32 697.2 387.05 689.81 377.71 681.63 368.36 673.68 359.15 665.96 350.12 658.87 341.08 653.07 332.23 648.37 323.58 644.88 314.96 643.05 306.56 642.38 298.43 642.72 290.33 644.35 282.51 646.53 275 648.97 267.53 651.94 260.37 654.59 253.56 656.66 246.77 658.49 240.31 659.31 234.2 658.98 228.08 657.91 222.28 655.53 216.79 651.84 211.23 647.29 205.95 641.5 200.93 634.6 195.77 626.98 190.82 618.45 186.08 609.17 181.12 599.43 176.33 589.17 171.7 578.54 166.82 567.71 162.07 556.68 157.48 545.57 152.65 534.42 147.99 523.3 143.53 512.26 138.89 501.27 134.5 490.39 130.42 479.68 126.27 469.03 122.5 458.52 119.17 448.18 115.91 437.89 113.17 427.74 111.03 417.74 109.07 407.77 107.78 397.92 107.21 388.22 106.91 378.52 107.37 369.19 108.56 360.22 110.02 351.25 112.18 342.64 114.99 334.41 118 326.16 121.6 318.29 125.72 310.79 129.94 303.27 134.6 296.12 139.65 289.34 144.66 282.49 149.98 275.98 155.56 269.78 160.99 263.45 166.62 257.38 172.41 251.52 178 245.44 183.72 239.49 189.57 233.64 195.19 227.46 200.94 221.28 206.82 215.06 212.5 208.45 218.34 201.75 224.36 194.96 230.21 187.77 236.29 180.51 242.59 173.21 248.79 165.64 255.25 158.16 261.99 150.86 268.66 143.54 275.63 136.59 282.9 130.17 290.14 124.04 297.68 118.64 305.53 114.12 313.36 110.16 321.49 107.23 329.9 105.4 338.3 104.23 346.99 104.16 355.95 105.16 364.9 106.67 374.12 109.07 383.61 112.25" stroke-dasharray="1 3" transform="rotate(0, 400, 400)" opacity="0.69"></path><path d="M387.47 123.2C396.67 126.44 405.96 130.05 415.32 133.88 424.7 137.38 434.17 140.88 443.73 144.27 453.33 147.09 463.04 149.73 472.84 152.18 482.72 154.03 492.72 155.76 502.82 157.44 513 158.69 523.29 160.05 533.63 161.59 544.03 162.97 554.44 164.72 564.81 166.91 575.13 169.19 585.32 172.05 595.25 175.51 604.97 179.24 614.3 183.64 623.08 188.69 631.44 194.07 639.09 200.1 645.86 206.72 652 213.65 657.12 221.13 661.1 229.07 664.32 237.27 666.34 245.85 667.15 254.75 667.26 263.83 666.26 273.15 664.22 282.65 661.81 292.26 658.67 301.99 654.96 311.78 651.44 321.63 647.79 331.51 644.23 341.36 641.48 351.25 639.24 361.09 637.67 370.83 637.37 380.59 637.96 390.24 639.48 399.73 642.33 409.22 645.88 418.31 649.95 426.97 654.85 435.63 659.81 443.85 664.59 451.62 669.49 459.38 673.74 466.68 677.13 473.53 680.03 480.37 681.74 486.79 682.18 492.79 681.77 498.85 679.99 504.56 676.86 509.98 672.84 515.57 667.57 520.98 661.18 526.29 654.07 531.94 646.05 537.65 637.29 543.51 628.1 549.91 618.4 556.62 608.32 563.72 598.11 571.48 587.7 579.73 577.23 588.46 566.81 597.83 556.41 607.63 546.12 617.74 535.98 628.21 525.96 638.74 516.09 649.09 506.4 659.27 496.84 668.84 487.4 677.52 478.12 685.35 468.91 691.84 459.79 696.73 450.75 700.26 441.75 701.94 432.76 701.68 423.83 700.02 414.88 696.55 405.91 691.44 396.96 685.5 387.97 678.46 378.95 670.68 369.94 663.11 361.1 655.73 352.47 648.87 343.84 643.16 335.41 638.42 327.22 634.75 319.03 632.58 311.09 631.47 303.42 631.3 295.76 632.37 288.39 634 281.32 635.95 274.26 638.49 267.51 640.86 261.08 642.8 254.64 644.65 248.52 645.68 242.71 645.75 236.86 645.25 231.3 643.59 226.02 640.77 220.64 637.19 215.51 632.46 210.61 626.66 205.56 620.19 200.69 612.79 196 604.62 191.1 595.96 186.34 586.71 181.73 577.01 176.87 567.05 172.15 556.8 167.57 546.38 162.77 535.87 158.13 525.28 153.69 514.72 149.08 504.15 144.73 493.64 140.68 483.25 136.57 472.9 132.84 462.66 129.54 452.59 126.31 442.54 123.6 432.63 121.47 422.89 119.52 413.17 118.23 403.59 117.64 394.18 117.33 384.77 117.75 375.74 118.89 367.08 120.3 358.41 122.39 350.11 125.12 342.18 128.06 334.22 131.57 326.62 135.6 319.38 139.73 312.09 144.31 305.13 149.26 298.51 154.21 291.79 159.46 285.36 164.96 279.19 170.35 272.87 175.94 266.75 181.7 260.78 187.27 254.59 192.97 248.48 198.8 242.42 204.41 236.05 210.15 229.65 216 223.21 221.65 216.4 227.45 209.52 233.41 202.57 239.19 195.28 245.17 187.96 251.35 180.65 257.41 173.15 263.71 165.78 270.25 158.65 276.71 151.57 283.44 144.9 290.45 138.78 297.41 132.98 304.66 127.93 312.2 123.74 319.71 120.11 327.52 117.47 335.61 115.87 343.68 114.91 352.05 114.99 360.69 116.08 369.33 117.65 378.25 120.05 387.46 123.2" stroke-dasharray="10 4" transform="rotate(4.04, 400, 400)" opacity="0.29"></path><path d="M391.94 134.15C400.88 137.34 409.92 140.91 419.04 144.69 428.18 148.17 437.43 151.67 446.76 155.09 456.14 157.98 465.62 160.71 475.2 163.27 484.83 165.25 494.56 167.12 504.36 168.92 514.21 170.27 524.12 171.69 534.03 173.25 543.96 174.6 553.84 176.24 563.61 178.26 573.29 180.29 582.75 182.82 591.9 185.89 600.81 189.14 609.26 193 617.13 197.46 624.58 202.19 631.29 207.54 637.15 213.44 642.42 219.64 646.7 226.36 649.93 233.55 652.5 240.99 653.97 248.83 654.35 257.01 654.16 265.36 652.98 274 650.92 282.83 648.59 291.79 645.65 300.9 642.24 310.1 639.07 319.37 635.82 328.7 632.67 338.02 630.3 347.38 628.38 356.71 627.08 365.95 626.94 375.22 627.58 384.39 629.04 393.41 631.71 402.43 635 411.08 638.74 419.35 643.25 427.6 647.83 435.45 652.26 442.91 656.86 450.36 660.88 457.41 664.17 464.08 667.06 470.76 668.91 477.1 669.63 483.11 669.63 489.21 668.38 495.06 665.89 500.71 662.61 506.55 658.15 512.31 652.62 518.06 646.41 524.15 639.3 530.36 631.42 536.77 623.09 543.68 614.19 550.9 604.86 558.49 595.33 566.65 585.54 575.22 575.59 584.18 565.63 593.64 555.62 603.4 545.64 613.33 535.75 623.47 525.93 633.53 516.23 643.29 506.65 652.77 497.18 661.57 487.84 669.42 478.61 676.43 469.48 682.12 460.43 686.28 451.48 689.19 442.58 690.38 433.73 689.79 424.93 687.94 416.16 684.47 407.41 679.5 398.68 673.8 389.96 667.11 381.25 659.73 372.55 652.54 364.06 645.48 355.8 638.87 347.53 633.28 339.5 628.52 331.71 624.7 323.92 622.24 316.39 620.74 309.13 620.1 301.87 620.62 294.88 621.71 288.2 623.16 281.5 625.25 275.09 627.28 268.99 629.01 259.93 631.36 243.14 631.64 235.34 628.99 230.11 626.27 225.1 622.48 220.29 617.69 215.31 612.28 210.5 605.98 205.84 598.88 200.98 591.31 196.24 583.1 191.64 574.38 186.81 565.36 182.1 555.98 177.53 546.35 172.76 536.58 168.15 526.66 163.73 516.68 159.17 506.66 154.86 496.64 150.85 486.68 146.8 476.73 143.11 466.87 139.86 457.12 136.68 447.4 134 437.81 131.89 428.36 129.97 418.93 128.68 409.64 128.08 400.52 127.75 391.4 128.14 382.65 129.22 374.27 130.57 365.87 132.58 357.83 135.22 350.13 138.07 342.41 141.48 335.01 145.41 327.94 149.44 320.82 153.91 313.99 158.77 307.44 163.62 300.78 168.79 294.36 174.22 288.16 179.55 281.78 185.09 275.56 190.79 269.46 196.33 263.12 202.02 256.83 207.82 250.56 213.42 244 219.14 237.4 224.98 230.76 230.62 223.8 236.39 216.79 242.31 209.73 248.04 202.4 253.96 195.08 260.05 187.83 266 180.45 272.17 173.26 278.56 166.35 284.86 159.54 291.4 153.18 298.2 147.4 304.93 141.96 311.94 137.26 319.22 133.41 326.46 130.11 333.99 127.75 341.8 126.4 349.58 125.63 357.65 125.85 366.01 127.03 374.35 128.63 382.99 131.04 391.93 134.15" stroke-dasharray="9 4" transform="rotate(8.08, 400, 400)" opacity="0.95"></path><path d="M396.82 145.1C405.49 148.24 414.26 151.75 423.12 155.47 432 158.93 440.98 162.42 450.05 165.86 459.15 168.8 468.35 171.62 477.62 174.28 486.93 176.4 496.31 178.4 505.72 180.32 515.16 181.8 524.61 183.31 534.01 184.91 543.38 186.27 552.65 187.87 561.75 189.76 570.72 191.61 579.42 193.89 587.74 196.62 595.81 199.48 603.39 202.87 610.36 206.81 616.92 210.96 622.75 215.67 627.76 220.91 632.22 226.4 635.76 232.4 638.33 238.86 640.32 245.54 641.34 252.63 641.37 260.08 640.96 267.7 639.69 275.62 637.65 283.76 635.45 292.03 632.73 300.48 629.63 309.05 626.81 317.7 623.94 326.43 621.2 335.18 619.18 343.98 617.58 352.77 616.52 361.51 616.51 370.27 617.2 378.95 618.61 387.52 621.1 396.09 624.13 404.33 627.56 412.23 631.71 420.12 635.91 427.67 640 434.87 644.27 442.08 648.07 448.96 651.21 455.53 654.07 462.14 656 468.47 656.94 474.57 657.27 480.77 656.48 486.81 654.57 492.74 651.95 498.87 648.23 505 643.51 511.17 638.15 517.68 631.91 524.34 624.9 531.22 617.44 538.55 609.37 546.18 600.83 554.12 592.05 562.55 582.93 571.3 573.59 580.34 564.18 589.74 554.66 599.32 545.1 608.95 535.58 618.65 526.07 628.15 516.63 637.25 507.28 645.98 498 653.98 488.83 661.02 479.74 667.22 470.75 672.15 461.85 675.63 453.03 677.96 444.27 678.71 435.6 677.83 426.97 675.84 418.39 672.38 409.87 667.56 401.36 662.12 392.9 655.77 384.49 648.78 376.08 641.96 367.91 635.24 359.99 628.88 352.07 623.41 344.39 618.66 336.97 614.74 329.53 612.02 322.36 610.16 315.46 609.09 308.55 609.11 301.91 609.69 295.54 610.64 289.16 612.25 283.05 613.89 277.21 615.36 268.52 617.53 252.3 618.46 244.7 616.62 239.58 614.59 234.65 611.62 229.9 607.72 224.98 603.29 220.2 597.99 215.57 591.92 210.73 585.4 206.01 578.22 201.41 570.49 196.6 562.46 191.91 554 187.35 545.22 182.62 536.27 178.04 527.1 173.66 517.8 169.16 508.43 164.9 499 160.94 489.57 156.95 480.12 153.33 470.7 150.12 461.38 147 452.05 144.37 442.82 142.29 433.72 140.41 424.63 139.13 415.65 138.52 406.83 138.17 398.01 138.52 389.53 139.54 381.4 140.83 373.25 142.76 365.42 145.3 357.92 148.05 350.38 151.35 343.14 155.15 336.19 159.07 329.17 163.43 322.4 168.16 315.87 172.92 309.23 177.98 302.77 183.31 296.49 188.57 290.03 194.04 283.68 199.68 277.42 205.18 270.93 210.83 264.46 216.6 258 222.19 251.28 227.9 244.52 233.72 237.73 239.35 230.67 245.1 223.57 250.98 216.47 256.7 209.17 262.56 201.92 268.58 194.78 274.47 187.59 280.54 180.62 286.81 173.99 292.98 167.49 299.38 161.48 306 156.05 312.56 150.99 319.36 146.66 326.42 143.15 333.44 140.17 340.72 138.09 348.27 136.97 355.8 136.39 363.61 136.74 371.7 137.99 379.77 139.63 388.14 142.03 396.81 145.1" stroke-dasharray="2 6" transform="rotate(12.12, 400, 400)" opacity="0.86"></path><path d="M401.86 156.05C410.25 159.14 418.74 162.57 427.31 166.23 435.9 169.65 444.59 173.12 453.34 176.57 462.12 179.56 470.97 182.45 479.87 185.2 488.79 187.45 497.75 189.58 506.7 191.63 515.64 193.24 524.55 194.87 533.37 196.55 542.12 197.95 550.72 199.54 559.1 201.37 567.32 203.1 575.23 205.18 582.73 207.66 589.96 210.19 596.67 213.2 602.78 216.68 608.5 220.32 613.51 224.47 617.73 229.11 621.47 233.95 624.35 239.27 626.35 245.04 627.86 251 628.5 257.37 628.28 264.09 627.71 270.98 626.4 278.18 624.44 285.63 622.4 293.2 619.93 300.97 617.15 308.9 614.68 316.89 612.18 325.01 609.81 333.18 608.13 341.39 606.82 349.63 605.98 357.86 606.1 366.1 606.83 374.31 608.17 382.44 610.49 390.58 613.28 398.44 616.41 406.01 620.21 413.58 624.06 420.87 627.8 427.88 631.76 434.9 635.31 441.67 638.29 448.2 641.07 454.78 643.05 461.17 644.14 467.39 644.74 473.74 644.33 480 642.92 486.21 640.89 492.63 637.85 499.09 633.87 505.65 629.31 512.51 623.89 519.55 617.73 526.81 611.12 534.44 603.89 542.34 596.16 550.5 588.15 559.04 579.76 567.82 571.1 576.79 562.32 586 553.37 595.27 544.32 604.48 535.26 613.64 526.16 622.51 517.08 630.9 508.05 638.87 499.05 646.06 490.14 652.3 481.29 657.72 472.51 661.93 463.82 664.78 455.19 666.58 446.64 666.93 438.17 665.81 429.74 663.71 421.38 660.28 413.1 655.64 404.84 650.45 396.63 644.44 388.51 637.83 380.39 631.38 372.52 624.98 364.91 618.88 357.3 613.56 349.94 608.85 342.84 604.85 335.72 601.93 328.87 599.76 322.28 598.3 315.67 597.85 309.32 597.93 303.23 598.39 294.17 600.14 277.23 603.78 269.3 604.8 261.45 605.01 246.53 601.14 239.38 596.86 234.5 593.28 229.75 588.89 225.13 583.77 220.31 578.23 215.6 572.04 211.01 565.28 206.22 558.22 201.55 550.7 197.02 542.8 192.33 534.72 187.8 526.36 183.47 517.81 179.03 509.16 174.84 500.38 170.95 491.55 167.04 482.68 163.49 473.8 160.34 464.94 157.3 456.08 154.72 447.27 152.68 438.55 150.83 429.83 149.57 421.21 148.95 412.69 148.59 404.18 148.91 395.97 149.87 388.08 151.09 380.16 152.93 372.53 155.36 365.19 158 357.81 161.18 350.68 164.84 343.8 168.64 336.85 172.86 330.11 177.45 323.56 182.09 316.9 187.03 310.39 192.25 304 197.41 297.45 202.79 290.97 208.36 284.55 213.8 277.93 219.4 271.31 225.12 264.7 230.69 257.86 236.37 250.99 242.16 244.1 247.78 237 253.52 229.9 259.37 222.83 265.06 215.62 270.89 208.5 276.85 201.55 282.69 194.59 288.69 187.91 294.87 181.58 300.94 175.45 307.22 169.8 313.7 164.75 320.11 160.08 326.75 156.12 333.62 152.95 340.44 150.29 347.51 148.49 354.84 147.59 362.13 147.19 369.7 147.66 377.53 148.98 385.35 150.65 393.46 153.03 401.85 156.05" stroke-dasharray="8 1" transform="rotate(16.16, 400, 400)" opacity="0.10"></path><path d="M406.8 167C414.91 170.02 423.1 173.38 431.35 176.97 439.62 180.34 447.96 183.78 456.36 187.21 464.76 190.25 473.21 193.19 481.68 196.03 490.15 198.39 498.62 200.66 507.05 202.83 515.44 204.59 523.76 206.34 531.94 208.11 540.03 209.6 547.92 211.22 555.55 213.03 563.01 214.7 570.12 216.66 576.8 218.95 583.21 221.23 589.11 223.93 594.4 227.03 601.46 232.07 611.36 244.63 614.04 252.12 615.16 257.41 615.51 263.1 615.11 269.14 614.45 275.32 613.16 281.82 611.32 288.59 609.46 295.46 607.25 302.56 604.8 309.85 602.67 317.19 600.53 324.69 598.52 332.28 597.14 339.9 596.1 347.6 595.47 355.32 595.7 363.05 596.45 370.79 597.73 378.51 599.89 386.22 602.45 393.73 605.3 401.01 608.75 408.29 612.26 415.35 615.67 422.21 619.32 429.09 622.6 435.78 625.41 442.3 628.08 448.89 630.05 455.35 631.25 461.72 632.05 468.21 631.96 474.68 630.97 481.15 629.45 487.82 627.01 494.57 623.71 501.43 619.88 508.57 615.24 515.88 609.88 523.39 604.1 531.2 597.7 539.24 590.77 547.48 583.56 555.99 575.93 564.66 567.99 573.41 559.89 582.3 551.57 591.15 543.11 599.83 534.59 608.39 525.98 616.57 517.35 624.21 508.72 631.4 500.1 637.8 491.53 643.25 482.99 647.93 474.5 651.46 466.09 653.73 457.72 655.06 449.42 655.07 441.2 653.74 433.02 651.56 424.91 648.18 416.89 643.72 408.88 638.79 400.95 633.11 393.11 626.88 385.26 620.79 377.68 614.72 370.37 608.88 363.04 603.73 355.97 599.08 349.17 595.03 342.34 591.94 335.76 589.51 329.44 587.71 323.09 586.83 316.98 586.44 311.13 586.44 302.39 587.49 285.96 590.18 278.22 591.04 270.52 591.38 255.79 588.6 248.69 585.21 243.83 582.36 239.1 578.76 234.48 574.47 229.69 569.84 224.99 564.56 220.41 558.72 215.66 552.59 211.02 545.98 206.53 538.97 201.89 531.76 197.42 524.23 193.15 516.46 188.79 508.58 184.69 500.51 180.87 492.33 177.05 484.09 173.59 475.79 170.52 467.46 167.55 459.12 165.05 450.78 163.05 442.47 161.25 434.17 160.01 425.92 159.39 417.73 159.02 409.54 159.29 401.62 160.19 393.95 161.34 386.27 163.09 378.83 165.4 371.62 167.92 364.38 170.96 357.36 174.48 350.53 178.13 343.63 182.2 336.9 186.65 330.32 191.14 323.63 195.95 317.05 201.03 310.57 206.08 303.94 211.35 297.36 216.81 290.81 222.18 284.09 227.7 277.37 233.36 270.65 238.88 263.75 244.53 256.83 250.27 249.92 255.87 242.85 261.58 235.81 267.4 228.84 273.07 221.8 278.87 214.88 284.79 208.17 290.58 201.51 296.53 195.15 302.62 189.18 308.62 183.43 314.79 178.18 321.15 173.53 327.44 169.24 333.93 165.66 340.63 162.84 347.28 160.49 354.16 158.96 361.28 158.27 368.36 158.04 375.7 158.62 383.28 159.99 390.85 161.68 398.69 164.04 406.79 167" stroke-dasharray="5 5" transform="rotate(20.200000000000003, 400, 400)" opacity="0.99"></path><path d="M411.41 177.95C419.21 180.9 427.07 184.18 434.98 187.68 442.9 190.99 450.86 194.39 458.85 197.8 466.84 200.86 474.85 203.85 482.84 206.75 490.81 209.22 498.75 211.61 506.6 213.91 514.4 215.81 522.09 217.69 529.59 219.58 537 221.17 544.17 222.86 551.04 224.69 557.74 226.35 564.07 228.24 569.95 230.4 578.15 233.75 591.26 242.28 595.95 247.57 599.42 253.42 602.35 267.29 601.91 275.23 601.21 280.76 599.99 286.6 598.3 292.72 596.65 298.93 594.72 305.39 592.59 312.05 590.78 318.77 588.99 325.66 587.31 332.68 586.22 339.73 585.42 346.89 584.98 354.12 585.31 361.36 586.08 368.65 587.3 375.97 589.3 383.29 591.64 390.46 594.22 397.47 597.35 404.49 600.52 411.36 603.62 418.08 606.95 424.83 609.97 431.47 612.59 437.99 615.12 444.59 617.05 451.12 618.31 457.62 619.25 464.23 619.41 470.87 618.77 477.54 617.69 484.4 615.77 491.35 613.07 498.43 609.9 505.73 605.98 513.2 601.37 520.82 596.37 528.69 590.76 536.72 584.63 544.88 578.21 553.22 571.36 561.64 564.15 570.06 556.78 578.51 549.14 586.84 541.31 594.92 533.39 602.81 525.35 610.26 517.23 617.14 509.09 623.55 500.92 629.17 492.76 633.87 484.61 637.85 476.48 640.76 468.4 642.5 460.36 643.41 452.36 643.11 444.44 641.62 436.55 639.39 428.72 636.09 420.98 631.81 413.26 627.14 405.61 621.79 398.05 615.93 390.49 610.2 383.19 604.45 376.15 598.88 369.1 593.9 362.3 589.34 355.75 585.28 349.17 582.06 342.84 579.41 336.75 577.31 327.68 575.65 310.59 575.17 302.54 575.76 294.57 576.8 279.4 577.71 272.13 577.07 264.81 575.63 250.56 569.19 243.6 564.16 238.83 560.31 234.16 555.85 229.61 550.84 224.9 545.59 220.31 539.84 215.86 533.67 211.3 527.32 206.9 520.62 202.7 513.62 198.45 506.51 194.43 499.18 190.71 491.67 187 484.11 183.63 476.42 180.65 468.65 177.78 460.86 175.35 453.02 173.41 445.17 171.66 437.31 170.45 429.45 169.83 421.61 169.45 413.77 169.68 406.13 170.51 398.7 171.59 391.26 173.24 384 175.43 376.94 177.82 369.84 180.72 362.91 184.07 356.13 187.57 349.3 191.48 342.58 195.75 335.98 200.08 329.28 204.73 322.66 209.65 316.11 214.57 309.43 219.71 302.78 225.04 296.16 230.31 289.39 235.74 282.63 241.3 275.87 246.76 268.97 252.34 262.09 258.03 255.23 263.59 248.27 269.26 241.37 275.02 234.58 280.66 227.76 286.42 221.11 292.29 214.7 298.04 208.38 303.92 202.4 309.94 196.82 315.87 191.47 321.95 186.64 328.2 182.39 334.37 178.51 340.73 175.29 347.28 172.81 353.77 170.77 360.48 169.49 367.39 169 374.27 168.93 381.38 169.61 388.71 171.02 396.03 172.73 403.59 175.06 411.4 177.95" stroke-dasharray="6 8" transform="rotate(24.24, 400, 400)" opacity="0.46"></path><path d="M415.44 188.9C422.92 191.77 430.43 194.96 437.97 198.36 445.5 201.61 453.06 204.96 460.6 208.33 468.15 211.39 475.67 214.41 483.13 217.37 490.58 219.93 497.94 222.42 505.19 224.84 512.38 226.89 519.41 228.9 526.23 230.92 532.94 232.63 539.39 234.41 545.52 236.3 554.27 238.93 569.32 245.12 575.39 248.86 580.47 252.93 587.14 262.9 588.69 268.84 589.27 275.26 587.48 289.92 585.41 298.07 583.99 303.66 582.33 309.51 580.52 315.59 579.03 321.71 577.56 328.03 576.19 334.51 575.37 341.01 574.79 347.66 574.51 354.42 574.92 361.18 575.7 368.05 576.86 374.99 578.71 381.94 580.84 388.79 583.17 395.55 585.99 402.32 588.85 409 591.64 415.6 594.66 422.22 597.42 428.79 599.82 435.31 602.19 441.9 604.05 448.47 605.32 455.05 606.35 461.74 606.7 468.48 606.34 475.28 605.62 482.24 604.16 489.3 601.98 496.47 599.41 503.82 596.14 511.31 592.21 518.92 587.94 526.69 583.09 534.58 577.71 542.53 572.06 550.58 565.97 558.62 559.51 566.59 552.87 574.52 545.94 582.25 538.77 589.67 531.51 596.85 524.08 603.55 516.53 609.66 508.94 615.3 501.28 620.17 493.59 624.16 485.89 627.49 478.19 629.82 470.51 631.09 462.84 631.62 455.2 631.08 447.63 629.45 440.06 627.2 432.56 623.99 425.13 619.91 417.71 615.51 410.35 610.48 403.09 604.98 395.82 599.6 388.8 594.17 382.02 588.88 375.24 584.09 368.69 579.64 362.38 575.6 356.04 572.29 349.93 569.46 344.04 567.11 335.26 564.92 318.65 563.18 310.78 563.17 302.98 563.7 288.02 564.11 280.82 563.52 273.55 562.37 259.38 557.14 252.45 552.96 247.72 549.77 243.09 546.02 238.57 541.75 233.92 537.27 229.4 532.31 225.02 526.93 220.54 521.38 216.24 515.46 212.14 509.22 207.99 502.87 204.09 496.26 200.47 489.44 196.88 482.55 193.62 475.49 190.74 468.3 187.97 461.09 185.62 453.77 183.75 446.39 182.06 439 180.88 431.56 180.26 424.09 179.88 416.61 180.08 409.28 180.84 402.1 181.84 394.91 183.38 387.86 185.44 380.95 187.7 374.01 190.45 367.19 193.63 360.48 196.96 353.72 200.69 347.05 204.77 340.45 208.93 333.78 213.4 327.16 218.14 320.58 222.9 313.9 227.88 307.25 233.06 300.61 238.2 293.87 243.51 287.13 248.95 280.42 254.32 273.61 259.81 266.82 265.41 260.1 270.91 253.32 276.51 246.64 282.21 240.09 287.8 233.57 293.5 227.25 299.3 221.19 305 215.27 310.81 209.68 316.75 204.52 322.6 199.61 328.59 195.2 334.72 191.36 340.79 187.88 347.01 185.03 353.4 182.88 359.75 181.13 366.27 180.09 372.98 179.79 379.66 179.86 386.53 180.63 393.61 182.08 400.67 183.79 407.95 186.08 415.43 188.89" stroke-dasharray="10 3" transform="rotate(28.28, 400, 400)" opacity="0.14"></path><path d="M418.69 199.85C425.83 202.64 432.98 205.72 440.11 209.03 447.24 212.2 454.36 215.47 461.43 218.8 468.5 221.85 475.51 224.88 482.43 227.87 489.32 230.51 496.1 233.1 502.72 235.62 509.29 237.8 515.66 239.95 521.8 242.08 530.71 244.88 546.71 250.51 553.61 253.54 564.46 260.25 574.61 272.96 575.78 278.31 576.16 284.06 574.47 297.21 572.67 304.57 570.79 312.27 566.82 328.93 565.16 337.8 564.57 343.79 564.19 349.96 564.06 356.28 564.54 362.6 565.33 369.06 566.42 375.64 568.13 382.23 570.06 388.79 572.15 395.3 574.69 401.82 577.24 408.31 579.73 414.77 582.45 421.26 584.94 427.74 587.13 434.22 589.33 440.75 591.08 447.32 592.33 453.92 593.4 460.61 593.88 467.37 593.74 474.2 593.32 481.15 592.23 488.21 590.5 495.35 588.44 502.63 585.74 510.01 582.44 517.46 578.84 525.03 574.68 532.64 570.02 540.24 565.11 547.89 559.75 555.46 554.02 562.89 548.11 570.21 541.89 577.29 535.41 584 528.82 590.44 522.03 596.39 515.09 601.74 508.09 606.63 500.99 610.79 493.81 614.12 486.62 616.85 479.39 618.67 472.16 619.51 464.92 619.72 457.69 618.97 450.49 617.25 443.31 615 436.15 611.9 429.06 608.03 421.97 603.88 414.93 599.18 407.97 594.03 401 588.99 394.27 583.89 387.75 578.87 381.23 574.28 374.93 569.96 368.84 565.97 362.73 562.61 356.82 559.66 351.12 557.1 342.6 554.45 326.42 551.56 318.71 550.95 311.04 550.95 296.28 550.68 289.14 550.02 281.94 548.99 267.88 544.58 261.01 541.07 254.04 536.82 240.51 525.65 234 518.84 229.63 514.02 225.43 508.82 221.44 503.29 217.43 497.66 213.65 491.75 210.16 485.58 206.7 479.36 203.57 472.92 200.8 466.31 198.13 459.68 195.88 452.9 194.08 446 192.45 439.09 191.31 432.08 190.7 424.99 190.31 417.9 190.47 410.9 191.17 403.99 192.09 397.08 193.52 390.25 195.45 383.52 197.57 376.77 200.15 370.09 203.15 363.48 206.3 356.84 209.84 350.25 213.72 343.71 217.68 337.11 221.96 330.54 226.5 324.01 231.07 317.4 235.87 310.8 240.87 304.23 245.85 297.58 251.01 290.95 256.3 284.37 261.54 277.72 266.92 271.13 272.4 264.62 277.8 258.1 283.31 251.7 288.91 245.47 294.43 239.3 300.04 233.36 305.75 227.71 311.38 222.2 317.11 217.06 322.95 212.33 328.71 207.86 334.59 203.88 340.6 200.46 346.55 197.37 352.63 194.88 358.85 193.04 365.04 191.57 371.38 190.77 377.87 190.64 384.34 190.84 390.98 191.69 397.78 193.17 404.57 194.87 411.54 197.11 418.68 199.84" stroke-dasharray="11 4" transform="rotate(32.32, 400, 400)" opacity="0.36"></path><path d="M421.01 210.8C427.79 213.49 434.54 216.47 441.25 219.67 447.96 222.74 454.61 225.94 461.2 229.2 467.77 232.22 474.25 235.25 480.61 238.26 486.94 240.95 493.13 243.61 499.14 246.22 507.95 249.66 524.22 256.04 531.52 259.12 543.87 265.02 557.43 275.09 560.04 279.16 562.49 288.52 561.59 305.47 560.09 312.13 558.58 319.11 555.47 334.32 554.21 342.5 553.84 348.03 553.63 353.75 553.64 359.66 554.17 365.56 554.95 371.64 555.99 377.88 557.56 384.12 559.3 390.38 561.16 396.64 563.42 402.91 565.69 409.2 567.9 415.5 570.33 421.82 572.56 428.18 574.53 434.56 576.53 440.99 578.15 447.48 579.35 454.02 580.42 460.63 580.98 467.32 581 474.07 580.8 480.92 580.02 487.85 578.67 494.84 577.04 501.93 574.85 509.07 572.1 516.24 569.09 523.47 565.57 530.69 561.56 537.85 557.34 544.99 552.68 552 547.65 558.81 542.45 565.49 536.93 571.86 531.13 577.85 525.22 583.55 519.08 588.76 512.76 593.37 506.39 597.55 499.87 601.04 493.25 603.76 486.6 605.95 479.89 607.3 473.13 607.78 466.37 607.71 459.58 606.79 452.8 605.01 446.02 602.79 439.26 599.81 432.52 596.15 425.8 592.27 419.1 587.88 412.45 583.08 405.81 578.38 399.36 573.59 393.11 568.85 386.86 564.48 380.8 560.31 374.93 556.4 369.04 553.03 363.33 549.98 357.8 547.27 349.54 544.23 333.76 540.31 326.2 539.14 318.67 538.59 304.11 537.54 297.05 536.68 289.94 535.63 276.04 531.7 269.25 528.67 262.4 525.05 249.14 515.47 242.79 509.55 238.55 505.37 234.49 500.82 230.63 495.93 226.76 490.96 223.13 485.69 219.77 480.14 216.46 474.55 213.46 468.71 210.81 462.67 208.27 456.61 206.12 450.35 204.4 443.94 202.83 437.52 201.74 430.96 201.14 424.27 200.74 417.58 200.87 410.93 201.5 404.32 202.34 397.71 203.66 391.14 205.46 384.63 207.43 378.09 209.84 371.6 212.65 365.15 215.61 358.67 218.94 352.22 222.6 345.8 226.36 339.33 230.41 332.89 234.73 326.47 239.09 319.99 243.69 313.54 248.49 307.12 253.28 300.64 258.25 294.21 263.37 287.83 268.45 281.43 273.67 275.1 279 268.89 284.28 262.69 289.66 256.65 295.13 250.8 300.54 245.03 306.04 239.51 311.63 234.3 317.15 229.24 322.77 224.56 328.48 220.29 334.14 216.27 339.89 212.72 345.75 209.7 351.56 207 357.49 204.86 363.53 203.32 369.53 202.11 375.67 201.52 381.93 201.55 388.17 201.87 394.56 202.79 401.07 204.28 407.57 205.96 414.22 208.15 421 210.79" stroke-dasharray="1 4" transform="rotate(36.36, 400, 400)" opacity="0.18"></path><path d="M422.27 221.75C428.67 224.34 435.01 227.21 441.28 230.28 447.55 233.26 453.73 236.36 459.81 239.54 471.94 245.26 483.56 251.02 494.42 256.64 505.06 261.16 514.73 265.65 523.14 270.22 531.09 273.96 537.56 278.13 542.34 282.89 546.54 287.29 549.03 292.58 549.82 298.82 550.34 305.02 549.54 312.29 547.7 320.58 546.43 328.91 544.86 338.24 543.35 348.45 543.14 356.23 544.19 372.79 545.55 381.55 546.99 387.46 548.55 393.42 550.2 399.42 552.21 405.43 554.21 411.49 556.15 417.59 560.6 429.86 564.15 442.38 566.41 455.1 568.37 468.04 568.45 481.28 566.55 494.68 563.8 508.26 559.01 521.87 552.39 535.17 545 548.2 536.05 560.39 525.89 571.17 515.29 580.81 503.81 588.3 491.76 593.09 479.57 596.02 467.01 595.94 454.34 592.75 448 590.57 441.65 587.74 435.3 584.29 428.96 580.67 422.62 576.59 416.31 572.14 410 567.76 403.86 563.29 397.89 558.83 391.91 554.69 386.1 550.68 380.45 546.87 369.1 540.67 358.35 535.52 348.2 531.41 337.86 529.11 328 527.31 318.62 525.6 308.93 524.77 299.6 523.27 290.68 520.75 281.4 518.25 272.47 514.32 264.01 508.9 255.28 503.16 247.1 495.92 239.7 487.34 232.31 478.49 225.92 468.47 220.79 457.49 218.38 451.96 216.34 446.22 214.7 440.3 213.21 434.36 212.16 428.25 211.57 421.97 211.18 415.7 211.27 409.41 211.84 403.13 212.59 396.85 213.81 390.58 215.46 384.32 219.27 371.78 224.68 359.25 231.44 346.81 238.58 334.27 246.83 321.75 255.92 309.39 265.08 296.96 274.92 284.75 285.23 273.01 295.4 261.47 306 250.68 316.91 241.02 327.63 232.05 338.71 224.62 350.11 219.1 361.37 214.71 373.03 212.47 385.06 212.52 391.06 212.95 397.16 213.92 403.36 215.41 409.56 217.07 415.86 219.19 422.26 221.74" stroke-dasharray="7 8" transform="rotate(40.400000000000006, 400, 400)" opacity="0.69"></path><path d="M422.42 232.7C434.42 237.66 446.08 243.51 457.25 249.82 468.37 255.45 478.9 261.19 488.61 266.87 498.12 271.58 506.65 276.28 513.96 281.04 520.89 285.02 526.45 289.33 530.49 294.11 534.1 298.48 536.23 303.59 536.9 309.5 537.45 315.3 536.91 322.03 535.5 329.7 534.68 337.36 533.6 345.96 532.56 355.45 532.89 364.92 533.72 375.27 535.11 386.43 538.11 397.59 541.33 409.07 544.47 420.77 548.39 432.53 551.51 444.6 553.53 456.86 555.4 469.26 555.65 481.9 554.19 494.58 552.08 507.31 548.15 519.91 542.56 532.04 536.31 543.78 528.59 554.58 519.68 563.92 510.37 572.17 500.12 578.38 489.23 582.12 478.18 584.26 466.67 583.72 454.94 580.46 443.18 576 431.27 569.42 419.35 561.19 407.43 553.21 396.05 545.09 385.24 537.39 374.37 531.22 363.99 525.87 354.12 521.36 344.1 518.45 334.47 516.01 325.27 513.71 315.81 512.32 306.68 510.45 297.93 507.82 288.89 505.36 280.2 501.74 271.99 496.86 263.59 491.8 255.74 485.4 248.67 477.75 241.65 469.92 235.59 460.93 230.74 450.95 226.31 440.89 223.32 429.94 222.01 418.24 221.4 406.54 222.61 394.66 225.47 382.76 228.96 370.84 233.96 358.86 240.24 346.93 246.9 334.95 254.64 323 263.21 311.23 271.9 299.49 281.26 288.03 291.11 277.11 300.89 266.47 311.1 256.64 321.61 247.94 331.99 239.94 342.7 233.41 353.67 228.68 364.54 224.97 375.74 223.22 387.21 223.56 398.64 224.8 410.41 227.89 422.41 232.69" stroke-dasharray="4 8" transform="rotate(44.44, 400, 400)" opacity="0.69"></path><path d="M421.44 243.65C432.61 248.39 443.36 253.97 453.55 260.03 463.68 265.53 473.16 271.21 481.8 276.9 490.27 281.74 497.76 286.62 504.11 291.54 512.56 297.98 522.51 311.99 524.1 320.2 524.75 325.72 524.49 332.06 523.5 339.23 523.11 346.34 522.48 354.34 521.85 363.18 522.42 372 523.35 381.68 524.68 392.18 527.38 402.69 530.19 413.57 532.88 424.69 536.28 435.86 538.98 447.33 540.74 458.96 542.46 470.66 542.8 482.5 541.66 494.28 540.04 506 536.83 517.46 532.13 528.32 526.89 538.73 520.29 548.12 512.53 556.07 504.42 563.01 495.36 568.06 485.61 570.87 475.69 572.33 465.25 571.43 454.47 568.16 443.66 563.92 432.59 557.83 421.42 550.24 410.24 542.87 399.47 535.28 389.16 527.95 378.8 521.88 368.83 516.41 359.29 511.62 349.62 508.21 340.28 505.19 331.31 502.36 322.13 500.41 313.26 498.13 304.74 495.29 296.01 492.73 287.63 489.24 279.73 484.7 271.71 480.12 264.24 474.37 257.53 467.49 250.91 460.49 245.21 452.4 240.67 443.33 236.51 434.2 233.7 424.17 232.45 413.32 231.83 402.48 232.89 391.37 235.48 380.16 238.65 368.96 243.24 357.64 249.02 346.35 255.18 335.07 262.37 323.83 270.38 312.81 278.54 301.89 287.37 291.31 296.69 281.32 305.99 271.65 315.73 262.81 325.75 255.11 335.71 248.06 345.96 242.42 356.43 238.45 366.84 235.37 377.51 234.07 388.36 234.67 399.2 236.02 410.26 239.05 421.44 243.65" stroke-dasharray="1 10" transform="rotate(48.48, 400, 400)" opacity="0.80"></path><path d="M419.38 254.6C429.71 259.09 439.54 264.39 448.77 270.18 457.95 275.52 466.44 281.08 474.1 286.72 481.61 291.64 488.2 296.64 493.72 301.69 501.11 308.41 509.9 322.66 511.47 330.71 512.26 336.06 512.29 342.1 511.72 348.88 511.71 355.56 511.49 363.05 511.22 371.31 511.98 379.55 512.98 388.6 514.24 398.45 516.66 408.3 519.09 418.51 521.36 428.96 524.27 439.45 526.57 450.18 528.05 461.03 529.57 471.88 529.92 482.79 529.01 493.52 527.77 504.12 525.14 514.35 521.19 523.88 516.82 532.95 511.2 540.98 504.5 547.61 497.49 553.35 489.55 557.35 480.88 559.35 472.07 560.24 462.67 559.07 452.85 555.84 443 551.86 432.81 546.24 422.41 539.29 412.01 532.53 401.89 525.47 392.12 518.54 382.31 512.64 372.81 507.15 363.64 502.17 354.38 498.36 345.39 494.88 336.72 491.58 327.9 489.09 319.35 486.39 311.14 483.28 302.79 480.52 294.78 477.03 287.25 472.71 279.66 468.42 272.61 463.14 266.3 456.88 260.11 450.55 254.8 443.23 250.56 434.98 246.7 426.69 244.07 417.52 242.88 407.54 242.27 397.55 243.19 387.26 245.51 376.83 248.36 366.42 252.51 355.88 257.79 345.36 263.43 334.9 270.05 324.49 277.45 314.35 285.03 304.36 293.27 294.74 301.99 285.75 310.75 277.11 319.93 269.29 329.4 262.58 338.83 256.47 348.55 251.68 358.45 248.41 368.31 245.92 378.38 245.03 388.56 245.84 398.74 247.28 409.05 250.22 419.38 254.6" stroke-dasharray="5 3" transform="rotate(52.52, 400, 400)" opacity="0.41"></path><path d="M416.35 265.55C425.82 269.79 434.76 274.78 443.07 280.27 451.33 285.4 458.91 290.8 465.68 296.32 472.34 301.26 478.14 306.31 482.97 311.43 489.49 318.37 497.44 332.86 499.09 340.82 500.04 346.06 500.36 351.89 500.17 358.34 500.5 364.69 500.62 371.73 500.66 379.48 501.58 387.18 502.62 395.63 503.8 404.81 505.95 413.99 508.04 423.49 509.92 433.19 512.38 442.9 514.28 452.8 515.48 462.73 516.79 472.63 517.09 482.49 516.32 492.07 515.35 501.48 513.17 510.43 509.84 518.64 506.2 526.4 501.43 533.13 495.66 538.55 489.65 543.19 482.74 546.27 475.1 547.59 467.33 548.01 458.94 546.65 450.08 543.52 441.18 539.81 431.88 534.67 422.28 528.34 412.68 522.17 403.25 515.66 394.07 509.16 384.87 503.48 375.87 498.06 367.15 493 358.36 488.92 349.79 485.07 341.5 481.39 333.11 478.43 324.96 475.33 317.14 471.95 309.23 468.94 301.66 465.37 294.56 461.13 287.45 457 280.87 452.06 274.99 446.27 269.26 440.48 264.35 433.81 260.44 426.29 256.87 418.75 254.44 410.39 253.32 401.26 252.71 392.13 253.49 382.69 255.55 373.11 258.08 363.55 261.81 353.87 266.57 344.24 271.68 334.68 277.7 325.22 284.47 316.05 291.43 307.06 299.02 298.47 307.09 290.52 315.23 282.93 323.78 276.14 332.61 270.39 341.45 265.19 350.54 261.19 359.79 258.58 369.03 256.62 378.43 256.1 387.89 257.07 397.35 258.57 406.88 261.41 416.35 265.55" stroke-dasharray="2 9" transform="rotate(56.56, 400, 400)" opacity="0.89"></path><path d="M412.5 276.5C421.1 280.46 429.16 285.14 436.6 290.29 444.01 295.17 450.74 300.36 456.73 305.71 462.63 310.6 467.75 315.62 472 320.74 477.83 327.82 485.2 342.47 486.97 350.35 488.09 355.52 488.68 361.18 488.84 367.34 489.46 373.4 489.88 380.05 490.18 387.3 491.2 394.51 492.27 402.37 493.37 410.86 495.26 419.35 497.03 428.09 498.56 436.96 500.59 445.83 502.13 454.81 503.05 463.73 504.11 472.61 504.33 481.34 503.64 489.73 502.83 497.92 501 505.6 498.17 512.53 495.13 519.03 491.09 524.57 486.14 528.88 481 532.56 475.03 534.85 468.34 535.6 461.54 535.65 454.12 534.18 446.19 531.2 438.22 527.77 429.8 523.11 421.03 517.39 412.26 511.8 403.55 505.84 395.02 499.8 386.47 494.41 378.05 489.14 369.84 484.1 361.6 479.85 353.52 475.76 345.69 471.79 337.8 468.45 330.13 465.02 322.77 461.38 315.37 458.11 308.31 454.41 301.69 450.21 295.1 446.14 289.03 441.43 283.62 436.02 278.36 430.64 273.87 424.51 270.3 417.66 267.03 410.79 264.8 403.19 263.76 394.9 263.15 386.61 263.81 378.05 265.61 369.36 267.83 360.7 271.13 351.96 275.38 343.29 279.95 334.7 285.36 326.25 291.47 318.12 297.77 310.17 304.68 302.65 312.04 295.76 319.5 289.2 327.36 283.41 335.49 278.59 343.65 274.24 352.05 270.99 360.58 268.97 369.13 267.49 377.8 267.27 386.49 268.38 395.19 269.9 403.9 272.62 412.5 276.5" stroke-dasharray="3 4" transform="rotate(60.599999999999994, 400, 400)" opacity="0.91"></path><path d="M408.02 287.45C415.76 291.12 422.98 295.46 429.6 300.26 436.19 304.85 442.17 309.77 447.46 314.89 452.69 319.64 457.23 324.57 461.02 329.62 466.27 336.71 473.25 351.36 475.18 359.14 476.45 364.23 477.29 369.71 477.74 375.6 478.6 381.39 479.25 387.67 479.76 394.44 480.85 401.17 481.92 408.43 482.93 416.21 484.59 423.99 486.06 431.93 487.29 439.92 488.93 447.9 490.12 455.9 490.78 463.77 491.6 471.57 491.7 479.15 491.03 486.34 490.32 493.33 488.75 499.79 486.32 505.51 482.03 513.08 469.11 522.3 460.72 523.42 454.82 523.2 448.3 521.68 441.26 518.88 434.2 515.76 426.66 511.57 418.72 506.44 410.79 501.41 402.85 496.01 395 490.46 387.15 485.41 379.38 480.37 371.76 475.45 364.12 471.15 356.62 466.93 349.33 462.79 342.01 459.18 334.89 455.49 328.07 451.66 321.25 448.16 314.74 444.34 308.67 440.14 302.64 436.1 297.11 431.55 292.19 426.46 287.43 421.41 283.36 415.75 280.14 409.49 277.19 403.22 275.16 396.34 274.19 388.87 273.6 381.41 274.14 373.72 275.69 365.96 277.61 358.23 280.49 350.46 284.23 342.79 288.25 335.21 293.05 327.81 298.48 320.74 304.11 313.85 310.3 307.4 316.93 301.55 323.66 295.99 330.77 291.16 338.13 287.2 345.55 283.65 353.2 281.07 360.96 279.57 368.74 278.51 376.63 278.55 384.51 279.75 392.41 281.27 400.28 283.84 408.02 287.45" stroke-dasharray="2 1" transform="rotate(64.64, 400, 400)" opacity="0.84"></path><path d="M403.14 298.39C410.03 301.77 416.42 305.75 422.28 310.16 428.12 314.43 433.4 319.03 438.07 323.85 442.72 328.41 446.76 333.16 450.17 338.04 454.95 345.02 461.65 359.45 463.73 367.03 465.66 374.65 468.33 391.35 469.4 400.56 470.53 406.8 471.57 413.45 472.49 420.5 473.93 427.54 475.14 434.65 476.08 441.73 477.38 448.79 478.26 455.79 478.68 462.59 479.25 469.31 479.22 475.77 478.55 481.79 477.18 490.3 470.7 503.61 465.59 507.88 459.65 510.55 444.47 509.9 435.45 506.57 429.24 503.77 422.56 500.04 415.48 495.49 408.39 491.02 401.25 486.17 394.14 481.13 387.03 476.47 379.96 471.72 372.99 467.02 366.03 462.78 359.17 458.56 352.49 454.37 345.81 450.6 339.32 446.76 333.11 442.82 326.91 439.16 321.01 435.26 315.52 431.09 310.1 427.07 305.13 422.67 300.72 417.85 296.47 413.09 292.84 407.85 289.97 402.14 287.33 396.44 285.52 390.24 284.63 383.57 284.06 376.9 284.48 370.1 285.8 363.27 287.42 356.47 289.9 349.68 293.14 343.04 296.63 336.48 300.81 330.12 305.57 324.11 310.5 318.25 315.96 312.83 321.82 307.98 327.78 303.37 334.11 299.42 340.67 296.26 347.3 293.43 354.14 291.44 361.08 290.4 368.06 289.7 375.12 289.94 382.17 291.18 389.23 292.67 396.26 295.08 403.14 298.39" stroke-dasharray="2 4" transform="rotate(68.68, 400, 400)" opacity="0.43"></path><path d="M398.1 309.34C410.2 315.45 420.53 323.53 428.81 332.62 437.03 340.95 443.26 350.12 447.41 359.75 451.84 368.65 454.73 378.44 456.24 389.02 458.85 399.33 460.82 410.87 462.06 423.45 464.88 436.03 466.53 448.48 466.76 460.05 467.56 471.35 466.15 481.24 462.44 488.73 458.58 495.28 452.19 498.79 443.58 498.58 434.79 497.27 423.94 492.51 411.45 484.54 398.97 476.84 386.15 467.92 373.65 458.78 361.19 451.03 349.06 443.03 337.93 434.89 326.93 427.68 317.1 419.57 309.23 410.44 301.9 401.53 296.91 391.11 295.07 379.34 294.26 367.56 296.83 355.6 302.13 344.25 308.24 333.18 316.73 323.15 326.79 315.1 337.25 307.82 348.96 303.04 361.12 301.45 373.42 300.85 386.01 303.44 398.1 309.34" stroke-dasharray="1 4" transform="rotate(72.72, 400, 400)" opacity="0.86"></path><path d="M393.16 320.29C403.62 325.75 412.6 332.97 419.87 341.19 427.13 348.89 432.78 357.45 436.76 366.44 441.02 374.92 444.02 384.13 445.82 393.88 448.49 403.43 450.47 413.85 451.62 424.88 453.96 435.9 455.13 446.5 455.02 456.06 455.41 465.41 453.97 473.32 450.63 479.05 447.27 484.11 441.8 486.57 434.43 485.97 426.96 484.64 417.66 480.47 406.86 473.59 396.05 466.92 384.85 459.02 373.89 450.73 362.98 443.41 352.35 435.71 342.61 427.85 333.04 420.7 324.52 412.87 317.74 404.37 311.42 396.07 307.12 386.7 305.5 376.45 304.71 366.19 306.79 356.04 311.21 346.63 316.27 337.42 323.41 329.3 331.94 322.97 340.81 317.21 350.82 313.62 361.27 312.72 371.85 312.52 382.7 315 393.16 320.29" stroke-dasharray="2 0" transform="rotate(76.76, 400, 400)" opacity="0.77"></path><path d="M388.56 331.24C397.42 336.01 405.11 342.33 411.44 349.57 417.79 356.5 422.88 364.25 426.65 372.41 430.67 380.23 433.67 388.65 435.63 397.41 438.24 406.04 440.15 415.23 441.18 424.68 443.08 434.13 443.85 442.94 443.49 450.64 442.79 461.27 433.76 473.26 425.2 473.28 418.91 472.02 411.07 468.45 401.91 462.64 392.76 456.98 383.23 450.14 373.87 442.82 364.57 436.14 355.51 428.99 347.24 421.66 339.13 414.83 331.95 407.49 326.25 399.74 320.94 392.15 317.32 383.86 315.94 375.09 315.19 366.31 316.82 357.89 320.39 350.28 324.47 342.81 330.29 336.41 337.33 331.59 344.64 327.16 352.96 324.57 361.71 324.2 370.56 324.3 379.69 326.6 388.56 331.24" stroke-dasharray="8 7" transform="rotate(80.80000000000001, 400, 400)" opacity="0.65"></path><path d="M384.53 342.19C391.85 346.24 398.29 351.6 403.7 357.79 409.14 363.8 413.64 370.56 417.12 377.69 420.8 384.63 423.67 392.05 425.65 399.65 428.08 407.18 429.84 415.03 430.75 422.88 432.46 434.28 431.19 452.11 427.79 457.53 423.22 460.86 407.64 457.93 396.88 451.69 389.34 447.02 381.48 441.29 373.77 435.03 366.12 429.17 358.67 422.8 351.9 416.24 345.27 410.01 339.41 403.38 334.79 396.53 330.47 389.8 327.52 382.66 326.38 375.35 325.68 368.04 326.91 361.23 329.7 355.26 332.85 349.38 337.44 344.49 343.04 340.96 348.85 337.67 355.52 335.89 362.6 335.89 369.76 336.17 377.22 338.24 384.53 342.19" stroke-dasharray="0 8" transform="rotate(84.84, 400, 400)" opacity="0.25"></path><path d="M381.28 353.14C392.89 359.72 402.17 370.43 408.21 382.36 414.8 393.92 419.18 407.08 420.31 419.59 422.89 432.1 421.61 441.45 416.93 445.91 412.52 449.76 403.91 448.24 391.99 440.74 380.07 433.49 367.33 422.82 356.67 411.52 346.44 400.95 338.91 388.95 336.82 377.22 335.9 365.48 340.79 356.14 349.15 351.04 358.07 346.47 369.67 346.79 381.28 353.14" stroke-dasharray="8 9" transform="rotate(88.88, 400, 400)" opacity="0.88"></path><path d="M378.97 364.09C387.62 369.12 394.89 377.32 399.9 386.5 405.25 395.54 408.91 405.7 409.87 415.02 410.99 427.65 399.64 435.94 387.51 429.79 378.67 424.38 369.35 416.19 361.64 407.36 354.2 398.88 348.76 389.41 347.25 380.57 346.43 371.72 349.78 365.1 355.71 361.77 361.96 358.68 370.31 359.2 378.97 364.09" stroke-dasharray="6 3" transform="rotate(92.92, 400, 400)" opacity="0.42"></path><path d="M377.71 375.04C389.22 381.85 398.36 397.15 399.44 409.48 401.9 421.8 395.34 426.11 383.66 418.84 371.97 411.81 359.9 397.06 357.69 385.18 356.72 373.29 366.2 368.46 377.71 375.04" stroke-dasharray="8 4" transform="rotate(96.96, 400, 400)" opacity="0.32"></path></g></svg>',spiral:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 1422 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="oooscillate-grad"><stop stop-color="hsl(0, 0%, 84%)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsl(0, 0%, 34%)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><g stroke-width="2" stroke="url(#oooscillate-grad)" fill="none" stroke-linecap="round"><path d="M 0 572 Q 355.5 -100 711 400 Q 1066.5 900 1422 572" opacity="0.48"></path><path d="M 0 550 Q 355.5 -100 711 400 Q 1066.5 900 1422 550" opacity="0.56"></path><path d="M 0 528 Q 355.5 -100 711 400 Q 1066.5 900 1422 528" opacity="0.70"></path><path d="M 0 506 Q 355.5 -100 711 400 Q 1066.5 900 1422 506" opacity="1.00"></path><path d="M 0 484 Q 355.5 -100 711 400 Q 1066.5 900 1422 484" opacity="0.72"></path><path d="M 0 462 Q 355.5 -100 711 400 Q 1066.5 900 1422 462" opacity="0.18"></path><path d="M 0 440 Q 355.5 -100 711 400 Q 1066.5 900 1422 440" opacity="0.63"></path><path d="M 0 418 Q 355.5 -100 711 400 Q 1066.5 900 1422 418" opacity="0.93"></path><path d="M 0 396 Q 355.5 -100 711 400 Q 1066.5 900 1422 396" opacity="0.42"></path><path d="M 0 374 Q 355.5 -100 711 400 Q 1066.5 900 1422 374" opacity="0.89"></path><path d="M 0 352 Q 355.5 -100 711 400 Q 1066.5 900 1422 352" opacity="0.82"></path><path d="M 0 330 Q 355.5 -100 711 400 Q 1066.5 900 1422 330" opacity="0.67"></path><path d="M 0 308 Q 355.5 -100 711 400 Q 1066.5 900 1422 308" opacity="0.25"></path><path d="M 0 286 Q 355.5 -100 711 400 Q 1066.5 900 1422 286" opacity="0.21"></path><path d="M 0 264 Q 355.5 -100 711 400 Q 1066.5 900 1422 264" opacity="0.80"></path><path d="M 0 242 Q 355.5 -100 711 400 Q 1066.5 900 1422 242" opacity="0.92"></path><path d="M 0 220 Q 355.5 -100 711 400 Q 1066.5 900 1422 220" opacity="0.24"></path><path d="M 0 198 Q 355.5 -100 711 400 Q 1066.5 900 1422 198" opacity="1.00"></path><path d="M 0 176 Q 355.5 -100 711 400 Q 1066.5 900 1422 176" opacity="0.81"></path><path d="M 0 154 Q 355.5 -100 711 400 Q 1066.5 900 1422 154" opacity="0.85"></path><path d="M 0 132 Q 355.5 -100 711 400 Q 1066.5 900 1422 132" opacity="0.14"></path><path d="M 0 110 Q 355.5 -100 711 400 Q 1066.5 900 1422 110" opacity="0.49"></path><path d="M 0 88 Q 355.5 -100 711 400 Q 1066.5 900 1422 88" opacity="0.62"></path><path d="M 0 66 Q 355.5 -100 711 400 Q 1066.5 900 1422 66" opacity="0.54"></path><path d="M 0 44 Q 355.5 -100 711 400 Q 1066.5 900 1422 44" opacity="0.22"></path></g></svg>',flurry:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="ffflurry-grad" gradientTransform="rotate(270)"><stop stop-color="hsl(0, 0%, 100%)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsl(0, 0%, 81%)" stop-opacity="1" offset="45%"></stop><stop stop-color="hsl(0, 0%, 34%)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><rect width="100%" height="100%" fill="transparent"></rect><g fill="url(#ffflurry-grad)"><rect width="357" height="3" x="561.5" y="485.5" rx="1.5" transform="rotate(45, 740, 487)" opacity="0.97"></rect><rect width="245" height="3" x="172.5" y="592.5" rx="1.5" transform="rotate(45, 295, 594)" opacity="0.69"></rect><rect width="309" height="3" x="133.5" y="773.5" rx="1.5" transform="rotate(45, 288, 775)" opacity="0.13"></rect><rect width="474" height="3" x="29" y="241.5" rx="1.5" transform="rotate(45, 266, 243)" opacity="0.73"></rect><rect width="391" height="3" x="376.5" y="280.5" rx="1.5" transform="rotate(45, 572, 282)" opacity="0.49"></rect><rect width="329" height="3" x="407.5" y="687.5" rx="1.5" transform="rotate(45, 572, 689)" opacity="0.72"></rect><rect width="55" height="3" x="259.5" y="504.5" rx="1.5" transform="rotate(45, 287, 506)" opacity="0.17"></rect><rect width="536" height="3" x="379" y="490.5" rx="1.5" transform="rotate(45, 647, 492)" opacity="0.84"></rect><rect width="395" height="3" x="135.5" y="733.5" rx="1.5" transform="rotate(45, 333, 735)" opacity="0.41"></rect><rect width="299" height="3" x="487.5" y="274.5" rx="1.5" transform="rotate(45, 637, 276)" opacity="0.95"></rect><rect width="180" height="3" x="13" y="503.5" rx="1.5" transform="rotate(45, 103, 505)" opacity="0.30"></rect><rect width="573" height="3" x="-68.5" y="726.5" rx="1.5" transform="rotate(45, 218, 728)" opacity="0.90"></rect><rect width="422" height="3" x="539" y="52.5" rx="1.5" transform="rotate(45, 750, 54)" opacity="0.18"></rect><rect width="240" height="3" x="97" y="610.5" rx="1.5" transform="rotate(45, 217, 612)" opacity="0.79"></rect><rect width="476" height="3" x="280" y="206.5" rx="1.5" transform="rotate(45, 518, 208)" opacity="0.62"></rect><rect width="551" height="3" x="62.5" y="327.5" rx="1.5" transform="rotate(45, 338, 329)" opacity="0.68"></rect><rect width="89" height="3" x="16.5" y="142.5" rx="1.5" transform="rotate(45, 61, 144)" opacity="0.75"></rect><rect width="336" height="3" x="600" y="240.5" rx="1.5" transform="rotate(45, 768, 242)" opacity="0.66"></rect><rect width="564" height="3" x="479" y="147.5" rx="1.5" transform="rotate(45, 761, 149)" opacity="0.08"></rect><rect width="604" height="3" x="-256" y="753.5" rx="1.5" transform="rotate(45, 46, 755)" opacity="0.10"></rect><rect width="253" height="3" x="430.5" y="120.5" rx="1.5" transform="rotate(45, 557, 122)" opacity="0.46"></rect><rect width="212" height="3" x="308" y="123.5" rx="1.5" transform="rotate(45, 414, 125)" opacity="0.43"></rect><rect width="213" height="3" x="582.5" y="308.5" rx="1.5" transform="rotate(45, 689, 310)" opacity="0.12"></rect><rect width="477" height="3" x="174.5" y="745.5" rx="1.5" transform="rotate(45, 413, 747)" opacity="0.37"></rect><rect width="545" height="3" x="-65.5" y="168.5" rx="1.5" transform="rotate(45, 207, 170)" opacity="0.73"></rect><rect width="67" height="3" x="420.5" y="190.5" rx="1.5" transform="rotate(45, 454, 192)" opacity="0.94"></rect><rect width="144" height="3" x="6" y="210.5" rx="1.5" transform="rotate(45, 78, 212)" opacity="0.16"></rect><rect width="108" height="3" x="521" y="475.5" rx="1.5" transform="rotate(45, 575, 477)" opacity="0.98"></rect><rect width="118" height="3" x="343" y="635.5" rx="1.5" transform="rotate(45, 402, 637)" opacity="0.39"></rect><rect width="428" height="3" x="279" y="456.5" rx="1.5" transform="rotate(45, 493, 458)" opacity="0.14"></rect><rect width="151" height="3" x="88.5" y="377.5" rx="1.5" transform="rotate(45, 164, 379)" opacity="0.99"></rect><rect width="594" height="3" x="180" y="288.5" rx="1.5" transform="rotate(45, 477, 290)" opacity="0.99"></rect><rect width="378" height="3" x="185" y="541.5" rx="1.5" transform="rotate(45, 374, 543)" opacity="0.62"></rect><rect width="104" height="3" x="367" y="361.5" rx="1.5" transform="rotate(45, 419, 363)" opacity="0.55"></rect><rect width="284" height="3" x="44" y="503.5" rx="1.5" transform="rotate(45, 186, 505)" opacity="0.76"></rect><rect width="273" height="3" x="447.5" y="771.5" rx="1.5" transform="rotate(45, 584, 773)" opacity="0.75"></rect><rect width="378" height="3" x="-156" y="283.5" rx="1.5" transform="rotate(45, 33, 285)" opacity="0.56"></rect><rect width="110" height="3" x="671" y="772.5" rx="1.5" transform="rotate(45, 726, 774)" opacity="0.14"></rect><rect width="194" height="3" x="409" y="627.5" rx="1.5" transform="rotate(45, 506, 629)" opacity="0.48"></rect><rect width="132" height="3" x="563" y="204.5" rx="1.5" transform="rotate(45, 629, 206)" opacity="0.47"></rect><rect width="269" height="3" x="178.5" y="415.5" rx="1.5" transform="rotate(45, 313, 417)" opacity="0.38"></rect><rect width="148" height="3" x="-28" y="571.5" rx="1.5" transform="rotate(45, 46, 573)" opacity="0.33"></rect><rect width="156" height="3" x="503" y="186.5" rx="1.5" transform="rotate(45, 581, 188)" opacity="0.39"></rect><rect width="528" height="3" x="382" y="38.5" rx="1.5" transform="rotate(45, 646, 40)" opacity="0.59"></rect><rect width="286" height="3" x="331" y="538.5" rx="1.5" transform="rotate(45, 474, 540)" opacity="0.40"></rect><rect width="291" height="3" x="568.5" y="192.5" rx="1.5" transform="rotate(45, 714, 194)" opacity="0.30"></rect><rect width="672" height="3" x="48" y="243.5" rx="1.5" transform="rotate(45, 384, 245)" opacity="0.16"></rect><rect width="115" height="3" x="83.5" y="753.5" rx="1.5" transform="rotate(45, 141, 755)" opacity="0.56"></rect><rect width="425" height="3" x="406.5" y="589.5" rx="1.5" transform="rotate(45, 619, 591)" opacity="0.33"></rect><rect width="415" height="3" x="337.5" y="38.5" rx="1.5" transform="rotate(45, 545, 40)" opacity="0.51"></rect><rect width="88" height="3" x="87" y="285.5" rx="1.5" transform="rotate(45, 131, 287)" opacity="0.21"></rect><rect width="46" height="3" x="726" y="705.5" rx="1.5" transform="rotate(45, 749, 707)" opacity="0.60"></rect><rect width="588" height="3" x="40" y="131.5" rx="1.5" transform="rotate(45, 334, 133)" opacity="0.90"></rect><rect width="560" height="3" x="380" y="121.5" rx="1.5" transform="rotate(45, 660, 123)" opacity="0.50"></rect><rect width="301" height="3" x="82.5" y="425.5" rx="1.5" transform="rotate(45, 233, 427)" opacity="0.31"></rect><rect width="517" height="3" x="-196.5" y="378.5" rx="1.5" transform="rotate(45, 62, 380)" opacity="0.60"></rect><rect width="262" height="3" x="387" y="347.5" rx="1.5" transform="rotate(45, 518, 349)" opacity="0.38"></rect><rect width="207" height="3" x="205.5" y="670.5" rx="1.5" transform="rotate(45, 309, 672)" opacity="0.86"></rect><rect width="275" height="3" x="545.5" y="229.5" rx="1.5" transform="rotate(45, 683, 231)" opacity="0.35"></rect><rect width="444" height="3" x="427" y="712.5" rx="1.5" transform="rotate(45, 649, 714)" opacity="0.44"></rect><rect width="311" height="3" x="-119.5" y="458.5" rx="1.5" transform="rotate(45, 36, 460)" opacity="0.85"></rect><rect width="425" height="3" x="-65.5" y="64.5" rx="1.5" transform="rotate(45, 147, 66)" opacity="0.90"></rect><rect width="327" height="3" x="590.5" y="317.5" rx="1.5" transform="rotate(45, 754, 319)" opacity="0.41"></rect><rect width="127" height="3" x="-31.5" y="657.5" rx="1.5" transform="rotate(45, 32, 659)" opacity="1.00"></rect><rect width="213" height="3" x="287.5" y="450.5" rx="1.5" transform="rotate(45, 394, 452)" opacity="0.49"></rect><rect width="294" height="3" x="-102" y="48.5" rx="1.5" transform="rotate(45, 45, 50)" opacity="0.56"></rect><rect width="301" height="3" x="98.5" y="327.5" rx="1.5" transform="rotate(45, 249, 329)" opacity="0.91"></rect><rect width="462" height="3" x="-131" y="678.5" rx="1.5" transform="rotate(45, 100, 680)" opacity="0.21"></rect><rect width="139" height="3" x="410.5" y="94.5" rx="1.5" transform="rotate(45, 480, 96)" opacity="0.36"></rect><rect width="379" height="3" x="448.5" y="374.5" rx="1.5" transform="rotate(45, 638, 376)" opacity="0.79"></rect><rect width="343" height="3" x="-27.5" y="617.5" rx="1.5" transform="rotate(45, 144, 619)" opacity="0.53"></rect><rect width="414" height="3" x="532" y="604.5" rx="1.5" transform="rotate(45, 739, 606)" opacity="0.75"></rect><rect width="425" height="3" x="54.5" y="47.5" rx="1.5" transform="rotate(45, 267, 49)" opacity="0.60"></rect><rect width="507" height="3" x="159.5" y="32.5" rx="1.5" transform="rotate(45, 413, 34)" opacity="0.85"></rect><rect width="370" height="3" x="364" y="398.5" rx="1.5" transform="rotate(45, 549, 400)" opacity="0.11"></rect><rect width="60" height="3" x="724" y="393.5" rx="1.5" transform="rotate(45, 754, 395)" opacity="0.09"></rect><rect width="294" height="3" x="348" y="741.5" rx="1.5" transform="rotate(45, 495, 743)" opacity="0.80"></rect></g></svg>',whirling:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><g fill="hsl(0, 0%, 28%)" transform="matrix(1.1,0,0,1.1,-39.10000000000002,-39.00000000000006)"><circle r="1.5" cx="405" cy="400" opacity="0.69"></circle><circle r="1.5" cx="402" cy="406" opacity="0.61"></circle><circle r="1.5" cx="395" cy="405" opacity="0.27"></circle><circle r="1.5" cx="392" cy="397" opacity="0.61"></circle><circle r="1.5" cx="399" cy="390" opacity="0.79"></circle><circle r="1.5" cx="410" cy="395" opacity="0.95"></circle><circle r="1.5" cx="409" cy="407" opacity="0.81"></circle><circle r="1.5" cx="397" cy="413" opacity="0.27"></circle><circle r="1.5" cx="386" cy="402" opacity="0.55"></circle><circle r="1.5" cx="392" cy="387" opacity="0.59"></circle><circle r="1.5" cx="409" cy="386" opacity="0.57"></circle><circle r="1.5" cx="417" cy="403" opacity="0.53"></circle><circle r="1.5" cx="404" cy="418" opacity="0.20"></circle><circle r="1.5" cx="384" cy="412" opacity="0.73"></circle><circle r="1.5" cx="382" cy="389" opacity="0.45"></circle><circle r="1.5" cx="403" cy="378" opacity="0.32"></circle><circle r="1.5" cx="423" cy="393" opacity="0.61"></circle><circle r="1.5" cx="416" cy="419" opacity="0.23"></circle><circle r="1.5" cx="389" cy="423" opacity="0.36"></circle><circle r="1.5" cx="373" cy="399" opacity="0.27"></circle><circle r="1.5" cx="390" cy="374" opacity="0.51"></circle><circle r="1.5" cx="421" cy="380" opacity="0.48"></circle><circle r="1.5" cx="428" cy="412" opacity="0.23"></circle><circle r="1.5" cx="401" cy="432" opacity="0.15"></circle><circle r="1.5" cx="370" cy="414" opacity="0.63"></circle><circle r="1.5" cx="375" cy="377" opacity="0.47"></circle><circle r="1.5" cx="411" cy="367" opacity="0.70"></circle><circle r="1.5" cx="436" cy="397" opacity="0.98"></circle><circle r="1.5" cx="418" cy="433" opacity="0.17"></circle><circle r="1.5" cx="377" cy="431" opacity="0.78"></circle><circle r="1.5" cx="361" cy="390" opacity="0.96"></circle><circle r="2" cx="393" cy="360" opacity="0.72"></circle><circle r="2" cx="435" cy="377" opacity="0.36"></circle><circle r="2" cx="436" cy="424" opacity="0.32"></circle><circle r="2" cx="392" cy="444" opacity="0.40"></circle><circle r="2" cx="356" cy="411" opacity="0.28"></circle><circle r="2" cx="372" cy="363" opacity="0.17"></circle><circle r="2" cx="423" cy="358" opacity="0.82"></circle><circle r="2" cx="449" cy="405" opacity="0.25"></circle><circle r="2" cx="415" cy="448" opacity="0.32"></circle><circle r="2" cx="361" cy="434" opacity="0.35"></circle><circle r="2" cx="352" cy="378" opacity="0.48"></circle><circle r="2" cx="401" cy="346" opacity="0.85"></circle><circle r="2" cx="451" cy="379" opacity="0.17"></circle><circle r="2" cx="440" cy="439" opacity="0.77"></circle><circle r="2" cx="380" cy="453" opacity="0.28"></circle><circle r="2" cx="342" cy="403" opacity="0.99"></circle><circle r="2" cx="374" cy="347" opacity="0.24"></circle><circle r="2" cx="439" cy="354" opacity="0.24"></circle><circle r="2" cx="459" cy="418" opacity="0.72"></circle><circle r="2" cx="408" cy="463" opacity="0.95"></circle><circle r="2" cx="345" cy="432" opacity="0.80"></circle><circle r="2" cx="347" cy="362" opacity="0.40"></circle><circle r="2" cx="414" cy="335" opacity="0.42"></circle><circle r="2" cx="466" cy="387" opacity="0.27"></circle><circle r="2" cx="439" cy="457" opacity="0.67"></circle><circle r="2" cx="363" cy="459" opacity="0.11"></circle><circle r="2" cx="330" cy="390" opacity="0.66"></circle><circle r="2" cx="381" cy="330" opacity="0.33"></circle><circle r="2" cx="457" cy="354" opacity="0.31"></circle><circle r="2" cx="466" cy="435" opacity="0.50"></circle><circle r="2" cx="394" cy="476" opacity="0.51"></circle><circle r="2" cx="327" cy="425" opacity="0.69"></circle><circle r="2" cx="347" cy="343" opacity="0.71"></circle><circle r="2" cx="432" cy="327" opacity="0.65"></circle><circle r="2" cx="480" cy="400" opacity="0.64"></circle><circle r="2" cx="432" cy="475" opacity="0.39"></circle><circle r="2" cx="344" cy="460" opacity="0.94"></circle><circle r="2" cx="321" cy="372" opacity="0.85"></circle><circle r="2" cx="394" cy="315" opacity="0.73"></circle><circle r="2" cx="476" cy="360" opacity="0.41"></circle><circle r="2" cx="468" cy="455" opacity="0.79"></circle><circle r="2" cx="377" cy="485" opacity="0.48"></circle><circle r="2" cx="311" cy="413" opacity="0.77"></circle><circle r="2" cx="352" cy="323" opacity="0.51"></circle><circle r="2" cx="452" cy="324" opacity="0.26"></circle><circle r="2" cx="491" cy="418" opacity="0.84"></circle><circle r="2" cx="420" cy="492" opacity="0.69"></circle><circle r="2" cx="323" cy="456" opacity="0.49"></circle><circle r="2" cx="317" cy="351" opacity="0.62"></circle><circle r="2" cx="412" cy="303" opacity="0.79"></circle><circle r="2" cx="495" cy="372" opacity="0.46"></circle><circle r="2" cx="464" cy="477" opacity="0.77"></circle><circle r="2" cx="355" cy="491" opacity="0.16"></circle><circle r="2" cx="298" cy="395" opacity="0.35"></circle><circle r="2" cx="363" cy="303" opacity="0.92"></circle><circle r="2" cx="475" cy="327" opacity="0.83"></circle><circle r="2" cx="498" cy="440" opacity="0.43"></circle><circle r="2" cx="402" cy="507" opacity="0.21"></circle><circle r="2" cx="302" cy="445" opacity="0.12"></circle><circle r="2" cx="318" cy="327" opacity="0.24"></circle><circle r="2" cx="434" cy="295" opacity="0.67"></circle><circle r="2" cx="511" cy="389" opacity="0.98"></circle><circle r="2" cx="455" cy="499" opacity="0.34"></circle><circle r="2" cx="331" cy="490" opacity="0.16"></circle><circle r="2" cx="288" cy="372" opacity="0.19"></circle><circle r="2" cx="381" cy="285" opacity="0.27"></circle><circle r="2" cx="498" cy="336" opacity="0.48"></circle><circle r="2" cx="499" cy="465" opacity="0.20"></circle><circle r="2" cx="380" cy="518" opacity="0.55"></circle><circle r="2" cx="282" cy="429" opacity="0.52"></circle><circle r="2" cx="326" cy="303" opacity="0.84"></circle><circle r="2" cx="460" cy="292" opacity="0.82"></circle><circle r="2" cx="524" cy="412" opacity="0.82"></circle><circle r="2" cx="438" cy="520" opacity="0.94"></circle><circle r="2" cx="305" cy="484" opacity="0.41"></circle><circle r="2" cx="284" cy="346" opacity="0.28"></circle><circle r="2" cx="403" cy="271" opacity="0.28"></circle><circle r="2" cx="521" cy="351" opacity="0.52"></circle><circle r="2" cx="494" cy="492" opacity="0.84"></circle><circle r="2" cx="353" cy="524" opacity="0.13"></circle><circle r="2" cx="266" cy="406" opacity="0.79"></circle><circle r="2" cx="341" cy="279" opacity="0.70"></circle><circle r="2" cx="488" cy="296" opacity="0.72"></circle><circle r="2" cx="531" cy="440" opacity="0.10"></circle><circle r="2" cx="416" cy="537" opacity="0.73"></circle><circle r="2" cx="279" cy="470" opacity="0.55"></circle><circle r="2" cx="286" cy="317" opacity="0.91"></circle><circle r="2" cx="431" cy="262" opacity="0.22"></circle><circle r="2" cx="540" cy="373" opacity="0.85"></circle><circle r="2" cx="482" cy="519" opacity="0.79"></circle><circle r="2" cx="323" cy="523" opacity="0.75"></circle><circle r="2" cx="255" cy="378" opacity="0.85"></circle><circle r="2" cx="362" cy="257" opacity="0.97"></circle><circle r="2" cx="516" cy="307" opacity="0.43"></circle><circle r="2" cx="533" cy="470" opacity="0.65"></circle><circle r="2" cx="389" cy="551" opacity="0.86"></circle><circle r="2" cx="256" cy="450" opacity="0.61"></circle><circle r="2" cx="296" cy="287" opacity="0.55"></circle><circle r="2" cx="462" cy="258" opacity="0.57"></circle><circle r="2" cx="556" cy="401" opacity="0.72"></circle><circle r="2" cx="462" cy="544" opacity="0.20"></circle><circle r="2" cx="292" cy="515" opacity="0.94"></circle><circle r="2" cx="250" cy="347" opacity="0.97"></circle><circle r="2" cx="389" cy="240" opacity="0.79"></circle><circle r="2" cx="543" cy="325" opacity="0.60"></circle><circle r="2" cx="527" cy="502" opacity="0.40"></circle><circle r="2" cx="356" cy="558" opacity="1.00"></circle><circle r="2" cx="237" cy="423" opacity="0.89"></circle><circle r="2" cx="313" cy="258" opacity="0.21"></circle><circle r="2" cx="496" cy="263" opacity="0.71"></circle><circle r="2" cx="565" cy="433" opacity="0.86"></circle><circle r="2" cx="436" cy="566" opacity="0.64"></circle><circle r="2" cx="261" cy="500" opacity="1.00"></circle><circle r="2" cx="252" cy="312" opacity="0.66"></circle><circle r="2" cx="422" cy="228" opacity="0.23"></circle><circle r="2" cx="567" cy="351" opacity="0.65"></circle><circle r="2" cx="513" cy="535" opacity="0.57"></circle><circle r="2" cx="321" cy="558" opacity="0.82"></circle><circle r="2" cx="222" cy="391" opacity="0.16"></circle><circle r="2" cx="337" cy="232" opacity="0.79"></circle><circle r="2" cx="529" cy="275" opacity="0.14"></circle><circle r="2" cx="568" cy="469" opacity="0.13"></circle><circle r="2" cx="404" cy="582" opacity="0.18"></circle><circle r="2" cx="233" cy="477" opacity="0.68"></circle><circle r="2" cx="262" cy="277" opacity="0.90"></circle><circle r="2" cx="458" cy="223" opacity="0.65"></circle><circle r="2" cx="586" cy="383" opacity="0.64"></circle><circle r="2" cx="491" cy="565" opacity="0.95"></circle><circle r="2" cx="284" cy="550" opacity="0.95"></circle><circle r="2" cx="215" cy="354" opacity="0.13"></circle><circle r="2" cx="369" cy="211" opacity="0.82"></circle><circle r="2" cx="562" cy="295" opacity="0.77"></circle><circle r="2" cx="562" cy="507" opacity="0.70"></circle><circle r="2" cx="366" cy="592" opacity="0.83"></circle><circle r="2" cx="209" cy="446" opacity="0.30"></circle><circle r="2" cx="281" cy="242" opacity="0.41"></circle><circle r="2" cx="497" cy="227" opacity="0.87"></circle><circle r="2" cx="599" cy="420" opacity="0.41"></circle><circle r="2" cx="461" cy="591" opacity="0.14"></circle><circle r="2" cx="248" cy="533" opacity="0.93"></circle><circle r="2" cx="216" cy="313" opacity="0.76"></circle><circle r="2" cx="406" cy="196" opacity="0.72"></circle><circle r="2" cx="591" cy="323" opacity="0.87"></circle><circle r="2" cx="547" cy="545" opacity="0.33"></circle><circle r="2" cx="325" cy="594" opacity="0.63"></circle><circle r="2" cx="191" cy="409" opacity="0.54"></circle><circle r="2" cx="308" cy="211" opacity="0.48"></circle><circle r="2" cx="537" cy="239" opacity="0.93"></circle><circle r="2" cx="603" cy="462" opacity="0.92"></circle><circle r="2" cx="425" cy="612" opacity="0.90"></circle><circle r="2" cx="214" cy="508" opacity="0.52"></circle><circle r="2" cx="226" cy="272" opacity="0.32"></circle><circle r="2" cx="448" cy="188" opacity="0.72"></circle><circle r="2.5" cx="615" cy="359" opacity="0.30"></circle><circle r="2.5" cx="524" cy="581" opacity="0.14"></circle><circle r="2.5" cx="283" cy="587" opacity="0.39"></circle><circle r="2.5" cx="181" cy="367" opacity="0.83"></circle><circle r="2.5" cx="343" cy="184" opacity="0.16"></circle><circle r="2.5" cx="576" cy="260" opacity="0.38"></circle><circle r="2.5" cx="599" cy="506" opacity="0.88"></circle><circle r="2.5" cx="382" cy="626" opacity="0.49"></circle><circle r="2.5" cx="185" cy="474" opacity="0.94"></circle><circle r="2.5" cx="245" cy="232" opacity="0.85"></circle><circle r="2.5" cx="493" cy="190" opacity="0.28"></circle><circle r="2.5" cx="631" cy="401" opacity="0.41"></circle><circle r="2.5" cx="492" cy="614" opacity="0.30"></circle><circle r="2.5" cx="240" cy="570" opacity="0.65"></circle><circle r="2.5" cx="179" cy="321" opacity="0.55"></circle><circle r="2.5" cx="384" cy="165" opacity="0.70"></circle><circle r="2.5" cx="610" cy="291" opacity="0.81"></circle><circle r="2.5" cx="585" cy="550" opacity="0.41"></circle><circle r="2.5" cx="336" cy="631" opacity="0.87"></circle><circle r="2.5" cx="162" cy="433" opacity="0.68"></circle><circle r="2.5" cx="274" cy="194" opacity="0.53"></circle><circle r="2.5" cx="539" cy="201" opacity="0.58"></circle><circle r="2.5" cx="639" cy="448" opacity="0.37"></circle><circle r="2.5" cx="452" cy="640" opacity="0.48"></circle><circle r="2.5" cx="200" cy="544" opacity="0.25"></circle><circle r="2.5" cx="187" cy="273" opacity="0.66"></circle><circle r="2.5" cx="431" cy="153" opacity="0.93"></circle><circle r="2.5" cx="640" cy="330" opacity="0.56"></circle><circle r="2.5" cx="561" cy="593" opacity="0.71"></circle><circle r="2.5" cx="287" cy="625" opacity="0.14"></circle><circle r="2.5" cx="147" cy="386" opacity="0.42"></circle><circle r="2.5" cx="311" cy="162" opacity="0.97"></circle><circle r="2.5" cx="584" cy="223" opacity="0.20"></circle><circle r="2.5" cx="637" cy="498" opacity="0.86"></circle><circle r="2.5" cx="405" cy="658" opacity="0.15"></circle><circle r="2.5" cx="164" cy="508" opacity="0.15"></circle><circle r="2.5" cx="206" cy="226" opacity="0.78"></circle><circle r="2.5" cx="482" cy="152" opacity="0.63"></circle><circle r="2.5" cx="661" cy="376" opacity="1.00"></circle><circle r="2.5" cx="527" cy="631" opacity="0.42"></circle><circle r="2.5" cx="238" cy="609" opacity="0.19"></circle><circle r="2.5" cx="142" cy="335" opacity="0.36"></circle><circle r="2.5" cx="357" cy="136" opacity="0.75"></circle><circle r="2.5" cx="625" cy="254" opacity="0.24"></circle><circle r="2.5" cx="624" cy="549" opacity="0.85"></circle><circle r="2.5" cx="353" cy="666" opacity="0.42"></circle><circle r="2.5" cx="136" cy="463" opacity="0.53"></circle><circle r="2.5" cx="236" cy="182" opacity="0.52"></circle><circle r="2.5" cx="535" cy="161" opacity="0.87"></circle><circle r="2.5" cx="674" cy="428" opacity="0.49"></circle><circle r="2.5" cx="484" cy="663" opacity="0.77"></circle><circle r="2.5" cx="191" cy="583" opacity="0.51"></circle><circle r="2.5" cx="148" cy="281" opacity="0.11"></circle><circle r="2.5" cx="409" cy="120" opacity="0.94"></circle><circle r="2.5" cx="661" cy="296" opacity="0.59"></circle><circle r="2.5" cx="601" cy="598" opacity="0.83"></circle><circle r="2.5" cx="298" cy="664" opacity="0.40"></circle><circle r="2.5" cx="116" cy="412" opacity="0.91"></circle><circle r="2.5" cx="275" cy="143" opacity="0.36"></circle><circle r="2.5" cx="586" cy="182" opacity="0.58"></circle><circle r="2.5" cx="675" cy="484" opacity="0.54"></circle><circle r="2.5" cx="433" cy="687" opacity="0.20"></circle><circle r="2.5" cx="149" cy="546" opacity="0.94"></circle><circle r="2.5" cx="165" cy="227" opacity="0.32"></circle><circle r="2.5" cx="465" cy="115" opacity="0.14"></circle><circle r="2.5" cx="689" cy="346" opacity="0.23"></circle><circle r="2.5" cx="566" cy="644" opacity="0.80"></circle><circle r="2.5" cx="242" cy="651" opacity="0.53"></circle><circle r="2.5" cx="106" cy="355" opacity="0.99"></circle><circle r="2.5" cx="324" cy="111" opacity="0.64"></circle><circle r="2.5" cx="635" cy="214" opacity="0.91"></circle><circle r="2.5" cx="665" cy="542" opacity="0.86"></circle><circle r="2.5" cx="376" cy="701" opacity="0.46"></circle><circle r="2.5" cx="113" cy="499" opacity="0.90"></circle><circle r="2.5" cx="194" cy="176" opacity="0.19"></circle><circle r="2.5" cx="524" cy="121" opacity="0.97"></circle><circle r="2.5" cx="707" cy="402" opacity="0.78"></circle><circle r="2.5" cx="521" cy="683" opacity="0.62"></circle><circle r="2.5" cx="188" cy="625" opacity="0.76"></circle><circle r="2.5" cx="108" cy="295" opacity="0.34"></circle><circle r="2.5" cx="380" cy="89" opacity="0.47"></circle><circle r="2.5" cx="678" cy="257" opacity="0.86"></circle><circle r="2.5" cx="643" cy="598" opacity="0.83"></circle><circle r="2.5" cx="315" cy="703" opacity="0.99"></circle><circle r="2.5" cx="87" cy="443" opacity="0.43"></circle><circle r="2.5" cx="235" cy="129" opacity="0.54"></circle><circle r="2.5" cx="583" cy="139" opacity="0.77"></circle><circle r="2.5" cx="713" cy="464" opacity="0.77"></circle><circle r="2.5" cx="467" cy="713" opacity="0.37"></circle><circle r="2.5" cx="138" cy="587" opacity="0.45"></circle><circle r="2.5" cx="123" cy="234" opacity="0.24"></circle><circle r="2.5" cx="441" cy="79" opacity="0.27"></circle><circle r="2.5" cx="712" cy="309" opacity="0.31"></circle><circle r="2.5" cx="609" cy="651" opacity="0.82"></circle><circle r="2.5" cx="253" cy="692" opacity="0.57"></circle><circle r="2.5" cx="72" cy="382" opacity="0.68"></circle><circle r="2.5" cx="285" cy="91" opacity="0.37"></circle><circle r="2.5" cx="639" cy="171" opacity="0.86"></circle><circle r="2.5" cx="707" cy="528" opacity="0.47"></circle><circle r="2.5" cx="405" cy="733" opacity="0.53"></circle><circle r="2.5" cx="96" cy="539" opacity="0.85"></circle><circle r="2.5" cx="151" cy="176" opacity="0.38"></circle><circle r="2.5" cx="507" cy="81" opacity="0.11"></circle><circle r="2.5" cx="737" cy="370" opacity="0.57"></circle><circle r="2.5" cx="562" cy="698" opacity="0.30"></circle><circle r="2.5" cx="191" cy="669" opacity="0.11"></circle><circle r="2.5" cx="69" cy="316" opacity="0.76"></circle><circle r="2.5" cx="345" cy="62" opacity="0.49"></circle><circle r="2.5" cx="689" cy="214" opacity="0.76"></circle><circle r="2.5" cx="687" cy="591" opacity="0.57"></circle><circle r="2.5" cx="339" cy="741" opacity="0.87"></circle><circle r="2.5" cx="62" cy="480" opacity="0.96"></circle><circle r="2.5" cx="191" cy="121" opacity="0.51"></circle><circle r="2.5" cx="572" cy="96" opacity="0.82"></circle><circle r="2.5" cx="749" cy="437" opacity="0.82"></circle><circle r="2.5" cx="506" cy="735" opacity="0.43"></circle><circle r="2.5" cx="134" cy="632" opacity="0.53"></circle><circle r="2.5" cx="80" cy="248" opacity="0.15"></circle><circle r="2.5" cx="412" cy="45" opacity="0.29"></circle><circle r="2.5" cx="731" cy="268" opacity="0.79"></circle><circle r="2.5" cx="654" cy="652" opacity="0.54"></circle><circle r="2.5" cx="270" cy="734" opacity="0.11"></circle><circle r="2.5" cx="40" cy="414" opacity="0.72"></circle><circle r="2.5" cx="243" cy="75" opacity="0.70"></circle><circle r="2.5" cx="636" cy="125" opacity="0.12"></circle><circle r="2.5" cx="747" cy="507" opacity="0.95"></circle><circle r="2.5" cx="441" cy="762" opacity="0.39"></circle><circle r="2.5" cx="83" cy="583" opacity="0.94"></circle><circle r="2.5" cx="105" cy="182" opacity="0.30"></circle><circle r="2.5" cx="482" cy="41" opacity="0.88"></circle><circle r="2.5" cx="763" cy="332" opacity="0.95"></circle><circle r="2.5" cx="608" cy="707" opacity="0.27"></circle><circle r="2.5" cx="201" cy="714" opacity="0.79"></circle><circle r="2.5" cx="32" cy="343" opacity="0.20"></circle><circle r="2.5" cx="305" cy="38" opacity="0.56"></circle><circle r="2.5" cx="694" cy="168" opacity="0.77"></circle><circle r="2.5" cx="732" cy="578" opacity="0.85"></circle><circle r="2.5" cx="369" cy="776" opacity="0.91"></circle><circle r="2.5" cx="42" cy="522" opacity="0.46"></circle><circle r="2.5" cx="144" cy="120" opacity="0.23"></circle><circle r="2.5" cx="555" cy="52" opacity="0.45"></circle><circle r="2.5" cx="782" cy="403" opacity="0.66"></circle><circle r="2.5" cx="550" cy="753" opacity="0.83"></circle><circle r="2.5" cx="136" cy="679" opacity="0.53"></circle><circle r="2.5" cx="38" cy="269" opacity="0.88"></circle><circle r="2.5" cx="375" cy="14" opacity="0.84"></circle><circle r="2.5" cx="745" cy="223" opacity="0.21"></circle><circle r="2.5" cx="701" cy="646" opacity="0.15"></circle><circle r="2.5" cx="294" cy="775" opacity="0.25"></circle><circle r="2.5" cx="12" cy="453" opacity="0.76"></circle><circle r="2.5" cx="196" cy="65" opacity="0.48"></circle><circle r="2.5" cx="627" cy="78" opacity="0.23"></circle><circle r="2.5" cx="787" cy="479" opacity="0.51"></circle><circle r="3" cx="482" cy="787" opacity="0.12"></circle><circle r="3" cx="77" cy="630" opacity="0.45"></circle><circle r="3" cx="59" cy="195" opacity="0.48"></circle><circle r="3" cx="452" cy="4" opacity="0.88"></circle><circle r="3" cx="785" cy="289" opacity="0.41"></circle><circle r="3" cx="656" cy="709" opacity="0.99"></circle><circle r="3" cx="218" cy="759" opacity="0.45"></circle><circle r="3" cx="-3" cy="377" opacity="0.23"></circle><circle r="3" cx="260" cy="20" opacity="0.91"></circle><circle r="3" cx="693" cy="119" opacity="0.34"></circle><circle r="3" cx="776" cy="557" opacity="0.51"></circle><circle r="3" cx="406" cy="809" opacity="0.14"></circle><circle r="3" cx="27" cy="569" opacity="0.57"></circle><circle r="3" cx="95" cy="125" opacity="0.75"></circle><circle r="3" cx="531" cy="9" opacity="0.20"></circle><circle r="3" cx="812" cy="364" opacity="0.80"></circle><circle r="3" cx="598" cy="764" opacity="0.34"></circle><circle r="3" cx="144" cy="728" opacity="0.22"></circle><circle r="3" cx="-4" cy="296" opacity="0.58"></circle><circle r="3" cx="334" cy="-13" opacity="0.68"></circle><circle r="3" cx="753" cy="174" opacity="0.19"></circle><circle r="3" cx="749" cy="634" opacity="0.70"></circle><circle r="3" cx="325" cy="815" opacity="0.28"></circle><circle r="3" cx="-11" cy="497" opacity="0.15"></circle><circle r="3" cx="146" cy="61" opacity="0.69"></circle><circle r="3" cx="610" cy="31" opacity="0.94"></circle><circle r="3" cx="824" cy="445" opacity="0.18"></circle><circle r="3" cx="528" cy="808" opacity="0.14"></circle><circle r="3" cx="77" cy="681" opacity="0.47"></circle><circle r="3" cx="12" cy="215" opacity="0.80"></circle><circle r="3" cx="415" cy="-30" opacity="0.34"></circle><circle r="3" cx="802" cy="241" opacity="0.33"></circle><circle r="3" cx="707" cy="706" opacity="0.29"></circle><circle r="3" cx="242" cy="804" opacity="0.10"></circle><circle r="3" cx="-35" cy="417" opacity="0.73"></circle><circle r="3" cx="211" cy="7" opacity="0.95"></circle><circle r="3" cx="686" cy="68" opacity="0.75"></circle><circle r="3" cx="819" cy="530" opacity="0.33"></circle><circle r="3" cx="449" cy="837" opacity="0.22"></circle><circle r="3" cx="17" cy="620" opacity="0.32"></circle><circle r="3" cx="45" cy="136" opacity="0.85"></circle><circle r="3" cx="500" cy="-32" opacity="0.71"></circle><circle r="3" cx="837" cy="319" opacity="0.24"></circle><circle r="3" cx="649" cy="769" opacity="0.12"></circle><circle r="3" cx="160" cy="777" opacity="0.96"></circle><circle r="3" cx="-43" cy="331" opacity="0.60"></circle><circle r="3" cx="287" cy="-35" opacity="0.69"></circle><circle r="3" cx="754" cy="122" opacity="0.34"></circle><circle r="3" cx="798" cy="614" opacity="0.30"></circle><circle r="3" cx="362" cy="851" opacity="0.18"></circle><circle r="3" cx="-30" cy="546" opacity="0.70"></circle><circle r="3" cx="94" cy="63" opacity="0.54"></circle><circle r="3" cx="587" cy="-16" opacity="0.75"></circle><circle r="3" cx="857" cy="405" opacity="0.16"></circle><circle r="3" cx="579" cy="822" opacity="0.60"></circle><circle r="3" cx="83" cy="733" opacity="0.82"></circle><circle r="3" cx="-33" cy="242" opacity="0.32"></circle><circle r="3" cx="371" cy="-61" opacity="0.23"></circle><circle r="3" cx="812" cy="189" opacity="0.95"></circle><circle r="3" cx="759" cy="695" opacity="0.57"></circle><circle r="3" cx="273" cy="848" opacity="0.56"></circle><circle r="3" cx="-62" cy="462" opacity="0.84"></circle><circle r="3" cx="157" cy="0" opacity="0.41"></circle><circle r="3" cx="671" cy="17" opacity="0.72"></circle><circle r="3" cx="860" cy="495" opacity="0.22"></circle><circle r="3" cx="497" cy="861" opacity="0.18"></circle><circle r="3" cx="15" cy="673" opacity="0.23"></circle><circle r="3" cx="-6" cy="155" opacity="0.32"></circle><circle r="3" cx="462" cy="-71" opacity="0.29"></circle><circle r="3" cx="858" cy="269" opacity="0.36"></circle><circle r="3" cx="704" cy="768" opacity="0.53"></circle><circle r="3" cx="183" cy="826" opacity="0.87"></circle><circle r="3" cx="-79" cy="371" opacity="0.86"></circle><circle r="3" cx="235" cy="-51" opacity="0.79"></circle><circle r="3" cx="749" cy="67" opacity="0.95"></circle><circle r="3" cx="845" cy="587" opacity="0.92"></circle><circle r="3" cx="406" cy="884" opacity="0.28"></circle><circle r="3" cx="-42" cy="599" opacity="0.36"></circle><circle r="3" cx="40" cy="73" opacity="0.47"></circle><circle r="3" cx="556" cy="-62" opacity="0.80"></circle><circle r="3" cx="887" cy="358" opacity="0.60"></circle><circle r="3" cx="633" cy="831" opacity="0.37"></circle><circle r="3" cx="97" cy="787" opacity="0.74"></circle><circle r="3" cx="-77" cy="277" opacity="0.41"></circle><circle r="3" cx="323" cy="-87" opacity="0.25"></circle><circle r="3" cx="817" cy="134" opacity="0.21"></circle><circle r="3" cx="811" cy="676" opacity="0.95"></circle><circle r="3" cx="311" cy="889" opacity="0.85"></circle><circle r="3" cx="-85" cy="514" opacity="0.48"></circle><circle r="3" cx="102" cy="0" opacity="0.17"></circle><circle r="3" cx="648" cy="-34" opacity="0.13"></circle><circle r="3" cx="899" cy="454" opacity="0.32"></circle><circle r="3" cx="550" cy="880" opacity="0.18"></circle><circle r="3" cx="19" cy="730" opacity="0.29"></circle><circle r="3" cx="-55" cy="182" opacity="0.70"></circle><circle r="3" cx="418" cy="-106" opacity="0.20"></circle><circle r="3" cx="872" cy="214" opacity="0.87"></circle><circle r="3" cx="760" cy="759" opacity="0.98"></circle><circle r="3" cx="214" cy="874" opacity="0.83"></circle><circle r="3" cx="-110" cy="419" opacity="0.89"></circle><circle r="3" cx="179" cy="-62" opacity="0.88"></circle><circle r="3" cx="736" cy="12" opacity="0.62"></circle><circle r="3" cx="891" cy="553" opacity="0.22"></circle><circle r="3" cx="456" cy="912" opacity="0.40"></circle><circle r="3" cx="-48" cy="656" opacity="0.55"></circle><circle r="3" cx="-15" cy="91" opacity="0.95"></circle><circle r="3" cx="518" cy="-105" opacity="0.19"></circle><circle r="3" cx="912" cy="306" opacity="0.92"></circle><circle r="3" cx="691" cy="833" opacity="0.27"></circle><circle r="3" cx="119" cy="840" opacity="0.81"></circle><circle r="3" cx="-117" cy="318" opacity="0.64"></circle><circle r="3" cx="268" cy="-108" opacity="0.34"></circle><circle r="3" cx="814" cy="76" opacity="0.31"></circle><circle r="3" cx="864" cy="651" opacity="0.34"></circle><circle r="3" cx="355" cy="926" opacity="0.19"></circle><circle r="3" cx="-101" cy="570" opacity="0.81"></circle><circle r="3" cx="44" cy="7" opacity="0.92"></circle><circle r="3" cx="618" cy="-85" opacity="0.63"></circle><circle r="3" cx="933" cy="407" opacity="0.70"></circle><circle r="3" cx="607" cy="892" opacity="0.21"></circle><circle r="3" cx="31" cy="787" opacity="0.52"></circle><circle r="3" cx="-104" cy="216" opacity="0.71"></circle><circle r="3" cx="368" cy="-136" opacity="0.68"></circle><circle r="3" cx="880" cy="156" opacity="0.69"></circle><circle r="3" cx="817" cy="743" opacity="0.99"></circle><circle r="3" cx="251" cy="920" opacity="0.14"></circle><circle r="3" cx="-137" cy="472" opacity="0.57"></circle><circle r="3" cx="119" cy="-65" opacity="0.46"></circle><circle r="3" cx="715" cy="-44" opacity="0.30"></circle><circle r="3" cx="934" cy="512" opacity="0.49"></circle><circle r="3" cx="511" cy="935" opacity="0.81"></circle><circle r="3" cx="-47" cy="716" opacity="0.54"></circle><circle r="3" cx="-70" cy="116" opacity="0.27"></circle><circle r="3" cx="473" cy="-145" opacity="0.59"></circle><circle r="3" cx="930" cy="249" opacity="0.32"></circle><circle r="3" cx="751" cy="827" opacity="0.84"></circle><circle r="3" cx="148" cy="893" opacity="0.88"></circle><circle r="3" cx="-154" cy="366" opacity="0.33"></circle><circle r="3" cx="210" cy="-122" opacity="0.40"></circle><circle r="3" cx="804" cy="16" opacity="0.38"></circle><circle r="3" cx="914" cy="617" opacity="0.30"></circle><circle r="3" cx="406" cy="959" opacity="0.12"></circle><circle r="3" cx="-111" cy="630" opacity="0.15"></circle><circle r="3" cx="-16" cy="22" opacity="0.24"></circle><circle r="3" cx="581" cy="-133" opacity="0.59"></circle><circle r="3" cx="962" cy="353" opacity="0.68"></circle><circle r="3" cx="668" cy="898" opacity="0.88"></circle><circle r="3" cx="50" cy="845" opacity="0.45"></circle><circle r="3" cx="-149" cy="257" opacity="0.40"></circle><circle r="3" cx="312" cy="-162" opacity="0.70"></circle><circle r="3" cx="881" cy="94" opacity="0.18"></circle><circle r="3" cx="873" cy="719" opacity="0.18"></circle><circle r="3.5" cx="296" cy="963" opacity="0.21"></circle><circle r="3.5" cx="-159" cy="530" opacity="0.44"></circle><circle r="3.5" cx="57" cy="-61" opacity="0.79"></circle><circle r="3.5" cx="687" cy="-99" opacity="0.57"></circle><circle r="3.5" cx="973" cy="463" opacity="0.48"></circle><circle r="3.5" cx="571" cy="952" opacity="0.93"></circle><circle r="3.5" cx="-39" cy="778" opacity="0.22"></circle><circle r="3.5" cx="-123" cy="148" opacity="0.50"></circle><circle r="3.5" cx="422" cy="-181" opacity="0.57"></circle><circle r="3.5" cx="943" cy="188" opacity="0.26"></circle><circle r="3.5" cx="812" cy="813" opacity="0.36"></circle><circle r="3.5" cx="185" cy="944" opacity="0.35"></circle><circle r="3.5" cx="-186" cy="420" opacity="0.43"></circle><circle r="3.5" cx="147" cy="-130" opacity="0.61"></circle><circle r="3.5" cx="786" cy="-45" opacity="0.83"></circle><circle r="3.5" cx="963" cy="576" opacity="0.34"></circle><circle r="3.5" cx="463" cy="987" opacity="0.85"></circle><circle r="3.5" cx="-114" cy="693" opacity="0.33"></circle><circle r="3.5" cx="-75" cy="45" opacity="0.39"></circle><circle r="3.5" cx="536" cy="-178" opacity="0.66"></circle><circle r="3.5" cx="986" cy="294" opacity="0.50"></circle><circle r="3.5" cx="732" cy="896" opacity="0.19"></circle><circle r="3.5" cx="78" cy="903" opacity="0.17"></circle><circle r="3.5" cx="-191" cy="305" opacity="0.95"></circle><circle r="3.5" cx="250" cy="-181" opacity="0.58"></circle><circle r="3.5" cx="874" cy="30" opacity="0.50"></circle><circle r="3.5" cx="929" cy="687" opacity="0.56"></circle><circle r="3.5" cx="348" cy="1001" opacity="0.70"></circle><circle r="3.5" cx="-173" cy="593" opacity="0.41"></circle><circle r="3.5" cx="-6" cy="-49" opacity="0.42"></circle><circle r="3.5" cx="650" cy="-153" opacity="0.89"></circle><circle r="3.5" cx="1008" cy="409" opacity="0.65"></circle><circle r="3.5" cx="635" cy="962" opacity="0.23"></circle><circle r="3.5" cx="-22" cy="841" opacity="0.58"></circle><circle r="3.5" cx="-174" cy="189" opacity="0.74"></circle><circle r="3.5" cx="364" cy="-212" opacity="0.31"></circle><circle r="3.5" cx="948" cy="122" opacity="0.78"></circle><circle r="3.5" cx="874" cy="792" opacity="0.61"></circle><circle r="3.5" cx="230" cy="992" opacity="0.33"></circle><circle r="3.5" cx="-212" cy="480" opacity="0.29"></circle><circle r="3.5" cx="81" cy="-130" opacity="0.38"></circle><circle r="3.5" cx="759" cy="-105" opacity="0.31"></circle><circle r="3.5" cx="1008" cy="528" opacity="0.37"></circle><circle r="3.5" cx="525" cy="1009" opacity="0.91"></circle><circle r="3.5" cx="-110" cy="759" opacity="0.79"></circle><circle r="3.5" cx="-134" cy="76" opacity="0.76"></circle><circle r="3.5" cx="484" cy="-220" opacity="0.25"></circle><circle r="3.5" cx="1003" cy="230" opacity="0.26"></circle><circle r="3.5" cx="798" cy="886" opacity="0.49"></circle><circle r="3.5" cx="113" cy="960" opacity="0.17"></circle><circle r="3.5" cx="-229" cy="360" opacity="0.94"></circle><circle r="3.5" cx="185" cy="-194" opacity="0.84"></circle><circle r="3.5" cx="859" cy="-35" opacity="0.96"></circle><circle r="3.5" cx="983" cy="648" opacity="0.41"></circle><circle r="3.5" cx="406" cy="1035" opacity="0.51"></circle><circle r="3.5" cx="-181" cy="659" opacity="0.46"></circle><circle r="3.5" cx="-71" cy="-30" opacity="0.72"></circle><circle r="3.5" cx="606" cy="-204" opacity="0.94"></circle><circle r="3.5" cx="1037" cy="348" opacity="0.51"></circle><circle r="3.5" cx="703" cy="965" opacity="0.23"></circle><circle r="3.5" cx="3" cy="904" opacity="0.13"></circle><circle r="3.5" cx="-222" cy="237" opacity="0.79"></circle><circle r="3.5" cx="301" cy="-237" opacity="0.57"></circle><circle r="3.5" cx="945" cy="55" opacity="0.96"></circle><circle r="3.5" cx="935" cy="762" opacity="0.47"></circle><circle r="3.5" cx="281" cy="1037" opacity="0.58"></circle><circle r="3.5" cx="-232" cy="546" opacity="0.93"></circle><circle r="3.5" cx="13" cy="-122" opacity="0.99"></circle><circle r="3.5" cx="725" cy="-164" opacity="0.42"></circle><circle r="3.5" cx="1048" cy="473" opacity="0.99"></circle><circle r="3.5" cx="592" cy="1024" opacity="0.65"></circle><circle r="3.5" cx="-97" cy="827" opacity="0.70"></circle><circle r="3.5" cx="-190" cy="115" opacity="0.74"></circle><circle r="3.5" cx="426" cy="-256" opacity="0.63"></circle><circle r="3.5" cx="1013" cy="161" opacity="0.84"></circle><circle r="3.5" cx="865" cy="868" opacity="0.80"></circle><circle r="3.5" cx="156" cy="1014" opacity="0.23"></circle><circle r="3.5" cx="-261" cy="422" opacity="0.41"></circle><circle r="3.5" cx="116" cy="-199" opacity="0.62"></circle><circle r="3.5" cx="836" cy="-101" opacity="0.51"></circle><circle r="3.5" cx="1034" cy="600" opacity="0.74"></circle><circle r="3.5" cx="470" cy="1063" opacity="0.82"></circle><circle r="3.5" cx="-180" cy="729" opacity="0.94"></circle><circle r="3.5" cx="-135" cy="-1" opacity="0.24"></circle><circle r="3.5" cx="555" cy="-252" opacity="0.39"></circle><circle r="3.5" cx="1060" cy="281" opacity="0.66"></circle><circle r="3.5" cx="773" cy="959" opacity="0.10"></circle><circle r="3.5" cx="36" cy="966" opacity="0.11"></circle><circle r="3.5" cx="-266" cy="292" opacity="0.12"></circle><circle r="3.5" cx="233" cy="-254" opacity="0.51"></circle><circle r="3.5" cx="934" cy="-15" opacity="0.26"></circle><circle r="3.5" cx="995" cy="724" opacity="0.42"></circle><circle r="3.5" cx="340" cy="1076" opacity="0.94"></circle><circle r="3.5" cx="-245" cy="616" opacity="0.85"></circle><circle r="3.5" cx="-56" cy="-106" opacity="0.86"></circle><circle r="3.5" cx="682" cy="-221" opacity="0.26"></circle><circle r="3.5" cx="1084" cy="411" opacity="0.80"></circle><circle r="3.5" cx="663" cy="1032" opacity="0.93"></circle><circle r="3.5" cx="-75" cy="895" opacity="0.23"></circle><circle r="3.5" cx="-244" cy="162" opacity="0.74"></circle><circle r="3.5" cx="361" cy="-287" opacity="0.33"></circle><circle r="3.5" cx="1016" cy="90" opacity="0.89"></circle><circle r="3.5" cx="931" cy="841" opacity="0.51"></circle><circle r="3.5" cx="208" cy="1064" opacity="0.71"></circle><circle r="3.5" cx="-287" cy="489" opacity="0.26"></circle><circle r="3.5" cx="43" cy="-195" opacity="0.80"></circle><circle r="3.5" cx="804" cy="-166" opacity="0.11"></circle><circle r="3.5" cx="1081" cy="545" opacity="0.87"></circle><circle r="3.5" cx="539" cy="1083" opacity="0.76"></circle><circle r="3.5" cx="-172" cy="801" opacity="0.90"></circle><circle r="3.5" cx="-197" cy="35" opacity="0.93"></circle><circle r="3.5" cx="496" cy="-294" opacity="0.28"></circle><circle r="3.5" cx="1076" cy="210" opacity="0.32"></circle><circle r="3.5" cx="845" cy="945" opacity="0.92"></circle><circle r="3.5" cx="77" cy="1026" opacity="0.74"></circle><circle r="3.5" cx="-304" cy="354" opacity="0.54"></circle><circle r="3.5" cx="160" cy="-265" opacity="0.24"></circle><circle r="3.5" cx="915" cy="-86" opacity="0.65"></circle><circle r="3.5" cx="1052" cy="678" opacity="0.49"></circle><circle r="3.5" cx="405" cy="1110" opacity="0.85"></circle><circle r="3.5" cx="-250" cy="689" opacity="0.46"></circle><circle r="3.5" cx="-125" cy="-81" opacity="0.85"></circle><circle r="3.5" cx="632" cy="-275" opacity="0.63"></circle><circle r="3.5" cx="1113" cy="343" opacity="0.21"></circle><circle r="3.5" cx="737" cy="1032" opacity="0.98"></circle><circle r="3.5" cx="-45" cy="963" opacity="0.93"></circle><circle r="3.5" cx="-295" cy="216" opacity="0.78"></circle><circle r="3.5" cx="291" cy="-311" opacity="0.75"></circle><circle r="3.5" cx="1009" cy="15" opacity="0.58"></circle><circle r="3.5" cx="997" cy="806" opacity="0.26"></circle><circle r="3.5" cx="266" cy="1111" opacity="0.12"></circle><circle r="3.5" cx="-306" cy="561" opacity="0.30"></circle><circle r="3.5" cx="-31" cy="-184" opacity="0.62"></circle><circle r="3.5" cx="764" cy="-229" opacity="0.44"></circle><circle r="3.5" cx="1123" cy="483" opacity="0.48"></circle><circle r="3.5" cx="613" cy="1097" opacity="0.85"></circle><circle r="3.5" cx="-155" cy="875" opacity="0.17"></circle><circle r="3.5" cx="-258" cy="81" opacity="0.66"></circle><circle r="3.5" cx="430" cy="-332" opacity="1.00"></circle><circle r="3.5" cx="1084" cy="135" opacity="0.66"></circle><circle r="3.5" cx="917" cy="922" opacity="0.11"></circle><circle r="3.5" cx="127" cy="1083" opacity="0.78"></circle><circle r="3.5" cx="-337" cy="423" opacity="0.54"></circle><circle r="3.5" cx="84" cy="-267" opacity="0.83"></circle><circle r="3.5" cx="886" cy="-157" opacity="0.38"></circle><circle r="3.5" cx="1106" cy="624" opacity="0.46"></circle><circle r="3.5" cx="477" cy="1138" opacity="0.67"></circle><circle r="3.5" cx="-247" cy="765" opacity="0.75"></circle><circle r="3.5" cx="-194" cy="-48" opacity="0.15"></circle><circle r="3.5" cx="573" cy="-325" opacity="0.18"></circle><circle r="3.5" cx="1135" cy="269" opacity="0.67"></circle><circle r="3.5" cx="814" cy="1022" opacity="0.37"></circle><circle r="3.5" cx="-6" cy="1029" opacity="0.12"></circle><circle r="4" cx="-340" cy="279" opacity="0.11"></circle><circle r="4" cx="215" cy="-328" opacity="0.62"></circle><circle r="4" cx="995" cy="-61" opacity="0.57"></circle><circle r="4" cx="1061" cy="762" opacity="0.83"></circle><circle r="4" cx="332" cy="1151" opacity="0.49"></circle><circle r="4" cx="-317" cy="638" opacity="0.50"></circle><circle r="4" cx="-105" cy="-163" opacity="0.80"></circle><circle r="4" cx="715" cy="-289" opacity="0.55"></circle><circle r="4" cx="1159" cy="413" opacity="0.73"></circle><circle r="4" cx="691" cy="1102" opacity="0.96"></circle><circle r="4" cx="-128" cy="948" opacity="0.90"></circle><circle r="4" cx="-315" cy="134" opacity="0.86"></circle><circle r="4" cx="358" cy="-363" opacity="0.91"></circle><circle r="4" cx="1083" cy="57" opacity="0.17"></circle><circle r="4" cx="989" cy="890" opacity="0.58"></circle><circle r="4" cx="185" cy="1136" opacity="0.41"></circle><circle r="4" cx="-362" cy="497" opacity="0.91"></circle><circle r="4" cx="6" cy="-261" opacity="0.59"></circle><circle r="4" cx="849" cy="-226" opacity="0.98"></circle><circle r="4" cx="1155" cy="562" opacity="0.56"></circle><circle r="4" cx="553" cy="1158" opacity="0.95"></circle><circle r="4" cx="-234" cy="844" opacity="0.84"></circle><circle r="4" cx="-261" cy="-5" opacity="0.75"></circle><circle r="4" cx="508" cy="-369" opacity="0.56"></circle><circle r="4" cx="1149" cy="191" opacity="0.48"></circle><circle r="4" cx="891" cy="1004" opacity="0.89"></circle><circle r="4" cx="42" cy="1093" opacity="0.90"></circle><circle r="4" cx="-379" cy="348" opacity="0.49"></circle><circle r="4" cx="136" cy="-336" opacity="0.18"></circle><circle r="4" cx="971" cy="-137" opacity="0.15"></circle><circle r="4" cx="1121" cy="709" opacity="0.11"></circle><circle r="4" cx="405" cy="1186" opacity="0.61"></circle><circle r="4" cx="-320" cy="718" opacity="0.53"></circle><circle r="4" cx="-180" cy="-133" opacity="0.12"></circle><circle r="4" cx="658" cy="-346" opacity="0.10"></circle><circle r="4" cx="1188" cy="338" opacity="0.76"></circle><circle r="4" cx="772" cy="1099" opacity="0.35"></circle><circle r="4" cx="-93" cy="1021" opacity="0.71"></circle><circle r="4" cx="-367" cy="196" opacity="0.14"></circle><circle r="4" cx="281" cy="-386" opacity="0.69"></circle><circle r="4" cx="1074" cy="-24" opacity="0.14"></circle><circle r="4" cx="1059" cy="849" opacity="0.10"></circle><circle r="4" cx="251" cy="1184" opacity="0.34"></circle><circle r="4" cx="-380" cy="577" opacity="0.89"></circle><circle r="4" cx="-74" cy="-245" opacity="0.88"></circle><circle r="4" cx="803" cy="-293" opacity="0.10"></circle><circle r="4" cx="1198" cy="493" opacity="0.26"></circle><circle r="4" cx="634" cy="1169" opacity="0.64"></circle><circle r="4" cx="-213" cy="923" opacity="0.80"></circle><circle r="4" cx="-325" cy="46" opacity="0.15"></circle><circle r="4" cx="435" cy="-407" opacity="0.28"></circle><circle r="4" cx="1155" cy="109" opacity="0.65"></circle><circle r="4" cx="969" cy="977" opacity="0.15"></circle><circle r="4" cx="98" cy="1153" opacity="0.98"></circle><circle r="4" cx="-412" cy="424" opacity="0.64"></circle><circle r="4" cx="53" cy="-336" opacity="0.72"></circle><circle r="4" cx="937" cy="-213" opacity="0.30"></circle><circle r="4" cx="1177" cy="648" opacity="0.59"></circle><circle r="4" cx="483" cy="1213" opacity="0.34"></circle><circle r="4" cx="-313" cy="801" opacity="0.56"></circle><circle r="4" cx="-253" cy="-94" opacity="0.35"></circle><circle r="4" cx="592" cy="-398" opacity="0.67"></circle><circle r="4" cx="1209" cy="258" opacity="0.74"></circle><circle r="4" cx="854" cy="1086" opacity="0.70"></circle><circle r="4" cx="-48" cy="1091" opacity="0.20"></circle><circle r="4" cx="-414" cy="265" opacity="0.51"></circle><circle r="4" cx="198" cy="-401" opacity="0.67"></circle><circle r="4" cx="1055" cy="-106" opacity="0.54"></circle><circle r="4" cx="1126" cy="799" opacity="0.94"></circle><circle r="4" cx="324" cy="1226" opacity="0.11"></circle><circle r="4" cx="-389" cy="660" opacity="0.18"></circle><circle r="4" cx="-155" cy="-220" opacity="0.29"></circle><circle r="4" cx="748" cy="-357" opacity="0.64"></circle><circle r="4" cx="1234" cy="416" opacity="0.66"></circle><circle r="4" cx="719" cy="1172" opacity="0.38"></circle><circle r="4" cx="-182" cy="1001" opacity="0.15"></circle><circle r="4" cx="-385" cy="106" opacity="0.97"></circle><circle r="4" cx="356" cy="-438" opacity="0.89"></circle><circle r="4" cx="1151" cy="24" opacity="0.53"></circle><circle r="4" cx="1045" cy="940" opacity="0.31"></circle><circle r="4" cx="163" cy="1208" opacity="0.34"></circle><circle r="4" cx="-437" cy="505" opacity="0.56"></circle><circle r="4" cx="-31" cy="-326" opacity="0.48"></circle><circle r="4" cx="894" cy="-287" opacity="0.74"></circle><circle r="4" cx="1228" cy="579" opacity="0.48"></circle><circle r="4" cx="567" cy="1232" opacity="0.49"></circle><circle r="4" cx="-297" cy="886" opacity="0.46"></circle><circle r="4" cx="-324" cy="-46" opacity="0.32"></circle><circle r="4" cx="520" cy="-443" opacity="0.68"></circle><circle r="4" cx="1222" cy="172" opacity="0.86"></circle><circle r="4" cx="938" cy="1064" opacity="0.46"></circle><circle r="4" cx="6" cy="1159" opacity="0.12"></circle><circle r="4" cx="-454" cy="341" opacity="0.22"></circle><circle r="4" cx="112" cy="-408" opacity="0.66"></circle><circle r="4" cx="1026" cy="-187" opacity="0.18"></circle><circle r="4" cx="1190" cy="740" opacity="0.39"></circle><circle r="4" cx="403" cy="1261" opacity="0.90"></circle><circle r="4" cx="-389" cy="747" opacity="0.80"></circle><circle r="4" cx="-235" cy="-185" opacity="0.84"></circle><circle r="4" cx="684" cy="-417" opacity="0.67"></circle><circle r="4" cx="1263" cy="334" opacity="0.57"></circle><circle r="4" cx="806" cy="1166" opacity="0.56"></circle><circle r="4" cx="-141" cy="1079" opacity="0.19"></circle><circle r="4" cx="-440" cy="175" opacity="0.33"></circle><circle r="4" cx="271" cy="-461" opacity="0.21"></circle><circle r="4" cx="1139" cy="-63" opacity="0.82"></circle><circle r="4" cx="1120" cy="893" opacity="0.71"></circle><circle r="4" cx="235" cy="1258" opacity="0.34"></circle><circle r="4" cx="-454" cy="592" opacity="0.82"></circle><circle r="4" cx="-118" cy="-307" opacity="0.33"></circle><circle r="4" cx="842" cy="-358" opacity="0.87"></circle><circle r="4" cx="1272" cy="503" opacity="0.21"></circle><circle r="4" cx="655" cy="1242" opacity="0.82"></circle><circle r="4" cx="-271" cy="970" opacity="0.44"></circle><circle r="4" cx="-392" cy="12" opacity="0.81"></circle><circle r="4" cx="440" cy="-482" opacity="0.63"></circle><circle r="4" cx="1226" cy="84" opacity="0.70"></circle><circle r="4" cx="1021" cy="1031" opacity="0.94"></circle><circle r="4" cx="68" cy="1222" opacity="0.62"></circle><circle r="4" cx="-487" cy="424" opacity="0.54"></circle><circle r="4" cx="23" cy="-405" opacity="0.71"></circle><circle r="4" cx="988" cy="-268" opacity="0.14"></circle><circle r="4" cx="1249" cy="673" opacity="0.38"></circle><circle r="4" cx="489" cy="1288" opacity="0.13"></circle><circle r="4" cx="-380" cy="837" opacity="0.24"></circle><circle r="4" cx="-313" cy="-141" opacity="0.78"></circle><circle r="4" cx="612" cy="-471" opacity="0.78"></circle><circle r="4" cx="1284" cy="246" opacity="0.49"></circle><circle r="4" cx="895" cy="1150" opacity="0.95"></circle><circle r="4" cx="-91" cy="1154" opacity="0.66"></circle><circle r="4" cx="-488" cy="251" opacity="0.69"></circle><circle r="4" cx="182" cy="-475" opacity="0.19"></circle><circle r="4" cx="1116" cy="-150" opacity="0.45"></circle><circle r="4" cx="1191" cy="837" opacity="0.10"></circle><circle r="4" cx="315" cy="1301" opacity="0.58"></circle><circle r="4" cx="-461" cy="683" opacity="0.26"></circle><circle r="4" cx="-204" cy="-278" opacity="0.28"></circle><circle r="4" cx="781" cy="-425" opacity="0.74"></circle><circle r="4" cx="1310" cy="419" opacity="0.71"></circle><circle r="4" cx="746" cy="1243" opacity="0.27"></circle><circle r="4" cx="-235" cy="1054" opacity="0.61"></circle><circle r="4" cx="-455" cy="79" opacity="0.97"></circle><circle r="4" cx="353" cy="-513" opacity="0.24"></circle><circle r="4" cx="1220" cy="-8" opacity="0.14"></circle><circle r="4" cx="1102" cy="989" opacity="0.39"></circle><circle r="4" cx="140" cy="1280" opacity="0.87"></circle><circle r="4" cx="-512" cy="513" opacity="0.90"></circle><circle r="4" cx="-69" cy="-392" opacity="0.84"></circle><circle r="4" cx="940" cy="-347" opacity="0.94"></circle><circle r="4" cx="1301" cy="597" opacity="0.62"></circle><circle r="4" cx="580" cy="1306" opacity="0.39"></circle><circle r="4" cx="-360" cy="927" opacity="0.62"></circle><circle r="4" cx="-388" cy="-87" opacity="0.65"></circle><circle r="4.5" cx="532" cy="-518" opacity="0.97"></circle><circle r="4.5" cx="1295" cy="154" opacity="0.44"></circle><circle r="4.5" cx="984" cy="1123" opacity="0.87"></circle><circle r="4.5" cx="-31" cy="1225" opacity="0.78"></circle><circle r="4.5" cx="-530" cy="335" opacity="0.11"></circle><circle r="4.5" cx="88" cy="-479" opacity="0.21"></circle><circle r="4.5" cx="1083" cy="-238" opacity="0.23"></circle><circle r="4.5" cx="1258" cy="772" opacity="0.24"></circle><circle r="4.5" cx="402" cy="1336" opacity="0.96"></circle><circle r="4.5" cx="-459" cy="776" opacity="0.33"></circle><circle r="4.5" cx="-289" cy="-238" opacity="0.29"></circle><circle r="4.5" cx="710" cy="-487" opacity="0.94"></circle><circle r="4.5" cx="1339" cy="330" opacity="0.43"></circle><circle r="4.5" cx="840" cy="1233" opacity="0.76"></circle><circle r="4.5" cx="-189" cy="1137" opacity="0.59"></circle><circle r="4.5" cx="-512" cy="154" opacity="0.37"></circle><circle r="4.5" cx="261" cy="-536" opacity="0.87"></circle><circle r="4.5" cx="1203" cy="-101" opacity="0.65"></circle><circle r="4.5" cx="1181" cy="937" opacity="0.22"></circle><circle r="4.5" cx="219" cy="1332" opacity="0.39"></circle><circle r="4.5" cx="-528" cy="607" opacity="0.78"></circle><circle r="4.5" cx="-161" cy="-369" opacity="0.74"></circle><circle r="4.5" cx="881" cy="-422" opacity="0.42"></circle><circle r="4.5" cx="1347" cy="513" opacity="0.59"></circle><circle r="4.5" cx="675" cy="1315" opacity="0.29"></circle><circle r="4.5" cx="-330" cy="1018" opacity="0.26"></circle><circle r="4.5" cx="-459" cy="-23" opacity="0.64"></circle><circle r="4.5" cx="445" cy="-557" opacity="0.54"></circle><circle r="4.5" cx="1297" cy="58" opacity="0.15"></circle><circle r="4.5" cx="1072" cy="1086" opacity="0.54"></circle><circle r="4.5" cx="39" cy="1292" opacity="0.84"></circle><circle r="4.5" cx="-563" cy="425" opacity="0.30"></circle><circle r="4.5" cx="-8" cy="-474" opacity="0.35"></circle><circle r="4.5" cx="1039" cy="-324" opacity="0.21"></circle><circle r="4.5" cx="1320" cy="697" opacity="0.63"></circle><circle r="4.5" cx="495" cy="1363" opacity="0.94"></circle><circle r="4.5" cx="-446" cy="872" opacity="0.34"></circle><circle r="4.5" cx="-372" cy="-188" opacity="0.15"></circle><circle r="4.5" cx="631" cy="-543" opacity="0.74"></circle><circle r="4.5" cx="1358" cy="235" opacity="0.18"></circle><circle r="4.5" cx="935" cy="1214" opacity="0.89"></circle><circle r="4.5" cx="-133" cy="1216" opacity="0.16"></circle><circle r="4.5" cx="-562" cy="237" opacity="0.40"></circle><circle r="4.5" cx="165" cy="-548" opacity="0.51"></circle><circle r="4.5" cx="1177" cy="-195" opacity="0.56"></circle><circle r="4.5" cx="1257" cy="875" opacity="0.11"></circle><circle r="4.5" cx="307" cy="1376" opacity="0.61"></circle><circle r="4.5" cx="-533" cy="704" opacity="0.15"></circle><circle r="4.5" cx="-253" cy="-335" opacity="0.67"></circle><circle r="4.5" cx="814" cy="-493" opacity="0.66"></circle><circle r="4.5" cx="1385" cy="423" opacity="0.85"></circle><circle r="4.5" cx="773" cy="1313" opacity="0.55"></circle><circle r="4.5" cx="-289" cy="1107" opacity="0.50"></circle><circle r="4.5" cx="-525" cy="50" opacity="0.40"></circle><circle r="4.5" cx="351" cy="-589" opacity="0.29"></circle><circle r="4.5" cx="1288" cy="-40" opacity="0.64"></circle><circle r="4.5" cx="1159" cy="1039" opacity="0.30"></circle><circle r="4.5" cx="117" cy="1352" opacity="0.79"></circle><circle r="4.5" cx="-587" cy="521" opacity="0.95"></circle><circle r="4.5" cx="-105" cy="-458" opacity="0.69"></circle><circle r="4.5" cx="985" cy="-407" opacity="0.66"></circle><circle r="4.5" cx="1375" cy="615" opacity="0.60"></circle><circle r="4.5" cx="593" cy="1380" opacity="0.80"></circle><circle r="4.5" cx="-423" cy="969" opacity="0.51"></circle><circle r="4.5" cx="-451" cy="-128" opacity="0.77"></circle><circle r="4.5" cx="544" cy="-592" opacity="0.65"></circle><circle r="4.5" cx="1368" cy="136" opacity="0.24"></circle><circle r="4.5" cx="1030" cy="1183" opacity="0.41"></circle><circle r="4.5" cx="-67" cy="1291" opacity="0.22"></circle><circle r="4.5" cx="-605" cy="328" opacity="0.95"></circle><circle r="4.5" cx="65" cy="-551" opacity="0.84"></circle><circle r="4.5" cx="1139" cy="-288" opacity="0.20"></circle><circle r="4.5" cx="1327" cy="803" opacity="0.39"></circle><circle r="4.5" cx="400" cy="1412" opacity="0.63"></circle><circle r="4.5" cx="-529" cy="805" opacity="0.83"></circle><circle r="4.5" cx="-343" cy="-290" opacity="0.92"></circle><circle r="4.5" cx="737" cy="-558" opacity="0.71"></circle><circle r="4.5" cx="1414" cy="326" opacity="0.51"></circle><circle r="4.5" cx="873" cy="1301" opacity="0.71"></circle><circle r="4.5" cx="-238" cy="1195" opacity="0.19"></circle><circle r="4.5" cx="-584" cy="132" opacity="0.22"></circle><circle r="4.5" cx="252" cy="-610" opacity="0.67"></circle><circle r="4.5" cx="1268" cy="-140" opacity="0.51"></circle><circle r="4.5" cx="1242" cy="981" opacity="0.93"></circle><circle r="4.5" cx="203" cy="1406" opacity="0.73"></circle><circle r="4.5" cx="-602" cy="621" opacity="0.18"></circle><circle r="4.5" cx="-204" cy="-431" opacity="0.84"></circle><circle r="4.5" cx="921" cy="-486" opacity="0.40"></circle><circle r="4.5" cx="1422" cy="524" opacity="0.90"></circle><circle r="4.5" cx="695" cy="1387" opacity="0.49"></circle><circle r="4.5" cx="-388" cy="1065" opacity="0.85"></circle><circle r="4.5" cx="-526" cy="-58" opacity="0.89"></circle><circle r="4.5" cx="450" cy="-633" opacity="0.72"></circle><circle r="4.5" cx="1368" cy="33" opacity="0.43"></circle><circle r="4.5" cx="1124" cy="1142" opacity="0.17"></circle><circle r="4.5" cx="9" cy="1361" opacity="0.87"></circle><circle r="4.5" cx="-638" cy="425" opacity="0.38"></circle><circle r="4.5" cx="-38" cy="-543" opacity="0.84"></circle><circle r="4.5" cx="1090" cy="-379" opacity="0.71"></circle><circle r="4.5" cx="1391" cy="722" opacity="0.76"></circle><circle r="4.5" cx="500" cy="1438" opacity="0.70"></circle><circle r="4.5" cx="-513" cy="907" opacity="0.99"></circle><circle r="4.5" cx="-431" cy="-235" opacity="0.94"></circle><circle r="4.5" cx="651" cy="-616" opacity="0.19"></circle><circle r="4.5" cx="1433" cy="224" opacity="0.31"></circle><circle r="4.5" cx="974" cy="1278" opacity="0.49"></circle><circle r="4.5" cx="-176" cy="1278" opacity="0.60"></circle><circle r="4.5" cx="-636" cy="223" opacity="0.88"></circle><circle r="4.5" cx="149" cy="-622" opacity="0.63"></circle><circle r="4.5" cx="1238" cy="-239" opacity="0.71"></circle><circle r="4.5" cx="1322" cy="913" opacity="0.76"></circle><circle r="4.5" cx="297" cy="1451" opacity="0.98"></circle><circle r="4.5" cx="-606" cy="726" opacity="0.18"></circle><circle r="4.5" cx="-301" cy="-393" opacity="0.54"></circle><circle r="4.5" cx="847" cy="-560" opacity="0.32"></circle><circle r="4.5" cx="1460" cy="426" opacity="0.78"></circle><circle r="4.5" cx="800" cy="1384" opacity="0.43"></circle><circle r="4.5" cx="-343" cy="1160" opacity="0.55"></circle><circle r="4.5" cx="-595" cy="22" opacity="0.46"></circle><circle r="4.5" cx="349" cy="-664" opacity="0.52"></circle><circle r="4.5" cx="1356" cy="-72" opacity="0.38"></circle><circle r="4.5" cx="1215" cy="1089" opacity="0.69"></circle><circle r="4.5" cx="93" cy="1424" opacity="0.90"></circle><circle r="4.5" cx="-662" cy="528" opacity="0.40"></circle><circle r="4.5" cx="-142" cy="-524" opacity="0.45"></circle><circle r="4.5" cx="1031" cy="-467" opacity="0.96"></circle><circle r="4.5" cx="1448" cy="633" opacity="0.14"></circle><circle r="4.5" cx="605" cy="1455" opacity="0.37"></circle><circle r="4.5" cx="-486" cy="1010" opacity="0.42"></circle><circle r="4.5" cx="-514" cy="-169" opacity="0.19"></circle><circle r="4.5" cx="557" cy="-667" opacity="0.69"></circle><circle r="4.5" cx="1442" cy="118" opacity="0.42"></circle><circle r="4.5" cx="1075" cy="1243" opacity="0.60"></circle><circle r="4.5" cx="-104" cy="1357" opacity="0.86"></circle><circle r="4.5" cx="-680" cy="320" opacity="0.97"></circle><circle r="4.5" cx="42" cy="-623" opacity="0.99"></circle><circle r="4.5" cx="1195" cy="-338" opacity="0.12"></circle><circle r="4.5" cx="1395" cy="835" opacity="0.31"></circle><circle r="4.5" cx="399" cy="1487" opacity="0.51"></circle><circle r="4.5" cx="-598" cy="833" opacity="0.97"></circle><circle r="4.5" cx="-397" cy="-343" opacity="0.36"></circle><circle r="4.5" cx="763" cy="-628" opacity="0.95"></circle><circle r="4.5" cx="1489" cy="322" opacity="0.99"></circle><circle r="4.5" cx="907" cy="1369" opacity="0.86"></circle><circle r="4.5" cx="-286" cy="1252" opacity="0.32"></circle><circle r="4.5" cx="-656" cy="111" opacity="0.74"></circle><circle r="4.5" cx="243" cy="-685" opacity="0.79"></circle><circle r="4.5" cx="1333" cy="-178" opacity="0.52"></circle><circle r="4.5" cx="1303" cy="1026" opacity="0.57"></circle><circle r="4.5" cx="187" cy="1479" opacity="0.72"></circle><circle r="4.5" cx="-676" cy="636" opacity="0.11"></circle><circle r="4.5" cx="-246" cy="-493" opacity="0.71"></circle><circle r="4.5" cx="961" cy="-550" opacity="0.97"></circle><circle r="5" cx="1496" cy="535" opacity="0.66"></circle><circle r="5" cx="714" cy="1460" opacity="0.58"></circle><circle r="5" cx="-447" cy="1112" opacity="0.76"></circle><circle r="5" cx="-592" cy="-93" opacity="0.74"></circle><circle r="5" cx="456" cy="-708" opacity="0.82"></circle><circle r="5" cx="1439" cy="8" opacity="0.15"></circle><circle r="5" cx="1175" cy="1197" opacity="0.44"></circle><circle r="5" cx="-22" cy="1430" opacity="0.43"></circle><circle r="5" cx="-714" cy="425" opacity="0.95"></circle><circle r="5" cx="-68" cy="-612" opacity="0.96"></circle><circle r="5" cx="1142" cy="-434" opacity="0.51"></circle><circle r="5" cx="1462" cy="747" opacity="0.36"></circle><circle r="5" cx="506" cy="1514" opacity="0.77"></circle><circle r="5" cx="-580" cy="942" opacity="0.80"></circle><circle r="5" cx="-489" cy="-282" opacity="0.40"></circle><circle r="5" cx="671" cy="-689" opacity="0.11"></circle><circle r="5" cx="1508" cy="213" opacity="0.39"></circle><circle r="5" cx="1014" cy="1342" opacity="0.79"></circle><circle r="5" cx="-219" cy="1340" opacity="0.58"></circle><circle r="5" cx="-710" cy="208" opacity="0.27"></circle><circle r="5" cx="133" cy="-696" opacity="0.41"></circle><circle r="5" cx="1299" cy="-283" opacity="0.68"></circle><circle r="5" cx="1386" cy="952" opacity="0.92"></circle><circle r="5" cx="288" cy="1526" opacity="0.45"></circle><circle r="5" cx="-678" cy="747" opacity="0.55"></circle><circle r="5" cx="-350" cy="-450" opacity="0.33"></circle><circle r="5" cx="881" cy="-628" opacity="0.75"></circle><circle r="5" cx="1536" cy="430" opacity="0.92"></circle><circle r="5" cx="826" cy="1454" opacity="0.55"></circle><circle r="5" cx="-397" cy="1213" opacity="0.95"></circle><circle r="5" cx="-664" cy="-7" opacity="0.36"></circle><circle r="5" cx="348" cy="-739" opacity="0.77"></circle><circle r="5" cx="1425" cy="-103" opacity="0.34"></circle><circle r="5" cx="1272" cy="1139" opacity="0.94"></circle><circle r="5" cx="70" cy="1495" opacity="0.24"></circle><circle r="5" cx="-737" cy="535" opacity="0.46"></circle><circle r="5" cx="-179" cy="-590" opacity="0.12"></circle><circle r="5" cx="1077" cy="-527" opacity="0.96"></circle><circle r="5" cx="1521" cy="651" opacity="0.21"></circle><circle r="5" cx="618" cy="1529" opacity="0.76"></circle><circle r="5" cx="-549" cy="1051" opacity="0.14"></circle><circle r="5" cx="-577" cy="-211" opacity="0.99"></circle><circle r="5" cx="570" cy="-741" opacity="0.67"></circle><circle r="5" cx="1515" cy="100" opacity="0.48"></circle><circle r="5" cx="1121" cy="1303" opacity="0.86"></circle><circle r="5" cx="-141" cy="1423" opacity="0.65"></circle><circle r="5" cx="-755" cy="313" opacity="0.97"></circle><circle r="5" cx="19" cy="-695" opacity="0.79"></circle><circle r="5" cx="1252" cy="-388" opacity="0.89"></circle><circle r="5" cx="1463" cy="867" opacity="0.11"></circle><circle r="5" cx="396" cy="1563" opacity="0.98"></circle><circle r="5" cx="-668" cy="861" opacity="0.15"></circle><circle r="5" cx="-451" cy="-396" opacity="0.52"></circle><circle r="5" cx="791" cy="-699" opacity="0.78"></circle><circle r="5" cx="1565" cy="319" opacity="0.33"></circle><circle r="5" cx="940" cy="1436" opacity="0.95"></circle><circle r="5" cx="-335" cy="1310" opacity="0.60"></circle><circle r="5" cx="-729" cy="89" opacity="0.46"></circle><circle r="5" cx="235" cy="-760" opacity="0.89"></circle><circle r="5" cx="1399" cy="-216" opacity="0.47"></circle><circle r="5" cx="1364" cy="1070" opacity="0.13"></circle><circle r="5" cx="170" cy="1553" opacity="0.40"></circle><circle r="5" cx="-750" cy="650" opacity="0.91"></circle><circle r="5" cx="-289" cy="-555" opacity="0.78"></circle><circle r="5" cx="1001" cy="-614" opacity="0.63"></circle><circle r="5" cx="1571" cy="546" opacity="0.73"></circle><circle r="5" cx="734" cy="1533" opacity="0.18"></circle><circle r="5" cx="-506" cy="1159" opacity="0.34"></circle><circle r="5" cx="-659" cy="-128" opacity="0.58"></circle><circle r="5" cx="462" cy="-783" opacity="0.72"></circle><circle r="5" cx="1510" cy="-16" opacity="0.66"></circle><circle r="5" cx="1226" cy="1252" opacity="0.31"></circle><circle r="5" cx="-52" cy="1499" opacity="0.78"></circle><circle r="5" cx="-789" cy="424" opacity="0.87"></circle><circle r="5" cx="-98" cy="-682" opacity="0.21"></circle><circle r="5" cx="1194" cy="-489" opacity="0.30"></circle></g></svg>',replicate:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 1422 800" width="1422" height="800"><g transform="scale(1) rotate(0) translate(0 0) skewX(0) skewY(0)" transform-origin="711 400"><rect width="2844" height="1600" x="-711" y="-400" fill="url(#rrreplicate-pattern1)"></rect><rect width="2844" height="1600" x="-711" y="-400" fill="url(#rrreplicate-pattern2)"></rect><rect width="2844" height="1600" x="-711" y="-400" fill="url(#rrreplicate-pattern3)"></rect></g><defs><pattern id="rrreplicate-pattern1" width="260" height="260" patternUnits="userSpaceOnUse" patternTransform="rotate(30)" stroke-width="4" fill="none" stroke="#d3d3d3" stroke-opacity="0.48">\n <line x1="32.5" y1="0" x2="32.5" y2="260"></line><line x1="97.5" y1="0" x2="97.5" y2="260"></line><line x1="162.5" y1="0" x2="162.5" y2="260"></line><line x1="227.5" y1="0" x2="227.5" y2="260"></line>\n </pattern><pattern id="rrreplicate-pattern2" width="260" height="260" patternUnits="userSpaceOnUse" patternTransform="rotate(30)" stroke-opacity="0.67" stroke-width="2.2" fill="none" stroke="#787878">\n <line x1="65" y1="0" x2="65" y2="260"></line><line x1="195" y1="0" x2="195" y2="260"></line>\n </pattern><pattern id="rrreplicate-pattern3" width="260" height="260" patternUnits="userSpaceOnUse" patternTransform="rotate(115)" stroke-opacity="1" stroke-width="1.2" fill="none" stroke="#4e4e4e">\n <line x1="32.5" y1="0" x2="32.5" y2="260"></line><line x1="97.5" y1="0" x2="97.5" y2="260"></line><line x1="162.5" y1="0" x2="162.5" y2="260"></line><line x1="227.5" y1="0" x2="227.5" y2="260"></line>\n </pattern></defs></svg>',scribble:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="ssscribble-grad"><stop stop-color="hsl(0, 0%, 75%)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsl(0, 0%, 32%)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><g fill="none" stroke-width="1.5" stroke="url(#ssscribble-grad)" stroke-linecap="round"><path d="M914.05 179.57C1021.96 212.43 1085.52 241.39 1090.95 269.18 1041.43 300.62 948.16 337.78 835.14 386.82 722.84 447.31 632.47 526.38 574.84 624.12 553.38 726.73 563.11 832.85 592.77 924.64 639.61 982.07 685.89 993.91 722.61 950.47 755.05 867.93 770.96 761.34 771.14 666.44 764.33 625.87 745.9 656.31 719.87 758.73 691.5 901.18 659.85 1033.62 626.99 1100.58 594.13 1073.97 561.62 964.8 528.01 820.83 492.07 693.78 450.72 626.23 400.58 631.13 343.46 701.51 273.43 802.24 190.34 896.35 102.98 964.94 9.52 983.24 -80.38 953.28 -153.11 883.73 -201.8 789.8 -214.56 690.13 -191.14 587.68 -130.24 498.81 -42.03 426.96 46.89 364.25 121.45 315.36 158.29 275.66 140.18 239.5 69.96 206.15 -37.94 173.29 -156.3 140.43 -247.49 109.61 -289.16 83.8 -276.31 61.52 -210.42 50.63 -110.35 56.39 4.59 71.29 111.45 106.04 194.12 157.84 255.03 230.24 207.84 238.39 153.23 106.96 116.2 -21.35 91.99 -151.55 82.37 -246.03 77.73 -275.03 86.14 -226.21 104.96 -111.85 125.85 19.43 153.5 121.96 186.36 148.59 219.22 81.65 255.73 -44.12 296.81 -173.89 339.97 -263.65 391.33 -275.4 452.91 -210.76 519.47 -91.77 597.8 44.28 685.48 161.04 771.69 238.7 856.97 265.84 930.33 251.48 980.55 202.77 1000.93 143.83 983.54 91.87 935.09 44.77 857.7 19.81 766.85 16.26 690.86 24.17 643.66 46.78 643.49 77.32 697.82 111.49 795.66 146.7 914.01 179.56Q914.05 179.57 914.05 179.57" opacity="0.98"></path><path d="M880.05 194.5C981.27 225.01 1045.26 261.15 1059.88 304.1 1026.51 349.62 951.21 406.24 851.98 475.9 744.73 550.35 648.03 637.22 573.95 730.84 527.24 816.08 508.97 890.26 512.99 938.07 537.59 950.29 569.95 920.61 601.29 849.88 635.61 761.04 659.82 668.51 671.59 602.39 680.14 592.23 676.59 644.86 662.49 753.74 646.83 888.16 623.25 1007.12 592.74 1066.58 562.23 1044.97 526.22 949.86 484.34 818.33 440.89 691.53 388.93 607.26 327.51 582.92 262.85 619.86 188.4 696.89 107.04 785.57 28.68 870.11 -47.48 922.61 -112.07 935.93 -156.08 913.99 -174 860.1 -159.06 788.05 -116.75 701.89 -47.42 616.27 37.45 539.19 114.32 463.74 172.25 400.63 193.84 349.83 167.45 300.96 97.28 261.48 -3.94 230.96 -114.2 200.45 -202.41 180.34 -249.71 171.67 -251.17 164.92 -204.6 172.52 -123.01 195.08 -20.69 219.28 83.94 254.65 175.48 293.79 246.85 318.82 291.47 328.9 311.55 310.86 308.52 257.55 291.62 168.88 269.61 52.57 239.97 -67.88 215.86 -172.27 201.42 -231.59 187.84 -229.63 185.95 -162.75 195.66 -47.73 206.4 72.02 227.2 160.95 257.7 182.59 288.22 123.14 327 10.38 373.8 -112.26 421.64 -209.37 479.04 -244.65 545.49 -212.14 612.81 -123.66 687.17 -3.77 763.84 116.83 832.88 219.35 893.59 285.21 936.62 312.99 956.54 305.18 948.1 274.82 908.52 236.61 848.75 190.02 771.47 153.4 691.52 131.83 632.29 115.04 603.08 113.92 616.31 125.95 675.37 140.54 769.75 163.98 880.01 194.49Q880.05 194.5 880.05 194.5" opacity="0.81"></path><path d="M846.05 300.84C940.39 329.01 1003.86 368.32 1026.05 418.13 1007.33 468.69 949.94 530.49 866.77 601.5 769.71 670.71 673.86 743.47 591.02 811.64 526.05 864.13 483.97 897.03 462.85 900.36 461.57 875.14 472.78 818.29 489.29 737.39 523.85 622.09 562.12 604.64 556.25 750.23 548.19 874.7 530.13 980.24 501.97 1032.58 473.8 1015.51 436.86 933.96 391.79 816.09 346.16 693.71 291.69 598.83 229.55 550.34 167.73 554.53 100.72 601.57 33.06 672.09 -26.86 754.89 -78.5 824.13 -114.14 867.93 -129.93 887.55 -121.25 876.6 -85.61 842.33 -32.1 789.77 38.48 727.32 114.9 663.89 177.42 596.01 218.79 534.72 226.63 483.54 193.57 432.35 124.39 392 30.05 363.83 -72.01 335.66 -156.43 321.01 -207.62 319.08 -221.24 317.13 -192.72 327.18 -130.42 346.25 -44.48 360.86 51.37 376.94 143.61 386.09 225.91 376.95 289.43 347.48 332.64 290.95 356.39 210.24 364.22 107.6 362.26 -4.52 343.01 -140.52 313.81 -134.27 318.83 16.64 325.51 123.64 342.61 199.5 370.78 216.59 398.94 164.27 436.83 64.45 483.27 -49.16 529.7 -149.14 584.29 -202.6 644.7 -199.24 702.74 -143.72 762.51 -49.31 818.48 60.74 863.86 170.97 896.48 261.22 909.64 323.36 903.35 356.95 873.24 364.48 820.27 355.4 757.36 330.65 686.75 304.27 621.46 283.87 579.8 261.67 567.3 251.11 591.78 253.66 653.83 256.98 743.95 272.67 846.01 300.83Q846.05 300.84 846.05 300.84" opacity="0.43"></path><path d="M812.05 451.3C899.32 477.11 961.34 513.82 989.45 559.55 983.61 604.45 943.35 656.3 877.45 710.89 794.45 759.57 705.74 803.64 621.83 835.62 546.93 851.31 488.02 845.68 446.2 814.6 420.53 766.49 408.57 699.78 405.5 625.02 411.96 563.56 420.12 522.96 425.65 518.41 433.98 558.38 435.8 638.99 429.15 747.65 422.79 860.66 407.11 952.99 381.29 998.58 355.47 985.6 320.73 916.96 278.4 813.56 236.36 699.2 187.57 599.78 134.5 533.46 84.22 508.72 33.54 523.99 -12.7 568.05 -49.43 634.32 -74.53 702.31 -82.71 759.24 -74.73 805.42 -46.43 828.7 1.57 830.29 58.61 816 124.15 786.49 188.23 748.67 235.2 703.6 260.78 658 256.65 616.68 218.57 573.96 151.32 538.61 64.05 512.79 -29.72 486.96 -109.59 471.9 -163 465.92 -186.48 458.54 -174.13 457.18 -130.82 457.51 -63.53 450.58 18.46 437.58 104.09 412.09 188.27 370.7 261.8 310.36 320.89 230.35 366.27 139.58 396.95 40.97 416.21 -52.17 424.93 -123.13 428.49 -161.56 431.29 -155.76 429.97 -108.38 432.58 -23.66 441.69 80.73 450.05 174.17 466.59 237.59 492.41 250.59 518.23 205.01 552.1 117.93 592.43 14.87 632.01 -83.82 676.37 -149.74 722.43 -170.81 764.38 -147.33 803.35 -83.58 834.43 4.75 854.96 106.4 861.36 203.72 849.82 285.68 824.57 350.6 781.66 393.3 724.36 417.4 665.62 425.22 606.77 423.67 558.4 419.73 534.02 409.88 536.35 405 569.78 408.8 633.15 411.75 718.24 425.47 812.01 451.29Q812.05 451.3 812.05 451.3" opacity="0.12"></path><path d="M778.05 578.93C858.06 602.4 917.75 631.76 950.13 664.98 955.15 696.59 930.59 728.83 882.1 757.47 815.61 779.46 738.99 791.71 660.88 789.46 584.54 775.36 517.26 743.59 461.96 694.79 417.59 640.88 385.43 580.74 363.09 524.8 349.55 489.21 341.05 478.05 334.11 499.94 330.97 556.64 325.4 642.62 315.07 745.43 305.55 845.85 289.57 925.34 266.1 964.58 242.62 955.23 212.78 898.71 178.02 810.15 144.09 706.73 106.96 608.44 69.42 531.3 35.69 483.86 5.53 469.78 -17.09 484.3 -30.93 524.4 -32.47 576.31 -18.86 629.05 5.67 682.85 45.11 724.08 97.01 749.78 150.69 765.98 206.25 767.01 255.54 756.31 286.83 738.99 298.03 715.36 283.95 689.4 242.51 661.63 178.06 635.04 98.05 611.57 12.64 588.09 -61.98 568.85 -115.97 552.35 -146.91 534.05 -148.37 514.98 -122.77 491.62 -74.83 461.65 -10.02 421.98 63.23 369.6 141.13 307.73 215.51 232.81 281.63 148.24 340.27 64.74 387.59 -15 424.38 -79.55 452.87 -118.51 474.18 -125.5 491.29 -95.27 504.1 -35.34 516.73 49.57 531.58 143.93 545.36 223.44 563.47 275.21 586.94 284.59 610.41 245.37 638.13 170.64 668.62 79.27 698.04 -14.48 728.11 -87.1 755.97 -126.61 779.54 -131.3 796.89 -99.1 804.59 -39.06 803.97 41.3 790.35 129.27 762.48 213.95 727.12 293.51 680.58 358.98 627.12 409.26 578.3 447.69 534.54 474.09 503.79 492.78 495.39 504.81 510.21 515.28 550.19 527.93 613.23 538.97 692.61 555.45 778.01 578.92Q778.05 578.93 778.05 578.93" opacity="0.47"></path><path d="M744.05 626.96C816.64 648.09 873.16 668.33 908.17 686.39 921.85 702.96 911.05 714.55 879.09 718.51 830.08 717.7 768.81 705.9 701.89 681.57 631.66 651.92 564.56 611.13 504.23 562.64 449.46 518.24 403.78 476.9 366.82 447.03 336.27 438.88 312.07 454.11 292.1 496.34 275.67 563.16 260.33 649.06 244.22 742.97 229.05 830.11 211.3 897.29 190.17 930.58 169.05 924.37 145.56 879.07 120.88 805.29 97.15 714.98 74.06 622.76 53.89 541.81 31.95 460.65 36.72 452.72 71.48 501.43 104.13 545.48 146.18 586.55 194.41 619.82 239.34 650.74 281.66 670.37 315.19 678.85 331.66 683.51 330.44 679.13 308.6 667.66 265.44 654.82 204.64 637.35 132.05 616.23 55.08 595.11 -13.67 571.33 -66.72 544.33 -102.67 515.96 -115.24 481.91 -105.21 440.65 -75.86 395.56 -29.64 341.15 27.5 277.67 92.78 211.84 159.93 140.44 224.23 68.71 286.52 5.73 341.76 -46.16 388.96 -78.69 431.13 -87.59 466.17 -69 495.4 -22.11 521.28 43.35 543.99 123.53 565.08 205.69 585.19 271.33 605.52 312.36 626.65 318.59 647.77 285.31 668.69 222.42 688.42 143.43 707.17 57.67 722.89 -16.2 733.62 -67.55 741.01 -94.3 740.76 -90.59 731.15 -60.45 716.51 -8.58 691.6 57.8 657 129.88 620.38 206.06 578.28 277.19 534.99 339.4 499.84 396.28 472.57 442.88 458.7 480.29 464.14 512.94 488.72 539.78 532.83 563.05 594.01 584.83 667.04 605.83 744.01 626.95Q744.05 626.96 744.05 626.96" opacity="0.74"></path><path d="M710.05 574.03C775.06 592.81 827.62 605.47 863.66 611.71 883.73 617.12 884.29 614.71 867.12 603.81 835.13 591.06 790.66 569.3 738.39 539.49 680 510.17 620.4 476.49 563.13 442.69 507.01 417.92 456.32 401.41 412.06 398.78 371.27 415.01 336.42 450.53 306.84 505.65 279.7 575.99 255.96 657.01 234.65 739.69 214.09 813.28 194.56 868.81 175.78 896.58 157 893.04 139.86 857.92 125.01 798.44 110.91 722.58 100.49 640.42 95.08 562.06 92.13 493.01 96.05 440.08 107.9 405.37 123.22 388.98 146.95 388.66 178.46 399.89 211.12 422.72 248.46 449.26 287.3 474.78 333.83 514.57 363.65 557.76 330.72 557.84 287.43 554.5 231.06 543.48 166.05 524.7 97.56 505.92 35.23 480.29 -15.43 448.21 -54.03 415.59 -74.77 375.7 -77.51 328.98 -64.72 281.61 -36.64 228.05 2.84 170.65 51.64 116.18 105.64 62.68 160.82 15.24 217.84 -20.6 271.89 -42.55 321.01 -45.72 368.32 -30.57 409.98 5.5 445.89 60.79 479.92 125.38 509.36 196.85 534.69 265.47 559.37 317.71 581.1 349.03 599.88 352.59 618.66 324.83 633.6 273.11 644.33 206.77 654.42 131.33 659.14 60.99 657.65 4.41 654.29 -36.94 643.55 -55.63 625.19 -52.31 605.01 -30.13 577.92 8.63 545.51 58.02 514.94 116.42 483.2 177.06 453.95 235.33 434.01 294.07 422.77 346.76 423.73 392.05 440.23 435.5 471.65 472.07 517.49 502.06 575.4 531.24 641.53 555.24 710.01 574.02Q710.05 574.03 710.05 574.03" opacity="0.67"></path><path d="M676.05 443.67C783.96 476.53 843.18 477.87 845.34 451.89 800.64 428.27 719.14 388.75 626.38 356.67 526.68 363.23 439.1 416.54 371.31 525.08 308.08 663.34 260.01 795.62 227.15 862.58 194.28 835.97 179.75 726.67 186.03 588.5 196.87 460.05 233.17 376.77 289.8 341.98 362.81 360.55 344.23 411.3 200.05 377.69 81.68 344.84 -4.34 283.74 -39.52 204.07 -29.06 130.36 26.45 55.02 104.35 5.4 197.45 -2.88 286.32 45.53 358.44 149.89 428.65 263.97 481.62 359.95 514.48 386.59 547.35 319.64 556.99 200.68 543.74 86.49 528.57 2.04 490.98 -16.41 440.95 20.07 406.12 95.23 385.44 186.04 399.06 266.61 458.32 349.53 557.66 410.8 676.01 443.66Q676.05 443.67 676.05 443.67" opacity="0.99"></path><path d="M642.05 293.89C766.1 324.39 771.44 308.74 681 318.63 603.38 361.33 528.26 440.01 466.11 551.06 404.33 670.73 357.37 776.24 329.2 828.58 301.03 811.51 294.33 729.59 307.3 617.09 320.63 497.79 351.8 400.01 392.5 335.39 421.18 298.91 441 284.75 437.35 277.2 399.22 278.23 328.39 268.77 234.05 240.61 131.98 212.44 52.25 168.23 8.47 118.38 -4.17 77.12 19.74 47.33 66.79 46.89 130.46 74.59 198.51 142.48 258.23 241.13 319.67 332.98 367.35 403.5 395.51 420.59 423.69 368.26 429.68 274.17 417.06 175.14 394.11 60.32 348.14 79.13 384.39 156.64 448.81 216.71 539.95 265.72 642.01 293.88Q642.05 293.89 642.05 293.89" opacity="0.90"></path><path d="M608.05 191.31C688.06 214.78 744.12 229.6 771 241.3 775.03 259.64 753.21 286.9 715.32 331.76 665.47 394.32 611.94 479.79 564.23 579.62 514.63 675.69 475.49 755.35 452.02 794.58 428.55 785.23 422.97 728.1 431.89 643.64 438.92 544.99 455.82 451.44 474.9 376.17 482.03 314.42 478.95 271.52 457.72 241.88 413.64 218.86 348.06 197.9 268.05 174.43 182.64 150.95 112.1 127.2 65.7 109.54 38.25 98.5 37.67 104.77 57.29 135.75 90.54 180.26 132.56 248.9 173.6 330.35 217.72 397.6 254.38 445.21 277.85 454.59 301.33 415.36 309.39 345.23 305.95 266.35 305.59 183.72 300.2 123.14 297.71 91.35 308.85 77.25 334.32 86.62 378.97 108.95 442.56 137.93 522.61 167.83 608.01 191.3Q608.05 191.31 608.05 191.31" opacity="0.13"></path><path d="M574.05 181.56C639.06 200.34 688.54 223.56 719 252.57 736.2 285.38 735.19 330.01 720.66 387.62 697.31 451.77 667.56 527.64 637.84 606.55 605.85 676.94 578.36 732.81 559.58 760.58 540.8 757.04 532.51 721.14 531.96 664.12 529.14 592.53 529.59 517.43 528.32 449.6 518.24 384.57 499.33 331.49 468.38 291.77 424.16 255.09 367.06 227.37 302.05 208.59 233.56 189.81 174.61 181.75 130.98 185.89 97.19 193.07 81.27 216.84 80.83 257.26 89.14 300.49 107.09 355.67 129.02 413.5 153.63 456.75 177.24 485.04 196.02 488.58 214.8 460.81 226.96 412.55 234.9 355.93 245.51 290.78 256.87 234.82 273.16 195.28 298.21 162.29 334.05 146.95 381.6 146.69 438.98 150.21 505.53 162.77 574.01 181.55Q574.05 181.56 574.05 181.56" opacity="0.08"></path><path d="M540.05 268.98C634.39 297.15 685.65 368.01 692.66 468.1 680.27 568.73 648.5 674.24 620.34 726.58 592.17 709.51 572.93 626.76 548.41 533.6 504.48 432.15 430.39 356.07 336.05 327.9 233.97 299.73 163.66 324.82 137.48 389.35 128.05 445.59 145.83 505.51 174 522.58 202.16 470.24 235.39 387.56 281.73 323.85 344.82 260.68 437.97 240.81 540.05 268.98Q540.05 268.98 540.05 268.98" opacity="0.36"></path><path d="M506.05 414.69C626.68 452.24 654.03 609.63 616.48 692.58 578.92 654.68 490.68 516.83 370.05 479.28 235.85 441.72 180.69 518.68 218.25 556.58 255.8 473.63 371.85 377.13 506.05 414.69Q506.05 414.69 506.05 414.69" opacity="0.95"></path></g></svg>',squiggly:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient gradientTransform="rotate(270)" x1="50%" y1="0%" x2="50%" y2="100%" id="sssquiggly-grad"><stop stop-color="hsla(0, 0%, 74%, 1.00)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsla(0, 0%, 33%, 1.00)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><g stroke-width="2" stroke="url(#sssquiggly-grad)" fill="none" stroke-linecap="round" transform="matrix(1,0,0,1,0,53.62754440307617)"><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,665)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,630)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,595)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,560)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,525)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,490)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,455)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,420)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,385)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,350)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,315)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,280)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,245)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,210)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,175)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,140)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,105)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,70)"></path><path d="M10,10C21.805555555555557,16.25,40.97222222222223,45.416666666666664,66.66666666666667,40C92.36111111111111,34.583333333333336,105.55555555555557,-15.583333333333334,133.33333333333334,-16C161.11111111111111,-16.416666666666668,172.22222222222223,35.083333333333336,200,38C227.77777777777777,40.916666666666664,238.8888888888889,1.75,266.6666666666667,-2C294.44444444444446,-5.75,305.5555555555556,24.375,333.33333333333337,20C361.11111111111114,15.625,372.22222222222223,-29.458333333333336,400,-23C427.77777777777777,-16.541666666666664,438.8888888888889,45.791666666666664,466.6666666666667,51C494.44444444444446,56.208333333333336,505.5555555555556,5.75,533.3333333333334,2C561.1111111111111,-1.75,572.2222222222222,31.333333333333332,600,33C627.7777777777778,34.666666666666664,638.8888888888889,10.208333333333334,666.6666666666667,10C694.4444444444446,9.791666666666666,707.6388888888889,32,733.3333333333334,32C759.0277777777778,32,778.1944444444445,14.583333333333332,790,10" transform="matrix(1,0,0,1,0,35)"></path></g></svg>',gyrate:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="gggyrate-grad"><stop stop-color="hsl(0, 0%, 72%)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsl(0, 0%, 38%)" stop-opacity="1" offset="100%"></stop></linearGradient></defs><g stroke-width="1" stroke="url(#gggyrate-grad)" fill="none"><path d="M400.0000305175781 -19.15570068359375L763.0000537130439 190.4221548070758V609.5778657884148L400.0000305175781 819.1557212790844L37.00000732211237 609.5778657884148V190.4221548070758L400.0000305175781 -19.15570068359375Z " transform="rotate(44, 400, 400)" opacity="0.05"></path><path d="M400.0000305175781 -0.1031494140625L746.5000526587046 199.94843991794022V600.0516185819456L400.0000305175781 800.1032079139484L53.50000837645172 600.0516185819456V199.94843991794022L400.0000305175781 -0.1031494140625Z " transform="rotate(42, 400, 400)" opacity="0.10"></path><path d="M400.0000305175781 18.9493408203125L730.0000516043651 209.4746639936484V590.5253103403203L400.0000305175781 781.0506335136562L70.00000943079107 590.5253103403203V209.4746639936484L400.0000305175781 18.9493408203125Z " transform="rotate(40, 400, 400)" opacity="0.14"></path><path d="M400.0000305175781 38.00189208984375L713.5000505500258 219.00094910451287V580.9990631338511L400.0000305175781 761.9981201485202L86.50001048513042 580.9990631338511V219.00094910451287L400.0000305175781 38.00189208984375Z " transform="rotate(38, 400, 400)" opacity="0.19"></path><path d="M400.0000305175781 57.054412841796875L697.0000494956864 228.52720369779922V571.4727854098039L400.0000305175781 742.9455762658063L103.00001153946977 571.4727854098039V228.52720369779922L400.0000305175781 57.054412841796875Z " transform="rotate(36, 400, 400)" opacity="0.23"></path><path d="M400.0000305175781 76.10696411132812L680.5000484413472 238.0534888086637V561.9465382033347L400.0000305175781 723.8930629006703L119.50001259380912 561.9465382033347V238.0534888086637L400.0000305175781 76.10696411132812Z " transform="rotate(34, 400, 400)" opacity="0.28"></path><path d="M400.0000305175781 95.15948486328125L664.0000473870078 247.57974340195V552.4202604792875L400.0000305175781 704.8405190179562L136.00001364814847 552.4202604792875V247.57974340195L400.0000305175781 95.15948486328125Z " transform="rotate(32, 400, 400)" opacity="0.32"></path><path d="M400.00001525878906 114.21200561523438L647.5000310738794 257.1059979952363V542.8939827552402L400.00001525878906 685.7879751352422L152.49999944369875 542.8939827552402V257.1059979952363L400.00001525878906 114.21200561523438Z " transform="rotate(30, 400, 400)" opacity="0.37"></path><path d="M400 133.26455688476562L631.0000147607509 266.6322831061008V533.3677355487711L400 666.7354617701062L168.99998523924904 533.3677355487711V266.6322831061008L400 133.26455688476562Z " transform="rotate(28, 400, 400)" opacity="0.41"></path><path d="M400 152.31707763671875L614.5000137064116 276.15853769938707V523.8414578247238L400 647.682917887392L185.4999862935884 523.8414578247238V276.15853769938707L400 152.31707763671875Z " transform="rotate(26, 400, 400)" opacity="0.46"></path><path d="M400 171.36959838867188L598.0000126520722 285.6847922926735V514.3151801006766L400 628.6303740046782L201.99998734792774 514.3151801006766V285.6847922926735L400 171.36959838867188Z " transform="rotate(24, 400, 400)" opacity="0.50"></path><path d="M400 190.42214965820312L581.500011597733 295.2110774035379V504.7889328942074L400 609.5778606395422L218.4999884022671 504.7889328942074V295.2110774035379L400 190.42214965820312Z " transform="rotate(22, 400, 400)" opacity="0.55"></path><path d="M400 209.47467041015625L565.0000105433935 304.7373319968242V495.2626551701601L400 590.525316756828L234.99998945660644 495.2626551701601V304.7373319968242L400 209.47467041015625Z " transform="rotate(20, 400, 400)" opacity="0.59"></path><path d="M400 228.5272216796875L548.5000094890542 314.2636171076887V485.736407963691L400 571.4728033916922L251.49999051094585 485.736407963691V314.2636171076887L400 228.5272216796875Z " transform="rotate(18, 400, 400)" opacity="0.64"></path><path d="M400 247.57974243164062L532.0000084347148 323.789871700975V476.2101302396438L400 552.4202595089781L267.9999915652852 476.2101302396438V323.789871700975L400 247.57974243164062Z " transform="rotate(16, 400, 400)" opacity="0.68"></path><path d="M400 266.63226318359375L515.5000073803755 333.3161262942613V466.68385251559647L400 533.367715626264L284.49999261962455 466.68385251559647V333.3161262942613L400 266.63226318359375Z " transform="rotate(14, 400, 400)" opacity="0.73"></path><path d="M400 285.68479919433594L499.0000063260361 342.84239614633674V457.1575900503383L400 514.3151870023391L300.9999936739639 457.1575900503383V342.84239614633674L400 285.68479919433594Z " transform="rotate(12, 400, 400)" opacity="0.77"></path><path d="M400 304.7373352050781L482.50000527169675 352.3686659984121V447.63132758508004L400 495.262658378414L317.49999472830325 447.63132758508004V352.3686659984121L400 304.7373352050781Z " transform="rotate(10, 400, 400)" opacity="0.82"></path><path d="M400 323.7898712158203L466.0000042173574 361.8949358504875V438.1050651198219L400 476.21012975448906L333.9999957826426 438.1050651198219V361.8949358504875L400 323.7898712158203Z " transform="rotate(8, 400, 400)" opacity="0.86"></path><path d="M400 342.8424072265625L449.50000316301805 371.4212057025629V428.5788026545637L400 457.1576011305641L350.49999683698195 428.5788026545637V371.4212057025629L400 342.8424072265625Z " transform="rotate(6, 400, 400)" opacity="0.91"></path><path d="M400 361.8949279785156L433.0000021086787 380.9474602958492V419.0525249305164L400 438.10505724785L366.9999978913213 419.0525249305164V380.9474602958492L400 361.8949279785156Z " transform="rotate(4, 400, 400)" opacity="0.95"></path><path d="M400 380.9474639892578L416.50000105433935 390.4737301479246V409.5262624652582L400 419.052528623925L383.49999894566065 409.5262624652582V390.4737301479246L400 380.9474639892578Z " transform="rotate(2, 400, 400)" opacity="1.00"></path></g></svg>',leaves:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><filter id="llleaves-blur-2" x="-100%" y="-100%" width="400%" height="400%"><feGaussianBlur in="SourceGraphic" stdDeviation="2"></feGaussianBlur></filter><filter id="llleaves-blur-3" x="-100%" y="-100%" width="400%" height="400%"><feGaussianBlur in="SourceGraphic" stdDeviation="4"></feGaussianBlur></filter><filter id="llleaves-blur-4" x="-100%" y="-100%" width="400%" height="400%"><feGaussianBlur in="SourceGraphic" stdDeviation="12"></feGaussianBlur></filter></defs><g fill="hsl(0, 0%, 48%)"><path d="M254 117H304C332 117 354 139 354 167H304C276 167 254 145 254 117Z " transform="matrix(-0.2953922490001962,-0.33980991098778723,0.33980991098778723,-0.2953922490001962,345.5462363357939,287.2479122983152)" opacity="0.69"></path><path d="M3 218H53C81 218 103 240 103 268H53C25 268 3 246 3 218Z " transform="matrix(0.01797819046047583,-0.5148280155946784,0.5148280155946784,0.01797819046047583,-73.05605188391208,265.91718454462233)" opacity="0.79"></path><path d="M300 487H350C378 487 400 509 400 537H350C322 537 300 515 300 487Z " transform="matrix(-0.23322124145511378,-0.40395103960454554,0.40395103960454554,-0.23322124145511378,224.8045022317625,772.7921394866091)" opacity="0.72"></path><path d="M71 115H121C149 115 171 137 171 165H121C93 165 71 143 71 115Z " transform="matrix(-0.17951433779682988,-0.44431357748066536,0.44431357748066536,-0.17951433779682988,80.51733402612327,218.89395016671665)" opacity="0.74"></path><path d="M627 432H677C705 432 727 454 727 482H677C649 482 627 460 627 432Z " transform="matrix(-0.3830539845813393,-0.04703311529892784,0.04703311529892784,-0.3830539845813393,914.8334138699565,663.8970900110462)" filter="url(#llleaves-blur-2)" opacity="0.59"></path><path d="M573 630H623C651 630 673 652 673 680H623C595 680 573 658 573 630Z " transform="matrix(-0.3827771105130054,-0.12437182247279545,0.12437182247279545,-0.3827771105130054,780.0065961299213,983.2026527865701)" opacity="0.62"></path><path d="M450 188H500C528 188 550 210 550 238H500C472 238 450 216 450 188Z " transform="matrix(-0.33385356512332526,-0.2801364033622022,0.2801364033622022,-0.33385356512332526,607.2577286455136,424.17901105236945)" opacity="0.67"></path><path d="M591 727H641C669 727 691 749 691 777H641C613 777 591 755 591 727Z " transform="matrix(-0.3837194371186922,-0.10281731329607838,0.10281731329607838,-0.3837194371186922,809.6455395944308,1106.4629145360427)" filter="url(#llleaves-blur-2)" opacity="0.61"></path><path d="M708 492H758C786 492 808 514 808 542H758C730 542 708 520 708 492Z " transform="matrix(-0.34040528417256866,0.09121132099332671,-0.09121132099332671,-0.34040528417256866,1063.1834583563568,623.8513506042764)" filter="url(#llleaves-blur-2)" opacity="0.54"></path><path d="M119 200H169C197 200 219 222 219 250H169C141 250 119 228 119 200Z " transform="matrix(-0.06961285767523812,-0.4953212197910323,0.4953212197910323,-0.06961285767523812,69.31729849413298,324.37217912161304)" opacity="0.77"></path><path d="M-8 442H42C70 442 92 464 92 492H42C14 492 -8 470 -8 442Z " transform="matrix(0.018010076783796368,-0.5157411204255463,0.5157411204255463,0.018010076783796368,-199.60752646364955,480.25042119984005)" opacity="0.79"></path><path d="M481 722H531C559 722 581 744 581 772H531C503 772 481 750 481 722Z " transform="matrix(-0.3510569529260324,-0.24581272477973895,0.24581272477973895,-0.3510569529260324,533.7891365932583,1139.7661006937874)" opacity="0.66"></path><path d="M696 614H746C774 614 796 636 796 664H746C718 664 696 642 696 614Z " transform="matrix(-0.3542185504132941,0.062458287505305306,-0.062458287505305306,-0.3542185504132941,1050.1578843242073,818.7517712351371)" filter="url(#llleaves-blur-2)" opacity="0.55"></path><path d="M366 588H416C444 588 466 610 466 638H416C388 638 366 616 366 588Z " transform="matrix(-0.2849455595886792,-0.3518784613033493,0.3518784613033493,-0.2849455595886792,318.8358560099374,934.0530679300535)" opacity="0.70"></path><path d="M356 345H406C434 345 456 367 456 395H406C378 395 356 373 356 345Z " transform="matrix(-0.2849455595886792,-0.3518784613033493,0.3518784613033493,-0.2849455595886792,391.4928665107645,618.2925123369711)" opacity="0.70"></path><path d="M374 9H424C452 9 474 31 474 59H424C396 59 374 37 374 9Z " transform="matrix(-0.3836236788346756,-0.11000231977366201,0.11000231977366201,-0.3836236788346756,582.916360953598,93.68418866441166)" filter="url(#llleaves-blur-2)" opacity="0.61"></path><path d="M245 735H295C323 735 345 757 345 785H295C267 785 245 763 245 735Z " transform="matrix(-0.18636546518258623,-0.4390495220582399,0.4390495220582399,-0.18636546518258623,16.300175464600613,1031.1573625459464)" opacity="0.73"></path><path d="M406 271H456C484 271 506 293 506 321H456C428 321 406 299 406 271Z " transform="matrix(-0.31845399072931724,-0.30752744413981775,0.30752744413981775,-0.31845399072931724,510.1868963071826,530.4948957836348)" opacity="0.68"></path><path d="M235 17H285C313 17 335 39 335 67H285C257 67 235 45 235 17Z " transform="matrix(-0.3848415529516155,-0.09595177580849437,0.09595177580849437,-0.3848415529516155,390.64986800725364,85.50960132938874)" filter="url(#llleaves-blur-2)" opacity="0.61"></path><path d="M256 565H306C334 565 356 587 356 615H306C278 615 256 593 256 565Z " transform="matrix(-0.20754546214339273,-0.4255312583349481,0.4255312583349481,-0.20754546214339273,118.4454689982588,842.6643877150958)" opacity="0.73"></path><path d="M84 288H134C162 288 184 310 184 338H134C106 338 84 316 84 288Z " transform="matrix(-0.03527706809846801,-0.5044855773914882,0.5044855773914882,-0.03527706809846801,-19.176858598341113,391.6427896852799)" opacity="0.78"></path><path d="M323 72H373C401 72 423 94 423 122H373C345 122 323 100 323 72Z " transform="matrix(-0.36923841290278064,-0.196327546672124,0.196327546672124,-0.36923841290278064,491.68215598554116,206.04630096027196)" opacity="0.64"></path><path d="M465 616H515C543 616 565 638 565 666H515C487 666 465 644 465 616Z " transform="matrix(-0.34520809364150107,-0.2601329570918176,0.2601329570918176,-0.34520809364150107,526.0369427295179,996.2468609264884)" opacity="0.66"></path><path d="M-1 644H49C77 644 99 666 99 694H49C21 694 -1 672 -1 644Z " transform="matrix(0.018010076783796368,-0.5157411204255463,0.5157411204255463,0.018010076783796368,-296.9133033270965,682.222573532492)" opacity="0.79"></path><path d="M701 245H751C779 245 801 267 801 295H751C723 295 701 273 701 245Z " transform="matrix(-0.34040528417256866,0.09121132099332671,-0.09121132099332671,-0.34040528417256866,1031.2714250817971,293.4097246606052)" filter="url(#llleaves-blur-2)" opacity="0.54"></path><path d="M91 484H141C169 484 191 506 191 534H141C113 534 91 512 91 484Z " transform="matrix(-0.03527706809846801,-0.5044855773914882,0.5044855773914882,-0.03527706809846801,-110.80909229038352,598.08849407432)" opacity="0.78"></path><path d="M191 286H241C269 286 291 308 291 336H241C213 336 191 314 191 286Z " transform="matrix(-0.1343406430917446,-0.4685014991130271,0.4685014991130271,-0.1343406430917446,127.67212876095903,465.6888012877721)" opacity="0.75"></path><path d="M88 610H138C166 610 188 632 188 660H138C110 660 88 638 88 610Z " transform="matrix(-0.03527706809846801,-0.5044855773914882,0.5044855773914882,-0.03527706809846801,-177.48010624600647,727.0199479225525)" opacity="0.78"></path><path d="M700 25H750C778 25 800 47 800 75H750C722 75 700 53 700 25Z " transform="matrix(-0.3772580435139389,-0.013174141176457967,0.013174141176457967,-0.3772580435139389,1032.2848255766312,78.74350805804042)" filter="url(#llleaves-blur-2)" opacity="0.58"></path><path d="M117 19H167C195 19 217 41 217 69H167C139 69 117 47 117 19Z " transform="matrix(-0.3838172112864224,-0.1173446975621604,0.1173446975621604,-0.3838172112864224,225.9343075920975,80.48452178948338)" opacity="0.62"></path><path d="M613 304H663C691 304 713 326 713 354H663C635 354 613 332 613 304Z " transform="matrix(-0.3845457334088762,-0.074748118537608,0.074748118537608,-0.3845457334088762,893.3616902512119,505.07354888195437)" filter="url(#llleaves-blur-2)" opacity="0.60"></path><path d="M525 508H575C603 508 625 530 625 558H575C547 558 525 536 525 508Z " transform="matrix(-0.37112098523430703,-0.18909558681832528,0.18909558681832528,-0.37112098523430703,687.6066187355591,839.5374475504227)" opacity="0.64"></path><path d="M422 96H472C500 96 522 118 522 146H472C444 146 422 124 422 96Z " transform="matrix(-0.36448689252527927,-0.21043660551556026,0.21043660551556026,-0.36448689252527927,618.5749840045489,264.4289917989032)" opacity="0.65"></path><path d="M187 648H237C265 648 287 670 287 698H237C209 698 187 676 187 648Z " transform="matrix(-0.1343406430917446,-0.4685014991130271,0.4685014991130271,-0.1343406430917446,-46.46277649032379,874.4461080905317)" opacity="0.75"></path><path d="M697 720H747C775 720 797 742 797 770H747C719 770 697 748 697 720Z " transform="matrix(-0.3542185504132941,0.062458287505305306,-0.062458287505305306,-0.3542185504132941,1058.132681350183,962.236479291441)" filter="url(#llleaves-blur-2)" opacity="0.55"></path><path d="M-9 325H41C69 325 91 347 91 375H41C13 375 -9 353 -9 325Z " transform="matrix(0.018010076783796368,-0.5157411204255463,0.5157411204255463,0.018010076783796368,-140.24780529707684,364.84185906311865)" opacity="0.79"></path></g><g fill="none" stroke-width="3" stroke="hsl(0, 0%, 48%)"><path d="M1 544H51C79 544 101 566 101 594H51C23 594 1 572 1 544Z " transform="matrix(0.01797819046047583,-0.5148280155946784,0.5148280155946784,0.01797819046047583,-242.85402858685626,585.0266384233179)" opacity="0.79"></path><path d="M64 386H114C142 386 164 408 164 436H114C86 436 64 414 64 386Z " transform="matrix(-0.0089070012150814,-0.5102817578571414,0.5102817578571414,-0.0089070012150814,-94.71040434076582,472.8328978951126)" opacity="0.78"></path><path d="M5 22H55C83 22 105 44 105 72H55C27 72 5 50 5 22Z " transform="matrix(-0.38254955963579196,-0.13172237683440474,0.13172237683440474,-0.38254955963579196,69.84927406875154,72.22456002877448)" opacity="0.62"></path><path d="M119 725H169C197 725 219 747 219 775H169C141 775 119 753 119 725Z " transform="matrix(-0.06961285767523812,-0.4953212197910323,0.4953212197910323,-0.06961285767523812,-190.72634189615894,885.918929401113)" opacity="0.77"></path><path d="M426 506H476C504 506 526 528 526 556H476C448 556 426 534 426 506Z " transform="matrix(-0.3264570935921235,-0.2939432873600664,0.2939432873600664,-0.3264570935921235,475.30969096165546,844.2657214808091)" opacity="0.67"></path><path d="M8 732H58C86 732 108 754 108 782H58C30 782 8 760 8 732Z " transform="matrix(0.01797819046047583,-0.5148280155946784,0.5148280155946784,0.01797819046047583,-332.76754285187917,773.2505347259112)" opacity="0.79"></path><path d="M492 19H542C570 19 592 41 592 69H542C514 69 492 47 492 19Z " transform="matrix(-0.38100753497913875,-0.1386754017635454,0.1386754017635454,-0.38100753497913875,742.4043662810973,135.9263992949237)" opacity="0.62"></path><path d="M602 34H652C680 34 702 56 702 84H652C624 84 602 62 602 34Z " transform="matrix(-0.38405838470748105,-0.09575651003429414,0.09575651003429414,-0.38405838470748105,896.7564327372544,144.09268924010115)" filter="url(#llleaves-blur-2)" opacity="0.61"></path><path d="M259 374H309C337 374 359 396 359 424H309C281 424 259 402 259 374Z " transform="matrix(-0.20754546214339273,-0.4255312583349481,0.4255312583349481,-0.20754546214339273,203.34457572666406,613.2997982207127)" opacity="0.73"></path><path d="M620 167H670C698 167 720 189 720 217H670C642 217 620 195 620 167Z " transform="matrix(-0.3830539845813393,-0.04703311529892784,0.04703311529892784,-0.3830539845813393,917.6158115321033,297.0585522898988)" filter="url(#llleaves-blur-2)" opacity="0.59"></path><path d="M165 104H215C243 104 265 126 265 154H215C187 154 165 132 165 104Z " transform="matrix(-0.26884028279970135,-0.37002690473986627,0.37002690473986627,-0.26884028279970135,225.06719009049306,243.2361810002327)" opacity="0.70"></path><path d="M499 305H549C577 305 599 327 599 355H549C521 355 499 333 499 305Z " transform="matrix(-0.3562079759936054,-0.2313241643677639,0.2313241643677639,-0.3562079759936054,668.2212045791273,574.5455983157922)" opacity="0.65"></path><path d="M163 547H213C241 547 263 569 263 597H213C185 597 163 575 163 547Z " transform="matrix(-0.10271023864389431,-0.48321368127578157,0.48321368127578157,-0.10271023864389431,-41.520944858597574,733.674770616049)" opacity="0.76"></path><path d="M152 374H202C230 374 252 396 252 424H202C174 424 152 402 152 374Z " transform="matrix(-0.10271023864389431,-0.48321368127578157,0.48321368127578157,-0.10271023864389431,29.945209377029812,537.5905488366217)" opacity="0.76"></path><path d="M543 221H593C621 221 643 243 643 271H593C565 271 543 249 543 221Z " transform="matrix(-0.37646289601111577,-0.16761208025847305,0.16761208025847305,-0.37646289601111577,775.0099255910073,438.00383601200895)" opacity="0.63"></path><path d="M546 396H596C624 396 646 418 646 446H596C568 446 546 424 546 396Z " transform="matrix(-0.37646289601111577,-0.16761208025847305,0.16761208025847305,-0.37646289601111577,749.8072002338079,679.3876790547296)" opacity="0.63"></path><path d="M373 720H423C451 720 473 742 473 770H423C395 770 373 748 373 720Z " transform="matrix(-0.2948516195622703,-0.3391879879623836,0.3391879879623836,-0.2948516195622703,295.0271840428646,1108.1409754819797)" opacity="0.69"></path><path d="M296 654H346C374 654 396 676 396 704H346C318 704 296 682 296 654Z " transform="matrix(-0.23322124145511378,-0.40395103960454554,0.40395103960454554,-0.23322124145511378,152.41179365198295,977.124282651195)" opacity="0.72"></path><path d="M342 177H392C420 177 442 199 442 227H392C364 227 342 205 342 177Z " transform="matrix(-0.27451992834167466,-0.36430024933742544,0.36430024933742544,-0.27451992834167466,426.02316154377655,400.258723265289)" opacity="0.70"></path><path d="M200 458H250C278 458 300 480 300 508H250C222 508 200 486 200 458Z " transform="matrix(-0.1343406430917446,-0.4685014991130271,0.4685014991130271,-0.1343406430917446,57.298936701344076,665.0119053915694)" opacity="0.75"></path><path d="M295 268H345C373 268 395 290 395 318H345C317 318 295 296 295 268Z " transform="matrix(-0.23322124145511378,-0.40395103960454554,0.40395103960454554,-0.23322124145511378,307.1036736978824,500.69693240991654)" opacity="0.72"></path><path d="M618 540H668C696 540 718 562 718 590H668C640 590 618 568 618 540Z " transform="matrix(-0.3830539845813393,-0.04703311529892784,0.04703311529892784,-0.3830539845813393,897.3063515564406,812.8436223081407)" filter="url(#llleaves-blur-2)" opacity="0.59"></path><path d="M451 397H501C529 397 551 419 551 447H501C473 447 451 425 451 397Z " transform="matrix(-0.34520809364150107,-0.2601329570918176,0.2601329570918176,-0.34520809364150107,564.173147021645,698.0044270197141)" opacity="0.66"></path><path d="M531 114H581C609 114 631 136 631 164H581C553 164 531 142 531 114Z " transform="matrix(-0.37951117493522923,-0.15333246767134662,0.15333246767134662,-0.37951117493522923,780.1827796310508,280.8382170330492)" opacity="0.63"></path><path d="M704 365H754C782 365 804 387 804 415H754C726 415 704 393 704 365Z " transform="matrix(-0.34040528417256866,0.09121132099332671,-0.09121132099332671,-0.34040528417256866,1046.2379994535142,453.98472479833345)" filter="url(#llleaves-blur-2)" opacity="0.54"></path><path d="M702 128H752C780 128 802 150 802 178H752C724 178 702 156 702 128Z " transform="matrix(-0.3403759083932654,0.09120344977698536,-0.09120344977698536,-0.3403759083932654,1021.9168109276143,136.4925197518766)" filter="url(#llleaves-blur-2)" opacity="0.54"></path><path d="M361 432H411C439 432 461 454 461 482H411C383 482 361 460 361 432Z " transform="matrix(-0.2849455595886792,-0.3518784613033493,0.3518784613033493,-0.2849455595886792,367.3041681753165,731.8421683277029)" opacity="0.70"></path><path d="M225 197H275C303 197 325 219 325 247H275C247 247 225 225 225 197Z " transform="matrix(-0.1721867540883599,-0.4485618301607065,0.4485618301607065,-0.1721867540883599,222.77063107862213,383.57996270181025)" opacity="0.74"></path><path d="M-12 120H38C66 120 88 142 88 170H38C10 170 -12 148 -12 120Z " transform="matrix(-0.1499991097700465,-0.4616497907302155,0.4616497907302155,-0.1499991097700465,-23.239253484619482,184.29256296440494)" opacity="0.75"></path></g></svg>',reflection:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="rrreflection-grad"><stop stop-color="hsla(0, 0%, 75%, 1.00)" stop-opacity="1" offset="45%"></stop><stop stop-color="hsla(0, 0%, 36%, 1.00)" stop-opacity="1" offset="100%"></stop></linearGradient><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="rrreflection-grad-2"><stop stop-color="hsla(0, 0%, 36%, 1.00)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsla(0, 0%, 75%, 1.00)" stop-opacity="1" offset="45%"></stop></linearGradient><linearGradient gradientTransform="rotate(270)" x1="50%" y1="0%" x2="50%" y2="100%" id="rrreflection-grad-3"><stop stop-color="hsla(0, 0%, 75%, 1.00)" stop-opacity="1" offset="45%"></stop><stop stop-color="hsla(0, 0%, 36%, 1.00)" stop-opacity="1" offset="100%"></stop></linearGradient><linearGradient gradientTransform="rotate(270)" x1="50%" y1="0%" x2="50%" y2="100%" id="rrreflection-grad-4"><stop stop-color="hsla(0, 0%, 36%, 1.00)" stop-opacity="1" offset="0%"></stop><stop stop-color="hsla(0, 0%, 75%, 1.00)" stop-opacity="1" offset="45%"></stop></linearGradient></defs><g stroke-width="2" stroke="url(#rrreflection-grad)" fill="none"><circle r="375" cx="50%" cy="0"></circle><circle r="362.5" cx="50%" cy="0"></circle><circle r="350" cx="50%" cy="0"></circle><circle r="337.5" cx="50%" cy="0"></circle><circle r="325" cx="50%" cy="0"></circle><circle r="312.5" cx="50%" cy="0"></circle><circle r="300" cx="50%" cy="0"></circle><circle r="287.5" cx="50%" cy="0"></circle><circle r="275" cx="50%" cy="0"></circle><circle r="262.5" cx="50%" cy="0"></circle><circle r="250" cx="50%" cy="0"></circle><circle r="237.5" cx="50%" cy="0"></circle><circle r="225" cx="50%" cy="0"></circle><circle r="212.5" cx="50%" cy="0"></circle><circle r="200" cx="50%" cy="0"></circle><circle r="187.5" cx="50%" cy="0"></circle><circle r="175" cx="50%" cy="0"></circle><circle r="162.5" cx="50%" cy="0"></circle><circle r="150" cx="50%" cy="0"></circle><circle r="137.5" cx="50%" cy="0"></circle><circle r="125" cx="50%" cy="0"></circle><circle r="112.5" cx="50%" cy="0"></circle><circle r="100" cx="50%" cy="0"></circle><circle r="87.5" cx="50%" cy="0"></circle><circle r="75" cx="50%" cy="0"></circle><circle r="62.5" cx="50%" cy="0"></circle><circle r="50" cx="50%" cy="0"></circle><circle r="37.5" cx="50%" cy="0"></circle><circle r="25" cx="50%" cy="0"></circle><circle r="12.5" cx="50%" cy="0"></circle></g><g stroke-width="2" stroke="url(#rrreflection-grad-2)" fill="none"><circle r="375" cx="50%" cy="100%"></circle><circle r="362.5" cx="50%" cy="100%"></circle><circle r="350" cx="50%" cy="100%"></circle><circle r="337.5" cx="50%" cy="100%"></circle><circle r="325" cx="50%" cy="100%"></circle><circle r="312.5" cx="50%" cy="100%"></circle><circle r="300" cx="50%" cy="100%"></circle><circle r="287.5" cx="50%" cy="100%"></circle><circle r="275" cx="50%" cy="100%"></circle><circle r="262.5" cx="50%" cy="100%"></circle><circle r="250" cx="50%" cy="100%"></circle><circle r="237.5" cx="50%" cy="100%"></circle><circle r="225" cx="50%" cy="100%"></circle><circle r="212.5" cx="50%" cy="100%"></circle><circle r="200" cx="50%" cy="100%"></circle><circle r="187.5" cx="50%" cy="100%"></circle><circle r="175" cx="50%" cy="100%"></circle><circle r="162.5" cx="50%" cy="100%"></circle><circle r="150" cx="50%" cy="100%"></circle><circle r="137.5" cx="50%" cy="100%"></circle><circle r="125" cx="50%" cy="100%"></circle><circle r="112.5" cx="50%" cy="100%"></circle><circle r="100" cx="50%" cy="100%"></circle><circle r="87.5" cx="50%" cy="100%"></circle><circle r="75" cx="50%" cy="100%"></circle><circle r="62.5" cx="50%" cy="100%"></circle><circle r="50" cx="50%" cy="100%"></circle><circle r="37.5" cx="50%" cy="100%"></circle><circle r="25" cx="50%" cy="100%"></circle><circle r="12.5" cx="50%" cy="100%"></circle></g><g stroke-width="2" stroke="url(#rrreflection-grad-3)" fill="none"><circle r="375" cx="0" cy="50%"></circle><circle r="362.5" cx="0" cy="50%"></circle><circle r="350" cx="0" cy="50%"></circle><circle r="337.5" cx="0" cy="50%"></circle><circle r="325" cx="0" cy="50%"></circle><circle r="312.5" cx="0" cy="50%"></circle><circle r="300" cx="0" cy="50%"></circle><circle r="287.5" cx="0" cy="50%"></circle><circle r="275" cx="0" cy="50%"></circle><circle r="262.5" cx="0" cy="50%"></circle><circle r="250" cx="0" cy="50%"></circle><circle r="237.5" cx="0" cy="50%"></circle><circle r="225" cx="0" cy="50%"></circle><circle r="212.5" cx="0" cy="50%"></circle><circle r="200" cx="0" cy="50%"></circle><circle r="187.5" cx="0" cy="50%"></circle><circle r="175" cx="0" cy="50%"></circle><circle r="162.5" cx="0" cy="50%"></circle><circle r="150" cx="0" cy="50%"></circle><circle r="137.5" cx="0" cy="50%"></circle><circle r="125" cx="0" cy="50%"></circle><circle r="112.5" cx="0" cy="50%"></circle><circle r="100" cx="0" cy="50%"></circle><circle r="87.5" cx="0" cy="50%"></circle><circle r="75" cx="0" cy="50%"></circle><circle r="62.5" cx="0" cy="50%"></circle><circle r="50" cx="0" cy="50%"></circle><circle r="37.5" cx="0" cy="50%"></circle><circle r="25" cx="0" cy="50%"></circle><circle r="12.5" cx="0" cy="50%"></circle></g><g stroke-width="2" stroke="url(#rrreflection-grad-4)" fill="none"><circle r="375" cx="100%" cy="50%"></circle><circle r="362.5" cx="100%" cy="50%"></circle><circle r="350" cx="100%" cy="50%"></circle><circle r="337.5" cx="100%" cy="50%"></circle><circle r="325" cx="100%" cy="50%"></circle><circle r="312.5" cx="100%" cy="50%"></circle><circle r="300" cx="100%" cy="50%"></circle><circle r="287.5" cx="100%" cy="50%"></circle><circle r="275" cx="100%" cy="50%"></circle><circle r="262.5" cx="100%" cy="50%"></circle><circle r="250" cx="100%" cy="50%"></circle><circle r="237.5" cx="100%" cy="50%"></circle><circle r="225" cx="100%" cy="50%"></circle><circle r="212.5" cx="100%" cy="50%"></circle><circle r="200" cx="100%" cy="50%"></circle><circle r="187.5" cx="100%" cy="50%"></circle><circle r="175" cx="100%" cy="50%"></circle><circle r="162.5" cx="100%" cy="50%"></circle><circle r="150" cx="100%" cy="50%"></circle><circle r="137.5" cx="100%" cy="50%"></circle><circle r="125" cx="100%" cy="50%"></circle><circle r="112.5" cx="100%" cy="50%"></circle><circle r="100" cx="100%" cy="50%"></circle><circle r="87.5" cx="100%" cy="50%"></circle><circle r="75" cx="100%" cy="50%"></circle><circle r="62.5" cx="100%" cy="50%"></circle><circle r="50" cx="100%" cy="50%"></circle><circle r="37.5" cx="100%" cy="50%"></circle><circle r="25" cx="100%" cy="50%"></circle><circle r="12.5" cx="100%" cy="50%"></circle></g></svg>',spot:'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 800"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="ssspill-grad"><stop stop-color="hsl(0, 0%, 77%)" stop-opacity="1" offset="45%"></stop><stop stop-color="hsl(0, 0%, 37%)" stop-opacity="1" offset="100%"></stop></linearGradient><filter id="ssspot-filter" x="-20%" y="-20%" width="140%" height="140%" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">\n <feTurbulence type="turbulence" baseFrequency="0.022 0.218" numOctaves="2" seed="87" stitchTiles="stitch" x="0%" y="0%" width="100%" height="100%" result="turbulence"></feTurbulence>\n <feGaussianBlur stdDeviation="0 3" x="0%" y="0%" width="100%" height="100%" in="turbulence" edgeMode="duplicate" result="blur"></feGaussianBlur>\n <feDisplacementMap in="SourceGraphic" in2="blur" scale="32" xChannelSelector="R" yChannelSelector="B" x="0%" y="0%" width="100%" height="100%" result="displacementMap"></feDisplacementMap>\n </filter></defs><rect width="100%" height="100%" fill="transparent"></rect><g fill="url(#ssspill-grad)" filter="url(#ssspot-filter)"><circle r="5.064637581237235" cx="136.70038490450102" cy="322.87185543706664" opacity="0.3244644128181912"></circle><circle r="4.770509280668091" cx="421.5778568832103" cy="710.1043840075182" opacity="0.64696020927194"></circle><circle r="9.835882218732523" cx="617.769473021036" cy="477.12597866641005" opacity="0.38566873988271266"></circle><circle r="3.8535350454815425" cx="714.2776046404942" cy="33.31004964351794" opacity="0.2614721505518711"></circle><circle r="9.275104770978938" cx="289.96964528808513" cy="763.8151793066729" opacity="0.5763166430882171"></circle><circle r="4.576124000103315" cx="269.54226794832033" cy="70.2515553635124" opacity="0.6076606141159029"></circle><circle r="5.790178959599836" cx="543.8175770109568" cy="642.6740590662263" opacity="0.7495523452366633"></circle><circle r="7.743472686206912" cx="26.28445121652266" cy="710.9477237956756" opacity="0.4736425784619894"></circle><circle r="9.962257889027647" cx="435.43616477391015" cy="422.7310547177035" opacity="0.11755425746822348"></circle><circle r="8.427846223093308" cx="247.97371238042658" cy="646.5264858303534" opacity="0.9237689569422886"></circle><circle r="6.376053396233492" cx="437.3532320238557" cy="282.8082413056359" opacity="0.8275546647641976"></circle><circle r="6.426153923676907" cx="600.1387231167249" cy="206.30940426901802" opacity="0.9329175951848773"></circle><circle r="8.1361382836631" cx="728.2950255754564" cy="741.9924134064652" opacity="0.4754630399750627"></circle><circle r="8.115993295395503" cx="311.7329464581275" cy="410.6170333522057" opacity="0.32029393131985895"></circle><circle r="5.585880444787948" cx="356.448847168845" cy="186.84920078681031" opacity="0.5362850227042624"></circle><circle r="7.686171374960393" cx="542.6814890035384" cy="596.5955082593058" opacity="0.9889592008005293"></circle><circle r="6.0805413136994435" cx="200.86886332492335" cy="765.0786433671055" opacity="0.8159336722560525"></circle><circle r="3.5937712425105035" cx="351.6463296369334" cy="237.757870499709" opacity="0.8228926231857105"></circle><circle r="9.460629885360593" cx="597.9711464679282" cy="755.6512018500514" opacity="0.7472534378018393"></circle><circle r="3.8703858366846196" cx="639.9566849364124" cy="541.6400039826909" opacity="0.8139164656582928"></circle><circle r="6.694319237705958" cx="253.11832734221542" cy="400.1844551974358" opacity="0.7832071357998105"></circle><circle r="6.595693971351071" cx="753.5175848074468" cy="360.10145832528036" opacity="0.6628515513662742"></circle><circle r="8.034614380701655" cx="50.424967780332985" cy="498.75536380435994" opacity="0.8752641293902157"></circle><circle r="4.639875187239055" cx="642.4825231771774" cy="765.0822769729735" opacity="0.7076909712588525"></circle><circle r="5.664347712591181" cx="747.2762567308683" cy="402.6268518939984" opacity="0.9237665847162766"></circle><circle r="6.410009271293615" cx="434.059741877686" cy="625.8570695408984" opacity="0.3645156881551104"></circle><circle r="2.8374735583139223" cx="470.7093209606608" cy="96.67857735393873" opacity="0.37825548954517174"></circle><circle r="8.63613829429884" cx="693.1548556178711" cy="60.93760993321313" opacity="0.3787680395096509"></circle><circle r="10.718949149858375" cx="129.58240675168977" cy="543.2334185586851" opacity="0.5686054221250393"></circle><circle r="5.692821218191993" cx="777.4370464725866" cy="113.50430653814902" opacity="0.5628795557985314"></circle><circle r="6.317980093988491" cx="427.09578627556584" cy="325.27808530674434" opacity="0.2736182770815919"></circle><circle r="7.88712208824338" cx="631.7079924942394" cy="231.4124721715011" opacity="0.5224398002072077"></circle><circle r="4.357756446711518" cx="323.29943113334986" cy="222.52592917361653" opacity="0.5169797967844608"></circle><circle r="5.493888744447794" cx="665.8598581579554" cy="787.1033430906083" opacity="0.5223214116744193"></circle><circle r="7.517853476842912" cx="116.30017536838176" cy="62.64032909174142" opacity="0.39904602328708183"></circle><circle r="5.023844287095297" cx="777.8207493455711" cy="651.9808126388087" opacity="0.5269737774854121"></circle><circle r="8.261546199699792" cx="397.4726409012115" cy="772.479339096511" opacity="0.9552392165572949"></circle><circle r="6.975305699615512" cx="530.4043083657534" cy="56.52801107881783" opacity="0.3737523316596554"></circle><circle r="6.314252516004984" cx="581.0426048998821" cy="263.0088076423418" opacity="0.9313945380497066"></circle><circle r="5.586018293179707" cx="781.7115314667565" cy="26.978659048420653" opacity="0.9917420517714075"></circle><circle r="5.189868525318406" cx="391.04754444795367" cy="638.072917264706" opacity="0.23302740559333018"></circle><circle r="8.582658615723016" cx="673.9576138616025" cy="19.933809505711753" opacity="0.6701279200139074"></circle><circle r="6.357493540079289" cx="123.90669631373837" cy="488.0247324258988" opacity="0.7642331101641929"></circle><circle r="4.948087264939262" cx="18.550629536363477" cy="486.1339794117908" opacity="0.5068299780740904"></circle><circle r="7.022256171754835" cx="635.7889384085983" cy="18.928934527753363" opacity="0.5995140994419672"></circle><circle r="8.069011145691581" cx="743.2055937818895" cy="157.13026366233964" opacity="0.6781326623315344"></circle><circle r="6.318855156144187" cx="365.4272171137583" cy="623.550937663551" opacity="0.40052734307106186"></circle><circle r="13.109566677482693" cx="155.728208130776" cy="698.7011028175236" opacity="0.9863651501714024"></circle><circle r="5.529714667429072" cx="124.00039618952381" cy="600.6005872192408" opacity="0.7013424113614146"></circle><circle r="8.291190685289456" cx="193.1740017478093" cy="20.389839256964233" opacity="0.714863193623361"></circle><circle r="11.307598752001851" cx="104.73007892158189" cy="154.31131625731152" opacity="0.3971388164145284"></circle><circle r="6.652038656178473" cx="677.4236517398409" cy="240.16424118897612" opacity="0.5813498863568359"></circle><circle r="4.711492236104993" cx="652.3416903952999" cy="52.88691210667636" opacity="0.16941983937584826"></circle><circle r="8.962484493393578" cx="304.0208990989756" cy="54.13048634779509" opacity="0.27134575835485986"></circle><circle r="4.966902895068733" cx="738.5670895322293" cy="287.27014134587836" opacity="0.11454964467488238"></circle><circle r="6.323754221490008" cx="579.3035561807245" cy="395.58836306868585" opacity="0.24775327347795462"></circle><circle r="8.852252656839175" cx="617.9455240813732" cy="266.9400079907079" opacity="0.6568129412905462"></circle><circle r="8.908371115857683" cx="271.6816211909598" cy="595.0317907157486" opacity="0.9140257685401563"></circle><circle r="7.414090408218658" cx="61.09803585294196" cy="135.3874610327573" opacity="0.12830547740693263"></circle><circle r="4.778558993493531" cx="194.46771390883075" cy="161.95221194961363" opacity="0.12397978601400744"></circle><circle r="7.659897065433649" cx="575.3511198138068" cy="721.6016229296499" opacity="0.9252443286863737"></circle><circle r="7.918703741937398" cx="642.592835831386" cy="376.3476613292704" opacity="0.7458626899189483"></circle><circle r="7.303172468799648" cx="660.246072259717" cy="699.1013098876236" opacity="0.9706673669625604"></circle><circle r="7.525523183578668" cx="18.78126103844683" cy="133.38925884694171" opacity="0.1191121931650569"></circle><circle r="8.335598043144977" cx="62.75622479877466" cy="397.28202764052537" opacity="0.630801632348704"></circle><circle r="8.011458092893253" cx="563.9361170956951" cy="160.56447580059188" opacity="0.48558490403557986"></circle><circle r="3.775704650284953" cx="473.97878657322536" cy="73.40175913218401" opacity="0.7271771570579831"></circle><circle r="5.642380230497978" cx="19.659242202124315" cy="398.65609444270353" opacity="0.6794944416150649"></circle><circle r="5.242677014793258" cx="761.8749859220591" cy="480.222787564896" opacity="0.5555133978484065"></circle><circle r="7.924448092034644" cx="216.56698120908683" cy="706.8250386728305" opacity="0.6411405747178552"></circle><circle r="8.189379214550701" cx="19.299531103793683" cy="181.85815719434925" opacity="0.1571764844018614"></circle><circle r="6.720833886137405" cx="159.2170073257431" cy="608.3457020201118" opacity="0.14584693725463327"></circle><circle r="6.700089021795847" cx="45.36211961875453" cy="437.7363468735674" opacity="0.15320439706470876"></circle><circle r="5.076367600327887" cx="145.6558433554847" cy="402.34667657085146" opacity="0.6415914983434743"></circle><circle r="7.764713064291891" cx="182.11217931562547" cy="556.2539307705125" opacity="0.4561826790960456"></circle><circle r="7.015909935162834" cx="233.76279025712103" cy="596.9618871495659" opacity="0.8522721891082585"></circle><circle r="5.033587564414365" cx="507.51260875730514" cy="290.1100331232045" opacity="0.6992860853244991"></circle><circle r="6.457614954817046" cx="167.41100229823937" cy="266.29948466799095" opacity="0.8589524200842407"></circle><circle r="7.045250825416426" cx="706.6125246834927" cy="428.4540986079489" opacity="0.8025516717085965"></circle><circle r="6.175537037846302" cx="73.50771670302261" cy="356.53026431486916" opacity="0.6353172914954376"></circle><circle r="7.007463818812145" cx="501.31002617372445" cy="668.7500771294677" opacity="0.22350388742308003"></circle><circle r="12.41177643663164" cx="713.4362647548354" cy="112.87292617267158" opacity="0.9717727645817735"></circle><circle r="4.385321771053903" cx="635.6516015840753" cy="738.3107818387881" opacity="0.5643270958015024"></circle><circle r="8.719745635192822" cx="71.17965372410578" cy="68.63043775367211" opacity="0.41513293252376504"></circle><circle r="7.273486074685287" cx="25.12109085467052" cy="650.4161398482097" opacity="0.9731295239377785"></circle><circle r="8.530296899115285" cx="671.4863297330435" cy="664.153293820015" opacity="0.3217013016935649"></circle><circle r="8.458185260931904" cx="241.8285621737752" cy="322.2479343878232" opacity="0.8087240910494169"></circle><circle r="6.4435249084510255" cx="260.36035586683283" cy="696.6006708382541" opacity="0.22377431584057123"></circle><circle r="7.980206118764022" cx="687.146367921709" cy="154.88984819966385" opacity="0.582047311383192"></circle><circle r="5.086290093904966" cx="76.64337159618167" cy="300.57291310774013" opacity="0.20286003186761248"></circle><circle r="6.545663374129814" cx="504.70233957204465" cy="472.90164363843746" opacity="0.23647084027603357"></circle><circle r="5.2395977026094736" cx="56.75620187947368" cy="270.0118960837851" opacity="0.8435471714830057"></circle><circle r="5.3155842969018545" cx="188.13072638749298" cy="303.0486698924277" opacity="0.5394693812511525"></circle><circle r="8.734600651696763" cx="227.18056489445013" cy="274.0407447293409" opacity="0.7224956531192559"></circle><circle r="8.611406000306744" cx="760.8488410711525" cy="690.0083221600172" opacity="0.5092992532706102"></circle><circle r="7.439660037892503" cx="450.5927246909684" cy="731.7323204596263" opacity="0.7884946421942951"></circle><circle r="5.52246549737656" cx="748.4889853192769" cy="785.4741355304044" opacity="0.992843188453467"></circle><circle r="5.299417326668993" cx="395.9167132452262" cy="594.3519312863972" opacity="0.19909122341904079"></circle><circle r="3.1636870468347182" cx="712.8807615709318" cy="9.572962955560795" opacity="0.3501577379211317"></circle><circle r="11.669242647184692" cx="638.2318799443445" cy="431.2551344436883" opacity="0.6350449744738439"></circle><circle r="9.756375349577748" cx="734.9903194248748" cy="240.34137568653196" opacity="0.45015445927841713"></circle><circle r="9.417651781130118" cx="43.46634711092323" cy="334.52121543731636" opacity="0.5692814587665942"></circle><circle r="6.641234502006504" cx="405.5360959872538" cy="279.6403618396718" opacity="0.37282764216476705"></circle><circle r="4.81443572395604" cx="462.7142763327462" cy="161.20464683416287" opacity="0.7354250432759134"></circle><circle r="7.835313403018421" cx="189.54904177382036" cy="658.4469221445786" opacity="0.9703663768540637"></circle><circle r="7.397865159553385" cx="438.4878598179197" cy="587.404057328699" opacity="0.8665894748796236"></circle><circle r="7.246774360001709" cx="777.0086746411627" cy="322.39470060870593" opacity="0.8677864953038456"></circle><circle r="8.571416326075788" cx="268.4955507533609" cy="118.5112174611568" opacity="0.5125198973177103"></circle><circle r="6.550232535320235" cx="347.4065254857393" cy="714.9095373206203" opacity="0.30326018868288807"></circle><circle r="7.2638482416744505" cx="127.01275272120493" cy="284.67648863992684" opacity="0.2202297491907314"></circle><circle r="4.385600303169796" cx="177.58656906044584" cy="355.6083664576744" opacity="0.9368346273905513"></circle><circle r="8.415810404622682" cx="721.1896659307722" cy="318.4489767955445" opacity="0.9051474942608474"></circle><circle r="5.647692726105001" cx="81.33014284599874" cy="452.37737556369234" opacity="0.43625622027050137"></circle><circle r="7.43207370843628" cx="365.46368259143884" cy="137.22267986245183" opacity="0.6102022150903069"></circle><circle r="7.584322434541415" cx="465.51751907754686" cy="513.4225453236667" opacity="0.3964668128860708"></circle><circle r="11.071405605117215" cx="382.00274059366166" cy="32.78184556890254" opacity="0.9496845569277172"></circle><circle r="4.258642968726291" cx="576.3375898792762" cy="784.3975182484722" opacity="0.3802314517095432"></circle><circle r="7.206046893007546" cx="648.1911963743094" cy="630.0317865567177" opacity="0.6854828506896351"></circle><circle r="6.841254534234591" cx="198.96778471322725" cy="463.11331458407545" opacity="0.3098770528061461"></circle><circle r="8.101453816290187" cx="16.02665298974565" cy="241.69491139103863" opacity="0.43959118412700315"></circle><circle r="8.098542520990984" cx="303.5714509666179" cy="95.43908133226675" opacity="0.5699354732523207"></circle><circle r="5.257219093193318" cx="521.0660934001576" cy="164.36065205489834" opacity="0.12165113724905458"></circle><circle r="7.917793785283358" cx="425.4314151589354" cy="542.2504804535222" opacity="0.2411785813882599"></circle><circle r="7.514768574567557" cx="347.6406486374675" cy="279.2241092428677" opacity="0.580821554136325"></circle><circle r="7.456898142640802" cx="778.678250985459" cy="274.91323405472656" opacity="0.2332113699535817"></circle><circle r="7.962855936735491" cx="403.4583822591733" cy="501.31296254830715" opacity="0.7965385982707839"></circle><circle r="6.598990145840922" cx="666.2319968016682" cy="478.19505915635585" opacity="0.7869514416960721"></circle><circle r="5.609210184199726" cx="331.16809498139986" cy="480.24606795030024" opacity="0.7381041857594369"></circle><circle r="5.0400895893404805" cx="530.9391850992259" cy="784.5088082515726" opacity="0.3370161232724904"></circle><circle r="8.775750183206744" cx="341.1401234065241" cy="780.0423237685471" opacity="0.21759236764779213"></circle><circle r="5.443762472501068" cx="785.2749674308429" cy="378.4659397610304" opacity="0.15500468006955"></circle><circle r="9.840443550869185" cx="731.2901538576398" cy="629.3343193428204" opacity="0.23826202765791848"></circle><circle r="8.016449286791318" cx="744.7847260911549" cy="445.88132899340377" opacity="0.44495781177648486"></circle><circle r="9.78606262778629" cx="190.29012374812459" cy="71.09207622435906" opacity="0.6783865279596056"></circle><circle r="4.5088012195923985" cx="765.1668566388765" cy="73.56018757065955" opacity="0.6572731552918818"></circle><circle r="3.830462363718081" cx="194.2666648713141" cy="331.96233923153073" opacity="0.9262254037497483"></circle><circle r="6.420573218435653" cx="227.04454407121634" cy="180.73959569001647" opacity="0.15635228550743108"></circle><circle r="10.048495574623413" cx="489.97906907957827" cy="775.9122773777985" opacity="0.1333455871040725"></circle><circle r="6.375799251176586" cx="223.2097966507663" cy="108.87544297682496" opacity="0.7091031625905038"></circle><circle r="6.702192195667295" cx="199.51934129338377" cy="388.3995274328202" opacity="0.7953756655167288"></circle><circle r="7.089020018202121" cx="764.6629774509177" cy="520.7846085897828" opacity="0.11741534208229731"></circle><circle r="6.945432991899392" cx="517.4148530565933" cy="386.9052336901037" opacity="0.5029808934903003"></circle><circle r="3.7610079124285645" cx="614.2204254249345" cy="678.6738035978748" opacity="0.43068054170738657"></circle><circle r="9.845705807279812" cx="347.2476104268483" cy="79.35116296138591" opacity="0.18344061140456136"></circle><circle r="7.365524316325441" cx="538.6221549045497" cy="304.17293433014567" opacity="0.4422680469993068"></circle><circle r="7.5519784767536375" cx="454.0794068354004" cy="466.90037893051567" opacity="0.9526565915164886"></circle><circle r="7.940321515420564" cx="727.3874314694827" cy="67.37195155258495" opacity="0.9269168448925449"></circle><circle r="7.57128082143249" cx="123.37805349295293" cy="650.7400058423701" opacity="0.6953358634412146"></circle><circle r="6.852910293292272" cx="92.84934360071843" cy="584.2871217320823" opacity="0.10049436500544454"></circle><circle r="6.193381977807996" cx="778.0107657186678" cy="767.8897734586259" opacity="0.393816295923638"></circle><circle r="6.081295115168796" cx="578.206258551679" cy="685.8387064410873" opacity="0.7116662378201754"></circle><circle r="7.338058530672943" cx="59.52742853467022" cy="235.94532090390942" opacity="0.8157680371784527"></circle><circle r="8.631520672934123" cx="577.3241515106093" cy="619.4660632373211" opacity="0.744076356871003"></circle><circle r="4.441467378341081" cx="718.2604664837716" cy="775.0818399470976" opacity="0.8258049203644658"></circle><circle r="7.910908171872279" cx="309.1297521597622" cy="262.5885661959638" opacity="0.37681313775814507"></circle><circle r="3.948541282676593" cx="613.99183283453" cy="616.1695721072304" opacity="0.6775104678794266"></circle><circle r="7.663849496810265" cx="443.886010803943" cy="775.4468268012772" opacity="0.4277463578883335"></circle><circle r="5.07974683092374" cx="602.5235269103167" cy="21.873685804905875" opacity="0.8348189951463489"></circle><circle r="3.651193840247742" cx="572.2219428829699" cy="44.71085087882149" opacity="0.604608220700013"></circle><circle r="7.83397962462907" cx="451.0235279707316" cy="43.359594808469474" opacity="0.2959744863451549"></circle><circle r="6.897514650742886" cx="666.4795123026872" cy="85.79870297388403" opacity="0.9248420699989549"></circle><circle r="8.473483691353719" cx="72.16784946041642" cy="626.4678962356389" opacity="0.7367877845476904"></circle><circle r="9.318943119273058" cx="317.0606551612133" cy="186.03448806256534" opacity="0.21265668606032218"></circle><circle r="6.803174603223332" cx="85.1364001370328" cy="509.2107369488916" opacity="0.7315975815840046"></circle><circle r="4.820128241443864" cx="493.76954305074304" cy="137.80657022159926" opacity="0.8734521981100677"></circle><circle r="7.5143881602916665" cx="345.9531291016979" cy="438.17143003920256" opacity="0.10519611723775196"></circle><circle r="6.6964725812977655" cx="601.5958678580321" cy="97.75591153720833" opacity="0.8916886150283613"></circle><circle r="9.067629460497889" cx="697.493888690139" cy="273.50741218084005" opacity="0.6979836084864585"></circle><circle r="7.094497902667049" cx="278.91049166995293" cy="559.2502710979127" opacity="0.16388848067403067"></circle><circle r="9.091854738661976" cx="234.11255819932688" cy="216.53295008390145" opacity="0.4442701415076721"></circle><circle r="6.177739190582818" cx="536.5543994741591" cy="496.5704040722936" opacity="0.6324162108603771"></circle><circle r="4.000303704868288" cx="662.048322604047" cy="213.72717929158082" opacity="0.24020068271825237"></circle><circle r="9.071451652950493" cx="570.885938922287" cy="331.67959348660133" opacity="0.11429652978058089"></circle><circle r="6.091326213541136" cx="427.36363320419144" cy="20.619356459861926" opacity="0.9116219145515876"></circle><circle r="6.700289250626518" cx="782.8847582527836" cy="563.9747324651512" opacity="0.26437965040417044"></circle><circle r="11.815595066975725" cx="676.7258073744119" cy="334.2891672438532" opacity="0.7984261776035365"></circle><circle r="6.146139314073305" cx="182.22996254696747" cy="428.1450227149034" opacity="0.4261393283305397"></circle><circle r="7.026227597645121" cx="332.8667737493708" cy="740.5359219462022" opacity="0.9912874850070633"></circle><circle r="6.341040793115079" cx="237.24427881130435" cy="360.2557754840087" opacity="0.11435698543785276"></circle><circle r="7.897572331960999" cx="488.2694241736434" cy="726.6283176452023" opacity="0.6456494936794189"></circle><circle r="5.009322826272824" cx="237.41275142305582" cy="74.18193792513749" opacity="0.484491037306102"></circle><circle r="11.748204580655093" cx="475.148258642383" cy="326.73600584588354" opacity="0.8579694684331344"></circle><circle r="8.007999662071791" cx="232.43184724314204" cy="494.74613435951284" opacity="0.4270800149346551"></circle><circle r="5.144080347704373" cx="684.4597047685228" cy="198.08144642106654" opacity="0.6625430511684035"></circle><circle r="6.841637603371597" cx="13.732722692536962" cy="587.4456497226386" opacity="0.14399061466455532"></circle><circle r="8.695810194937494" cx="563.6089337747048" cy="76.03347681528042" opacity="0.5903380073328596"></circle><circle r="8.358182259588808" cx="546.3049710281766" cy="754.6606402753853" opacity="0.33577995371720093"></circle><circle r="7.684571423357671" cx="510.89155054572655" cy="579.7566131627286" opacity="0.16765831156439895"></circle><circle r="7.607605772755072" cx="292.8529837328239" cy="714.9212917086336" opacity="0.7513249787196437"></circle><circle r="10.830826703385384" cx="82.03086955409495" cy="678.1134128411442" opacity="0.9850675474291201"></circle><circle r="10.075112323614597" cx="272.53718396784404" cy="231.70218916390877" opacity="0.261195501536672"></circle><circle r="6.937254385815201" cx="329.9755516481212" cy="360.67267615116936" opacity="0.9672342341613264"></circle><circle r="5.8062031743095" cx="150.81602969098896" cy="37.606206386053586" opacity="0.37073096886360635"></circle><circle r="5.365502762187068" cx="197.3898634494079" cy="241.56176156198487" opacity="0.12480250757491014"></circle><circle r="7.453250036562872" cx="116.6448573243729" cy="241.96627129818742" opacity="0.5279472088724734"></circle><circle r="7.6370766361660065" cx="17.075523735313915" cy="770.3976703722925" opacity="0.8045533174309203"></circle><circle r="9.351020025966388" cx="359.3464793869413" cy="574.550320359675" opacity="0.5045591108742998"></circle><circle r="5.428426298734818" cx="586.3865194073447" cy="512.9242725898599" opacity="0.45364143823491865"></circle><circle r="8.277099346575536" cx="414.98323455643003" cy="154.99917898783352" opacity="0.2358574604803521"></circle><circle r="8.236449539147062" cx="514.0194737051015" cy="92.4184147250529" opacity="0.3650180007501648"></circle><circle r="8.921089518389609" cx="305.5490866421908" cy="613.6233679733137" opacity="0.6262185561133695"></circle><circle r="7.4254805345875905" cx="373.9671369868551" cy="343.7457063459892" opacity="0.8150762343712149"></circle><circle r="4.31372640000137" cx="344.507635081422" cy="512.9104750601039" opacity="0.43575105068137043"></circle><circle r="9.763776844394606" cx="779.2948655591113" cy="178.24642622510825" opacity="0.5581991663474417"></circle><circle r="7.9195060120859075" cx="679.8610852867392" cy="725.553568421376" opacity="0.18333197555848535"></circle><circle r="8.153792885717424" cx="463.94119231186386" cy="377.56833737562704" opacity="0.5585564258927173"></circle><circle r="6.9687606315667185" cx="316.727995987873" cy="564.1358538496379" opacity="0.8458275244666489"></circle><circle r="4.778356768180751" cx="422.9479312591002" cy="663.1534342123479" opacity="0.12930080546412862"></circle><circle r="6.910541121943013" cx="281.5224010112568" cy="21.32612038567043" opacity="0.858792653083427"></circle><circle r="3.898884844928625" cx="607.3348057860397" cy="651.3101328644498" opacity="0.3901069769711024"></circle><circle r="6.363927774432611" cx="502.9516887137163" cy="430.82726684299485" opacity="0.7265873314145073"></circle><circle r="6.426591613339324" cx="365.31367611000445" cy="488.8812695309712" opacity="0.542556584370511"></circle><circle r="7.354935398936647" cx="535.7602366591138" cy="121.13169878413774" opacity="0.4221391004609455"></circle><circle r="4.29224140063669" cx="377.61487386724946" cy="695.7381610213306" opacity="0.7910058185948741"></circle><circle r="4.982780223522146" cx="162.7516700190924" cy="758.4634262318892" opacity="0.30466022694681466"></circle><circle r="5.44653463990577" cx="508.4722814766893" cy="530.335171051675" opacity="0.11776787142863615"></circle><circle r="4.899124596728283" cx="374.938587881358" cy="244.44364871847708" opacity="0.6218839508311164"></circle><circle r="11.303892575850277" cx="700.5111038963901" cy="554.0222000804632" opacity="0.9505781207729541"></circle><circle r="6.849848873828087" cx="720.2278280406003" cy="197.8628630653738" opacity="0.1543038984731945"></circle><circle r="4.830200944843276" cx="331.74071129568983" cy="535.3215099062725" opacity="0.8485033550983442"></circle><circle r="8.670902942320192" cx="183.31797638149158" cy="206.08088017387672" opacity="0.3960026346280683"></circle><circle r="5.981293132012777" cx="605.9837375817826" cy="143.31067738284307" opacity="0.3870834244328737"></circle><circle r="7.262463713129081" cx="296.0004246850335" cy="659.2936338065474" opacity="0.8209872301792466"></circle><circle r="9.467757900644287" cx="312.88975365986244" cy="138.42412452133593" opacity="0.22893337600097344"></circle><circle r="5.400487421051687" cx="554.503014074738" cy="279.9036208793905" opacity="0.23685988663015198"></circle><circle r="8.718371581504002" cx="150.55959055947142" cy="117.21743575692743" opacity="0.9471615188849125"></circle><circle r="5.786069112934122" cx="471.32864838543213" cy="282.73822967441384" opacity="0.49127145660175764"></circle><circle r="7.782522007321978" cx="188.04834241699032" cy="123.11385382767344" opacity="0.9416182117383335"></circle><circle r="8.40619158456839" cx="459.54437637143025" cy="195.40056918645087" opacity="0.1823963045179595"></circle><circle r="7.8183562174531325" cx="774.2205522607769" cy="610.1395982701189" opacity="0.6639436749651573"></circle><circle r="4.268538559409171" cx="680.475849225657" cy="757.6588350919938" opacity="0.158329811204849"></circle><circle r="5.177686902444603" cx="473.2404771555223" cy="567.5444144333854" opacity="0.6145802714550291"></circle><circle r="5.295683823934196" cx="693.4920794303222" cy="613.4611329498755" opacity="0.5475765686563124"></circle><circle r="8.111169730603907" cx="719.1741003247839" cy="666.5333638825074" opacity="0.4687946996628811"></circle><circle r="6.453964566271154" cx="640.3129151790368" cy="191.81621318103467" opacity="0.9116126917875789"></circle><circle r="10.158274566429395" cx="273.3937933366764" cy="290.31089016560225" opacity="0.37283409050252414"></circle><circle r="8.910964095596892" cx="572.4574435597003" cy="462.94450524092207" opacity="0.20571010338682072"></circle><circle r="4.821135069190028" cx="424.81096563395397" cy="229.81899552492513" opacity="0.4626456484304171"></circle><circle r="5.545299564365751" cx="561.0847390036027" cy="204.72168897511906" opacity="0.2926614719091558"></circle><circle r="5.232362106941418" cx="464.43026659893167" cy="121.69327201720948" opacity="0.9567598680425956"></circle><circle r="5.694750212290348" cx="510.07809044450244" cy="15.855750663100865" opacity="0.22371390378106154"></circle><circle r="8.195291890660236" cx="778.0028037348183" cy="228.11354196110858" opacity="0.8145698058311709"></circle><circle r="6.143821344453561" cx="198.98418747871423" cy="613.8120348878473" opacity="0.8374198524615567"></circle><circle r="7.467396781417417" cx="528.5235345623563" cy="241.5979670429472" opacity="0.33353309503475653"></circle><circle r="9.76561965616186" cx="657.8440415514161" cy="283.52101045606577" opacity="0.48763507171328613"></circle><circle r="6.570386326609224" cx="394.6890754539444" cy="452.22605280608127" opacity="0.5125564607054494"></circle><circle r="7.497375470989098" cx="124.67618101612445" cy="439.0984560548739" opacity="0.109800740546023"></circle><circle r="7.806949781640361" cx="706.9841511672817" cy="492.8229048622268" opacity="0.12231337626263708"></circle><circle r="6.796137428760568" cx="13.736829182441687" cy="441.817582344068" opacity="0.7409657052920119"></circle><circle r="11.625872669854369" cx="32.00513111783989" cy="26.742668464470523" opacity="0.8373481793564644"></circle><circle r="7.351162163753516" cx="286.69194407597496" cy="467.9001935620481" opacity="0.23412541599672287"></circle><circle r="5.095729341047018" cx="139.94002568256616" cy="784.541921242959" opacity="0.1335706607376518"></circle><circle r="8.872087070025962" cx="137.89232618573016" cy="363.239295153966" opacity="0.8916698468392202"></circle><circle r="7.8780193230004265" cx="638.5371976847533" cy="160.13257935302482" opacity="0.9481173737673985"></circle><circle r="4.4730446139326325" cx="784.7219496614637" cy="435.08676269233393" opacity="0.36005138174418716"></circle><circle r="4.572303604067548" cx="601.4019255957738" cy="587.02097432097" opacity="0.49791683391719566"></circle><circle r="7.45849805322272" cx="378.1752305486861" cy="541.2487033137804" opacity="0.9999994264707277"></circle><circle r="5.270780657640222" cx="697.9131399209938" cy="788.1550337170787" opacity="0.8789858196133218"></circle><circle r="9.005657606360344" cx="483.56552087958687" cy="627.7555057848923" opacity="0.3550428897695391"></circle><circle r="8.60989941265549" cx="332.5885017069303" cy="20.94090278116953" opacity="0.650714429842505"></circle><circle r="8.527421463830656" cx="531.5925200860758" cy="689.174314848865" opacity="0.14286419204613127"></circle><circle r="7.409159294829378" cx="381.2482900231633" cy="306.5763565210384" opacity="0.442309506849797"></circle><circle r="6.2307752432913235" cx="547.6744534587845" cy="538.2874208546498" opacity="0.9842466302924551"></circle><circle r="7.28659982608459" cx="740.2465702839404" cy="575.990212816582" opacity="0.4191183225981927"></circle><circle r="6.656153919688053" cx="323.6588465166462" cy="311.20488136253283" opacity="0.4941910523084332"></circle><circle r="7.569604113811989" cx="21.56491067218682" cy="361.72508980880156" opacity="0.2972014539524511"></circle><circle r="8.579390508501119" cx="110.903205647314" cy="103.67186746305883" opacity="0.16691054279612708"></circle><circle r="8.135048691117959" cx="284.52311900517844" cy="356.8306262834612" opacity="0.15890554730573175"></circle><circle r="9.094189963827127" cx="572.7671193302094" cy="115.26761931431925" opacity="0.6020930444352551"></circle><circle r="8.73045707816777" cx="119.74479499561933" cy="734.1006211943569" opacity="0.7813371298009067"></circle><circle r="8.512806327990042" cx="101.05352044252774" cy="390.7390882504592" opacity="0.1185013040846034"></circle><circle r="6.401870113154963" cx="608.8309908023591" cy="59.07700357570815" opacity="0.4056325325900004"></circle><circle r="7.597644524767278" cx="657.1544018366064" cy="519.6910441155998" opacity="0.8821551893101544"></circle><circle r="8.475573659503647" cx="505.2258322968283" cy="199.88183831876646" opacity="0.9903756332010172"></circle><circle r="6.220783121391349" cx="560.5361380779622" cy="15.823225049806709" opacity="0.7147970274508623"></circle><circle r="7.690853558352812" cx="272.8062174780109" cy="520.1172687502215" opacity="0.5552941445721268"></circle><circle r="5.797308570122228" cx="658.1462359353977" cy="586.2598957099735" opacity="0.5043393190718021"></circle><circle r="6.591414289438559" cx="451.79189992116557" cy="248.53237684118523" opacity="0.9210101043662676"></circle><circle r="6.512662139545132" cx="747.2697221057034" cy="25.248378751142674" opacity="0.5993174650333782"></circle><circle r="6.689144628626593" cx="600.182992394777" cy="547.66657701116" opacity="0.7921499906757861"></circle><circle r="9.412705185206502" cx="402.3951124998586" cy="88.39017726459534" opacity="0.34737674328816415"></circle><circle r="4.3859565190556555" cx="421.0379276356665" cy="255.30103661270036" opacity="0.5397932233532013"></circle><circle r="7.964794033215702" cx="483.27580722080296" cy="239.677386595787" opacity="0.9319538871778625"></circle><circle r="6.116251443798696" cx="625.6158434626855" cy="707.7332372996892" opacity="0.2962723014495485"></circle><circle r="4.348032966713854" cx="628.3400904501898" cy="569.1666408046204" opacity="0.5188269700197483"></circle><circle r="9.235253770642808" cx="75.9006439263279" cy="724.0732040570457" opacity="0.8305050429381791"></circle><circle r="6.344070868765103" cx="385.0191320013029" cy="731.7192858641871" opacity="0.5159038457045089"></circle><circle r="5.443137874460575" cx="433.1514020350148" cy="116.25402688615208" opacity="0.6266117738133872"></circle><circle r="7.904070150688739" cx="304.866008131537" cy="509.38395393878676" opacity="0.33123871385818915"></circle><circle r="5.72422465322327" cx="392.8552997141008" cy="195.43163435786735" opacity="0.6140231691219559"></circle><circle r="9.444035823807075" cx="625.1199514438879" cy="317.6127513577742" opacity="0.5899966264665499"></circle><circle r="6.563049135090843" cx="331.44674658992403" cy="687.058731636218" opacity="0.6152122120270627"></circle><circle r="9.351955027957134" cx="23.36409116641601" cy="538.9146599547579" opacity="0.8651026381332414"></circle><circle r="6.858351622293705" cx="567.8681468471963" cy="566.6550000139866" opacity="0.3073420514965527"></circle><circle r="4.382150545291733" cx="432.21747177879297" cy="205.94763693397016" opacity="0.6012582994375516"></circle><circle r="7.860604961030742" cx="100.34689807751941" cy="335.52669242511143" opacity="0.5741072299478377"></circle><circle r="5.722236556554564" cx="49.13847730889499" cy="196.8408564351461" opacity="0.9487900808755321"></circle><circle r="6.526458639357968" cx="247.33384181907053" cy="770.9380652701562" opacity="0.12566093349840118"></circle><circle r="10.073639767666148" cx="603.1403402092467" cy="360.9972823667756" opacity="0.5988367107905812"></circle><circle r="7.8417902630500995" cx="340.0429813352073" cy="608.9705362760965" opacity="0.9406139454359942"></circle><circle r="8.006011321905147" cx="96.92357895293672" cy="778.2280637826613" opacity="0.18823635263246122"></circle><circle r="4.794527901478206" cx="383.75889226945384" cy="669.4654054607981" opacity="0.4161603866252864"></circle><circle r="5.775823553671489" cx="654.5999484263168" cy="119.84152330029728" opacity="0.18371363152117726"></circle><circle r="5.6572154418996" cx="137.77424950300806" cy="203.65153039014834" opacity="0.576609380798992"></circle><circle r="4.103251401271198" cx="629.172584438964" cy="86.55153478926597" opacity="0.11873990726069912"></circle><circle r="6.728755020363183" cx="713.4062172800966" cy="705.168674746734" opacity="0.46300553949147805"></circle><circle r="6.572945987964477" cx="341.4406725971793" cy="653.2396326706827" opacity="0.9260756339747709"></circle><circle r="6.449937871307975" cx="681.18473093316" cy="397.3900766032763" opacity="0.8474564696128152"></circle><circle r="5.317084226147687" cx="72.27545818865731" cy="551.7695141680105" opacity="0.8238239361154492"></circle><circle r="7.472721081830629" cx="55.11936871028954" cy="772.1956208740166" opacity="0.7005770679484891"></circle><circle r="9.32539319905262" cx="170.4166680480729" cy="497.009749817253" opacity="0.2900621947133065"></circle><circle r="7.361800082465338" cx="239.52826033587965" cy="26.64166405474629" opacity="0.7889267822556776"></circle><circle r="9.946822699536968" cx="18.164958379222387" cy="303.1490675285036" opacity="0.6301828997653156"></circle><circle r="4.802329177367757" cx="527.7575988085367" cy="725.9662495868247" opacity="0.2761631731039004"></circle><circle r="5.309795047972727" cx="623.821508331144" cy="787.413725976396" opacity="0.3432762660547904"></circle><circle r="5.950605928408601" cx="246.04052065805988" cy="441.12686145962306" opacity="0.4935777263181931"></circle><circle r="6.477175300442692" cx="780.1030776143622" cy="720.5383718333713" opacity="0.9480578065984275"></circle><circle r="8.379140999498285" cx="99.19172055899742" cy="18.507742584163125" opacity="0.913041858240442"></circle><circle r="5.332246510115541" cx="396.5518908831085" cy="235.98137976620157" opacity="0.10224645714425284"></circle><circle r="6.027558782605079" cx="459.54869062676465" cy="680.9104168810849" opacity="0.36941962632306025"></circle><circle r="5.516874931144115" cx="44.39900137976972" cy="592.7638419830391" opacity="0.33843972673519973"></circle><circle r="7.244996362554669" cx="25.293694928007785" cy="83.39270267103367" opacity="0.6342369152938245"></circle><circle r="8.730888138831178" cx="553.4241471459036" cy="426.1214499461198" opacity="0.4277178335905967"></circle><circle r="10.37141718200127" cx="230.05841135888707" cy="543.589561731901" opacity="0.9351677719349046"></circle><circle r="5.213672076216341" cx="522.9142194449881" cy="344.4221091567481" opacity="0.4467301818987277"></circle><circle r="6.186719525171318" cx="377.613250889396" cy="273.7676231463378" opacity="0.44978260596342035"></circle><circle r="8.04414906451377" cx="88.20368434908013" cy="199.63850404083638" opacity="0.15022632708388134"></circle><circle r="5.492085417042085" cx="489.2886585103749" cy="41.86114979169611" opacity="0.7367024372783173"></circle><circle r="6.670420463345189" cx="714.1920745019098" cy="361.48756234221736" opacity="0.6391829871817065"></circle><circle r="5.093557764743654" cx="240.26505492047872" cy="146.55418713923288" opacity="0.9683658702751737"></circle><circle r="6.599963293193509" cx="395.80291298301785" cy="385.036560209407" opacity="0.7516772426350525"></circle><circle r="5.878211511073218" cx="276.3312394794478" cy="177.67104552033757" opacity="0.6465823392337651"></circle><circle r="7.13522343023425" cx="153.5692429699822" cy="167.08338772776474" opacity="0.24649264144924546"></circle></g></svg>'};function t(e,t){return null==e||null==t?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function r(e,t){return null==e||null==t?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function a(e){let a,n,o;function c(e,t,r=0,i=e.length){if(r<i){if(0!==a(t,t))return i;do{const a=r+i>>>1;n(e[a],t)<0?r=a+1:i=a}while(r<i)}return r}return 2!==e.length?(a=t,n=(r,a)=>t(e(r),a),o=(t,r)=>e(t)-r):(a=e===t||e===r?e:i,n=e,o=e),{left:c,center:function(e,t,r=0,a=e.length){const i=c(e,t,r,a-1);return i>r&&o(e[i-1],t)>-o(e[i],t)?i-1:i},right:function(e,t,r=0,i=e.length){if(r<i){if(0!==a(t,t))return i;do{const a=r+i>>>1;n(e[a],t)<=0?r=a+1:i=a}while(r<i)}return r}}}function i(){return 0}function n(e){return null===e?NaN:+e}const o=a(t),c=o.right,l=o.left,s=a(n).center;const u=d(f),h=d((function(e){const t=f(e);return(e,r,a,i,n)=>{t(e,r,(a<<=2)+0,(i<<=2)+0,n<<=2),t(e,r,a+1,i+1,n),t(e,r,a+2,i+2,n),t(e,r,a+3,i+3,n)}}));function d(e){return function(t,r,a=r){if(!((r=+r)>=0))throw new RangeError("invalid rx");if(!((a=+a)>=0))throw new RangeError("invalid ry");let{data:i,width:n,height:o}=t;if(!((n=Math.floor(n))>=0))throw new RangeError("invalid width");if(!((o=Math.floor(void 0!==o?o:i.length/n))>=0))throw new RangeError("invalid height");if(!n||!o||!r&&!a)return t;const c=r&&e(r),l=a&&e(a),s=i.slice();return c&&l?(p(c,s,i,n,o),p(c,i,s,n,o),p(c,s,i,n,o),y(l,i,s,n,o),y(l,s,i,n,o),y(l,i,s,n,o)):c?(p(c,i,s,n,o),p(c,s,i,n,o),p(c,i,s,n,o)):l&&(y(l,i,s,n,o),y(l,s,i,n,o),y(l,i,s,n,o)),t}}function p(e,t,r,a,i){for(let n=0,o=a*i;n<o;)e(t,r,n,n+=a,1)}function y(e,t,r,a,i){for(let n=0,o=a*i;n<a;++n)e(t,r,n,n+o,a)}function f(e){const t=Math.floor(e);if(t===e)return function(e){const t=2*e+1;return(r,a,i,n,o)=>{if(!((n-=o)>=i))return;let c=e*a[i];const l=o*e;for(let e=i,t=i+l;e<t;e+=o)c+=a[Math.min(n,e)];for(let e=i,s=n;e<=s;e+=o)c+=a[Math.min(n,e+l)],r[e]=c/t,c-=a[Math.max(i,e-l)]}}(e);const r=e-t,a=2*e+1;return(e,i,n,o,c)=>{if(!((o-=c)>=n))return;let l=t*i[n];const s=c*t,u=s+c;for(let e=n,t=n+s;e<t;e+=c)l+=i[Math.min(o,e)];for(let t=n,h=o;t<=h;t+=c)l+=i[Math.min(o,t+s)],e[t]=(l+r*(i[Math.max(n,t-u)]+i[Math.min(o,t+u)]))/a,l-=i[Math.max(n,t-s)]}}function m(e,t){let r=0;if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&++r;else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(i=+i)>=i&&++r}return r}function g(e){return 0|e.length}function b(e){return!(e>0)}function v(e){return"object"!=typeof e||"length"in e?e:Array.from(e)}function x(e,t){let r,a=0,i=0,n=0;if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(r=t-i,i+=r/++a,n+=r*(t-i));else{let o=-1;for(let c of e)null!=(c=t(c,++o,e))&&(c=+c)>=c&&(r=c-i,i+=r/++a,n+=r*(c-i))}if(a>1)return n/(a-1)}function k(e,t){const r=x(e,t);return r?Math.sqrt(r):r}function w(e,t){let r,a;if(void 0===t)for(const t of e)null!=t&&(void 0===r?t>=t&&(r=a=t):(r>t&&(r=t),a<t&&(a=t)));else{let i=-1;for(let n of e)null!=(n=t(n,++i,e))&&(void 0===r?n>=n&&(r=a=n):(r>n&&(r=n),a<n&&(a=n)))}return[r,a]}class C{constructor(){this._partials=new Float64Array(32),this._n=0}add(e){const t=this._partials;let r=0;for(let a=0;a<this._n&&a<32;a++){const i=t[a],n=e+i,o=Math.abs(e)<Math.abs(i)?e-(n-i):i-(n-e);o&&(t[r++]=o),e=n}return t[r]=e,this._n=r+1,this}valueOf(){const e=this._partials;let t,r,a,i=this._n,n=0;if(i>0){for(n=e[--i];i>0&&(t=n,r=e[--i],n=t+r,a=r-(n-t),!a););i>0&&(a<0&&e[i-1]<0||a>0&&e[i-1]>0)&&(r=2*a,t=n+r,r==t-n&&(n=t))}return n}}class _ extends Map{constructor(e,t=B){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const[t,r]of e)this.set(t,r)}get(e){return super.get(A(this,e))}has(e){return super.has(A(this,e))}set(e,t){return super.set(M(this,e),t)}delete(e){return super.delete(T(this,e))}}class S extends Set{constructor(e,t=B){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const t of e)this.add(t)}has(e){return super.has(A(this,e))}add(e){return super.add(M(this,e))}delete(e){return super.delete(T(this,e))}}function A({_intern:e,_key:t},r){const a=t(r);return e.has(a)?e.get(a):r}function M({_intern:e,_key:t},r){const a=t(r);return e.has(a)?e.get(a):(e.set(a,r),r)}function T({_intern:e,_key:t},r){const a=t(r);return e.has(a)&&(r=e.get(a),e.delete(a)),r}function B(e){return null!==e&&"object"==typeof e?e.valueOf():e}function L(e){return e}function E(e,...t){return G(e,L,L,t)}function R(e,...t){return G(e,Array.from,L,t)}function H(e,t){for(let r=1,a=t.length;r<a;++r)e=e.flatMap((e=>e.pop().map((([t,r])=>[...e,t,r]))));return e}function D(e,t,...r){return G(e,L,t,r)}function P(e,t,...r){return G(e,Array.from,t,r)}function N(e){if(1!==e.length)throw new Error("duplicate key");return e[0]}function G(e,t,r,a){return function e(i,n){if(n>=a.length)return r(i);const o=new _,c=a[n++];let l=-1;for(const e of i){const t=c(e,++l,i),r=o.get(t);r?r.push(e):o.set(t,[e])}for(const[t,r]of o)o.set(t,e(r,n));return t(o)}(e,0)}function I(e,t){return Array.from(t,(t=>e[t]))}function W(e,...t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");e=Array.from(e);let[r]=t;if(r&&2!==r.length||t.length>1){const a=Uint32Array.from(e,((e,t)=>t));return t.length>1?(t=t.map((t=>e.map(t))),a.sort(((e,r)=>{for(const a of t){const t=z(a[e],a[r]);if(t)return t}}))):(r=e.map(r),a.sort(((e,t)=>z(r[e],r[t])))),I(e,a)}return e.sort(F(r))}function F(e=t){if(e===t)return z;if("function"!=typeof e)throw new TypeError("compare is not a function");return(t,r)=>{const a=e(t,r);return a||0===a?a:(0===e(r,r))-(0===e(t,t))}}function z(e,t){return(null==e||!(e>=e))-(null==t||!(t>=t))||(e<t?-1:e>t?1:0)}var O=Array.prototype.slice;function K(e){return()=>e}const J=Math.sqrt(50),V=Math.sqrt(10),j=Math.sqrt(2);function Y(e,t,r){const a=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(a)),n=a/Math.pow(10,i),o=n>=J?10:n>=V?5:n>=j?2:1;let c,l,s;return i<0?(s=Math.pow(10,-i)/o,c=Math.round(e*s),l=Math.round(t*s),c/s<e&&++c,l/s>t&&--l,s=-s):(s=Math.pow(10,i)*o,c=Math.round(e/s),l=Math.round(t/s),c*s<e&&++c,l*s>t&&--l),l<c&&.5<=r&&r<2?Y(e,t,2*r):[c,l,s]}function $(e,t,r){if(!((r=+r)>0))return[];if((e=+e)===(t=+t))return[e];const a=t<e,[i,n,o]=a?Y(t,e,r):Y(e,t,r);if(!(n>=i))return[];const c=n-i+1,l=new Array(c);if(a)if(o<0)for(let e=0;e<c;++e)l[e]=(n-e)/-o;else for(let e=0;e<c;++e)l[e]=(n-e)*o;else if(o<0)for(let e=0;e<c;++e)l[e]=(i+e)/-o;else for(let e=0;e<c;++e)l[e]=(i+e)*o;return l}function U(e,t,r){return Y(e=+e,t=+t,r=+r)[2]}function q(e,t,r){r=+r;const a=(t=+t)<(e=+e),i=a?U(t,e,r):U(e,t,r);return(a?-1:1)*(i<0?1/-i:i)}function Z(e,t,r){let a;for(;;){const i=U(e,t,r);if(i===a||0===i||!isFinite(i))return[e,t];i>0?(e=Math.floor(e/i)*i,t=Math.ceil(t/i)*i):i<0&&(e=Math.ceil(e*i)/i,t=Math.floor(t*i)/i),a=i}}function Q(e){return Math.max(1,Math.ceil(Math.log(m(e))/Math.LN2)+1)}function X(){var e=L,t=w,r=Q;function a(a){Array.isArray(a)||(a=Array.from(a));var i,n,o,l=a.length,s=new Array(l);for(i=0;i<l;++i)s[i]=e(a[i],i,a);var u=t(s),h=u[0],d=u[1],p=r(s,h,d);if(!Array.isArray(p)){const e=d,r=+p;if(t===w&&([h,d]=Z(h,d,r)),(p=$(h,d,r))[0]<=h&&(o=U(h,d,r)),p[p.length-1]>=d)if(e>=d&&t===w){const e=U(h,d,r);isFinite(e)&&(e>0?d=(Math.floor(d/e)+1)*e:e<0&&(d=(Math.ceil(d*-e)+1)/-e))}else p.pop()}for(var y=p.length,f=0,m=y;p[f]<=h;)++f;for(;p[m-1]>d;)--m;(f||m<y)&&(p=p.slice(f,m),y=m-f);var g,b=new Array(y+1);for(i=0;i<=y;++i)(g=b[i]=[]).x0=i>0?p[i-1]:h,g.x1=i<y?p[i]:d;if(isFinite(o)){if(o>0)for(i=0;i<l;++i)null!=(n=s[i])&&h<=n&&n<=d&&b[Math.min(y,Math.floor((n-h)/o))].push(a[i]);else if(o<0)for(i=0;i<l;++i)if(null!=(n=s[i])&&h<=n&&n<=d){const e=Math.floor((h-n)*o);b[Math.min(y,e+(p[e]<=n))].push(a[i])}}else for(i=0;i<l;++i)null!=(n=s[i])&&h<=n&&n<=d&&b[c(p,n,0,y)].push(a[i]);return b}return a.value=function(t){return arguments.length?(e="function"==typeof t?t:K(t),a):e},a.domain=function(e){return arguments.length?(t="function"==typeof e?e:K([e[0],e[1]]),a):t},a.thresholds=function(e){return arguments.length?(r="function"==typeof e?e:K(Array.isArray(e)?O.call(e):e),a):r},a}function ee(e,t){let r;if(void 0===t)for(const t of e)null!=t&&(r<t||void 0===r&&t>=t)&&(r=t);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(r<i||void 0===r&&i>=i)&&(r=i)}return r}function te(e,t){let r,a=-1,i=-1;if(void 0===t)for(const t of e)++i,null!=t&&(r<t||void 0===r&&t>=t)&&(r=t,a=i);else for(let n of e)null!=(n=t(n,++i,e))&&(r<n||void 0===r&&n>=n)&&(r=n,a=i);return a}function re(e,t){let r;if(void 0===t)for(const t of e)null!=t&&(r>t||void 0===r&&t>=t)&&(r=t);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&(r>i||void 0===r&&i>=i)&&(r=i)}return r}function ae(e,t){let r,a=-1,i=-1;if(void 0===t)for(const t of e)++i,null!=t&&(r>t||void 0===r&&t>=t)&&(r=t,a=i);else for(let n of e)null!=(n=t(n,++i,e))&&(r>n||void 0===r&&n>=n)&&(r=n,a=i);return a}function ie(e,t,r=0,a=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),a=Math.floor(Math.min(e.length-1,a)),!(r<=t&&t<=a))return e;for(i=void 0===i?z:F(i);a>r;){if(a-r>600){const n=a-r+1,o=t-r+1,c=Math.log(n),l=.5*Math.exp(2*c/3),s=.5*Math.sqrt(c*l*(n-l)/n)*(o-n/2<0?-1:1);ie(e,t,Math.max(r,Math.floor(t-o*l/n+s)),Math.min(a,Math.floor(t+(n-o)*l/n+s)),i)}const n=e[t];let o=r,c=a;for(ne(e,r,t),i(e[a],n)>0&&ne(e,r,a);o<c;){for(ne(e,o,c),++o,--c;i(e[o],n)<0;)++o;for(;i(e[c],n)>0;)--c}0===i(e[r],n)?ne(e,r,c):(++c,ne(e,c,a)),c<=t&&(r=c+1),t<=c&&(a=c-1)}return e}function ne(e,t,r){const a=e[t];e[t]=e[r],e[r]=a}function oe(e,r=t){let a,i=!1;if(1===r.length){let n;for(const o of e){const e=r(o);(i?t(e,n)>0:0===t(e,e))&&(a=o,n=e,i=!0)}}else for(const t of e)(i?r(t,a)>0:0===r(t,t))&&(a=t,i=!0);return a}function ce(e,t,r){if(e=Float64Array.from(function*(e,t){if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(yield t);else{let r=-1;for(let a of e)null!=(a=t(a,++r,e))&&(a=+a)>=a&&(yield a)}}(e,r)),(a=e.length)&&!isNaN(t=+t)){if(t<=0||a<2)return re(e);if(t>=1)return ee(e);var a,i=(a-1)*t,n=Math.floor(i),o=ee(ie(e,n).subarray(0,n+1));return o+(re(e.subarray(n+1))-o)*(i-n)}}function le(e,t,r=n){if((a=e.length)&&!isNaN(t=+t)){if(t<=0||a<2)return+r(e[0],0,e);if(t>=1)return+r(e[a-1],a-1,e);var a,i=(a-1)*t,o=Math.floor(i),c=+r(e[o],o,e);return c+(+r(e[o+1],o+1,e)-c)*(i-o)}}function se(e,t,r=n){if(!isNaN(t=+t)){if(a=Float64Array.from(e,((t,a)=>n(r(e[a],a,e)))),t<=0)return ae(a);if(t>=1)return te(a);var a,i=Uint32Array.from(e,((e,t)=>t)),o=a.length-1,c=Math.floor(o*t);return ie(i,c,0,o,((e,t)=>z(a[e],a[t]))),(c=oe(i.subarray(0,c+1),(e=>a[e])))>=0?c:-1}}function ue(e){return Array.from(function*(e){for(const t of e)yield*t}(e))}function he(e,t){return[e,t]}function de(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var a=-1,i=0|Math.max(0,Math.ceil((t-e)/r)),n=new Array(i);++a<i;)n[a]=e+a*r;return n}function pe(e,r=t){if(1===r.length)return ae(e,r);let a,i=-1,n=-1;for(const t of e)++n,(i<0?0===r(t,t):r(t,a)<0)&&(a=t,i=n);return i}var ye=fe(Math.random);function fe(e){return function(t,r=0,a=t.length){let i=a-(r=+r);for(;i;){const a=e()*i--|0,n=t[i+r];t[i+r]=t[a+r],t[a+r]=n}return t}}function me(e){if(!(i=e.length))return[];for(var t=-1,r=re(e,ge),a=new Array(r);++t<r;)for(var i,n=-1,o=a[t]=new Array(i);++n<i;)o[n]=e[n][t];return a}function ge(e){return e.length}function be(e){return e instanceof S?e:new S(e)}function ve(e,t){const r=e[Symbol.iterator](),a=new Set;for(const e of t){const t=xe(e);if(a.has(t))continue;let i,n;for(;({value:i,done:n}=r.next());){if(n)return!1;const e=xe(i);if(a.add(e),Object.is(t,e))break}}return!0}function xe(e){return null!==e&&"object"==typeof e?e.valueOf():e}function ke(e){return e}var we=1e-6;function Ce(e){return"translate("+e+",0)"}function _e(e){return"translate(0,"+e+")"}function Se(e){return t=>+e(t)}function Ae(e,t){return t=Math.max(0,e.bandwidth()-2*t)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function Me(){return!this.__axis}function Te(e,t){var r=[],a=null,i=null,n=6,o=6,c=3,l="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,s=1===e||4===e?-1:1,u=4===e||2===e?"x":"y",h=1===e||3===e?Ce:_e;function d(d){var p=null==a?t.ticks?t.ticks.apply(t,r):t.domain():a,y=null==i?t.tickFormat?t.tickFormat.apply(t,r):ke:i,f=Math.max(n,0)+c,m=t.range(),g=+m[0]+l,b=+m[m.length-1]+l,v=(t.bandwidth?Ae:Se)(t.copy(),l),x=d.selection?d.selection():d,k=x.selectAll(".domain").data([null]),w=x.selectAll(".tick").data(p,t).order(),C=w.exit(),_=w.enter().append("g").attr("class","tick"),S=w.select("line"),A=w.select("text");k=k.merge(k.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(_),S=S.merge(_.append("line").attr("stroke","currentColor").attr(u+"2",s*n)),A=A.merge(_.append("text").attr("fill","currentColor").attr(u,s*f).attr("dy",1===e?"0em":3===e?"0.71em":"0.32em")),d!==x&&(k=k.transition(d),w=w.transition(d),S=S.transition(d),A=A.transition(d),C=C.transition(d).attr("opacity",we).attr("transform",(function(e){return isFinite(e=v(e))?h(e+l):this.getAttribute("transform")})),_.attr("opacity",we).attr("transform",(function(e){var t=this.parentNode.__axis;return h((t&&isFinite(t=t(e))?t:v(e))+l)}))),C.remove(),k.attr("d",4===e||2===e?o?"M"+s*o+","+g+"H"+l+"V"+b+"H"+s*o:"M"+l+","+g+"V"+b:o?"M"+g+","+s*o+"V"+l+"H"+b+"V"+s*o:"M"+g+","+l+"H"+b),w.attr("opacity",1).attr("transform",(function(e){return h(v(e)+l)})),S.attr(u+"2",s*n),A.attr(u,s*f).text(y),x.filter(Me).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===e?"start":4===e?"end":"middle"),x.each((function(){this.__axis=v}))}return d.scale=function(e){return arguments.length?(t=e,d):t},d.ticks=function(){return r=Array.from(arguments),d},d.tickArguments=function(e){return arguments.length?(r=null==e?[]:Array.from(e),d):r.slice()},d.tickValues=function(e){return arguments.length?(a=null==e?null:Array.from(e),d):a&&a.slice()},d.tickFormat=function(e){return arguments.length?(i=e,d):i},d.tickSize=function(e){return arguments.length?(n=o=+e,d):n},d.tickSizeInner=function(e){return arguments.length?(n=+e,d):n},d.tickSizeOuter=function(e){return arguments.length?(o=+e,d):o},d.tickPadding=function(e){return arguments.length?(c=+e,d):c},d.offset=function(e){return arguments.length?(l=+e,d):l},d}var Be={value:()=>{}};function Le(){for(var e,t=0,r=arguments.length,a={};t<r;++t){if(!(e=arguments[t]+"")||e in a||/[\s.]/.test(e))throw new Error("illegal type: "+e);a[e]=[]}return new Ee(a)}function Ee(e){this._=e}function Re(e,t){for(var r,a=0,i=e.length;a<i;++a)if((r=e[a]).name===t)return r.value}function He(e,t,r){for(var a=0,i=e.length;a<i;++a)if(e[a].name===t){e[a]=Be,e=e.slice(0,a).concat(e.slice(a+1));break}return null!=r&&e.push({name:t,value:r}),e}Ee.prototype=Le.prototype={constructor:Ee,on:function(e,t){var r,a,i=this._,n=(a=i,(e+"").trim().split(/^|\s+/).map((function(e){var t="",r=e.indexOf(".");if(r>=0&&(t=e.slice(r+1),e=e.slice(0,r)),e&&!a.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:t}}))),o=-1,c=n.length;if(!(arguments.length<2)){if(null!=t&&"function"!=typeof t)throw new Error("invalid callback: "+t);for(;++o<c;)if(r=(e=n[o]).type)i[r]=He(i[r],e.name,t);else if(null==t)for(r in i)i[r]=He(i[r],e.name,null);return this}for(;++o<c;)if((r=(e=n[o]).type)&&(r=Re(i[r],e.name)))return r},copy:function(){var e={},t=this._;for(var r in t)e[r]=t[r].slice();return new Ee(e)},call:function(e,t){if((r=arguments.length-2)>0)for(var r,a,i=new Array(r),n=0;n<r;++n)i[n]=arguments[n+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(n=0,r=(a=this._[e]).length;n<r;++n)a[n].value.apply(t,i)},apply:function(e,t,r){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var a=this._[e],i=0,n=a.length;i<n;++i)a[i].value.apply(t,r)}};var De="http://www.w3.org/1999/xhtml",Pe={svg:"http://www.w3.org/2000/svg",xhtml:De,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Ne(e){var t=e+="",r=t.indexOf(":");return r>=0&&"xmlns"!==(t=e.slice(0,r))&&(e=e.slice(r+1)),Pe.hasOwnProperty(t)?{space:Pe[t],local:e}:e}function Ge(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===De&&t.documentElement.namespaceURI===De?t.createElement(e):t.createElementNS(r,e)}}function Ie(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function We(e){var t=Ne(e);return(t.local?Ie:Ge)(t)}function Fe(){}function ze(e){return null==e?Fe:function(){return this.querySelector(e)}}function Oe(e){return null==e?[]:Array.isArray(e)?e:Array.from(e)}function Ke(){return[]}function Je(e){return null==e?Ke:function(){return this.querySelectorAll(e)}}function Ve(e){return function(){return this.matches(e)}}function je(e){return function(t){return t.matches(e)}}var Ye=Array.prototype.find;function $e(){return this.firstElementChild}var Ue=Array.prototype.filter;function qe(){return Array.from(this.children)}function Ze(e){return new Array(e.length)}function Qe(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function Xe(e,t,r,a,i,n){for(var o,c=0,l=t.length,s=n.length;c<s;++c)(o=t[c])?(o.__data__=n[c],a[c]=o):r[c]=new Qe(e,n[c]);for(;c<l;++c)(o=t[c])&&(i[c]=o)}function et(e,t,r,a,i,n,o){var c,l,s,u=new Map,h=t.length,d=n.length,p=new Array(h);for(c=0;c<h;++c)(l=t[c])&&(p[c]=s=o.call(l,l.__data__,c,t)+"",u.has(s)?i[c]=l:u.set(s,l));for(c=0;c<d;++c)s=o.call(e,n[c],c,n)+"",(l=u.get(s))?(a[c]=l,l.__data__=n[c],u.delete(s)):r[c]=new Qe(e,n[c]);for(c=0;c<h;++c)(l=t[c])&&u.get(p[c])===l&&(i[c]=l)}function tt(e){return e.__data__}function rt(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function at(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function it(e){return function(){this.removeAttribute(e)}}function nt(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ot(e,t){return function(){this.setAttribute(e,t)}}function ct(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function lt(e,t){return function(){var r=t.apply(this,arguments);null==r?this.removeAttribute(e):this.setAttribute(e,r)}}function st(e,t){return function(){var r=t.apply(this,arguments);null==r?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function ut(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function ht(e){return function(){this.style.removeProperty(e)}}function dt(e,t,r){return function(){this.style.setProperty(e,t,r)}}function pt(e,t,r){return function(){var a=t.apply(this,arguments);null==a?this.style.removeProperty(e):this.style.setProperty(e,a,r)}}function yt(e,t){return e.style.getPropertyValue(t)||ut(e).getComputedStyle(e,null).getPropertyValue(t)}function ft(e){return function(){delete this[e]}}function mt(e,t){return function(){this[e]=t}}function gt(e,t){return function(){var r=t.apply(this,arguments);null==r?delete this[e]:this[e]=r}}function bt(e){return e.trim().split(/^|\s+/)}function vt(e){return e.classList||new xt(e)}function xt(e){this._node=e,this._names=bt(e.getAttribute("class")||"")}function kt(e,t){for(var r=vt(e),a=-1,i=t.length;++a<i;)r.add(t[a])}function wt(e,t){for(var r=vt(e),a=-1,i=t.length;++a<i;)r.remove(t[a])}function Ct(e){return function(){kt(this,e)}}function _t(e){return function(){wt(this,e)}}function St(e,t){return function(){(t.apply(this,arguments)?kt:wt)(this,e)}}function At(){this.textContent=""}function Mt(e){return function(){this.textContent=e}}function Tt(e){return function(){var t=e.apply(this,arguments);this.textContent=null==t?"":t}}function Bt(){this.innerHTML=""}function Lt(e){return function(){this.innerHTML=e}}function Et(e){return function(){var t=e.apply(this,arguments);this.innerHTML=null==t?"":t}}function Rt(){this.nextSibling&&this.parentNode.appendChild(this)}function Ht(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Dt(){return null}function Pt(){var e=this.parentNode;e&&e.removeChild(this)}function Nt(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Gt(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function It(e){return function(){var t=this.__on;if(t){for(var r,a=0,i=-1,n=t.length;a<n;++a)r=t[a],e.type&&r.type!==e.type||r.name!==e.name?t[++i]=r:this.removeEventListener(r.type,r.listener,r.options);++i?t.length=i:delete this.__on}}}function Wt(e,t,r){return function(){var a,i=this.__on,n=function(e){return function(t){e.call(this,t,this.__data__)}}(t);if(i)for(var o=0,c=i.length;o<c;++o)if((a=i[o]).type===e.type&&a.name===e.name)return this.removeEventListener(a.type,a.listener,a.options),this.addEventListener(a.type,a.listener=n,a.options=r),void(a.value=t);this.addEventListener(e.type,n,r),a={type:e.type,name:e.name,value:t,listener:n,options:r},i?i.push(a):this.__on=[a]}}function Ft(e,t,r){var a=ut(e),i=a.CustomEvent;"function"==typeof i?i=new i(t,r):(i=a.document.createEvent("Event"),r?(i.initEvent(t,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function zt(e,t){return function(){return Ft(this,e,t)}}function Ot(e,t){return function(){return Ft(this,e,t.apply(this,arguments))}}Qe.prototype={constructor:Qe,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}},xt.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var Kt=[null];function Jt(e,t){this._groups=e,this._parents=t}function Vt(){return new Jt([[document.documentElement]],Kt)}function jt(e){return"string"==typeof e?new Jt([[document.querySelector(e)]],[document.documentElement]):new Jt([[e]],Kt)}function Yt(e){return jt(We(e).call(document.documentElement))}Jt.prototype=Vt.prototype={constructor:Jt,select:function(e){"function"!=typeof e&&(e=ze(e));for(var t=this._groups,r=t.length,a=new Array(r),i=0;i<r;++i)for(var n,o,c=t[i],l=c.length,s=a[i]=new Array(l),u=0;u<l;++u)(n=c[u])&&(o=e.call(n,n.__data__,u,c))&&("__data__"in n&&(o.__data__=n.__data__),s[u]=o);return new Jt(a,this._parents)},selectAll:function(e){e="function"==typeof e?function(e){return function(){return Oe(e.apply(this,arguments))}}(e):Je(e);for(var t=this._groups,r=t.length,a=[],i=[],n=0;n<r;++n)for(var o,c=t[n],l=c.length,s=0;s<l;++s)(o=c[s])&&(a.push(e.call(o,o.__data__,s,c)),i.push(o));return new Jt(a,i)},selectChild:function(e){return this.select(null==e?$e:function(e){return function(){return Ye.call(this.children,e)}}("function"==typeof e?e:je(e)))},selectChildren:function(e){return this.selectAll(null==e?qe:function(e){return function(){return Ue.call(this.children,e)}}("function"==typeof e?e:je(e)))},filter:function(e){"function"!=typeof e&&(e=Ve(e));for(var t=this._groups,r=t.length,a=new Array(r),i=0;i<r;++i)for(var n,o=t[i],c=o.length,l=a[i]=[],s=0;s<c;++s)(n=o[s])&&e.call(n,n.__data__,s,o)&&l.push(n);return new Jt(a,this._parents)},data:function(e,t){if(!arguments.length)return Array.from(this,tt);var r=t?et:Xe,a=this._parents,i=this._groups;"function"!=typeof e&&(e=function(e){return function(){return e}}(e));for(var n=i.length,o=new Array(n),c=new Array(n),l=new Array(n),s=0;s<n;++s){var u=a[s],h=i[s],d=h.length,p=rt(e.call(u,u&&u.__data__,s,a)),y=p.length,f=c[s]=new Array(y),m=o[s]=new Array(y);r(u,h,f,m,l[s]=new Array(d),p,t);for(var g,b,v=0,x=0;v<y;++v)if(g=f[v]){for(v>=x&&(x=v+1);!(b=m[x])&&++x<y;);g._next=b||null}}return(o=new Jt(o,a))._enter=c,o._exit=l,o},enter:function(){return new Jt(this._enter||this._groups.map(Ze),this._parents)},exit:function(){return new Jt(this._exit||this._groups.map(Ze),this._parents)},join:function(e,t,r){var a=this.enter(),i=this,n=this.exit();return"function"==typeof e?(a=e(a))&&(a=a.selection()):a=a.append(e+""),null!=t&&(i=t(i))&&(i=i.selection()),null==r?n.remove():r(n),a&&i?a.merge(i).order():i},merge:function(e){for(var t=e.selection?e.selection():e,r=this._groups,a=t._groups,i=r.length,n=a.length,o=Math.min(i,n),c=new Array(i),l=0;l<o;++l)for(var s,u=r[l],h=a[l],d=u.length,p=c[l]=new Array(d),y=0;y<d;++y)(s=u[y]||h[y])&&(p[y]=s);for(;l<i;++l)c[l]=r[l];return new Jt(c,this._parents)},selection:function(){return this},order:function(){for(var e=this._groups,t=-1,r=e.length;++t<r;)for(var a,i=e[t],n=i.length-1,o=i[n];--n>=0;)(a=i[n])&&(o&&4^a.compareDocumentPosition(o)&&o.parentNode.insertBefore(a,o),o=a);return this},sort:function(e){function t(t,r){return t&&r?e(t.__data__,r.__data__):!t-!r}e||(e=at);for(var r=this._groups,a=r.length,i=new Array(a),n=0;n<a;++n){for(var o,c=r[n],l=c.length,s=i[n]=new Array(l),u=0;u<l;++u)(o=c[u])&&(s[u]=o);s.sort(t)}return new Jt(i,this._parents).order()},call:function(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var a=e[t],i=0,n=a.length;i<n;++i){var o=a[i];if(o)return o}return null},size:function(){let e=0;for(const t of this)++e;return e},empty:function(){return!this.node()},each:function(e){for(var t=this._groups,r=0,a=t.length;r<a;++r)for(var i,n=t[r],o=0,c=n.length;o<c;++o)(i=n[o])&&e.call(i,i.__data__,o,n);return this},attr:function(e,t){var r=Ne(e);if(arguments.length<2){var a=this.node();return r.local?a.getAttributeNS(r.space,r.local):a.getAttribute(r)}return this.each((null==t?r.local?nt:it:"function"==typeof t?r.local?st:lt:r.local?ct:ot)(r,t))},style:function(e,t,r){return arguments.length>1?this.each((null==t?ht:"function"==typeof t?pt:dt)(e,t,null==r?"":r)):yt(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?ft:"function"==typeof t?gt:mt)(e,t)):this.node()[e]},classed:function(e,t){var r=bt(e+"");if(arguments.length<2){for(var a=vt(this.node()),i=-1,n=r.length;++i<n;)if(!a.contains(r[i]))return!1;return!0}return this.each(("function"==typeof t?St:t?Ct:_t)(r,t))},text:function(e){return arguments.length?this.each(null==e?At:("function"==typeof e?Tt:Mt)(e)):this.node().textContent},html:function(e){return arguments.length?this.each(null==e?Bt:("function"==typeof e?Et:Lt)(e)):this.node().innerHTML},raise:function(){return this.each(Rt)},lower:function(){return this.each(Ht)},append:function(e){var t="function"==typeof e?e:We(e);return this.select((function(){return this.appendChild(t.apply(this,arguments))}))},insert:function(e,t){var r="function"==typeof e?e:We(e),a=null==t?Dt:"function"==typeof t?t:ze(t);return this.select((function(){return this.insertBefore(r.apply(this,arguments),a.apply(this,arguments)||null)}))},remove:function(){return this.each(Pt)},clone:function(e){return this.select(e?Gt:Nt)},datum:function(e){return arguments.length?this.property("__data__",e):this.node().__data__},on:function(e,t,r){var a,i,n=function(e){return e.trim().split(/^|\s+/).map((function(e){var t="",r=e.indexOf(".");return r>=0&&(t=e.slice(r+1),e=e.slice(0,r)),{type:e,name:t}}))}(e+""),o=n.length;if(!(arguments.length<2)){for(c=t?Wt:It,a=0;a<o;++a)this.each(c(n[a],t,r));return this}var c=this.node().__on;if(c)for(var l,s=0,u=c.length;s<u;++s)for(a=0,l=c[s];a<o;++a)if((i=n[a]).type===l.type&&i.name===l.name)return l.value},dispatch:function(e,t){return this.each(("function"==typeof t?Ot:zt)(e,t))},[Symbol.iterator]:function*(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var a,i=e[t],n=0,o=i.length;n<o;++n)(a=i[n])&&(yield a)}};var $t=0;function Ut(){return new qt}function qt(){this._="@"+(++$t).toString(36)}function Zt(e){let t;for(;t=e.sourceEvent;)e=t;return e}function Qt(e,t){if(e=Zt(e),void 0===t&&(t=e.currentTarget),t){var r=t.ownerSVGElement||t;if(r.createSVGPoint){var a=r.createSVGPoint();return a.x=e.clientX,a.y=e.clientY,[(a=a.matrixTransform(t.getScreenCTM().inverse())).x,a.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}qt.prototype=Ut.prototype={constructor:qt,get:function(e){for(var t=this._;!(t in e);)if(!(e=e.parentNode))return;return e[t]},set:function(e,t){return e[this._]=t},remove:function(e){return this._ in e&&delete e[this._]},toString:function(){return this._}};const Xt={passive:!1},er={capture:!0,passive:!1};function tr(e){e.stopImmediatePropagation()}function rr(e){e.preventDefault(),e.stopImmediatePropagation()}function ar(e){var t=e.document.documentElement,r=jt(e).on("dragstart.drag",rr,er);"onselectstart"in t?r.on("selectstart.drag",rr,er):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function ir(e,t){var r=e.document.documentElement,a=jt(e).on("dragstart.drag",null);t&&(a.on("click.drag",rr,er),setTimeout((function(){a.on("click.drag",null)}),0)),"onselectstart"in r?a.on("selectstart.drag",null):(r.style.MozUserSelect=r.__noselect,delete r.__noselect)}var nr=e=>()=>e;function or(e,{sourceEvent:t,subject:r,target:a,identifier:i,active:n,x:o,y:c,dx:l,dy:s,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:a,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:n,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:c,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:s,enumerable:!0,configurable:!0},_:{value:u}})}function cr(e){return!e.ctrlKey&&!e.button}function lr(){return this.parentNode}function sr(e,t){return null==t?{x:e.x,y:e.y}:t}function ur(){return navigator.maxTouchPoints||"ontouchstart"in this}function hr(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function dr(e,t){var r=Object.create(e.prototype);for(var a in t)r[a]=t[a];return r}function pr(){}or.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};var yr=.7,fr=1/yr,mr="\\s*([+-]?\\d+)\\s*",gr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",br="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",vr=/^#([0-9a-f]{3,8})$/,xr=new RegExp(`^rgb\\(${mr},${mr},${mr}\\)$`),kr=new RegExp(`^rgb\\(${br},${br},${br}\\)$`),wr=new RegExp(`^rgba\\(${mr},${mr},${mr},${gr}\\)$`),Cr=new RegExp(`^rgba\\(${br},${br},${br},${gr}\\)$`),_r=new RegExp(`^hsl\\(${gr},${br},${br}\\)$`),Sr=new RegExp(`^hsla\\(${gr},${br},${br},${gr}\\)$`),Ar={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Mr(){return this.rgb().formatHex()}function Tr(){return this.rgb().formatRgb()}function Br(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=vr.exec(e))?(r=t[1].length,t=parseInt(t[1],16),6===r?Lr(t):3===r?new Dr(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?Er(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?Er(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=xr.exec(e))?new Dr(t[1],t[2],t[3],1):(t=kr.exec(e))?new Dr(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=wr.exec(e))?Er(t[1],t[2],t[3],t[4]):(t=Cr.exec(e))?Er(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=_r.exec(e))?Fr(t[1],t[2]/100,t[3]/100,1):(t=Sr.exec(e))?Fr(t[1],t[2]/100,t[3]/100,t[4]):Ar.hasOwnProperty(e)?Lr(Ar[e]):"transparent"===e?new Dr(NaN,NaN,NaN,0):null}function Lr(e){return new Dr(e>>16&255,e>>8&255,255&e,1)}function Er(e,t,r,a){return a<=0&&(e=t=r=NaN),new Dr(e,t,r,a)}function Rr(e){return e instanceof pr||(e=Br(e)),e?new Dr((e=e.rgb()).r,e.g,e.b,e.opacity):new Dr}function Hr(e,t,r,a){return 1===arguments.length?Rr(e):new Dr(e,t,r,null==a?1:a)}function Dr(e,t,r,a){this.r=+e,this.g=+t,this.b=+r,this.opacity=+a}function Pr(){return`#${Wr(this.r)}${Wr(this.g)}${Wr(this.b)}`}function Nr(){const e=Gr(this.opacity);return`${1===e?"rgb(":"rgba("}${Ir(this.r)}, ${Ir(this.g)}, ${Ir(this.b)}${1===e?")":`, ${e})`}`}function Gr(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ir(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Wr(e){return((e=Ir(e))<16?"0":"")+e.toString(16)}function Fr(e,t,r,a){return a<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Kr(e,t,r,a)}function zr(e){if(e instanceof Kr)return new Kr(e.h,e.s,e.l,e.opacity);if(e instanceof pr||(e=Br(e)),!e)return new Kr;if(e instanceof Kr)return e;var t=(e=e.rgb()).r/255,r=e.g/255,a=e.b/255,i=Math.min(t,r,a),n=Math.max(t,r,a),o=NaN,c=n-i,l=(n+i)/2;return c?(o=t===n?(r-a)/c+6*(r<a):r===n?(a-t)/c+2:(t-r)/c+4,c/=l<.5?n+i:2-n-i,o*=60):c=l>0&&l<1?0:o,new Kr(o,c,l,e.opacity)}function Or(e,t,r,a){return 1===arguments.length?zr(e):new Kr(e,t,r,null==a?1:a)}function Kr(e,t,r,a){this.h=+e,this.s=+t,this.l=+r,this.opacity=+a}function Jr(e){return(e=(e||0)%360)<0?e+360:e}function Vr(e){return Math.max(0,Math.min(1,e||0))}function jr(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}hr(pr,Br,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Mr,formatHex:Mr,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return zr(this).formatHsl()},formatRgb:Tr,toString:Tr}),hr(Dr,Hr,dr(pr,{brighter(e){return e=null==e?fr:Math.pow(fr,e),new Dr(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?yr:Math.pow(yr,e),new Dr(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Dr(Ir(this.r),Ir(this.g),Ir(this.b),Gr(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Pr,formatHex:Pr,formatHex8:function(){return`#${Wr(this.r)}${Wr(this.g)}${Wr(this.b)}${Wr(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Nr,toString:Nr})),hr(Kr,Or,dr(pr,{brighter(e){return e=null==e?fr:Math.pow(fr,e),new Kr(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?yr:Math.pow(yr,e),new Kr(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,a=r+(r<.5?r:1-r)*t,i=2*r-a;return new Dr(jr(e>=240?e-240:e+120,i,a),jr(e,i,a),jr(e<120?e+240:e-120,i,a),this.opacity)},clamp(){return new Kr(Jr(this.h),Vr(this.s),Vr(this.l),Gr(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Gr(this.opacity);return`${1===e?"hsl(":"hsla("}${Jr(this.h)}, ${100*Vr(this.s)}%, ${100*Vr(this.l)}%${1===e?")":`, ${e})`}`}}));const Yr=Math.PI/180,$r=180/Math.PI,Ur=.96422,qr=.82521,Zr=4/29,Qr=6/29,Xr=3*Qr*Qr,ea=Qr*Qr*Qr;function ta(e){if(e instanceof ia)return new ia(e.l,e.a,e.b,e.opacity);if(e instanceof ha)return da(e);e instanceof Dr||(e=Rr(e));var t,r,a=la(e.r),i=la(e.g),n=la(e.b),o=na((.2225045*a+.7168786*i+.0606169*n)/1);return a===i&&i===n?t=r=o:(t=na((.4360747*a+.3850649*i+.1430804*n)/Ur),r=na((.0139322*a+.0971045*i+.7141733*n)/qr)),new ia(116*o-16,500*(t-o),200*(o-r),e.opacity)}function ra(e,t){return new ia(e,0,0,null==t?1:t)}function aa(e,t,r,a){return 1===arguments.length?ta(e):new ia(e,t,r,null==a?1:a)}function ia(e,t,r,a){this.l=+e,this.a=+t,this.b=+r,this.opacity=+a}function na(e){return e>ea?Math.pow(e,1/3):e/Xr+Zr}function oa(e){return e>Qr?e*e*e:Xr*(e-Zr)}function ca(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function la(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function sa(e){if(e instanceof ha)return new ha(e.h,e.c,e.l,e.opacity);if(e instanceof ia||(e=ta(e)),0===e.a&&0===e.b)return new ha(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*$r;return new ha(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function ua(e,t,r,a){return 1===arguments.length?sa(e):new ha(e,t,r,null==a?1:a)}function ha(e,t,r,a){this.h=+e,this.c=+t,this.l=+r,this.opacity=+a}function da(e){if(isNaN(e.h))return new ia(e.l,0,0,e.opacity);var t=e.h*Yr;return new ia(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}hr(ia,aa,dr(pr,{brighter(e){return new ia(this.l+18*(null==e?1:e),this.a,this.b,this.opacity)},darker(e){return new ia(this.l-18*(null==e?1:e),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return new Dr(ca(3.1338561*(t=Ur*oa(t))-1.6168667*(e=1*oa(e))-.4906146*(r=qr*oa(r))),ca(-.9787684*t+1.9161415*e+.033454*r),ca(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}})),hr(ha,ua,dr(pr,{brighter(e){return new ha(this.h,this.c,this.l+18*(null==e?1:e),this.opacity)},darker(e){return new ha(this.h,this.c,this.l-18*(null==e?1:e),this.opacity)},rgb(){return da(this).rgb()}}));var pa=-.14861,ya=1.78277,fa=-.29227,ma=-.90649,ga=1.97294,ba=ga*ma,va=ga*ya,xa=ya*fa-ma*pa;function ka(e,t,r,a){return 1===arguments.length?function(e){if(e instanceof wa)return new wa(e.h,e.s,e.l,e.opacity);e instanceof Dr||(e=Rr(e));var t=e.r/255,r=e.g/255,a=e.b/255,i=(xa*a+ba*t-va*r)/(xa+ba-va),n=a-i,o=(ga*(r-i)-fa*n)/ma,c=Math.sqrt(o*o+n*n)/(ga*i*(1-i)),l=c?Math.atan2(o,n)*$r-120:NaN;return new wa(l<0?l+360:l,c,i,e.opacity)}(e):new wa(e,t,r,null==a?1:a)}function wa(e,t,r,a){this.h=+e,this.s=+t,this.l=+r,this.opacity=+a}function Ca(e,t,r,a,i){var n=e*e,o=n*e;return((1-3*e+3*n-o)*t+(4-6*n+3*o)*r+(1+3*e+3*n-3*o)*a+o*i)/6}function _a(e){var t=e.length-1;return function(r){var a=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[a],n=e[a+1],o=a>0?e[a-1]:2*i-n,c=a<t-1?e[a+2]:2*n-i;return Ca((r-a/t)*t,o,i,n,c)}}function Sa(e){var t=e.length;return function(r){var a=Math.floor(((r%=1)<0?++r:r)*t),i=e[(a+t-1)%t],n=e[a%t],o=e[(a+1)%t],c=e[(a+2)%t];return Ca((r-a/t)*t,i,n,o,c)}}hr(wa,ka,dr(pr,{brighter(e){return e=null==e?fr:Math.pow(fr,e),new wa(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?yr:Math.pow(yr,e),new wa(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Yr,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),a=Math.cos(e),i=Math.sin(e);return new Dr(255*(t+r*(pa*a+ya*i)),255*(t+r*(fa*a+ma*i)),255*(t+r*(ga*a)),this.opacity)}}));var Aa=e=>()=>e;function Ma(e,t){return function(r){return e+r*t}}function Ta(e,t){var r=t-e;return r?Ma(e,r>180||r<-180?r-360*Math.round(r/360):r):Aa(isNaN(e)?t:e)}function Ba(e){return 1==(e=+e)?La:function(t,r){return r-t?function(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(a){return Math.pow(e+a*t,r)}}(t,r,e):Aa(isNaN(t)?r:t)}}function La(e,t){var r=t-e;return r?Ma(e,r):Aa(isNaN(e)?t:e)}var Ea=function e(t){var r=Ba(t);function a(e,t){var a=r((e=Hr(e)).r,(t=Hr(t)).r),i=r(e.g,t.g),n=r(e.b,t.b),o=La(e.opacity,t.opacity);return function(t){return e.r=a(t),e.g=i(t),e.b=n(t),e.opacity=o(t),e+""}}return a.gamma=e,a}(1);function Ra(e){return function(t){var r,a,i=t.length,n=new Array(i),o=new Array(i),c=new Array(i);for(r=0;r<i;++r)a=Hr(t[r]),n[r]=a.r||0,o[r]=a.g||0,c[r]=a.b||0;return n=e(n),o=e(o),c=e(c),a.opacity=1,function(e){return a.r=n(e),a.g=o(e),a.b=c(e),a+""}}}var Ha=Ra(_a),Da=Ra(Sa);function Pa(e,t){t||(t=[]);var r,a=e?Math.min(t.length,e.length):0,i=t.slice();return function(n){for(r=0;r<a;++r)i[r]=e[r]*(1-n)+t[r]*n;return i}}function Na(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Ga(e,t){var r,a=t?t.length:0,i=e?Math.min(a,e.length):0,n=new Array(i),o=new Array(a);for(r=0;r<i;++r)n[r]=Ja(e[r],t[r]);for(;r<a;++r)o[r]=t[r];return function(e){for(r=0;r<i;++r)o[r]=n[r](e);return o}}function Ia(e,t){var r=new Date;return e=+e,t=+t,function(a){return r.setTime(e*(1-a)+t*a),r}}function Wa(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}function Fa(e,t){var r,a={},i={};for(r in null!==e&&"object"==typeof e||(e={}),null!==t&&"object"==typeof t||(t={}),t)r in e?a[r]=Ja(e[r],t[r]):i[r]=t[r];return function(e){for(r in a)i[r]=a[r](e);return i}}var za=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Oa=new RegExp(za.source,"g");function Ka(e,t){var r,a,i,n=za.lastIndex=Oa.lastIndex=0,o=-1,c=[],l=[];for(e+="",t+="";(r=za.exec(e))&&(a=Oa.exec(t));)(i=a.index)>n&&(i=t.slice(n,i),c[o]?c[o]+=i:c[++o]=i),(r=r[0])===(a=a[0])?c[o]?c[o]+=a:c[++o]=a:(c[++o]=null,l.push({i:o,x:Wa(r,a)})),n=Oa.lastIndex;return n<t.length&&(i=t.slice(n),c[o]?c[o]+=i:c[++o]=i),c.length<2?l[0]?function(e){return function(t){return e(t)+""}}(l[0].x):function(e){return function(){return e}}(t):(t=l.length,function(e){for(var r,a=0;a<t;++a)c[(r=l[a]).i]=r.x(e);return c.join("")})}function Ja(e,t){var r,a=typeof t;return null==t||"boolean"===a?Aa(t):("number"===a?Wa:"string"===a?(r=Br(t))?(t=r,Ea):Ka:t instanceof Br?Ea:t instanceof Date?Ia:Na(t)?Pa:Array.isArray(t)?Ga:"function"!=typeof t.valueOf&&"function"!=typeof t.toString||isNaN(t)?Fa:Wa)(e,t)}function Va(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var ja,Ya=180/Math.PI,$a={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Ua(e,t,r,a,i,n){var o,c,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*r+t*a)&&(r-=e*l,a-=t*l),(c=Math.sqrt(r*r+a*a))&&(r/=c,a/=c,l/=c),e*a<t*r&&(e=-e,t=-t,l=-l,o=-o),{translateX:i,translateY:n,rotate:Math.atan2(t,e)*Ya,skewX:Math.atan(l)*Ya,scaleX:o,scaleY:c}}function qa(e,t,r,a){function i(e){return e.length?e.pop()+" ":""}return function(n,o){var c=[],l=[];return n=e(n),o=e(o),function(e,a,i,n,o,c){if(e!==i||a!==n){var l=o.push("translate(",null,t,null,r);c.push({i:l-4,x:Wa(e,i)},{i:l-2,x:Wa(a,n)})}else(i||n)&&o.push("translate("+i+t+n+r)}(n.translateX,n.translateY,o.translateX,o.translateY,c,l),function(e,t,r,n){e!==t?(e-t>180?t+=360:t-e>180&&(e+=360),n.push({i:r.push(i(r)+"rotate(",null,a)-2,x:Wa(e,t)})):t&&r.push(i(r)+"rotate("+t+a)}(n.rotate,o.rotate,c,l),function(e,t,r,n){e!==t?n.push({i:r.push(i(r)+"skewX(",null,a)-2,x:Wa(e,t)}):t&&r.push(i(r)+"skewX("+t+a)}(n.skewX,o.skewX,c,l),function(e,t,r,a,n,o){if(e!==r||t!==a){var c=n.push(i(n)+"scale(",null,",",null,")");o.push({i:c-4,x:Wa(e,r)},{i:c-2,x:Wa(t,a)})}else 1===r&&1===a||n.push(i(n)+"scale("+r+","+a+")")}(n.scaleX,n.scaleY,o.scaleX,o.scaleY,c,l),n=o=null,function(e){for(var t,r=-1,a=l.length;++r<a;)c[(t=l[r]).i]=t.x(e);return c.join("")}}}var Za=qa((function(e){const t=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?$a:Ua(t.a,t.b,t.c,t.d,t.e,t.f)}),"px, ","px)","deg)"),Qa=qa((function(e){return null==e?$a:(ja||(ja=document.createElementNS("http://www.w3.org/2000/svg","g")),ja.setAttribute("transform",e),(e=ja.transform.baseVal.consolidate())?Ua((e=e.matrix).a,e.b,e.c,e.d,e.e,e.f):$a)}),", ",")",")");function Xa(e){return((e=Math.exp(e))+1/e)/2}var ei=function e(t,r,a){function i(e,i){var n,o,c=e[0],l=e[1],s=e[2],u=i[0],h=i[1],d=i[2],p=u-c,y=h-l,f=p*p+y*y;if(f<1e-12)o=Math.log(d/s)/t,n=function(e){return[c+e*p,l+e*y,s*Math.exp(t*e*o)]};else{var m=Math.sqrt(f),g=(d*d-s*s+a*f)/(2*s*r*m),b=(d*d-s*s-a*f)/(2*d*r*m),v=Math.log(Math.sqrt(g*g+1)-g),x=Math.log(Math.sqrt(b*b+1)-b);o=(x-v)/t,n=function(e){var a=e*o,i=Xa(v),n=s/(r*m)*(i*function(e){return((e=Math.exp(2*e))-1)/(e+1)}(t*a+v)-function(e){return((e=Math.exp(e))-1/e)/2}(v));return[c+n*p,l+n*y,s*i/Xa(t*a+v)]}}return n.duration=1e3*o*t/Math.SQRT2,n}return i.rho=function(t){var r=Math.max(.001,+t),a=r*r;return e(r,a,a*a)},i}(Math.SQRT2,2,4);function ti(e){return function(t,r){var a=e((t=Or(t)).h,(r=Or(r)).h),i=La(t.s,r.s),n=La(t.l,r.l),o=La(t.opacity,r.opacity);return function(e){return t.h=a(e),t.s=i(e),t.l=n(e),t.opacity=o(e),t+""}}}var ri=ti(Ta),ai=ti(La);function ii(e){return function(t,r){var a=e((t=ua(t)).h,(r=ua(r)).h),i=La(t.c,r.c),n=La(t.l,r.l),o=La(t.opacity,r.opacity);return function(e){return t.h=a(e),t.c=i(e),t.l=n(e),t.opacity=o(e),t+""}}}var ni=ii(Ta),oi=ii(La);function ci(e){return function t(r){function a(t,a){var i=e((t=ka(t)).h,(a=ka(a)).h),n=La(t.s,a.s),o=La(t.l,a.l),c=La(t.opacity,a.opacity);return function(e){return t.h=i(e),t.s=n(e),t.l=o(Math.pow(e,r)),t.opacity=c(e),t+""}}return r=+r,a.gamma=t,a}(1)}var li=ci(Ta),si=ci(La);function ui(e,t){void 0===t&&(t=e,e=Ja);for(var r=0,a=t.length-1,i=t[0],n=new Array(a<0?0:a);r<a;)n[r]=e(i,i=t[++r]);return function(e){var t=Math.max(0,Math.min(a-1,Math.floor(e*=a)));return n[t](e-t)}}var hi,di,pi=0,yi=0,fi=0,mi=0,gi=0,bi=0,vi="object"==typeof performance&&performance.now?performance:Date,xi="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function ki(){return gi||(xi(wi),gi=vi.now()+bi)}function wi(){gi=0}function Ci(){this._call=this._time=this._next=null}function _i(e,t,r){var a=new Ci;return a.restart(e,t,r),a}function Si(){ki(),++pi;for(var e,t=hi;t;)(e=gi-t._time)>=0&&t._call.call(void 0,e),t=t._next;--pi}function Ai(){gi=(mi=vi.now())+bi,pi=yi=0;try{Si()}finally{pi=0,function(){var e,t,r=hi,a=1/0;for(;r;)r._call?(a>r._time&&(a=r._time),e=r,r=r._next):(t=r._next,r._next=null,r=e?e._next=t:hi=t);di=e,Ti(a)}(),gi=0}}function Mi(){var e=vi.now(),t=e-mi;t>1e3&&(bi-=t,mi=e)}function Ti(e){pi||(yi&&(yi=clearTimeout(yi)),e-gi>24?(e<1/0&&(yi=setTimeout(Ai,e-vi.now()-bi)),fi&&(fi=clearInterval(fi))):(fi||(mi=vi.now(),fi=setInterval(Mi,1e3)),pi=1,xi(Ai)))}function Bi(e,t,r){var a=new Ci;return t=null==t?0:+t,a.restart((r=>{a.stop(),e(r+t)}),t,r),a}Ci.prototype=_i.prototype={constructor:Ci,restart:function(e,t,r){if("function"!=typeof e)throw new TypeError("callback is not a function");r=(null==r?ki():+r)+(null==t?0:+t),this._next||di===this||(di?di._next=this:hi=this,di=this),this._call=e,this._time=r,Ti()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ti())}};var Li=Le("start","end","cancel","interrupt"),Ei=[];function Ri(e,t,r,a,i,n){var o=e.__transition;if(o){if(r in o)return}else e.__transition={};!function(e,t,r){var a,i=e.__transition;function n(e){r.state=1,r.timer.restart(o,r.delay,r.time),r.delay<=e&&o(e-r.delay)}function o(n){var s,u,h,d;if(1!==r.state)return l();for(s in i)if((d=i[s]).name===r.name){if(3===d.state)return Bi(o);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",e,e.__data__,d.index,d.group),delete i[s]):+s<t&&(d.state=6,d.timer.stop(),d.on.call("cancel",e,e.__data__,d.index,d.group),delete i[s])}if(Bi((function(){3===r.state&&(r.state=4,r.timer.restart(c,r.delay,r.time),c(n))})),r.state=2,r.on.call("start",e,e.__data__,r.index,r.group),2===r.state){for(r.state=3,a=new Array(h=r.tween.length),s=0,u=-1;s<h;++s)(d=r.tween[s].value.call(e,e.__data__,r.index,r.group))&&(a[++u]=d);a.length=u+1}}function c(t){for(var i=t<r.duration?r.ease.call(null,t/r.duration):(r.timer.restart(l),r.state=5,1),n=-1,o=a.length;++n<o;)a[n].call(e,i);5===r.state&&(r.on.call("end",e,e.__data__,r.index,r.group),l())}function l(){for(var a in r.state=6,r.timer.stop(),delete i[t],i)return;delete e.__transition}i[t]=r,r.timer=_i(n,0,r.time)}(e,r,{name:t,index:a,group:i,on:Li,tween:Ei,time:n.time,delay:n.delay,duration:n.duration,ease:n.ease,timer:null,state:0})}function Hi(e,t){var r=Pi(e,t);if(r.state>0)throw new Error("too late; already scheduled");return r}function Di(e,t){var r=Pi(e,t);if(r.state>3)throw new Error("too late; already running");return r}function Pi(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function Ni(e,t){var r,a,i,n=e.__transition,o=!0;if(n){for(i in t=null==t?null:t+"",n)(r=n[i]).name===t?(a=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(a?"interrupt":"cancel",e,e.__data__,r.index,r.group),delete n[i]):o=!1;o&&delete e.__transition}}function Gi(e,t){var r,a;return function(){var i=Di(this,e),n=i.tween;if(n!==r)for(var o=0,c=(a=r=n).length;o<c;++o)if(a[o].name===t){(a=a.slice()).splice(o,1);break}i.tween=a}}function Ii(e,t,r){var a,i;if("function"!=typeof r)throw new Error;return function(){var n=Di(this,e),o=n.tween;if(o!==a){i=(a=o).slice();for(var c={name:t,value:r},l=0,s=i.length;l<s;++l)if(i[l].name===t){i[l]=c;break}l===s&&i.push(c)}n.tween=i}}function Wi(e,t,r){var a=e._id;return e.each((function(){var e=Di(this,a);(e.value||(e.value={}))[t]=r.apply(this,arguments)})),function(e){return Pi(e,a).value[t]}}function Fi(e,t){var r;return("number"==typeof t?Wa:t instanceof Br?Ea:(r=Br(t))?(t=r,Ea):Ka)(e,t)}function zi(e){return function(){this.removeAttribute(e)}}function Oi(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Ki(e,t,r){var a,i,n=r+"";return function(){var o=this.getAttribute(e);return o===n?null:o===a?i:i=t(a=o,r)}}function Ji(e,t,r){var a,i,n=r+"";return function(){var o=this.getAttributeNS(e.space,e.local);return o===n?null:o===a?i:i=t(a=o,r)}}function Vi(e,t,r){var a,i,n;return function(){var o,c,l=r(this);if(null!=l)return(o=this.getAttribute(e))===(c=l+"")?null:o===a&&c===i?n:(i=c,n=t(a=o,l));this.removeAttribute(e)}}function ji(e,t,r){var a,i,n;return function(){var o,c,l=r(this);if(null!=l)return(o=this.getAttributeNS(e.space,e.local))===(c=l+"")?null:o===a&&c===i?n:(i=c,n=t(a=o,l));this.removeAttributeNS(e.space,e.local)}}function Yi(e,t){var r,a;function i(){var i=t.apply(this,arguments);return i!==a&&(r=(a=i)&&function(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}(e,i)),r}return i._value=t,i}function $i(e,t){var r,a;function i(){var i=t.apply(this,arguments);return i!==a&&(r=(a=i)&&function(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}(e,i)),r}return i._value=t,i}function Ui(e,t){return function(){Hi(this,e).delay=+t.apply(this,arguments)}}function qi(e,t){return t=+t,function(){Hi(this,e).delay=t}}function Zi(e,t){return function(){Di(this,e).duration=+t.apply(this,arguments)}}function Qi(e,t){return t=+t,function(){Di(this,e).duration=t}}var Xi=Vt.prototype.constructor;function en(e){return function(){this.style.removeProperty(e)}}var tn=0;function rn(e,t,r,a){this._groups=e,this._parents=t,this._name=r,this._id=a}function an(e){return Vt().transition(e)}function nn(){return++tn}var on=Vt.prototype;rn.prototype=an.prototype={constructor:rn,select:function(e){var t=this._name,r=this._id;"function"!=typeof e&&(e=ze(e));for(var a=this._groups,i=a.length,n=new Array(i),o=0;o<i;++o)for(var c,l,s=a[o],u=s.length,h=n[o]=new Array(u),d=0;d<u;++d)(c=s[d])&&(l=e.call(c,c.__data__,d,s))&&("__data__"in c&&(l.__data__=c.__data__),h[d]=l,Ri(h[d],t,r,d,h,Pi(c,r)));return new rn(n,this._parents,t,r)},selectAll:function(e){var t=this._name,r=this._id;"function"!=typeof e&&(e=Je(e));for(var a=this._groups,i=a.length,n=[],o=[],c=0;c<i;++c)for(var l,s=a[c],u=s.length,h=0;h<u;++h)if(l=s[h]){for(var d,p=e.call(l,l.__data__,h,s),y=Pi(l,r),f=0,m=p.length;f<m;++f)(d=p[f])&&Ri(d,t,r,f,p,y);n.push(p),o.push(l)}return new rn(n,o,t,r)},selectChild:on.selectChild,selectChildren:on.selectChildren,filter:function(e){"function"!=typeof e&&(e=Ve(e));for(var t=this._groups,r=t.length,a=new Array(r),i=0;i<r;++i)for(var n,o=t[i],c=o.length,l=a[i]=[],s=0;s<c;++s)(n=o[s])&&e.call(n,n.__data__,s,o)&&l.push(n);return new rn(a,this._parents,this._name,this._id)},merge:function(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,a=t.length,i=r.length,n=Math.min(a,i),o=new Array(a),c=0;c<n;++c)for(var l,s=t[c],u=r[c],h=s.length,d=o[c]=new Array(h),p=0;p<h;++p)(l=s[p]||u[p])&&(d[p]=l);for(;c<a;++c)o[c]=t[c];return new rn(o,this._parents,this._name,this._id)},selection:function(){return new Xi(this._groups,this._parents)},transition:function(){for(var e=this._name,t=this._id,r=nn(),a=this._groups,i=a.length,n=0;n<i;++n)for(var o,c=a[n],l=c.length,s=0;s<l;++s)if(o=c[s]){var u=Pi(o,t);Ri(o,e,r,s,c,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new rn(a,this._parents,e,r)},call:on.call,nodes:on.nodes,node:on.node,size:on.size,empty:on.empty,each:on.each,on:function(e,t){var r=this._id;return arguments.length<2?Pi(this.node(),r).on.on(e):this.each(function(e,t,r){var a,i,n=function(e){return(e+"").trim().split(/^|\s+/).every((function(e){var t=e.indexOf(".");return t>=0&&(e=e.slice(0,t)),!e||"start"===e}))}(t)?Hi:Di;return function(){var o=n(this,e),c=o.on;c!==a&&(i=(a=c).copy()).on(t,r),o.on=i}}(r,e,t))},attr:function(e,t){var r=Ne(e),a="transform"===r?Qa:Fi;return this.attrTween(e,"function"==typeof t?(r.local?ji:Vi)(r,a,Wi(this,"attr."+e,t)):null==t?(r.local?Oi:zi)(r):(r.local?Ji:Ki)(r,a,t))},attrTween:function(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==t)return this.tween(r,null);if("function"!=typeof t)throw new Error;var a=Ne(e);return this.tween(r,(a.local?Yi:$i)(a,t))},style:function(e,t,r){var a="transform"==(e+="")?Za:Fi;return null==t?this.styleTween(e,function(e,t){var r,a,i;return function(){var n=yt(this,e),o=(this.style.removeProperty(e),yt(this,e));return n===o?null:n===r&&o===a?i:i=t(r=n,a=o)}}(e,a)).on("end.style."+e,en(e)):"function"==typeof t?this.styleTween(e,function(e,t,r){var a,i,n;return function(){var o=yt(this,e),c=r(this),l=c+"";return null==c&&(this.style.removeProperty(e),l=c=yt(this,e)),o===l?null:o===a&&l===i?n:(i=l,n=t(a=o,c))}}(e,a,Wi(this,"style."+e,t))).each(function(e,t){var r,a,i,n,o="style."+t,c="end."+o;return function(){var l=Di(this,e),s=l.on,u=null==l.value[o]?n||(n=en(t)):void 0;s===r&&i===u||(a=(r=s).copy()).on(c,i=u),l.on=a}}(this._id,e)):this.styleTween(e,function(e,t,r){var a,i,n=r+"";return function(){var o=yt(this,e);return o===n?null:o===a?i:i=t(a=o,r)}}(e,a,t),r).on("end.style."+e,null)},styleTween:function(e,t,r){var a="style."+(e+="");if(arguments.length<2)return(a=this.tween(a))&&a._value;if(null==t)return this.tween(a,null);if("function"!=typeof t)throw new Error;return this.tween(a,function(e,t,r){var a,i;function n(){var n=t.apply(this,arguments);return n!==i&&(a=(i=n)&&function(e,t,r){return function(a){this.style.setProperty(e,t.call(this,a),r)}}(e,n,r)),a}return n._value=t,n}(e,t,null==r?"":r))},text:function(e){return this.tween("text","function"==typeof e?function(e){return function(){var t=e(this);this.textContent=null==t?"":t}}(Wi(this,"text",e)):function(e){return function(){this.textContent=e}}(null==e?"":e+""))},textTween:function(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(null==e)return this.tween(t,null);if("function"!=typeof e)throw new Error;return this.tween(t,function(e){var t,r;function a(){var a=e.apply(this,arguments);return a!==r&&(t=(r=a)&&function(e){return function(t){this.textContent=e.call(this,t)}}(a)),t}return a._value=e,a}(e))},remove:function(){return this.on("end.remove",function(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}(this._id))},tween:function(e,t){var r=this._id;if(e+="",arguments.length<2){for(var a,i=Pi(this.node(),r).tween,n=0,o=i.length;n<o;++n)if((a=i[n]).name===e)return a.value;return null}return this.each((null==t?Gi:Ii)(r,e,t))},delay:function(e){var t=this._id;return arguments.length?this.each(("function"==typeof e?Ui:qi)(t,e)):Pi(this.node(),t).delay},duration:function(e){var t=this._id;return arguments.length?this.each(("function"==typeof e?Zi:Qi)(t,e)):Pi(this.node(),t).duration},ease:function(e){var t=this._id;return arguments.length?this.each(function(e,t){if("function"!=typeof t)throw new Error;return function(){Di(this,e).ease=t}}(t,e)):Pi(this.node(),t).ease},easeVarying:function(e){if("function"!=typeof e)throw new Error;return this.each(function(e,t){return function(){var r=t.apply(this,arguments);if("function"!=typeof r)throw new Error;Di(this,e).ease=r}}(this._id,e))},end:function(){var e,t,r=this,a=r._id,i=r.size();return new Promise((function(n,o){var c={value:o},l={value:function(){0==--i&&n()}};r.each((function(){var r=Di(this,a),i=r.on;i!==e&&((t=(e=i).copy())._.cancel.push(c),t._.interrupt.push(c),t._.end.push(l)),r.on=t})),0===i&&n()}))},[Symbol.iterator]:on[Symbol.iterator]};function cn(e){return((e*=2)<=1?e*e:--e*(2-e)+1)/2}function ln(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var sn=function e(t){function r(e){return Math.pow(e,t)}return t=+t,r.exponent=e,r}(3),un=function e(t){function r(e){return 1-Math.pow(1-e,t)}return t=+t,r.exponent=e,r}(3),hn=function e(t){function r(e){return((e*=2)<=1?Math.pow(e,t):2-Math.pow(2-e,t))/2}return t=+t,r.exponent=e,r}(3),dn=Math.PI,pn=dn/2;function yn(e){return(1-Math.cos(dn*e))/2}function fn(e){return 1.0009775171065494*(Math.pow(2,-10*e)-.0009765625)}function mn(e){return((e*=2)<=1?fn(1-e):2-fn(e-1))/2}function gn(e){return((e*=2)<=1?1-Math.sqrt(1-e*e):Math.sqrt(1-(e-=2)*e)+1)/2}var bn=4/11,vn=6/11,xn=8/11,kn=9/11,wn=10/11,Cn=21/22,_n=7.5625;function Sn(e){return(e=+e)<bn?_n*e*e:e<xn?_n*(e-=vn)*e+.75:e<wn?_n*(e-=kn)*e+.9375:_n*(e-=Cn)*e+.984375}var An=1.70158,Mn=function e(t){function r(e){return(e=+e)*e*(t*(e-1)+e)}return t=+t,r.overshoot=e,r}(An),Tn=function e(t){function r(e){return--e*e*((e+1)*t+e)+1}return t=+t,r.overshoot=e,r}(An),Bn=function e(t){function r(e){return((e*=2)<1?e*e*((t+1)*e-t):(e-=2)*e*((t+1)*e+t)+2)/2}return t=+t,r.overshoot=e,r}(An),Ln=2*Math.PI,En=function e(t,r){var a=Math.asin(1/(t=Math.max(1,t)))*(r/=Ln);function i(e){return t*fn(- --e)*Math.sin((a-e)/r)}return i.amplitude=function(t){return e(t,r*Ln)},i.period=function(r){return e(t,r)},i}(1,.3),Rn=function e(t,r){var a=Math.asin(1/(t=Math.max(1,t)))*(r/=Ln);function i(e){return 1-t*fn(e=+e)*Math.sin((e+a)/r)}return i.amplitude=function(t){return e(t,r*Ln)},i.period=function(r){return e(t,r)},i}(1,.3),Hn=function e(t,r){var a=Math.asin(1/(t=Math.max(1,t)))*(r/=Ln);function i(e){return((e=2*e-1)<0?t*fn(-e)*Math.sin((a-e)/r):2-t*fn(e)*Math.sin((a+e)/r))/2}return i.amplitude=function(t){return e(t,r*Ln)},i.period=function(r){return e(t,r)},i}(1,.3),Dn={time:null,delay:0,duration:250,ease:ln};function Pn(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}Vt.prototype.interrupt=function(e){return this.each((function(){Ni(this,e)}))},Vt.prototype.transition=function(e){var t,r;e instanceof rn?(t=e._id,e=e._name):(t=nn(),(r=Dn).time=ki(),e=null==e?null:e+"");for(var a=this._groups,i=a.length,n=0;n<i;++n)for(var o,c=a[n],l=c.length,s=0;s<l;++s)(o=c[s])&&Ri(o,e,t,s,c,r||Pn(o,t));return new rn(a,this._parents,e,t)};var Nn=[null];var Gn=e=>()=>e;function In(e,{sourceEvent:t,target:r,selection:a,mode:i,dispatch:n}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},selection:{value:a,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:n}})}function Wn(e){e.preventDefault(),e.stopImmediatePropagation()}var Fn={name:"drag"},zn={name:"space"},On={name:"handle"},Kn={name:"center"};const{abs:Jn,max:Vn,min:jn}=Math;function Yn(e){return[+e[0],+e[1]]}function $n(e){return[Yn(e[0]),Yn(e[1])]}var Un={name:"x",handles:["w","e"].map(ao),input:function(e,t){return null==e?null:[[+e[0],t[0][1]],[+e[1],t[1][1]]]},output:function(e){return e&&[e[0][0],e[1][0]]}},qn={name:"y",handles:["n","s"].map(ao),input:function(e,t){return null==e?null:[[t[0][0],+e[0]],[t[1][0],+e[1]]]},output:function(e){return e&&[e[0][1],e[1][1]]}},Zn={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(ao),input:function(e){return null==e?null:$n(e)},output:function(e){return e}},Qn={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Xn={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},eo={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},to={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ro={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function ao(e){return{type:e}}function io(e){return!e.ctrlKey&&!e.button}function no(){var e=this.ownerSVGElement||this;return e.hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]}function oo(){return navigator.maxTouchPoints||"ontouchstart"in this}function co(e){for(;!e.__brush;)if(!(e=e.parentNode))return;return e.__brush}function lo(e){var t,r=no,a=io,i=oo,n=!0,o=Le("start","brush","end"),c=6;function l(t){var r=t.property("__brush",f).selectAll(".overlay").data([ao("overlay")]);r.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Qn.overlay).merge(r).each((function(){var e=co(this).extent;jt(this).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1])})),t.selectAll(".selection").data([ao("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Qn.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var a=t.selectAll(".handle").data(e.handles,(function(e){return e.type}));a.exit().remove(),a.enter().append("rect").attr("class",(function(e){return"handle handle--"+e.type})).attr("cursor",(function(e){return Qn[e.type]})),t.each(s).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",d).filter(i).on("touchstart.brush",d).on("touchmove.brush",p).on("touchend.brush touchcancel.brush",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function s(){var e=jt(this),t=co(this).selection;t?(e.selectAll(".selection").style("display",null).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1]),e.selectAll(".handle").style("display",null).attr("x",(function(e){return"e"===e.type[e.type.length-1]?t[1][0]-c/2:t[0][0]-c/2})).attr("y",(function(e){return"s"===e.type[0]?t[1][1]-c/2:t[0][1]-c/2})).attr("width",(function(e){return"n"===e.type||"s"===e.type?t[1][0]-t[0][0]+c:c})).attr("height",(function(e){return"e"===e.type||"w"===e.type?t[1][1]-t[0][1]+c:c}))):e.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function u(e,t,r){var a=e.__brush.emitter;return!a||r&&a.clean?new h(e,t,r):a}function h(e,t,r){this.that=e,this.args=t,this.state=e.__brush,this.active=0,this.clean=r}function d(r){if((!t||r.touches)&&a.apply(this,arguments)){var i,o,c,l,h,d,p,y,f,m,g,b=this,v=r.target.__data__.type,x="selection"===(n&&r.metaKey?v="overlay":v)?Fn:n&&r.altKey?Kn:On,k=e===qn?null:to[v],w=e===Un?null:ro[v],C=co(b),_=C.extent,S=C.selection,A=_[0][0],M=_[0][1],T=_[1][0],B=_[1][1],L=0,E=0,R=k&&w&&n&&r.shiftKey,H=Array.from(r.touches||[r],(e=>{const t=e.identifier;return(e=Qt(e,b)).point0=e.slice(),e.identifier=t,e}));Ni(b);var D=u(b,arguments,!0).beforestart();if("overlay"===v){S&&(f=!0);const t=[H[0],H[1]||H[0]];C.selection=S=[[i=e===qn?A:jn(t[0][0],t[1][0]),c=e===Un?M:jn(t[0][1],t[1][1])],[h=e===qn?T:Vn(t[0][0],t[1][0]),p=e===Un?B:Vn(t[0][1],t[1][1])]],H.length>1&&W(r)}else i=S[0][0],c=S[0][1],h=S[1][0],p=S[1][1];o=i,l=c,d=h,y=p;var P=jt(b).attr("pointer-events","none"),N=P.selectAll(".overlay").attr("cursor",Qn[v]);if(r.touches)D.moved=I,D.ended=F;else{var G=jt(r.view).on("mousemove.brush",I,!0).on("mouseup.brush",F,!0);n&&G.on("keydown.brush",(function(e){switch(e.keyCode){case 16:R=k&&w;break;case 18:x===On&&(k&&(h=d-L*k,i=o+L*k),w&&(p=y-E*w,c=l+E*w),x=Kn,W(e));break;case 32:x!==On&&x!==Kn||(k<0?h=d-L:k>0&&(i=o-L),w<0?p=y-E:w>0&&(c=l-E),x=zn,N.attr("cursor",Qn.selection),W(e));break;default:return}Wn(e)}),!0).on("keyup.brush",(function(e){switch(e.keyCode){case 16:R&&(m=g=R=!1,W(e));break;case 18:x===Kn&&(k<0?h=d:k>0&&(i=o),w<0?p=y:w>0&&(c=l),x=On,W(e));break;case 32:x===zn&&(e.altKey?(k&&(h=d-L*k,i=o+L*k),w&&(p=y-E*w,c=l+E*w),x=Kn):(k<0?h=d:k>0&&(i=o),w<0?p=y:w>0&&(c=l),x=On),N.attr("cursor",Qn[v]),W(e));break;default:return}Wn(e)}),!0),ar(r.view)}s.call(b),D.start(r,x.name)}function I(e){for(const t of e.changedTouches||[e])for(const e of H)e.identifier===t.identifier&&(e.cur=Qt(t,b));if(R&&!m&&!g&&1===H.length){const e=H[0];Jn(e.cur[0]-e[0])>Jn(e.cur[1]-e[1])?g=!0:m=!0}for(const e of H)e.cur&&(e[0]=e.cur[0],e[1]=e.cur[1]);f=!0,Wn(e),W(e)}function W(e){const t=H[0],r=t.point0;var a;switch(L=t[0]-r[0],E=t[1]-r[1],x){case zn:case Fn:k&&(L=Vn(A-i,jn(T-h,L)),o=i+L,d=h+L),w&&(E=Vn(M-c,jn(B-p,E)),l=c+E,y=p+E);break;case On:H[1]?(k&&(o=Vn(A,jn(T,H[0][0])),d=Vn(A,jn(T,H[1][0])),k=1),w&&(l=Vn(M,jn(B,H[0][1])),y=Vn(M,jn(B,H[1][1])),w=1)):(k<0?(L=Vn(A-i,jn(T-i,L)),o=i+L,d=h):k>0&&(L=Vn(A-h,jn(T-h,L)),o=i,d=h+L),w<0?(E=Vn(M-c,jn(B-c,E)),l=c+E,y=p):w>0&&(E=Vn(M-p,jn(B-p,E)),l=c,y=p+E));break;case Kn:k&&(o=Vn(A,jn(T,i-L*k)),d=Vn(A,jn(T,h+L*k))),w&&(l=Vn(M,jn(B,c-E*w)),y=Vn(M,jn(B,p+E*w)))}d<o&&(k*=-1,a=i,i=h,h=a,a=o,o=d,d=a,v in Xn&&N.attr("cursor",Qn[v=Xn[v]])),y<l&&(w*=-1,a=c,c=p,p=a,a=l,l=y,y=a,v in eo&&N.attr("cursor",Qn[v=eo[v]])),C.selection&&(S=C.selection),m&&(o=S[0][0],d=S[1][0]),g&&(l=S[0][1],y=S[1][1]),S[0][0]===o&&S[0][1]===l&&S[1][0]===d&&S[1][1]===y||(C.selection=[[o,l],[d,y]],s.call(b),D.brush(e,x.name))}function F(e){if(function(e){e.stopImmediatePropagation()}(e),e.touches){if(e.touches.length)return;t&&clearTimeout(t),t=setTimeout((function(){t=null}),500)}else ir(e.view,f),G.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);P.attr("pointer-events","all"),N.attr("cursor",Qn.overlay),C.selection&&(S=C.selection),function(e){return e[0][0]===e[1][0]||e[0][1]===e[1][1]}(S)&&(C.selection=null,s.call(b)),D.end(e,x.name)}}function p(e){u(this,arguments).moved(e)}function y(e){u(this,arguments).ended(e)}function f(){var t=this.__brush||{selection:null};return t.extent=$n(r.apply(this,arguments)),t.dim=e,t}return l.move=function(t,r,a){t.tween?t.on("start.brush",(function(e){u(this,arguments).beforestart().start(e)})).on("interrupt.brush end.brush",(function(e){u(this,arguments).end(e)})).tween("brush",(function(){var t=this,a=t.__brush,i=u(t,arguments),n=a.selection,o=e.input("function"==typeof r?r.apply(this,arguments):r,a.extent),c=Ja(n,o);function l(e){a.selection=1===e&&null===o?null:c(e),s.call(t),i.brush()}return null!==n&&null!==o?l:l(1)})):t.each((function(){var t=this,i=arguments,n=t.__brush,o=e.input("function"==typeof r?r.apply(t,i):r,n.extent),c=u(t,i).beforestart();Ni(t),n.selection=null===o?null:o,s.call(t),c.start(a).brush(a).end(a)}))},l.clear=function(e,t){l.move(e,null,t)},h.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(e,t){return this.starting?(this.starting=!1,this.emit("start",e,t)):this.emit("brush",e),this},brush:function(e,t){return this.emit("brush",e,t),this},end:function(e,t){return 0==--this.active&&(delete this.state.emitter,this.emit("end",e,t)),this},emit:function(t,r,a){var i=jt(this.that).datum();o.call(t,this.that,new In(t,{sourceEvent:r,target:l,selection:e.output(this.state.selection),mode:a,dispatch:o}),i)}},l.extent=function(e){return arguments.length?(r="function"==typeof e?e:Gn($n(e)),l):r},l.filter=function(e){return arguments.length?(a="function"==typeof e?e:Gn(!!e),l):a},l.touchable=function(e){return arguments.length?(i="function"==typeof e?e:Gn(!!e),l):i},l.handleSize=function(e){return arguments.length?(c=+e,l):c},l.keyModifiers=function(e){return arguments.length?(n=!!e,l):n},l.on=function(){var e=o.on.apply(o,arguments);return e===o?l:e},l}var so=Math.abs,uo=Math.cos,ho=Math.sin,po=Math.PI,yo=po/2,fo=2*po,mo=Math.max,go=1e-12;function bo(e,t){return Array.from({length:t-e},((t,r)=>e+r))}function vo(e,t){var r=0,a=null,i=null,n=null;function o(o){var c,l=o.length,s=new Array(l),u=bo(0,l),h=new Array(l*l),d=new Array(l),p=0;o=Float64Array.from({length:l*l},t?(e,t)=>o[t%l][t/l|0]:(e,t)=>o[t/l|0][t%l]);for(let t=0;t<l;++t){let r=0;for(let a=0;a<l;++a)r+=o[t*l+a]+e*o[a*l+t];p+=s[t]=r}c=(p=mo(0,fo-r*l)/p)?r:fo/l;{let t=0;a&&u.sort(((e,t)=>a(s[e],s[t])));for(const r of u){const a=t;if(e){const e=bo(1+~l,l).filter((e=>e<0?o[~e*l+r]:o[r*l+e]));i&&e.sort(((e,t)=>i(e<0?-o[~e*l+r]:o[r*l+e],t<0?-o[~t*l+r]:o[r*l+t])));for(const a of e)if(a<0){(h[~a*l+r]||(h[~a*l+r]={source:null,target:null})).target={index:r,startAngle:t,endAngle:t+=o[~a*l+r]*p,value:o[~a*l+r]}}else{(h[r*l+a]||(h[r*l+a]={source:null,target:null})).source={index:r,startAngle:t,endAngle:t+=o[r*l+a]*p,value:o[r*l+a]}}d[r]={index:r,startAngle:a,endAngle:t,value:s[r]}}else{const e=bo(0,l).filter((e=>o[r*l+e]||o[e*l+r]));i&&e.sort(((e,t)=>i(o[r*l+e],o[r*l+t])));for(const a of e){let e;if(r<a?(e=h[r*l+a]||(h[r*l+a]={source:null,target:null}),e.source={index:r,startAngle:t,endAngle:t+=o[r*l+a]*p,value:o[r*l+a]}):(e=h[a*l+r]||(h[a*l+r]={source:null,target:null}),e.target={index:r,startAngle:t,endAngle:t+=o[r*l+a]*p,value:o[r*l+a]},r===a&&(e.source=e.target)),e.source&&e.target&&e.source.value<e.target.value){const t=e.source;e.source=e.target,e.target=t}}d[r]={index:r,startAngle:a,endAngle:t,value:s[r]}}t+=c}}return(h=Object.values(h)).groups=d,n?h.sort(n):h}return o.padAngle=function(e){return arguments.length?(r=mo(0,e),o):r},o.sortGroups=function(e){return arguments.length?(a=e,o):a},o.sortSubgroups=function(e){return arguments.length?(i=e,o):i},o.sortChords=function(e){return arguments.length?(null==e?n=null:(t=e,n=function(e,r){return t(e.source.value+e.target.value,r.source.value+r.target.value)})._=e,o):n&&n._;var t},o}const xo=Math.PI,ko=2*xo,wo=1e-6,Co=ko-wo;function _o(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}let So=class{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==e?_o:function(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return _o;const r=10**t;return function(e){this._+=e[0];for(let t=1,a=e.length;t<a;++t)this._+=Math.round(arguments[t]*r)/r+e[t]}}(e)}moveTo(e,t){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,t){this._append`L${this._x1=+e},${this._y1=+t}`}quadraticCurveTo(e,t,r,a){this._append`Q${+e},${+t},${this._x1=+r},${this._y1=+a}`}bezierCurveTo(e,t,r,a,i,n){this._append`C${+e},${+t},${+r},${+a},${this._x1=+i},${this._y1=+n}`}arcTo(e,t,r,a,i){if(e=+e,t=+t,r=+r,a=+a,(i=+i)<0)throw new Error(`negative radius: ${i}`);let n=this._x1,o=this._y1,c=r-e,l=a-t,s=n-e,u=o-t,h=s*s+u*u;if(null===this._x1)this._append`M${this._x1=e},${this._y1=t}`;else if(h>wo)if(Math.abs(u*c-l*s)>wo&&i){let d=r-n,p=a-o,y=c*c+l*l,f=d*d+p*p,m=Math.sqrt(y),g=Math.sqrt(h),b=i*Math.tan((xo-Math.acos((y+h-f)/(2*m*g)))/2),v=b/g,x=b/m;Math.abs(v-1)>wo&&this._append`L${e+v*s},${t+v*u}`,this._append`A${i},${i},0,0,${+(u*d>s*p)},${this._x1=e+x*c},${this._y1=t+x*l}`}else this._append`L${this._x1=e},${this._y1=t}`;else;}arc(e,t,r,a,i,n){if(e=+e,t=+t,n=!!n,(r=+r)<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(a),c=r*Math.sin(a),l=e+o,s=t+c,u=1^n,h=n?a-i:i-a;null===this._x1?this._append`M${l},${s}`:(Math.abs(this._x1-l)>wo||Math.abs(this._y1-s)>wo)&&this._append`L${l},${s}`,r&&(h<0&&(h=h%ko+ko),h>Co?this._append`A${r},${r},0,1,${u},${e-o},${t-c}A${r},${r},0,1,${u},${this._x1=l},${this._y1=s}`:h>wo&&this._append`A${r},${r},0,${+(h>=xo)},${u},${this._x1=e+r*Math.cos(i)},${this._y1=t+r*Math.sin(i)}`)}rect(e,t,r,a){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${r=+r}v${+a}h${-r}Z`}toString(){return this._}};function Ao(){return new So}Ao.prototype=So.prototype;var Mo=Array.prototype.slice;function To(e){return function(){return e}}function Bo(e){return e.source}function Lo(e){return e.target}function Eo(e){return e.radius}function Ro(e){return e.startAngle}function Ho(e){return e.endAngle}function Do(){return 0}function Po(){return 10}function No(e){var t=Bo,r=Lo,a=Eo,i=Eo,n=Ro,o=Ho,c=Do,l=null;function s(){var s,u=t.apply(this,arguments),h=r.apply(this,arguments),d=c.apply(this,arguments)/2,p=Mo.call(arguments),y=+a.apply(this,(p[0]=u,p)),f=n.apply(this,p)-yo,m=o.apply(this,p)-yo,g=+i.apply(this,(p[0]=h,p)),b=n.apply(this,p)-yo,v=o.apply(this,p)-yo;if(l||(l=s=Ao()),d>go&&(so(m-f)>2*d+go?m>f?(f+=d,m-=d):(f-=d,m+=d):f=m=(f+m)/2,so(v-b)>2*d+go?v>b?(b+=d,v-=d):(b-=d,v+=d):b=v=(b+v)/2),l.moveTo(y*uo(f),y*ho(f)),l.arc(0,0,y,f,m),f!==b||m!==v)if(e){var x=g-+e.apply(this,arguments),k=(b+v)/2;l.quadraticCurveTo(0,0,x*uo(b),x*ho(b)),l.lineTo(g*uo(k),g*ho(k)),l.lineTo(x*uo(v),x*ho(v))}else l.quadraticCurveTo(0,0,g*uo(b),g*ho(b)),l.arc(0,0,g,b,v);if(l.quadraticCurveTo(0,0,y*uo(f),y*ho(f)),l.closePath(),s)return l=null,s+""||null}return e&&(s.headRadius=function(t){return arguments.length?(e="function"==typeof t?t:To(+t),s):e}),s.radius=function(e){return arguments.length?(a=i="function"==typeof e?e:To(+e),s):a},s.sourceRadius=function(e){return arguments.length?(a="function"==typeof e?e:To(+e),s):a},s.targetRadius=function(e){return arguments.length?(i="function"==typeof e?e:To(+e),s):i},s.startAngle=function(e){return arguments.length?(n="function"==typeof e?e:To(+e),s):n},s.endAngle=function(e){return arguments.length?(o="function"==typeof e?e:To(+e),s):o},s.padAngle=function(e){return arguments.length?(c="function"==typeof e?e:To(+e),s):c},s.source=function(e){return arguments.length?(t=e,s):t},s.target=function(e){return arguments.length?(r=e,s):r},s.context=function(e){return arguments.length?(l=null==e?null:e,s):l},s}var Go=Array.prototype.slice;function Io(e,t){return e-t}var Wo=e=>()=>e;function Fo(e,t){for(var r,a=-1,i=t.length;++a<i;)if(r=zo(e,t[a]))return r;return 0}function zo(e,t){for(var r=t[0],a=t[1],i=-1,n=0,o=e.length,c=o-1;n<o;c=n++){var l=e[n],s=l[0],u=l[1],h=e[c],d=h[0],p=h[1];if(Oo(l,h,t))return 0;u>a!=p>a&&r<(d-s)*(a-u)/(p-u)+s&&(i=-i)}return i}function Oo(e,t,r){var a;return function(e,t,r){return(t[0]-e[0])*(r[1]-e[1])==(r[0]-e[0])*(t[1]-e[1])}(e,t,r)&&function(e,t,r){return e<=t&&t<=r||r<=t&&t<=e}(e[a=+(e[0]===t[0])],r[a],t[a])}function Ko(){}var Jo=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Vo(){var e=1,t=1,r=Q,a=c;function i(e){var t=r(e);if(Array.isArray(t))t=t.slice().sort(Io);else{const r=w(e,jo);for(t=$(...Z(r[0],r[1],t),t);t[t.length-1]>=r[1];)t.pop();for(;t[1]<r[0];)t.shift()}return t.map((t=>n(e,t)))}function n(r,i){const n=null==i?NaN:+i;if(isNaN(n))throw new Error(`invalid value: ${i}`);var c=[],l=[];return function(r,a,i){var n,c,l,s,u,h,d=new Array,p=new Array;n=c=-1,s=Yo(r[0],a),Jo[s<<1].forEach(y);for(;++n<e-1;)l=s,s=Yo(r[n+1],a),Jo[l|s<<1].forEach(y);Jo[s|0].forEach(y);for(;++c<t-1;){for(n=-1,s=Yo(r[c*e+e],a),u=Yo(r[c*e],a),Jo[s<<1|u<<2].forEach(y);++n<e-1;)l=s,s=Yo(r[c*e+e+n+1],a),h=u,u=Yo(r[c*e+n+1],a),Jo[l|s<<1|u<<2|h<<3].forEach(y);Jo[s|u<<3].forEach(y)}n=-1,u=r[c*e]>=a,Jo[u<<2].forEach(y);for(;++n<e-1;)h=u,u=Yo(r[c*e+n+1],a),Jo[u<<2|h<<3].forEach(y);function y(e){var t,r,a=[e[0][0]+n,e[0][1]+c],l=[e[1][0]+n,e[1][1]+c],s=o(a),u=o(l);(t=p[s])?(r=d[u])?(delete p[t.end],delete d[r.start],t===r?(t.ring.push(l),i(t.ring)):d[t.start]=p[r.end]={start:t.start,end:r.end,ring:t.ring.concat(r.ring)}):(delete p[t.end],t.ring.push(l),p[t.end=u]=t):(t=d[u])?(r=p[s])?(delete d[t.start],delete p[r.end],t===r?(t.ring.push(l),i(t.ring)):d[r.start]=p[t.end]={start:r.start,end:t.end,ring:r.ring.concat(t.ring)}):(delete d[t.start],t.ring.unshift(a),d[t.start=s]=t):d[s]=p[u]={start:s,end:u,ring:[a,l]}}Jo[u<<3].forEach(y)}(r,n,(function(e){a(e,r,n),function(e){for(var t=0,r=e.length,a=e[r-1][1]*e[0][0]-e[r-1][0]*e[0][1];++t<r;)a+=e[t-1][1]*e[t][0]-e[t-1][0]*e[t][1];return a}(e)>0?c.push([e]):l.push(e)})),l.forEach((function(e){for(var t,r=0,a=c.length;r<a;++r)if(-1!==Fo((t=c[r])[0],e))return void t.push(e)})),{type:"MultiPolygon",value:i,coordinates:c}}function o(t){return 2*t[0]+t[1]*(e+1)*4}function c(r,a,i){r.forEach((function(r){var n=r[0],o=r[1],c=0|n,l=0|o,s=$o(a[l*e+c]);n>0&&n<e&&c===n&&(r[0]=Uo(n,$o(a[l*e+c-1]),s,i)),o>0&&o<t&&l===o&&(r[1]=Uo(o,$o(a[(l-1)*e+c]),s,i))}))}return i.contour=n,i.size=function(r){if(!arguments.length)return[e,t];var a=Math.floor(r[0]),n=Math.floor(r[1]);if(!(a>=0&&n>=0))throw new Error("invalid size");return e=a,t=n,i},i.thresholds=function(e){return arguments.length?(r="function"==typeof e?e:Array.isArray(e)?Wo(Go.call(e)):Wo(e),i):r},i.smooth=function(e){return arguments.length?(a=e?c:Ko,i):a===c},i}function jo(e){return isFinite(e)?e:NaN}function Yo(e,t){return null!=e&&+e>=t}function $o(e){return null==e||isNaN(e=+e)?-1/0:e}function Uo(e,t,r,a){const i=a-t,n=r-t,o=isFinite(i)||isFinite(n)?i/n:Math.sign(i)/Math.sign(n);return isNaN(o)?e:e+o-.5}function qo(e){return e[0]}function Zo(e){return e[1]}function Qo(){return 1}const Xo=134217729;function ec(e,t,r,a,i){let n,o,c,l,s=t[0],u=a[0],h=0,d=0;u>s==u>-s?(n=s,s=t[++h]):(n=u,u=a[++d]);let p=0;if(h<e&&d<r)for(u>s==u>-s?(o=s+n,c=n-(o-s),s=t[++h]):(o=u+n,c=n-(o-u),u=a[++d]),n=o,0!==c&&(i[p++]=c);h<e&&d<r;)u>s==u>-s?(o=n+s,l=o-n,c=n-(o-l)+(s-l),s=t[++h]):(o=n+u,l=o-n,c=n-(o-l)+(u-l),u=a[++d]),n=o,0!==c&&(i[p++]=c);for(;h<e;)o=n+s,l=o-n,c=n-(o-l)+(s-l),s=t[++h],n=o,0!==c&&(i[p++]=c);for(;d<r;)o=n+u,l=o-n,c=n-(o-l)+(u-l),u=a[++d],n=o,0!==c&&(i[p++]=c);return 0===n&&0!==p||(i[p++]=n),p}function tc(e){return new Float64Array(e)}const rc=tc(4),ac=tc(8),ic=tc(12),nc=tc(16),oc=tc(4);function cc(e,t,r,a,i,n){const o=(t-n)*(r-i),c=(e-i)*(a-n),l=o-c,s=Math.abs(o+c);return Math.abs(l)>=33306690738754716e-32*s?l:-function(e,t,r,a,i,n,o){let c,l,s,u,h,d,p,y,f,m,g,b,v,x,k,w,C,_;const S=e-i,A=r-i,M=t-n,T=a-n;x=S*T,d=Xo*S,p=d-(d-S),y=S-p,d=Xo*T,f=d-(d-T),m=T-f,k=y*m-(x-p*f-y*f-p*m),w=M*A,d=Xo*M,p=d-(d-M),y=M-p,d=Xo*A,f=d-(d-A),m=A-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,rc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,rc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,rc[2]=b-(_-h)+(g-h),rc[3]=_;let B=function(e,t){let r=t[0];for(let a=1;a<e;a++)r+=t[a];return r}(4,rc),L=22204460492503146e-32*o;if(B>=L||-B>=L)return B;if(h=e-S,c=e-(S+h)+(h-i),h=r-A,s=r-(A+h)+(h-i),h=t-M,l=t-(M+h)+(h-n),h=a-T,u=a-(T+h)+(h-n),0===c&&0===l&&0===s&&0===u)return B;if(L=11093356479670487e-47*o+33306690738754706e-32*Math.abs(B),B+=S*u+T*c-(M*s+A*l),B>=L||-B>=L)return B;x=c*T,d=Xo*c,p=d-(d-c),y=c-p,d=Xo*T,f=d-(d-T),m=T-f,k=y*m-(x-p*f-y*f-p*m),w=l*A,d=Xo*l,p=d-(d-l),y=l-p,d=Xo*A,f=d-(d-A),m=A-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,oc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,oc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,oc[2]=b-(_-h)+(g-h),oc[3]=_;const E=ec(4,rc,4,oc,ac);x=S*u,d=Xo*S,p=d-(d-S),y=S-p,d=Xo*u,f=d-(d-u),m=u-f,k=y*m-(x-p*f-y*f-p*m),w=M*s,d=Xo*M,p=d-(d-M),y=M-p,d=Xo*s,f=d-(d-s),m=s-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,oc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,oc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,oc[2]=b-(_-h)+(g-h),oc[3]=_;const R=ec(E,ac,4,oc,ic);x=c*u,d=Xo*c,p=d-(d-c),y=c-p,d=Xo*u,f=d-(d-u),m=u-f,k=y*m-(x-p*f-y*f-p*m),w=l*s,d=Xo*l,p=d-(d-l),y=l-p,d=Xo*s,f=d-(d-s),m=s-f,C=y*m-(w-p*f-y*f-p*m),g=k-C,h=k-g,oc[0]=k-(g+h)+(h-C),b=x+g,h=b-x,v=x-(b-h)+(g-h),g=v-w,h=v-g,oc[1]=v-(g+h)+(h-w),_=b+g,h=_-b,oc[2]=b-(_-h)+(g-h),oc[3]=_;const H=ec(R,ic,4,oc,nc);return nc[H-1]}(e,t,r,a,i,n,s)}const lc=Math.pow(2,-52),sc=new Uint32Array(512);class uc{static from(e,t=mc,r=gc){const a=e.length,i=new Float64Array(2*a);for(let n=0;n<a;n++){const a=e[n];i[2*n]=t(a),i[2*n+1]=r(a)}return new uc(i)}constructor(e){const t=e.length>>1;if(t>0&&"number"!=typeof e[0])throw new Error("Expected coords to contain numbers.");this.coords=e;const r=Math.max(2*t-5,0);this._triangles=new Uint32Array(3*r),this._halfedges=new Int32Array(3*r),this._hashSize=Math.ceil(Math.sqrt(t)),this._hullPrev=new Uint32Array(t),this._hullNext=new Uint32Array(t),this._hullTri=new Uint32Array(t),this._hullHash=new Int32Array(this._hashSize),this._ids=new Uint32Array(t),this._dists=new Float64Array(t),this.update()}update(){const{coords:e,_hullPrev:t,_hullNext:r,_hullTri:a,_hullHash:i}=this,n=e.length>>1;let o=1/0,c=1/0,l=-1/0,s=-1/0;for(let t=0;t<n;t++){const r=e[2*t],a=e[2*t+1];r<o&&(o=r),a<c&&(c=a),r>l&&(l=r),a>s&&(s=a),this._ids[t]=t}const u=(o+l)/2,h=(c+s)/2;let d,p,y;for(let t=0,r=1/0;t<n;t++){const a=hc(u,h,e[2*t],e[2*t+1]);a<r&&(d=t,r=a)}const f=e[2*d],m=e[2*d+1];for(let t=0,r=1/0;t<n;t++){if(t===d)continue;const a=hc(f,m,e[2*t],e[2*t+1]);a<r&&a>0&&(p=t,r=a)}let g=e[2*p],b=e[2*p+1],v=1/0;for(let t=0;t<n;t++){if(t===d||t===p)continue;const r=pc(f,m,g,b,e[2*t],e[2*t+1]);r<v&&(y=t,v=r)}let x=e[2*y],k=e[2*y+1];if(v===1/0){for(let t=0;t<n;t++)this._dists[t]=e[2*t]-e[0]||e[2*t+1]-e[1];yc(this._ids,this._dists,0,n-1);const t=new Uint32Array(n);let r=0;for(let e=0,a=-1/0;e<n;e++){const i=this._ids[e],n=this._dists[i];n>a&&(t[r++]=i,a=n)}return this.hull=t.subarray(0,r),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(cc(f,m,g,b,x,k)<0){const e=p,t=g,r=b;p=y,g=x,b=k,y=e,x=t,k=r}const w=function(e,t,r,a,i,n){const o=r-e,c=a-t,l=i-e,s=n-t,u=o*o+c*c,h=l*l+s*s,d=.5/(o*s-c*l),p=e+(s*u-c*h)*d,y=t+(o*h-l*u)*d;return{x:p,y:y}}(f,m,g,b,x,k);this._cx=w.x,this._cy=w.y;for(let t=0;t<n;t++)this._dists[t]=hc(e[2*t],e[2*t+1],w.x,w.y);yc(this._ids,this._dists,0,n-1),this._hullStart=d;let C=3;r[d]=t[y]=p,r[p]=t[d]=y,r[y]=t[p]=d,a[d]=0,a[p]=1,a[y]=2,i.fill(-1),i[this._hashKey(f,m)]=d,i[this._hashKey(g,b)]=p,i[this._hashKey(x,k)]=y,this.trianglesLen=0,this._addTriangle(d,p,y,-1,-1,-1);for(let n,o,c=0;c<this._ids.length;c++){const l=this._ids[c],s=e[2*l],u=e[2*l+1];if(c>0&&Math.abs(s-n)<=lc&&Math.abs(u-o)<=lc)continue;if(n=s,o=u,l===d||l===p||l===y)continue;let h=0;for(let e=0,t=this._hashKey(s,u);e<this._hashSize&&(h=i[(t+e)%this._hashSize],-1===h||h===r[h]);e++);h=t[h];let f,m=h;for(;f=r[m],cc(s,u,e[2*m],e[2*m+1],e[2*f],e[2*f+1])>=0;)if(m=f,m===h){m=-1;break}if(-1===m)continue;let g=this._addTriangle(m,l,r[m],-1,-1,a[m]);a[l]=this._legalize(g+2),a[m]=g,C++;let b=r[m];for(;f=r[b],cc(s,u,e[2*b],e[2*b+1],e[2*f],e[2*f+1])<0;)g=this._addTriangle(b,l,f,a[l],-1,a[b]),a[l]=this._legalize(g+2),r[b]=b,C--,b=f;if(m===h)for(;f=t[m],cc(s,u,e[2*f],e[2*f+1],e[2*m],e[2*m+1])<0;)g=this._addTriangle(f,l,m,-1,a[m],a[f]),this._legalize(g+2),a[f]=g,r[m]=m,C--,m=f;this._hullStart=t[l]=m,r[m]=t[b]=l,r[l]=b,i[this._hashKey(s,u)]=l,i[this._hashKey(e[2*m],e[2*m+1])]=m}this.hull=new Uint32Array(C);for(let e=0,t=this._hullStart;e<C;e++)this.hull[e]=t,t=r[t];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(e,t){return Math.floor(function(e,t){const r=e/(Math.abs(e)+Math.abs(t));return(t>0?3-r:1+r)/4}(e-this._cx,t-this._cy)*this._hashSize)%this._hashSize}_legalize(e){const{_triangles:t,_halfedges:r,coords:a}=this;let i=0,n=0;for(;;){const o=r[e],c=e-e%3;if(n=c+(e+2)%3,-1===o){if(0===i)break;e=sc[--i];continue}const l=o-o%3,s=c+(e+1)%3,u=l+(o+2)%3,h=t[n],d=t[e],p=t[s],y=t[u];if(dc(a[2*h],a[2*h+1],a[2*d],a[2*d+1],a[2*p],a[2*p+1],a[2*y],a[2*y+1])){t[e]=y,t[o]=h;const a=r[u];if(-1===a){let t=this._hullStart;do{if(this._hullTri[t]===u){this._hullTri[t]=e;break}t=this._hullPrev[t]}while(t!==this._hullStart)}this._link(e,a),this._link(o,r[n]),this._link(n,u);const c=l+(o+1)%3;i<sc.length&&(sc[i++]=c)}else{if(0===i)break;e=sc[--i]}}return n}_link(e,t){this._halfedges[e]=t,-1!==t&&(this._halfedges[t]=e)}_addTriangle(e,t,r,a,i,n){const o=this.trianglesLen;return this._triangles[o]=e,this._triangles[o+1]=t,this._triangles[o+2]=r,this._link(o,a),this._link(o+1,i),this._link(o+2,n),this.trianglesLen+=3,o}}function hc(e,t,r,a){const i=e-r,n=t-a;return i*i+n*n}function dc(e,t,r,a,i,n,o,c){const l=e-o,s=t-c,u=r-o,h=a-c,d=i-o,p=n-c,y=u*u+h*h,f=d*d+p*p;return l*(h*f-y*p)-s*(u*f-y*d)+(l*l+s*s)*(u*p-h*d)<0}function pc(e,t,r,a,i,n){const o=r-e,c=a-t,l=i-e,s=n-t,u=o*o+c*c,h=l*l+s*s,d=.5/(o*s-c*l),p=(s*u-c*h)*d,y=(o*h-l*u)*d;return p*p+y*y}function yc(e,t,r,a){if(a-r<=20)for(let i=r+1;i<=a;i++){const a=e[i],n=t[a];let o=i-1;for(;o>=r&&t[e[o]]>n;)e[o+1]=e[o--];e[o+1]=a}else{let i=r+1,n=a;fc(e,r+a>>1,i),t[e[r]]>t[e[a]]&&fc(e,r,a),t[e[i]]>t[e[a]]&&fc(e,i,a),t[e[r]]>t[e[i]]&&fc(e,r,i);const o=e[i],c=t[o];for(;;){do{i++}while(t[e[i]]<c);do{n--}while(t[e[n]]>c);if(n<i)break;fc(e,i,n)}e[r+1]=e[n],e[n]=o,a-i+1>=n-r?(yc(e,t,i,a),yc(e,t,r,n-1)):(yc(e,t,r,n-1),yc(e,t,i,a))}}function fc(e,t,r){const a=e[t];e[t]=e[r],e[r]=a}function mc(e){return e[0]}function gc(e){return e[1]}const bc=1e-6;class vc{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(e,t){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(e,t){this._+=`L${this._x1=+e},${this._y1=+t}`}arc(e,t,r){const a=(e=+e)+(r=+r),i=t=+t;if(r<0)throw new Error("negative radius");null===this._x1?this._+=`M${a},${i}`:(Math.abs(this._x1-a)>bc||Math.abs(this._y1-i)>bc)&&(this._+="L"+a+","+i),r&&(this._+=`A${r},${r},0,1,1,${e-r},${t}A${r},${r},0,1,1,${this._x1=a},${this._y1=i}`)}rect(e,t,r,a){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${+r}v${+a}h${-r}Z`}value(){return this._||null}}class xc{constructor(){this._=[]}moveTo(e,t){this._.push([e,t])}closePath(){this._.push(this._[0].slice())}lineTo(e,t){this._.push([e,t])}value(){return this._.length?this._:null}}class kc{constructor(e,[t,r,a,i]=[0,0,960,500]){if(!((a=+a)>=(t=+t)&&(i=+i)>=(r=+r)))throw new Error("invalid bounds");this.delaunay=e,this._circumcenters=new Float64Array(2*e.points.length),this.vectors=new Float64Array(2*e.points.length),this.xmax=a,this.xmin=t,this.ymax=i,this.ymin=r,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:e,hull:t,triangles:r},vectors:a}=this;let i,n;const o=this.circumcenters=this._circumcenters.subarray(0,r.length/3*2);for(let a,c,l=0,s=0,u=r.length;l<u;l+=3,s+=2){const u=2*r[l],h=2*r[l+1],d=2*r[l+2],p=e[u],y=e[u+1],f=e[h],m=e[h+1],g=e[d],b=e[d+1],v=f-p,x=m-y,k=g-p,w=b-y,C=2*(v*w-x*k);if(Math.abs(C)<1e-9){if(void 0===i){i=n=0;for(const r of t)i+=e[2*r],n+=e[2*r+1];i/=t.length,n/=t.length}const r=1e9*Math.sign((i-p)*w-(n-y)*k);a=(p+g)/2-r*w,c=(y+b)/2+r*k}else{const e=1/C,t=v*v+x*x,r=k*k+w*w;a=p+(w*t-x*r)*e,c=y+(v*r-k*t)*e}o[s]=a,o[s+1]=c}let c,l,s,u=t[t.length-1],h=4*u,d=e[2*u],p=e[2*u+1];a.fill(0);for(let r=0;r<t.length;++r)u=t[r],c=h,l=d,s=p,h=4*u,d=e[2*u],p=e[2*u+1],a[c+2]=a[h]=s-p,a[c+3]=a[h+1]=d-l}render(e){const t=null==e?e=new vc:void 0,{delaunay:{halfedges:r,inedges:a,hull:i},circumcenters:n,vectors:o}=this;if(i.length<=1)return null;for(let t=0,a=r.length;t<a;++t){const a=r[t];if(a<t)continue;const i=2*Math.floor(t/3),o=2*Math.floor(a/3),c=n[i],l=n[i+1],s=n[o],u=n[o+1];this._renderSegment(c,l,s,u,e)}let c,l=i[i.length-1];for(let t=0;t<i.length;++t){c=l,l=i[t];const r=2*Math.floor(a[l]/3),s=n[r],u=n[r+1],h=4*c,d=this._project(s,u,o[h+2],o[h+3]);d&&this._renderSegment(s,u,d[0],d[1],e)}return t&&t.value()}renderBounds(e){const t=null==e?e=new vc:void 0;return e.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),t&&t.value()}renderCell(e,t){const r=null==t?t=new vc:void 0,a=this._clip(e);if(null===a||!a.length)return;t.moveTo(a[0],a[1]);let i=a.length;for(;a[0]===a[i-2]&&a[1]===a[i-1]&&i>1;)i-=2;for(let e=2;e<i;e+=2)a[e]===a[e-2]&&a[e+1]===a[e-1]||t.lineTo(a[e],a[e+1]);return t.closePath(),r&&r.value()}*cellPolygons(){const{delaunay:{points:e}}=this;for(let t=0,r=e.length/2;t<r;++t){const e=this.cellPolygon(t);e&&(e.index=t,yield e)}}cellPolygon(e){const t=new xc;return this.renderCell(e,t),t.value()}_renderSegment(e,t,r,a,i){let n;const o=this._regioncode(e,t),c=this._regioncode(r,a);0===o&&0===c?(i.moveTo(e,t),i.lineTo(r,a)):(n=this._clipSegment(e,t,r,a,o,c))&&(i.moveTo(n[0],n[1]),i.lineTo(n[2],n[3]))}contains(e,t,r){return(t=+t)==t&&(r=+r)==r&&this.delaunay._step(e,t,r)===e}*neighbors(e){const t=this._clip(e);if(t)for(const r of this.delaunay.neighbors(e)){const e=this._clip(r);if(e)e:for(let a=0,i=t.length;a<i;a+=2)for(let n=0,o=e.length;n<o;n+=2)if(t[a]===e[n]&&t[a+1]===e[n+1]&&t[(a+2)%i]===e[(n+o-2)%o]&&t[(a+3)%i]===e[(n+o-1)%o]){yield r;break e}}}_cell(e){const{circumcenters:t,delaunay:{inedges:r,halfedges:a,triangles:i}}=this,n=r[e];if(-1===n)return null;const o=[];let c=n;do{const r=Math.floor(c/3);if(o.push(t[2*r],t[2*r+1]),c=c%3==2?c-2:c+1,i[c]!==e)break;c=a[c]}while(c!==n&&-1!==c);return o}_clip(e){if(0===e&&1===this.delaunay.hull.length)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const t=this._cell(e);if(null===t)return null;const{vectors:r}=this,a=4*e;return this._simplify(r[a]||r[a+1]?this._clipInfinite(e,t,r[a],r[a+1],r[a+2],r[a+3]):this._clipFinite(e,t))}_clipFinite(e,t){const r=t.length;let a,i,n,o,c=null,l=t[r-2],s=t[r-1],u=this._regioncode(l,s),h=0;for(let d=0;d<r;d+=2)if(a=l,i=s,l=t[d],s=t[d+1],n=u,u=this._regioncode(l,s),0===n&&0===u)o=h,h=0,c?c.push(l,s):c=[l,s];else{let t,r,d,p,y;if(0===n){if(null===(t=this._clipSegment(a,i,l,s,n,u)))continue;[r,d,p,y]=t}else{if(null===(t=this._clipSegment(l,s,a,i,u,n)))continue;[p,y,r,d]=t,o=h,h=this._edgecode(r,d),o&&h&&this._edge(e,o,h,c,c.length),c?c.push(r,d):c=[r,d]}o=h,h=this._edgecode(p,y),o&&h&&this._edge(e,o,h,c,c.length),c?c.push(p,y):c=[p,y]}if(c)o=h,h=this._edgecode(c[0],c[1]),o&&h&&this._edge(e,o,h,c,c.length);else if(this.contains(e,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return c}_clipSegment(e,t,r,a,i,n){const o=i<n;for(o&&([e,t,r,a,i,n]=[r,a,e,t,n,i]);;){if(0===i&&0===n)return o?[r,a,e,t]:[e,t,r,a];if(i&n)return null;let c,l,s=i||n;8&s?(c=e+(r-e)*(this.ymax-t)/(a-t),l=this.ymax):4&s?(c=e+(r-e)*(this.ymin-t)/(a-t),l=this.ymin):2&s?(l=t+(a-t)*(this.xmax-e)/(r-e),c=this.xmax):(l=t+(a-t)*(this.xmin-e)/(r-e),c=this.xmin),i?(e=c,t=l,i=this._regioncode(e,t)):(r=c,a=l,n=this._regioncode(r,a))}}_clipInfinite(e,t,r,a,i,n){let o,c=Array.from(t);if((o=this._project(c[0],c[1],r,a))&&c.unshift(o[0],o[1]),(o=this._project(c[c.length-2],c[c.length-1],i,n))&&c.push(o[0],o[1]),c=this._clipFinite(e,c))for(let t,r=0,a=c.length,i=this._edgecode(c[a-2],c[a-1]);r<a;r+=2)t=i,i=this._edgecode(c[r],c[r+1]),t&&i&&(r=this._edge(e,t,i,c,r),a=c.length);else this.contains(e,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(c=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return c}_edge(e,t,r,a,i){for(;t!==r;){let r,n;switch(t){case 5:t=4;continue;case 4:t=6,r=this.xmax,n=this.ymin;break;case 6:t=2;continue;case 2:t=10,r=this.xmax,n=this.ymax;break;case 10:t=8;continue;case 8:t=9,r=this.xmin,n=this.ymax;break;case 9:t=1;continue;case 1:t=5,r=this.xmin,n=this.ymin}a[i]===r&&a[i+1]===n||!this.contains(e,r,n)||(a.splice(i,0,r,n),i+=2)}return i}_project(e,t,r,a){let i,n,o,c=1/0;if(a<0){if(t<=this.ymin)return null;(i=(this.ymin-t)/a)<c&&(o=this.ymin,n=e+(c=i)*r)}else if(a>0){if(t>=this.ymax)return null;(i=(this.ymax-t)/a)<c&&(o=this.ymax,n=e+(c=i)*r)}if(r>0){if(e>=this.xmax)return null;(i=(this.xmax-e)/r)<c&&(n=this.xmax,o=t+(c=i)*a)}else if(r<0){if(e<=this.xmin)return null;(i=(this.xmin-e)/r)<c&&(n=this.xmin,o=t+(c=i)*a)}return[n,o]}_edgecode(e,t){return(e===this.xmin?1:e===this.xmax?2:0)|(t===this.ymin?4:t===this.ymax?8:0)}_regioncode(e,t){return(e<this.xmin?1:e>this.xmax?2:0)|(t<this.ymin?4:t>this.ymax?8:0)}_simplify(e){if(e&&e.length>4){for(let t=0;t<e.length;t+=2){const r=(t+2)%e.length,a=(t+4)%e.length;(e[t]===e[r]&&e[r]===e[a]||e[t+1]===e[r+1]&&e[r+1]===e[a+1])&&(e.splice(r,2),t-=2)}e.length||(e=null)}return e}}const wc=2*Math.PI,Cc=Math.pow;function _c(e){return e[0]}function Sc(e){return e[1]}function Ac(e,t,r){return[e+Math.sin(e+t)*r,t+Math.cos(e-t)*r]}class Mc{static from(e,t=_c,r=Sc,a){return new Mc("length"in e?function(e,t,r,a){const i=e.length,n=new Float64Array(2*i);for(let o=0;o<i;++o){const i=e[o];n[2*o]=t.call(a,i,o,e),n[2*o+1]=r.call(a,i,o,e)}return n}(e,t,r,a):Float64Array.from(function*(e,t,r,a){let i=0;for(const n of e)yield t.call(a,n,i,e),yield r.call(a,n,i,e),++i}(e,t,r,a)))}constructor(e){this._delaunator=new uc(e),this.inedges=new Int32Array(e.length/2),this._hullIndex=new Int32Array(e.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const e=this._delaunator,t=this.points;if(e.hull&&e.hull.length>2&&function(e){const{triangles:t,coords:r}=e;for(let e=0;e<t.length;e+=3){const a=2*t[e],i=2*t[e+1],n=2*t[e+2];if((r[n]-r[a])*(r[i+1]-r[a+1])-(r[i]-r[a])*(r[n+1]-r[a+1])>1e-10)return!1}return!0}(e)){this.collinear=Int32Array.from({length:t.length/2},((e,t)=>t)).sort(((e,r)=>t[2*e]-t[2*r]||t[2*e+1]-t[2*r+1]));const e=this.collinear[0],r=this.collinear[this.collinear.length-1],a=[t[2*e],t[2*e+1],t[2*r],t[2*r+1]],i=1e-8*Math.hypot(a[3]-a[1],a[2]-a[0]);for(let e=0,r=t.length/2;e<r;++e){const r=Ac(t[2*e],t[2*e+1],i);t[2*e]=r[0],t[2*e+1]=r[1]}this._delaunator=new uc(t)}else delete this.collinear;const r=this.halfedges=this._delaunator.halfedges,a=this.hull=this._delaunator.hull,i=this.triangles=this._delaunator.triangles,n=this.inedges.fill(-1),o=this._hullIndex.fill(-1);for(let e=0,t=r.length;e<t;++e){const t=i[e%3==2?e-2:e+1];-1!==r[e]&&-1!==n[t]||(n[t]=e)}for(let e=0,t=a.length;e<t;++e)o[a[e]]=e;a.length<=2&&a.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=a[0],n[a[0]]=1,2===a.length&&(n[a[1]]=0,this.triangles[1]=a[1],this.triangles[2]=a[1]))}voronoi(e){return new kc(this,e)}*neighbors(e){const{inedges:t,hull:r,_hullIndex:a,halfedges:i,triangles:n,collinear:o}=this;if(o){const t=o.indexOf(e);return t>0&&(yield o[t-1]),void(t<o.length-1&&(yield o[t+1]))}const c=t[e];if(-1===c)return;let l=c,s=-1;do{if(yield s=n[l],l=l%3==2?l-2:l+1,n[l]!==e)return;if(l=i[l],-1===l){const t=r[(a[e]+1)%r.length];return void(t!==s&&(yield t))}}while(l!==c)}find(e,t,r=0){if((e=+e)!=e||(t=+t)!=t)return-1;const a=r;let i;for(;(i=this._step(r,e,t))>=0&&i!==r&&i!==a;)r=i;return i}_step(e,t,r){const{inedges:a,hull:i,_hullIndex:n,halfedges:o,triangles:c,points:l}=this;if(-1===a[e]||!l.length)return(e+1)%(l.length>>1);let s=e,u=Cc(t-l[2*e],2)+Cc(r-l[2*e+1],2);const h=a[e];let d=h;do{let a=c[d];const h=Cc(t-l[2*a],2)+Cc(r-l[2*a+1],2);if(h<u&&(u=h,s=a),d=d%3==2?d-2:d+1,c[d]!==e)break;if(d=o[d],-1===d){if(d=i[(n[e]+1)%i.length],d!==a&&Cc(t-l[2*d],2)+Cc(r-l[2*d+1],2)<u)return d;break}}while(d!==h);return s}render(e){const t=null==e?e=new vc:void 0,{points:r,halfedges:a,triangles:i}=this;for(let t=0,n=a.length;t<n;++t){const n=a[t];if(n<t)continue;const o=2*i[t],c=2*i[n];e.moveTo(r[o],r[o+1]),e.lineTo(r[c],r[c+1])}return this.renderHull(e),t&&t.value()}renderPoints(e,t){void 0!==t||e&&"function"==typeof e.moveTo||(t=e,e=null),t=null==t?2:+t;const r=null==e?e=new vc:void 0,{points:a}=this;for(let r=0,i=a.length;r<i;r+=2){const i=a[r],n=a[r+1];e.moveTo(i+t,n),e.arc(i,n,t,0,wc)}return r&&r.value()}renderHull(e){const t=null==e?e=new vc:void 0,{hull:r,points:a}=this,i=2*r[0],n=r.length;e.moveTo(a[i],a[i+1]);for(let t=1;t<n;++t){const i=2*r[t];e.lineTo(a[i],a[i+1])}return e.closePath(),t&&t.value()}hullPolygon(){const e=new xc;return this.renderHull(e),e.value()}renderTriangle(e,t){const r=null==t?t=new vc:void 0,{points:a,triangles:i}=this,n=2*i[e*=3],o=2*i[e+1],c=2*i[e+2];return t.moveTo(a[n],a[n+1]),t.lineTo(a[o],a[o+1]),t.lineTo(a[c],a[c+1]),t.closePath(),r&&r.value()}*trianglePolygons(){const{triangles:e}=this;for(let t=0,r=e.length/3;t<r;++t)yield this.trianglePolygon(t)}trianglePolygon(e){const t=new xc;return this.renderTriangle(e,t),t.value()}}var Tc={},Bc={};function Lc(e){return new Function("d","return {"+e.map((function(e,t){return JSON.stringify(e)+": d["+t+'] || ""'})).join(",")+"}")}function Ec(e){var t=Object.create(null),r=[];return e.forEach((function(e){for(var a in e)a in t||r.push(t[a]=a)})),r}function Rc(e,t){var r=e+"",a=r.length;return a<t?new Array(t-a+1).join(0)+r:r}function Hc(e){var t,r=e.getUTCHours(),a=e.getUTCMinutes(),i=e.getUTCSeconds(),n=e.getUTCMilliseconds();return isNaN(e)?"Invalid Date":((t=e.getUTCFullYear())<0?"-"+Rc(-t,6):t>9999?"+"+Rc(t,6):Rc(t,4))+"-"+Rc(e.getUTCMonth()+1,2)+"-"+Rc(e.getUTCDate(),2)+(n?"T"+Rc(r,2)+":"+Rc(a,2)+":"+Rc(i,2)+"."+Rc(n,3)+"Z":i?"T"+Rc(r,2)+":"+Rc(a,2)+":"+Rc(i,2)+"Z":a||r?"T"+Rc(r,2)+":"+Rc(a,2)+"Z":"")}function Dc(e){var t=new RegExp('["'+e+"\n\r]"),r=e.charCodeAt(0);function a(e,t){var a,i=[],n=e.length,o=0,c=0,l=n<=0,s=!1;function u(){if(l)return Bc;if(s)return s=!1,Tc;var t,a,i=o;if(34===e.charCodeAt(i)){for(;o++<n&&34!==e.charCodeAt(o)||34===e.charCodeAt(++o););return(t=o)>=n?l=!0:10===(a=e.charCodeAt(o++))?s=!0:13===a&&(s=!0,10===e.charCodeAt(o)&&++o),e.slice(i+1,t-1).replace(/""/g,'"')}for(;o<n;){if(10===(a=e.charCodeAt(t=o++)))s=!0;else if(13===a)s=!0,10===e.charCodeAt(o)&&++o;else if(a!==r)continue;return e.slice(i,t)}return l=!0,e.slice(i,n)}for(10===e.charCodeAt(n-1)&&--n,13===e.charCodeAt(n-1)&&--n;(a=u())!==Bc;){for(var h=[];a!==Tc&&a!==Bc;)h.push(a),a=u();t&&null==(h=t(h,c++))||i.push(h)}return i}function i(t,r){return t.map((function(t){return r.map((function(e){return o(t[e])})).join(e)}))}function n(t){return t.map(o).join(e)}function o(e){return null==e?"":e instanceof Date?Hc(e):t.test(e+="")?'"'+e.replace(/"/g,'""')+'"':e}return{parse:function(e,t){var r,i,n=a(e,(function(e,a){if(r)return r(e,a-1);i=e,r=t?function(e,t){var r=Lc(e);return function(a,i){return t(r(a),i,e)}}(e,t):Lc(e)}));return n.columns=i||[],n},parseRows:a,format:function(t,r){return null==r&&(r=Ec(t)),[r.map(o).join(e)].concat(i(t,r)).join("\n")},formatBody:function(e,t){return null==t&&(t=Ec(e)),i(e,t).join("\n")},formatRows:function(e){return e.map(n).join("\n")},formatRow:n,formatValue:o}}var Pc=Dc(","),Nc=Pc.parse,Gc=Pc.parseRows,Ic=Pc.format,Wc=Pc.formatBody,Fc=Pc.formatRows,zc=Pc.formatRow,Oc=Pc.formatValue,Kc=Dc("\t"),Jc=Kc.parse,Vc=Kc.parseRows,jc=Kc.format,Yc=Kc.formatBody,$c=Kc.formatRows,Uc=Kc.formatRow,qc=Kc.formatValue;const Zc=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function Qc(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.blob()}function Xc(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.arrayBuffer()}function el(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.text()}function tl(e,t){return fetch(e,t).then(el)}function rl(e){return function(t,r,a){return 2===arguments.length&&"function"==typeof r&&(a=r,r=void 0),tl(t,r).then((function(t){return e(t,a)}))}}var al=rl(Nc),il=rl(Jc);function nl(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);if(204!==e.status&&205!==e.status)return e.json()}function ol(e){return(t,r)=>tl(t,r).then((t=>(new DOMParser).parseFromString(t,e)))}var cl=ol("application/xml"),ll=ol("text/html"),sl=ol("image/svg+xml");function ul(e,t,r,a){if(isNaN(t)||isNaN(r))return e;var i,n,o,c,l,s,u,h,d,p=e._root,y={data:a},f=e._x0,m=e._y0,g=e._x1,b=e._y1;if(!p)return e._root=y,e;for(;p.length;)if((s=t>=(n=(f+g)/2))?f=n:g=n,(u=r>=(o=(m+b)/2))?m=o:b=o,i=p,!(p=p[h=u<<1|s]))return i[h]=y,e;if(c=+e._x.call(null,p.data),l=+e._y.call(null,p.data),t===c&&r===l)return y.next=p,i?i[h]=y:e._root=y,e;do{i=i?i[h]=new Array(4):e._root=new Array(4),(s=t>=(n=(f+g)/2))?f=n:g=n,(u=r>=(o=(m+b)/2))?m=o:b=o}while((h=u<<1|s)==(d=(l>=o)<<1|c>=n));return i[d]=p,i[h]=y,e}function hl(e,t,r,a,i){this.node=e,this.x0=t,this.y0=r,this.x1=a,this.y1=i}function dl(e){return e[0]}function pl(e){return e[1]}function yl(e,t,r){var a=new fl(null==t?dl:t,null==r?pl:r,NaN,NaN,NaN,NaN);return null==e?a:a.addAll(e)}function fl(e,t,r,a,i,n){this._x=e,this._y=t,this._x0=r,this._y0=a,this._x1=i,this._y1=n,this._root=void 0}function ml(e){for(var t={data:e.data},r=t;e=e.next;)r=r.next={data:e.data};return t}var gl=yl.prototype=fl.prototype;function bl(e){return function(){return e}}function vl(e){return 1e-6*(e()-.5)}function xl(e){return e.x+e.vx}function kl(e){return e.y+e.vy}function wl(e){return e.index}function Cl(e,t){var r=e.get(t);if(!r)throw new Error("node not found: "+t);return r}gl.copy=function(){var e,t,r=new fl(this._x,this._y,this._x0,this._y0,this._x1,this._y1),a=this._root;if(!a)return r;if(!a.length)return r._root=ml(a),r;for(e=[{source:a,target:r._root=new Array(4)}];a=e.pop();)for(var i=0;i<4;++i)(t=a.source[i])&&(t.length?e.push({source:t,target:a.target[i]=new Array(4)}):a.target[i]=ml(t));return r},gl.add=function(e){const t=+this._x.call(null,e),r=+this._y.call(null,e);return ul(this.cover(t,r),t,r,e)},gl.addAll=function(e){var t,r,a,i,n=e.length,o=new Array(n),c=new Array(n),l=1/0,s=1/0,u=-1/0,h=-1/0;for(r=0;r<n;++r)isNaN(a=+this._x.call(null,t=e[r]))||isNaN(i=+this._y.call(null,t))||(o[r]=a,c[r]=i,a<l&&(l=a),a>u&&(u=a),i<s&&(s=i),i>h&&(h=i));if(l>u||s>h)return this;for(this.cover(l,s).cover(u,h),r=0;r<n;++r)ul(this,o[r],c[r],e[r]);return this},gl.cover=function(e,t){if(isNaN(e=+e)||isNaN(t=+t))return this;var r=this._x0,a=this._y0,i=this._x1,n=this._y1;if(isNaN(r))i=(r=Math.floor(e))+1,n=(a=Math.floor(t))+1;else{for(var o,c,l=i-r||1,s=this._root;r>e||e>=i||a>t||t>=n;)switch(c=(t<a)<<1|e<r,(o=new Array(4))[c]=s,s=o,l*=2,c){case 0:i=r+l,n=a+l;break;case 1:r=i-l,n=a+l;break;case 2:i=r+l,a=n-l;break;case 3:r=i-l,a=n-l}this._root&&this._root.length&&(this._root=s)}return this._x0=r,this._y0=a,this._x1=i,this._y1=n,this},gl.data=function(){var e=[];return this.visit((function(t){if(!t.length)do{e.push(t.data)}while(t=t.next)})),e},gl.extent=function(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},gl.find=function(e,t,r){var a,i,n,o,c,l,s,u=this._x0,h=this._y0,d=this._x1,p=this._y1,y=[],f=this._root;for(f&&y.push(new hl(f,u,h,d,p)),null==r?r=1/0:(u=e-r,h=t-r,d=e+r,p=t+r,r*=r);l=y.pop();)if(!(!(f=l.node)||(i=l.x0)>d||(n=l.y0)>p||(o=l.x1)<u||(c=l.y1)<h))if(f.length){var m=(i+o)/2,g=(n+c)/2;y.push(new hl(f[3],m,g,o,c),new hl(f[2],i,g,m,c),new hl(f[1],m,n,o,g),new hl(f[0],i,n,m,g)),(s=(t>=g)<<1|e>=m)&&(l=y[y.length-1],y[y.length-1]=y[y.length-1-s],y[y.length-1-s]=l)}else{var b=e-+this._x.call(null,f.data),v=t-+this._y.call(null,f.data),x=b*b+v*v;if(x<r){var k=Math.sqrt(r=x);u=e-k,h=t-k,d=e+k,p=t+k,a=f.data}}return a},gl.remove=function(e){if(isNaN(n=+this._x.call(null,e))||isNaN(o=+this._y.call(null,e)))return this;var t,r,a,i,n,o,c,l,s,u,h,d,p=this._root,y=this._x0,f=this._y0,m=this._x1,g=this._y1;if(!p)return this;if(p.length)for(;;){if((s=n>=(c=(y+m)/2))?y=c:m=c,(u=o>=(l=(f+g)/2))?f=l:g=l,t=p,!(p=p[h=u<<1|s]))return this;if(!p.length)break;(t[h+1&3]||t[h+2&3]||t[h+3&3])&&(r=t,d=h)}for(;p.data!==e;)if(a=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,a?(i?a.next=i:delete a.next,this):t?(i?t[h]=i:delete t[h],(p=t[0]||t[1]||t[2]||t[3])&&p===(t[3]||t[2]||t[1]||t[0])&&!p.length&&(r?r[d]=p:this._root=p),this):(this._root=i,this)},gl.removeAll=function(e){for(var t=0,r=e.length;t<r;++t)this.remove(e[t]);return this},gl.root=function(){return this._root},gl.size=function(){var e=0;return this.visit((function(t){if(!t.length)do{++e}while(t=t.next)})),e},gl.visit=function(e){var t,r,a,i,n,o,c=[],l=this._root;for(l&&c.push(new hl(l,this._x0,this._y0,this._x1,this._y1));t=c.pop();)if(!e(l=t.node,a=t.x0,i=t.y0,n=t.x1,o=t.y1)&&l.length){var s=(a+n)/2,u=(i+o)/2;(r=l[3])&&c.push(new hl(r,s,u,n,o)),(r=l[2])&&c.push(new hl(r,a,u,s,o)),(r=l[1])&&c.push(new hl(r,s,i,n,u)),(r=l[0])&&c.push(new hl(r,a,i,s,u))}return this},gl.visitAfter=function(e){var t,r=[],a=[];for(this._root&&r.push(new hl(this._root,this._x0,this._y0,this._x1,this._y1));t=r.pop();){var i=t.node;if(i.length){var n,o=t.x0,c=t.y0,l=t.x1,s=t.y1,u=(o+l)/2,h=(c+s)/2;(n=i[0])&&r.push(new hl(n,o,c,u,h)),(n=i[1])&&r.push(new hl(n,u,c,l,h)),(n=i[2])&&r.push(new hl(n,o,h,u,s)),(n=i[3])&&r.push(new hl(n,u,h,l,s))}a.push(t)}for(;t=a.pop();)e(t.node,t.x0,t.y0,t.x1,t.y1);return this},gl.x=function(e){return arguments.length?(this._x=e,this):this._x},gl.y=function(e){return arguments.length?(this._y=e,this):this._y};const _l=4294967296;function Sl(e){return e.x}function Al(e){return e.y}var Ml=Math.PI*(3-Math.sqrt(5));function Tl(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,a=e.slice(0,r);return[a.length>1?a[0]+a.slice(2):a,+e.slice(r+1)]}function Bl(e){return(e=Tl(Math.abs(e)))?e[1]:NaN}var Ll,El=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Rl(e){if(!(t=El.exec(e)))throw new Error("invalid format: "+e);var t;return new Hl({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function Hl(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function Dl(e,t){var r=Tl(e,t);if(!r)return e+"";var a=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+a:a.length>i+1?a.slice(0,i+1)+"."+a.slice(i+1):a+new Array(i-a.length+2).join("0")}Rl.prototype=Hl.prototype,Hl.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Pl={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Dl(100*e,t),r:Dl,s:function(e,t){var r=Tl(e,t);if(!r)return e+"";var a=r[0],i=r[1],n=i-(Ll=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=a.length;return n===o?a:n>o?a+new Array(n-o+1).join("0"):n>0?a.slice(0,n)+"."+a.slice(n):"0."+new Array(1-n).join("0")+Tl(e,Math.max(0,t+n-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Nl(e){return e}var Gl,Il,Wl,Fl=Array.prototype.map,zl=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Ol(e){var t,r,a=void 0===e.grouping||void 0===e.thousands?Nl:(t=Fl.call(e.grouping,Number),r=e.thousands+"",function(e,a){for(var i=e.length,n=[],o=0,c=t[0],l=0;i>0&&c>0&&(l+c+1>a&&(c=Math.max(1,a-l)),n.push(e.substring(i-=c,i+c)),!((l+=c+1)>a));)c=t[o=(o+1)%t.length];return n.reverse().join(r)}),i=void 0===e.currency?"":e.currency[0]+"",n=void 0===e.currency?"":e.currency[1]+"",o=void 0===e.decimal?".":e.decimal+"",c=void 0===e.numerals?Nl:function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(Fl.call(e.numerals,String)),l=void 0===e.percent?"%":e.percent+"",s=void 0===e.minus?"−":e.minus+"",u=void 0===e.nan?"NaN":e.nan+"";function h(e){var t=(e=Rl(e)).fill,r=e.align,h=e.sign,d=e.symbol,p=e.zero,y=e.width,f=e.comma,m=e.precision,g=e.trim,b=e.type;"n"===b?(f=!0,b="g"):Pl[b]||(void 0===m&&(m=12),g=!0,b="g"),(p||"0"===t&&"="===r)&&(p=!0,t="0",r="=");var v="$"===d?i:"#"===d&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x="$"===d?n:/[%p]/.test(b)?l:"",k=Pl[b],w=/[defgprs%]/.test(b);function C(e){var i,n,l,d=v,C=x;if("c"===b)C=k(e)+C,e="";else{var _=(e=+e)<0||1/e<0;if(e=isNaN(e)?u:k(Math.abs(e),m),g&&(e=function(e){e:for(var t,r=e.length,a=1,i=-1;a<r;++a)switch(e[a]){case".":i=t=a;break;case"0":0===i&&(i=a),t=a;break;default:if(!+e[a])break e;i>0&&(i=0)}return i>0?e.slice(0,i)+e.slice(t+1):e}(e)),_&&0==+e&&"+"!==h&&(_=!1),d=(_?"("===h?h:s:"-"===h||"("===h?"":h)+d,C=("s"===b?zl[8+Ll/3]:"")+C+(_&&"("===h?")":""),w)for(i=-1,n=e.length;++i<n;)if(48>(l=e.charCodeAt(i))||l>57){C=(46===l?o+e.slice(i+1):e.slice(i))+C,e=e.slice(0,i);break}}f&&!p&&(e=a(e,1/0));var S=d.length+e.length+C.length,A=S<y?new Array(y-S+1).join(t):"";switch(f&&p&&(e=a(A+e,A.length?y-C.length:1/0),A=""),r){case"<":e=d+e+C+A;break;case"=":e=d+A+e+C;break;case"^":e=A.slice(0,S=A.length>>1)+d+e+C+A.slice(S);break;default:e=A+d+e+C}return c(e)}return m=void 0===m?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),C.toString=function(){return e+""},C}return{format:h,formatPrefix:function(e,t){var r=h(((e=Rl(e)).type="f",e)),a=3*Math.max(-8,Math.min(8,Math.floor(Bl(t)/3))),i=Math.pow(10,-a),n=zl[8+a/3];return function(e){return r(i*e)+n}}}}function Kl(e){return Gl=Ol(e),Il=Gl.format,Wl=Gl.formatPrefix,Gl}function Jl(e){return Math.max(0,-Bl(Math.abs(e)))}function Vl(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Bl(t)/3)))-Bl(Math.abs(e)))}function jl(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Bl(t)-Bl(e))+1}Kl({thousands:",",grouping:[3],currency:["$",""]});var Yl=1e-6,$l=1e-12,Ul=Math.PI,ql=Ul/2,Zl=Ul/4,Ql=2*Ul,Xl=180/Ul,es=Ul/180,ts=Math.abs,rs=Math.atan,as=Math.atan2,is=Math.cos,ns=Math.ceil,os=Math.exp,cs=Math.hypot,ls=Math.log,ss=Math.pow,us=Math.sin,hs=Math.sign||function(e){return e>0?1:e<0?-1:0},ds=Math.sqrt,ps=Math.tan;function ys(e){return e>1?0:e<-1?Ul:Math.acos(e)}function fs(e){return e>1?ql:e<-1?-ql:Math.asin(e)}function ms(e){return(e=us(e/2))*e}function gs(){}function bs(e,t){e&&xs.hasOwnProperty(e.type)&&xs[e.type](e,t)}var vs={Feature:function(e,t){bs(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,a=-1,i=r.length;++a<i;)bs(r[a].geometry,t)}},xs={Sphere:function(e,t){t.sphere()},Point:function(e,t){e=e.coordinates,t.point(e[0],e[1],e[2])},MultiPoint:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)e=r[a],t.point(e[0],e[1],e[2])},LineString:function(e,t){ks(e.coordinates,t,0)},MultiLineString:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)ks(r[a],t,0)},Polygon:function(e,t){ws(e.coordinates,t)},MultiPolygon:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)ws(r[a],t)},GeometryCollection:function(e,t){for(var r=e.geometries,a=-1,i=r.length;++a<i;)bs(r[a],t)}};function ks(e,t,r){var a,i=-1,n=e.length-r;for(t.lineStart();++i<n;)a=e[i],t.point(a[0],a[1],a[2]);t.lineEnd()}function ws(e,t){var r=-1,a=e.length;for(t.polygonStart();++r<a;)ks(e[r],t,1);t.polygonEnd()}function Cs(e,t){e&&vs.hasOwnProperty(e.type)?vs[e.type](e,t):bs(e,t)}var _s,Ss,As,Ms,Ts,Bs,Ls,Es,Rs,Hs,Ds,Ps,Ns,Gs,Is,Ws,Fs=new C,zs=new C,Os={point:gs,lineStart:gs,lineEnd:gs,polygonStart:function(){Fs=new C,Os.lineStart=Ks,Os.lineEnd=Js},polygonEnd:function(){var e=+Fs;zs.add(e<0?Ql+e:e),this.lineStart=this.lineEnd=this.point=gs},sphere:function(){zs.add(Ql)}};function Ks(){Os.point=Vs}function Js(){js(_s,Ss)}function Vs(e,t){Os.point=js,_s=e,Ss=t,As=e*=es,Ms=is(t=(t*=es)/2+Zl),Ts=us(t)}function js(e,t){var r=(e*=es)-As,a=r>=0?1:-1,i=a*r,n=is(t=(t*=es)/2+Zl),o=us(t),c=Ts*o,l=Ms*n+c*is(i),s=c*a*us(i);Fs.add(as(s,l)),As=e,Ms=n,Ts=o}function Ys(e){return[as(e[1],e[0]),fs(e[2])]}function $s(e){var t=e[0],r=e[1],a=is(r);return[a*is(t),a*us(t),us(r)]}function Us(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function qs(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function Zs(e,t){e[0]+=t[0],e[1]+=t[1],e[2]+=t[2]}function Qs(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function Xs(e){var t=ds(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}var eu,tu,ru,au,iu,nu,ou,cu,lu,su,uu,hu,du,pu,yu,fu,mu={point:gu,lineStart:vu,lineEnd:xu,polygonStart:function(){mu.point=ku,mu.lineStart=wu,mu.lineEnd=Cu,Gs=new C,Os.polygonStart()},polygonEnd:function(){Os.polygonEnd(),mu.point=gu,mu.lineStart=vu,mu.lineEnd=xu,Fs<0?(Bs=-(Es=180),Ls=-(Rs=90)):Gs>Yl?Rs=90:Gs<-1e-6&&(Ls=-90),Ws[0]=Bs,Ws[1]=Es},sphere:function(){Bs=-(Es=180),Ls=-(Rs=90)}};function gu(e,t){Is.push(Ws=[Bs=e,Es=e]),t<Ls&&(Ls=t),t>Rs&&(Rs=t)}function bu(e,t){var r=$s([e*es,t*es]);if(Ns){var a=qs(Ns,r),i=qs([a[1],-a[0],0],a);Xs(i),i=Ys(i);var n,o=e-Hs,c=o>0?1:-1,l=i[0]*Xl*c,s=ts(o)>180;s^(c*Hs<l&&l<c*e)?(n=i[1]*Xl)>Rs&&(Rs=n):s^(c*Hs<(l=(l+360)%360-180)&&l<c*e)?(n=-i[1]*Xl)<Ls&&(Ls=n):(t<Ls&&(Ls=t),t>Rs&&(Rs=t)),s?e<Hs?_u(Bs,e)>_u(Bs,Es)&&(Es=e):_u(e,Es)>_u(Bs,Es)&&(Bs=e):Es>=Bs?(e<Bs&&(Bs=e),e>Es&&(Es=e)):e>Hs?_u(Bs,e)>_u(Bs,Es)&&(Es=e):_u(e,Es)>_u(Bs,Es)&&(Bs=e)}else Is.push(Ws=[Bs=e,Es=e]);t<Ls&&(Ls=t),t>Rs&&(Rs=t),Ns=r,Hs=e}function vu(){mu.point=bu}function xu(){Ws[0]=Bs,Ws[1]=Es,mu.point=gu,Ns=null}function ku(e,t){if(Ns){var r=e-Hs;Gs.add(ts(r)>180?r+(r>0?360:-360):r)}else Ds=e,Ps=t;Os.point(e,t),bu(e,t)}function wu(){Os.lineStart()}function Cu(){ku(Ds,Ps),Os.lineEnd(),ts(Gs)>Yl&&(Bs=-(Es=180)),Ws[0]=Bs,Ws[1]=Es,Ns=null}function _u(e,t){return(t-=e)<0?t+360:t}function Su(e,t){return e[0]-t[0]}function Au(e,t){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:t<e[0]||e[1]<t}var Mu={sphere:gs,point:Tu,lineStart:Lu,lineEnd:Hu,polygonStart:function(){Mu.lineStart=Du,Mu.lineEnd=Pu},polygonEnd:function(){Mu.lineStart=Lu,Mu.lineEnd=Hu}};function Tu(e,t){e*=es;var r=is(t*=es);Bu(r*is(e),r*us(e),us(t))}function Bu(e,t,r){++eu,ru+=(e-ru)/eu,au+=(t-au)/eu,iu+=(r-iu)/eu}function Lu(){Mu.point=Eu}function Eu(e,t){e*=es;var r=is(t*=es);pu=r*is(e),yu=r*us(e),fu=us(t),Mu.point=Ru,Bu(pu,yu,fu)}function Ru(e,t){e*=es;var r=is(t*=es),a=r*is(e),i=r*us(e),n=us(t),o=as(ds((o=yu*n-fu*i)*o+(o=fu*a-pu*n)*o+(o=pu*i-yu*a)*o),pu*a+yu*i+fu*n);tu+=o,nu+=o*(pu+(pu=a)),ou+=o*(yu+(yu=i)),cu+=o*(fu+(fu=n)),Bu(pu,yu,fu)}function Hu(){Mu.point=Tu}function Du(){Mu.point=Nu}function Pu(){Gu(hu,du),Mu.point=Tu}function Nu(e,t){hu=e,du=t,e*=es,t*=es,Mu.point=Gu;var r=is(t);pu=r*is(e),yu=r*us(e),fu=us(t),Bu(pu,yu,fu)}function Gu(e,t){e*=es;var r=is(t*=es),a=r*is(e),i=r*us(e),n=us(t),o=yu*n-fu*i,c=fu*a-pu*n,l=pu*i-yu*a,s=cs(o,c,l),u=fs(s),h=s&&-u/s;lu.add(h*o),su.add(h*c),uu.add(h*l),tu+=u,nu+=u*(pu+(pu=a)),ou+=u*(yu+(yu=i)),cu+=u*(fu+(fu=n)),Bu(pu,yu,fu)}function Iu(e){return function(){return e}}function Wu(e,t){function r(r,a){return r=e(r,a),t(r[0],r[1])}return e.invert&&t.invert&&(r.invert=function(r,a){return(r=t.invert(r,a))&&e.invert(r[0],r[1])}),r}function Fu(e,t){return ts(e)>Ul&&(e-=Math.round(e/Ql)*Ql),[e,t]}function zu(e,t,r){return(e%=Ql)?t||r?Wu(Ku(e),Ju(t,r)):Ku(e):t||r?Ju(t,r):Fu}function Ou(e){return function(t,r){return ts(t+=e)>Ul&&(t-=Math.round(t/Ql)*Ql),[t,r]}}function Ku(e){var t=Ou(e);return t.invert=Ou(-e),t}function Ju(e,t){var r=is(e),a=us(e),i=is(t),n=us(t);function o(e,t){var o=is(t),c=is(e)*o,l=us(e)*o,s=us(t),u=s*r+c*a;return[as(l*i-u*n,c*r-s*a),fs(u*i+l*n)]}return o.invert=function(e,t){var o=is(t),c=is(e)*o,l=us(e)*o,s=us(t),u=s*i-l*n;return[as(l*i+s*n,c*r+u*a),fs(u*r-c*a)]},o}function Vu(e){function t(t){return(t=e(t[0]*es,t[1]*es))[0]*=Xl,t[1]*=Xl,t}return e=zu(e[0]*es,e[1]*es,e.length>2?e[2]*es:0),t.invert=function(t){return(t=e.invert(t[0]*es,t[1]*es))[0]*=Xl,t[1]*=Xl,t},t}function ju(e,t,r,a,i,n){if(r){var o=is(t),c=us(t),l=a*r;null==i?(i=t+a*Ql,n=t-l/2):(i=Yu(o,i),n=Yu(o,n),(a>0?i<n:i>n)&&(i+=a*Ql));for(var s,u=i;a>0?u>n:u<n;u-=l)s=Ys([o,-c*is(u),-c*us(u)]),e.point(s[0],s[1])}}function Yu(e,t){(t=$s(t))[0]-=e,Xs(t);var r=ys(-t[1]);return((-t[2]<0?-r:r)+Ql-Yl)%Ql}function $u(){var e,t=[];return{point:function(t,r,a){e.push([t,r,a])},lineStart:function(){t.push(e=[])},lineEnd:gs,rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))},result:function(){var r=t;return t=[],e=null,r}}}function Uu(e,t){return ts(e[0]-t[0])<Yl&&ts(e[1]-t[1])<Yl}function qu(e,t,r,a){this.x=e,this.z=t,this.o=r,this.e=a,this.v=!1,this.n=this.p=null}function Zu(e,t,r,a,i){var n,o,c=[],l=[];if(e.forEach((function(e){if(!((t=e.length-1)<=0)){var t,r,a=e[0],o=e[t];if(Uu(a,o)){if(!a[2]&&!o[2]){for(i.lineStart(),n=0;n<t;++n)i.point((a=e[n])[0],a[1]);return void i.lineEnd()}o[0]+=2e-6}c.push(r=new qu(a,e,null,!0)),l.push(r.o=new qu(a,null,r,!1)),c.push(r=new qu(o,e,null,!1)),l.push(r.o=new qu(o,null,r,!0))}})),c.length){for(l.sort(t),Qu(c),Qu(l),n=0,o=l.length;n<o;++n)l[n].e=r=!r;for(var s,u,h=c[0];;){for(var d=h,p=!0;d.v;)if((d=d.n)===h)return;s=d.z,i.lineStart();do{if(d.v=d.o.v=!0,d.e){if(p)for(n=0,o=s.length;n<o;++n)i.point((u=s[n])[0],u[1]);else a(d.x,d.n.x,1,i);d=d.n}else{if(p)for(s=d.p.z,n=s.length-1;n>=0;--n)i.point((u=s[n])[0],u[1]);else a(d.x,d.p.x,-1,i);d=d.p}s=(d=d.o).z,p=!p}while(!d.v);i.lineEnd()}}}function Qu(e){if(t=e.length){for(var t,r,a=0,i=e[0];++a<t;)i.n=r=e[a],r.p=i,i=r;i.n=r=e[0],r.p=i}}function Xu(e){return ts(e[0])<=Ul?e[0]:hs(e[0])*((ts(e[0])+Ul)%Ql-Ul)}function eh(e,t){var r=Xu(t),a=t[1],i=us(a),n=[us(r),-is(r),0],o=0,c=0,l=new C;1===i?a=ql+Yl:-1===i&&(a=-ql-Yl);for(var s=0,u=e.length;s<u;++s)if(d=(h=e[s]).length)for(var h,d,p=h[d-1],y=Xu(p),f=p[1]/2+Zl,m=us(f),g=is(f),b=0;b<d;++b,y=x,m=w,g=_,p=v){var v=h[b],x=Xu(v),k=v[1]/2+Zl,w=us(k),_=is(k),S=x-y,A=S>=0?1:-1,M=A*S,T=M>Ul,B=m*w;if(l.add(as(B*A*us(M),g*_+B*is(M))),o+=T?S+A*Ql:S,T^y>=r^x>=r){var L=qs($s(p),$s(v));Xs(L);var E=qs(n,L);Xs(E);var R=(T^S>=0?-1:1)*fs(E[2]);(a>R||a===R&&(L[0]||L[1]))&&(c+=T^S>=0?1:-1)}}return(o<-1e-6||o<Yl&&l<-1e-12)^1&c}function th(e,t,r,a){return function(i){var n,o,c,l=t(i),s=$u(),u=t(s),h=!1,d={point:p,lineStart:f,lineEnd:m,polygonStart:function(){d.point=g,d.lineStart=b,d.lineEnd=v,o=[],n=[]},polygonEnd:function(){d.point=p,d.lineStart=f,d.lineEnd=m,o=ue(o);var e=eh(n,a);o.length?(h||(i.polygonStart(),h=!0),Zu(o,ah,e,r,i)):e&&(h||(i.polygonStart(),h=!0),i.lineStart(),r(null,null,1,i),i.lineEnd()),h&&(i.polygonEnd(),h=!1),o=n=null},sphere:function(){i.polygonStart(),i.lineStart(),r(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function p(t,r){e(t,r)&&i.point(t,r)}function y(e,t){l.point(e,t)}function f(){d.point=y,l.lineStart()}function m(){d.point=p,l.lineEnd()}function g(e,t){c.push([e,t]),u.point(e,t)}function b(){u.lineStart(),c=[]}function v(){g(c[0][0],c[0][1]),u.lineEnd();var e,t,r,a,l=u.clean(),d=s.result(),p=d.length;if(c.pop(),n.push(c),c=null,p)if(1&l){if((t=(r=d[0]).length-1)>0){for(h||(i.polygonStart(),h=!0),i.lineStart(),e=0;e<t;++e)i.point((a=r[e])[0],a[1]);i.lineEnd()}}else p>1&&2&l&&d.push(d.pop().concat(d.shift())),o.push(d.filter(rh))}return d}}function rh(e){return e.length>1}function ah(e,t){return((e=e.x)[0]<0?e[1]-ql-Yl:ql-e[1])-((t=t.x)[0]<0?t[1]-ql-Yl:ql-t[1])}Fu.invert=Fu;var ih=th((function(){return!0}),(function(e){var t,r=NaN,a=NaN,i=NaN;return{lineStart:function(){e.lineStart(),t=1},point:function(n,o){var c=n>0?Ul:-Ul,l=ts(n-r);ts(l-Ul)<Yl?(e.point(r,a=(a+o)/2>0?ql:-ql),e.point(i,a),e.lineEnd(),e.lineStart(),e.point(c,a),e.point(n,a),t=0):i!==c&&l>=Ul&&(ts(r-i)<Yl&&(r-=i*Yl),ts(n-c)<Yl&&(n-=c*Yl),a=function(e,t,r,a){var i,n,o=us(e-r);return ts(o)>Yl?rs((us(t)*(n=is(a))*us(r)-us(a)*(i=is(t))*us(e))/(i*n*o)):(t+a)/2}(r,a,n,o),e.point(i,a),e.lineEnd(),e.lineStart(),e.point(c,a),t=0),e.point(r=n,a=o),i=c},lineEnd:function(){e.lineEnd(),r=a=NaN},clean:function(){return 2-t}}}),(function(e,t,r,a){var i;if(null==e)i=r*ql,a.point(-Ul,i),a.point(0,i),a.point(Ul,i),a.point(Ul,0),a.point(Ul,-i),a.point(0,-i),a.point(-Ul,-i),a.point(-Ul,0),a.point(-Ul,i);else if(ts(e[0]-t[0])>Yl){var n=e[0]<t[0]?Ul:-Ul;i=r*n/2,a.point(-n,i),a.point(0,i),a.point(n,i)}else a.point(t[0],t[1])}),[-Ul,-ql]);function nh(e){var t=is(e),r=2*es,a=t>0,i=ts(t)>Yl;function n(e,r){return is(e)*is(r)>t}function o(e,r,a){var i=[1,0,0],n=qs($s(e),$s(r)),o=Us(n,n),c=n[0],l=o-c*c;if(!l)return!a&&e;var s=t*o/l,u=-t*c/l,h=qs(i,n),d=Qs(i,s);Zs(d,Qs(n,u));var p=h,y=Us(d,p),f=Us(p,p),m=y*y-f*(Us(d,d)-1);if(!(m<0)){var g=ds(m),b=Qs(p,(-y-g)/f);if(Zs(b,d),b=Ys(b),!a)return b;var v,x=e[0],k=r[0],w=e[1],C=r[1];k<x&&(v=x,x=k,k=v);var _=k-x,S=ts(_-Ul)<Yl;if(!S&&C<w&&(v=w,w=C,C=v),S||_<Yl?S?w+C>0^b[1]<(ts(b[0]-x)<Yl?w:C):w<=b[1]&&b[1]<=C:_>Ul^(x<=b[0]&&b[0]<=k)){var A=Qs(p,(-y+g)/f);return Zs(A,d),[b,Ys(A)]}}}function c(t,r){var i=a?e:Ul-e,n=0;return t<-i?n|=1:t>i&&(n|=2),r<-i?n|=4:r>i&&(n|=8),n}return th(n,(function(e){var t,r,l,s,u;return{lineStart:function(){s=l=!1,u=1},point:function(h,d){var p,y=[h,d],f=n(h,d),m=a?f?0:c(h,d):f?c(h+(h<0?Ul:-Ul),d):0;if(!t&&(s=l=f)&&e.lineStart(),f!==l&&(!(p=o(t,y))||Uu(t,p)||Uu(y,p))&&(y[2]=1),f!==l)u=0,f?(e.lineStart(),p=o(y,t),e.point(p[0],p[1])):(p=o(t,y),e.point(p[0],p[1],2),e.lineEnd()),t=p;else if(i&&t&&a^f){var g;m&r||!(g=o(y,t,!0))||(u=0,a?(e.lineStart(),e.point(g[0][0],g[0][1]),e.point(g[1][0],g[1][1]),e.lineEnd()):(e.point(g[1][0],g[1][1]),e.lineEnd(),e.lineStart(),e.point(g[0][0],g[0][1],3)))}!f||t&&Uu(t,y)||e.point(y[0],y[1]),t=y,l=f,r=m},lineEnd:function(){l&&e.lineEnd(),t=null},clean:function(){return u|(s&&l)<<1}}}),(function(t,a,i,n){ju(n,e,r,i,t,a)}),a?[0,-e]:[-Ul,e-Ul])}var oh,ch,lh,sh,uh=1e9,hh=-uh;function dh(e,t,r,a){function i(i,n){return e<=i&&i<=r&&t<=n&&n<=a}function n(i,n,c,s){var u=0,h=0;if(null==i||(u=o(i,c))!==(h=o(n,c))||l(i,n)<0^c>0)do{s.point(0===u||3===u?e:r,u>1?a:t)}while((u=(u+c+4)%4)!==h);else s.point(n[0],n[1])}function o(a,i){return ts(a[0]-e)<Yl?i>0?0:3:ts(a[0]-r)<Yl?i>0?2:1:ts(a[1]-t)<Yl?i>0?1:0:i>0?3:2}function c(e,t){return l(e.x,t.x)}function l(e,t){var r=o(e,1),a=o(t,1);return r!==a?r-a:0===r?t[1]-e[1]:1===r?e[0]-t[0]:2===r?e[1]-t[1]:t[0]-e[0]}return function(o){var l,s,u,h,d,p,y,f,m,g,b,v=o,x=$u(),k={point:w,lineStart:function(){k.point=C,s&&s.push(u=[]);g=!0,m=!1,y=f=NaN},lineEnd:function(){l&&(C(h,d),p&&m&&x.rejoin(),l.push(x.result()));k.point=w,m&&v.lineEnd()},polygonStart:function(){v=x,l=[],s=[],b=!0},polygonEnd:function(){var t=function(){for(var t=0,r=0,i=s.length;r<i;++r)for(var n,o,c=s[r],l=1,u=c.length,h=c[0],d=h[0],p=h[1];l<u;++l)n=d,o=p,d=(h=c[l])[0],p=h[1],o<=a?p>a&&(d-n)*(a-o)>(p-o)*(e-n)&&++t:p<=a&&(d-n)*(a-o)<(p-o)*(e-n)&&--t;return t}(),r=b&&t,i=(l=ue(l)).length;(r||i)&&(o.polygonStart(),r&&(o.lineStart(),n(null,null,1,o),o.lineEnd()),i&&Zu(l,c,t,n,o),o.polygonEnd());v=o,l=s=u=null}};function w(e,t){i(e,t)&&v.point(e,t)}function C(n,o){var c=i(n,o);if(s&&u.push([n,o]),g)h=n,d=o,p=c,g=!1,c&&(v.lineStart(),v.point(n,o));else if(c&&m)v.point(n,o);else{var l=[y=Math.max(hh,Math.min(uh,y)),f=Math.max(hh,Math.min(uh,f))],x=[n=Math.max(hh,Math.min(uh,n)),o=Math.max(hh,Math.min(uh,o))];!function(e,t,r,a,i,n){var o,c=e[0],l=e[1],s=0,u=1,h=t[0]-c,d=t[1]-l;if(o=r-c,h||!(o>0)){if(o/=h,h<0){if(o<s)return;o<u&&(u=o)}else if(h>0){if(o>u)return;o>s&&(s=o)}if(o=i-c,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>s&&(s=o)}else if(h>0){if(o<s)return;o<u&&(u=o)}if(o=a-l,d||!(o>0)){if(o/=d,d<0){if(o<s)return;o<u&&(u=o)}else if(d>0){if(o>u)return;o>s&&(s=o)}if(o=n-l,d||!(o<0)){if(o/=d,d<0){if(o>u)return;o>s&&(s=o)}else if(d>0){if(o<s)return;o<u&&(u=o)}return s>0&&(e[0]=c+s*h,e[1]=l+s*d),u<1&&(t[0]=c+u*h,t[1]=l+u*d),!0}}}}}(l,x,e,t,r,a)?c&&(v.lineStart(),v.point(n,o),b=!1):(m||(v.lineStart(),v.point(l[0],l[1])),v.point(x[0],x[1]),c||v.lineEnd(),b=!1)}y=n,f=o,m=c}return k}}var ph={sphere:gs,point:gs,lineStart:function(){ph.point=fh,ph.lineEnd=yh},lineEnd:gs,polygonStart:gs,polygonEnd:gs};function yh(){ph.point=ph.lineEnd=gs}function fh(e,t){ch=e*=es,lh=us(t*=es),sh=is(t),ph.point=mh}function mh(e,t){e*=es;var r=us(t*=es),a=is(t),i=ts(e-ch),n=is(i),o=a*us(i),c=sh*r-lh*a*n,l=lh*r+sh*a*n;oh.add(as(ds(o*o+c*c),l)),ch=e,lh=r,sh=a}function gh(e){return oh=new C,Cs(e,ph),+oh}var bh=[null,null],vh={type:"LineString",coordinates:bh};function xh(e,t){return bh[0]=e,bh[1]=t,gh(vh)}var kh={Feature:function(e,t){return Ch(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,a=-1,i=r.length;++a<i;)if(Ch(r[a].geometry,t))return!0;return!1}},wh={Sphere:function(){return!0},Point:function(e,t){return _h(e.coordinates,t)},MultiPoint:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)if(_h(r[a],t))return!0;return!1},LineString:function(e,t){return Sh(e.coordinates,t)},MultiLineString:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)if(Sh(r[a],t))return!0;return!1},Polygon:function(e,t){return Ah(e.coordinates,t)},MultiPolygon:function(e,t){for(var r=e.coordinates,a=-1,i=r.length;++a<i;)if(Ah(r[a],t))return!0;return!1},GeometryCollection:function(e,t){for(var r=e.geometries,a=-1,i=r.length;++a<i;)if(Ch(r[a],t))return!0;return!1}};function Ch(e,t){return!(!e||!wh.hasOwnProperty(e.type))&&wh[e.type](e,t)}function _h(e,t){return 0===xh(e,t)}function Sh(e,t){for(var r,a,i,n=0,o=e.length;n<o;n++){if(0===(a=xh(e[n],t)))return!0;if(n>0&&(i=xh(e[n],e[n-1]))>0&&r<=i&&a<=i&&(r+a-i)*(1-Math.pow((r-a)/i,2))<$l*i)return!0;r=a}return!1}function Ah(e,t){return!!eh(e.map(Mh),Th(t))}function Mh(e){return(e=e.map(Th)).pop(),e}function Th(e){return[e[0]*es,e[1]*es]}function Bh(e,t,r){var a=de(e,t-Yl,r).concat(t);return function(e){return a.map((function(t){return[e,t]}))}}function Lh(e,t,r){var a=de(e,t-Yl,r).concat(t);return function(e){return a.map((function(t){return[t,e]}))}}function Eh(){var e,t,r,a,i,n,o,c,l,s,u,h,d=10,p=d,y=90,f=360,m=2.5;function g(){return{type:"MultiLineString",coordinates:b()}}function b(){return de(ns(a/y)*y,r,y).map(u).concat(de(ns(c/f)*f,o,f).map(h)).concat(de(ns(t/d)*d,e,d).filter((function(e){return ts(e%y)>Yl})).map(l)).concat(de(ns(n/p)*p,i,p).filter((function(e){return ts(e%f)>Yl})).map(s))}return g.lines=function(){return b().map((function(e){return{type:"LineString",coordinates:e}}))},g.outline=function(){return{type:"Polygon",coordinates:[u(a).concat(h(o).slice(1),u(r).reverse().slice(1),h(c).reverse().slice(1))]}},g.extent=function(e){return arguments.length?g.extentMajor(e).extentMinor(e):g.extentMinor()},g.extentMajor=function(e){return arguments.length?(a=+e[0][0],r=+e[1][0],c=+e[0][1],o=+e[1][1],a>r&&(e=a,a=r,r=e),c>o&&(e=c,c=o,o=e),g.precision(m)):[[a,c],[r,o]]},g.extentMinor=function(r){return arguments.length?(t=+r[0][0],e=+r[1][0],n=+r[0][1],i=+r[1][1],t>e&&(r=t,t=e,e=r),n>i&&(r=n,n=i,i=r),g.precision(m)):[[t,n],[e,i]]},g.step=function(e){return arguments.length?g.stepMajor(e).stepMinor(e):g.stepMinor()},g.stepMajor=function(e){return arguments.length?(y=+e[0],f=+e[1],g):[y,f]},g.stepMinor=function(e){return arguments.length?(d=+e[0],p=+e[1],g):[d,p]},g.precision=function(d){return arguments.length?(m=+d,l=Bh(n,i,90),s=Lh(t,e,m),u=Bh(c,o,90),h=Lh(a,r,m),g):m},g.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}var Rh,Hh,Dh,Ph,Nh=e=>e,Gh=new C,Ih=new C,Wh={point:gs,lineStart:gs,lineEnd:gs,polygonStart:function(){Wh.lineStart=Fh,Wh.lineEnd=Kh},polygonEnd:function(){Wh.lineStart=Wh.lineEnd=Wh.point=gs,Gh.add(ts(Ih)),Ih=new C},result:function(){var e=Gh/2;return Gh=new C,e}};function Fh(){Wh.point=zh}function zh(e,t){Wh.point=Oh,Rh=Dh=e,Hh=Ph=t}function Oh(e,t){Ih.add(Ph*e-Dh*t),Dh=e,Ph=t}function Kh(){Oh(Rh,Hh)}var Jh=1/0,Vh=Jh,jh=-Jh,Yh=jh,$h={point:function(e,t){e<Jh&&(Jh=e);e>jh&&(jh=e);t<Vh&&(Vh=t);t>Yh&&(Yh=t)},lineStart:gs,lineEnd:gs,polygonStart:gs,polygonEnd:gs,result:function(){var e=[[Jh,Vh],[jh,Yh]];return jh=Yh=-(Vh=Jh=1/0),e}};var Uh,qh,Zh,Qh,Xh=0,ed=0,td=0,rd=0,ad=0,id=0,nd=0,od=0,cd=0,ld={point:sd,lineStart:ud,lineEnd:pd,polygonStart:function(){ld.lineStart=yd,ld.lineEnd=fd},polygonEnd:function(){ld.point=sd,ld.lineStart=ud,ld.lineEnd=pd},result:function(){var e=cd?[nd/cd,od/cd]:id?[rd/id,ad/id]:td?[Xh/td,ed/td]:[NaN,NaN];return Xh=ed=td=rd=ad=id=nd=od=cd=0,e}};function sd(e,t){Xh+=e,ed+=t,++td}function ud(){ld.point=hd}function hd(e,t){ld.point=dd,sd(Zh=e,Qh=t)}function dd(e,t){var r=e-Zh,a=t-Qh,i=ds(r*r+a*a);rd+=i*(Zh+e)/2,ad+=i*(Qh+t)/2,id+=i,sd(Zh=e,Qh=t)}function pd(){ld.point=sd}function yd(){ld.point=md}function fd(){gd(Uh,qh)}function md(e,t){ld.point=gd,sd(Uh=Zh=e,qh=Qh=t)}function gd(e,t){var r=e-Zh,a=t-Qh,i=ds(r*r+a*a);rd+=i*(Zh+e)/2,ad+=i*(Qh+t)/2,id+=i,nd+=(i=Qh*e-Zh*t)*(Zh+e),od+=i*(Qh+t),cd+=3*i,sd(Zh=e,Qh=t)}function bd(e){this._context=e}bd.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:this._context.moveTo(e,t),this._point=1;break;case 1:this._context.lineTo(e,t);break;default:this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,Ql)}},result:gs};var vd,xd,kd,wd,Cd,_d=new C,Sd={point:gs,lineStart:function(){Sd.point=Ad},lineEnd:function(){vd&&Md(xd,kd),Sd.point=gs},polygonStart:function(){vd=!0},polygonEnd:function(){vd=null},result:function(){var e=+_d;return _d=new C,e}};function Ad(e,t){Sd.point=Md,xd=wd=e,kd=Cd=t}function Md(e,t){wd-=e,Cd-=t,_d.add(ds(wd*wd+Cd*Cd)),wd=e,Cd=t}let Td,Bd,Ld,Ed;class Rd{constructor(e){this._append=null==e?Hd:function(e){const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);if(t>15)return Hd;if(t!==Td){const e=10**t;Td=t,Bd=function(t){let r=1;this._+=t[0];for(const a=t.length;r<a;++r)this._+=Math.round(arguments[r]*e)/e+t[r]}}return Bd}(e),this._radius=4.5,this._=""}pointRadius(e){return this._radius=+e,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){0===this._line&&(this._+="Z"),this._point=NaN}point(e,t){switch(this._point){case 0:this._append`M${e},${t}`,this._point=1;break;case 1:this._append`L${e},${t}`;break;default:if(this._append`M${e},${t}`,this._radius!==Ld||this._append!==Bd){const e=this._radius,t=this._;this._="",this._append`m0,${e}a${e},${e} 0 1,1 0,${-2*e}a${e},${e} 0 1,1 0,${2*e}z`,Ld=e,Bd=this._append,Ed=this._,this._=t}this._+=Ed}}result(){const e=this._;return this._="",e.length?e:null}}function Hd(e){let t=1;this._+=e[0];for(const r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function Dd(e){return function(t){var r=new Pd;for(var a in e)r[a]=e[a];return r.stream=t,r}}function Pd(){}function Nd(e,t,r){var a=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),null!=a&&e.clipExtent(null),Cs(r,e.stream($h)),t($h.result()),null!=a&&e.clipExtent(a),e}function Gd(e,t,r){return Nd(e,(function(r){var a=t[1][0]-t[0][0],i=t[1][1]-t[0][1],n=Math.min(a/(r[1][0]-r[0][0]),i/(r[1][1]-r[0][1])),o=+t[0][0]+(a-n*(r[1][0]+r[0][0]))/2,c=+t[0][1]+(i-n*(r[1][1]+r[0][1]))/2;e.scale(150*n).translate([o,c])}),r)}function Id(e,t,r){return Gd(e,[[0,0],t],r)}function Wd(e,t,r){return Nd(e,(function(r){var a=+t,i=a/(r[1][0]-r[0][0]),n=(a-i*(r[1][0]+r[0][0]))/2,o=-i*r[0][1];e.scale(150*i).translate([n,o])}),r)}function Fd(e,t,r){return Nd(e,(function(r){var a=+t,i=a/(r[1][1]-r[0][1]),n=-i*r[0][0],o=(a-i*(r[1][1]+r[0][1]))/2;e.scale(150*i).translate([n,o])}),r)}Pd.prototype={constructor:Pd,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var zd=is(30*es);function Od(e,t){return+t?function(e,t){function r(a,i,n,o,c,l,s,u,h,d,p,y,f,m){var g=s-a,b=u-i,v=g*g+b*b;if(v>4*t&&f--){var x=o+d,k=c+p,w=l+y,C=ds(x*x+k*k+w*w),_=fs(w/=C),S=ts(ts(w)-1)<Yl||ts(n-h)<Yl?(n+h)/2:as(k,x),A=e(S,_),M=A[0],T=A[1],B=M-a,L=T-i,E=b*B-g*L;(E*E/v>t||ts((g*B+b*L)/v-.5)>.3||o*d+c*p+l*y<zd)&&(r(a,i,n,o,c,l,M,T,S,x/=C,k/=C,w,f,m),m.point(M,T),r(M,T,S,x,k,w,s,u,h,d,p,y,f,m))}}return function(t){var a,i,n,o,c,l,s,u,h,d,p,y,f={point:m,lineStart:g,lineEnd:v,polygonStart:function(){t.polygonStart(),f.lineStart=x},polygonEnd:function(){t.polygonEnd(),f.lineStart=g}};function m(r,a){r=e(r,a),t.point(r[0],r[1])}function g(){u=NaN,f.point=b,t.lineStart()}function b(a,i){var n=$s([a,i]),o=e(a,i);r(u,h,s,d,p,y,u=o[0],h=o[1],s=a,d=n[0],p=n[1],y=n[2],16,t),t.point(u,h)}function v(){f.point=m,t.lineEnd()}function x(){g(),f.point=k,f.lineEnd=w}function k(e,t){b(a=e,t),i=u,n=h,o=d,c=p,l=y,f.point=b}function w(){r(u,h,s,d,p,y,i,n,a,o,c,l,16,t),f.lineEnd=v,v()}return f}}(e,t):function(e){return Dd({point:function(t,r){t=e(t,r),this.stream.point(t[0],t[1])}})}(e)}var Kd=Dd({point:function(e,t){this.stream.point(e*es,t*es)}});function Jd(e,t,r,a,i,n){if(!n)return function(e,t,r,a,i){function n(n,o){return[t+e*(n*=a),r-e*(o*=i)]}return n.invert=function(n,o){return[(n-t)/e*a,(r-o)/e*i]},n}(e,t,r,a,i);var o=is(n),c=us(n),l=o*e,s=c*e,u=o/e,h=c/e,d=(c*r-o*t)/e,p=(c*t+o*r)/e;function y(e,n){return[l*(e*=a)-s*(n*=i)+t,r-s*e-l*n]}return y.invert=function(e,t){return[a*(u*e-h*t+d),i*(p-h*e-u*t)]},y}function Vd(e){return jd((function(){return e}))()}function jd(e){var t,r,a,i,n,o,c,l,s,u,h=150,d=480,p=250,y=0,f=0,m=0,g=0,b=0,v=0,x=1,k=1,w=null,C=ih,_=null,S=Nh,A=.5;function M(e){return l(e[0]*es,e[1]*es)}function T(e){return(e=l.invert(e[0],e[1]))&&[e[0]*Xl,e[1]*Xl]}function B(){var e=Jd(h,0,0,x,k,v).apply(null,t(y,f)),a=Jd(h,d-e[0],p-e[1],x,k,v);return r=zu(m,g,b),c=Wu(t,a),l=Wu(r,c),o=Od(c,A),L()}function L(){return s=u=null,M}return M.stream=function(e){return s&&u===e?s:s=Kd(function(e){return Dd({point:function(t,r){var a=e(t,r);return this.stream.point(a[0],a[1])}})}(r)(C(o(S(u=e)))))},M.preclip=function(e){return arguments.length?(C=e,w=void 0,L()):C},M.postclip=function(e){return arguments.length?(S=e,_=a=i=n=null,L()):S},M.clipAngle=function(e){return arguments.length?(C=+e?nh(w=e*es):(w=null,ih),L()):w*Xl},M.clipExtent=function(e){return arguments.length?(S=null==e?(_=a=i=n=null,Nh):dh(_=+e[0][0],a=+e[0][1],i=+e[1][0],n=+e[1][1]),L()):null==_?null:[[_,a],[i,n]]},M.scale=function(e){return arguments.length?(h=+e,B()):h},M.translate=function(e){return arguments.length?(d=+e[0],p=+e[1],B()):[d,p]},M.center=function(e){return arguments.length?(y=e[0]%360*es,f=e[1]%360*es,B()):[y*Xl,f*Xl]},M.rotate=function(e){return arguments.length?(m=e[0]%360*es,g=e[1]%360*es,b=e.length>2?e[2]%360*es:0,B()):[m*Xl,g*Xl,b*Xl]},M.angle=function(e){return arguments.length?(v=e%360*es,B()):v*Xl},M.reflectX=function(e){return arguments.length?(x=e?-1:1,B()):x<0},M.reflectY=function(e){return arguments.length?(k=e?-1:1,B()):k<0},M.precision=function(e){return arguments.length?(o=Od(c,A=e*e),L()):ds(A)},M.fitExtent=function(e,t){return Gd(M,e,t)},M.fitSize=function(e,t){return Id(M,e,t)},M.fitWidth=function(e,t){return Wd(M,e,t)},M.fitHeight=function(e,t){return Fd(M,e,t)},function(){return t=e.apply(this,arguments),M.invert=t.invert&&T,B()}}function Yd(e){var t=0,r=Ul/3,a=jd(e),i=a(t,r);return i.parallels=function(e){return arguments.length?a(t=e[0]*es,r=e[1]*es):[t*Xl,r*Xl]},i}function $d(e,t){var r=us(e),a=(r+us(t))/2;if(ts(a)<Yl)return function(e){var t=is(e);function r(e,r){return[e*t,us(r)/t]}return r.invert=function(e,r){return[e/t,fs(r*t)]},r}(e);var i=1+r*(2*a-r),n=ds(i)/a;function o(e,t){var r=ds(i-2*a*us(t))/a;return[r*us(e*=a),n-r*is(e)]}return o.invert=function(e,t){var r=n-t,o=as(e,ts(r))*hs(r);return r*a<0&&(o-=Ul*hs(e)*hs(r)),[o/a,fs((i-(e*e+r*r)*a*a)/(2*a))]},o}function Ud(){return Yd($d).scale(155.424).center([0,33.6442])}function qd(){return Ud().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Zd(e){return function(t,r){var a=is(t),i=is(r),n=e(a*i);return n===1/0?[2,0]:[n*i*us(t),n*us(r)]}}function Qd(e){return function(t,r){var a=ds(t*t+r*r),i=e(a),n=us(i),o=is(i);return[as(t*n,a*o),fs(a&&r*n/a)]}}var Xd=Zd((function(e){return ds(2/(1+e))}));Xd.invert=Qd((function(e){return 2*fs(e/2)}));var ep=Zd((function(e){return(e=ys(e))&&e/us(e)}));function tp(e,t){return[e,ls(ps((ql+t)/2))]}function rp(e){var t,r,a,i=Vd(e),n=i.center,o=i.scale,c=i.translate,l=i.clipExtent,s=null;function u(){var n=Ul*o(),c=i(Vu(i.rotate()).invert([0,0]));return l(null==s?[[c[0]-n,c[1]-n],[c[0]+n,c[1]+n]]:e===tp?[[Math.max(c[0]-n,s),t],[Math.min(c[0]+n,r),a]]:[[s,Math.max(c[1]-n,t)],[r,Math.min(c[1]+n,a)]])}return i.scale=function(e){return arguments.length?(o(e),u()):o()},i.translate=function(e){return arguments.length?(c(e),u()):c()},i.center=function(e){return arguments.length?(n(e),u()):n()},i.clipExtent=function(e){return arguments.length?(null==e?s=t=r=a=null:(s=+e[0][0],t=+e[0][1],r=+e[1][0],a=+e[1][1]),u()):null==s?null:[[s,t],[r,a]]},u()}function ap(e){return ps((ql+e)/2)}function ip(e,t){var r=is(e),a=e===t?us(e):ls(r/is(t))/ls(ap(t)/ap(e)),i=r*ss(ap(e),a)/a;if(!a)return tp;function n(e,t){i>0?t<-ql+Yl&&(t=-ql+Yl):t>ql-Yl&&(t=ql-Yl);var r=i/ss(ap(t),a);return[r*us(a*e),i-r*is(a*e)]}return n.invert=function(e,t){var r=i-t,n=hs(a)*ds(e*e+r*r),o=as(e,ts(r))*hs(r);return r*a<0&&(o-=Ul*hs(e)*hs(r)),[o/a,2*rs(ss(i/n,1/a))-ql]},n}function np(e,t){return[e,t]}function op(e,t){var r=is(e),a=e===t?us(e):(r-is(t))/(t-e),i=r/a+e;if(ts(a)<Yl)return np;function n(e,t){var r=i-t,n=a*e;return[r*us(n),i-r*is(n)]}return n.invert=function(e,t){var r=i-t,n=as(e,ts(r))*hs(r);return r*a<0&&(n-=Ul*hs(e)*hs(r)),[n/a,i-hs(a)*ds(e*e+r*r)]},n}ep.invert=Qd((function(e){return e})),tp.invert=function(e,t){return[e,2*rs(os(t))-ql]},np.invert=np;var cp=1.340264,lp=-.081106,sp=893e-6,up=.003796,hp=ds(3)/2;function dp(e,t){var r=fs(hp*us(t)),a=r*r,i=a*a*a;return[e*is(r)/(hp*(cp+3*lp*a+i*(7*sp+9*up*a))),r*(cp+lp*a+i*(sp+up*a))]}function pp(e,t){var r=is(t),a=is(e)*r;return[r*us(e)/a,us(t)/a]}function yp(e,t){var r=t*t,a=r*r;return[e*(.8707-.131979*r+a*(a*(.003971*r-.001529*a)-.013791)),t*(1.007226+r*(.015085+a*(.028874*r-.044475-.005916*a)))]}function fp(e,t){return[is(t)*us(e),us(t)]}function mp(e,t){var r=is(t),a=1+is(e)*r;return[r*us(e)/a,us(t)/a]}function gp(e,t){return[ls(ps((ql+t)/2)),-e]}function bp(e,t){return e.parent===t.parent?1:2}function vp(e,t){return e+t.x}function xp(e,t){return Math.max(e,t.y)}function kp(){var e=bp,t=1,r=1,a=!1;function i(i){var n,o=0;i.eachAfter((function(t){var r=t.children;r?(t.x=function(e){return e.reduce(vp,0)/e.length}(r),t.y=function(e){return 1+e.reduce(xp,0)}(r)):(t.x=n?o+=e(t,n):0,t.y=0,n=t)}));var c=function(e){for(var t;t=e.children;)e=t[0];return e}(i),l=function(e){for(var t;t=e.children;)e=t[t.length-1];return e}(i),s=c.x-e(c,l)/2,u=l.x+e(l,c)/2;return i.eachAfter(a?function(e){e.x=(e.x-i.x)*t,e.y=(i.y-e.y)*r}:function(e){e.x=(e.x-s)/(u-s)*t,e.y=(1-(i.y?e.y/i.y:1))*r})}return i.separation=function(t){return arguments.length?(e=t,i):e},i.size=function(e){return arguments.length?(a=!1,t=+e[0],r=+e[1],i):a?null:[t,r]},i.nodeSize=function(e){return arguments.length?(a=!0,t=+e[0],r=+e[1],i):a?[t,r]:null},i}function wp(e){var t=0,r=e.children,a=r&&r.length;if(a)for(;--a>=0;)t+=r[a].value;else t=1;e.value=t}function Cp(e,t){e instanceof Map?(e=[void 0,e],void 0===t&&(t=Sp)):void 0===t&&(t=_p);for(var r,a,i,n,o,c=new Tp(e),l=[c];r=l.pop();)if((i=t(r.data))&&(o=(i=Array.from(i)).length))for(r.children=i,n=o-1;n>=0;--n)l.push(a=i[n]=new Tp(i[n])),a.parent=r,a.depth=r.depth+1;return c.eachBefore(Mp)}function _p(e){return e.children}function Sp(e){return Array.isArray(e)?e[1]:null}function Ap(e){void 0!==e.data.value&&(e.value=e.data.value),e.data=e.data.data}function Mp(e){var t=0;do{e.height=t}while((e=e.parent)&&e.height<++t)}function Tp(e){this.data=e,this.depth=this.height=0,this.parent=null}function Bp(e){return null==e?null:Lp(e)}function Lp(e){if("function"!=typeof e)throw new Error;return e}function Ep(){return 0}function Rp(e){return function(){return e}}dp.invert=function(e,t){for(var r,a=t,i=a*a,n=i*i*i,o=0;o<12&&(n=(i=(a-=r=(a*(cp+lp*i+n*(sp+up*i))-t)/(cp+3*lp*i+n*(7*sp+9*up*i)))*a)*i*i,!(ts(r)<$l));++o);return[hp*e*(cp+3*lp*i+n*(7*sp+9*up*i))/is(a),fs(us(a)/hp)]},pp.invert=Qd(rs),yp.invert=function(e,t){var r,a=t,i=25;do{var n=a*a,o=n*n;a-=r=(a*(1.007226+n*(.015085+o*(.028874*n-.044475-.005916*o)))-t)/(1.007226+n*(.045255+o*(.259866*n-.311325-.005916*11*o)))}while(ts(r)>Yl&&--i>0);return[e/(.8707+(n=a*a)*(n*(n*n*n*(.003971-.001529*n)-.013791)-.131979)),a]},fp.invert=Qd(fs),mp.invert=Qd((function(e){return 2*rs(e)})),gp.invert=function(e,t){return[-t,2*rs(os(e))-ql]},Tp.prototype=Cp.prototype={constructor:Tp,count:function(){return this.eachAfter(wp)},each:function(e,t){let r=-1;for(const a of this)e.call(t,a,++r,this);return this},eachAfter:function(e,t){for(var r,a,i,n=this,o=[n],c=[],l=-1;n=o.pop();)if(c.push(n),r=n.children)for(a=0,i=r.length;a<i;++a)o.push(r[a]);for(;n=c.pop();)e.call(t,n,++l,this);return this},eachBefore:function(e,t){for(var r,a,i=this,n=[i],o=-1;i=n.pop();)if(e.call(t,i,++o,this),r=i.children)for(a=r.length-1;a>=0;--a)n.push(r[a]);return this},find:function(e,t){let r=-1;for(const a of this)if(e.call(t,a,++r,this))return a},sum:function(e){return this.eachAfter((function(t){for(var r=+e(t.data)||0,a=t.children,i=a&&a.length;--i>=0;)r+=a[i].value;t.value=r}))},sort:function(e){return this.eachBefore((function(t){t.children&&t.children.sort(e)}))},path:function(e){for(var t=this,r=function(e,t){if(e===t)return e;var r=e.ancestors(),a=t.ancestors(),i=null;e=r.pop(),t=a.pop();for(;e===t;)i=e,e=r.pop(),t=a.pop();return i}(t,e),a=[t];t!==r;)t=t.parent,a.push(t);for(var i=a.length;e!==r;)a.splice(i,0,e),e=e.parent;return a},ancestors:function(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t},descendants:function(){return Array.from(this)},leaves:function(){var e=[];return this.eachBefore((function(t){t.children||e.push(t)})),e},links:function(){var e=this,t=[];return e.each((function(r){r!==e&&t.push({source:r.parent,target:r})})),t},copy:function(){return Cp(this).eachBefore(Ap)},[Symbol.iterator]:function*(){var e,t,r,a,i=this,n=[i];do{for(e=n.reverse(),n=[];i=e.pop();)if(yield i,t=i.children)for(r=0,a=t.length;r<a;++r)n.push(t[r])}while(n.length)}};const Hp=4294967296;function Dp(){let e=1;return()=>(e=(1664525*e+1013904223)%Hp)/Hp}function Pp(e,t){for(var r,a,i=0,n=(e=function(e,t){let r,a,i=e.length;for(;i;)a=t()*i--|0,r=e[i],e[i]=e[a],e[a]=r;return e}(Array.from(e),t)).length,o=[];i<n;)r=e[i],a&&Ip(a,r)?++i:(a=Fp(o=Np(o,r)),i=0);return a}function Np(e,t){var r,a;if(Wp(t,e))return[t];for(r=0;r<e.length;++r)if(Gp(t,e[r])&&Wp(zp(e[r],t),e))return[e[r],t];for(r=0;r<e.length-1;++r)for(a=r+1;a<e.length;++a)if(Gp(zp(e[r],e[a]),t)&&Gp(zp(e[r],t),e[a])&&Gp(zp(e[a],t),e[r])&&Wp(Op(e[r],e[a],t),e))return[e[r],e[a],t];throw new Error}function Gp(e,t){var r=e.r-t.r,a=t.x-e.x,i=t.y-e.y;return r<0||r*r<a*a+i*i}function Ip(e,t){var r=e.r-t.r+1e-9*Math.max(e.r,t.r,1),a=t.x-e.x,i=t.y-e.y;return r>0&&r*r>a*a+i*i}function Wp(e,t){for(var r=0;r<t.length;++r)if(!Ip(e,t[r]))return!1;return!0}function Fp(e){switch(e.length){case 1:return function(e){return{x:e.x,y:e.y,r:e.r}}(e[0]);case 2:return zp(e[0],e[1]);case 3:return Op(e[0],e[1],e[2])}}function zp(e,t){var r=e.x,a=e.y,i=e.r,n=t.x,o=t.y,c=t.r,l=n-r,s=o-a,u=c-i,h=Math.sqrt(l*l+s*s);return{x:(r+n+l/h*u)/2,y:(a+o+s/h*u)/2,r:(h+i+c)/2}}function Op(e,t,r){var a=e.x,i=e.y,n=e.r,o=t.x,c=t.y,l=t.r,s=r.x,u=r.y,h=r.r,d=a-o,p=a-s,y=i-c,f=i-u,m=l-n,g=h-n,b=a*a+i*i-n*n,v=b-o*o-c*c+l*l,x=b-s*s-u*u+h*h,k=p*y-d*f,w=(y*x-f*v)/(2*k)-a,C=(f*m-y*g)/k,_=(p*v-d*x)/(2*k)-i,S=(d*g-p*m)/k,A=C*C+S*S-1,M=2*(n+w*C+_*S),T=w*w+_*_-n*n,B=-(Math.abs(A)>1e-6?(M+Math.sqrt(M*M-4*A*T))/(2*A):T/M);return{x:a+w+C*B,y:i+_+S*B,r:B}}function Kp(e,t,r){var a,i,n,o,c=e.x-t.x,l=e.y-t.y,s=c*c+l*l;s?(i=t.r+r.r,i*=i,o=e.r+r.r,i>(o*=o)?(a=(s+o-i)/(2*s),n=Math.sqrt(Math.max(0,o/s-a*a)),r.x=e.x-a*c-n*l,r.y=e.y-a*l+n*c):(a=(s+i-o)/(2*s),n=Math.sqrt(Math.max(0,i/s-a*a)),r.x=t.x+a*c-n*l,r.y=t.y+a*l+n*c)):(r.x=t.x+r.r,r.y=t.y)}function Jp(e,t){var r=e.r+t.r-1e-6,a=t.x-e.x,i=t.y-e.y;return r>0&&r*r>a*a+i*i}function Vp(e){var t=e._,r=e.next._,a=t.r+r.r,i=(t.x*r.r+r.x*t.r)/a,n=(t.y*r.r+r.y*t.r)/a;return i*i+n*n}function jp(e){this._=e,this.next=null,this.previous=null}function Yp(e,t){if(!(n=(e=function(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}(e)).length))return 0;var r,a,i,n,o,c,l,s,u,h,d;if((r=e[0]).x=0,r.y=0,!(n>1))return r.r;if(a=e[1],r.x=-a.r,a.x=r.r,a.y=0,!(n>2))return r.r+a.r;Kp(a,r,i=e[2]),r=new jp(r),a=new jp(a),i=new jp(i),r.next=i.previous=a,a.next=r.previous=i,i.next=a.previous=r;e:for(l=3;l<n;++l){Kp(r._,a._,i=e[l]),i=new jp(i),s=a.next,u=r.previous,h=a._.r,d=r._.r;do{if(h<=d){if(Jp(s._,i._)){a=s,r.next=a,a.previous=r,--l;continue e}h+=s._.r,s=s.next}else{if(Jp(u._,i._)){(r=u).next=a,a.previous=r,--l;continue e}d+=u._.r,u=u.previous}}while(s!==u.next);for(i.previous=r,i.next=a,r.next=a.previous=a=i,o=Vp(r);(i=i.next)!==a;)(c=Vp(i))<o&&(r=i,o=c);a=r.next}for(r=[a._],i=a;(i=i.next)!==a;)r.push(i._);for(i=Pp(r,t),l=0;l<n;++l)(r=e[l]).x-=i.x,r.y-=i.y;return i.r}function $p(e){return Math.sqrt(e.value)}function Up(e){return function(t){t.children||(t.r=Math.max(0,+e(t)||0))}}function qp(e,t,r){return function(a){if(i=a.children){var i,n,o,c=i.length,l=e(a)*t||0;if(l)for(n=0;n<c;++n)i[n].r+=l;if(o=Yp(i,r),l)for(n=0;n<c;++n)i[n].r-=l;a.r=o+l}}}function Zp(e){return function(t){var r=t.parent;t.r*=e,r&&(t.x=r.x+e*t.x,t.y=r.y+e*t.y)}}function Qp(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function Xp(e,t,r,a,i){for(var n,o=e.children,c=-1,l=o.length,s=e.value&&(a-t)/e.value;++c<l;)(n=o[c]).y0=r,n.y1=i,n.x0=t,n.x1=t+=n.value*s}var ey={depth:-1},ty={},ry={};function ay(e){return e.id}function iy(e){return e.parentId}function ny(e){let t=e.length;if(t<2)return"";for(;--t>1&&!oy(e,t););return e.slice(0,t)}function oy(e,t){if("/"===e[t]){let r=0;for(;t>0&&"\\"===e[--t];)++r;if(!(1&r))return!0}return!1}function cy(e,t){return e.parent===t.parent?1:2}function ly(e){var t=e.children;return t?t[0]:e.t}function sy(e){var t=e.children;return t?t[t.length-1]:e.t}function uy(e,t,r){var a=r/(t.i-e.i);t.c-=a,t.s+=r,e.c+=a,t.z+=r,t.m+=r}function hy(e,t,r){return e.a.parent===t.parent?e.a:r}function dy(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}function py(){var e=cy,t=1,r=1,a=null;function i(i){var l=function(e){for(var t,r,a,i,n,o=new dy(e,0),c=[o];t=c.pop();)if(a=t._.children)for(t.children=new Array(n=a.length),i=n-1;i>=0;--i)c.push(r=t.children[i]=new dy(a[i],i)),r.parent=t;return(o.parent=new dy(null,0)).children=[o],o}(i);if(l.eachAfter(n),l.parent.m=-l.z,l.eachBefore(o),a)i.eachBefore(c);else{var s=i,u=i,h=i;i.eachBefore((function(e){e.x<s.x&&(s=e),e.x>u.x&&(u=e),e.depth>h.depth&&(h=e)}));var d=s===u?1:e(s,u)/2,p=d-s.x,y=t/(u.x+d+p),f=r/(h.depth||1);i.eachBefore((function(e){e.x=(e.x+p)*y,e.y=e.depth*f}))}return i}function n(t){var r=t.children,a=t.parent.children,i=t.i?a[t.i-1]:null;if(r){!function(e){for(var t,r=0,a=0,i=e.children,n=i.length;--n>=0;)(t=i[n]).z+=r,t.m+=r,r+=t.s+(a+=t.c)}(t);var n=(r[0].z+r[r.length-1].z)/2;i?(t.z=i.z+e(t._,i._),t.m=t.z-n):t.z=n}else i&&(t.z=i.z+e(t._,i._));t.parent.A=function(t,r,a){if(r){for(var i,n=t,o=t,c=r,l=n.parent.children[0],s=n.m,u=o.m,h=c.m,d=l.m;c=sy(c),n=ly(n),c&&n;)l=ly(l),(o=sy(o)).a=t,(i=c.z+h-n.z-s+e(c._,n._))>0&&(uy(hy(c,t,a),t,i),s+=i,u+=i),h+=c.m,s+=n.m,d+=l.m,u+=o.m;c&&!sy(o)&&(o.t=c,o.m+=h-u),n&&!ly(l)&&(l.t=n,l.m+=s-d,a=t)}return a}(t,i,t.parent.A||a[0])}function o(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function c(e){e.x*=t,e.y=e.depth*r}return i.separation=function(t){return arguments.length?(e=t,i):e},i.size=function(e){return arguments.length?(a=!1,t=+e[0],r=+e[1],i):a?null:[t,r]},i.nodeSize=function(e){return arguments.length?(a=!0,t=+e[0],r=+e[1],i):a?[t,r]:null},i}function yy(e,t,r,a,i){for(var n,o=e.children,c=-1,l=o.length,s=e.value&&(i-r)/e.value;++c<l;)(n=o[c]).x0=t,n.x1=a,n.y0=r,n.y1=r+=n.value*s}dy.prototype=Object.create(Tp.prototype);var fy=(1+Math.sqrt(5))/2;function my(e,t,r,a,i,n){for(var o,c,l,s,u,h,d,p,y,f,m,g=[],b=t.children,v=0,x=0,k=b.length,w=t.value;v<k;){l=i-r,s=n-a;do{u=b[x++].value}while(!u&&x<k);for(h=d=u,m=u*u*(f=Math.max(s/l,l/s)/(w*e)),y=Math.max(d/m,m/h);x<k;++x){if(u+=c=b[x].value,c<h&&(h=c),c>d&&(d=c),m=u*u*f,(p=Math.max(d/m,m/h))>y){u-=c;break}y=p}g.push(o={value:u,dice:l<s,children:b.slice(v,x)}),o.dice?Xp(o,r,a,i,w?a+=s*u/w:n):yy(o,r,a,w?r+=l*u/w:i,n),w-=u,v=x}return g}var gy=function e(t){function r(e,r,a,i,n){my(t,e,r,a,i,n)}return r.ratio=function(t){return e((t=+t)>1?t:1)},r}(fy);var by=function e(t){function r(e,r,a,i,n){if((o=e._squarify)&&o.ratio===t)for(var o,c,l,s,u,h=-1,d=o.length,p=e.value;++h<d;){for(l=(c=o[h]).children,s=c.value=0,u=l.length;s<u;++s)c.value+=l[s].value;c.dice?Xp(c,r,a,i,p?a+=(n-a)*c.value/p:n):yy(c,r,a,p?r+=(i-r)*c.value/p:i,n),p-=c.value}else e._squarify=o=my(t,e,r,a,i,n),o.ratio=t}return r.ratio=function(t){return e((t=+t)>1?t:1)},r}(fy);function vy(e,t,r){return(t[0]-e[0])*(r[1]-e[1])-(t[1]-e[1])*(r[0]-e[0])}function xy(e,t){return e[0]-t[0]||e[1]-t[1]}function ky(e){const t=e.length,r=[0,1];let a,i=2;for(a=2;a<t;++a){for(;i>1&&vy(e[r[i-2]],e[r[i-1]],e[a])<=0;)--i;r[i++]=a}return r.slice(0,i)}var wy=Math.random,Cy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,1===arguments.length?(r=e,e=0):r-=e,function(){return t()*r+e}}return r.source=e,r}(wy),_y=function e(t){function r(e,r){return arguments.length<2&&(r=e,e=0),e=Math.floor(e),r=Math.floor(r)-e,function(){return Math.floor(t()*r+e)}}return r.source=e,r}(wy),Sy=function e(t){function r(e,r){var a,i;return e=null==e?0:+e,r=null==r?1:+r,function(){var n;if(null!=a)n=a,a=null;else do{a=2*t()-1,n=2*t()-1,i=a*a+n*n}while(!i||i>1);return e+r*n*Math.sqrt(-2*Math.log(i)/i)}}return r.source=e,r}(wy),Ay=function e(t){var r=Sy.source(t);function a(){var e=r.apply(this,arguments);return function(){return Math.exp(e())}}return a.source=e,a}(wy),My=function e(t){function r(e){return(e=+e)<=0?()=>0:function(){for(var r=0,a=e;a>1;--a)r+=t();return r+a*t()}}return r.source=e,r}(wy),Ty=function e(t){var r=My.source(t);function a(e){if(0==(e=+e))return t;var a=r(e);return function(){return a()/e}}return a.source=e,a}(wy),By=function e(t){function r(e){return function(){return-Math.log1p(-t())/e}}return r.source=e,r}(wy),Ly=function e(t){function r(e){if((e=+e)<0)throw new RangeError("invalid alpha");return e=1/-e,function(){return Math.pow(1-t(),e)}}return r.source=e,r}(wy),Ey=function e(t){function r(e){if((e=+e)<0||e>1)throw new RangeError("invalid p");return function(){return Math.floor(t()+e)}}return r.source=e,r}(wy),Ry=function e(t){function r(e){if((e=+e)<0||e>1)throw new RangeError("invalid p");return 0===e?()=>1/0:1===e?()=>1:(e=Math.log1p(-e),function(){return 1+Math.floor(Math.log1p(-t())/e)})}return r.source=e,r}(wy),Hy=function e(t){var r=Sy.source(t)();function a(e,a){if((e=+e)<0)throw new RangeError("invalid k");if(0===e)return()=>0;if(a=null==a?1:+a,1===e)return()=>-Math.log1p(-t())*a;var i=(e<1?e+1:e)-1/3,n=1/(3*Math.sqrt(i)),o=e<1?()=>Math.pow(t(),1/e):()=>1;return function(){do{do{var e=r(),c=1+n*e}while(c<=0);c*=c*c;var l=1-t()}while(l>=1-.0331*e*e*e*e&&Math.log(l)>=.5*e*e+i*(1-c+Math.log(c)));return i*c*o()*a}}return a.source=e,a}(wy),Dy=function e(t){var r=Hy.source(t);function a(e,t){var a=r(e),i=r(t);return function(){var e=a();return 0===e?0:e/(e+i())}}return a.source=e,a}(wy),Py=function e(t){var r=Ry.source(t),a=Dy.source(t);function i(e,t){return e=+e,(t=+t)>=1?()=>e:t<=0?()=>0:function(){for(var i=0,n=e,o=t;n*o>16&&n*(1-o)>16;){var c=Math.floor((n+1)*o),l=a(c,n-c+1)();l<=o?(i+=c,n-=c,o=(o-l)/(1-l)):(n=c-1,o/=l)}for(var s=o<.5,u=r(s?o:1-o),h=u(),d=0;h<=n;++d)h+=u();return i+(s?d:n-d)}}return i.source=e,i}(wy),Ny=function e(t){function r(e,r,a){var i;return 0==(e=+e)?i=e=>-Math.log(e):(e=1/e,i=t=>Math.pow(t,e)),r=null==r?0:+r,a=null==a?1:+a,function(){return r+a*i(-Math.log1p(-t()))}}return r.source=e,r}(wy),Gy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*Math.tan(Math.PI*t())}}return r.source=e,r}(wy),Iy=function e(t){function r(e,r){return e=null==e?0:+e,r=null==r?1:+r,function(){var a=t();return e+r*Math.log(a/(1-a))}}return r.source=e,r}(wy),Wy=function e(t){var r=Hy.source(t),a=Py.source(t);function i(e){return function(){for(var i=0,n=e;n>16;){var o=Math.floor(.875*n),c=r(o)();if(c>n)return i+a(o-1,n/c)();i+=o,n-=c}for(var l=-Math.log1p(-t()),s=0;l<=n;++s)l-=Math.log1p(-t());return i+s}}return i.source=e,i}(wy);const Fy=1/4294967296;function zy(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function Oy(e,t){switch(arguments.length){case 0:break;case 1:"function"==typeof e?this.interpolator(e):this.range(e);break;default:this.domain(e),"function"==typeof t?this.interpolator(t):this.range(t)}return this}const Ky=Symbol("implicit");function Jy(){var e=new _,t=[],r=[],a=Ky;function i(i){let n=e.get(i);if(void 0===n){if(a!==Ky)return a;e.set(i,n=t.push(i)-1)}return r[n%r.length]}return i.domain=function(r){if(!arguments.length)return t.slice();t=[],e=new _;for(const a of r)e.has(a)||e.set(a,t.push(a)-1);return i},i.range=function(e){return arguments.length?(r=Array.from(e),i):r.slice()},i.unknown=function(e){return arguments.length?(a=e,i):a},i.copy=function(){return Jy(t,r).unknown(a)},zy.apply(i,arguments),i}function Vy(){var e,t,r=Jy().unknown(void 0),a=r.domain,i=r.range,n=0,o=1,c=!1,l=0,s=0,u=.5;function h(){var r=a().length,h=o<n,d=h?o:n,p=h?n:o;e=(p-d)/Math.max(1,r-l+2*s),c&&(e=Math.floor(e)),d+=(p-d-e*(r-l))*u,t=e*(1-l),c&&(d=Math.round(d),t=Math.round(t));var y=de(r).map((function(t){return d+e*t}));return i(h?y.reverse():y)}return delete r.unknown,r.domain=function(e){return arguments.length?(a(e),h()):a()},r.range=function(e){return arguments.length?([n,o]=e,n=+n,o=+o,h()):[n,o]},r.rangeRound=function(e){return[n,o]=e,n=+n,o=+o,c=!0,h()},r.bandwidth=function(){return t},r.step=function(){return e},r.round=function(e){return arguments.length?(c=!!e,h()):c},r.padding=function(e){return arguments.length?(l=Math.min(1,s=+e),h()):l},r.paddingInner=function(e){return arguments.length?(l=Math.min(1,e),h()):l},r.paddingOuter=function(e){return arguments.length?(s=+e,h()):s},r.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),h()):u},r.copy=function(){return Vy(a(),[n,o]).round(c).paddingInner(l).paddingOuter(s).align(u)},zy.apply(h(),arguments)}function jy(e){var t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=function(){return jy(t())},e}function Yy(e){return+e}var $y=[0,1];function Uy(e){return e}function qy(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:function(e){return function(){return e}}(isNaN(t)?NaN:.5)}function Zy(e,t,r){var a=e[0],i=e[1],n=t[0],o=t[1];return i<a?(a=qy(i,a),n=r(o,n)):(a=qy(a,i),n=r(n,o)),function(e){return n(a(e))}}function Qy(e,t,r){var a=Math.min(e.length,t.length)-1,i=new Array(a),n=new Array(a),o=-1;for(e[a]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<a;)i[o]=qy(e[o],e[o+1]),n[o]=r(t[o],t[o+1]);return function(t){var r=c(e,t,1,a)-1;return n[r](i[r](t))}}function Xy(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function ef(){var e,t,r,a,i,n,o=$y,c=$y,l=Ja,s=Uy;function u(){var e=Math.min(o.length,c.length);return s!==Uy&&(s=function(e,t){var r;return e>t&&(r=e,e=t,t=r),function(r){return Math.max(e,Math.min(t,r))}}(o[0],o[e-1])),a=e>2?Qy:Zy,i=n=null,h}function h(t){return null==t||isNaN(t=+t)?r:(i||(i=a(o.map(e),c,l)))(e(s(t)))}return h.invert=function(r){return s(t((n||(n=a(c,o.map(e),Wa)))(r)))},h.domain=function(e){return arguments.length?(o=Array.from(e,Yy),u()):o.slice()},h.range=function(e){return arguments.length?(c=Array.from(e),u()):c.slice()},h.rangeRound=function(e){return c=Array.from(e),l=Va,u()},h.clamp=function(e){return arguments.length?(s=!!e||Uy,u()):s!==Uy},h.interpolate=function(e){return arguments.length?(l=e,u()):l},h.unknown=function(e){return arguments.length?(r=e,h):r},function(r,a){return e=r,t=a,u()}}function tf(){return ef()(Uy,Uy)}function rf(e,t,r,a){var i,n=q(e,t,r);switch((a=Rl(null==a?",f":a)).type){case"s":var o=Math.max(Math.abs(e),Math.abs(t));return null!=a.precision||isNaN(i=Vl(n,o))||(a.precision=i),Wl(a,o);case"":case"e":case"g":case"p":case"r":null!=a.precision||isNaN(i=jl(n,Math.max(Math.abs(e),Math.abs(t))))||(a.precision=i-("e"===a.type));break;case"f":case"%":null!=a.precision||isNaN(i=Jl(n))||(a.precision=i-2*("%"===a.type))}return Il(a)}function af(e){var t=e.domain;return e.ticks=function(e){var r=t();return $(r[0],r[r.length-1],null==e?10:e)},e.tickFormat=function(e,r){var a=t();return rf(a[0],a[a.length-1],null==e?10:e,r)},e.nice=function(r){null==r&&(r=10);var a,i,n=t(),o=0,c=n.length-1,l=n[o],s=n[c],u=10;for(s<l&&(i=l,l=s,s=i,i=o,o=c,c=i);u-- >0;){if((i=U(l,s,r))===a)return n[o]=l,n[c]=s,t(n);if(i>0)l=Math.floor(l/i)*i,s=Math.ceil(s/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,s=Math.floor(s*i)/i}a=i}return e},e}function nf(e,t){var r,a=0,i=(e=e.slice()).length-1,n=e[a],o=e[i];return o<n&&(r=a,a=i,i=r,r=n,n=o,o=r),e[a]=t.floor(n),e[i]=t.ceil(o),e}function of(e){return Math.log(e)}function cf(e){return Math.exp(e)}function lf(e){return-Math.log(-e)}function sf(e){return-Math.exp(-e)}function uf(e){return isFinite(e)?+("1e"+e):e<0?0:e}function hf(e){return(t,r)=>-e(-t,r)}function df(e){const t=e(of,cf),r=t.domain;let a,i,n=10;function o(){return a=function(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}(n),i=function(e){return 10===e?uf:e===Math.E?Math.exp:t=>Math.pow(e,t)}(n),r()[0]<0?(a=hf(a),i=hf(i),e(lf,sf)):e(of,cf),t}return t.base=function(e){return arguments.length?(n=+e,o()):n},t.domain=function(e){return arguments.length?(r(e),o()):r()},t.ticks=e=>{const t=r();let o=t[0],c=t[t.length-1];const l=c<o;l&&([o,c]=[c,o]);let s,u,h=a(o),d=a(c);const p=null==e?10:+e;let y=[];if(!(n%1)&&d-h<p){if(h=Math.floor(h),d=Math.ceil(d),o>0){for(;h<=d;++h)for(s=1;s<n;++s)if(u=h<0?s/i(-h):s*i(h),!(u<o)){if(u>c)break;y.push(u)}}else for(;h<=d;++h)for(s=n-1;s>=1;--s)if(u=h>0?s/i(-h):s*i(h),!(u<o)){if(u>c)break;y.push(u)}2*y.length<p&&(y=$(o,c,p))}else y=$(h,d,Math.min(d-h,p)).map(i);return l?y.reverse():y},t.tickFormat=(e,r)=>{if(null==e&&(e=10),null==r&&(r=10===n?"s":","),"function"!=typeof r&&(n%1||null!=(r=Rl(r)).precision||(r.trim=!0),r=Il(r)),e===1/0)return r;const o=Math.max(1,n*e/t.ticks().length);return e=>{let t=e/i(Math.round(a(e)));return t*n<n-.5&&(t*=n),t<=o?r(e):""}},t.nice=()=>r(nf(r(),{floor:e=>i(Math.floor(a(e))),ceil:e=>i(Math.ceil(a(e)))})),t}function pf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function yf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function ff(e){var t=1,r=e(pf(t),yf(t));return r.constant=function(r){return arguments.length?e(pf(t=+r),yf(t)):t},af(r)}function mf(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function gf(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function bf(e){return e<0?-e*e:e*e}function vf(e){var t=e(Uy,Uy),r=1;return t.exponent=function(t){return arguments.length?1===(r=+t)?e(Uy,Uy):.5===r?e(gf,bf):e(mf(r),mf(1/r)):r},af(t)}function xf(){var e=vf(ef());return e.copy=function(){return Xy(e,xf()).exponent(e.exponent())},zy.apply(e,arguments),e}function kf(e){return Math.sign(e)*e*e}const wf=new Date,Cf=new Date;function _f(e,t,r,a){function i(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=r=>(e(r=new Date(r-1)),t(r,1),e(r),r),i.round=e=>{const t=i(e),r=i.ceil(e);return e-t<r-e?t:r},i.offset=(e,r)=>(t(e=new Date(+e),null==r?1:Math.floor(r)),e),i.range=(r,a,n)=>{const o=[];if(r=i.ceil(r),n=null==n?1:Math.floor(n),!(r<a&&n>0))return o;let c;do{o.push(c=new Date(+r)),t(r,n),e(r)}while(c<r&&r<a);return o},i.filter=r=>_f((t=>{if(t>=t)for(;e(t),!r(t);)t.setTime(t-1)}),((e,a)=>{if(e>=e)if(a<0)for(;++a<=0;)for(;t(e,-1),!r(e););else for(;--a>=0;)for(;t(e,1),!r(e););})),r&&(i.count=(t,a)=>(wf.setTime(+t),Cf.setTime(+a),e(wf),e(Cf),Math.floor(r(wf,Cf))),i.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?i.filter(a?t=>a(t)%e==0:t=>i.count(0,t)%e==0):i:null)),i}const Sf=_f((()=>{}),((e,t)=>{e.setTime(+e+t)}),((e,t)=>t-e));Sf.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?_f((t=>{t.setTime(Math.floor(t/e)*e)}),((t,r)=>{t.setTime(+t+r*e)}),((t,r)=>(r-t)/e)):Sf:null);const Af=Sf.range,Mf=1e3,Tf=6e4,Bf=36e5,Lf=864e5,Ef=6048e5,Rf=2592e6,Hf=31536e6,Df=_f((e=>{e.setTime(e-e.getMilliseconds())}),((e,t)=>{e.setTime(+e+t*Mf)}),((e,t)=>(t-e)/Mf),(e=>e.getUTCSeconds())),Pf=Df.range,Nf=_f((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Mf)}),((e,t)=>{e.setTime(+e+t*Tf)}),((e,t)=>(t-e)/Tf),(e=>e.getMinutes())),Gf=Nf.range,If=_f((e=>{e.setUTCSeconds(0,0)}),((e,t)=>{e.setTime(+e+t*Tf)}),((e,t)=>(t-e)/Tf),(e=>e.getUTCMinutes())),Wf=If.range,Ff=_f((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Mf-e.getMinutes()*Tf)}),((e,t)=>{e.setTime(+e+t*Bf)}),((e,t)=>(t-e)/Bf),(e=>e.getHours())),zf=Ff.range,Of=_f((e=>{e.setUTCMinutes(0,0,0)}),((e,t)=>{e.setTime(+e+t*Bf)}),((e,t)=>(t-e)/Bf),(e=>e.getUTCHours())),Kf=Of.range,Jf=_f((e=>e.setHours(0,0,0,0)),((e,t)=>e.setDate(e.getDate()+t)),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Tf)/Lf),(e=>e.getDate()-1)),Vf=Jf.range,jf=_f((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/Lf),(e=>e.getUTCDate()-1)),Yf=jf.range,$f=_f((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/Lf),(e=>Math.floor(e/Lf))),Uf=$f.range;function qf(e){return _f((t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),((e,t)=>{e.setDate(e.getDate()+7*t)}),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Tf)/Ef))}const Zf=qf(0),Qf=qf(1),Xf=qf(2),em=qf(3),tm=qf(4),rm=qf(5),am=qf(6),im=Zf.range,nm=Qf.range,om=Xf.range,cm=em.range,lm=tm.range,sm=rm.range,um=am.range;function hm(e){return _f((t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)}),((e,t)=>(t-e)/Ef))}const dm=hm(0),pm=hm(1),ym=hm(2),fm=hm(3),mm=hm(4),gm=hm(5),bm=hm(6),vm=dm.range,xm=pm.range,km=ym.range,wm=fm.range,Cm=mm.range,_m=gm.range,Sm=bm.range,Am=_f((e=>{e.setDate(1),e.setHours(0,0,0,0)}),((e,t)=>{e.setMonth(e.getMonth()+t)}),((e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())),(e=>e.getMonth())),Mm=Am.range,Tm=_f((e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)}),((e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())),(e=>e.getUTCMonth())),Bm=Tm.range,Lm=_f((e=>{e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,t)=>{e.setFullYear(e.getFullYear()+t)}),((e,t)=>t.getFullYear()-e.getFullYear()),(e=>e.getFullYear()));Lm.every=e=>isFinite(e=Math.floor(e))&&e>0?_f((t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,r)=>{t.setFullYear(t.getFullYear()+r*e)})):null;const Em=Lm.range,Rm=_f((e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)}),((e,t)=>t.getUTCFullYear()-e.getUTCFullYear()),(e=>e.getUTCFullYear()));Rm.every=e=>isFinite(e=Math.floor(e))&&e>0?_f((t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)})):null;const Hm=Rm.range;function Dm(e,t,r,i,n,o){const c=[[Df,1,Mf],[Df,5,5e3],[Df,15,15e3],[Df,30,3e4],[o,1,Tf],[o,5,3e5],[o,15,9e5],[o,30,18e5],[n,1,Bf],[n,3,108e5],[n,6,216e5],[n,12,432e5],[i,1,Lf],[i,2,1728e5],[r,1,Ef],[t,1,Rf],[t,3,7776e6],[e,1,Hf]];function l(t,r,i){const n=Math.abs(r-t)/i,o=a((([,,e])=>e)).right(c,n);if(o===c.length)return e.every(q(t/Hf,r/Hf,i));if(0===o)return Sf.every(Math.max(q(t,r,i),1));const[l,s]=c[n/c[o-1][2]<c[o][2]/n?o-1:o];return l.every(s)}return[function(e,t,r){const a=t<e;a&&([e,t]=[t,e]);const i=r&&"function"==typeof r.range?r:l(e,t,r),n=i?i.range(e,+t+1):[];return a?n.reverse():n},l]}const[Pm,Nm]=Dm(Rm,Tm,dm,$f,Of,If),[Gm,Im]=Dm(Lm,Am,Zf,Jf,Ff,Nf);function Wm(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Fm(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function zm(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function Om(e){var t=e.dateTime,r=e.date,a=e.time,i=e.periods,n=e.days,o=e.shortDays,c=e.months,l=e.shortMonths,s=eg(i),u=tg(i),h=eg(n),d=tg(n),p=eg(o),y=tg(o),f=eg(c),m=tg(c),g=eg(l),b=tg(l),v={a:function(e){return o[e.getDay()]},A:function(e){return n[e.getDay()]},b:function(e){return l[e.getMonth()]},B:function(e){return c[e.getMonth()]},c:null,d:wg,e:wg,f:Mg,g:Ig,G:Fg,H:Cg,I:_g,j:Sg,L:Ag,m:Tg,M:Bg,p:function(e){return i[+(e.getHours()>=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:sb,s:ub,S:Lg,u:Eg,U:Rg,V:Dg,w:Pg,W:Ng,x:null,X:null,y:Gg,Y:Wg,Z:zg,"%":lb},x={a:function(e){return o[e.getUTCDay()]},A:function(e){return n[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return c[e.getUTCMonth()]},c:null,d:Og,e:Og,f:Yg,g:ib,G:ob,H:Kg,I:Jg,j:Vg,L:jg,m:$g,M:Ug,p:function(e){return i[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:sb,s:ub,S:qg,u:Zg,U:Qg,V:eb,w:tb,W:rb,x:null,X:null,y:ab,Y:nb,Z:cb,"%":lb},k={a:function(e,t,r){var a=p.exec(t.slice(r));return a?(e.w=y.get(a[0].toLowerCase()),r+a[0].length):-1},A:function(e,t,r){var a=h.exec(t.slice(r));return a?(e.w=d.get(a[0].toLowerCase()),r+a[0].length):-1},b:function(e,t,r){var a=g.exec(t.slice(r));return a?(e.m=b.get(a[0].toLowerCase()),r+a[0].length):-1},B:function(e,t,r){var a=f.exec(t.slice(r));return a?(e.m=m.get(a[0].toLowerCase()),r+a[0].length):-1},c:function(e,r,a){return _(e,t,r,a)},d:dg,e:dg,f:bg,g:lg,G:cg,H:yg,I:yg,j:pg,L:gg,m:hg,M:fg,p:function(e,t,r){var a=s.exec(t.slice(r));return a?(e.p=u.get(a[0].toLowerCase()),r+a[0].length):-1},q:ug,Q:xg,s:kg,S:mg,u:ag,U:ig,V:ng,w:rg,W:og,x:function(e,t,a){return _(e,r,t,a)},X:function(e,t,r){return _(e,a,t,r)},y:lg,Y:cg,Z:sg,"%":vg};function w(e,t){return function(r){var a,i,n,o=[],c=-1,l=0,s=e.length;for(r instanceof Date||(r=new Date(+r));++c<s;)37===e.charCodeAt(c)&&(o.push(e.slice(l,c)),null!=(i=$m[a=e.charAt(++c)])?a=e.charAt(++c):i="e"===a?" ":"0",(n=t[a])&&(a=n(r,i)),o.push(a),l=c+1);return o.push(e.slice(l,c)),o.join("")}}function C(e,t){return function(r){var a,i,n=zm(1900,void 0,1);if(_(n,e,r+="",0)!=r.length)return null;if("Q"in n)return new Date(n.Q);if("s"in n)return new Date(1e3*n.s+("L"in n?n.L:0));if(t&&!("Z"in n)&&(n.Z=0),"p"in n&&(n.H=n.H%12+12*n.p),void 0===n.m&&(n.m="q"in n?n.q:0),"V"in n){if(n.V<1||n.V>53)return null;"w"in n||(n.w=1),"Z"in n?(i=(a=Fm(zm(n.y,0,1))).getUTCDay(),a=i>4||0===i?pm.ceil(a):pm(a),a=jf.offset(a,7*(n.V-1)),n.y=a.getUTCFullYear(),n.m=a.getUTCMonth(),n.d=a.getUTCDate()+(n.w+6)%7):(i=(a=Wm(zm(n.y,0,1))).getDay(),a=i>4||0===i?Qf.ceil(a):Qf(a),a=Jf.offset(a,7*(n.V-1)),n.y=a.getFullYear(),n.m=a.getMonth(),n.d=a.getDate()+(n.w+6)%7)}else("W"in n||"U"in n)&&("w"in n||(n.w="u"in n?n.u%7:"W"in n?1:0),i="Z"in n?Fm(zm(n.y,0,1)).getUTCDay():Wm(zm(n.y,0,1)).getDay(),n.m=0,n.d="W"in n?(n.w+6)%7+7*n.W-(i+5)%7:n.w+7*n.U-(i+6)%7);return"Z"in n?(n.H+=n.Z/100|0,n.M+=n.Z%100,Fm(n)):Wm(n)}}function _(e,t,r,a){for(var i,n,o=0,c=t.length,l=r.length;o<c;){if(a>=l)return-1;if(37===(i=t.charCodeAt(o++))){if(i=t.charAt(o++),!(n=k[i in $m?t.charAt(o++):i])||(a=n(e,r,a))<0)return-1}else if(i!=r.charCodeAt(a++))return-1}return a}return v.x=w(r,v),v.X=w(a,v),v.c=w(t,v),x.x=w(r,x),x.X=w(a,x),x.c=w(t,x),{format:function(e){var t=w(e+="",v);return t.toString=function(){return e},t},parse:function(e){var t=C(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=w(e+="",x);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+="",!0);return t.toString=function(){return e},t}}}var Km,Jm,Vm,jm,Ym,$m={"-":"",_:" ",0:"0"},Um=/^\s*\d+/,qm=/^%/,Zm=/[\\^$*+?|[\]().{}]/g;function Qm(e,t,r){var a=e<0?"-":"",i=(a?-e:e)+"",n=i.length;return a+(n<r?new Array(r-n+1).join(t)+i:i)}function Xm(e){return e.replace(Zm,"\\$&")}function eg(e){return new RegExp("^(?:"+e.map(Xm).join("|")+")","i")}function tg(e){return new Map(e.map(((e,t)=>[e.toLowerCase(),t])))}function rg(e,t,r){var a=Um.exec(t.slice(r,r+1));return a?(e.w=+a[0],r+a[0].length):-1}function ag(e,t,r){var a=Um.exec(t.slice(r,r+1));return a?(e.u=+a[0],r+a[0].length):-1}function ig(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.U=+a[0],r+a[0].length):-1}function ng(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.V=+a[0],r+a[0].length):-1}function og(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.W=+a[0],r+a[0].length):-1}function cg(e,t,r){var a=Um.exec(t.slice(r,r+4));return a?(e.y=+a[0],r+a[0].length):-1}function lg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.y=+a[0]+(+a[0]>68?1900:2e3),r+a[0].length):-1}function sg(e,t,r){var a=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return a?(e.Z=a[1]?0:-(a[2]+(a[3]||"00")),r+a[0].length):-1}function ug(e,t,r){var a=Um.exec(t.slice(r,r+1));return a?(e.q=3*a[0]-3,r+a[0].length):-1}function hg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.m=a[0]-1,r+a[0].length):-1}function dg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.d=+a[0],r+a[0].length):-1}function pg(e,t,r){var a=Um.exec(t.slice(r,r+3));return a?(e.m=0,e.d=+a[0],r+a[0].length):-1}function yg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.H=+a[0],r+a[0].length):-1}function fg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.M=+a[0],r+a[0].length):-1}function mg(e,t,r){var a=Um.exec(t.slice(r,r+2));return a?(e.S=+a[0],r+a[0].length):-1}function gg(e,t,r){var a=Um.exec(t.slice(r,r+3));return a?(e.L=+a[0],r+a[0].length):-1}function bg(e,t,r){var a=Um.exec(t.slice(r,r+6));return a?(e.L=Math.floor(a[0]/1e3),r+a[0].length):-1}function vg(e,t,r){var a=qm.exec(t.slice(r,r+1));return a?r+a[0].length:-1}function xg(e,t,r){var a=Um.exec(t.slice(r));return a?(e.Q=+a[0],r+a[0].length):-1}function kg(e,t,r){var a=Um.exec(t.slice(r));return a?(e.s=+a[0],r+a[0].length):-1}function wg(e,t){return Qm(e.getDate(),t,2)}function Cg(e,t){return Qm(e.getHours(),t,2)}function _g(e,t){return Qm(e.getHours()%12||12,t,2)}function Sg(e,t){return Qm(1+Jf.count(Lm(e),e),t,3)}function Ag(e,t){return Qm(e.getMilliseconds(),t,3)}function Mg(e,t){return Ag(e,t)+"000"}function Tg(e,t){return Qm(e.getMonth()+1,t,2)}function Bg(e,t){return Qm(e.getMinutes(),t,2)}function Lg(e,t){return Qm(e.getSeconds(),t,2)}function Eg(e){var t=e.getDay();return 0===t?7:t}function Rg(e,t){return Qm(Zf.count(Lm(e)-1,e),t,2)}function Hg(e){var t=e.getDay();return t>=4||0===t?tm(e):tm.ceil(e)}function Dg(e,t){return e=Hg(e),Qm(tm.count(Lm(e),e)+(4===Lm(e).getDay()),t,2)}function Pg(e){return e.getDay()}function Ng(e,t){return Qm(Qf.count(Lm(e)-1,e),t,2)}function Gg(e,t){return Qm(e.getFullYear()%100,t,2)}function Ig(e,t){return Qm((e=Hg(e)).getFullYear()%100,t,2)}function Wg(e,t){return Qm(e.getFullYear()%1e4,t,4)}function Fg(e,t){var r=e.getDay();return Qm((e=r>=4||0===r?tm(e):tm.ceil(e)).getFullYear()%1e4,t,4)}function zg(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Qm(t/60|0,"0",2)+Qm(t%60,"0",2)}function Og(e,t){return Qm(e.getUTCDate(),t,2)}function Kg(e,t){return Qm(e.getUTCHours(),t,2)}function Jg(e,t){return Qm(e.getUTCHours()%12||12,t,2)}function Vg(e,t){return Qm(1+jf.count(Rm(e),e),t,3)}function jg(e,t){return Qm(e.getUTCMilliseconds(),t,3)}function Yg(e,t){return jg(e,t)+"000"}function $g(e,t){return Qm(e.getUTCMonth()+1,t,2)}function Ug(e,t){return Qm(e.getUTCMinutes(),t,2)}function qg(e,t){return Qm(e.getUTCSeconds(),t,2)}function Zg(e){var t=e.getUTCDay();return 0===t?7:t}function Qg(e,t){return Qm(dm.count(Rm(e)-1,e),t,2)}function Xg(e){var t=e.getUTCDay();return t>=4||0===t?mm(e):mm.ceil(e)}function eb(e,t){return e=Xg(e),Qm(mm.count(Rm(e),e)+(4===Rm(e).getUTCDay()),t,2)}function tb(e){return e.getUTCDay()}function rb(e,t){return Qm(pm.count(Rm(e)-1,e),t,2)}function ab(e,t){return Qm(e.getUTCFullYear()%100,t,2)}function ib(e,t){return Qm((e=Xg(e)).getUTCFullYear()%100,t,2)}function nb(e,t){return Qm(e.getUTCFullYear()%1e4,t,4)}function ob(e,t){var r=e.getUTCDay();return Qm((e=r>=4||0===r?mm(e):mm.ceil(e)).getUTCFullYear()%1e4,t,4)}function cb(){return"+0000"}function lb(){return"%"}function sb(e){return+e}function ub(e){return Math.floor(+e/1e3)}function hb(e){return Km=Om(e),Jm=Km.format,Vm=Km.parse,jm=Km.utcFormat,Ym=Km.utcParse,Km}hb({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var db="%Y-%m-%dT%H:%M:%S.%LZ";var pb=Date.prototype.toISOString?function(e){return e.toISOString()}:jm(db);var yb=+new Date("2000-01-01T00:00:00.000Z")?function(e){var t=new Date(e);return isNaN(t)?null:t}:Ym(db);function fb(e){return new Date(e)}function mb(e){return e instanceof Date?+e:+new Date(+e)}function gb(e,t,r,a,i,n,o,c,l,s){var u=tf(),h=u.invert,d=u.domain,p=s(".%L"),y=s(":%S"),f=s("%I:%M"),m=s("%I %p"),g=s("%a %d"),b=s("%b %d"),v=s("%B"),x=s("%Y");function k(e){return(l(e)<e?p:c(e)<e?y:o(e)<e?f:n(e)<e?m:a(e)<e?i(e)<e?g:b:r(e)<e?v:x)(e)}return u.invert=function(e){return new Date(h(e))},u.domain=function(e){return arguments.length?d(Array.from(e,mb)):d().map(fb)},u.ticks=function(t){var r=d();return e(r[0],r[r.length-1],null==t?10:t)},u.tickFormat=function(e,t){return null==t?k:s(t)},u.nice=function(e){var r=d();return e&&"function"==typeof e.range||(e=t(r[0],r[r.length-1],null==e?10:e)),e?d(nf(r,e)):u},u.copy=function(){return Xy(u,gb(e,t,r,a,i,n,o,c,l,s))},u}function bb(){var e,t,r,a,i,n=0,o=1,c=Uy,l=!1;function s(t){return null==t||isNaN(t=+t)?i:c(0===r?.5:(t=(a(t)-e)*r,l?Math.max(0,Math.min(1,t)):t))}function u(e){return function(t){var r,a;return arguments.length?([r,a]=t,c=e(r,a),s):[c(0),c(1)]}}return s.domain=function(i){return arguments.length?([n,o]=i,e=a(n=+n),t=a(o=+o),r=e===t?0:1/(t-e),s):[n,o]},s.clamp=function(e){return arguments.length?(l=!!e,s):l},s.interpolator=function(e){return arguments.length?(c=e,s):c},s.range=u(Ja),s.rangeRound=u(Va),s.unknown=function(e){return arguments.length?(i=e,s):i},function(i){return a=i,e=i(n),t=i(o),r=e===t?0:1/(t-e),s}}function vb(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function xb(){var e=vf(bb());return e.copy=function(){return vb(e,xb()).exponent(e.exponent())},Oy.apply(e,arguments)}function kb(){var e,t,r,a,i,n,o,c=0,l=.5,s=1,u=1,h=Uy,d=!1;function p(e){return isNaN(e=+e)?o:(e=.5+((e=+n(e))-t)*(u*e<u*t?a:i),h(d?Math.max(0,Math.min(1,e)):e))}function y(e){return function(t){var r,a,i;return arguments.length?([r,a,i]=t,h=ui(e,[r,a,i]),p):[h(0),h(.5),h(1)]}}return p.domain=function(o){return arguments.length?([c,l,s]=o,e=n(c=+c),t=n(l=+l),r=n(s=+s),a=e===t?0:.5/(t-e),i=t===r?0:.5/(r-t),u=t<e?-1:1,p):[c,l,s]},p.clamp=function(e){return arguments.length?(d=!!e,p):d},p.interpolator=function(e){return arguments.length?(h=e,p):h},p.range=y(Ja),p.rangeRound=y(Va),p.unknown=function(e){return arguments.length?(o=e,p):o},function(o){return n=o,e=o(c),t=o(l),r=o(s),a=e===t?0:.5/(t-e),i=t===r?0:.5/(r-t),u=t<e?-1:1,p}}function wb(){var e=vf(kb());return e.copy=function(){return vb(e,wb()).exponent(e.exponent())},Oy.apply(e,arguments)}function Cb(e){for(var t=e.length/6|0,r=new Array(t),a=0;a<t;)r[a]="#"+e.slice(6*a,6*++a);return r}var _b=Cb("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),Sb=Cb("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),Ab=Cb("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),Mb=Cb("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"),Tb=Cb("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),Bb=Cb("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),Lb=Cb("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),Eb=Cb("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),Rb=Cb("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),Hb=Cb("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),Db=Cb("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),Pb=e=>Ha(e[e.length-1]),Nb=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Cb),Gb=Pb(Nb),Ib=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Cb),Wb=Pb(Ib),Fb=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Cb),zb=Pb(Fb),Ob=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Cb),Kb=Pb(Ob),Jb=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Cb),Vb=Pb(Jb),jb=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Cb),Yb=Pb(jb),$b=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Cb),Ub=Pb($b),qb=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Cb),Zb=Pb(qb),Qb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Cb),Xb=Pb(Qb),ev=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Cb),tv=Pb(ev),rv=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Cb),av=Pb(rv),iv=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Cb),nv=Pb(iv),ov=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Cb),cv=Pb(ov),lv=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Cb),sv=Pb(lv),uv=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Cb),hv=Pb(uv),dv=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Cb),pv=Pb(dv),yv=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Cb),fv=Pb(yv),mv=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Cb),gv=Pb(mv),bv=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Cb),vv=Pb(bv),xv=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Cb),kv=Pb(xv),wv=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Cb),Cv=Pb(wv),_v=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Cb),Sv=Pb(_v),Av=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Cb),Mv=Pb(Av),Tv=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Cb),Bv=Pb(Tv),Lv=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Cb),Ev=Pb(Lv),Rv=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Cb),Hv=Pb(Rv),Dv=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Cb),Pv=Pb(Dv);var Nv=si(ka(300,.5,0),ka(-240,.5,1)),Gv=si(ka(-100,.75,.35),ka(80,1.5,.8)),Iv=si(ka(260,.75,.35),ka(80,1.5,.8)),Wv=ka();var Fv=Hr(),zv=Math.PI/3,Ov=2*Math.PI/3;function Kv(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var Jv=Kv(Cb("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),Vv=Kv(Cb("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),jv=Kv(Cb("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),Yv=Kv(Cb("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function $v(e){return function(){return e}}const Uv=Math.abs,qv=Math.atan2,Zv=Math.cos,Qv=Math.max,Xv=Math.min,ex=Math.sin,tx=Math.sqrt,rx=1e-12,ax=Math.PI,ix=ax/2,nx=2*ax;function ox(e){return e>=1?ix:e<=-1?-ix:Math.asin(e)}function cx(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(null==r)t=null;else{const e=Math.floor(r);if(!(e>=0))throw new RangeError(`invalid digits: ${r}`);t=e}return e},()=>new So(t)}function lx(e){return e.innerRadius}function sx(e){return e.outerRadius}function ux(e){return e.startAngle}function hx(e){return e.endAngle}function dx(e){return e&&e.padAngle}function px(e,t,r,a,i,n,o){var c=e-r,l=t-a,s=(o?n:-n)/tx(c*c+l*l),u=s*l,h=-s*c,d=e+u,p=t+h,y=r+u,f=a+h,m=(d+y)/2,g=(p+f)/2,b=y-d,v=f-p,x=b*b+v*v,k=i-n,w=d*f-y*p,C=(v<0?-1:1)*tx(Qv(0,k*k*x-w*w)),_=(w*v-b*C)/x,S=(-w*b-v*C)/x,A=(w*v+b*C)/x,M=(-w*b+v*C)/x,T=_-m,B=S-g,L=A-m,E=M-g;return T*T+B*B>L*L+E*E&&(_=A,S=M),{cx:_,cy:S,x01:-u,y01:-h,x11:_*(i/k-1),y11:S*(i/k-1)}}var yx=Array.prototype.slice;function fx(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function mx(e){this._context=e}function gx(e){return new mx(e)}function bx(e){return e[0]}function vx(e){return e[1]}function xx(e,t){var r=$v(!0),a=null,i=gx,n=null,o=cx(c);function c(c){var l,s,u,h=(c=fx(c)).length,d=!1;for(null==a&&(n=i(u=o())),l=0;l<=h;++l)!(l<h&&r(s=c[l],l,c))===d&&((d=!d)?n.lineStart():n.lineEnd()),d&&n.point(+e(s,l,c),+t(s,l,c));if(u)return n=null,u+""||null}return e="function"==typeof e?e:void 0===e?bx:$v(e),t="function"==typeof t?t:void 0===t?vx:$v(t),c.x=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),c):e},c.y=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),c):t},c.defined=function(e){return arguments.length?(r="function"==typeof e?e:$v(!!e),c):r},c.curve=function(e){return arguments.length?(i=e,null!=a&&(n=i(a)),c):i},c.context=function(e){return arguments.length?(null==e?a=n=null:n=i(a=e),c):a},c}function kx(e,t,r){var a=null,i=$v(!0),n=null,o=gx,c=null,l=cx(s);function s(s){var u,h,d,p,y,f=(s=fx(s)).length,m=!1,g=new Array(f),b=new Array(f);for(null==n&&(c=o(y=l())),u=0;u<=f;++u){if(!(u<f&&i(p=s[u],u,s))===m)if(m=!m)h=u,c.areaStart(),c.lineStart();else{for(c.lineEnd(),c.lineStart(),d=u-1;d>=h;--d)c.point(g[d],b[d]);c.lineEnd(),c.areaEnd()}m&&(g[u]=+e(p,u,s),b[u]=+t(p,u,s),c.point(a?+a(p,u,s):g[u],r?+r(p,u,s):b[u]))}if(y)return c=null,y+""||null}function u(){return xx().defined(i).curve(o).context(n)}return e="function"==typeof e?e:void 0===e?bx:$v(+e),t="function"==typeof t?t:$v(void 0===t?0:+t),r="function"==typeof r?r:void 0===r?vx:$v(+r),s.x=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),a=null,s):e},s.x0=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),s):e},s.x1=function(e){return arguments.length?(a=null==e?null:"function"==typeof e?e:$v(+e),s):a},s.y=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),r=null,s):t},s.y0=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),s):t},s.y1=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:$v(+e),s):r},s.lineX0=s.lineY0=function(){return u().x(e).y(t)},s.lineY1=function(){return u().x(e).y(r)},s.lineX1=function(){return u().x(a).y(t)},s.defined=function(e){return arguments.length?(i="function"==typeof e?e:$v(!!e),s):i},s.curve=function(e){return arguments.length?(o=e,null!=n&&(c=o(n)),s):o},s.context=function(e){return arguments.length?(null==e?n=c=null:c=o(n=e),s):n},s}function wx(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}function Cx(e){return e}mx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};var _x=Ax(gx);function Sx(e){this._curve=e}function Ax(e){function t(t){return new Sx(e(t))}return t._curve=e,t}function Mx(e){var t=e.curve;return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e.curve=function(e){return arguments.length?t(Ax(e)):t()._curve},e}function Tx(){return Mx(xx().curve(_x))}function Bx(){var e=kx().curve(_x),t=e.curve,r=e.lineX0,a=e.lineX1,i=e.lineY0,n=e.lineY1;return e.angle=e.x,delete e.x,e.startAngle=e.x0,delete e.x0,e.endAngle=e.x1,delete e.x1,e.radius=e.y,delete e.y,e.innerRadius=e.y0,delete e.y0,e.outerRadius=e.y1,delete e.y1,e.lineStartAngle=function(){return Mx(r())},delete e.lineX0,e.lineEndAngle=function(){return Mx(a())},delete e.lineX1,e.lineInnerRadius=function(){return Mx(i())},delete e.lineY0,e.lineOuterRadius=function(){return Mx(n())},delete e.lineY1,e.curve=function(e){return arguments.length?t(Ax(e)):t()._curve},e}function Lx(e,t){return[(t=+t)*Math.cos(e-=Math.PI/2),t*Math.sin(e)]}Sx.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(e,t){this._curve.point(t*Math.sin(e),t*-Math.cos(e))}};class Ex{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t)}this._x0=e,this._y0=t}}class Rx{constructor(e){this._context=e}lineStart(){this._point=0}lineEnd(){}point(e,t){if(e=+e,t=+t,0===this._point)this._point=1;else{const r=Lx(this._x0,this._y0),a=Lx(this._x0,this._y0=(this._y0+t)/2),i=Lx(e,this._y0),n=Lx(e,t);this._context.moveTo(...r),this._context.bezierCurveTo(...a,...i,...n)}this._x0=e,this._y0=t}}function Hx(e){return new Ex(e,!0)}function Dx(e){return new Ex(e,!1)}function Px(e){return new Rx(e)}function Nx(e){return e.source}function Gx(e){return e.target}function Ix(e){let t=Nx,r=Gx,a=bx,i=vx,n=null,o=null,c=cx(l);function l(){let l;const s=yx.call(arguments),u=t.apply(this,s),h=r.apply(this,s);if(null==n&&(o=e(l=c())),o.lineStart(),s[0]=u,o.point(+a.apply(this,s),+i.apply(this,s)),s[0]=h,o.point(+a.apply(this,s),+i.apply(this,s)),o.lineEnd(),l)return o=null,l+""||null}return l.source=function(e){return arguments.length?(t=e,l):t},l.target=function(e){return arguments.length?(r=e,l):r},l.x=function(e){return arguments.length?(a="function"==typeof e?e:$v(+e),l):a},l.y=function(e){return arguments.length?(i="function"==typeof e?e:$v(+e),l):i},l.context=function(t){return arguments.length?(null==t?n=o=null:o=e(n=t),l):n},l}function Wx(){const e=Ix(Px);return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e}const Fx=tx(3);var zx={draw(e,t){const r=.59436*tx(t+Xv(t/28,.75)),a=r/2,i=a*Fx;e.moveTo(0,r),e.lineTo(0,-r),e.moveTo(-i,-a),e.lineTo(i,a),e.moveTo(-i,a),e.lineTo(i,-a)}},Ox={draw(e,t){const r=tx(t/ax);e.moveTo(r,0),e.arc(0,0,r,0,nx)}},Kx={draw(e,t){const r=tx(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}};const Jx=tx(1/3),Vx=2*Jx;var jx={draw(e,t){const r=tx(t/Vx),a=r*Jx;e.moveTo(0,-r),e.lineTo(a,0),e.lineTo(0,r),e.lineTo(-a,0),e.closePath()}},Yx={draw(e,t){const r=.62625*tx(t);e.moveTo(0,-r),e.lineTo(r,0),e.lineTo(0,r),e.lineTo(-r,0),e.closePath()}},$x={draw(e,t){const r=.87559*tx(t-Xv(t/7,2));e.moveTo(-r,0),e.lineTo(r,0),e.moveTo(0,r),e.lineTo(0,-r)}},Ux={draw(e,t){const r=tx(t),a=-r/2;e.rect(a,a,r,r)}},qx={draw(e,t){const r=.4431*tx(t);e.moveTo(r,r),e.lineTo(r,-r),e.lineTo(-r,-r),e.lineTo(-r,r),e.closePath()}};const Zx=ex(ax/10)/ex(7*ax/10),Qx=ex(nx/10)*Zx,Xx=-Zv(nx/10)*Zx;var ek={draw(e,t){const r=tx(.8908130915292852*t),a=Qx*r,i=Xx*r;e.moveTo(0,-r),e.lineTo(a,i);for(let t=1;t<5;++t){const n=nx*t/5,o=Zv(n),c=ex(n);e.lineTo(c*r,-o*r),e.lineTo(o*a-c*i,c*a+o*i)}e.closePath()}};const tk=tx(3);var rk={draw(e,t){const r=-tx(t/(3*tk));e.moveTo(0,2*r),e.lineTo(-tk*r,-r),e.lineTo(tk*r,-r),e.closePath()}};const ak=tx(3);var ik={draw(e,t){const r=.6824*tx(t),a=r/2,i=r*ak/2;e.moveTo(0,-r),e.lineTo(i,a),e.lineTo(-i,a),e.closePath()}};const nk=-.5,ok=tx(3)/2,ck=1/tx(12),lk=3*(ck/2+1);var sk={draw(e,t){const r=tx(t/lk),a=r/2,i=r*ck,n=a,o=r*ck+r,c=-n,l=o;e.moveTo(a,i),e.lineTo(n,o),e.lineTo(c,l),e.lineTo(nk*a-ok*i,ok*a+nk*i),e.lineTo(nk*n-ok*o,ok*n+nk*o),e.lineTo(nk*c-ok*l,ok*c+nk*l),e.lineTo(nk*a+ok*i,nk*i-ok*a),e.lineTo(nk*n+ok*o,nk*o-ok*n),e.lineTo(nk*c+ok*l,nk*l-ok*c),e.closePath()}},uk={draw(e,t){const r=.6189*tx(t-Xv(t/6,1.7));e.moveTo(-r,-r),e.lineTo(r,r),e.moveTo(-r,r),e.lineTo(r,-r)}};const hk=[Ox,Kx,jx,Ux,ek,rk,sk],dk=[Ox,$x,uk,ik,zx,qx,Yx];function pk(e,t){let r=null,a=cx(i);function i(){let i;if(r||(r=i=a()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),i)return r=null,i+""||null}return e="function"==typeof e?e:$v(e||Ox),t="function"==typeof t?t:$v(void 0===t?64:+t),i.type=function(t){return arguments.length?(e="function"==typeof t?t:$v(t),i):e},i.size=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),i):t},i.context=function(e){return arguments.length?(r=null==e?null:e,i):r},i}function yk(){}function fk(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function mk(e){this._context=e}function gk(e){this._context=e}function bk(e){return new gk(e)}function vk(e){this._context=e}function xk(e,t){this._basis=new mk(e),this._beta=t}mk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:fk(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:fk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},gk.prototype={areaStart:yk,areaEnd:yk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:fk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},vk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,a=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,a):this._context.moveTo(r,a);break;case 3:this._point=4;default:fk(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},xk.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var a,i=e[0],n=t[0],o=e[r]-i,c=t[r]-n,l=-1;++l<=r;)a=l/r,this._basis.point(this._beta*e[l]+(1-this._beta)*(i+a*o),this._beta*t[l]+(1-this._beta)*(n+a*c));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var kk=function e(t){function r(e){return 1===t?new mk(e):new xk(e,t)}return r.beta=function(t){return e(+t)},r}(.85);function wk(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function Ck(e,t){this._context=e,this._k=(1-t)/6}Ck.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:wk(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:wk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var _k=function e(t){function r(e){return new Ck(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Sk(e,t){this._context=e,this._k=(1-t)/6}Sk.prototype={areaStart:yk,areaEnd:yk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:wk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ak=function e(t){function r(e){return new Sk(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Mk(e,t){this._context=e,this._k=(1-t)/6}Mk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:wk(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Tk=function e(t){function r(e){return new Mk(e,t)}return r.tension=function(t){return e(+t)},r}(0);function Bk(e,t,r){var a=e._x1,i=e._y1,n=e._x2,o=e._y2;if(e._l01_a>rx){var c=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,l=3*e._l01_a*(e._l01_a+e._l12_a);a=(a*c-e._x0*e._l12_2a+e._x2*e._l01_2a)/l,i=(i*c-e._y0*e._l12_2a+e._y2*e._l01_2a)/l}if(e._l23_a>rx){var s=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,u=3*e._l23_a*(e._l23_a+e._l12_a);n=(n*s+e._x1*e._l23_2a-t*e._l12_2a)/u,o=(o*s+e._y1*e._l23_2a-r*e._l12_2a)/u}e._context.bezierCurveTo(a,i,n,o,e._x2,e._y2)}function Lk(e,t){this._context=e,this._alpha=t}Lk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:Bk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ek=function e(t){function r(e){return t?new Lk(e,t):new Ck(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Rk(e,t){this._context=e,this._alpha=t}Rk.prototype={areaStart:yk,areaEnd:yk,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Bk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Hk=function e(t){function r(e){return t?new Rk(e,t):new Sk(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Dk(e,t){this._context=e,this._alpha=t}Dk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,a=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+a*a,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Bk(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Pk=function e(t){function r(e){return t?new Dk(e,t):new Mk(e,0)}return r.alpha=function(t){return e(+t)},r}(.5);function Nk(e){this._context=e}function Gk(e){return e<0?-1:1}function Ik(e,t,r){var a=e._x1-e._x0,i=t-e._x1,n=(e._y1-e._y0)/(a||i<0&&-0),o=(r-e._y1)/(i||a<0&&-0),c=(n*i+o*a)/(a+i);return(Gk(n)+Gk(o))*Math.min(Math.abs(n),Math.abs(o),.5*Math.abs(c))||0}function Wk(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Fk(e,t,r){var a=e._x0,i=e._y0,n=e._x1,o=e._y1,c=(n-a)/3;e._context.bezierCurveTo(a+c,i+c*t,n-c,o-c*r,n,o)}function zk(e){this._context=e}function Ok(e){this._context=new Kk(e)}function Kk(e){this._context=e}function Jk(e){this._context=e}function Vk(e){var t,r,a=e.length-1,i=new Array(a),n=new Array(a),o=new Array(a);for(i[0]=0,n[0]=2,o[0]=e[0]+2*e[1],t=1;t<a-1;++t)i[t]=1,n[t]=4,o[t]=4*e[t]+2*e[t+1];for(i[a-1]=2,n[a-1]=7,o[a-1]=8*e[a-1]+e[a],t=1;t<a;++t)r=i[t]/n[t-1],n[t]-=r,o[t]-=r*o[t-1];for(i[a-1]=o[a-1]/n[a-1],t=a-2;t>=0;--t)i[t]=(o[t]-i[t+1])/n[t];for(n[a-1]=(e[a]+i[a-1])/2,t=0;t<a-1;++t)n[t]=2*e[t+1]-i[t+1];return[i,n]}function jk(e,t){this._context=e,this._t=t}function Yk(e){return new jk(e,.5)}function $k(e){return new jk(e,0)}function Uk(e){return new jk(e,1)}function qk(e,t){if((i=e.length)>1)for(var r,a,i,n=1,o=e[t[0]],c=o.length;n<i;++n)for(a=o,o=e[t[n]],r=0;r<c;++r)o[r][1]+=o[r][0]=isNaN(a[r][1])?a[r][0]:a[r][1]}function Zk(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}function Qk(e,t){return e[t]}function Xk(e){const t=[];return t.key=e,t}function ew(e){var t=e.map(tw);return Zk(e).sort((function(e,r){return t[e]-t[r]}))}function tw(e){for(var t,r=-1,a=0,i=e.length,n=-1/0;++r<i;)(t=+e[r][1])>n&&(n=t,a=r);return a}function rw(e){var t=e.map(aw);return Zk(e).sort((function(e,r){return t[e]-t[r]}))}function aw(e){for(var t,r=0,a=-1,i=e.length;++a<i;)(t=+e[a][1])&&(r+=t);return r}Nk.prototype={areaStart:yk,areaEnd:yk,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}},zk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Fk(this,this._t0,Wk(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(t=+t,(e=+e)!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Fk(this,Wk(this,r=Ik(this,e,t)),r);break;default:Fk(this,this._t0,r=Ik(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}},(Ok.prototype=Object.create(zk.prototype)).point=function(e,t){zk.prototype.point.call(this,t,e)},Kk.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,a,i,n){this._context.bezierCurveTo(t,e,a,r,n,i)}},Jk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),2===r)this._context.lineTo(e[1],t[1]);else for(var a=Vk(e),i=Vk(t),n=0,o=1;o<r;++n,++o)this._context.bezierCurveTo(a[0][n],i[0][n],a[1][n],i[1][n],e[o],t[o]);(this._line||0!==this._line&&1===r)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(e,t){this._x.push(+e),this._y.push(+t)}},jk.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}}this._x=e,this._y=t}};var iw=e=>()=>e;function nw(e,{sourceEvent:t,target:r,transform:a,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:a,enumerable:!0,configurable:!0},_:{value:i}})}function ow(e,t,r){this.k=e,this.x=t,this.y=r}ow.prototype={constructor:ow,scale:function(e){return 1===e?this:new ow(this.k*e,this.x,this.y)},translate:function(e,t){return 0===e&0===t?this:new ow(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var cw=new ow(1,0,0);function lw(e){for(;!e.__zoom;)if(!(e=e.parentNode))return cw;return e.__zoom}function sw(e){e.stopImmediatePropagation()}function uw(e){e.preventDefault(),e.stopImmediatePropagation()}function hw(e){return!(e.ctrlKey&&"wheel"!==e.type||e.button)}function dw(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e).hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]:[[0,0],[e.clientWidth,e.clientHeight]]}function pw(){return this.__zoom||cw}function yw(e){return-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function fw(){return navigator.maxTouchPoints||"ontouchstart"in this}function mw(e,t,r){var a=e.invertX(t[0][0])-r[0][0],i=e.invertX(t[1][0])-r[1][0],n=e.invertY(t[0][1])-r[0][1],o=e.invertY(t[1][1])-r[1][1];return e.translate(i>a?(a+i)/2:Math.min(0,a)||Math.max(0,i),o>n?(n+o)/2:Math.min(0,n)||Math.max(0,o))}function gw(){var e,t,r,a=hw,i=dw,n=mw,o=yw,c=fw,l=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],u=250,h=ei,d=Le("start","zoom","end"),p=0,y=10;function f(e){e.property("__zoom",pw).on("wheel.zoom",w,{passive:!1}).on("mousedown.zoom",C).on("dblclick.zoom",_).filter(c).on("touchstart.zoom",S).on("touchmove.zoom",A).on("touchend.zoom touchcancel.zoom",M).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(e,t){return(t=Math.max(l[0],Math.min(l[1],t)))===e.k?e:new ow(t,e.x,e.y)}function g(e,t,r){var a=t[0]-r[0]*e.k,i=t[1]-r[1]*e.k;return a===e.x&&i===e.y?e:new ow(e.k,a,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function v(e,t,r,a){e.on("start.zoom",(function(){x(this,arguments).event(a).start()})).on("interrupt.zoom end.zoom",(function(){x(this,arguments).event(a).end()})).tween("zoom",(function(){var e=this,n=arguments,o=x(e,n).event(a),c=i.apply(e,n),l=null==r?b(c):"function"==typeof r?r.apply(e,n):r,s=Math.max(c[1][0]-c[0][0],c[1][1]-c[0][1]),u=e.__zoom,d="function"==typeof t?t.apply(e,n):t,p=h(u.invert(l).concat(s/u.k),d.invert(l).concat(s/d.k));return function(e){if(1===e)e=d;else{var t=p(e),r=s/t[2];e=new ow(r,l[0]-t[0]*r,l[1]-t[1]*r)}o.zoom(null,e)}}))}function x(e,t,r){return!r&&e.__zooming||new k(e,t)}function k(e,t){this.that=e,this.args=t,this.active=0,this.sourceEvent=null,this.extent=i.apply(e,t),this.taps=0}function w(e,...t){if(a.apply(this,arguments)){var r=x(this,t).event(e),i=this.__zoom,c=Math.max(l[0],Math.min(l[1],i.k*Math.pow(2,o.apply(this,arguments)))),u=Qt(e);if(r.wheel)r.mouse[0][0]===u[0]&&r.mouse[0][1]===u[1]||(r.mouse[1]=i.invert(r.mouse[0]=u)),clearTimeout(r.wheel);else{if(i.k===c)return;r.mouse=[u,i.invert(u)],Ni(this),r.start()}uw(e),r.wheel=setTimeout((function(){r.wheel=null,r.end()}),150),r.zoom("mouse",n(g(m(i,c),r.mouse[0],r.mouse[1]),r.extent,s))}}function C(e,...t){if(!r&&a.apply(this,arguments)){var i=e.currentTarget,o=x(this,t,!0).event(e),c=jt(e.view).on("mousemove.zoom",(function(e){if(uw(e),!o.moved){var t=e.clientX-u,r=e.clientY-h;o.moved=t*t+r*r>p}o.event(e).zoom("mouse",n(g(o.that.__zoom,o.mouse[0]=Qt(e,i),o.mouse[1]),o.extent,s))}),!0).on("mouseup.zoom",(function(e){c.on("mousemove.zoom mouseup.zoom",null),ir(e.view,o.moved),uw(e),o.event(e).end()}),!0),l=Qt(e,i),u=e.clientX,h=e.clientY;ar(e.view),sw(e),o.mouse=[l,this.__zoom.invert(l)],Ni(this),o.start()}}function _(e,...t){if(a.apply(this,arguments)){var r=this.__zoom,o=Qt(e.changedTouches?e.changedTouches[0]:e,this),c=r.invert(o),l=r.k*(e.shiftKey?.5:2),h=n(g(m(r,l),o,c),i.apply(this,t),s);uw(e),u>0?jt(this).transition().duration(u).call(v,h,o,e):jt(this).call(f.transform,h,o,e)}}function S(r,...i){if(a.apply(this,arguments)){var n,o,c,l,s=r.touches,u=s.length,h=x(this,i,r.changedTouches.length===u).event(r);for(sw(r),o=0;o<u;++o)l=[l=Qt(c=s[o],this),this.__zoom.invert(l),c.identifier],h.touch0?h.touch1||h.touch0[2]===l[2]||(h.touch1=l,h.taps=0):(h.touch0=l,n=!0,h.taps=1+!!e);e&&(e=clearTimeout(e)),n&&(h.taps<2&&(t=l[0],e=setTimeout((function(){e=null}),500)),Ni(this),h.start())}}function A(e,...t){if(this.__zooming){var r,a,i,o,c=x(this,t).event(e),l=e.changedTouches,u=l.length;for(uw(e),r=0;r<u;++r)i=Qt(a=l[r],this),c.touch0&&c.touch0[2]===a.identifier?c.touch0[0]=i:c.touch1&&c.touch1[2]===a.identifier&&(c.touch1[0]=i);if(a=c.that.__zoom,c.touch1){var h=c.touch0[0],d=c.touch0[1],p=c.touch1[0],y=c.touch1[1],f=(f=p[0]-h[0])*f+(f=p[1]-h[1])*f,b=(b=y[0]-d[0])*b+(b=y[1]-d[1])*b;a=m(a,Math.sqrt(f/b)),i=[(h[0]+p[0])/2,(h[1]+p[1])/2],o=[(d[0]+y[0])/2,(d[1]+y[1])/2]}else{if(!c.touch0)return;i=c.touch0[0],o=c.touch0[1]}c.zoom("touch",n(g(a,i,o),c.extent,s))}}function M(e,...a){if(this.__zooming){var i,n,o=x(this,a).event(e),c=e.changedTouches,l=c.length;for(sw(e),r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),i=0;i<l;++i)n=c[i],o.touch0&&o.touch0[2]===n.identifier?delete o.touch0:o.touch1&&o.touch1[2]===n.identifier&&delete o.touch1;if(o.touch1&&!o.touch0&&(o.touch0=o.touch1,delete o.touch1),o.touch0)o.touch0[1]=this.__zoom.invert(o.touch0[0]);else if(o.end(),2===o.taps&&(n=Qt(n,this),Math.hypot(t[0]-n[0],t[1]-n[1])<y)){var s=jt(this).on("dblclick.zoom");s&&s.apply(this,arguments)}}}return f.transform=function(e,t,r,a){var i=e.selection?e.selection():e;i.property("__zoom",pw),e!==i?v(e,t,r,a):i.interrupt().each((function(){x(this,arguments).event(a).start().zoom(null,"function"==typeof t?t.apply(this,arguments):t).end()}))},f.scaleBy=function(e,t,r,a){f.scaleTo(e,(function(){return this.__zoom.k*("function"==typeof t?t.apply(this,arguments):t)}),r,a)},f.scaleTo=function(e,t,r,a){f.transform(e,(function(){var e=i.apply(this,arguments),a=this.__zoom,o=null==r?b(e):"function"==typeof r?r.apply(this,arguments):r,c=a.invert(o),l="function"==typeof t?t.apply(this,arguments):t;return n(g(m(a,l),o,c),e,s)}),r,a)},f.translateBy=function(e,t,r,a){f.transform(e,(function(){return n(this.__zoom.translate("function"==typeof t?t.apply(this,arguments):t,"function"==typeof r?r.apply(this,arguments):r),i.apply(this,arguments),s)}),null,a)},f.translateTo=function(e,t,r,a,o){f.transform(e,(function(){var e=i.apply(this,arguments),o=this.__zoom,c=null==a?b(e):"function"==typeof a?a.apply(this,arguments):a;return n(cw.translate(c[0],c[1]).scale(o.k).translate("function"==typeof t?-t.apply(this,arguments):-t,"function"==typeof r?-r.apply(this,arguments):-r),e,s)}),a,o)},k.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(e,t){return this.mouse&&"mouse"!==e&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&"touch"!==e&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&"touch"!==e&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(e){var t=jt(this.that).datum();d.call(e,this.that,new nw(e,{sourceEvent:this.sourceEvent,target:f,type:e,transform:this.that.__zoom,dispatch:d}),t)}},f.wheelDelta=function(e){return arguments.length?(o="function"==typeof e?e:iw(+e),f):o},f.filter=function(e){return arguments.length?(a="function"==typeof e?e:iw(!!e),f):a},f.touchable=function(e){return arguments.length?(c="function"==typeof e?e:iw(!!e),f):c},f.extent=function(e){return arguments.length?(i="function"==typeof e?e:iw([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),f):i},f.scaleExtent=function(e){return arguments.length?(l[0]=+e[0],l[1]=+e[1],f):[l[0],l[1]]},f.translateExtent=function(e){return arguments.length?(s[0][0]=+e[0][0],s[1][0]=+e[1][0],s[0][1]=+e[0][1],s[1][1]=+e[1][1],f):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},f.constrain=function(e){return arguments.length?(n=e,f):n},f.duration=function(e){return arguments.length?(u=+e,f):u},f.interpolate=function(e){return arguments.length?(h=e,f):h},f.on=function(){var e=d.on.apply(d,arguments);return e===d?f:e},f.clickDistance=function(e){return arguments.length?(p=(e=+e)*e,f):Math.sqrt(p)},f.tapDistance=function(e){return arguments.length?(y=+e,f):y},f}lw.prototype=ow.prototype;var bw=Object.freeze({__proto__:null,Adder:C,Delaunay:Mc,FormatSpecifier:Hl,InternMap:_,InternSet:S,Node:Tp,Path:So,Voronoi:kc,ZoomTransform:ow,active:function(e,t){var r,a,i=e.__transition;if(i)for(a in t=null==t?null:t+"",i)if((r=i[a]).state>1&&r.name===t)return new rn([[e]],Nn,t,+a);return null},arc:function(){var e=lx,t=sx,r=$v(0),a=null,i=ux,n=hx,o=dx,c=null,l=cx(s);function s(){var s,u,h=+e.apply(this,arguments),d=+t.apply(this,arguments),p=i.apply(this,arguments)-ix,y=n.apply(this,arguments)-ix,f=Uv(y-p),m=y>p;if(c||(c=s=l()),d<h&&(u=d,d=h,h=u),d>rx)if(f>nx-rx)c.moveTo(d*Zv(p),d*ex(p)),c.arc(0,0,d,p,y,!m),h>rx&&(c.moveTo(h*Zv(y),h*ex(y)),c.arc(0,0,h,y,p,m));else{var g,b,v=p,x=y,k=p,w=y,C=f,_=f,S=o.apply(this,arguments)/2,A=S>rx&&(a?+a.apply(this,arguments):tx(h*h+d*d)),M=Xv(Uv(d-h)/2,+r.apply(this,arguments)),T=M,B=M;if(A>rx){var L=ox(A/h*ex(S)),E=ox(A/d*ex(S));(C-=2*L)>rx?(k+=L*=m?1:-1,w-=L):(C=0,k=w=(p+y)/2),(_-=2*E)>rx?(v+=E*=m?1:-1,x-=E):(_=0,v=x=(p+y)/2)}var R=d*Zv(v),H=d*ex(v),D=h*Zv(w),P=h*ex(w);if(M>rx){var N,G=d*Zv(x),I=d*ex(x),W=h*Zv(k),F=h*ex(k);if(f<ax)if(N=function(e,t,r,a,i,n,o,c){var l=r-e,s=a-t,u=o-i,h=c-n,d=h*l-u*s;if(!(d*d<rx))return[e+(d=(u*(t-n)-h*(e-i))/d)*l,t+d*s]}(R,H,W,F,G,I,D,P)){var z=R-N[0],O=H-N[1],K=G-N[0],J=I-N[1],V=1/ex(function(e){return e>1?0:e<-1?ax:Math.acos(e)}((z*K+O*J)/(tx(z*z+O*O)*tx(K*K+J*J)))/2),j=tx(N[0]*N[0]+N[1]*N[1]);T=Xv(M,(h-j)/(V-1)),B=Xv(M,(d-j)/(V+1))}else T=B=0}_>rx?B>rx?(g=px(W,F,R,H,d,B,m),b=px(G,I,D,P,d,B,m),c.moveTo(g.cx+g.x01,g.cy+g.y01),B<M?c.arc(g.cx,g.cy,B,qv(g.y01,g.x01),qv(b.y01,b.x01),!m):(c.arc(g.cx,g.cy,B,qv(g.y01,g.x01),qv(g.y11,g.x11),!m),c.arc(0,0,d,qv(g.cy+g.y11,g.cx+g.x11),qv(b.cy+b.y11,b.cx+b.x11),!m),c.arc(b.cx,b.cy,B,qv(b.y11,b.x11),qv(b.y01,b.x01),!m))):(c.moveTo(R,H),c.arc(0,0,d,v,x,!m)):c.moveTo(R,H),h>rx&&C>rx?T>rx?(g=px(D,P,G,I,h,-T,m),b=px(R,H,W,F,h,-T,m),c.lineTo(g.cx+g.x01,g.cy+g.y01),T<M?c.arc(g.cx,g.cy,T,qv(g.y01,g.x01),qv(b.y01,b.x01),!m):(c.arc(g.cx,g.cy,T,qv(g.y01,g.x01),qv(g.y11,g.x11),!m),c.arc(0,0,h,qv(g.cy+g.y11,g.cx+g.x11),qv(b.cy+b.y11,b.cx+b.x11),m),c.arc(b.cx,b.cy,T,qv(b.y11,b.x11),qv(b.y01,b.x01),!m))):c.arc(0,0,h,w,k,m):c.lineTo(D,P)}else c.moveTo(0,0);if(c.closePath(),s)return c=null,s+""||null}return s.centroid=function(){var r=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,a=(+i.apply(this,arguments)+ +n.apply(this,arguments))/2-ax/2;return[Zv(a)*r,ex(a)*r]},s.innerRadius=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),s):e},s.outerRadius=function(e){return arguments.length?(t="function"==typeof e?e:$v(+e),s):t},s.cornerRadius=function(e){return arguments.length?(r="function"==typeof e?e:$v(+e),s):r},s.padRadius=function(e){return arguments.length?(a=null==e?null:"function"==typeof e?e:$v(+e),s):a},s.startAngle=function(e){return arguments.length?(i="function"==typeof e?e:$v(+e),s):i},s.endAngle=function(e){return arguments.length?(n="function"==typeof e?e:$v(+e),s):n},s.padAngle=function(e){return arguments.length?(o="function"==typeof e?e:$v(+e),s):o},s.context=function(e){return arguments.length?(c=null==e?null:e,s):c},s},area:kx,areaRadial:Bx,ascending:t,autoType:function(e){for(var t in e){var r,a,i=e[t].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(r=+i)){if(!(a=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;Zc&&a[4]&&!a[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=r;else i=null;e[t]=i}return e},axisBottom:function(e){return Te(3,e)},axisLeft:function(e){return Te(4,e)},axisRight:function(e){return Te(2,e)},axisTop:function(e){return Te(1,e)},bin:X,bisect:c,bisectCenter:s,bisectLeft:l,bisectRight:c,bisector:a,blob:function(e,t){return fetch(e,t).then(Qc)},blur:function(e,t){if(!((t=+t)>=0))throw new RangeError("invalid r");let r=e.length;if(!((r=Math.floor(r))>=0))throw new RangeError("invalid length");if(!r||!t)return e;const a=f(t),i=e.slice();return a(e,i,0,r,1),a(i,e,0,r,1),a(e,i,0,r,1),e},blur2:u,blurImage:h,brush:function(){return lo(Zn)},brushSelection:function(e){var t=e.__brush;return t?t.dim.output(t.selection):null},brushX:function(){return lo(Un)},brushY:function(){return lo(qn)},buffer:function(e,t){return fetch(e,t).then(Xc)},chord:function(){return vo(!1,!1)},chordDirected:function(){return vo(!0,!1)},chordTranspose:function(){return vo(!1,!0)},cluster:kp,color:Br,contourDensity:function(){var e=qo,t=Zo,r=Qo,a=960,i=500,n=20,o=2,c=3*n,l=a+2*c>>o,s=i+2*c>>o,h=Wo(20);function d(a){var i=new Float32Array(l*s),h=Math.pow(2,-o),d=-1;for(const n of a){var p=(e(n,++d,a)+c)*h,y=(t(n,d,a)+c)*h,f=+r(n,d,a);if(f&&p>=0&&p<l&&y>=0&&y<s){var m=Math.floor(p),g=Math.floor(y),b=p-m-.5,v=y-g-.5;i[m+g*l]+=(1-b)*(1-v)*f,i[m+1+g*l]+=b*(1-v)*f,i[m+1+(g+1)*l]+=b*v*f,i[m+(g+1)*l]+=(1-b)*v*f}}return u({data:i,width:l,height:s},n*h),i}function p(e){var t=d(e),r=h(t),a=Math.pow(2,2*o);return Array.isArray(r)||(r=$(Number.MIN_VALUE,ee(t)/a,r)),Vo().size([l,s]).thresholds(r.map((e=>e*a)))(t).map(((e,t)=>(e.value=+r[t],y(e))))}function y(e){return e.coordinates.forEach(f),e}function f(e){e.forEach(m)}function m(e){e.forEach(g)}function g(e){e[0]=e[0]*Math.pow(2,o)-c,e[1]=e[1]*Math.pow(2,o)-c}function b(){return l=a+2*(c=3*n)>>o,s=i+2*c>>o,p}return p.contours=function(e){var t=d(e),r=Vo().size([l,s]),a=Math.pow(2,2*o),i=e=>{e=+e;var i=y(r.contour(t,e*a));return i.value=e,i};return Object.defineProperty(i,"max",{get:()=>ee(t)/a}),i},p.x=function(t){return arguments.length?(e="function"==typeof t?t:Wo(+t),p):e},p.y=function(e){return arguments.length?(t="function"==typeof e?e:Wo(+e),p):t},p.weight=function(e){return arguments.length?(r="function"==typeof e?e:Wo(+e),p):r},p.size=function(e){if(!arguments.length)return[a,i];var t=+e[0],r=+e[1];if(!(t>=0&&r>=0))throw new Error("invalid size");return a=t,i=r,b()},p.cellSize=function(e){if(!arguments.length)return 1<<o;if(!((e=+e)>=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(e)/Math.LN2),b()},p.thresholds=function(e){return arguments.length?(h="function"==typeof e?e:Array.isArray(e)?Wo(Go.call(e)):Wo(e),p):h},p.bandwidth=function(e){if(!arguments.length)return Math.sqrt(n*(n+1));if(!((e=+e)>=0))throw new Error("invalid bandwidth");return n=(Math.sqrt(4*e*e+1)-1)/2,b()},p},contours:Vo,count:m,create:Yt,creator:We,cross:function(...e){const t="function"==typeof e[e.length-1]&&function(e){return t=>e(...t)}(e.pop()),r=(e=e.map(v)).map(g),a=e.length-1,i=new Array(a+1).fill(0),n=[];if(a<0||r.some(b))return n;for(;;){n.push(i.map(((t,r)=>e[r][t])));let o=a;for(;++i[o]===r[o];){if(0===o)return t?n.map(t):n;i[o--]=0}}},csv:al,csvFormat:Ic,csvFormatBody:Wc,csvFormatRow:zc,csvFormatRows:Fc,csvFormatValue:Oc,csvParse:Nc,csvParseRows:Gc,cubehelix:ka,cumsum:function(e,t){var r=0,a=0;return Float64Array.from(e,void 0===t?e=>r+=+e||0:i=>r+=+t(i,a++,e)||0)},curveBasis:function(e){return new mk(e)},curveBasisClosed:bk,curveBasisOpen:function(e){return new vk(e)},curveBumpX:Hx,curveBumpY:Dx,curveBundle:kk,curveCardinal:_k,curveCardinalClosed:Ak,curveCardinalOpen:Tk,curveCatmullRom:Ek,curveCatmullRomClosed:Hk,curveCatmullRomOpen:Pk,curveLinear:gx,curveLinearClosed:function(e){return new Nk(e)},curveMonotoneX:function(e){return new zk(e)},curveMonotoneY:function(e){return new Ok(e)},curveNatural:function(e){return new Jk(e)},curveStep:Yk,curveStepAfter:Uk,curveStepBefore:$k,descending:r,deviation:k,difference:function(e,...t){e=new S(e);for(const r of t)for(const t of r)e.delete(t);return e},disjoint:function(e,t){const r=t[Symbol.iterator](),a=new S;for(const t of e){if(a.has(t))return!1;let e,i;for(;({value:e,done:i}=r.next())&&!i;){if(Object.is(t,e))return!1;a.add(e)}}return!0},dispatch:Le,drag:function(){var e,t,r,a,i=cr,n=lr,o=sr,c=ur,l={},s=Le("start","drag","end"),u=0,h=0;function d(e){e.on("mousedown.drag",p).filter(c).on("touchstart.drag",m).on("touchmove.drag",g,Xt).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(o,c){if(!a&&i.call(this,o,c)){var l=v(this,n.call(this,o,c),o,c,"mouse");l&&(jt(o.view).on("mousemove.drag",y,er).on("mouseup.drag",f,er),ar(o.view),tr(o),r=!1,e=o.clientX,t=o.clientY,l("start",o))}}function y(a){if(rr(a),!r){var i=a.clientX-e,n=a.clientY-t;r=i*i+n*n>h}l.mouse("drag",a)}function f(e){jt(e.view).on("mousemove.drag mouseup.drag",null),ir(e.view,r),rr(e),l.mouse("end",e)}function m(e,t){if(i.call(this,e,t)){var r,a,o=e.changedTouches,c=n.call(this,e,t),l=o.length;for(r=0;r<l;++r)(a=v(this,c,e,t,o[r].identifier,o[r]))&&(tr(e),a("start",e,o[r]))}}function g(e){var t,r,a=e.changedTouches,i=a.length;for(t=0;t<i;++t)(r=l[a[t].identifier])&&(rr(e),r("drag",e,a[t]))}function b(e){var t,r,i=e.changedTouches,n=i.length;for(a&&clearTimeout(a),a=setTimeout((function(){a=null}),500),t=0;t<n;++t)(r=l[i[t].identifier])&&(tr(e),r("end",e,i[t]))}function v(e,t,r,a,i,n){var c,h,p,y=s.copy(),f=Qt(n||r,t);if(null!=(p=o.call(e,new or("beforestart",{sourceEvent:r,target:d,identifier:i,active:u,x:f[0],y:f[1],dx:0,dy:0,dispatch:y}),a)))return c=p.x-f[0]||0,h=p.y-f[1]||0,function r(n,o,s){var m,g=f;switch(n){case"start":l[i]=r,m=u++;break;case"end":delete l[i],--u;case"drag":f=Qt(s||o,t),m=u}y.call(n,e,new or(n,{sourceEvent:o,subject:p,target:d,identifier:i,active:m,x:f[0]+c,y:f[1]+h,dx:f[0]-g[0],dy:f[1]-g[1],dispatch:y}),a)}}return d.filter=function(e){return arguments.length?(i="function"==typeof e?e:nr(!!e),d):i},d.container=function(e){return arguments.length?(n="function"==typeof e?e:nr(e),d):n},d.subject=function(e){return arguments.length?(o="function"==typeof e?e:nr(e),d):o},d.touchable=function(e){return arguments.length?(c="function"==typeof e?e:nr(!!e),d):c},d.on=function(){var e=s.on.apply(s,arguments);return e===s?d:e},d.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,d):Math.sqrt(h)},d},dragDisable:ar,dragEnable:ir,dsv:function(e,t,r,a){3===arguments.length&&"function"==typeof r&&(a=r,r=void 0);var i=Dc(e);return tl(t,r).then((function(e){return i.parse(e,a)}))},dsvFormat:Dc,easeBack:Bn,easeBackIn:Mn,easeBackInOut:Bn,easeBackOut:Tn,easeBounce:Sn,easeBounceIn:function(e){return 1-Sn(1-e)},easeBounceInOut:function(e){return((e*=2)<=1?1-Sn(1-e):Sn(e-1)+1)/2},easeBounceOut:Sn,easeCircle:gn,easeCircleIn:function(e){return 1-Math.sqrt(1-e*e)},easeCircleInOut:gn,easeCircleOut:function(e){return Math.sqrt(1- --e*e)},easeCubic:ln,easeCubicIn:function(e){return e*e*e},easeCubicInOut:ln,easeCubicOut:function(e){return--e*e*e+1},easeElastic:Rn,easeElasticIn:En,easeElasticInOut:Hn,easeElasticOut:Rn,easeExp:mn,easeExpIn:function(e){return fn(1-+e)},easeExpInOut:mn,easeExpOut:function(e){return 1-fn(e)},easeLinear:e=>+e,easePoly:hn,easePolyIn:sn,easePolyInOut:hn,easePolyOut:un,easeQuad:cn,easeQuadIn:function(e){return e*e},easeQuadInOut:cn,easeQuadOut:function(e){return e*(2-e)},easeSin:yn,easeSinIn:function(e){return 1==+e?1:1-Math.cos(e*pn)},easeSinInOut:yn,easeSinOut:function(e){return Math.sin(e*pn)},every:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");let r=-1;for(const a of e)if(!t(a,++r,e))return!1;return!0},extent:w,fcumsum:function(e,t){const r=new C;let a=-1;return Float64Array.from(e,void 0===t?e=>r.add(+e||0):i=>r.add(+t(i,++a,e)||0))},filter:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");const r=[];let a=-1;for(const i of e)t(i,++a,e)&&r.push(i);return r},flatGroup:function(e,...t){return H(R(e,...t),t)},flatRollup:function(e,t,...r){return H(P(e,t,...r),r)},forceCenter:function(e,t){var r,a=1;function i(){var i,n,o=r.length,c=0,l=0;for(i=0;i<o;++i)c+=(n=r[i]).x,l+=n.y;for(c=(c/o-e)*a,l=(l/o-t)*a,i=0;i<o;++i)(n=r[i]).x-=c,n.y-=l}return null==e&&(e=0),null==t&&(t=0),i.initialize=function(e){r=e},i.x=function(t){return arguments.length?(e=+t,i):e},i.y=function(e){return arguments.length?(t=+e,i):t},i.strength=function(e){return arguments.length?(a=+e,i):a},i},forceCollide:function(e){var t,r,a,i=1,n=1;function o(){for(var e,o,l,s,u,h,d,p=t.length,y=0;y<n;++y)for(o=yl(t,xl,kl).visitAfter(c),e=0;e<p;++e)l=t[e],h=r[l.index],d=h*h,s=l.x+l.vx,u=l.y+l.vy,o.visit(f);function f(e,t,r,n,o){var c=e.data,p=e.r,y=h+p;if(!c)return t>s+y||n<s-y||r>u+y||o<u-y;if(c.index>l.index){var f=s-c.x-c.vx,m=u-c.y-c.vy,g=f*f+m*m;g<y*y&&(0===f&&(g+=(f=vl(a))*f),0===m&&(g+=(m=vl(a))*m),g=(y-(g=Math.sqrt(g)))/g*i,l.vx+=(f*=g)*(y=(p*=p)/(d+p)),l.vy+=(m*=g)*y,c.vx-=f*(y=1-y),c.vy-=m*y)}}}function c(e){if(e.data)return e.r=r[e.data.index];for(var t=e.r=0;t<4;++t)e[t]&&e[t].r>e.r&&(e.r=e[t].r)}function l(){if(t){var a,i,n=t.length;for(r=new Array(n),a=0;a<n;++a)i=t[a],r[i.index]=+e(i,a,t)}}return"function"!=typeof e&&(e=bl(null==e?1:+e)),o.initialize=function(e,r){t=e,a=r,l()},o.iterations=function(e){return arguments.length?(n=+e,o):n},o.strength=function(e){return arguments.length?(i=+e,o):i},o.radius=function(t){return arguments.length?(e="function"==typeof t?t:bl(+t),l(),o):e},o},forceLink:function(e){var t,r,a,i,n,o,c=wl,l=function(e){return 1/Math.min(i[e.source.index],i[e.target.index])},s=bl(30),u=1;function h(a){for(var i=0,c=e.length;i<u;++i)for(var l,s,h,d,p,y,f,m=0;m<c;++m)s=(l=e[m]).source,d=(h=l.target).x+h.vx-s.x-s.vx||vl(o),p=h.y+h.vy-s.y-s.vy||vl(o),d*=y=((y=Math.sqrt(d*d+p*p))-r[m])/y*a*t[m],p*=y,h.vx-=d*(f=n[m]),h.vy-=p*f,s.vx+=d*(f=1-f),s.vy+=p*f}function d(){if(a){var o,l,s=a.length,u=e.length,h=new Map(a.map(((e,t)=>[c(e,t,a),e])));for(o=0,i=new Array(s);o<u;++o)(l=e[o]).index=o,"object"!=typeof l.source&&(l.source=Cl(h,l.source)),"object"!=typeof l.target&&(l.target=Cl(h,l.target)),i[l.source.index]=(i[l.source.index]||0)+1,i[l.target.index]=(i[l.target.index]||0)+1;for(o=0,n=new Array(u);o<u;++o)l=e[o],n[o]=i[l.source.index]/(i[l.source.index]+i[l.target.index]);t=new Array(u),p(),r=new Array(u),y()}}function p(){if(a)for(var r=0,i=e.length;r<i;++r)t[r]=+l(e[r],r,e)}function y(){if(a)for(var t=0,i=e.length;t<i;++t)r[t]=+s(e[t],t,e)}return null==e&&(e=[]),h.initialize=function(e,t){a=e,o=t,d()},h.links=function(t){return arguments.length?(e=t,d(),h):e},h.id=function(e){return arguments.length?(c=e,h):c},h.iterations=function(e){return arguments.length?(u=+e,h):u},h.strength=function(e){return arguments.length?(l="function"==typeof e?e:bl(+e),p(),h):l},h.distance=function(e){return arguments.length?(s="function"==typeof e?e:bl(+e),y(),h):s},h},forceManyBody:function(){var e,t,r,a,i,n=bl(-30),o=1,c=1/0,l=.81;function s(r){var i,n=e.length,o=yl(e,Sl,Al).visitAfter(h);for(a=r,i=0;i<n;++i)t=e[i],o.visit(d)}function u(){if(e){var t,r,a=e.length;for(i=new Array(a),t=0;t<a;++t)r=e[t],i[r.index]=+n(r,t,e)}}function h(e){var t,r,a,n,o,c=0,l=0;if(e.length){for(a=n=o=0;o<4;++o)(t=e[o])&&(r=Math.abs(t.value))&&(c+=t.value,l+=r,a+=r*t.x,n+=r*t.y);e.x=a/l,e.y=n/l}else{(t=e).x=t.data.x,t.y=t.data.y;do{c+=i[t.data.index]}while(t=t.next)}e.value=c}function d(e,n,s,u){if(!e.value)return!0;var h=e.x-t.x,d=e.y-t.y,p=u-n,y=h*h+d*d;if(p*p/l<y)return y<c&&(0===h&&(y+=(h=vl(r))*h),0===d&&(y+=(d=vl(r))*d),y<o&&(y=Math.sqrt(o*y)),t.vx+=h*e.value*a/y,t.vy+=d*e.value*a/y),!0;if(!(e.length||y>=c)){(e.data!==t||e.next)&&(0===h&&(y+=(h=vl(r))*h),0===d&&(y+=(d=vl(r))*d),y<o&&(y=Math.sqrt(o*y)));do{e.data!==t&&(p=i[e.data.index]*a/y,t.vx+=h*p,t.vy+=d*p)}while(e=e.next)}}return s.initialize=function(t,a){e=t,r=a,u()},s.strength=function(e){return arguments.length?(n="function"==typeof e?e:bl(+e),u(),s):n},s.distanceMin=function(e){return arguments.length?(o=e*e,s):Math.sqrt(o)},s.distanceMax=function(e){return arguments.length?(c=e*e,s):Math.sqrt(c)},s.theta=function(e){return arguments.length?(l=e*e,s):Math.sqrt(l)},s},forceRadial:function(e,t,r){var a,i,n,o=bl(.1);function c(e){for(var o=0,c=a.length;o<c;++o){var l=a[o],s=l.x-t||1e-6,u=l.y-r||1e-6,h=Math.sqrt(s*s+u*u),d=(n[o]-h)*i[o]*e/h;l.vx+=s*d,l.vy+=u*d}}function l(){if(a){var t,r=a.length;for(i=new Array(r),n=new Array(r),t=0;t<r;++t)n[t]=+e(a[t],t,a),i[t]=isNaN(n[t])?0:+o(a[t],t,a)}}return"function"!=typeof e&&(e=bl(+e)),null==t&&(t=0),null==r&&(r=0),c.initialize=function(e){a=e,l()},c.strength=function(e){return arguments.length?(o="function"==typeof e?e:bl(+e),l(),c):o},c.radius=function(t){return arguments.length?(e="function"==typeof t?t:bl(+t),l(),c):e},c.x=function(e){return arguments.length?(t=+e,c):t},c.y=function(e){return arguments.length?(r=+e,c):r},c},forceSimulation:function(e){var t,r=1,a=.001,i=1-Math.pow(a,1/300),n=0,o=.6,c=new Map,l=_i(h),s=Le("tick","end"),u=function(){let e=1;return()=>(e=(1664525*e+1013904223)%_l)/_l}();function h(){d(),s.call("tick",t),r<a&&(l.stop(),s.call("end",t))}function d(a){var l,s,u=e.length;void 0===a&&(a=1);for(var h=0;h<a;++h)for(r+=(n-r)*i,c.forEach((function(e){e(r)})),l=0;l<u;++l)null==(s=e[l]).fx?s.x+=s.vx*=o:(s.x=s.fx,s.vx=0),null==s.fy?s.y+=s.vy*=o:(s.y=s.fy,s.vy=0);return t}function p(){for(var t,r=0,a=e.length;r<a;++r){if((t=e[r]).index=r,null!=t.fx&&(t.x=t.fx),null!=t.fy&&(t.y=t.fy),isNaN(t.x)||isNaN(t.y)){var i=10*Math.sqrt(.5+r),n=r*Ml;t.x=i*Math.cos(n),t.y=i*Math.sin(n)}(isNaN(t.vx)||isNaN(t.vy))&&(t.vx=t.vy=0)}}function y(t){return t.initialize&&t.initialize(e,u),t}return null==e&&(e=[]),p(),t={tick:d,restart:function(){return l.restart(h),t},stop:function(){return l.stop(),t},nodes:function(r){return arguments.length?(e=r,p(),c.forEach(y),t):e},alpha:function(e){return arguments.length?(r=+e,t):r},alphaMin:function(e){return arguments.length?(a=+e,t):a},alphaDecay:function(e){return arguments.length?(i=+e,t):+i},alphaTarget:function(e){return arguments.length?(n=+e,t):n},velocityDecay:function(e){return arguments.length?(o=1-e,t):1-o},randomSource:function(e){return arguments.length?(u=e,c.forEach(y),t):u},force:function(e,r){return arguments.length>1?(null==r?c.delete(e):c.set(e,y(r)),t):c.get(e)},find:function(t,r,a){var i,n,o,c,l,s=0,u=e.length;for(null==a?a=1/0:a*=a,s=0;s<u;++s)(o=(i=t-(c=e[s]).x)*i+(n=r-c.y)*n)<a&&(l=c,a=o);return l},on:function(e,r){return arguments.length>1?(s.on(e,r),t):s.on(e)}}},forceX:function(e){var t,r,a,i=bl(.1);function n(e){for(var i,n=0,o=t.length;n<o;++n)(i=t[n]).vx+=(a[n]-i.x)*r[n]*e}function o(){if(t){var n,o=t.length;for(r=new Array(o),a=new Array(o),n=0;n<o;++n)r[n]=isNaN(a[n]=+e(t[n],n,t))?0:+i(t[n],n,t)}}return"function"!=typeof e&&(e=bl(null==e?0:+e)),n.initialize=function(e){t=e,o()},n.strength=function(e){return arguments.length?(i="function"==typeof e?e:bl(+e),o(),n):i},n.x=function(t){return arguments.length?(e="function"==typeof t?t:bl(+t),o(),n):e},n},forceY:function(e){var t,r,a,i=bl(.1);function n(e){for(var i,n=0,o=t.length;n<o;++n)(i=t[n]).vy+=(a[n]-i.y)*r[n]*e}function o(){if(t){var n,o=t.length;for(r=new Array(o),a=new Array(o),n=0;n<o;++n)r[n]=isNaN(a[n]=+e(t[n],n,t))?0:+i(t[n],n,t)}}return"function"!=typeof e&&(e=bl(null==e?0:+e)),n.initialize=function(e){t=e,o()},n.strength=function(e){return arguments.length?(i="function"==typeof e?e:bl(+e),o(),n):i},n.y=function(t){return arguments.length?(e="function"==typeof t?t:bl(+t),o(),n):e},n},get format(){return Il},formatDefaultLocale:Kl,formatLocale:Ol,get formatPrefix(){return Wl},formatSpecifier:Rl,fsum:function(e,t){const r=new C;if(void 0===t)for(let t of e)(t=+t)&&r.add(t);else{let a=-1;for(let i of e)(i=+t(i,++a,e))&&r.add(i)}return+r},geoAlbers:qd,geoAlbersUsa:function(){var e,t,r,a,i,n,o=qd(),c=Ud().rotate([154,0]).center([-2,58.5]).parallels([55,65]),l=Ud().rotate([157,0]).center([-3,19.9]).parallels([8,18]),s={point:function(e,t){n=[e,t]}};function u(e){var t=e[0],o=e[1];return n=null,r.point(t,o),n||(a.point(t,o),n)||(i.point(t,o),n)}function h(){return e=t=null,u}return u.invert=function(e){var t=o.scale(),r=o.translate(),a=(e[0]-r[0])/t,i=(e[1]-r[1])/t;return(i>=.12&&i<.234&&a>=-.425&&a<-.214?c:i>=.166&&i<.234&&a>=-.214&&a<-.115?l:o).invert(e)},u.stream=function(r){return e&&t===r?e:e=function(e){var t=e.length;return{point:function(r,a){for(var i=-1;++i<t;)e[i].point(r,a)},sphere:function(){for(var r=-1;++r<t;)e[r].sphere()},lineStart:function(){for(var r=-1;++r<t;)e[r].lineStart()},lineEnd:function(){for(var r=-1;++r<t;)e[r].lineEnd()},polygonStart:function(){for(var r=-1;++r<t;)e[r].polygonStart()},polygonEnd:function(){for(var r=-1;++r<t;)e[r].polygonEnd()}}}([o.stream(t=r),c.stream(r),l.stream(r)])},u.precision=function(e){return arguments.length?(o.precision(e),c.precision(e),l.precision(e),h()):o.precision()},u.scale=function(e){return arguments.length?(o.scale(e),c.scale(.35*e),l.scale(e),u.translate(o.translate())):o.scale()},u.translate=function(e){if(!arguments.length)return o.translate();var t=o.scale(),n=+e[0],u=+e[1];return r=o.translate(e).clipExtent([[n-.455*t,u-.238*t],[n+.455*t,u+.238*t]]).stream(s),a=c.translate([n-.307*t,u+.201*t]).clipExtent([[n-.425*t+Yl,u+.12*t+Yl],[n-.214*t-Yl,u+.234*t-Yl]]).stream(s),i=l.translate([n-.205*t,u+.212*t]).clipExtent([[n-.214*t+Yl,u+.166*t+Yl],[n-.115*t-Yl,u+.234*t-Yl]]).stream(s),h()},u.fitExtent=function(e,t){return Gd(u,e,t)},u.fitSize=function(e,t){return Id(u,e,t)},u.fitWidth=function(e,t){return Wd(u,e,t)},u.fitHeight=function(e,t){return Fd(u,e,t)},u.scale(1070)},geoArea:function(e){return zs=new C,Cs(e,Os),2*zs},geoAzimuthalEqualArea:function(){return Vd(Xd).scale(124.75).clipAngle(179.999)},geoAzimuthalEqualAreaRaw:Xd,geoAzimuthalEquidistant:function(){return Vd(ep).scale(79.4188).clipAngle(179.999)},geoAzimuthalEquidistantRaw:ep,geoBounds:function(e){var t,r,a,i,n,o,c;if(Rs=Es=-(Bs=Ls=1/0),Is=[],Cs(e,mu),r=Is.length){for(Is.sort(Su),t=1,n=[a=Is[0]];t<r;++t)Au(a,(i=Is[t])[0])||Au(a,i[1])?(_u(a[0],i[1])>_u(a[0],a[1])&&(a[1]=i[1]),_u(i[0],a[1])>_u(a[0],a[1])&&(a[0]=i[0])):n.push(a=i);for(o=-1/0,t=0,a=n[r=n.length-1];t<=r;a=i,++t)i=n[t],(c=_u(a[1],i[0]))>o&&(o=c,Bs=i[0],Es=a[1])}return Is=Ws=null,Bs===1/0||Ls===1/0?[[NaN,NaN],[NaN,NaN]]:[[Bs,Ls],[Es,Rs]]},geoCentroid:function(e){eu=tu=ru=au=iu=nu=ou=cu=0,lu=new C,su=new C,uu=new C,Cs(e,Mu);var t=+lu,r=+su,a=+uu,i=cs(t,r,a);return i<$l&&(t=nu,r=ou,a=cu,tu<Yl&&(t=ru,r=au,a=iu),(i=cs(t,r,a))<$l)?[NaN,NaN]:[as(r,t)*Xl,fs(a/i)*Xl]},geoCircle:function(){var e,t,r=Iu([0,0]),a=Iu(90),i=Iu(2),n={point:function(r,a){e.push(r=t(r,a)),r[0]*=Xl,r[1]*=Xl}};function o(){var o=r.apply(this,arguments),c=a.apply(this,arguments)*es,l=i.apply(this,arguments)*es;return e=[],t=zu(-o[0]*es,-o[1]*es,0).invert,ju(n,c,l,1),o={type:"Polygon",coordinates:[e]},e=t=null,o}return o.center=function(e){return arguments.length?(r="function"==typeof e?e:Iu([+e[0],+e[1]]),o):r},o.radius=function(e){return arguments.length?(a="function"==typeof e?e:Iu(+e),o):a},o.precision=function(e){return arguments.length?(i="function"==typeof e?e:Iu(+e),o):i},o},geoClipAntimeridian:ih,geoClipCircle:nh,geoClipExtent:function(){var e,t,r,a=0,i=0,n=960,o=500;return r={stream:function(r){return e&&t===r?e:e=dh(a,i,n,o)(t=r)},extent:function(c){return arguments.length?(a=+c[0][0],i=+c[0][1],n=+c[1][0],o=+c[1][1],e=t=null,r):[[a,i],[n,o]]}}},geoClipRectangle:dh,geoConicConformal:function(){return Yd(ip).scale(109.5).parallels([30,30])},geoConicConformalRaw:ip,geoConicEqualArea:Ud,geoConicEqualAreaRaw:$d,geoConicEquidistant:function(){return Yd(op).scale(131.154).center([0,13.9389])},geoConicEquidistantRaw:op,geoContains:function(e,t){return(e&&kh.hasOwnProperty(e.type)?kh[e.type]:Ch)(e,t)},geoDistance:xh,geoEqualEarth:function(){return Vd(dp).scale(177.158)},geoEqualEarthRaw:dp,geoEquirectangular:function(){return Vd(np).scale(152.63)},geoEquirectangularRaw:np,geoGnomonic:function(){return Vd(pp).scale(144.049).clipAngle(60)},geoGnomonicRaw:pp,geoGraticule:Eh,geoGraticule10:function(){return Eh()()},geoIdentity:function(){var e,t,r,a,i,n,o,c=1,l=0,s=0,u=1,h=1,d=0,p=null,y=1,f=1,m=Dd({point:function(e,t){var r=v([e,t]);this.stream.point(r[0],r[1])}}),g=Nh;function b(){return y=c*u,f=c*h,n=o=null,v}function v(r){var a=r[0]*y,i=r[1]*f;if(d){var n=i*e-a*t;a=a*e+i*t,i=n}return[a+l,i+s]}return v.invert=function(r){var a=r[0]-l,i=r[1]-s;if(d){var n=i*e+a*t;a=a*e-i*t,i=n}return[a/y,i/f]},v.stream=function(e){return n&&o===e?n:n=m(g(o=e))},v.postclip=function(e){return arguments.length?(g=e,p=r=a=i=null,b()):g},v.clipExtent=function(e){return arguments.length?(g=null==e?(p=r=a=i=null,Nh):dh(p=+e[0][0],r=+e[0][1],a=+e[1][0],i=+e[1][1]),b()):null==p?null:[[p,r],[a,i]]},v.scale=function(e){return arguments.length?(c=+e,b()):c},v.translate=function(e){return arguments.length?(l=+e[0],s=+e[1],b()):[l,s]},v.angle=function(r){return arguments.length?(t=us(d=r%360*es),e=is(d),b()):d*Xl},v.reflectX=function(e){return arguments.length?(u=e?-1:1,b()):u<0},v.reflectY=function(e){return arguments.length?(h=e?-1:1,b()):h<0},v.fitExtent=function(e,t){return Gd(v,e,t)},v.fitSize=function(e,t){return Id(v,e,t)},v.fitWidth=function(e,t){return Wd(v,e,t)},v.fitHeight=function(e,t){return Fd(v,e,t)},v},geoInterpolate:function(e,t){var r=e[0]*es,a=e[1]*es,i=t[0]*es,n=t[1]*es,o=is(a),c=us(a),l=is(n),s=us(n),u=o*is(r),h=o*us(r),d=l*is(i),p=l*us(i),y=2*fs(ds(ms(n-a)+o*l*ms(i-r))),f=us(y),m=y?function(e){var t=us(e*=y)/f,r=us(y-e)/f,a=r*u+t*d,i=r*h+t*p,n=r*c+t*s;return[as(i,a)*Xl,as(n,ds(a*a+i*i))*Xl]}:function(){return[r*Xl,a*Xl]};return m.distance=y,m},geoLength:gh,geoMercator:function(){return rp(tp).scale(961/Ql)},geoMercatorRaw:tp,geoNaturalEarth1:function(){return Vd(yp).scale(175.295)},geoNaturalEarth1Raw:yp,geoOrthographic:function(){return Vd(fp).scale(249.5).clipAngle(90.000001)},geoOrthographicRaw:fp,geoPath:function(e,t){let r,a,i=3,n=4.5;function o(e){return e&&("function"==typeof n&&a.pointRadius(+n.apply(this,arguments)),Cs(e,r(a))),a.result()}return o.area=function(e){return Cs(e,r(Wh)),Wh.result()},o.measure=function(e){return Cs(e,r(Sd)),Sd.result()},o.bounds=function(e){return Cs(e,r($h)),$h.result()},o.centroid=function(e){return Cs(e,r(ld)),ld.result()},o.projection=function(t){return arguments.length?(r=null==t?(e=null,Nh):(e=t).stream,o):e},o.context=function(e){return arguments.length?(a=null==e?(t=null,new Rd(i)):new bd(t=e),"function"!=typeof n&&a.pointRadius(n),o):t},o.pointRadius=function(e){return arguments.length?(n="function"==typeof e?e:(a.pointRadius(+e),+e),o):n},o.digits=function(e){if(!arguments.length)return i;if(null==e)i=null;else{const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);i=t}return null===t&&(a=new Rd(i)),o},o.projection(e).digits(i).context(t)},geoProjection:Vd,geoProjectionMutator:jd,geoRotation:Vu,geoStereographic:function(){return Vd(mp).scale(250).clipAngle(142)},geoStereographicRaw:mp,geoStream:Cs,geoTransform:function(e){return{stream:Dd(e)}},geoTransverseMercator:function(){var e=rp(gp),t=e.center,r=e.rotate;return e.center=function(e){return arguments.length?t([-e[1],e[0]]):[(e=t())[1],-e[0]]},e.rotate=function(e){return arguments.length?r([e[0],e[1],e.length>2?e[2]+90:90]):[(e=r())[0],e[1],e[2]-90]},r([0,0,90]).scale(159.155)},geoTransverseMercatorRaw:gp,gray:ra,greatest:oe,greatestIndex:function(e,r=t){if(1===r.length)return te(e,r);let a,i=-1,n=-1;for(const t of e)++n,(i<0?0===r(t,t):r(t,a)>0)&&(a=t,i=n);return i},group:E,groupSort:function(e,r,a){return(2!==r.length?W(D(e,r,a),(([e,r],[a,i])=>t(r,i)||t(e,a))):W(E(e,a),(([e,a],[i,n])=>r(a,n)||t(e,i)))).map((([e])=>e))},groups:R,hcl:ua,hierarchy:Cp,histogram:X,hsl:Or,html:ll,image:function(e,t){return new Promise((function(r,a){var i=new Image;for(var n in t)i[n]=t[n];i.onerror=a,i.onload=function(){r(i)},i.src=e}))},index:function(e,...t){return G(e,L,N,t)},indexes:function(e,...t){return G(e,Array.from,N,t)},interpolate:Ja,interpolateArray:function(e,t){return(Na(t)?Pa:Ga)(e,t)},interpolateBasis:_a,interpolateBasisClosed:Sa,interpolateBlues:Sv,interpolateBrBG:Gb,interpolateBuGn:tv,interpolateBuPu:av,interpolateCividis:function(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-2710.57*e)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-67.37*e)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-2475.67*e)))))))+")"},interpolateCool:Iv,interpolateCubehelix:li,interpolateCubehelixDefault:Nv,interpolateCubehelixLong:si,interpolateDate:Ia,interpolateDiscrete:function(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}},interpolateGnBu:nv,interpolateGreens:Mv,interpolateGreys:Bv,interpolateHcl:ni,interpolateHclLong:oi,interpolateHsl:ri,interpolateHslLong:ai,interpolateHue:function(e,t){var r=Ta(+e,+t);return function(e){var t=r(e);return t-360*Math.floor(t/360)}},interpolateInferno:jv,interpolateLab:function(e,t){var r=La((e=aa(e)).l,(t=aa(t)).l),a=La(e.a,t.a),i=La(e.b,t.b),n=La(e.opacity,t.opacity);return function(t){return e.l=r(t),e.a=a(t),e.b=i(t),e.opacity=n(t),e+""}},interpolateMagma:Vv,interpolateNumber:Wa,interpolateNumberArray:Pa,interpolateObject:Fa,interpolateOrRd:cv,interpolateOranges:Pv,interpolatePRGn:Wb,interpolatePiYG:zb,interpolatePlasma:Yv,interpolatePuBu:hv,interpolatePuBuGn:sv,interpolatePuOr:Kb,interpolatePuRd:pv,interpolatePurples:Ev,interpolateRainbow:function(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return Wv.h=360*e-100,Wv.s=1.5-1.5*t,Wv.l=.8-.9*t,Wv+""},interpolateRdBu:Vb,interpolateRdGy:Yb,interpolateRdPu:fv,interpolateRdYlBu:Ub,interpolateRdYlGn:Zb,interpolateReds:Hv,interpolateRgb:Ea,interpolateRgbBasis:Ha,interpolateRgbBasisClosed:Da,interpolateRound:Va,interpolateSinebow:function(e){var t;return e=(.5-e)*Math.PI,Fv.r=255*(t=Math.sin(e))*t,Fv.g=255*(t=Math.sin(e+zv))*t,Fv.b=255*(t=Math.sin(e+Ov))*t,Fv+""},interpolateSpectral:Xb,interpolateString:Ka,interpolateTransformCss:Za,interpolateTransformSvg:Qa,interpolateTurbo:function(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-14825.05*e)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+707.56*e)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-6838.66*e)))))))+")"},interpolateViridis:Jv,interpolateWarm:Gv,interpolateYlGn:vv,interpolateYlGnBu:gv,interpolateYlOrBr:kv,interpolateYlOrRd:Cv,interpolateZoom:ei,interrupt:Ni,intersection:function(e,...t){e=new S(e),t=t.map(be);e:for(const r of e)for(const a of t)if(!a.has(r)){e.delete(r);continue e}return e},interval:function(e,t,r){var a=new Ci,i=t;return null==t?(a.restart(e,t,r),a):(a._restart=a.restart,a.restart=function(e,t,r){t=+t,r=null==r?ki():+r,a._restart((function n(o){o+=i,a._restart(n,i+=t,r),e(o)}),t,r)},a.restart(e,t,r),a)},isoFormat:pb,isoParse:yb,json:function(e,t){return fetch(e,t).then(nl)},lab:aa,lch:function(e,t,r,a){return 1===arguments.length?sa(e):new ha(r,t,e,null==a?1:a)},least:function(e,r=t){let a,i=!1;if(1===r.length){let n;for(const o of e){const e=r(o);(i?t(e,n)<0:0===t(e,e))&&(a=o,n=e,i=!0)}}else for(const t of e)(i?r(t,a)<0:0===r(t,t))&&(a=t,i=!0);return a},leastIndex:pe,line:xx,lineRadial:Tx,link:Ix,linkHorizontal:function(){return Ix(Hx)},linkRadial:Wx,linkVertical:function(){return Ix(Dx)},local:Ut,map:function(e,t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof t)throw new TypeError("mapper is not a function");return Array.from(e,((r,a)=>t(r,a,e)))},matcher:Ve,max:ee,maxIndex:te,mean:function(e,t){let r=0,a=0;if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(++r,a+=t);else{let i=-1;for(let n of e)null!=(n=t(n,++i,e))&&(n=+n)>=n&&(++r,a+=n)}if(r)return a/r},median:function(e,t){return ce(e,.5,t)},medianIndex:function(e,t){return se(e,.5,t)},merge:ue,min:re,minIndex:ae,mode:function(e,t){const r=new _;if(void 0===t)for(let t of e)null!=t&&t>=t&&r.set(t,(r.get(t)||0)+1);else{let a=-1;for(let i of e)null!=(i=t(i,++a,e))&&i>=i&&r.set(i,(r.get(i)||0)+1)}let a,i=0;for(const[e,t]of r)t>i&&(i=t,a=e);return a},namespace:Ne,namespaces:Pe,nice:Z,now:ki,pack:function(){var e=null,t=1,r=1,a=Ep;function i(i){const n=Dp();return i.x=t/2,i.y=r/2,e?i.eachBefore(Up(e)).eachAfter(qp(a,.5,n)).eachBefore(Zp(1)):i.eachBefore(Up($p)).eachAfter(qp(Ep,1,n)).eachAfter(qp(a,i.r/Math.min(t,r),n)).eachBefore(Zp(Math.min(t,r)/(2*i.r))),i}return i.radius=function(t){return arguments.length?(e=Bp(t),i):e},i.size=function(e){return arguments.length?(t=+e[0],r=+e[1],i):[t,r]},i.padding=function(e){return arguments.length?(a="function"==typeof e?e:Rp(+e),i):a},i},packEnclose:function(e){return Pp(e,Dp())},packSiblings:function(e){return Yp(e,Dp()),e},pairs:function(e,t=he){const r=[];let a,i=!1;for(const n of e)i&&r.push(t(a,n)),a=n,i=!0;return r},partition:function(){var e=1,t=1,r=0,a=!1;function i(i){var n=i.height+1;return i.x0=i.y0=r,i.x1=e,i.y1=t/n,i.eachBefore(function(e,t){return function(a){a.children&&Xp(a,a.x0,e*(a.depth+1)/t,a.x1,e*(a.depth+2)/t);var i=a.x0,n=a.y0,o=a.x1-r,c=a.y1-r;o<i&&(i=o=(i+o)/2),c<n&&(n=c=(n+c)/2),a.x0=i,a.y0=n,a.x1=o,a.y1=c}}(t,n)),a&&i.eachBefore(Qp),i}return i.round=function(e){return arguments.length?(a=!!e,i):a},i.size=function(r){return arguments.length?(e=+r[0],t=+r[1],i):[e,t]},i.padding=function(e){return arguments.length?(r=+e,i):r},i},path:Ao,pathRound:function(e=3){return new So(+e)},permute:I,pie:function(){var e=Cx,t=wx,r=null,a=$v(0),i=$v(nx),n=$v(0);function o(o){var c,l,s,u,h,d=(o=fx(o)).length,p=0,y=new Array(d),f=new Array(d),m=+a.apply(this,arguments),g=Math.min(nx,Math.max(-nx,i.apply(this,arguments)-m)),b=Math.min(Math.abs(g)/d,n.apply(this,arguments)),v=b*(g<0?-1:1);for(c=0;c<d;++c)(h=f[y[c]=c]=+e(o[c],c,o))>0&&(p+=h);for(null!=t?y.sort((function(e,r){return t(f[e],f[r])})):null!=r&&y.sort((function(e,t){return r(o[e],o[t])})),c=0,s=p?(g-d*v)/p:0;c<d;++c,m=u)l=y[c],u=m+((h=f[l])>0?h*s:0)+v,f[l]={data:o[l],index:c,value:h,startAngle:m,endAngle:u,padAngle:b};return f}return o.value=function(t){return arguments.length?(e="function"==typeof t?t:$v(+t),o):e},o.sortValues=function(e){return arguments.length?(t=e,r=null,o):t},o.sort=function(e){return arguments.length?(r=e,t=null,o):r},o.startAngle=function(e){return arguments.length?(a="function"==typeof e?e:$v(+e),o):a},o.endAngle=function(e){return arguments.length?(i="function"==typeof e?e:$v(+e),o):i},o.padAngle=function(e){return arguments.length?(n="function"==typeof e?e:$v(+e),o):n},o},piecewise:ui,pointRadial:Lx,pointer:Qt,pointers:function(e,t){return e.target&&(e=Zt(e),void 0===t&&(t=e.currentTarget),e=e.touches||[e]),Array.from(e,(e=>Qt(e,t)))},polygonArea:function(e){for(var t,r=-1,a=e.length,i=e[a-1],n=0;++r<a;)t=i,i=e[r],n+=t[1]*i[0]-t[0]*i[1];return n/2},polygonCentroid:function(e){for(var t,r,a=-1,i=e.length,n=0,o=0,c=e[i-1],l=0;++a<i;)t=c,c=e[a],l+=r=t[0]*c[1]-c[0]*t[1],n+=(t[0]+c[0])*r,o+=(t[1]+c[1])*r;return[n/(l*=3),o/l]},polygonContains:function(e,t){for(var r,a,i=e.length,n=e[i-1],o=t[0],c=t[1],l=n[0],s=n[1],u=!1,h=0;h<i;++h)r=(n=e[h])[0],(a=n[1])>c!=s>c&&o<(l-r)*(c-a)/(s-a)+r&&(u=!u),l=r,s=a;return u},polygonHull:function(e){if((r=e.length)<3)return null;var t,r,a=new Array(r),i=new Array(r);for(t=0;t<r;++t)a[t]=[+e[t][0],+e[t][1],t];for(a.sort(xy),t=0;t<r;++t)i[t]=[a[t][0],-a[t][1]];var n=ky(a),o=ky(i),c=o[0]===n[0],l=o[o.length-1]===n[n.length-1],s=[];for(t=n.length-1;t>=0;--t)s.push(e[a[n[t]][2]]);for(t=+c;t<o.length-l;++t)s.push(e[a[o[t]][2]]);return s},polygonLength:function(e){for(var t,r,a=-1,i=e.length,n=e[i-1],o=n[0],c=n[1],l=0;++a<i;)t=o,r=c,t-=o=(n=e[a])[0],r-=c=n[1],l+=Math.hypot(t,r);return l},precisionFixed:Jl,precisionPrefix:Vl,precisionRound:jl,quadtree:yl,quantile:ce,quantileIndex:se,quantileSorted:le,quantize:function(e,t){for(var r=new Array(t),a=0;a<t;++a)r[a]=e(a/(t-1));return r},quickselect:ie,radialArea:Bx,radialLine:Tx,randomBates:Ty,randomBernoulli:Ey,randomBeta:Dy,randomBinomial:Py,randomCauchy:Gy,randomExponential:By,randomGamma:Hy,randomGeometric:Ry,randomInt:_y,randomIrwinHall:My,randomLcg:function(e=Math.random()){let t=0|(0<=e&&e<1?e/Fy:Math.abs(e));return()=>(t=1664525*t+1013904223|0,Fy*(t>>>0))},randomLogNormal:Ay,randomLogistic:Iy,randomNormal:Sy,randomPareto:Ly,randomPoisson:Wy,randomUniform:Cy,randomWeibull:Ny,range:de,rank:function(e,r=t){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");let a=Array.from(e);const i=new Float64Array(a.length);2!==r.length&&(a=a.map(r),r=t);const n=(e,t)=>r(a[e],a[t]);let o,c;return e=Uint32Array.from(a,((e,t)=>t)),e.sort(r===t?(e,t)=>z(a[e],a[t]):F(n)),e.forEach(((e,t)=>{const r=n(e,void 0===o?e:o);r>=0?((void 0===o||r>0)&&(o=e,c=t),i[e]=c):i[e]=NaN})),i},reduce:function(e,t,r){if("function"!=typeof t)throw new TypeError("reducer is not a function");const a=e[Symbol.iterator]();let i,n,o=-1;if(arguments.length<3){if(({done:i,value:r}=a.next()),i)return;++o}for(;({done:i,value:n}=a.next()),!i;)r=t(r,n,++o,e);return r},reverse:function(e){if("function"!=typeof e[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(e).reverse()},rgb:Hr,ribbon:function(){return No()},ribbonArrow:function(){return No(Po)},rollup:D,rollups:P,scaleBand:Vy,scaleDiverging:function e(){var t=af(kb()(Uy));return t.copy=function(){return vb(t,e())},Oy.apply(t,arguments)},scaleDivergingLog:function e(){var t=df(kb()).domain([.1,1,10]);return t.copy=function(){return vb(t,e()).base(t.base())},Oy.apply(t,arguments)},scaleDivergingPow:wb,scaleDivergingSqrt:function(){return wb.apply(null,arguments).exponent(.5)},scaleDivergingSymlog:function e(){var t=ff(kb());return t.copy=function(){return vb(t,e()).constant(t.constant())},Oy.apply(t,arguments)},scaleIdentity:function e(t){var r;function a(e){return null==e||isNaN(e=+e)?r:e}return a.invert=a,a.domain=a.range=function(e){return arguments.length?(t=Array.from(e,Yy),a):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.copy=function(){return e(t).unknown(r)},t=arguments.length?Array.from(t,Yy):[0,1],af(a)},scaleImplicit:Ky,scaleLinear:function e(){var t=tf();return t.copy=function(){return Xy(t,e())},zy.apply(t,arguments),af(t)},scaleLog:function e(){const t=df(ef()).domain([1,10]);return t.copy=()=>Xy(t,e()).base(t.base()),zy.apply(t,arguments),t},scaleOrdinal:Jy,scalePoint:function(){return jy(Vy.apply(null,arguments).paddingInner(1))},scalePow:xf,scaleQuantile:function e(){var r,a=[],i=[],n=[];function o(){var e=0,t=Math.max(1,i.length);for(n=new Array(t-1);++e<t;)n[e-1]=le(a,e/t);return l}function l(e){return null==e||isNaN(e=+e)?r:i[c(n,e)]}return l.invertExtent=function(e){var t=i.indexOf(e);return t<0?[NaN,NaN]:[t>0?n[t-1]:a[0],t<n.length?n[t]:a[a.length-1]]},l.domain=function(e){if(!arguments.length)return a.slice();a=[];for(let t of e)null==t||isNaN(t=+t)||a.push(t);return a.sort(t),o()},l.range=function(e){return arguments.length?(i=Array.from(e),o()):i.slice()},l.unknown=function(e){return arguments.length?(r=e,l):r},l.quantiles=function(){return n.slice()},l.copy=function(){return e().domain(a).range(i).unknown(r)},zy.apply(l,arguments)},scaleQuantize:function e(){var t,r=0,a=1,i=1,n=[.5],o=[0,1];function l(e){return null!=e&&e<=e?o[c(n,e,0,i)]:t}function s(){var e=-1;for(n=new Array(i);++e<i;)n[e]=((e+1)*a-(e-i)*r)/(i+1);return l}return l.domain=function(e){return arguments.length?([r,a]=e,r=+r,a=+a,s()):[r,a]},l.range=function(e){return arguments.length?(i=(o=Array.from(e)).length-1,s()):o.slice()},l.invertExtent=function(e){var t=o.indexOf(e);return t<0?[NaN,NaN]:t<1?[r,n[0]]:t>=i?[n[i-1],a]:[n[t-1],n[t]]},l.unknown=function(e){return arguments.length?(t=e,l):l},l.thresholds=function(){return n.slice()},l.copy=function(){return e().domain([r,a]).range(o).unknown(t)},zy.apply(af(l),arguments)},scaleRadial:function e(){var t,r=tf(),a=[0,1],i=!1;function n(e){var a=function(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}(r(e));return isNaN(a)?t:i?Math.round(a):a}return n.invert=function(e){return r.invert(kf(e))},n.domain=function(e){return arguments.length?(r.domain(e),n):r.domain()},n.range=function(e){return arguments.length?(r.range((a=Array.from(e,Yy)).map(kf)),n):a.slice()},n.rangeRound=function(e){return n.range(e).round(!0)},n.round=function(e){return arguments.length?(i=!!e,n):i},n.clamp=function(e){return arguments.length?(r.clamp(e),n):r.clamp()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return e(r.domain(),a).round(i).clamp(r.clamp()).unknown(t)},zy.apply(n,arguments),af(n)},scaleSequential:function e(){var t=af(bb()(Uy));return t.copy=function(){return vb(t,e())},Oy.apply(t,arguments)},scaleSequentialLog:function e(){var t=df(bb()).domain([1,10]);return t.copy=function(){return vb(t,e()).base(t.base())},Oy.apply(t,arguments)},scaleSequentialPow:xb,scaleSequentialQuantile:function e(){var r=[],a=Uy;function i(e){if(null!=e&&!isNaN(e=+e))return a((c(r,e,1)-1)/(r.length-1))}return i.domain=function(e){if(!arguments.length)return r.slice();r=[];for(let t of e)null==t||isNaN(t=+t)||r.push(t);return r.sort(t),i},i.interpolator=function(e){return arguments.length?(a=e,i):a},i.range=function(){return r.map(((e,t)=>a(t/(r.length-1))))},i.quantiles=function(e){return Array.from({length:e+1},((t,a)=>ce(r,a/e)))},i.copy=function(){return e(a).domain(r)},Oy.apply(i,arguments)},scaleSequentialSqrt:function(){return xb.apply(null,arguments).exponent(.5)},scaleSequentialSymlog:function e(){var t=ff(bb());return t.copy=function(){return vb(t,e()).constant(t.constant())},Oy.apply(t,arguments)},scaleSqrt:function(){return xf.apply(null,arguments).exponent(.5)},scaleSymlog:function e(){var t=ff(ef());return t.copy=function(){return Xy(t,e()).constant(t.constant())},zy.apply(t,arguments)},scaleThreshold:function e(){var t,r=[.5],a=[0,1],i=1;function n(e){return null!=e&&e<=e?a[c(r,e,0,i)]:t}return n.domain=function(e){return arguments.length?(r=Array.from(e),i=Math.min(r.length,a.length-1),n):r.slice()},n.range=function(e){return arguments.length?(a=Array.from(e),i=Math.min(r.length,a.length-1),n):a.slice()},n.invertExtent=function(e){var t=a.indexOf(e);return[r[t-1],r[t]]},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return e().domain(r).range(a).unknown(t)},zy.apply(n,arguments)},scaleTime:function(){return zy.apply(gb(Gm,Im,Lm,Am,Zf,Jf,Ff,Nf,Df,Jm).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},scaleUtc:function(){return zy.apply(gb(Pm,Nm,Rm,Tm,dm,jf,Of,If,Df,jm).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},scan:function(e,t){const r=pe(e,t);return r<0?void 0:r},schemeAccent:Sb,schemeBlues:_v,schemeBrBG:Nb,schemeBuGn:ev,schemeBuPu:rv,schemeCategory10:_b,schemeDark2:Ab,schemeGnBu:iv,schemeGreens:Av,schemeGreys:Tv,schemeObservable10:Mb,schemeOrRd:ov,schemeOranges:Dv,schemePRGn:Ib,schemePaired:Tb,schemePastel1:Bb,schemePastel2:Lb,schemePiYG:Fb,schemePuBu:uv,schemePuBuGn:lv,schemePuOr:Ob,schemePuRd:dv,schemePurples:Lv,schemeRdBu:Jb,schemeRdGy:jb,schemeRdPu:yv,schemeRdYlBu:$b,schemeRdYlGn:qb,schemeReds:Rv,schemeSet1:Eb,schemeSet2:Rb,schemeSet3:Hb,schemeSpectral:Qb,schemeTableau10:Db,schemeYlGn:bv,schemeYlGnBu:mv,schemeYlOrBr:xv,schemeYlOrRd:wv,select:jt,selectAll:function(e){return"string"==typeof e?new Jt([document.querySelectorAll(e)],[document.documentElement]):new Jt([Oe(e)],Kt)},selection:Vt,selector:ze,selectorAll:Je,shuffle:ye,shuffler:fe,some:function(e,t){if("function"!=typeof t)throw new TypeError("test is not a function");let r=-1;for(const a of e)if(t(a,++r,e))return!0;return!1},sort:W,stack:function(){var e=$v([]),t=Zk,r=qk,a=Qk;function i(i){var n,o,c=Array.from(e.apply(this,arguments),Xk),l=c.length,s=-1;for(const e of i)for(n=0,++s;n<l;++n)(c[n][s]=[0,+a(e,c[n].key,s,i)]).data=e;for(n=0,o=fx(t(c));n<l;++n)c[o[n]].index=n;return r(c,o),c}return i.keys=function(t){return arguments.length?(e="function"==typeof t?t:$v(Array.from(t)),i):e},i.value=function(e){return arguments.length?(a="function"==typeof e?e:$v(+e),i):a},i.order=function(e){return arguments.length?(t=null==e?Zk:"function"==typeof e?e:$v(Array.from(e)),i):t},i.offset=function(e){return arguments.length?(r=null==e?qk:e,i):r},i},stackOffsetDiverging:function(e,t){if((c=e.length)>0)for(var r,a,i,n,o,c,l=0,s=e[t[0]].length;l<s;++l)for(n=o=0,r=0;r<c;++r)(i=(a=e[t[r]][l])[1]-a[0])>0?(a[0]=n,a[1]=n+=i):i<0?(a[1]=o,a[0]=o+=i):(a[0]=0,a[1]=i)},stackOffsetExpand:function(e,t){if((a=e.length)>0){for(var r,a,i,n=0,o=e[0].length;n<o;++n){for(i=r=0;r<a;++r)i+=e[r][n][1]||0;if(i)for(r=0;r<a;++r)e[r][n][1]/=i}qk(e,t)}},stackOffsetNone:qk,stackOffsetSilhouette:function(e,t){if((r=e.length)>0){for(var r,a=0,i=e[t[0]],n=i.length;a<n;++a){for(var o=0,c=0;o<r;++o)c+=e[o][a][1]||0;i[a][1]+=i[a][0]=-c/2}qk(e,t)}},stackOffsetWiggle:function(e,t){if((i=e.length)>0&&(a=(r=e[t[0]]).length)>0){for(var r,a,i,n=0,o=1;o<a;++o){for(var c=0,l=0,s=0;c<i;++c){for(var u=e[t[c]],h=u[o][1]||0,d=(h-(u[o-1][1]||0))/2,p=0;p<c;++p){var y=e[t[p]];d+=(y[o][1]||0)-(y[o-1][1]||0)}l+=h,s+=d*h}r[o-1][1]+=r[o-1][0]=n,l&&(n-=s/l)}r[o-1][1]+=r[o-1][0]=n,qk(e,t)}},stackOrderAppearance:ew,stackOrderAscending:rw,stackOrderDescending:function(e){return rw(e).reverse()},stackOrderInsideOut:function(e){var t,r,a=e.length,i=e.map(aw),n=ew(e),o=0,c=0,l=[],s=[];for(t=0;t<a;++t)r=n[t],o<c?(o+=i[r],l.push(r)):(c+=i[r],s.push(r));return s.reverse().concat(l)},stackOrderNone:Zk,stackOrderReverse:function(e){return Zk(e).reverse()},stratify:function(){var e,t=ay,r=iy;function a(a){var i,n,o,c,l,s,u,h,d=Array.from(a),p=t,y=r,f=new Map;if(null!=e){const t=d.map(((t,r)=>function(e){e=`${e}`;let t=e.length;oy(e,t-1)&&!oy(e,t-2)&&(e=e.slice(0,-1));return"/"===e[0]?e:`/${e}`}(e(t,r,a)))),r=t.map(ny),i=new Set(t).add("");for(const e of r)i.has(e)||(i.add(e),t.push(e),r.push(ny(e)),d.push(ry));p=(e,r)=>t[r],y=(e,t)=>r[t]}for(o=0,i=d.length;o<i;++o)n=d[o],s=d[o]=new Tp(n),null!=(u=p(n,o,a))&&(u+="")&&(h=s.id=u,f.set(h,f.has(h)?ty:s)),null!=(u=y(n,o,a))&&(u+="")&&(s.parent=u);for(o=0;o<i;++o)if(u=(s=d[o]).parent){if(!(l=f.get(u)))throw new Error("missing: "+u);if(l===ty)throw new Error("ambiguous: "+u);l.children?l.children.push(s):l.children=[s],s.parent=l}else{if(c)throw new Error("multiple roots");c=s}if(!c)throw new Error("no root");if(null!=e){for(;c.data===ry&&1===c.children.length;)c=c.children[0],--i;for(let e=d.length-1;e>=0&&(s=d[e]).data===ry;--e)s.data=null}if(c.parent=ey,c.eachBefore((function(e){e.depth=e.parent.depth+1,--i})).eachBefore(Mp),c.parent=null,i>0)throw new Error("cycle");return c}return a.id=function(e){return arguments.length?(t=Bp(e),a):t},a.parentId=function(e){return arguments.length?(r=Bp(e),a):r},a.path=function(t){return arguments.length?(e=Bp(t),a):e},a},style:yt,subset:function(e,t){return ve(t,e)},sum:function(e,t){let r=0;if(void 0===t)for(let t of e)(t=+t)&&(r+=t);else{let a=-1;for(let i of e)(i=+t(i,++a,e))&&(r+=i)}return r},superset:ve,svg:sl,symbol:pk,symbolAsterisk:zx,symbolCircle:Ox,symbolCross:Kx,symbolDiamond:jx,symbolDiamond2:Yx,symbolPlus:$x,symbolSquare:Ux,symbolSquare2:qx,symbolStar:ek,symbolTimes:uk,symbolTriangle:rk,symbolTriangle2:ik,symbolWye:sk,symbolX:uk,symbols:hk,symbolsFill:hk,symbolsStroke:dk,text:tl,thresholdFreedmanDiaconis:function(e,t,r){const a=m(e),i=ce(e,.75)-ce(e,.25);return a&&i?Math.ceil((r-t)/(2*i*Math.pow(a,-1/3))):1},thresholdScott:function(e,t,r){const a=m(e),i=k(e);return a&&i?Math.ceil((r-t)*Math.cbrt(a)/(3.49*i)):1},thresholdSturges:Q,tickFormat:rf,tickIncrement:U,tickStep:q,ticks:$,timeDay:Jf,timeDays:Vf,get timeFormat(){return Jm},timeFormatDefaultLocale:hb,timeFormatLocale:Om,timeFriday:rm,timeFridays:sm,timeHour:Ff,timeHours:zf,timeInterval:_f,timeMillisecond:Sf,timeMilliseconds:Af,timeMinute:Nf,timeMinutes:Gf,timeMonday:Qf,timeMondays:nm,timeMonth:Am,timeMonths:Mm,get timeParse(){return Vm},timeSaturday:am,timeSaturdays:um,timeSecond:Df,timeSeconds:Pf,timeSunday:Zf,timeSundays:im,timeThursday:tm,timeThursdays:lm,timeTickInterval:Im,timeTicks:Gm,timeTuesday:Xf,timeTuesdays:om,timeWednesday:em,timeWednesdays:cm,timeWeek:Zf,timeWeeks:im,timeYear:Lm,timeYears:Em,timeout:Bi,timer:_i,timerFlush:Si,transition:an,transpose:me,tree:py,treemap:function(){var e=gy,t=!1,r=1,a=1,i=[0],n=Ep,o=Ep,c=Ep,l=Ep,s=Ep;function u(e){return e.x0=e.y0=0,e.x1=r,e.y1=a,e.eachBefore(h),i=[0],t&&e.eachBefore(Qp),e}function h(t){var r=i[t.depth],a=t.x0+r,u=t.y0+r,h=t.x1-r,d=t.y1-r;h<a&&(a=h=(a+h)/2),d<u&&(u=d=(u+d)/2),t.x0=a,t.y0=u,t.x1=h,t.y1=d,t.children&&(r=i[t.depth+1]=n(t)/2,a+=s(t)-r,u+=o(t)-r,(h-=c(t)-r)<a&&(a=h=(a+h)/2),(d-=l(t)-r)<u&&(u=d=(u+d)/2),e(t,a,u,h,d))}return u.round=function(e){return arguments.length?(t=!!e,u):t},u.size=function(e){return arguments.length?(r=+e[0],a=+e[1],u):[r,a]},u.tile=function(t){return arguments.length?(e=Lp(t),u):e},u.padding=function(e){return arguments.length?u.paddingInner(e).paddingOuter(e):u.paddingInner()},u.paddingInner=function(e){return arguments.length?(n="function"==typeof e?e:Rp(+e),u):n},u.paddingOuter=function(e){return arguments.length?u.paddingTop(e).paddingRight(e).paddingBottom(e).paddingLeft(e):u.paddingTop()},u.paddingTop=function(e){return arguments.length?(o="function"==typeof e?e:Rp(+e),u):o},u.paddingRight=function(e){return arguments.length?(c="function"==typeof e?e:Rp(+e),u):c},u.paddingBottom=function(e){return arguments.length?(l="function"==typeof e?e:Rp(+e),u):l},u.paddingLeft=function(e){return arguments.length?(s="function"==typeof e?e:Rp(+e),u):s},u},treemapBinary:function(e,t,r,a,i){var n,o,c=e.children,l=c.length,s=new Array(l+1);for(s[0]=o=n=0;n<l;++n)s[n+1]=o+=c[n].value;!function e(t,r,a,i,n,o,l){if(t>=r-1){var u=c[t];return u.x0=i,u.y0=n,u.x1=o,void(u.y1=l)}var h=s[t],d=a/2+h,p=t+1,y=r-1;for(;p<y;){var f=p+y>>>1;s[f]<d?p=f+1:y=f}d-s[p-1]<s[p]-d&&t+1<p&&--p;var m=s[p]-h,g=a-m;if(o-i>l-n){var b=a?(i*g+o*m)/a:o;e(t,p,m,i,n,b,l),e(p,r,g,b,n,o,l)}else{var v=a?(n*g+l*m)/a:l;e(t,p,m,i,n,o,v),e(p,r,g,i,v,o,l)}}(0,l,e.value,t,r,a,i)},treemapDice:Xp,treemapResquarify:by,treemapSlice:yy,treemapSliceDice:function(e,t,r,a,i){(1&e.depth?yy:Xp)(e,t,r,a,i)},treemapSquarify:gy,tsv:il,tsvFormat:jc,tsvFormatBody:Yc,tsvFormatRow:Uc,tsvFormatRows:$c,tsvFormatValue:qc,tsvParse:Jc,tsvParseRows:Vc,union:function(...e){const t=new S;for(const r of e)for(const e of r)t.add(e);return t},unixDay:$f,unixDays:Uf,utcDay:jf,utcDays:Yf,get utcFormat(){return jm},utcFriday:gm,utcFridays:_m,utcHour:Of,utcHours:Kf,utcMillisecond:Sf,utcMilliseconds:Af,utcMinute:If,utcMinutes:Wf,utcMonday:pm,utcMondays:xm,utcMonth:Tm,utcMonths:Bm,get utcParse(){return Ym},utcSaturday:bm,utcSaturdays:Sm,utcSecond:Df,utcSeconds:Pf,utcSunday:dm,utcSundays:vm,utcThursday:mm,utcThursdays:Cm,utcTickInterval:Nm,utcTicks:Pm,utcTuesday:ym,utcTuesdays:km,utcWednesday:fm,utcWednesdays:wm,utcWeek:dm,utcWeeks:vm,utcYear:Rm,utcYears:Hm,variance:x,window:ut,xml:cl,zip:function(){return me(arguments)},zoom:gw,zoomIdentity:cw,zoomTransform:lw});class vw extends HTMLDivElement{main_svg=null;tree_data={};static observeAttributes=["backgroundPattern","backgroundSize","customBackground"];backgroundPattern=null;backgroundSize=void 0;customBackground=void 0;backgroundPosition="center";constructor(){super()}connectedCallback(){this.className="ts-root-wrapper-element tree-spider",this.backgroundPattern=this.getAttribute("backgroundPattern")||"default",this.backgroundSize=this.getAttribute("backgroundSize"),this.backgroundSize="undefined"==this.backgroundSize?void 0:this.backgroundSize,this.customBackground=this.getAttribute("customBackground"),this.customBackground="undefined"==this.customBackground?void 0:this.customBackground,this.backgroundPosition=this.getAttribute("backgroundPosition"),this.backgroundPosition="undefined"==this.backgroundPosition?void 0:this.backgroundPosition,this.setCanvasBg()}setCanvasBg(){const e={default:()=>this.defaultDotsPatternBg(),flux:()=>this.fluxPatternBg(),quad:()=>this.quadPatternBg(),blurry:()=>this.blurryBg(),chaos:()=>this.chaosPatternBg(),flurry:()=>this.flurryPatternBg(),spiral:()=>this.spiralPatternBg(),whirling:()=>this.whirlingPatternBg(),replicate:()=>this.replicatePatternBg(),scribble:()=>this.scribblePatternBg(),squiggly:()=>this.squigglyPatternBg(),gyrrate:()=>this.gyrratePatternBg(),leaves:()=>this.leavesPatternBg(),spot:()=>this.spotPatternBg()};if("none"==this.backgroundPattern)return;const t=this.customBackground||e[this.backgroundPattern]();let r;r="object"==typeof t?(new XMLSerializer).serializeToString(t.node()):t;const a=encodeURIComponent(r).replace(/\(/g,"%28").replace(/\)/g,"%29");null!=this.backgroundSize&&(this.style.backgroundSize=this.backgroundSize||"40%"),null!=this.backgroundPosition&&(this.style.backgroundPosition=this.backgroundPosition||"center");const i="data:image/svg+xml;charset=utf-8,"+a;this.style.setProperty("--ts-root-el-bg-image","url("+i+")")}defaultDotsPatternBg(){const e=Yt("svg").attr("width","20").attr("height","20");return e.append("rect").attr("width","20").attr("height","20").attr("fill","transparent"),e.append("circle").attr("cx","10").attr("cy","10").attr("r","1").attr("fill","rgb(150,150,150)"),this.style.backgroundSize=this.backgroundSize||"2%",e}fluxPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",e.flux}quadPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",e.quad}blurryBg(){return this.style.backgroundSize="20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.blurry}chaosPatternBg(){return this.style.backgroundSize=this.backgroundSize||"50%",this.style.backgroundPosition=this.backgroundPosition||"center",e.chaos}spiralPatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",e.spiral}flurryPatternBg(){return this.style.backgroundSize=this.backgroundSize||"30%",this.style.backgroundPosition=this.backgroundPosition||"center",e.flurry}whirlingPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.whirling}replicatePatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",e.replicate}scribblePatternBg(){return this.style.backgroundSize=this.backgroundSize||"30%",this.style.backgroundPosition=this.backgroundPosition||"center",e.scribble}squigglyPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.squiggly}gyrratePatternBg(){return this.style.backgroundSize=this.backgroundSize||"100%",this.style.backgroundPosition=this.backgroundPosition||"center",e.gyrate}leavesPatternBg(){return this.style.backgroundSize=this.backgroundSize||"40%",this.style.backgroundPosition=this.backgroundPosition||"center",e.leaves}reflectionPatternBg(){return this.style.backgroundSize=this.backgroundSize||"20%",this.style.backgroundPosition=this.backgroundPosition||"center",e.reflection}spotPatternBg(){return this.style.backgroundSize=this.backgroundSize||"40%",this.style.backgroundPosition=this.backgroundPosition||"center",e.spot}}window.customElements.define("ts-root-container",vw,{extends:"div"});class xw extends HTMLDivElement{constructor(){super()}connectedCallback(){}}window.customElements.define("ts-element",xw,{extends:"div"});var kw={airline:{airline:[{name:"Aegean Airlines",iataCode:"A3"},{name:"Aeroflot",iataCode:"SU"},{name:"Aerolineas Argentinas",iataCode:"AR"},{name:"Aeromexico",iataCode:"AM"},{name:"Air Algerie",iataCode:"AH"},{name:"Air Arabia",iataCode:"G9"},{name:"Air Canada",iataCode:"AC"},{name:"Air China",iataCode:"CA"},{name:"Air Europa",iataCode:"UX"},{name:"Air France-KLM",iataCode:"AF"},{name:"Air India",iataCode:"AI"},{name:"Air Mauritius",iataCode:"MK"},{name:"Air New Zealand",iataCode:"NZ"},{name:"Air Niugini",iataCode:"PX"},{name:"Air Tahiti",iataCode:"VT"},{name:"Air Tahiti Nui",iataCode:"TN"},{name:"Air Transat",iataCode:"TS"},{name:"AirAsia X",iataCode:"D7"},{name:"AirAsia",iataCode:"AK"},{name:"Aircalin",iataCode:"SB"},{name:"Alaska Airlines",iataCode:"AS"},{name:"Alitalia",iataCode:"AZ"},{name:"All Nippon Airways",iataCode:"NH"},{name:"Allegiant Air",iataCode:"G4"},{name:"American Airlines",iataCode:"AA"},{name:"Asiana Airlines",iataCode:"OZ"},{name:"Avianca",iataCode:"AV"},{name:"Azul Linhas Aereas Brasileiras",iataCode:"AD"},{name:"Azur Air",iataCode:"ZF"},{name:"Beijing Capital Airlines",iataCode:"JD"},{name:"Boliviana de Aviacion",iataCode:"OB"},{name:"British Airways",iataCode:"BA"},{name:"Cathay Pacific",iataCode:"CX"},{name:"Cebu Pacific Air",iataCode:"5J"},{name:"China Airlines",iataCode:"CI"},{name:"China Eastern Airlines",iataCode:"MU"},{name:"China Southern Airlines",iataCode:"CZ"},{name:"Condor",iataCode:"DE"},{name:"Copa Airlines",iataCode:"CM"},{name:"Delta Air Lines",iataCode:"DL"},{name:"Easyfly",iataCode:"VE"},{name:"EasyJet",iataCode:"U2"},{name:"EcoJet",iataCode:"8J"},{name:"Egyptair",iataCode:"MS"},{name:"El Al",iataCode:"LY"},{name:"Emirates Airlines",iataCode:"EK"},{name:"Ethiopian Airlines",iataCode:"ET"},{name:"Etihad Airways",iataCode:"EY"},{name:"EVA Air",iataCode:"BR"},{name:"Fiji Airways",iataCode:"FJ"},{name:"Finnair",iataCode:"AY"},{name:"Flybondi",iataCode:"FO"},{name:"Flydubai",iataCode:"FZ"},{name:"FlySafair",iataCode:"FA"},{name:"Frontier Airlines",iataCode:"F9"},{name:"Garuda Indonesia",iataCode:"GA"},{name:"Go First",iataCode:"G8"},{name:"Gol Linhas Aereas Inteligentes",iataCode:"G3"},{name:"Hainan Airlines",iataCode:"HU"},{name:"Hawaiian Airlines",iataCode:"HA"},{name:"IndiGo Airlines",iataCode:"6E"},{name:"Japan Airlines",iataCode:"JL"},{name:"Jeju Air",iataCode:"7C"},{name:"Jet2",iataCode:"LS"},{name:"JetBlue Airways",iataCode:"B6"},{name:"JetSMART",iataCode:"JA"},{name:"Juneyao Airlines",iataCode:"HO"},{name:"Kenya Airways",iataCode:"KQ"},{name:"Korean Air",iataCode:"KE"},{name:"Kulula.com",iataCode:"MN"},{name:"LATAM Airlines",iataCode:"LA"},{name:"Lion Air",iataCode:"JT"},{name:"LOT Polish Airlines",iataCode:"LO"},{name:"Lufthansa",iataCode:"LH"},{name:"Libyan Airlines",iataCode:"LN"},{name:"Linea Aerea Amaszonas",iataCode:"Z8"},{name:"Malaysia Airlines",iataCode:"MH"},{name:"Nordwind Airlines",iataCode:"N4"},{name:"Norwegian Air Shuttle",iataCode:"DY"},{name:"Oman Air",iataCode:"WY"},{name:"Pakistan International Airlines",iataCode:"PK"},{name:"Pegasus Airlines",iataCode:"PC"},{name:"Philippine Airlines",iataCode:"PR"},{name:"Qantas Group",iataCode:"QF"},{name:"Qatar Airways",iataCode:"QR"},{name:"Republic Airways",iataCode:"YX"},{name:"Royal Air Maroc",iataCode:"AT"},{name:"Ryanair",iataCode:"FR"},{name:"S7 Airlines",iataCode:"S7"},{name:"SAS",iataCode:"SK"},{name:"Satena",iataCode:"9R"},{name:"Saudia",iataCode:"SV"},{name:"Shandong Airlines",iataCode:"SC"},{name:"Sichuan Airlines",iataCode:"3U"},{name:"Singapore Airlines",iataCode:"SQ"},{name:"Sky Airline",iataCode:"H2"},{name:"SkyWest Airlines",iataCode:"OO"},{name:"South African Airways",iataCode:"SA"},{name:"Southwest Airlines",iataCode:"WN"},{name:"SpiceJet",iataCode:"SG"},{name:"Spirit Airlines",iataCode:"NK"},{name:"Spring Airlines",iataCode:"9S"},{name:"SriLankan Airlines",iataCode:"UL"},{name:"Star Peru",iataCode:"2I"},{name:"Sun Country Airlines",iataCode:"SY"},{name:"SunExpress",iataCode:"XQ"},{name:"TAP Air Portugal",iataCode:"TP"},{name:"Thai AirAsia",iataCode:"FD"},{name:"Thai Airways",iataCode:"TG"},{name:"TUI Airways",iataCode:"BY"},{name:"Tunisair",iataCode:"TU"},{name:"Turkish Airlines",iataCode:"TK"},{name:"Ukraine International",iataCode:"PS"},{name:"United Airlines",iataCode:"UA"},{name:"Ural Airlines",iataCode:"U6"},{name:"VietJet Air",iataCode:"VJ"},{name:"Vietnam Airlines",iataCode:"VN"},{name:"Virgin Atlantic Airways",iataCode:"VS"},{name:"Virgin Australia",iataCode:"VA"},{name:"VivaAerobus",iataCode:"VB"},{name:"VOEPASS Linhas Aereas",iataCode:"2Z"},{name:"Volaris",iataCode:"Y4"},{name:"WestJet",iataCode:"WS"},{name:"Wingo",iataCode:"P5"},{name:"Wizz Air",iataCode:"W6"}],airplane:[{name:"Aerospatiale/BAC Concorde",iataTypeCode:"SSC"},{name:"Airbus A300",iataTypeCode:"AB3"},{name:"Airbus A310",iataTypeCode:"310"},{name:"Airbus A310-200",iataTypeCode:"312"},{name:"Airbus A310-300",iataTypeCode:"313"},{name:"Airbus A318",iataTypeCode:"318"},{name:"Airbus A319",iataTypeCode:"319"},{name:"Airbus A319neo",iataTypeCode:"31N"},{name:"Airbus A320",iataTypeCode:"320"},{name:"Airbus A320neo",iataTypeCode:"32N"},{name:"Airbus A321",iataTypeCode:"321"},{name:"Airbus A321neo",iataTypeCode:"32Q"},{name:"Airbus A330",iataTypeCode:"330"},{name:"Airbus A330-200",iataTypeCode:"332"},{name:"Airbus A330-300",iataTypeCode:"333"},{name:"Airbus A330-800neo",iataTypeCode:"338"},{name:"Airbus A330-900neo",iataTypeCode:"339"},{name:"Airbus A340",iataTypeCode:"340"},{name:"Airbus A340-200",iataTypeCode:"342"},{name:"Airbus A340-300",iataTypeCode:"343"},{name:"Airbus A340-500",iataTypeCode:"345"},{name:"Airbus A340-600",iataTypeCode:"346"},{name:"Airbus A350",iataTypeCode:"350"},{name:"Airbus A350-900",iataTypeCode:"359"},{name:"Airbus A350-1000",iataTypeCode:"351"},{name:"Airbus A380",iataTypeCode:"380"},{name:"Airbus A380-800",iataTypeCode:"388"},{name:"Antonov An-12",iataTypeCode:"ANF"},{name:"Antonov An-24",iataTypeCode:"AN4"},{name:"Antonov An-26",iataTypeCode:"A26"},{name:"Antonov An-28",iataTypeCode:"A28"},{name:"Antonov An-30",iataTypeCode:"A30"},{name:"Antonov An-32",iataTypeCode:"A32"},{name:"Antonov An-72",iataTypeCode:"AN7"},{name:"Antonov An-124 Ruslan",iataTypeCode:"A4F"},{name:"Antonov An-140",iataTypeCode:"A40"},{name:"Antonov An-148",iataTypeCode:"A81"},{name:"Antonov An-158",iataTypeCode:"A58"},{name:"Antonov An-225 Mriya",iataTypeCode:"A5F"},{name:"Boeing 707",iataTypeCode:"703"},{name:"Boeing 717",iataTypeCode:"717"},{name:"Boeing 720B",iataTypeCode:"B72"},{name:"Boeing 727",iataTypeCode:"727"},{name:"Boeing 727-100",iataTypeCode:"721"},{name:"Boeing 727-200",iataTypeCode:"722"},{name:"Boeing 737 MAX 7",iataTypeCode:"7M7"},{name:"Boeing 737 MAX 8",iataTypeCode:"7M8"},{name:"Boeing 737 MAX 9",iataTypeCode:"7M9"},{name:"Boeing 737 MAX 10",iataTypeCode:"7MJ"},{name:"Boeing 737",iataTypeCode:"737"},{name:"Boeing 737-100",iataTypeCode:"731"},{name:"Boeing 737-200",iataTypeCode:"732"},{name:"Boeing 737-300",iataTypeCode:"733"},{name:"Boeing 737-400",iataTypeCode:"734"},{name:"Boeing 737-500",iataTypeCode:"735"},{name:"Boeing 737-600",iataTypeCode:"736"},{name:"Boeing 737-700",iataTypeCode:"73G"},{name:"Boeing 737-800",iataTypeCode:"738"},{name:"Boeing 737-900",iataTypeCode:"739"},{name:"Boeing 747",iataTypeCode:"747"},{name:"Boeing 747-100",iataTypeCode:"741"},{name:"Boeing 747-200",iataTypeCode:"742"},{name:"Boeing 747-300",iataTypeCode:"743"},{name:"Boeing 747-400",iataTypeCode:"744"},{name:"Boeing 747-400D",iataTypeCode:"74J"},{name:"Boeing 747-8",iataTypeCode:"748"},{name:"Boeing 747SP",iataTypeCode:"74L"},{name:"Boeing 747SR",iataTypeCode:"74R"},{name:"Boeing 757",iataTypeCode:"757"},{name:"Boeing 757-200",iataTypeCode:"752"},{name:"Boeing 757-300",iataTypeCode:"753"},{name:"Boeing 767",iataTypeCode:"767"},{name:"Boeing 767-200",iataTypeCode:"762"},{name:"Boeing 767-300",iataTypeCode:"763"},{name:"Boeing 767-400",iataTypeCode:"764"},{name:"Boeing 777",iataTypeCode:"777"},{name:"Boeing 777-200",iataTypeCode:"772"},{name:"Boeing 777-200LR",iataTypeCode:"77L"},{name:"Boeing 777-300",iataTypeCode:"773"},{name:"Boeing 777-300ER",iataTypeCode:"77W"},{name:"Boeing 787",iataTypeCode:"787"},{name:"Boeing 787-8",iataTypeCode:"788"},{name:"Boeing 787-9",iataTypeCode:"789"},{name:"Boeing 787-10",iataTypeCode:"781"},{name:"Canadair Challenger",iataTypeCode:"CCJ"},{name:"Canadair CL-44",iataTypeCode:"CL4"},{name:"Canadair Regional Jet 100",iataTypeCode:"CR1"},{name:"Canadair Regional Jet 200",iataTypeCode:"CR2"},{name:"Canadair Regional Jet 700",iataTypeCode:"CR7"},{name:"Canadair Regional Jet 705",iataTypeCode:"CRA"},{name:"Canadair Regional Jet 900",iataTypeCode:"CR9"},{name:"Canadair Regional Jet 1000",iataTypeCode:"CRK"},{name:"De Havilland Canada DHC-2 Beaver",iataTypeCode:"DHP"},{name:"De Havilland Canada DHC-2 Turbo-Beaver",iataTypeCode:"DHR"},{name:"De Havilland Canada DHC-3 Otter",iataTypeCode:"DHL"},{name:"De Havilland Canada DHC-4 Caribou",iataTypeCode:"DHC"},{name:"De Havilland Canada DHC-6 Twin Otter",iataTypeCode:"DHT"},{name:"De Havilland Canada DHC-7 Dash 7",iataTypeCode:"DH7"},{name:"De Havilland Canada DHC-8-100 Dash 8 / 8Q",iataTypeCode:"DH1"},{name:"De Havilland Canada DHC-8-200 Dash 8 / 8Q",iataTypeCode:"DH2"},{name:"De Havilland Canada DHC-8-300 Dash 8 / 8Q",iataTypeCode:"DH3"},{name:"De Havilland Canada DHC-8-400 Dash 8Q",iataTypeCode:"DH4"},{name:"De Havilland DH.104 Dove",iataTypeCode:"DHD"},{name:"De Havilland DH.114 Heron",iataTypeCode:"DHH"},{name:"Douglas DC-3",iataTypeCode:"D3F"},{name:"Douglas DC-6",iataTypeCode:"D6F"},{name:"Douglas DC-8-50",iataTypeCode:"D8T"},{name:"Douglas DC-8-62",iataTypeCode:"D8L"},{name:"Douglas DC-8-72",iataTypeCode:"D8Q"},{name:"Douglas DC-9-10",iataTypeCode:"D91"},{name:"Douglas DC-9-20",iataTypeCode:"D92"},{name:"Douglas DC-9-30",iataTypeCode:"D93"},{name:"Douglas DC-9-40",iataTypeCode:"D94"},{name:"Douglas DC-9-50",iataTypeCode:"D95"},{name:"Douglas DC-10",iataTypeCode:"D10"},{name:"Douglas DC-10-10",iataTypeCode:"D1X"},{name:"Douglas DC-10-30",iataTypeCode:"D1Y"},{name:"Embraer 170",iataTypeCode:"E70"},{name:"Embraer 175",iataTypeCode:"E75"},{name:"Embraer 190",iataTypeCode:"E90"},{name:"Embraer 195",iataTypeCode:"E95"},{name:"Embraer E190-E2",iataTypeCode:"290"},{name:"Embraer E195-E2",iataTypeCode:"295"},{name:"Embraer EMB.110 Bandeirante",iataTypeCode:"EMB"},{name:"Embraer EMB.120 Brasilia",iataTypeCode:"EM2"},{name:"Embraer Legacy 600",iataTypeCode:"ER3"},{name:"Embraer Phenom 100",iataTypeCode:"EP1"},{name:"Embraer Phenom 300",iataTypeCode:"EP3"},{name:"Embraer RJ135",iataTypeCode:"ER3"},{name:"Embraer RJ140",iataTypeCode:"ERD"},{name:"Embraer RJ145 Amazon",iataTypeCode:"ER4"},{name:"Ilyushin IL18",iataTypeCode:"IL8"},{name:"Ilyushin IL62",iataTypeCode:"IL6"},{name:"Ilyushin IL76",iataTypeCode:"IL7"},{name:"Ilyushin IL86",iataTypeCode:"ILW"},{name:"Ilyushin IL96-300",iataTypeCode:"I93"},{name:"Ilyushin IL114",iataTypeCode:"I14"},{name:"Lockheed L-182 / 282 / 382 (L-100) Hercules",iataTypeCode:"LOH"},{name:"Lockheed L-188 Electra",iataTypeCode:"LOE"},{name:"Lockheed L-1011 Tristar",iataTypeCode:"L10"},{name:"Lockheed L-1049 Super Constellation",iataTypeCode:"L49"},{name:"McDonnell Douglas MD11",iataTypeCode:"M11"},{name:"McDonnell Douglas MD80",iataTypeCode:"M80"},{name:"McDonnell Douglas MD81",iataTypeCode:"M81"},{name:"McDonnell Douglas MD82",iataTypeCode:"M82"},{name:"McDonnell Douglas MD83",iataTypeCode:"M83"},{name:"McDonnell Douglas MD87",iataTypeCode:"M87"},{name:"McDonnell Douglas MD88",iataTypeCode:"M88"},{name:"McDonnell Douglas MD90",iataTypeCode:"M90"},{name:"Sukhoi Superjet 100-95",iataTypeCode:"SU9"},{name:"Tupolev Tu-134",iataTypeCode:"TU3"},{name:"Tupolev Tu-154",iataTypeCode:"TU5"},{name:"Tupolev Tu-204",iataTypeCode:"T20"},{name:"Yakovlev Yak-40",iataTypeCode:"YK4"},{name:"Yakovlev Yak-42",iataTypeCode:"YK2"}],airport:[{name:"Adelaide International Airport",iataCode:"ADL"},{name:"Adolfo Suarez Madrid-Barajas Airport",iataCode:"MAD"},{name:"Aeroparque Jorge Newbery Airport",iataCode:"AEP"},{name:"Afonso Pena International Airport",iataCode:"CWB"},{name:"Alfonso Bonilla Aragon International Airport",iataCode:"CLO"},{name:"Amsterdam Airport Schiphol",iataCode:"AMS"},{name:"Arturo Merino Benitez International Airport",iataCode:"SCL"},{name:"Auckland International Airport",iataCode:"AKL"},{name:"Beijing Capital International Airport",iataCode:"PEK"},{name:"Belem Val de Cans International Airport",iataCode:"BEL"},{name:"Belo Horizonte Tancredo Neves International Airport",iataCode:"CNF"},{name:"Berlin-Tegel Airport",iataCode:"TXL"},{name:"Bole International Airport",iataCode:"ADD"},{name:"Brasilia-Presidente Juscelino Kubitschek International Airport",iataCode:"BSB"},{name:"Brisbane International Airport",iataCode:"BNE"},{name:"Brussels Airport",iataCode:"BRU"},{name:"Cairns Airport",iataCode:"CNS"},{name:"Cairo International Airport",iataCode:"CAI"},{name:"Canberra Airport",iataCode:"CBR"},{name:"Capetown International Airport",iataCode:"CPT"},{name:"Charles de Gaulle International Airport",iataCode:"CDG"},{name:"Charlotte Douglas International Airport",iataCode:"CLT"},{name:"Chengdu Shuangliu International Airport",iataCode:"CTU"},{name:"Chhatrapati Shivaji International Airport",iataCode:"BOM"},{name:"Chicago O'Hare International Airport",iataCode:"ORD"},{name:"Chongqing Jiangbei International Airport",iataCode:"CKG"},{name:"Christchurch International Airport",iataCode:"CHC"},{name:"Copenhagen Kastrup Airport",iataCode:"CPH"},{name:"Dallas Fort Worth International Airport",iataCode:"DFW"},{name:"Daniel K. Inouye International Airport",iataCode:"HNL"},{name:"Denver International Airport",iataCode:"DEN"},{name:"Don Mueang International Airport",iataCode:"DMK"},{name:"Dubai International Airport",iataCode:"DXB"},{name:"Dublin Airport",iataCode:"DUB"},{name:"Dusseldorf Airport",iataCode:"DUS"},{name:"El Dorado International Airport",iataCode:"BOG"},{name:"Eleftherios Venizelos International Airport",iataCode:"ATH"},{name:"Faa'a International Airport",iataCode:"PPT"},{name:"Fort Lauderdale Hollywood International Airport",iataCode:"FLL"},{name:"Fortaleza Pinto Martins International Airport",iataCode:"FOR"},{name:"Frankfurt am Main Airport",iataCode:"FRA"},{name:"George Bush Intercontinental Houston Airport",iataCode:"IAH"},{name:"Gold Coast Airport",iataCode:"OOL"},{name:"Guarulhos - Governador Andre Franco Montoro International Airport",iataCode:"GRU"},{name:"Hartsfield-Jackson Atlanta International Airport",iataCode:"ATL"},{name:"Helsinki Vantaa Airport",iataCode:"HEL"},{name:"Hobart International Airport",iataCode:"HBA"},{name:"Hong Kong International Airport",iataCode:"HKG"},{name:"Houari Boumediene Airport",iataCode:"ALG"},{name:"Hurgada International Airport",iataCode:"HRG"},{name:"Incheon International Airport",iataCode:"ICN"},{name:"Indira Gandhi International Airport",iataCode:"DEL"},{name:"Istanbul Airport",iataCode:"IST"},{name:"Jacksons International Airport",iataCode:"POM"},{name:"Jeju International Airport",iataCode:"CJU"},{name:"John F Kennedy International Airport",iataCode:"JFK"},{name:"Jorge Chavez International Airport",iataCode:"LIM"},{name:"Jose Maria Cordova International Airport",iataCode:"MDE"},{name:"Josep Tarradellas Barcelona-El Prat Airport",iataCode:"BCN"},{name:"Kahului Airport",iataCode:"OGG"},{name:"King Abdulaziz International Airport",iataCode:"JED"},{name:"Kuala Lumpur International Airport",iataCode:"KUL"},{name:"Kunming Changshui International Airport",iataCode:"KMG"},{name:"La Tontouta International Airport",iataCode:"NOU"},{name:"Leonardo da Vinci-Fiumicino Airport",iataCode:"FCO"},{name:"London Heathrow Airport",iataCode:"LHR"},{name:"Los Angeles International Airport",iataCode:"LAX"},{name:"McCarran International Airport",iataCode:"LAS"},{name:"Melbourne International Airport",iataCode:"MEL"},{name:"Mexico City International Airport",iataCode:"MEX"},{name:"Miami International Airport",iataCode:"MIA"},{name:"Ministro Pistarini International Airport",iataCode:"EZE"},{name:"Minneapolis-St Paul International/Wold-Chamberlain Airport",iataCode:"MSP"},{name:"Mohammed V International Airport",iataCode:"CMN"},{name:"Moscow Domodedovo Airport",iataCode:"DME"},{name:"Munich Airport",iataCode:"MUC"},{name:"Murtala Muhammed International Airport",iataCode:"LOS"},{name:"Nadi International Airport",iataCode:"NAN"},{name:"Nairobi Jomo Kenyatta International Airport",iataCode:"NBO"},{name:"Narita International Airport",iataCode:"NRT"},{name:"Newark Liberty International Airport",iataCode:"EWR"},{name:"Ninoy Aquino International Airport",iataCode:"MNL"},{name:"Noumea Magenta Airport",iataCode:"GEA"},{name:"O. R. Tambo International Airport",iataCode:"JNB"},{name:"Orlando International Airport",iataCode:"MCO"},{name:"Oslo Lufthavn",iataCode:"OSL"},{name:"Perth Airport",iataCode:"PER"},{name:"Phoenix Sky Harbor International Airport",iataCode:"PHX"},{name:"Recife Guararapes-Gilberto Freyre International Airport",iataCode:"REC"},{name:"Rio de Janeiro Galeao International Airport",iataCode:"GIG"},{name:"Salgado Filho International Airport",iataCode:"POA"},{name:"Salvador Deputado Luis Eduardo Magalhaes International Airport",iataCode:"SSA"},{name:"San Francisco International Airport",iataCode:"SFO"},{name:"Santos Dumont Airport",iataCode:"SDU"},{name:"Sao Paulo-Congonhas Airport",iataCode:"CGH"},{name:"Seattle Tacoma International Airport",iataCode:"SEA"},{name:"Shanghai Hongqiao International Airport",iataCode:"SHA"},{name:"Shanghai Pudong International Airport",iataCode:"PVG"},{name:"Shenzhen Bao'an International Airport",iataCode:"SZX"},{name:"Sheremetyevo International Airport",iataCode:"SVO"},{name:"Singapore Changi Airport",iataCode:"SIN"},{name:"Soekarno-Hatta International Airport",iataCode:"CGK"},{name:'Stockholm-Arlanda Airport"',iataCode:"ARN"},{name:"Suvarnabhumi Airport",iataCode:"BKK"},{name:"Sydney Kingsford Smith International Airport",iataCode:"SYD"},{name:"Taiwan Taoyuan International Airport",iataCode:"TPE"},{name:"Tan Son Nhat International Airport",iataCode:"SGN"},{name:"Tokyo Haneda International Airport",iataCode:"HND"},{name:"Toronto Pearson International Airport",iataCode:"YYZ"},{name:"Tunis Carthage International Airport",iataCode:"TUN"},{name:"Vancouver International Airport",iataCode:"YVR"},{name:"Vienna International Airport",iataCode:"VIE"},{name:"Viracopos International Airport",iataCode:"VCP"},{name:"Vnukovo International Airport",iataCode:"VKO"},{name:"Wellington International Airport",iataCode:"WLG"},{name:"Xi'an Xianyang International Airport",iataCode:"XIY"},{name:"Zhukovsky International Airport",iataCode:"ZIA"},{name:"Zurich Airport",iataCode:"ZRH"}]},animal:{bear:["American black bear","Asian black bear","Brown bear","Giant panda","Polar bear","Sloth bear","Spectacled bear","Sun bear"],bird:["Abert's Towhee","Acadian Flycatcher","Acorn Woodpecker","Alder Flycatcher","Aleutian Tern","Allen's Hummingbird","Altamira Oriole","American Avocet","American Bittern","American Black Duck","American Coot","American Crow","American Dipper","American Golden-Plover","American Goldfinch","American Kestrel","American Oystercatcher","American Pipit","American Redstart","American Robin","American Tree Sparrow","American White Pelican","American Wigeon","American Woodcock","Ancient Murrelet","Anhinga","Anna's Hummingbird","Antillean Nighthawk","Antillean Palm Swift","Aplomado Falcon","Arctic Loon","Arctic Tern","Arctic Warbler","Ash-throated Flycatcher","Ashy Storm-Petrel","Asian Brown Flycatcher","Atlantic Puffin","Audubon's Oriole","Audubon's Shearwater","Aztec Thrush","Azure Gallinule","Bachman's Sparrow","Bachman's Warbler","Bahama Mockingbird","Bahama Swallow","Bahama Woodstar","Baikal Teal","Baird's Sandpiper","Baird's Sparrow","Bald Eagle","Baltimore Oriole","Bananaquit","Band-rumped Storm-Petrel","Band-tailed Gull","Band-tailed Pigeon","Bank Swallow","Bar-tailed Godwit","Barn Owl","Barn Swallow","Barnacle Goose","Barred Owl","Barrow's Goldeneye","Bay-breasted Warbler","Bean Goose","Bell's Vireo","Belted Kingfisher","Bendire's Thrasher","Berylline Hummingbird","Bewick's Wren","Bicknell's Thrush","Black Catbird","Black Guillemot","Black Noddy","Black Oystercatcher","Black Phoebe","Black Rail","Black Rosy-Finch","Black Scoter","Black Skimmer","Black Storm-Petrel","Black Swift","Black Tern","Black Turnstone","Black Vulture","Black-and-white Warbler","Black-backed Wagtail","Black-backed Woodpecker","Black-bellied Plover","Black-bellied Whistling-Duck","Black-billed Cuckoo","Black-billed Magpie","Black-browed Albatross","Black-capped Chickadee","Black-capped Gnatcatcher","Black-capped Petrel","Black-capped Vireo","Black-chinned Hummingbird","Black-chinned Sparrow","Black-crowned Night-Heron","Black-faced Grassquit","Black-footed Albatross","Black-headed Grosbeak","Black-headed Gull","Black-legged Kittiwake","Black-necked Stilt","Black-tailed Gnatcatcher","Black-tailed Godwit","Black-tailed Gull","Black-throated Blue Warbler","Black-throated Gray Warbler","Black-throated Green Warbler","Black-throated Sparrow","Black-vented Oriole","Black-vented Shearwater","Black-whiskered Vireo","Black-winged Stilt","Blackburnian Warbler","Blackpoll Warbler","Blue Bunting","Blue Grosbeak","Blue Grouse","Blue Jay","Blue Mockingbird","Blue-footed Booby","Blue-gray Gnatcatcher","Blue-headed Vireo","Blue-throated Hummingbird","Blue-winged Teal","Blue-winged Warbler","Bluethroat","Boat-tailed Grackle","Bobolink","Bohemian Waxwing","Bonaparte's Gull","Boreal Chickadee","Boreal Owl","Botteri's Sparrow","Brambling","Brandt's Cormorant","Brant","Brewer's Blackbird","Brewer's Sparrow","Bridled Tern","Bridled Titmouse","Bristle-thighed Curlew","Broad-billed Hummingbird","Broad-billed Sandpiper","Broad-tailed Hummingbird","Broad-winged Hawk","Bronzed Cowbird","Brown Booby","Brown Creeper","Brown Jay","Brown Noddy","Brown Pelican","Brown Shrike","Brown Thrasher","Brown-capped Rosy-Finch","Brown-chested Martin","Brown-crested Flycatcher","Brown-headed Cowbird","Brown-headed Nuthatch","Budgerigar","Buff-bellied Hummingbird","Buff-breasted Flycatcher","Buff-breasted Sandpiper","Buff-collared Nightjar","Bufflehead","Buller's Shearwater","Bullock's Oriole","Bumblebee Hummingbird","Burrowing Owl","Bushtit","Cactus Wren","California Condor","California Gnatcatcher","California Gull","California Quail","California Thrasher","California Towhee","Calliope Hummingbird","Canada Goose","Canada Warbler","Canvasback","Canyon Towhee","Canyon Wren","Cape May Warbler","Caribbean Elaenia","Carolina Chickadee","Carolina Parakeet","Carolina Wren","Caspian Tern","Cassin's Auklet","Cassin's Finch","Cassin's Kingbird","Cassin's Sparrow","Cassin's Vireo","Cattle Egret","Cave Swallow","Cedar Waxwing","Cerulean Warbler","Chestnut-backed Chickadee","Chestnut-collared Longspur","Chestnut-sided Warbler","Chihuahuan Raven","Chimney Swift","Chinese Egret","Chipping Sparrow","Chuck-will's-widow","Chukar","Cinnamon Hummingbird","Cinnamon Teal","Citrine Wagtail","Clapper Rail","Clark's Grebe","Clark's Nutcracker","Clay-colored Robin","Clay-colored Sparrow","Cliff Swallow","Colima Warbler","Collared Forest-Falcon","Collared Plover","Common Black-Hawk","Common Chaffinch","Common Crane","Common Cuckoo","Common Eider","Common Goldeneye","Common Grackle","Common Greenshank","Common Ground-Dove","Common House-Martin","Common Loon","Common Merganser","Common Moorhen","Common Murre","Common Nighthawk","Common Pauraque","Common Pochard","Common Poorwill","Common Raven","Common Redpoll","Common Ringed Plover","Common Rosefinch","Common Sandpiper","Common Snipe","Common Swift","Common Tern","Common Yellowthroat","Connecticut Warbler","Cook's Petrel","Cooper's Hawk","Cordilleran Flycatcher","Corn Crake","Cory's Shearwater","Costa's Hummingbird","Couch's Kingbird","Crane Hawk","Craveri's Murrelet","Crescent-chested Warbler","Crested Auklet","Crested Caracara","Crested Myna","Crimson-collared Grosbeak","Crissal Thrasher","Cuban Martin","Curlew Sandpiper","Curve-billed Thrasher","Dark-eyed Junco","Dickcissel","Double-crested Cormorant","Double-striped Thick-knee","Dovekie","Downy Woodpecker","Dunlin","Dusky Flycatcher","Dusky Thrush","Dusky Warbler","Dusky-capped Flycatcher","Eared Grebe","Eared Trogon","Eastern Bluebird","Eastern Kingbird","Eastern Meadowlark","Eastern Phoebe","Eastern Screech-Owl","Eastern Towhee","Eastern Wood-Pewee","Elegant Tern","Elegant Trogon","Elf Owl","Emperor Goose","Eskimo Curlew","Eurasian Blackbird","Eurasian Bullfinch","Eurasian Collared-Dove","Eurasian Coot","Eurasian Curlew","Eurasian Dotterel","Eurasian Hobby","Eurasian Jackdaw","Eurasian Kestrel","Eurasian Oystercatcher","Eurasian Siskin","Eurasian Tree Sparrow","Eurasian Wigeon","Eurasian Woodcock","Eurasian Wryneck","European Golden-Plover","European Starling","European Storm-Petrel","European Turtle-Dove","Evening Grosbeak","Eyebrowed Thrush","Falcated Duck","Fan-tailed Warbler","Far Eastern Curlew","Ferruginous Hawk","Ferruginous Pygmy-Owl","Field Sparrow","Fieldfare","Fish Crow","Five-striped Sparrow","Flame-colored Tanager","Flammulated Owl","Flesh-footed Shearwater","Florida Scrub-Jay","Fork-tailed Flycatcher","Fork-tailed Storm-Petrel","Fork-tailed Swift","Forster's Tern","Fox Sparrow","Franklin's Gull","Fulvous Whistling-Duck","Gadwall","Gambel's Quail","Garganey","Gila Woodpecker","Gilded Flicker","Glaucous Gull","Glaucous-winged Gull","Glossy Ibis","Golden Eagle","Golden-cheeked Warbler","Golden-crowned Kinglet","Golden-crowned Sparrow","Golden-crowned Warbler","Golden-fronted Woodpecker","Golden-winged Warbler","Grace's Warbler","Grasshopper Sparrow","Gray Bunting","Gray Catbird","Gray Flycatcher","Gray Hawk","Gray Jay","Gray Kingbird","Gray Partridge","Gray Silky-flycatcher","Gray Vireo","Gray Wagtail","Gray-breasted Martin","Gray-cheeked Thrush","Gray-crowned Rosy-Finch","Gray-crowned Yellowthroat","Gray-headed Chickadee","Gray-spotted Flycatcher","Gray-tailed Tattler","Great Auk","Great Black-backed Gull","Great Blue Heron","Great Cormorant","Great Crested Flycatcher","Great Egret","Great Frigatebird","Great Gray Owl","Great Horned Owl","Great Kiskadee","Great Knot","Great Skua","Great Spotted Woodpecker","Great-tailed Grackle","Greater Flamingo","Greater Pewee","Greater Prairie-chicken","Greater Roadrunner","Greater Scaup","Greater Shearwater","Greater White-fronted Goose","Greater Yellowlegs","Green Heron","Green Jay","Green Kingfisher","Green Sandpiper","Green Violet-ear","Green-breasted Mango","Green-tailed Towhee","Green-winged Teal","Greenish Elaenia","Groove-billed Ani","Gull-billed Tern","Gyrfalcon","Hairy Woodpecker","Hammond's Flycatcher","Harlequin Duck","Harris's Hawk","Harris's Sparrow","Hawfinch","Heermann's Gull","Henslow's Sparrow","Hepatic Tanager","Herald Petrel","Hermit Thrush","Hermit Warbler","Herring Gull","Himalayan Snowcock","Hoary Redpoll","Hooded Merganser","Hooded Oriole","Hooded Warbler","Hook-billed Kite","Hoopoe","Horned Grebe","Horned Lark","Horned Puffin","House Finch","House Sparrow","House Wren","Hudsonian Godwit","Hutton's Vireo","Iceland Gull","Inca Dove","Indigo Bunting","Island Scrub-Jay","Ivory Gull","Ivory-billed Woodpecker","Jabiru","Jack Snipe","Jungle Nightjar","Juniper Titmouse","Kentucky Warbler","Key West Quail-Dove","Killdeer","King Eider","King Rail","Kirtland's Warbler","Kittlitz's Murrelet","La Sagra's Flycatcher","Labrador Duck","Ladder-backed Woodpecker","Lanceolated Warbler","Lapland Longspur","Large-billed Tern","Lark Bunting","Lark Sparrow","Laughing Gull","Lawrence's Goldfinch","Laysan Albatross","Lazuli Bunting","Le Conte's Sparrow","Le Conte's Thrasher","Leach's Storm-Petrel","Least Auklet","Least Bittern","Least Flycatcher","Least Grebe","Least Sandpiper","Least Storm-Petrel","Least Tern","Lesser Black-backed Gull","Lesser Frigatebird","Lesser Goldfinch","Lesser Nighthawk","Lesser Prairie-chicken","Lesser Scaup","Lesser White-fronted Goose","Lesser Yellowlegs","Lewis's Woodpecker","Limpkin","Lincoln's Sparrow","Little Blue Heron","Little Bunting","Little Curlew","Little Egret","Little Gull","Little Ringed Plover","Little Shearwater","Little Stint","Loggerhead Kingbird","Loggerhead Shrike","Long-billed Curlew","Long-billed Dowitcher","Long-billed Murrelet","Long-billed Thrasher","Long-eared Owl","Long-tailed Jaeger","Long-toed Stint","Louisiana Waterthrush","Lucifer Hummingbird","Lucy's Warbler","MacGillivray's Warbler","Magnificent Frigatebird","Magnificent Hummingbird","Magnolia Warbler","Mallard","Mangrove Cuckoo","Manx Shearwater","Marbled Godwit","Marbled Murrelet","Marsh Sandpiper","Marsh Wren","Masked Booby","Masked Duck","Masked Tityra","McCown's Longspur","McKay's Bunting","Merlin","Mew Gull","Mexican Chickadee","Mexican Jay","Middendorff's Grasshopper-Warbler","Mississippi Kite","Mongolian Plover","Monk Parakeet","Montezuma Quail","Mottled Duck","Mottled Owl","Mottled Petrel","Mountain Bluebird","Mountain Chickadee","Mountain Plover","Mountain Quail","Mourning Dove","Mourning Warbler","Mugimaki Flycatcher","Murphy's Petrel","Muscovy Duck","Mute Swan","Narcissus Flycatcher","Nashville Warbler","Nelson's Sharp-tailed Sparrow","Neotropic Cormorant","Northern Beardless-Tyrannulet","Northern Bobwhite","Northern Cardinal","Northern Flicker","Northern Fulmar","Northern Gannet","Northern Goshawk","Northern Harrier","Northern Hawk Owl","Northern Jacana","Northern Lapwing","Northern Mockingbird","Northern Parula","Northern Pintail","Northern Pygmy-Owl","Northern Rough-winged Swallow","Northern Saw-whet Owl","Northern Shoveler","Northern Shrike","Northern Waterthrush","Northern Wheatear","Northwestern Crow","Nuttall's Woodpecker","Nutting's Flycatcher","Oak Titmouse","Oldsquaw","Olive Sparrow","Olive Warbler","Olive-backed Pipit","Olive-sided Flycatcher","Orange-crowned Warbler","Orchard Oriole","Oriental Cuckoo","Oriental Greenfinch","Oriental Pratincole","Oriental Scops-Owl","Oriental Turtle-Dove","Osprey","Ovenbird","Pacific Golden-Plover","Pacific Loon","Pacific-slope Flycatcher","Paint-billed Crake","Painted Bunting","Painted Redstart","Pallas's Bunting","Palm Warbler","Parakeet Auklet","Parasitic Jaeger","Passenger Pigeon","Pechora Pipit","Pectoral Sandpiper","Pelagic Cormorant","Peregrine Falcon","Phainopepla","Philadelphia Vireo","Pied-billed Grebe","Pigeon Guillemot","Pileated Woodpecker","Pin-tailed Snipe","Pine Bunting","Pine Grosbeak","Pine Siskin","Pine Warbler","Pink-footed Goose","Pink-footed Shearwater","Pinyon Jay","Piping Plover","Plain Chachalaca","Plain-capped Starthroat","Plumbeous Vireo","Pomarine Jaeger","Prairie Falcon","Prairie Warbler","Prothonotary Warbler","Purple Finch","Purple Gallinule","Purple Martin","Purple Sandpiper","Pygmy Nuthatch","Pyrrhuloxia","Razorbill","Red Crossbill","Red Knot","Red Phalarope","Red-bellied Woodpecker","Red-billed Pigeon","Red-billed Tropicbird","Red-breasted Flycatcher","Red-breasted Merganser","Red-breasted Nuthatch","Red-breasted Sapsucker","Red-cockaded Woodpecker","Red-crowned Parrot","Red-eyed Vireo","Red-faced Cormorant","Red-faced Warbler","Red-flanked Bluetail","Red-footed Booby","Red-headed Woodpecker","Red-legged Kittiwake","Red-naped Sapsucker","Red-necked Grebe","Red-necked Phalarope","Red-necked Stint","Red-shouldered Hawk","Red-tailed Hawk","Red-tailed Tropicbird","Red-throated Loon","Red-throated Pipit","Red-whiskered Bulbul","Red-winged Blackbird","Reddish Egret","Redhead","Redwing","Reed Bunting","Rhinoceros Auklet","Ring-billed Gull","Ring-necked Duck","Ring-necked Pheasant","Ringed Kingfisher","Roadside Hawk","Rock Dove","Rock Ptarmigan","Rock Sandpiper","Rock Wren","Rose-breasted Grosbeak","Rose-throated Becard","Roseate Spoonbill","Roseate Tern","Ross's Goose","Ross's Gull","Rough-legged Hawk","Royal Tern","Ruby-crowned Kinglet","Ruby-throated Hummingbird","Ruddy Duck","Ruddy Ground-Dove","Ruddy Quail-Dove","Ruddy Turnstone","Ruff","Ruffed Grouse","Rufous Hummingbird","Rufous-backed Robin","Rufous-capped Warbler","Rufous-crowned Sparrow","Rufous-winged Sparrow","Rustic Bunting","Rusty Blackbird","Sabine's Gull","Sage Grouse","Sage Sparrow","Sage Thrasher","Saltmarsh Sharp-tailed Sparrow","Sanderling","Sandhill Crane","Sandwich Tern","Savannah Sparrow","Say's Phoebe","Scaled Quail","Scaly-naped Pigeon","Scarlet Ibis","Scarlet Tanager","Scissor-tailed Flycatcher","Scott's Oriole","Seaside Sparrow","Sedge Wren","Semipalmated Plover","Semipalmated Sandpiper","Sharp-shinned Hawk","Sharp-tailed Grouse","Sharp-tailed Sandpiper","Shiny Cowbird","Short-billed Dowitcher","Short-eared Owl","Short-tailed Albatross","Short-tailed Hawk","Short-tailed Shearwater","Shy Albatross","Siberian Accentor","Siberian Blue Robin","Siberian Flycatcher","Siberian Rubythroat","Sky Lark","Slate-throated Redstart","Slaty-backed Gull","Slender-billed Curlew","Smew","Smith's Longspur","Smooth-billed Ani","Snail Kite","Snow Bunting","Snow Goose","Snowy Egret","Snowy Owl","Snowy Plover","Solitary Sandpiper","Song Sparrow","Sooty Shearwater","Sooty Tern","Sora","South Polar Skua","Southern Martin","Spectacled Eider","Spoonbill Sandpiper","Spot-billed Duck","Spot-breasted Oriole","Spotted Dove","Spotted Owl","Spotted Rail","Spotted Redshank","Spotted Sandpiper","Spotted Towhee","Sprague's Pipit","Spruce Grouse","Stejneger's Petrel","Steller's Eider","Steller's Jay","Steller's Sea-Eagle","Stilt Sandpiper","Stonechat","Streak-backed Oriole","Streaked Shearwater","Strickland's Woodpecker","Stripe-headed Tanager","Sulphur-bellied Flycatcher","Summer Tanager","Surf Scoter","Surfbird","Swainson's Hawk","Swainson's Thrush","Swainson's Warbler","Swallow-tailed Kite","Swamp Sparrow","Tamaulipas Crow","Tawny-shouldered Blackbird","Temminck's Stint","Tennessee Warbler","Terek Sandpiper","Thayer's Gull","Thick-billed Kingbird","Thick-billed Murre","Thick-billed Parrot","Thick-billed Vireo","Three-toed Woodpecker","Townsend's Solitaire","Townsend's Warbler","Tree Pipit","Tree Swallow","Tricolored Blackbird","Tricolored Heron","Tropical Kingbird","Tropical Parula","Trumpeter Swan","Tufted Duck","Tufted Flycatcher","Tufted Puffin","Tufted Titmouse","Tundra Swan","Turkey Vulture","Upland Sandpiper","Varied Bunting","Varied Thrush","Variegated Flycatcher","Vaux's Swift","Veery","Verdin","Vermilion Flycatcher","Vesper Sparrow","Violet-crowned Hummingbird","Violet-green Swallow","Virginia Rail","Virginia's Warbler","Wandering Albatross","Wandering Tattler","Warbling Vireo","Wedge-rumped Storm-Petrel","Wedge-tailed Shearwater","Western Bluebird","Western Grebe","Western Gull","Western Kingbird","Western Meadowlark","Western Reef-Heron","Western Sandpiper","Western Screech-Owl","Western Scrub-Jay","Western Tanager","Western Wood-Pewee","Whimbrel","Whip-poor-will","Whiskered Auklet","Whiskered Screech-Owl","Whiskered Tern","White Ibis","White Wagtail","White-breasted Nuthatch","White-cheeked Pintail","White-chinned Petrel","White-collared Seedeater","White-collared Swift","White-crowned Pigeon","White-crowned Sparrow","White-eared Hummingbird","White-eyed Vireo","White-faced Ibis","White-faced Storm-Petrel","White-headed Woodpecker","White-rumped Sandpiper","White-tailed Eagle","White-tailed Hawk","White-tailed Kite","White-tailed Ptarmigan","White-tailed Tropicbird","White-throated Needletail","White-throated Robin","White-throated Sparrow","White-throated Swift","White-tipped Dove","White-winged Crossbill","White-winged Dove","White-winged Parakeet","White-winged Scoter","White-winged Tern","Whooper Swan","Whooping Crane","Wild Turkey","Willet","Williamson's Sapsucker","Willow Flycatcher","Willow Ptarmigan","Wilson's Phalarope","Wilson's Plover","Wilson's Storm-Petrel","Wilson's Warbler","Winter Wren","Wood Duck","Wood Sandpiper","Wood Stork","Wood Thrush","Wood Warbler","Worm-eating Warbler","Worthen's Sparrow","Wrentit","Xantus's Hummingbird","Xantus's Murrelet","Yellow Bittern","Yellow Grosbeak","Yellow Rail","Yellow Wagtail","Yellow Warbler","Yellow-bellied Flycatcher","Yellow-bellied Sapsucker","Yellow-billed Cuckoo","Yellow-billed Loon","Yellow-billed Magpie","Yellow-breasted Bunting","Yellow-breasted Chat","Yellow-crowned Night-Heron","Yellow-eyed Junco","Yellow-faced Grassquit","Yellow-footed Gull","Yellow-green Vireo","Yellow-headed Blackbird","Yellow-legged Gull","Yellow-nosed Albatross","Yellow-rumped Warbler","Yellow-throated Vireo","Yellow-throated Warbler","Yucatan Vireo","Zenaida Dove","Zone-tailed Hawk"],cat:["Abyssinian","American Bobtail","American Curl","American Shorthair","American Wirehair","Balinese","Bengal","Birman","Bombay","British Shorthair","Burmese","Chartreux","Chausie","Cornish Rex","Devon Rex","Donskoy","Egyptian Mau","Exotic Shorthair","Havana","Highlander","Himalayan","Japanese Bobtail","Korat","Kurilian Bobtail","LaPerm","Maine Coon","Manx","Minskin","Munchkin","Nebelung","Norwegian Forest Cat","Ocicat","Ojos Azules","Oriental","Persian","Peterbald","Pixiebob","Ragdoll","Russian Blue","Savannah","Scottish Fold","Selkirk Rex","Serengeti","Siamese","Siberian","Singapura","Snowshoe","Sokoke","Somali","Sphynx","Thai","Tonkinese","Toyger","Turkish Angora","Turkish Van"],cetacean:["Amazon River Dolphin","Arnoux's Beaked Whale","Atlantic Humpbacked Dolphin","Atlantic Spotted Dolphin","Atlantic White-Sided Dolphin","Australian Snubfin Dolphin","Australian humpback Dolphin","Blue Whale","Bottlenose Dolphin","Bryde’s whale","Burrunan Dolphin","Chilean Dolphin","Chinese River Dolphin","Chinese White Dolphin","Clymene Dolphin","Commerson’s Dolphin","Costero","Dusky Dolphin","False Killer Whale","Fin Whale","Fraser’s Dolphin","Ganges River Dolphin","Guiana Dolphin","Heaviside’s Dolphin","Hector’s Dolphin","Hourglass Dolphin","Humpback whale","Indo-Pacific Bottlenose Dolphin","Indo-Pacific Hump-backed Dolphin","Irrawaddy Dolphin","Killer Whale (Orca)","La Plata Dolphin","Long-Beaked Common Dolphin","Long-finned Pilot Whale","Longman's Beaked Whale","Melon-headed Whale","Northern Rightwhale Dolphin","Omura’s whale","Pacific White-Sided Dolphin","Pantropical Spotted Dolphin","Peale’s Dolphin","Pygmy Killer Whale","Risso’s Dolphin","Rough-Toothed Dolphin","Sei Whale","Short-Beaked Common Dolphin","Short-finned Pilot Whale","Southern Bottlenose Whale","Southern Rightwhale Dolphin","Sperm Whale","Spinner Dolphin","Striped Dolphin","Tucuxi","White-Beaked Dolphin"],cow:["Aberdeen Angus","Abergele","Abigar","Abondance","Abyssinian Shorthorned Zebu","Aceh","Achham","Adamawa","Adaptaur","Afar","Africangus","Afrikaner","Agerolese","Alambadi","Alatau","Albanian","Albera","Alderney","Alentejana","Aleutian wild cattle","Aliad Dinka","Alistana-Sanabresa","Allmogekor","Alur","American","American Angus","American Beef Friesian","American Brown Swiss","American Milking Devon","American White Park","Amerifax","Amrit Mahal","Amsterdam Island cattle","Anatolian Black","Andalusian Black","Andalusian Blond","Andalusian Grey","Angeln","Angoni","Ankina","Ankole","Ankole-Watusi","Aracena","Arado","Argentine Criollo","Argentine Friesian","Armorican","Arouquesa","Arsi","Asturian Mountain","Asturian Valley","Aubrac","Aulie-Ata","Aure et Saint-Girons","Australian Braford","Australian Brangus","Australian Charbray","Australian Friesian Sahiwal","Australian Lowline","Australian Milking Zebu","Australian Shorthorn","Austrian Simmental","Austrian Yellow","Avileña-Negra Ibérica","Avétonou","Aweil Dinka","Ayrshire","Azaouak","Azebuado","Azerbaijan Zebu","Azores","Bachaur cattle","Baherie cattle","Bakosi cattle","Balancer","Baoule","Bargur cattle","Barrosã","Barzona","Bazadaise","Bedit","Beef Freisian","Beefalo","Beefmaker","Beefmaster","Begayt","Belgian Blue","Belgian Red","Belgian Red Pied","Belgian White-and-Red","Belmont Red","Belted Galloway","Bernese","Berrenda cattle","Betizu","Bianca Modenese","Blaarkop","Black Angus","Black Baldy","Black Hereford","Blanca Cacereña","Blanco Orejinegro BON","Blonde d'Aquitaine","Blue Albion","Blue Grey","Bohuskulla","Bonsmara","Boran","Boškarin","Braford","Brahman","Brahmousin","Brangus","Braunvieh","Brava","Breed","British Friesian","British White","Brown Carpathian","Brown Caucasian","Brown Swiss","Bue Lingo","Burlina","Bushuyev","Butana cattle","Buša cattle","Cachena","Caldelana","Camargue","Campbell Island cattle","Canadian Speckle Park","Canadienne","Canaria","Canchim","Caracu","Carinthian Blondvieh","Carora","Cedit","Charbray","Charolais","Chateaubriand","Chiangus","Chianina","Chillingham cattle","Chinese Black Pied","Cholistani","Coloursided White Back","Commercial","Corriente","Corsican cattle","Costeño con Cuernos","Crioulo Lageano","Cárdena Andaluza","Dajal","Dangi cattle","Danish Black-Pied","Danish Jersey","Danish Red","Dedit","Deep Red cattle","Deoni","Devon","Dexter cattle","Dhanni","Doayo cattle","Doela","Drakensberger","Droughtmaster","Dulong'","Dutch Belted","Dutch Friesian","Dwarf Lulu","Dølafe","East Anatolian Red","Eastern Finncattle","Eastern Red Polled","Eedit","Enderby Island cattle","English Longhorn","Ennstaler Bergscheck","Estonian Holstein","Estonian Native","Estonian Red cattle","Fedit","Finncattle","Finnish Ayrshire","Finnish Holstein-Friesian","Fjäll","Fleckvieh","Florida Cracker cattle","Fogera","French Simmental","Fribourgeoise","Friesian Red and White","Fulani Sudanese","Fēng Cattle","Galician Blond","Galloway cattle","Gangatiri","Gaolao","Garvonesa","Gascon cattle","Gedit","Gelbvieh","Georgian Mountain cattle","German Angus","German Black Pied Dairy","German Black Pied cattle","German Red Pied","Gir","Glan cattle","Gloucester","Gobra","Greek Shorthorn","Greek Steppe","Greyman cattle","Gudali","Guernsey cattle","Guzerá","Hallikar4","Hanwoo","Hariana cattle","Hartón del Valle","Harzer Rotvieh","Hays Converter","Heck cattle","Hedit","Hereford","Herens","Highland cattle","Hinterwald","Holando-Argentino","Holstein Friesian cattle","Horro","Hungarian Grey","Huáng Cattle","Hybridmaster","Iberian cattle","Icelandic","Iedit","Illawarra cattle","Improved Red and White","Indo-Brazilian","Irish Moiled","Israeli Holstein","Israeli Red","Istoben cattle","Istrian cattle","Jamaica Black","Jamaica Hope","Jamaica Red","Japanese Brown","Jarmelista","Javari cattle","Jedit","Jersey cattle","Jutland cattle","Kabin Buri cattle","Kalmyk cattle","Kamphaeng Saen cattle","Kangayam","Kankrej","Karan Swiss","Kasaragod Dwarf cattle","Kathiawadi","Kazakh Whiteheaded","Kedit","Kenana cattle","Kenkatha cattle","Kerry cattle","Kherigarh","Khillari cattle","Kholomogory","Korat Wagyu","Kostroma cattle","Krishna Valley cattle","Kurgan cattle","Kuri","La Reina cattle","Lakenvelder cattle","Lampurger","Latvian Blue","Latvian Brown","Latvian Danish Red","Lebedyn","Ledit","Levantina","Limia cattle","Limousin","Limpurger","Lincoln Red","Lineback","Lithuanian Black-and-White","Lithuanian Light Grey","Lithuanian Red","Lithuanian White-Backed","Lohani cattle","Lourdais","Lucerna cattle","Luing","Madagascar Zebu","Madura","Maine-Anjou","Malnad Gidda","Malvi","Mandalong Special","Mantequera Leonesa","Maramureş Brown","Marchigiana","Maremmana","Marinhoa","Maronesa","Masai","Mashona","Medit","Menorquina","Mertolenga","Meuse-Rhine-Issel","Mewati","Milking Shorthorn","Minhota","Mirandesa","Mirkadim","Mocăniţă","Mollie","Monchina","Mongolian","Montbéliarde","Morucha","Murboden","Murnau-Werdenfels","Murray Grey","Muturu","N'Dama","Nagori","Nedit","Negra Andaluza","Nelore","Nguni","Nimari","Normande","North Bengal Grey","Northern Finncattle","Northern Shorthorn","Norwegian Red","Oedit]","Ongole","Original Simmental","Pajuna","Palmera","Pantaneiro","Parda Alpina","Parthenaise","Pasiega","Pedit","Pembroke","Philippine Native","Pie Rouge des Plaines","Piedmontese cattle","Pineywoods","Pinzgauer","Pirenaica","Podolac","Podolica","Polish Black-and-White","Polish Red","Poll Shorthorn","Polled Hereford","Polled Shorthorn","Ponwar","Preta","Pulikulam","Punganur","Pustertaler Sprinzen","Qedit","Qinchaun","Queensland Miniature Boran","RX3","Ramo Grande","Randall","Raramuri Criollo","Rathi","Raya","Red Angus","Red Brangus","Red Chittagong","Red Fulani","Red Gorbatov","Red Holstein","Red Kandhari","Red Mingrelian","Red Poll","Red Polled Østland","Red Sindhi","Redit","Retinta","Riggit Galloway","Ringamåla","Rohjan","Romagnola","Romanian Bălţata","Romanian Steppe Gray","Romosinuano","Russian Black Pied","Rätisches Grauvieh","Sahiwal","Salers","Salorn","Sanga","Sanhe","Santa Cruz","Santa Gertrudis","Sayaguesa","Schwyz","Sedit","Selembu","Senepol","Serbian Pied","Serbian Steppe","Sheko","Shetland","Shorthorn","Siboney de Cuba","Simbrah","Simford","Simmental","Siri","South Devon","Spanish Fighting Bull","Speckle Park","Square Meater","Sussex","Swedish Friesian","Swedish Polled","Swedish Red Pied","Swedish Red Polled","Swedish Red-and-White","Tabapuã","Tarentaise","Tasmanian Grey","Tauros","Tedit","Telemark","Texas Longhorn","Texon","Thai Black","Thai Fighting Bull","Thai Friesian","Thai Milking Zebu","Tharparkar","Tswana","Tudanca","Tuli","Tulim","Turkish Grey Steppe","Tux-Zillertal","Tyrol Grey","Uedit","Ukrainian Grey","Umblachery","Valdostana Castana","Valdostana Pezzata Nera","Valdostana Pezzata Rossa","Vaynol","Vechur8","Vedit","Vestland Fjord","Vestland Red Polled","Vianesa","Volinian Beef","Vorderwald","Vosgienne","Väneko","Waguli","Wagyu","Wangus","Wedit","Welsh Black","Western Finncattle","White Cáceres","White Fulani","White Lamphun","White Park","Whitebred Shorthorn","Xedit","Xingjiang Brown","Yakutian","Yanbian","Yanhuang","Yedit","Yurino","Zebu","Zedit","Évolène cattle","Żubroń"],crocodilia:["African Slender-snouted Crocodile","Alligator mississippiensis","American Crocodile","Australian Freshwater Crocodile","Black Caiman","Broad-snouted Caiman","Chinese Alligator","Cuban Crocodile","Cuvier’s Dwarf Caiman","Dwarf Crocodile","Gharial","Morelet’s Crocodile","Mugger Crocodile","New Guinea Freshwater Crocodile","Nile Crocodile","Orinoco Crocodile","Philippine Crocodile","Saltwater Crocodile","Schneider’s Smooth-fronted Caiman","Siamese Crocodile","Spectacled Caiman","Tomistoma","West African Crocodile","Yacare Caiman"],dog:["Affenpinscher","Afghan Hound","Aidi","Airedale Terrier","Akbash","Akita","Alano Español","Alapaha Blue Blood Bulldog","Alaskan Husky","Alaskan Klee Kai","Alaskan Malamute","Alopekis","Alpine Dachsbracke","American Bulldog","American Bully","American Cocker Spaniel","American English Coonhound","American Foxhound","American Hairless Terrier","American Pit Bull Terrier","American Staffordshire Terrier","American Water Spaniel","Andalusian Hound","Anglo-Français de Petite Vénerie","Appenzeller Sennenhund","Ariegeois","Armant","Armenian Gampr dog","Artois Hound","Australian Cattle Dog","Australian Kelpie","Australian Shepherd","Australian Stumpy Tail Cattle Dog","Australian Terrier","Austrian Black and Tan Hound","Austrian Pinscher","Azawakh","Bakharwal dog","Banjara Hound","Barbado da Terceira","Barbet","Basenji","Basque Shepherd Dog","Basset Artésien Normand","Basset Bleu de Gascogne","Basset Fauve de Bretagne","Basset Hound","Bavarian Mountain Hound","Beagle","Beagle-Harrier","Bearded Collie","Beauceron","Bedlington Terrier","Belgian Shepherd","Bergamasco Shepherd","Berger Picard","Bernese Mountain Dog","Bhotia","Bichon Frisé","Billy","Black Mouth Cur","Black Norwegian Elkhound","Black Russian Terrier","Black and Tan Coonhound","Bloodhound","Blue Lacy","Blue Picardy Spaniel","Bluetick Coonhound","Boerboel","Bohemian Shepherd","Bolognese","Border Collie","Border Terrier","Borzoi","Bosnian Coarse-haired Hound","Boston Terrier","Bouvier des Ardennes","Bouvier des Flandres","Boxer","Boykin Spaniel","Bracco Italiano","Braque Francais","Braque Saint-Germain","Braque d'Auvergne","Braque de l'Ariège","Braque du Bourbonnais","Briard","Briquet Griffon Vendéen","Brittany","Broholmer","Bruno Jura Hound","Brussels Griffon","Bucovina Shepherd Dog","Bull Arab","Bull Terrier","Bulldog","Bullmastiff","Bully Kutta","Burgos Pointer","Cairn Terrier","Campeiro Bulldog","Can de Chira","Canaan Dog","Canadian Eskimo Dog","Cane Corso","Cane Paratore","Cane di Oropa","Cantabrian Water Dog","Cardigan Welsh Corgi","Carea Castellano Manchego","Carolina Dog","Carpathian Shepherd Dog","Catahoula Leopard Dog","Catalan Sheepdog","Caucasian Shepherd Dog","Cavalier King Charles Spaniel","Central Asian Shepherd Dog","Cesky Fousek","Cesky Terrier","Chesapeake Bay Retriever","Chien Français Blanc et Noir","Chien Français Blanc et Orange","Chien Français Tricolore","Chihuahua","Chilean Terrier","Chinese Chongqing Dog","Chinese Crested Dog","Chinook","Chippiparai","Chongqing dog","Chortai","Chow Chow","Cimarrón Uruguayo","Cirneco dell'Etna","Clumber Spaniel","Colombian fino hound","Coton de Tulear","Cretan Hound","Croatian Sheepdog","Curly-Coated Retriever","Cursinu","Czechoslovakian Wolfdog","Cão Fila de São Miguel","Cão da Serra de Aires","Cão de Castro Laboreiro","Cão de Gado Transmontano","Dachshund","Dalmatian","Dandie Dinmont Terrier","Danish-Swedish Farmdog","Denmark Feist","Dingo","Doberman Pinscher","Dogo Argentino","Dogo Guatemalteco","Dogo Sardesco","Dogue Brasileiro","Dogue de Bordeaux","Drentse Patrijshond","Drever","Dunker","Dutch Shepherd","Dutch Smoushond","East European Shepherd","East Siberian Laika","English Cocker Spaniel","English Foxhound","English Mastiff","English Setter","English Shepherd","English Springer Spaniel","English Toy Terrier","Entlebucher Mountain Dog","Estonian Hound","Estrela Mountain Dog","Eurasier","Field Spaniel","Fila Brasileiro","Finnish Hound","Finnish Lapphund","Finnish Spitz","Flat-Coated Retriever","French Bulldog","French Spaniel","Galgo Español","Galician Shepherd Dog","Garafian Shepherd","Gascon Saintongeois","Georgian Shepherd","German Hound","German Longhaired Pointer","German Pinscher","German Roughhaired Pointer","German Shepherd Dog","German Shorthaired Pointer","German Spaniel","German Spitz","German Wirehaired Pointer","Giant Schnauzer","Glen of Imaal Terrier","Golden Retriever","Gordon Setter","Gończy Polski","Grand Anglo-Français Blanc et Noir","Grand Anglo-Français Blanc et Orange","Grand Anglo-Français Tricolore","Grand Basset Griffon Vendéen","Grand Bleu de Gascogne","Grand Griffon Vendéen","Great Dane","Greater Swiss Mountain Dog","Greek Harehound","Greek Shepherd","Greenland Dog","Greyhound","Griffon Bleu de Gascogne","Griffon Fauve de Bretagne","Griffon Nivernais","Gull Dong","Gull Terrier","Hamiltonstövare","Hanover Hound","Harrier","Havanese","Hierran Wolfdog","Hokkaido","Hovawart","Huntaway","Hygen Hound","Hällefors Elkhound","Ibizan Hound","Icelandic Sheepdog","Indian Spitz","Indian pariah dog","Irish Red and White Setter","Irish Setter","Irish Terrier","Irish Water Spaniel","Irish Wolfhound","Istrian Coarse-haired Hound","Istrian Shorthaired Hound","Italian Greyhound","Jack Russell Terrier","Jagdterrier","Japanese Chin","Japanese Spitz","Japanese Terrier","Jindo","Jonangi","Kai Ken","Kaikadi","Kangal Shepherd Dog","Kanni","Karakachan dog","Karelian Bear Dog","Kars","Karst Shepherd","Keeshond","Kerry Beagle","Kerry Blue Terrier","King Charles Spaniel","King Shepherd","Kintamani","Kishu","Kokoni","Kombai","Komondor","Kooikerhondje","Koolie","Koyun dog","Kromfohrländer","Kuchi","Kuvasz","Labrador Retriever","Lagotto Romagnolo","Lakeland Terrier","Lancashire Heeler","Landseer","Lapponian Herder","Large Münsterländer","Leonberger","Levriero Sardo","Lhasa Apso","Lithuanian Hound","Lupo Italiano","Löwchen","Mackenzie River Husky","Magyar agár","Mahratta Greyhound","Maltese","Manchester Terrier","Maremmano-Abruzzese Sheepdog","McNab dog","Miniature American Shepherd","Miniature Bull Terrier","Miniature Fox Terrier","Miniature Pinscher","Miniature Schnauzer","Molossus of Epirus","Montenegrin Mountain Hound","Mountain Cur","Mountain Feist","Mucuchies","Mudhol Hound","Mudi","Neapolitan Mastiff","New Guinea Singing Dog","New Zealand Heading Dog","Newfoundland","Norfolk Terrier","Norrbottenspets","Northern Inuit Dog","Norwegian Buhund","Norwegian Elkhound","Norwegian Lundehund","Norwich Terrier","Nova Scotia Duck Tolling Retriever","Old Croatian Sighthound","Old Danish Pointer","Old English Sheepdog","Old English Terrier","Olde English Bulldogge","Otterhound","Pachon Navarro","Paisley Terrier","Pampas Deerhound","Papillon","Parson Russell Terrier","Pastore della Lessinia e del Lagorai","Patagonian Sheepdog","Patterdale Terrier","Pekingese","Pembroke Welsh Corgi","Perro Majorero","Perro de Pastor Mallorquin","Perro de Presa Canario","Perro de Presa Mallorquin","Peruvian Inca Orchid","Petit Basset Griffon Vendéen","Petit Bleu de Gascogne","Phalène","Pharaoh Hound","Phu Quoc Ridgeback","Picardy Spaniel","Plott Hound","Plummer Terrier","Podenco Canario","Podenco Valenciano","Pointer","Poitevin","Polish Greyhound","Polish Hound","Polish Lowland Sheepdog","Polish Tatra Sheepdog","Pomeranian","Pont-Audemer Spaniel","Poodle","Porcelaine","Portuguese Podengo","Portuguese Pointer","Portuguese Water Dog","Posavac Hound","Pražský Krysařík","Pshdar Dog","Pudelpointer","Pug","Puli","Pumi","Pungsan Dog","Pyrenean Mastiff","Pyrenean Mountain Dog","Pyrenean Sheepdog","Rafeiro do Alentejo","Rajapalayam","Rampur Greyhound","Rat Terrier","Ratonero Bodeguero Andaluz","Ratonero Mallorquin","Ratonero Murciano de Huerta","Ratonero Valenciano","Redbone Coonhound","Rhodesian Ridgeback","Romanian Mioritic Shepherd Dog","Romanian Raven Shepherd Dog","Rottweiler","Rough Collie","Russian Spaniel","Russian Toy","Russo-European Laika","Saarloos Wolfdog","Sabueso Español","Saint Bernard","Saint Hubert Jura Hound","Saint-Usuge Spaniel","Saluki","Samoyed","Sapsali","Sarabi dog","Sardinian Shepherd Dog","Schapendoes","Schillerstövare","Schipperke","Schweizer Laufhund","Schweizerischer Niederlaufhund","Scottish Deerhound","Scottish Terrier","Sealyham Terrier","Segugio Italiano","Segugio Maremmano","Segugio dell'Appennino","Seppala Siberian Sleddog","Serbian Hound","Serbian Tricolour Hound","Serrano Bulldog","Shar Pei","Shetland Sheepdog","Shiba Inu","Shih Tzu","Shikoku","Shiloh Shepherd","Siberian Husky","Silken Windhound","Silky Terrier","Sinhala Hound","Skye Terrier","Sloughi","Slovakian Wirehaired Pointer","Slovenský Cuvac","Slovenský Kopov","Smalandstövare","Small Greek domestic dog","Small Münsterländer","Smooth Collie","Smooth Fox Terrier","Soft-Coated Wheaten Terrier","South Russian Ovcharka","Spanish Mastiff","Spanish Water Dog","Spinone Italiano","Sporting Lucas Terrier","Stabyhoun","Staffordshire Bull Terrier","Standard Schnauzer","Stephens Stock","Styrian Coarse-haired Hound","Sussex Spaniel","Swedish Elkhound","Swedish Lapphund","Swedish Vallhund","Swedish White Elkhound","Taigan","Taiwan Dog","Tamaskan Dog","Teddy Roosevelt Terrier","Telomian","Tenterfield Terrier","Terrier Brasileiro","Thai Bangkaew Dog","Thai Ridgeback","Tibetan Mastiff","Tibetan Spaniel","Tibetan Terrier","Tornjak","Tosa","Toy Fox Terrier","Toy Manchester Terrier","Transylvanian Hound","Treeing Cur","Treeing Feist","Treeing Tennessee Brindle","Treeing Walker Coonhound","Trigg Hound","Tyrolean Hound","Vikhan","Villano de Las Encartaciones","Villanuco de Las Encartaciones","Vizsla","Volpino Italiano","Weimaraner","Welsh Sheepdog","Welsh Springer Spaniel","Welsh Terrier","West Highland White Terrier","West Siberian Laika","Westphalian Dachsbracke","Wetterhoun","Whippet","White Shepherd","White Swiss Shepherd Dog","Wire Fox Terrier","Wirehaired Pointing Griffon","Wirehaired Vizsla","Xiasi Dog","Xoloitzcuintli","Yakutian Laika","Yorkshire Terrier","Šarplaninac"],fish:["Alaska pollock","Albacore","Amur catfish","Araucanian herring","Argentine hake","Asari","Asian swamp eel","Atlantic cod","Atlantic herring","Atlantic horse mackerel","Atlantic mackerel","Atlantic menhaden","Atlantic salmon","Bigeye scad","Bigeye tuna","Bighead carp","Black carp","Blood cockle","Blue swimming crab","Blue whiting","Bombay-duck","Bonga shad","California pilchard","Cape horse mackerel","Capelin","Catla","Channel catfish","Chilean jack mackerel","Chinese perch","Chinese softshell turtle","Chub mackerel","Chum salmon","Common carp","Crucian carp","Daggertooth pike conger","European anchovy","European pilchard","European sprat","Filipino Venus","Gazami crab","Goldstripe sardinella","Grass carp","Gulf menhaden","Haddock","Hilsa shad","Indian mackerel","Indian oil sardine","Iridescent shark","Japanese anchovy","Japanese cockle","Japanese common catfish","Japanese flying squid","Japanese jack mackerel","Japanese littleneck","Japanese pilchard","Jumbo flying squid","Kawakawa","Korean bullhead","Largehead hairtail","Longtail tuna","Madeiran sardinella","Mandarin fish","Milkfish","Mrigal carp","Narrow-barred Spanish mackerel","Nile perch","Nile tilapia","North Pacific hake","Northern snakehead","Pacific anchoveta","Pacific cod","Pacific herring","Pacific sand lance","Pacific sandlance","Pacific saury","Pacific thread herring","Peruvian anchoveta","Pink salmon","Pollock","Pond loach","Rainbow trout","Rohu","Round sardinella","Short mackerel","Silver carp","Silver cyprinid","Skipjack tuna","Southern African anchovy","Southern rough shrimp","Whiteleg shrimp","Wuchang bream","Yellow croaker","Yellowfin tuna","Yellowhead catfish","Yellowstripe scad"],horse:["Abaco Barb","Abtenauer","Abyssinian","Aegidienberger","Akhal-Teke","Albanian Horse","Altai Horse","Altèr Real","American Albino","American Cream Draft","American Indian Horse","American Paint Horse","American Quarter Horse","American Saddlebred","American Warmblood","Andalusian Horse","Andravida Horse","Anglo-Arabian","Anglo-Arabo-Sardo","Anglo-Kabarda","Appaloosa","AraAppaloosa","Arabian Horse","Ardennes Horse","Arenberg-Nordkirchen","Argentine Criollo","Asian wild Horse","Assateague Horse","Asturcón","Augeron","Australian Brumby","Australian Draught Horse","Australian Stock Horse","Austrian Warmblood","Auvergne Horse","Auxois","Azerbaijan Horse","Azteca Horse","Baise Horse","Bale","Balearic Horse","Balikun Horse","Baluchi Horse","Banker Horse","Barb Horse","Bardigiano","Bashkir Curly","Basque Mountain Horse","Bavarian Warmblood","Belgian Half-blood","Belgian Horse","Belgian Warmblood ","Bhutia Horse","Black Forest Horse","Blazer Horse","Boerperd","Borana","Boulonnais Horse","Brabant","Brandenburger","Brazilian Sport Horse","Breton Horse","Brumby","Budyonny Horse","Burguete Horse","Burmese Horse","Byelorussian Harness Horse","Calabrese Horse","Camargue Horse","Camarillo White Horse","Campeiro","Campolina","Canadian Horse","Canadian Pacer","Carolina Marsh Tacky","Carthusian Horse","Caspian Horse","Castilian Horse","Castillonnais","Catria Horse","Cavallo Romano della Maremma Laziale","Cerbat Mustang","Chickasaw Horse","Chilean Corralero","Choctaw Horse","Cleveland Bay","Clydesdale Horse","Cob","Coldblood Trotter","Colonial Spanish Horse","Colorado Ranger","Comtois Horse","Corsican Horse","Costa Rican Saddle Horse","Cretan Horse","Criollo Horse","Croatian Coldblood","Cuban Criollo","Cumberland Island Horse","Curly Horse","Czech Warmblood","Daliboz","Danish Warmblood","Danube Delta Horse","Dole Gudbrandsdal","Don","Dongola Horse","Draft Trotter","Dutch Harness Horse","Dutch Heavy Draft","Dutch Warmblood","Dzungarian Horse","East Bulgarian","East Friesian Horse","Estonian Draft","Estonian Horse","Falabella","Faroese","Finnhorse","Fjord Horse","Fleuve","Florida Cracker Horse","Foutanké","Frederiksborg Horse","Freiberger","French Trotter","Friesian Cross","Friesian Horse","Friesian Sporthorse","Furioso-North Star","Galiceño","Galician Pony","Gelderland Horse","Georgian Grande Horse","German Warmblood","Giara Horse","Gidran","Groningen Horse","Gypsy Horse","Hackney Horse","Haflinger","Hanoverian Horse","Heck Horse","Heihe Horse","Henson Horse","Hequ Horse","Hirzai","Hispano-Bretón","Holsteiner Horse","Horro","Hungarian Warmblood","Icelandic Horse","Iomud","Irish Draught","Irish Sport Horse sometimes called Irish Hunter","Italian Heavy Draft","Italian Trotter","Jaca Navarra","Jeju Horse","Jutland Horse","Kabarda Horse","Kafa","Kaimanawa Horses","Kalmyk Horse","Karabair","Karabakh Horse","Karachai Horse","Karossier","Kathiawari","Kazakh Horse","Kentucky Mountain Saddle Horse","Kiger Mustang","Kinsky Horse","Kisber Felver","Kiso Horse","Kladruber","Knabstrupper","Konik","Kundudo","Kustanair","Kyrgyz Horse","Latvian Horse","Lipizzan","Lithuanian Heavy Draught","Lokai","Losino Horse","Lusitano","Lyngshest","M'Bayar","M'Par","Mallorquín","Malopolski","Mangalarga","Mangalarga Marchador","Maremmano","Marismeño Horse","Marsh Tacky","Marwari Horse","Mecklenburger","Menorquín","Messara Horse","Metis Trotter","Mezőhegyesi Sport Horse","Međimurje Horse","Miniature Horse","Misaki Horse","Missouri Fox Trotter","Monchina","Mongolian Horse","Mongolian Wild Horse","Monterufolino","Morab","Morgan Horse","Mountain Pleasure Horse","Moyle Horse","Murakoz Horse","Murgese","Mustang Horse","Mérens Horse","Namib Desert Horse","Nangchen Horse","National Show Horse","Nez Perce Horse","Nivernais Horse","Nokota Horse","Noma","Nonius Horse","Nooitgedachter","Nordlandshest","Noriker Horse","Norman Cob","North American Single-Footer Horse","North Swedish Horse","Norwegian Coldblood Trotter","Norwegian Fjord","Novokirghiz","Oberlander Horse","Ogaden","Oldenburg Horse","Orlov trotter","Ostfriesen","Paint","Pampa Horse","Paso Fino","Pentro Horse","Percheron","Persano Horse","Peruvian Paso","Pintabian","Pleven Horse","Poitevin Horse","Posavac Horse","Pottok","Pryor Mountain Mustang","Przewalski's Horse","Pura Raza Española","Purosangue Orientale","Qatgani","Quarab","Quarter Horse","Racking Horse","Retuerta Horse","Rhenish German Coldblood","Rhinelander Horse","Riwoche Horse","Rocky Mountain Horse","Romanian Sporthorse","Rottaler","Russian Don","Russian Heavy Draft","Russian Trotter","Saddlebred","Salerno Horse","Samolaco Horse","San Fratello Horse","Sarcidano Horse","Sardinian Anglo-Arab","Schleswig Coldblood","Schwarzwälder Kaltblut","Selale","Sella Italiano","Selle Français","Shagya Arabian","Shan Horse","Shire Horse","Siciliano Indigeno","Silesian Horse","Sokolsky Horse","Sorraia","South German Coldblood","Soviet Heavy Draft","Spanish Anglo-Arab","Spanish Barb","Spanish Jennet Horse","Spanish Mustang","Spanish Tarpan","Spanish-Norman Horse","Spiti Horse","Spotted Saddle Horse","Standardbred Horse","Suffolk Punch","Swedish Ardennes","Swedish Warmblood","Swedish coldblood trotter","Swiss Warmblood","Taishū Horse","Takhi","Tawleed","Tchernomor","Tennessee Walking Horse","Tersk Horse","Thoroughbred","Tiger Horse","Tinker Horse","Tolfetano","Tori Horse","Trait Du Nord","Trakehner","Tsushima","Tuigpaard","Ukrainian Riding Horse","Unmol Horse","Uzunyayla","Ventasso Horse","Virginia Highlander","Vlaamperd","Vladimir Heavy Draft","Vyatka","Waler","Waler Horse","Walkaloosa","Warlander","Warmblood","Welsh Cob","Westphalian Horse","Wielkopolski","Württemberger","Xilingol Horse","Yakutian Horse","Yili Horse","Yonaguni Horse","Zaniskari","Zhemaichu","Zweibrücker","Žemaitukas"],insect:["Acacia-ants","Acorn-plum gall","Aerial yellowjacket","Africanized honey bee","Allegheny mound ant","Almond stone wasp","Ant","Arboreal ant","Argentine ant","Asian paper wasp","Baldfaced hornet","Bee","Bigheaded ant","Black and yellow mud dauber","Black carpenter ant","Black imported fire ant","Blue horntail woodwasp","Blue orchard bee","Braconid wasp","Bumble bee","Carpenter ant","Carpenter wasp","Chalcid wasp","Cicada killer","Citrus blackfly parasitoid","Common paper wasp","Crazy ant","Cuckoo wasp","Cynipid gall wasp","Eastern Carpenter bee","Eastern yellowjacket","Elm sawfly","Encyrtid wasp","Erythrina gall wasp","Eulophid wasp","European hornet","European imported fire ant","False honey ant","Fire ant","Forest bachac","Forest yellowjacket","German yellowjacket","Ghost ant","Giant ichneumon wasp","Giant resin bee","Giant wood wasp","Golden northern bumble bee","Golden paper wasp","Gouty oak gall","Grass Carrying Wasp","Great black wasp","Great golden digger wasp","Hackberry nipple gall parasitoid","Honey bee","Horned oak gall","Horse guard wasp","Hunting wasp","Ichneumonid wasp","Keyhole wasp","Knopper gall","Large garden bumble bee","Large oak-apple gall","Leafcutting bee","Little fire ant","Little yellow ant","Long-horned bees","Long-legged ant","Macao paper wasp","Mallow bee","Marble gall","Mossyrose gall wasp","Mud-daubers","Multiflora rose seed chalcid","Oak apple gall wasp","Oak rough bulletgall wasp","Oak saucer gall","Oak shoot sawfly","Odorous house ant","Orange-tailed bumble bee","Orangetailed potter wasp","Oriental chestnut gall wasp","Paper wasp","Pavement ant","Pigeon tremex","Pip gall wasp","Prairie yellowjacket","Pteromalid wasp","Pyramid ant","Raspberry Horntail","Red ant","Red carpenter ant","Red harvester ant","Red imported fire ant","Red wasp","Red wood ant","Red-tailed wasp","Reddish carpenter ant","Rough harvester ant","Sawfly parasitic wasp","Scale parasitoid","Silky ant","Sirex woodwasp","Siricid woodwasp","Smaller yellow ant","Southeastern blueberry bee","Southern fire ant","Southern yellowjacket","Sphecid wasp","Stony gall","Sweat bee","Texas leafcutting ant","Tiphiid wasp","Torymid wasp","Tramp ant","Valentine ant","Velvet ant","Vespid wasp","Weevil parasitoid","Western harvester ant","Western paper wasp","Western thatching ant","Western yellowjacket","White-horned horntail","Willow shoot sawfly","Woodwasp","Wool sower gall maker","Yellow Crazy Ant","Yellow and black potter wasp","Yellow-horned horntail"],lion:["Asiatic Lion","Barbary Lion","Cape lion","Masai Lion","Northeast Congo Lion","Transvaal lion","West African Lion"],rabbit:["American","American Chinchilla","American Fuzzy Lop","American Sable","Argente Brun","Belgian Hare","Beveren","Blanc de Hotot","Britannia Petite","Californian","Champagne D’Argent","Checkered Giant","Cinnamon","Crème D’Argent","Dutch","Dwarf Hotot","English Angora","English Lop","English Spot","Flemish Giant","Florida White","French Angora","French Lop","Giant Angora","Giant Chinchilla","Harlequin","Havana","Himalayan","Holland Lop","Jersey Wooly","Lilac","Lionhead","Mini Lop","Mini Rex","Mini Satin","Netherland Dwarf","New Zealand","Palomino","Polish","Rex","Rhinelander","Satin","Satin Angora","Silver","Silver Fox","Silver Marten","Standard Chinchilla","Tan","Thrianta"],rodent:["Abrocoma","Abrocoma schistacea","Aconaemys","Aconaemys porteri","African brush-tailed porcupine","Andean mountain cavy","Argentine tuco-tuco","Ashy chinchilla rat","Asiatic brush-tailed porcupine","Atherurus","Azara's agouti","Azara's tuco-tuco","Bahia porcupine","Bathyergus","Bathyergus janetta","Bathyergus suillus","Bennett's chinchilla rat","Bicolored-spined porcupine","Black agouti","Black dwarf porcupine","Black-rumped agouti","Black-tailed hairy dwarf porcupine","Bolivian chinchilla rat","Bolivian tuco-tuco","Bonetto's tuco-tuco","Brandt's yellow-toothed cavy","Brazilian guinea pig","Brazilian porcupine","Brazilian tuco-tuco","Bridge's degu","Brown hairy dwarf porcupine","Budin's chinchilla rat, A. budini","Cape porcupine","Catamarca tuco-tuco","Cavia","Central American agouti","Chacoan tuco-tuco","Chilean rock rat","Chinchilla","Coendou","Coiban agouti","Colburn's tuco-tuco","Collared tuco-tuco","Common degu","Common yellow-toothed cavy","Conover's tuco-tuco","Coruro","Crested agouti","Crested porcupine","Cryptomys","Cryptomys bocagei","Cryptomys damarensis","Cryptomys foxi","Cryptomys hottentotus","Cryptomys mechowi","Cryptomys ochraceocinereus","Cryptomys zechi","Ctenomys","Cuniculus","Cuscomys","Cuscomys ashanika","Dactylomys","Dactylomys boliviensis","Dactylomys dactylinus","Dactylomys peruanus","Dasyprocta","Domestic guinea pig","Emily's tuco-tuco","Erethizon","Famatina chinchilla rat","Frosted hairy dwarf porcupine","Fukomys","Fukomys amatus","Fukomys anselli","Fukomys bocagei","Fukomys damarensis","Fukomys darlingi","Fukomys foxi","Fukomys ilariae","Fukomys kafuensis","Fukomys mechowii","Fukomys micklemi","Fukomys occlusus","Fukomys ochraceocinereus","Fukomys whytei","Fukomys zechi","Furtive tuco-tuco","Galea","Georychus","Georychus capensis","Golden viscacha-rat","Goya tuco-tuco","Greater guinea pig","Green acouchi","Haig's tuco-tuco","Heliophobius","Heliophobius argenteocinereus","Heterocephalus","Heterocephalus glaber","Highland tuco-tuco","Hystrix","Indian porcupine","Isla Mocha degu","Kalinowski agouti","Kannabateomys","Kannabateomys amblyonyx","Lagidium","Lagostomus","Lewis' tuco-tuco","Long-tailed chinchilla","Long-tailed porcupine","Los Chalchaleros' viscacha-rat","Lowland paca","Magellanic tuco-tuco","Malayan porcupine","Maule tuco-tuco","Mendoza tuco-tuco","Mexican agouti","Mexican hairy dwarf porcupine","Microcavia","Montane guinea pig","Moon-toothed degu","Mottled tuco-tuco","Mountain degu","Mountain paca","Mountain viscacha-rat","Myoprocta","Natterer's tuco-tuco","North American porcupine","Northern viscacha","Octodon","Octodontomys","Octomys","Olallamys","Olallamys albicauda","Olallamys edax","Orinoco agouti","Paraguaian hairy dwarf porcupine","Pearson's tuco-tuco","Peruvian tuco-tuco","Philippine porcupine","Pipanacoctomys","Plains viscacha","Plains viscacha-rat","Porteous' tuco-tuco","Punta de Vacas chinchilla rat","Red acouchi","Red-rumped agouti","Reddish tuco-tuco","Rio Negro tuco-tuco","Robust tuco-tuco","Roosmalen's dwarf porcupine","Rothschild's porcupine","Ruatan Island agouti","Sage's rock rat","Salinoctomys","Salta tuco-tuco","San Luis tuco-tuco","Santa Catarina's guinea pig","Shiny guinea pig","Shipton's mountain cavy","Short-tailed chinchilla","Silky tuco-tuco","Social tuco-tuco","Southern mountain cavy","Southern tuco-tuco","Southern viscacha","Spalacopus","Spix's yellow-toothed cavy","Steinbach's tuco-tuco","Streaked dwarf porcupine","Strong tuco-tuco","Stump-tailed porcupine","Sumatran porcupine","Sunda porcupine","Talas tuco-tuco","Tawny tuco-tuco","Thick-spined porcupine","Tiny tuco-tuco","Trichys","Tucuman tuco-tuco","Tympanoctomys","Uspallata chinchilla rat","White-toothed tuco-tuco","Wolffsohn's viscacha"],snake:["Abaco Island boa","Aesculapian snake","African beaked snake","African puff adder","African rock python","African twig snake","African wolf snake","Amazon tree boa","Amazonian palm viper","American Vine Snake","American copperhead","Amethystine python","Anaconda","Andaman cat snake","Andaman cobra","Angolan python","Annulated sea snake","Arabian cobra","Arafura file snake","Arizona black rattlesnake","Arizona coral snake","Aruba rattlesnake","Asian Vine Snake, Whip Snake","Asian cobra","Asian keelback","Asian pipe snake","Asp","Asp viper","Assam keelback","Australian copperhead","Australian scrub python","Baird's rat snake","Baja California lyresnake","Ball Python","Ball python","Bamboo pitviper","Bamboo viper","Banded Flying Snake","Banded cat-eyed snake","Banded krait","Banded pitviper","Banded water cobra","Barbour's pit viper","Barred wolf snake","Beaked sea snake","Beauty rat snake","Beddome's cat snake","Beddome's coral snake","Bimini racer","Bird snake","Bismarck ringed python","Black headed python","Black krait","Black mamba","Black rat snake","Black snake","Black tree cobra","Black-banded trinket snake","Black-headed snake","Black-necked cobra","Black-necked spitting cobra","Black-speckled palm-pitviper","Black-striped keelback","Black-tailed horned pit viper","Blanding's tree snake","Blind snake","Blonde hognose snake","Blood python","Blue krait","Blunt-headed tree snake","Bluntnose viper","Boa","Boa constrictor","Bocourt's water snake","Boelen python","Boiga","Bolivian anaconda","Boomslang","Bornean pitviper","Borneo short-tailed python","Brahminy blind snake","Brazilian coral snake","Brazilian mud Viper","Brazilian smooth snake","Bredl's python","Brongersma's pitviper","Brown snake","Brown spotted pitviper[4]","Brown tree snake","Brown water python","Brown white-lipped python","Buff striped keelback","Bull snake","Burmese keelback","Burmese krait","Burmese python","Burrowing cobra","Burrowing viper","Bush viper","Bushmaster","Buttermilk racer","Calabar python","California kingsnake","Canebrake","Cantil","Cantor's pitviper","Cape cobra","Cape coral snake","Cape gopher snake","Carpet viper","Cascabel","Caspian cobra","Cat snake","Cat-eyed night snake","Cat-eyed snake","Central American lyre snake","Central ranges taipan","Centralian carpet python","Ceylon krait","Chappell Island tiger snake","Checkered garter snake","Checkered keelback","Chicken snake","Chihuahuan ridge-nosed rattlesnake","Children's python","Chinese tree viper","Coachwhip snake","Coastal carpet python","Coastal taipan","Cobra","Collett's snake","Colorado desert sidewinder","Common adder","Common cobra","Common garter snake","Common ground snake","Common keelback","Common lancehead","Common tiger snake","Common worm snake","Congo snake","Congo water cobra","Copperhead","Coral snake","Corn snake","Coronado Island rattlesnake","Cottonmouth","Crossed viper","Crowned snake","Cuban boa","Cuban wood snake","Cyclades blunt-nosed viper","Dauan Island water python","De Schauensee's anaconda","Death Adder","Desert death adder","Desert kingsnake","Desert woma python","Diamond python","Dog-toothed cat snake","Down's tiger snake","Dubois's sea snake","Dumeril's boa","Durango rock rattlesnake","Dusky pigmy rattlesnake","Dusty hognose snake","Dwarf beaked snake","Dwarf boa","Dwarf pipe snake","Dwarf sand adder","Eastern brown snake","Eastern coral snake","Eastern diamondback rattlesnake","Eastern green mamba","Eastern hognose snake","Eastern lyre snake","Eastern mud snake","Eastern racer","Eastern tiger snake","Eastern water cobra","Eastern yellowbelly sad racer","Egg-eater","Egyptian asp","Egyptian cobra","Elegant pitviper","Emerald tree boa","Equatorial spitting cobra","European asp","European smooth snake","Eyelash palm-pitviper","Eyelash pit viper","Eyelash viper","False cobra","False horned viper","False water cobra","Fan-Si-Pan horned pitviper","Fea's viper","Fer-de-lance","Fierce snake","Fifty pacer","Fishing snake","Flat-nosed pitviper","Flinders python","Flying snake","Forest cobra","Forest flame snake","Forsten's cat snake","Fox snake, three species of Pantherophis","Gaboon viper","Garter snake","Giant Malagasy hognose snake","Godman's pit viper","Gold tree cobra","Gold-ringed cat snake","Golden tree snake","Grand Canyon rattlesnake","Grass snake","Gray cat snake","Great Basin rattlesnake","Great Lakes bush viper","Great Plains rat snake","Green anaconda","Green cat-eyed snake","Green mamba","Green palm viper","Green rat snake","Green snake","Green tree pit viper","Green tree python","Grey Lora","Grey-banded kingsnake","Ground snake","Guatemalan palm viper","Guatemalan tree viper","Habu","Habu pit viper","Hagen's pitviper","Hairy bush viper","Halmahera python","Hardwicke's sea snake","Harlequin coral snake","High Woods coral snake","Hill keelback","Himalayan keelback","Hogg Island boa","Hognose snake","Hognosed viper","Honduran palm viper","Hook Nosed Sea Snake","Hopi rattlesnake","Horned adder","Horned desert viper","Horned viper","Horseshoe pitviper","Hundred pacer","Hutton's tree viper","Ikaheka snake","Indian cobra","Indian flying snake","Indian krait","Indian python","Indian tree viper","Indigo snake","Indochinese spitting cobra","Indonesian water python","Inland carpet python","Inland taipan","Jamaican Tree Snake","Jamaican boa","Jan's hognose snake","Japanese forest rat snake","Japanese rat snake","Japanese striped snake","Javan spitting cobra","Jerdon's pitviper","Jumping viper","Jungle carpet python","Kanburian pit viper","Kaulback's lance-headed pitviper","Kayaudi dwarf reticulated python","Kaznakov's viper","Keelback","Kham Plateau pitviper","Khasi Hills keelback","King Island tiger snake","King brown","King cobra","King rat snake","King snake","Krait","Krefft's tiger snake","Lance-headed rattlesnake","Lancehead","Large shield snake","Large-eyed pitviper","Large-scaled tree viper","Leaf viper","Leaf-nosed viper","Lesser black krait","Levant viper","Long-nosed adder","Long-nosed tree snake","Long-nosed viper","Long-nosed whip snake","Long-tailed rattlesnake","Longnosed worm snake","Lora","Lyre snake","Machete savane","Macklot's python","Madagascar ground boa","Madagascar tree boa","Malabar rock pitviper","Malayan krait","Malayan long-glanded coral snake","Malayan pit viper","Malcolm's tree viper","Mamba","Mamushi","Manchurian Black Water Snake","Mandalay cobra","Mandarin rat snake","Mangrove pit viper","Mangrove snake","Mangshan pitviper","Many-banded krait","Many-banded tree snake","Many-horned adder","Many-spotted cat snake","Massasauga rattlesnake","McMahon's viper","Mexican black kingsnake","Mexican green rattlesnake","Mexican hognose snake","Mexican palm-pitviper","Mexican parrot snake","Mexican racer","Mexican vine snake","Mexican west coast rattlesnake","Midget faded rattlesnake","Milk snake","Moccasin snake","Modest keelback","Mojave desert sidewinder","Mojave rattlesnake","Mole viper","Mollucan python","Moluccan flying snake","Montpellier snake","Motuo bamboo pitviper","Mountain adder","Mozambique spitting cobra","Mud adder","Mud snake","Mussurana","Namaqua dwarf adder","Namib dwarf sand adder","Narrowhead Garter Snake","New Guinea carpet python","Nichell snake","Nicobar Island keelback","Nicobar bamboo pitviper","Night snake","Nightingale adder","Nilgiri keelback","Nitsche's bush viper","Nitsche's tree viper","North Philippine cobra","North eastern king snake","Northeastern hill krait","Northern black-tailed rattlesnake","Northern tree snake","Northern water snake","Northern white-lipped python","Northwestern carpet python","Nose-horned viper","Nubian spitting cobra","Oaxacan small-headed rattlesnake","Oenpelli python","Olive python","Olive sea snake","Orange-collared keelback","Ornate flying snake","Palestine viper","Pallas' viper","Palm viper","Papuan python","Paradise flying snake","Parrot snake","Patchnose snake","Paupan taipan","Pelagic sea snake","Peninsula tiger snake","Peringuey's adder","Perrotet's shieldtail snake","Persian rat snake","Philippine cobra","Philippine pitviper","Pine snake","Pipe snake","Pit viper","Pointed-scaled pit viper[5]","Pope's tree viper","Portuguese viper","Prairie kingsnake","Puerto Rican boa","Puff adder","Pygmy python","Python","Queen snake","Racer","Raddysnake","Rainbow boa","Rat snake","Rattler","Rattlesnake","Red blood python","Red diamond rattlesnake","Red spitting cobra","Red-backed rat snake","Red-bellied black snake","Red-headed krait","Red-necked keelback","Red-tailed bamboo pitviper","Red-tailed boa","Red-tailed pipe snake","Reticulated python","Rhinoceros viper","Rhombic night adder","Ribbon snake","Rinkhals","Rinkhals cobra","River jack","Rosy boa","Rough green snake","Rough-scaled bush viper","Rough-scaled python","Rough-scaled tree viper","Royal python","Rubber boa","Rufous beaked snake","Rungwe tree viper","San Francisco garter snake","Sand adder","Sand boa","Savu python","Saw-scaled viper","Scarlet kingsnake","Schlegel's viper","Schultze's pitviper","Sea snake","Sedge viper","Selayer reticulated python","Sharp-nosed viper","Shield-nosed cobra","Shield-tailed snake","Siamese palm viper","Side-striped palm-pitviper","Sidewinder","Sikkim keelback","Sinai desert cobra","Sind krait","Small-eyed snake","Smooth green snake","Smooth snake","Snorkel viper","Snouted cobra","Sonoran sidewinder","South American hognose snake","South eastern corn snake","Southern Indonesian spitting cobra","Southern Pacific rattlesnake","Southern Philippine cobra","Southern black racer","Southern white-lipped python","Southwestern black spitting cobra","Southwestern blackhead snake","Southwestern carpet python","Southwestern speckled rattlesnake","Speckle-bellied keelback","Speckled kingsnake","Spectacled cobra","Spiny bush viper","Spitting cobra","Spotted python","Sri Lankan pit viper","Stejneger's bamboo pitviper","Stiletto snake","Stimson's python","Stoke's sea snake","Storm water cobra","Striped snake","Sumatran short-tailed python","Sumatran tree viper","Sunbeam snake","Taipan","Taiwan cobra","Tan racer","Tancitaran dusky rattlesnake","Tanimbar python","Tasmanian tiger snake","Tawny cat snake","Temple pit viper","Temple viper","Tentacled snake","Texas Coral Snake","Texas blind snake","Texas garter snake","Texas lyre snake","Texas night snake","Thai cobra","Three-lined ground snake","Tibetan bamboo pitviper","Tic polonga","Tiger pit viper","Tiger rattlesnake","Tiger snake","Tigre snake","Timber rattlesnake","Timor python","Titanboa","Tree boa","Tree snake","Tree viper","Trinket snake","Tropical rattlesnake","Twig snake","Twin Headed King Snake","Twin-Barred tree snake","Twin-spotted rat snake","Twin-spotted rattlesnake","Undulated pit viper","Uracoan rattlesnake","Ursini's viper","Urutu","Vine snake","Viper","Viper Adder","Vipera ammodytes","Wagler's pit viper","Wart snake","Water adder","Water moccasin","Water snake","West Indian racer","Western blind snake","Western carpet python","Western coral snake","Western diamondback rattlesnake","Western green mamba","Western ground snake","Western hog-nosed viper","Western mud snake","Western tiger snake","Western woma python","Wetar Island python","Whip snake","White-lipped keelback","White-lipped python","White-lipped tree viper","Wirot's pit viper","Wolf snake","Woma python","Worm snake","Wutu","Wynaad keelback","Yarara","Yellow anaconda","Yellow-banded sea snake","Yellow-bellied sea snake","Yellow-lined palm viper","Yellow-lipped sea snake","Yellow-striped rat snake","Yunnan keelback","Zebra snake","Zebra spitting cobra"],type:["bat","bear","bee","bird","butterfly","cat","cow","crocodile","deer","dog","dolphin","eagle","elephant","fish","flamingo","fox","frog","gecko","giraffe","gorilla","hamster","hippopotamus","horse","kangaroo","koala","lion","monkey","ostrich","panda","parrot","peacock","penguin","polar bear","rabbit","rhinoceros","sea lion","shark","snake","squirrel","tiger","turtle","whale","wolf","zebra"]},app:{author:["{{person.name}}","{{company.name}}"],name:["Redhold","Treeflex","Trippledex","Kanlam","Bigtax","Daltfresh","Toughjoyfax","Mat Lam Tam","Otcom","Tres-Zap","Y-Solowarm","Tresom","Voltsillam","Biodex","Greenlam","Viva","Matsoft","Temp","Zoolab","Subin","Rank","Job","Stringtough","Tin","It","Home Ing","Zamit","Sonsing","Konklab","Alpha","Latlux","Voyatouch","Alphazap","Holdlamis","Zaam-Dox","Sub-Ex","Quo Lux","Bamity","Ventosanzap","Lotstring","Hatity","Tempsoft","Overhold","Fixflex","Konklux","Zontrax","Tampflex","Span","Namfix","Transcof","Stim","Fix San","Sonair","Stronghold","Fintone","Y-find","Opela","Lotlux","Ronstring","Zathin","Duobam","Keylex"],version:["0.#.#","0.##","#.##","#.#","#.#.#"]},cell_phone:{formats:["###-###-####","(###) ###-####","1-###-###-####","###.###.####"]},color:{human:["azure","black","blue","cyan","fuchsia","gold","green","grey","indigo","ivory","lavender","lime","magenta","maroon","mint green","olive","orange","orchid","pink","plum","purple","red","salmon","silver","sky blue","tan","teal","turquoise","violet","white","yellow"]},commerce:{department:["Automotive","Baby","Beauty","Books","Clothing","Computers","Electronics","Games","Garden","Grocery","Health","Home","Industrial","Jewelry","Kids","Movies","Music","Outdoors","Shoes","Sports","Tools","Toys"],product_description:["Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals","Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles","Carbonite web goalkeeper gloves are ergonomically designed to give easy fit","Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support","New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016","New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart","The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design","The Football Is Good For Training And Recreational Purposes","The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J","The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive","The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients","The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality"],product_name:{adjective:["Awesome","Bespoke","Electronic","Elegant","Ergonomic","Fantastic","Generic","Gorgeous","Handcrafted","Handmade","Incredible","Intelligent","Licensed","Luxurious","Modern","Oriental","Practical","Recycled","Refined","Rustic","Sleek","Small","Tasty","Unbranded"],material:["Bronze","Concrete","Cotton","Fresh","Frozen","Granite","Metal","Plastic","Rubber","Soft","Steel","Wooden"],product:["Bacon","Ball","Bike","Car","Chair","Cheese","Chicken","Chips","Computer","Fish","Gloves","Hat","Keyboard","Mouse","Pants","Pizza","Salad","Sausages","Shirt","Shoes","Soap","Table","Towels","Tuna"]}},company:{adjective:["Adaptive","Advanced","Ameliorated","Assimilated","Automated","Balanced","Business-focused","Centralized","Cloned","Compatible","Configurable","Cross-group","Cross-platform","Customer-focused","Customizable","De-engineered","Decentralized","Devolved","Digitized","Distributed","Diverse","Down-sized","Enhanced","Enterprise-wide","Ergonomic","Exclusive","Expanded","Extended","Face to face","Focused","Front-line","Fully-configurable","Function-based","Fundamental","Future-proofed","Grass-roots","Horizontal","Implemented","Innovative","Integrated","Intuitive","Inverse","Managed","Mandatory","Monitored","Multi-channelled","Multi-lateral","Multi-layered","Multi-tiered","Networked","Object-based","Open-architected","Open-source","Operative","Optimized","Optional","Organic","Organized","Persevering","Persistent","Phased","Polarised","Pre-emptive","Proactive","Profit-focused","Profound","Programmable","Progressive","Public-key","Quality-focused","Re-contextualized","Re-engineered","Reactive","Realigned","Reduced","Reverse-engineered","Right-sized","Robust","Seamless","Secured","Self-enabling","Sharable","Stand-alone","Streamlined","Switchable","Synchronised","Synergistic","Synergized","Team-oriented","Total","Triple-buffered","Universal","Up-sized","Upgradable","User-centric","User-friendly","Versatile","Virtual","Vision-oriented","Visionary"],buzz_adjective:["24/365","24/7","B2B","B2C","back-end","best-of-breed","bleeding-edge","bricks-and-clicks","clicks-and-mortar","collaborative","compelling","cross-media","cross-platform","customized","cutting-edge","distributed","dot-com","dynamic","e-business","efficient","end-to-end","enterprise","extensible","frictionless","front-end","global","granular","holistic","impactful","innovative","integrated","interactive","intuitive","killer","leading-edge","magnetic","mission-critical","next-generation","one-to-one","open-source","out-of-the-box","plug-and-play","proactive","real-time","revolutionary","rich","robust","scalable","seamless","sexy","sticky","strategic","synergistic","transparent","turn-key","ubiquitous","user-centric","value-added","vertical","viral","virtual","visionary","web-enabled","wireless","world-class"],buzz_noun:["ROI","action-items","applications","architectures","bandwidth","blockchains","channels","communities","content","convergence","deliverables","e-business","e-commerce","e-markets","experiences","eyeballs","functionalities","infrastructures","initiatives","interfaces","lifetime value","markets","methodologies","metrics","mindshare","models","networks","niches","paradigms","partnerships","platforms","portals","relationships","schemas","solutions","supply-chains","synergies","systems","technologies","users","web services"],buzz_verb:["aggregate","architect","benchmark","brand","cultivate","deliver","deploy","disintermediate","drive","e-enable","embrace","empower","enable","engage","engineer","enhance","envisioneer","evolve","expedite","exploit","extend","facilitate","generate","grow","harness","implement","incentivize","incubate","innovate","integrate","iterate","leverage","matrix","maximize","mesh","monetize","morph","optimize","orchestrate","productize","recontextualize","redefine","reintermediate","reinvent","repurpose","revolutionize","scale","seize","strategize","streamline","syndicate","synergize","synthesize","target","transform","transition","unleash","utilize","visualize","whiteboard"],descriptor:["24 hour","24/7","3rd generation","4th generation","5th generation","6th generation","actuating","analyzing","asymmetric","asynchronous","attitude-oriented","background","bandwidth-monitored","bi-directional","bifurcated","bottom-line","clear-thinking","client-driven","client-server","coherent","cohesive","composite","content-based","context-sensitive","contextually-based","dedicated","demand-driven","didactic","directional","discrete","disintermediate","dynamic","eco-centric","empowering","encompassing","even-keeled","executive","explicit","exuding","fault-tolerant","foreground","fresh-thinking","full-range","global","grid-enabled","heuristic","high-level","holistic","homogeneous","human-resource","hybrid","impactful","incremental","intangible","interactive","intermediate","leading edge","local","logistical","maximized","methodical","mission-critical","mobile","modular","motivating","multi-state","multi-tasking","multimedia","national","needs-based","neutral","next generation","non-volatile","object-oriented","optimal","optimizing","radical","real-time","reciprocal","regional","responsive","scalable","secondary","solution-oriented","stable","static","system-worthy","systematic","systemic","tangible","tertiary","transitional","uniform","upward-trending","user-facing","value-added","web-enabled","well-modulated","zero administration","zero defect","zero tolerance"],legal_entity_type:["Group","Inc","LLC","and Sons"],name_pattern:["{{person.last_name.generic}} - {{person.last_name.generic}}","{{person.last_name.generic}} {{company.legal_entity_type}}","{{person.last_name.generic}}, {{person.last_name.generic}} and {{person.last_name.generic}}"],noun:["Graphic Interface","Graphical User Interface","ability","access","adapter","algorithm","alliance","analyzer","application","approach","architecture","archive","array","artificial intelligence","attitude","benchmark","budgetary management","capability","capacity","challenge","circuit","collaboration","complexity","concept","conglomeration","contingency","core","customer loyalty","data-warehouse","database","definition","emulation","encoding","encryption","extranet","firmware","flexibility","focus group","forecast","frame","framework","function","functionalities","groupware","hardware","help-desk","hierarchy","hub","implementation","info-mediaries","infrastructure","initiative","installation","instruction set","interface","internet solution","intranet","knowledge base","knowledge user","leverage","local area network","matrices","matrix","methodology","middleware","migration","model","moderator","monitoring","moratorium","neural-net","open architecture","open system","orchestration","paradigm","parallelism","policy","portal","pricing structure","process improvement","product","productivity","project","projection","protocol","secured line","service-desk","software","solution","standardization","strategy","structure","success","superstructure","support","synergy","system engine","task-force","throughput","time-frame","toolset","utilisation","website","workforce"]},database:{column:["avatar","category","comment","createdAt","email","group","id","name","password","phone","status","title","token","updatedAt"]},date:{month:{wide:["April","August","December","February","January","July","June","March","May","November","October","September"],abbr:["Apr","Aug","Dec","Feb","Jan","Jul","Jun","Mar","May","Nov","Oct","Sep"]},weekday:{wide:["Friday","Monday","Saturday","Sunday","Thursday","Tuesday","Wednesday"],abbr:["Fri","Mon","Sat","Sun","Thu","Tue","Wed"]}},finance:{account_type:["Auto Loan","Checking","Credit Card","Home Loan","Investment","Money Market","Personal Loan","Savings"],credit_card:{american_express:["34##-######-####L","37##-######-####L"],diners_club:["30[0-5]#-######-###L","36##-######-###L","54##-####-####-###L"],discover:["6011-####-####-###L","6011-62##-####-####-###L","64[4-9]#-####-####-###L","64[4-9]#-62##-####-####-###L","65##-####-####-###L","65##-62##-####-####-###L"],jcb:["3528-####-####-###L","3529-####-####-###L","35[3-8]#-####-####-###L"],mastercard:["2[221-720]-####-####-###L","5[1-5]##-####-####-###L"],visa:["4###########L","4###-####-####-###L"]},currency:[{name:"UAE Dirham",code:"AED",symbol:""},{name:"Afghani",code:"AFN",symbol:"؋"},{name:"Lek",code:"ALL",symbol:"Lek"},{name:"Armenian Dram",code:"AMD",symbol:""},{name:"Netherlands Antillian Guilder",code:"ANG",symbol:"ƒ"},{name:"Kwanza",code:"AOA",symbol:""},{name:"Argentine Peso",code:"ARS",symbol:"$"},{name:"Australian Dollar",code:"AUD",symbol:"$"},{name:"Aruban Guilder",code:"AWG",symbol:"ƒ"},{name:"Azerbaijanian Manat",code:"AZN",symbol:"ман"},{name:"Convertible Marks",code:"BAM",symbol:"KM"},{name:"Barbados Dollar",code:"BBD",symbol:"$"},{name:"Taka",code:"BDT",symbol:""},{name:"Bulgarian Lev",code:"BGN",symbol:"лв"},{name:"Bahraini Dinar",code:"BHD",symbol:""},{name:"Burundi Franc",code:"BIF",symbol:""},{name:"Bermudian Dollar (customarily known as Bermuda Dollar)",code:"BMD",symbol:"$"},{name:"Brunei Dollar",code:"BND",symbol:"$"},{name:"Boliviano boliviano",code:"BOB",symbol:"Bs"},{name:"Brazilian Real",code:"BRL",symbol:"R$"},{name:"Bahamian Dollar",code:"BSD",symbol:"$"},{name:"Pula",code:"BWP",symbol:"P"},{name:"Belarusian Ruble",code:"BYN",symbol:"Rbl"},{name:"Belize Dollar",code:"BZD",symbol:"BZ$"},{name:"Canadian Dollar",code:"CAD",symbol:"$"},{name:"Congolese Franc",code:"CDF",symbol:""},{name:"Swiss Franc",code:"CHF",symbol:"CHF"},{name:"Chilean Peso",code:"CLP",symbol:"$"},{name:"Yuan Renminbi",code:"CNY",symbol:"¥"},{name:"Colombian Peso",code:"COP",symbol:"$"},{name:"Costa Rican Colon",code:"CRC",symbol:"₡"},{name:"Cuban Peso",code:"CUP",symbol:"₱"},{name:"Cape Verde Escudo",code:"CVE",symbol:""},{name:"Czech Koruna",code:"CZK",symbol:"Kč"},{name:"Djibouti Franc",code:"DJF",symbol:""},{name:"Danish Krone",code:"DKK",symbol:"kr"},{name:"Dominican Peso",code:"DOP",symbol:"RD$"},{name:"Algerian Dinar",code:"DZD",symbol:""},{name:"Egyptian Pound",code:"EGP",symbol:"£"},{name:"Nakfa",code:"ERN",symbol:""},{name:"Ethiopian Birr",code:"ETB",symbol:""},{name:"Euro",code:"EUR",symbol:"€"},{name:"Fiji Dollar",code:"FJD",symbol:"$"},{name:"Falkland Islands Pound",code:"FKP",symbol:"£"},{name:"Pound Sterling",code:"GBP",symbol:"£"},{name:"Lari",code:"GEL",symbol:""},{name:"Cedi",code:"GHS",symbol:""},{name:"Gibraltar Pound",code:"GIP",symbol:"£"},{name:"Dalasi",code:"GMD",symbol:""},{name:"Guinea Franc",code:"GNF",symbol:""},{name:"Quetzal",code:"GTQ",symbol:"Q"},{name:"Guyana Dollar",code:"GYD",symbol:"$"},{name:"Hong Kong Dollar",code:"HKD",symbol:"$"},{name:"Lempira",code:"HNL",symbol:"L"},{name:"Gourde",code:"HTG",symbol:""},{name:"Forint",code:"HUF",symbol:"Ft"},{name:"Rupiah",code:"IDR",symbol:"Rp"},{name:"New Israeli Sheqel",code:"ILS",symbol:"₪"},{name:"Bhutanese Ngultrum",code:"BTN",symbol:"Nu"},{name:"Indian Rupee",code:"INR",symbol:"₹"},{name:"Iraqi Dinar",code:"IQD",symbol:""},{name:"Iranian Rial",code:"IRR",symbol:"﷼"},{name:"Iceland Krona",code:"ISK",symbol:"kr"},{name:"Jamaican Dollar",code:"JMD",symbol:"J$"},{name:"Jordanian Dinar",code:"JOD",symbol:""},{name:"Yen",code:"JPY",symbol:"¥"},{name:"Kenyan Shilling",code:"KES",symbol:""},{name:"Som",code:"KGS",symbol:"лв"},{name:"Riel",code:"KHR",symbol:"៛"},{name:"Comoro Franc",code:"KMF",symbol:""},{name:"North Korean Won",code:"KPW",symbol:"₩"},{name:"Won",code:"KRW",symbol:"₩"},{name:"Kuwaiti Dinar",code:"KWD",symbol:""},{name:"Cayman Islands Dollar",code:"KYD",symbol:"$"},{name:"Tenge",code:"KZT",symbol:"лв"},{name:"Kip",code:"LAK",symbol:"₭"},{name:"Lebanese Pound",code:"LBP",symbol:"£"},{name:"Sri Lanka Rupee",code:"LKR",symbol:"₨"},{name:"Liberian Dollar",code:"LRD",symbol:"$"},{name:"Libyan Dinar",code:"LYD",symbol:""},{name:"Moroccan Dirham",code:"MAD",symbol:""},{name:"Moldovan Leu",code:"MDL",symbol:""},{name:"Malagasy Ariary",code:"MGA",symbol:""},{name:"Denar",code:"MKD",symbol:"ден"},{name:"Kyat",code:"MMK",symbol:""},{name:"Tugrik",code:"MNT",symbol:"₮"},{name:"Pataca",code:"MOP",symbol:""},{name:"Ouguiya",code:"MRU",symbol:""},{name:"Mauritius Rupee",code:"MUR",symbol:"₨"},{name:"Rufiyaa",code:"MVR",symbol:""},{name:"Kwacha",code:"MWK",symbol:""},{name:"Mexican Peso",code:"MXN",symbol:"$"},{name:"Malaysian Ringgit",code:"MYR",symbol:"RM"},{name:"Metical",code:"MZN",symbol:"MT"},{name:"Naira",code:"NGN",symbol:"₦"},{name:"Cordoba Oro",code:"NIO",symbol:"C$"},{name:"Norwegian Krone",code:"NOK",symbol:"kr"},{name:"Nepalese Rupee",code:"NPR",symbol:"₨"},{name:"New Zealand Dollar",code:"NZD",symbol:"$"},{name:"Rial Omani",code:"OMR",symbol:"﷼"},{name:"Balboa",code:"PAB",symbol:"B/."},{name:"Nuevo Sol",code:"PEN",symbol:"S/."},{name:"Kina",code:"PGK",symbol:""},{name:"Philippine Peso",code:"PHP",symbol:"Php"},{name:"Pakistan Rupee",code:"PKR",symbol:"₨"},{name:"Zloty",code:"PLN",symbol:"zł"},{name:"Guarani",code:"PYG",symbol:"Gs"},{name:"Qatari Rial",code:"QAR",symbol:"﷼"},{name:"New Leu",code:"RON",symbol:"lei"},{name:"Serbian Dinar",code:"RSD",symbol:"Дин."},{name:"Russian Ruble",code:"RUB",symbol:"руб"},{name:"Rwanda Franc",code:"RWF",symbol:""},{name:"Saudi Riyal",code:"SAR",symbol:"﷼"},{name:"Solomon Islands Dollar",code:"SBD",symbol:"$"},{name:"Seychelles Rupee",code:"SCR",symbol:"₨"},{name:"Sudanese Pound",code:"SDG",symbol:""},{name:"Swedish Krona",code:"SEK",symbol:"kr"},{name:"Singapore Dollar",code:"SGD",symbol:"$"},{name:"Saint Helena Pound",code:"SHP",symbol:"£"},{name:"Leone",code:"SLE",symbol:""},{name:"Somali Shilling",code:"SOS",symbol:"S"},{name:"Surinam Dollar",code:"SRD",symbol:"$"},{name:"South Sudanese pound",code:"SSP",symbol:""},{name:"Dobra",code:"STN",symbol:"Db"},{name:"Syrian Pound",code:"SYP",symbol:"£"},{name:"Lilangeni",code:"SZL",symbol:""},{name:"Baht",code:"THB",symbol:"฿"},{name:"Somoni",code:"TJS",symbol:""},{name:"Manat",code:"TMT",symbol:""},{name:"Tunisian Dinar",code:"TND",symbol:""},{name:"Pa'anga",code:"TOP",symbol:""},{name:"Turkish Lira",code:"TRY",symbol:"₺"},{name:"Trinidad and Tobago Dollar",code:"TTD",symbol:"TT$"},{name:"New Taiwan Dollar",code:"TWD",symbol:"NT$"},{name:"Tanzanian Shilling",code:"TZS",symbol:""},{name:"Hryvnia",code:"UAH",symbol:"₴"},{name:"Uganda Shilling",code:"UGX",symbol:""},{name:"US Dollar",code:"USD",symbol:"$"},{name:"Peso Uruguayo",code:"UYU",symbol:"$U"},{name:"Uzbekistan Sum",code:"UZS",symbol:"лв"},{name:"Venezuelan bolívar",code:"VES",symbol:"Bs"},{name:"Dong",code:"VND",symbol:"₫"},{name:"Vatu",code:"VUV",symbol:""},{name:"Tala",code:"WST",symbol:""},{name:"CFA Franc BEAC",code:"XAF",symbol:""},{name:"East Caribbean Dollar",code:"XCD",symbol:"$"},{name:"CFA Franc BCEAO",code:"XOF",symbol:""},{name:"CFP Franc",code:"XPF",symbol:""},{name:"Yemeni Rial",code:"YER",symbol:"﷼"},{name:"Rand",code:"ZAR",symbol:"R"},{name:"Lesotho Loti",code:"LSL",symbol:""},{name:"Namibia Dollar",code:"NAD",symbol:"N$"},{name:"Zambian Kwacha",code:"ZMW",symbol:"K"},{name:"Zimbabwe Dollar",code:"ZWL",symbol:""}],transaction_type:["deposit","invoice","payment","withdrawal"]},food:{adjective:["bitter","creamy","crispy","crunchy","delicious","fluffy","fresh","golden","juicy","moist","rich","salty","savory","smoky","sour","spicy","sweet","tangy","tender","zesty"],description_pattern:["A classic pie filled with delicious {{food.meat}} and {{food.adjective}} {{food.ingredient}}, baked in a {{food.adjective}} pastry crust and topped with a golden-brown lattice.","A delightful tart combining {{food.adjective}} {{food.vegetable}} and sweet {{food.fruit}}, set in a buttery pastry shell and finished with a hint of {{food.spice}}.","A heartwarming {{food.ethnic_category}} soup, featuring fresh {{food.ingredient}} and an aromatic blend of traditional spices.","A robust {{food.adjective}} stew featuring {{food.ethnic_category}} flavors, loaded with {{food.adjective}} meat, {{food.adjective}} vegetables, and a {{food.adjective}}, {{food.adjective}} broth.","A simple {{food.fruit}} pie. No fancy stuff. Just pie.","A slow-roasted {{animal.bird}} with a {{food.adjective}}, {{food.adjective}} exterior. Stuffed with {{food.fruit}} and covered in {{food.fruit}} sauce. Sides with {{food.vegetable}} puree and wild {{food.vegetable}}.","A special {{color.human}} {{food.ingredient}} from {{location.country}}. To support the strong flavor it is sided with a tablespoon of {{food.spice}}.","A succulent {{food.meat}} steak, encased in a {{food.adjective}} {{food.spice}} crust, served with a side of {{food.spice}} mashed {{food.vegetable}}.","An exquisite {{food.meat}} roast, infused with the essence of {{food.fruit}}, slow-roasted to bring out its natural flavors and served with a side of creamy {{food.vegetable}}","Baked {{food.ingredient}}-stuffed {{food.meat}}, seasoned with {{food.spice}} and {{food.adjective}} herbs, accompanied by roasted {{food.vegetable}} medley.","Crispy fried {{food.meat}} bites, seasoned with {{food.spice}} and served with a tangy {{food.fruit}} dipping sauce.","Fresh mixed greens tossed with {{food.spice}}-rubbed {{food.meat}}, {{food.vegetable}}, and a light dressing.","Fresh {{food.ingredient}} with a pinch of {{food.spice}}, topped by a caramelized {{food.fruit}} with whipped cream","Grilled {{food.meat}} kebabs, marinated in {{food.ethnic_category}} spices and served with a fresh {{food.vegetable}} and {{food.fruit}} salad.","Hearty {{food.ingredient}} and {{food.meat}} stew, slow-cooked with {{food.spice}} and {{food.vegetable}} for a comforting, flavorful meal.","Juicy {{food.meat}}, grilled to your liking and drizzled with a bold {{food.spice}} sauce, served alongside roasted {{food.vegetable}}.","Our {{food.adjective}} {{food.meat}}, slow-cooked to perfection, accompanied by steamed {{food.vegetable}} and a rich, savory gravy.","Tender {{food.meat}} skewers, glazed with a sweet and tangy {{food.fruit}} sauce, served over a bed of fragrant jasmine rice.","Tenderly braised {{food.meat}} in a rich {{food.spice}} and {{food.vegetable}} sauce, served with a side of creamy {{food.vegetable}}.","Three {{food.ingredient}} with {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}}, {{food.vegetable}} and {{food.ingredient}}. With a side of baked {{food.fruit}}, and your choice of {{food.ingredient}} or {{food.ingredient}}.",'{{number.int({"min":1, "max":99})}}-day aged {{food.meat}} steak, with choice of {{number.int({"min":2, "max":4})}} sides.'],dish:["California maki","Peking duck","Philadelphia maki","arepas","barbecue ribs","bruschette with tomato","bunny chow","caesar salad","caprese salad","cauliflower penne","cheeseburger","chicken fajitas","chicken milanese","chicken parm","chicken wings","chilli con carne","ebiten maki","fettuccine alfredo","fish and chips","french fries with sausages","french toast","hummus","katsu curry","kebab","lasagne","linguine with clams","massaman curry","meatballs with sauce","mushroom risotto","pappardelle alla bolognese","pasta and beans","pasta carbonara","pasta with tomato and basil","pho","pierogi","pizza","poke","pork belly buns","pork sausage roll","poutine","ricotta stuffed ravioli","risotto with seafood","salmon nigiri","scotch eggs","seafood paella","som tam","souvlaki","stinky tofu","sushi","tacos","teriyaki chicken donburi","tiramisù","tuna sashimi","vegetable soup"],dish_pattern:["{{food.adjective}} {{food.ethnic_category}} stew","{{food.adjective}} {{food.meat}} with {{food.vegetable}}","{{food.ethnic_category}} {{food.ingredient}} soup","{{food.fruit}} and {{food.fruit}} tart","{{food.fruit}} pie","{{food.fruit}}-glazed {{food.meat}} skewers","{{food.fruit}}-infused {{food.meat}} roast","{{food.ingredient}} and {{food.meat}} pie","{{food.ingredient}}-infused {{food.meat}}","{{food.meat}} steak","{{food.meat}} with {{food.fruit}} sauce","{{food.spice}}-crusted {{food.meat}}","{{food.spice}}-rubbed {{food.meat}} salad","{{food.vegetable}} salad","{{person.first_name.generic}}'s special {{food.ingredient}}"],ethnic_category:["Ainu","Albanian","American","Andhra","Anglo-Indian","Arab","Argentine","Armenian","Assyrian","Awadhi","Azerbaijani","Balochi","Bangladeshi","Bashkir","Belarusian","Bengali","Berber","Brazilian","British","Buddhist","Bulgarian","Cajun","Cantonese","Caribbean","Chechen","Chinese","Chinese Islamic","Circassian","Crimean Tatar","Cypriot","Czech","Danish","Egyptian","English","Eritrean","Estonian","Ethiopian","Filipino","French","Georgian","German","Goan","Goan Catholic","Greek","Gujarati","Hyderabad","Indian","Indian Chinese","Indian Singaporean","Indonesian","Inuit","Irish","Italian","Italian-American","Jamaican","Japanese","Jewish - Israeli","Karnataka","Kazakh","Keralite","Korean","Kurdish","Laotian","Latvian","Lebanese","Lithuanian","Louisiana Creole","Maharashtrian","Malay","Malaysian Chinese","Malaysian Indian","Mangalorean","Mediterranean","Mennonite","Mexican","Mordovian","Mughal","Native American","Nepalese","New Mexican","Odia","Pakistani","Parsi","Pashtun","Pennsylvania Dutch","Peranakan","Persian","Peruvian","Polish","Portuguese","Punjabi","Québécois","Rajasthani","Romani","Romanian","Russian","Sami","Serbian","Sindhi","Slovak","Slovenian","Somali","South Indian","Soviet","Spanish","Sri Lankan","Taiwanese","Tamil","Tatar","Texan","Thai","Turkish","Udupi","Ukrainian","Vietnamese","Yamal","Zambian","Zanzibari"],fruit:["apple","apricot","aubergine","avocado","banana","berry","blackberry","blood orange","blueberry","bush tomato","butternut pumpkin","cantaloupe","cavalo","cherry","corella pear","cranberry","cumquat","currant","custard apple","custard apples daikon","date","dragonfruit","dried apricot","elderberry","feijoa","fig","fingerlime","goji berry","grape","grapefruit","guava","honeydew melon","incaberry","jarrahdale pumpkin","juniper berry","kiwi fruit","kiwiberry","lemon","lime","longan","loquat","lychee","mandarin","mango","mangosteen","melon","mulberry","nashi pear","nectarine","olive","orange","papaw","papaya","passionfruit","peach","pear","pineapple","plum","pomegranate","prune","rockmelon","snowpea","sprout","starfruit","strawberry","sultana","tangelo","tomato","watermelon"],ingredient:["achacha","adzuki beans","agar","agave syrup","ajowan seed","albacore tuna","alfalfa","allspice","almond oil","almonds","amaranth","amchur","anchovies","aniseed","annatto seed","apple cider vinegar","apple juice","apple juice concentrate","apples","apricots","arborio rice","arrowroot","artichoke","arugula","asafoetida","asian greens","asian noodles","asparagus","aubergine","avocado","avocado oil","avocado spread","bacon","baking powder","baking soda","balsamic vinegar","bamboo shoots","banana","barberry","barley","barramundi","basil basmati rice","bay leaves","bean shoots","bean sprouts","beans","beef","beef stock","beetroot","berries","besan","black eyed beans","blackberries","blood oranges","blue cheese","blue eye trevalla","blue swimmer crab","blueberries","bocconcini","bok choy","bonito flakes","bonza","borlotti beans","bran","brazil nut","bread","brie","broccoli","broccolini","brown flour","brown mushrooms","brown rice","brown rice vinegar","brussels sprouts","buckwheat","buckwheat flour","buckwheat noodles","bulghur","bush tomato","butter","butter beans","buttermilk","butternut lettuce","butternut pumpkin","cabbage","cacao","cake","calamari","camellia tea oil","camembert","camomile","candle nut","cannellini beans","canola oil","cantaloupe","capers","capsicum","caraway seed","cardamom","carob carrot","carrot","cashews","cassia bark","cauliflower","cavalo","cayenne","celery","celery seed","cheddar","cherries","chestnut","chia seeds","chicken","chicken stock","chickory","chickpea","chilli pepper","chinese cabbage","chinese five spice","chives","choy sum","cinnamon","clams","cloves","cocoa powder","coconut","coconut oil","coconut water","coffee","common cultivated mushrooms","corella pear","coriander leaves","coriander seed","corn oil","corn syrup","corn tortilla","cornichons","cornmeal","cos lettuce","cottage cheese","cous cous","crabs","cranberry","cream","cream cheese","cucumber","cumin","cumquat","currants","curry leaves","curry powder","custard apples","dandelion","dark chocolate","dashi","dates","dill","dragonfruit","dried apricots","dried chinese broccoli","duck","edam","edamame","eggplant","eggs","elderberry","endive","english spinach","enoki mushrooms","extra virgin olive oil","farmed prawns","feijoa","fennel","fennel seeds","fenugreek","feta","figs","file powder","fingerlime","fish sauce","fish stock","flat mushrooms","flathead","flaxseed","flaxseed oil","flounder","flour","freekeh","french eschallots","fresh chillies","fromage blanc","fruit","galangal","garam masala","garlic","goat cheese","goat milk","goji berry","grape seed oil","grapefruit","grapes","green beans","green pepper","green tea","green tea noodles","greenwheat freekeh","gruyere","guava","gula melaka","haloumi","ham","haricot beans","harissa","hazelnut","hijiki","hiramasa kingfish","hokkien noodles","honey","honeydew melon","horseradish","hot smoked salmon","hummus","iceberg lettuce","incaberries","jarrahdale pumpkin","jasmine rice","jelly","jerusalem artichoke","jewfish","jicama","juniper berries","kale","kangaroo","kecap manis","kenchur","kidney beans","kidneys","kiwi berries","kiwi fruit","kohlrabi","kokam","kombu","koshihikari rice","kudzu","kumera","lamb","lavender flowers","leeks","lemon","lemongrass","lentils","lettuce","licorice","lime leaves","limes","liver","lobster","longan","loquats","lotus root","lychees","macadamia nut","macadamia oil","mace","mackerel","mahi mahi","mahlab","malt vinegar","mandarins","mango","mangosteens","maple syrup","margarine","marigold","marjoram","mastic","melon","milk","milk chocolate","mint","miso","molasses","monkfish","morwong","mountain bread","mozzarella","muesli","mulberries","mullet","mung beans","mussels","mustard","mustard seed","nashi pear","nasturtium","nectarines","nori","nutmeg","nutritional yeast","nuts","oat flour","oatmeal","oats","octopus","okra","olive oil","olives","omega spread","onion","oranges","oregano","oyster mushrooms","oyster sauce","oysters","pandanus leaves","papaw","papaya","paprik","parmesan cheese","parrotfish","parsley","parsnip","passionfruit","pasta","peaches","peanuts","pear","pear juice","pears","peas","pecan nut","pecorino","pepitas","peppercorns","peppermint","peppers","persimmon","pine nut","pineapple","pinto beans","pistachio nut","plums","polenta","pomegranate","poppy seed","porcini mushrooms","pork","potato flour","potatoes","provolone","prunes","pumpkin","pumpkin seed","purple carrot","purple rice","quark","quince","quinoa","radicchio","radish","raisin","raspberry","red cabbage","red lentils","red pepper","red wine","red wine vinegar","redfish","rhubarb","rice flour","rice noodles","rice paper","rice syrup","ricemilk","ricotta","rockmelon","rose water","rosemary","rye","rye bread","safflower oil","saffron","sage","sake","salmon","sardines","sausages","scallops","sea salt","semolina","sesame oil","sesame seeds","shark","shiitake mushrooms","silverbeet","slivered almonds","smoked trout","snapper","snowpea sprouts","snowpeas","soba","sour dough bread","soy","soy beans","soy flour","soy milk","soy sauce","soymilk","spearmint","spelt","spelt bread","spinach","spring onions","sprouts","squash","squid","star anise","star fruit","starfruit","stevia","strawberries","sugar","sultanas","sun-dried tomatoes","sunflower oil","sunflower seeds","sweet chilli sauce","sweet potato","swiss chard","swordfish","szechuan pepperberry","tabasco","tahini","taleggio cheese","tamari","tamarillo","tangelo","tapioca","tapioca flour","tarragon","tea","tea oil","tempeh","thyme","tinned","tofu","tom yum","tomatoes","trout","tuna","turkey","turmeric","turnips","unbleached flour","vanilla beans","vegetable oil","vegetable spaghetti","vegetable stock","vermicelli noodles","vinegar","wakame","walnut","warehou","wasabi","water","watercress","watermelon","wattleseed","wheat","wheatgrass juice","white bread","white flour","white rice","white wine","white wine vinegar","whiting wild rice","wholegrain bread","wholemeal","wholewheat flour","william pear","yeast","yellow papaw","yellowtail kingfish","yoghurt","yogurt","zucchini"],meat:["beef","chicken","crocodile","duck","emu","goose","kangaroo","lamb","ostrich","pigeon","pork","quail","rabbit","salmon","turkey","venison"],spice:["achiote seed","ajwain seed","ajwan seed","allspice","amchoor","anise","anise star","aniseed","annatto seed","arrowroot","asafoetida","baharat","balti masala","balti stir fry mix","basil","bay leaves","bbq","caraway seed","cardamom","cassia","cayenne pepper","celery","chamomile","chervil","chilli","chilli pepper","chillies","china star","chives","cinnamon","cloves","colombo","coriander","cumin","curly leaf parsley","curry","dhansak","dill","fennel seed","fenugreek","fines herbes","five spice","french lavender","galangal","garam masala","garlic","german chamomile","ginger","green cardamom","herbes de provence","jalfrezi","jerk","kaffir leaves","korma","lavender","lemon grass","lemon pepper","lime leaves","liquorice root","mace","mango","marjoram","methi","mint","mustard","nutmeg","onion seed","orange zest","oregano","paprika","parsley","pepper","peppercorns","pimento","piri piri","poppy seed","pot marjoram","poudre de colombo","ras-el-hanout","rice paper","rogan josh","rose baie","rosemary","saffron","sage","sesame seed","spearmint","sumac","sweet basil","sweet laurel","tagine","tandoori masala","tarragon","thyme","tikka masala","turmeric","vanilla","zahtar"],vegetable:["artichoke","arugula","asian greens","asparagus","bean shoots","bean sprouts","beans","beetroot","bok choy","broccoli","broccolini","brussels sprouts","butternut lettuce","cabbage","capers","carob carrot","carrot","cauliflower","celery","chilli pepper","chinese cabbage","chives","cornichons","cos lettuce","cucumber","dried chinese broccoli","eggplant","endive","english spinach","french eschallots","fresh chillies","garlic","green beans","green pepper","hijiki","iceberg lettuce","jerusalem artichoke","jicama","kale","kohlrabi","leeks","lettuce","okra","onion","parsnip","peas","peppers","potatoes","pumpkin","purple carrot","radicchio","radish","raspberry","red cabbage","red pepper","rhubarb","snowpea sprouts","spinach","squash","sun dried tomatoes","sweet potato","swiss chard","turnips","zucchini"]},hacker:{adjective:["1080p","auxiliary","back-end","bluetooth","cross-platform","digital","haptic","mobile","multi-byte","neural","online","open-source","optical","primary","redundant","solid state","virtual","wireless"],ingverb:["backing up","bypassing","calculating","compressing","connecting","copying","generating","hacking","indexing","navigating","overriding","parsing","programming","quantifying","synthesizing","transmitting"],noun:["alarm","application","array","bandwidth","bus","capacitor","card","circuit","driver","feed","firewall","hard drive","interface","matrix","microchip","monitor","panel","pixel","port","program","protocol","sensor","system","transmitter"],phrase:["I'll {{verb}} the {{adjective}} {{abbreviation}} {{noun}}, that should {{noun}} the {{abbreviation}} {{noun}}!","If we {{verb}} the {{noun}}, we can get to the {{abbreviation}} {{noun}} through the {{adjective}} {{abbreviation}} {{noun}}!","The {{abbreviation}} {{noun}} is down, {{verb}} the {{adjective}} {{noun}} so we can {{verb}} the {{abbreviation}} {{noun}}!","Try to {{verb}} the {{abbreviation}} {{noun}}, maybe it will {{verb}} the {{adjective}} {{noun}}!","Use the {{adjective}} {{abbreviation}} {{noun}}, then you can {{verb}} the {{adjective}} {{noun}}!","We need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!","You can't {{verb}} the {{noun}} without {{ingverb}} the {{adjective}} {{abbreviation}} {{noun}}!","{{ingverb}} the {{noun}} won't do anything, we need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!"],verb:["back up","bypass","calculate","compress","connect","copy","generate","hack","index","input","navigate","override","parse","program","quantify","reboot","synthesize","transmit"]},internet:{domain_suffix:["com","biz","info","name","net","org"],example_email:["example.org","example.com","example.net"],free_email:["gmail.com","yahoo.com","hotmail.com"]},location:{building_number:["#####","####","###"],city_name:["Abilene","Akron","Alafaya","Alameda","Albany","Albuquerque","Alexandria","Alhambra","Aliso Viejo","Allen","Allentown","Aloha","Alpharetta","Altadena","Altamonte Springs","Altoona","Amarillo","Ames","Anaheim","Anchorage","Anderson","Ankeny","Ann Arbor","Annandale","Antelope","Antioch","Apex","Apopka","Apple Valley","Appleton","Arcadia","Arden-Arcade","Arecibo","Arlington","Arlington Heights","Arvada","Ashburn","Asheville","Aspen Hill","Atascocita","Athens-Clarke County","Atlanta","Attleboro","Auburn","Augusta-Richmond County","Aurora","Austin","Avondale","Azusa","Bakersfield","Baldwin Park","Baltimore","Barnstable Town","Bartlett","Baton Rouge","Battle Creek","Bayamon","Bayonne","Baytown","Beaumont","Beavercreek","Beaverton","Bedford","Bel Air South","Bell Gardens","Belleville","Bellevue","Bellflower","Bellingham","Bend","Bentonville","Berkeley","Berwyn","Bethesda","Bethlehem","Billings","Biloxi","Binghamton","Birmingham","Bismarck","Blacksburg","Blaine","Bloomington","Blue Springs","Boca Raton","Boise City","Bolingbrook","Bonita Springs","Bossier City","Boston","Bothell","Boulder","Bountiful","Bowie","Bowling Green","Boynton Beach","Bozeman","Bradenton","Brandon","Brentwood","Bridgeport","Bristol","Brockton","Broken Arrow","Brookhaven","Brookline","Brooklyn Park","Broomfield","Brownsville","Bryan","Buckeye","Buena Park","Buffalo","Buffalo Grove","Burbank","Burien","Burke","Burleson","Burlington","Burnsville","Caguas","Caldwell","Camarillo","Cambridge","Camden","Canton","Cape Coral","Carlsbad","Carmel","Carmichael","Carolina","Carrollton","Carson","Carson City","Cary","Casa Grande","Casas Adobes","Casper","Castle Rock","Castro Valley","Catalina Foothills","Cathedral City","Catonsville","Cedar Hill","Cedar Park","Cedar Rapids","Centennial","Centreville","Ceres","Cerritos","Champaign","Chandler","Chapel Hill","Charleston","Charlotte","Charlottesville","Chattanooga","Cheektowaga","Chesapeake","Chesterfield","Cheyenne","Chicago","Chico","Chicopee","Chino","Chino Hills","Chula Vista","Cicero","Cincinnati","Citrus Heights","Clarksville","Clearwater","Cleveland","Cleveland Heights","Clifton","Clovis","Coachella","Coconut Creek","Coeur d'Alene","College Station","Collierville","Colorado Springs","Colton","Columbia","Columbus","Commerce City","Compton","Concord","Conroe","Conway","Coon Rapids","Coral Gables","Coral Springs","Corona","Corpus Christi","Corvallis","Costa Mesa","Council Bluffs","Country Club","Covina","Cranston","Cupertino","Cutler Bay","Cuyahoga Falls","Cypress","Dale City","Dallas","Daly City","Danbury","Danville","Davenport","Davie","Davis","Dayton","Daytona Beach","DeKalb","DeSoto","Dearborn","Dearborn Heights","Decatur","Deerfield Beach","Delano","Delray Beach","Deltona","Denton","Denver","Des Moines","Des Plaines","Detroit","Diamond Bar","Doral","Dothan","Downers Grove","Downey","Draper","Dublin","Dubuque","Duluth","Dundalk","Dunwoody","Durham","Eagan","East Hartford","East Honolulu","East Lansing","East Los Angeles","East Orange","East Providence","Eastvale","Eau Claire","Eden Prairie","Edina","Edinburg","Edmond","El Cajon","El Centro","El Dorado Hills","El Monte","El Paso","Elgin","Elizabeth","Elk Grove","Elkhart","Ellicott City","Elmhurst","Elyria","Encinitas","Enid","Enterprise","Erie","Escondido","Euclid","Eugene","Euless","Evanston","Evansville","Everett","Fairfield","Fall River","Fargo","Farmington","Farmington Hills","Fayetteville","Federal Way","Findlay","Fishers","Flagstaff","Flint","Florence-Graham","Florin","Florissant","Flower Mound","Folsom","Fond du Lac","Fontana","Fort Collins","Fort Lauderdale","Fort Myers","Fort Pierce","Fort Smith","Fort Wayne","Fort Worth","Fountain Valley","Fountainebleau","Framingham","Franklin","Frederick","Freeport","Fremont","Fresno","Frisco","Fullerton","Gainesville","Gaithersburg","Galveston","Garden Grove","Gardena","Garland","Gary","Gastonia","Georgetown","Germantown","Gilbert","Gilroy","Glen Burnie","Glendale","Glendora","Glenview","Goodyear","Grand Forks","Grand Island","Grand Junction","Grand Prairie","Grand Rapids","Grapevine","Great Falls","Greeley","Green Bay","Greensboro","Greenville","Greenwood","Gresham","Guaynabo","Gulfport","Hacienda Heights","Hackensack","Haltom City","Hamilton","Hammond","Hampton","Hanford","Harlingen","Harrisburg","Harrisonburg","Hartford","Hattiesburg","Haverhill","Hawthorne","Hayward","Hemet","Hempstead","Henderson","Hendersonville","Hesperia","Hialeah","Hicksville","High Point","Highland","Highlands Ranch","Hillsboro","Hilo","Hoboken","Hoffman Estates","Hollywood","Homestead","Honolulu","Hoover","Houston","Huntersville","Huntington","Huntington Beach","Huntington Park","Huntsville","Hutchinson","Idaho Falls","Independence","Indianapolis","Indio","Inglewood","Iowa City","Irondequoit","Irvine","Irving","Jackson","Jacksonville","Janesville","Jefferson City","Jeffersonville","Jersey City","Johns Creek","Johnson City","Joliet","Jonesboro","Joplin","Jupiter","Jurupa Valley","Kalamazoo","Kannapolis","Kansas City","Kearny","Keller","Kendale Lakes","Kendall","Kenner","Kennewick","Kenosha","Kent","Kentwood","Kettering","Killeen","Kingsport","Kirkland","Kissimmee","Knoxville","Kokomo","La Crosse","La Habra","La Mesa","La Mirada","Lacey","Lafayette","Laguna Niguel","Lake Charles","Lake Elsinore","Lake Forest","Lake Havasu City","Lake Ridge","Lakeland","Lakeville","Lakewood","Lancaster","Lansing","Laredo","Largo","Las Cruces","Las Vegas","Lauderhill","Lawrence","Lawton","Layton","League City","Lee's Summit","Leesburg","Lehi","Lehigh Acres","Lenexa","Levittown","Lewisville","Lexington-Fayette","Lincoln","Linden","Little Rock","Littleton","Livermore","Livonia","Lodi","Logan","Lombard","Lompoc","Long Beach","Longmont","Longview","Lorain","Los Angeles","Louisville/Jefferson County","Loveland","Lowell","Lubbock","Lynchburg","Lynn","Lynwood","Macon-Bibb County","Madera","Madison","Malden","Manchester","Manhattan","Mansfield","Manteca","Maple Grove","Margate","Maricopa","Marietta","Marysville","Mayaguez","McAllen","McKinney","McLean","Medford","Melbourne","Memphis","Menifee","Mentor","Merced","Meriden","Meridian","Mesa","Mesquite","Metairie","Methuen Town","Miami","Miami Beach","Miami Gardens","Middletown","Midland","Midwest City","Milford","Millcreek","Milpitas","Milwaukee","Minneapolis","Minnetonka","Minot","Miramar","Mishawaka","Mission","Mission Viejo","Missoula","Missouri City","Mobile","Modesto","Moline","Monroe","Montebello","Monterey Park","Montgomery","Moore","Moreno Valley","Morgan Hill","Mount Pleasant","Mount Prospect","Mount Vernon","Mountain View","Muncie","Murfreesboro","Murray","Murrieta","Nampa","Napa","Naperville","Nashua","Nashville-Davidson","National City","New Bedford","New Braunfels","New Britain","New Brunswick","New Haven","New Orleans","New Rochelle","New York","Newark","Newport Beach","Newport News","Newton","Niagara Falls","Noblesville","Norfolk","Normal","Norman","North Bethesda","North Charleston","North Highlands","North Las Vegas","North Lauderdale","North Little Rock","North Miami","North Miami Beach","North Port","North Richland Hills","Norwalk","Novato","Novi","O'Fallon","Oak Lawn","Oak Park","Oakland","Oakland Park","Ocala","Oceanside","Odessa","Ogden","Oklahoma City","Olathe","Olympia","Omaha","Ontario","Orange","Orem","Orland Park","Orlando","Oro Valley","Oshkosh","Overland Park","Owensboro","Oxnard","Palatine","Palm Bay","Palm Beach Gardens","Palm Coast","Palm Desert","Palm Harbor","Palm Springs","Palmdale","Palo Alto","Paradise","Paramount","Parker","Parma","Pasadena","Pasco","Passaic","Paterson","Pawtucket","Peabody","Pearl City","Pearland","Pembroke Pines","Pensacola","Peoria","Perris","Perth Amboy","Petaluma","Pflugerville","Pharr","Philadelphia","Phoenix","Pico Rivera","Pine Bluff","Pine Hills","Pinellas Park","Pittsburg","Pittsburgh","Pittsfield","Placentia","Plainfield","Plano","Plantation","Pleasanton","Plymouth","Pocatello","Poinciana","Pomona","Pompano Beach","Ponce","Pontiac","Port Arthur","Port Charlotte","Port Orange","Port St. Lucie","Portage","Porterville","Portland","Portsmouth","Potomac","Poway","Providence","Provo","Pueblo","Quincy","Racine","Raleigh","Rancho Cordova","Rancho Cucamonga","Rancho Palos Verdes","Rancho Santa Margarita","Rapid City","Reading","Redding","Redlands","Redmond","Redondo Beach","Redwood City","Reno","Renton","Reston","Revere","Rialto","Richardson","Richland","Richmond","Rio Rancho","Riverside","Riverton","Riverview","Roanoke","Rochester","Rochester Hills","Rock Hill","Rockford","Rocklin","Rockville","Rockwall","Rocky Mount","Rogers","Rohnert Park","Rosemead","Roseville","Roswell","Round Rock","Rowland Heights","Rowlett","Royal Oak","Sacramento","Saginaw","Salem","Salina","Salinas","Salt Lake City","Sammamish","San Angelo","San Antonio","San Bernardino","San Bruno","San Buenaventura (Ventura)","San Clemente","San Diego","San Francisco","San Jacinto","San Jose","San Juan","San Leandro","San Luis Obispo","San Marcos","San Mateo","San Rafael","San Ramon","San Tan Valley","Sandy","Sandy Springs","Sanford","Santa Ana","Santa Barbara","Santa Clara","Santa Clarita","Santa Cruz","Santa Fe","Santa Maria","Santa Monica","Santa Rosa","Santee","Sarasota","Savannah","Sayreville","Schaumburg","Schenectady","Scottsdale","Scranton","Seattle","Severn","Shawnee","Sheboygan","Shoreline","Shreveport","Sierra Vista","Silver Spring","Simi Valley","Sioux City","Sioux Falls","Skokie","Smyrna","Somerville","South Bend","South Gate","South Hill","South Jordan","South San Francisco","South Valley","South Whittier","Southaven","Southfield","Sparks","Spokane","Spokane Valley","Spring","Spring Hill","Spring Valley","Springdale","Springfield","St. Charles","St. Clair Shores","St. Cloud","St. George","St. Joseph","St. Louis","St. Louis Park","St. Paul","St. Peters","St. Petersburg","Stamford","State College","Sterling Heights","Stillwater","Stockton","Stratford","Strongsville","Suffolk","Sugar Land","Summerville","Sunnyvale","Sunrise","Sunrise Manor","Surprise","Syracuse","Tacoma","Tallahassee","Tamarac","Tamiami","Tampa","Taunton","Taylor","Taylorsville","Temecula","Tempe","Temple","Terre Haute","Texas City","The Hammocks","The Villages","The Woodlands","Thornton","Thousand Oaks","Tigard","Tinley Park","Titusville","Toledo","Toms River","Tonawanda","Topeka","Torrance","Town 'n' Country","Towson","Tracy","Trenton","Troy","Trujillo Alto","Tuckahoe","Tucson","Tulare","Tulsa","Turlock","Tuscaloosa","Tustin","Twin Falls","Tyler","Union City","University","Upland","Urbana","Urbandale","Utica","Vacaville","Valdosta","Vallejo","Vancouver","Victoria","Victorville","Vineland","Virginia Beach","Visalia","Vista","Waco","Waipahu","Waldorf","Walnut Creek","Waltham","Warner Robins","Warren","Warwick","Washington","Waterbury","Waterloo","Watsonville","Waukegan","Waukesha","Wauwatosa","Wellington","Wesley Chapel","West Allis","West Babylon","West Covina","West Des Moines","West Hartford","West Haven","West Jordan","West Lafayette","West New York","West Palm Beach","West Sacramento","West Seneca","West Valley City","Westfield","Westland","Westminster","Weston","Weymouth Town","Wheaton","White Plains","Whittier","Wichita","Wichita Falls","Wilmington","Wilson","Winston-Salem","Woodbury","Woodland","Worcester","Wylie","Wyoming","Yakima","Yonkers","Yorba Linda","York","Youngstown","Yuba City","Yucaipa","Yuma"],city_pattern:["{{location.city_prefix}} {{person.first_name.generic}}{{location.city_suffix}}","{{location.city_prefix}} {{person.first_name.generic}}","{{person.first_name.generic}}{{location.city_suffix}}","{{person.last_name.generic}}{{location.city_suffix}}","{{location.city_name}}"],city_prefix:["North","East","West","South","New","Lake","Port","Fort"],city_suffix:["town","ton","land","ville","berg","burgh","boro","borough","bury","view","port","mouth","stad","stead","furt","chester","cester","fort","field","haven","side","shire","worth"],country:["Afghanistan","Aland Islands","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bonaire, Sint Eustatius and Saba","Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory (Chagos Archipelago)","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo","Cook Islands","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Curacao","Cyprus","Czechia","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Faroe Islands","Falkland Islands (Malvinas)","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Holy See (Vatican City State)","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Democratic People's Republic of Korea","Republic of Korea","Kuwait","Kyrgyz Republic","Lao People's Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macao","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saint Barthelemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and the South Sandwich Islands","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard & Jan Mayen Islands","Sweden","Switzerland","Syrian Arab Republic","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Virgin Islands, British","Virgin Islands, U.S.","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"],county:["Adams County","Calhoun County","Carroll County","Clark County","Clay County","Crawford County","Douglas County","Fayette County","Franklin County","Grant County","Greene County","Hamilton County","Hancock County","Henry County","Jackson County","Jefferson County","Johnson County","Lake County","Lawrence County","Lee County","Lincoln County","Logan County","Madison County","Marion County","Marshall County","Monroe County","Montgomery County","Morgan County","Perry County","Pike County","Polk County","Scott County","Union County","Warren County","Washington County","Wayne County","Avon","Bedfordshire","Berkshire","Borders","Buckinghamshire","Cambridgeshire","Central","Cheshire","Cleveland","Clwyd","Cornwall","County Antrim","County Armagh","County Down","County Fermanagh","County Londonderry","County Tyrone","Cumbria","Derbyshire","Devon","Dorset","Dumfries and Galloway","Durham","Dyfed","East Sussex","Essex","Fife","Gloucestershire","Grampian","Greater Manchester","Gwent","Gwynedd County","Hampshire","Herefordshire","Hertfordshire","Highlands and Islands","Humberside","Isle of Wight","Kent","Lancashire","Leicestershire","Lincolnshire","Lothian","Merseyside","Mid Glamorgan","Norfolk","North Yorkshire","Northamptonshire","Northumberland","Nottinghamshire","Oxfordshire","Powys","Rutland","Shropshire","Somerset","South Glamorgan","South Yorkshire","Staffordshire","Strathclyde","Suffolk","Surrey","Tayside","Tyne and Wear","Warwickshire","West Glamorgan","West Midlands","West Sussex","West Yorkshire","Wiltshire","Worcestershire"],direction:{cardinal:["North","East","South","West"],cardinal_abbr:["N","E","S","W"],ordinal:["Northeast","Northwest","Southeast","Southwest"],ordinal_abbr:["NE","NW","SE","SW"]},postcode:["#####","#####-####"],secondary_address:["Apt. ###","Suite ###"],state:["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],state_abbr:["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"],street_address:{normal:"{{location.buildingNumber}} {{location.street}}",full:"{{location.buildingNumber}} {{location.street}} {{location.secondaryAddress}}"},street_name:["10th Street","11th Street","12th Street","13th Street","14th Street","15th Street","16th Street","1st Avenue","1st Street","2nd Avenue","2nd Street","3rd Avenue","3rd Street","4th Avenue","4th Street","5th Avenue","5th Street","6th Avenue","6th Street","7th Avenue","7th Street","8th Avenue","8th Street","9th Street","A Street","Abbey Road","Adams Avenue","Adams Street","Airport Road","Albany Road","Albert Road","Albion Street","Alexandra Road","Alfred Street","Alma Street","Ash Close","Ash Grove","Ash Road","Ash Street","Aspen Close","Atlantic Avenue","Avenue Road","Back Lane","Baker Street","Balmoral Road","Barn Close","Barton Road","Bath Road","Bath Street","Bay Street","Beach Road","Bedford Road","Beech Close","Beech Drive","Beech Grove","Beech Road","Beechwood Avenue","Bell Lane","Belmont Road","Birch Avenue","Birch Close","Birch Grove","Birch Road","Blind Lane","Bluebell Close","Boundary Road","Bramble Close","Bramley Close","Bridge Road","Bridge Street","Broad Lane","Broad Street","Broadway","Broadway Avenue","Broadway Street","Brook Lane","Brook Road","Brook Street","Brookside","Buckingham Road","Cambridge Street","Canal Street","Castle Close","Castle Lane","Castle Road","Castle Street","Cavendish Road","Cedar Avenue","Cedar Close","Cedar Grove","Cedar Road","Cedar Street","Cemetery Road","Center Avenue","Center Road","Center Street","Central Avenue","Central Street","Chapel Close","Chapel Hill","Chapel Road","Chapel Street","Charles Street","Cherry Close","Cherry Street","Cherry Tree Close","Chester Road","Chestnut Close","Chestnut Drive","Chestnut Grove","Chestnut Street","Church Avenue","Church Close","Church Hill","Church Lane","Church Path","Church Road","Church Street","Church View","Church Walk","Claremont Road","Clarence Road","Clarence Street","Clarendon Road","Clark Street","Clay Lane","Cleveland Street","Cliff Road","Clifton Road","Clinton Street","College Avenue","College Street","Columbia Avenue","Commerce Street","Commercial Road","Commercial Street","Common Lane","Coronation Avenue","Coronation Road","County Line Road","County Road","Court Street","Cow Lane","Crescent Road","Cromwell Road","Cross Lane","Cross Street","Crown Street","Cumberland Street","Dale Street","Dark Lane","Davis Street","Depot Street","Derby Road","Derwent Close","Devonshire Road","Division Street","Douglas Road","Duke Street","E 10th Street","E 11th Street","E 12th Street","E 14th Street","E 1st Street","E 2nd Street","E 3rd Street","E 4th Avenue","E 4th Street","E 5th Street","E 6th Avenue","E 6th Street","E 7th Street","E 8th Street","E 9th Street","E Bridge Street","E Broad Street","E Broadway","E Broadway Street","E Cedar Street","E Center Street","E Central Avenue","E Church Street","E Elm Street","E Franklin Street","E Front Street","E Grand Avenue","E High Street","E Jackson Street","E Jefferson Street","E Main","E Main Street","E Maple Street","E Market Street","E North Street","E Oak Street","E Park Avenue","E Pine Street","E River Road","E South Street","E State Street","E Union Street","E Walnut Street","E Washington Avenue","E Washington Street","E Water Street","East Avenue","East Road","East Street","Edward Street","Elm Close","Elm Grove","Elm Road","Elm Street","Euclid Avenue","Fairfield Road","Farm Close","Ferry Road","Field Close","Field Lane","First Avenue","First Street","Fore Street","Forest Avenue","Forest Road","Fourth Avenue","Franklin Avenue","Franklin Road","Franklin Street","Front Street","Frontage Road","Garden Close","Garden Street","George Street","Gladstone Road","Glebe Close","Gloucester Road","Gordon Road","Gordon Street","Grand Avenue","Grange Avenue","Grange Close","Grange Road","Grant Street","Green Close","Green Lane","Green Street","Greenville Road","Greenway","Greenwood Road","Grove Lane","Grove Road","Grove Street","Hall Lane","Hall Street","Harrison Avenue","Harrison Street","Hawthorn Avenue","Hawthorn Close","Hazel Close","Hazel Grove","Heath Road","Heather Close","Henry Street","Heron Close","Hickory Street","High Road","High Street","Highfield Avenue","Highfield Close","Highfield Road","Highland Avenue","Hill Road","Hill Street","Hillside","Hillside Avenue","Hillside Close","Hillside Road","Holly Close","Honeysuckle Close","Howard Road","Howard Street","Jackson Avenue","Jackson Street","James Street","Jefferson Avenue","Jefferson Street","Johnson Street","Jubilee Close","Juniper Close","Kent Road","Kestrel Close","King Street","King's Road","Kingfisher Close","Kings Highway","Kingsway","Laburnum Grove","Lafayette Street","Lake Avenue","Lake Drive","Lake Road","Lake Street","Lancaster Road","Lansdowne Road","Larch Close","Laurel Close","Lawrence Street","Lee Street","Liberty Street","Lime Grove","Lincoln Avenue","Lincoln Highway","Lincoln Road","Lincoln Street","Locust Street","Lodge Close","Lodge Lane","London Road","Long Lane","Low Road","Madison Avenue","Madison Street","Main","Main Avenue","Main Road","Main Street","Main Street E","Main Street N","Main Street S","Main Street W","Manchester Road","Manor Close","Manor Drive","Manor Gardens","Manor Road","Manor Way","Maple Avenue","Maple Close","Maple Drive","Maple Road","Maple Street","Market Place","Market Square","Market Street","Marlborough Road","Marsh Lane","Martin Luther King Boulevard","Martin Luther King Drive","Martin Luther King Jr Boulevard","Mary Street","Mayfield Road","Meadow Close","Meadow Drive","Meadow Lane","Meadow View","Meadow Way","Memorial Drive","Middle Street","Mill Close","Mill Lane","Mill Road","Mill Street","Milton Road","Milton Street","Monroe Street","Moor Lane","Moss Lane","Mount Pleasant","Mount Street","Mulberry Street","N 1st Street","N 2nd Street","N 3rd Street","N 4th Street","N 5th Street","N 6th Street","N 7th Street","N 8th Street","N 9th Street","N Bridge Street","N Broad Street","N Broadway","N Broadway Street","N Cedar Street","N Center Street","N Central Avenue","N Chestnut Street","N Church Street","N College Street","N Court Street","N Division Street","N East Street","N Elm Street","N Franklin Street","N Front Street","N Harrison Street","N High Street","N Jackson Street","N Jefferson Street","N Lincoln Street","N Locust Street","N Main","N Main Avenue","N Main Street","N Maple Street","N Market Street","N Monroe Street","N Oak Street","N Park Street","N Pearl Street","N Pine Street","N Poplar Street","N Railroad Street","N State Street","N Union Street","N Walnut Street","N Washington Avenue","N Washington Street","N Water Street","Nelson Road","Nelson Street","New Lane","New Road","New Street","Newton Road","Nightingale Close","Norfolk Road","North Avenue","North Lane","North Road","North Street","Northfield Road","Oak Avenue","Oak Drive","Oak Lane","Oak Road","Oak Street","Oakfield Road","Oaklands","Old Lane","Old Military Road","Old Road","Old State Road","Orchard Drive","Orchard Lane","Orchard Road","Orchard Street","Oxford Road","Oxford Street","Park Avenue","Park Crescent","Park Drive","Park Lane","Park Place","Park Road","Park Street","Park View","Parkside","Pearl Street","Pennsylvania Avenue","Pine Close","Pine Grove","Pine Street","Pinfold Lane","Pleasant Street","Poplar Avenue","Poplar Close","Poplar Road","Poplar Street","Post Road","Pound Lane","Princes Street","Princess Street","Priory Close","Priory Road","Prospect Avenue","Prospect Place","Prospect Road","Prospect Street","Quarry Lane","Quarry Road","Queen's Road","Railroad Avenue","Railroad Street","Railway Street","Rectory Close","Rectory Lane","Richmond Close","Richmond Road","Ridge Road","River Road","River Street","Riverside","Riverside Avenue","Riverside Drive","Roman Road","Roman Way","Rowan Close","Russell Street","S 10th Street","S 14th Street","S 1st Avenue","S 1st Street","S 2nd Street","S 3rd Street","S 4th Street","S 5th Street","S 6th Street","S 7th Street","S 8th Street","S 9th Street","S Bridge Street","S Broad Street","S Broadway","S Broadway Street","S Center Street","S Central Avenue","S Chestnut Street","S Church Street","S College Street","S Division Street","S East Street","S Elm Street","S Franklin Street","S Front Street","S Grand Avenue","S High Street","S Jackson Street","S Jefferson Street","S Lincoln Street","S Main","S Main Avenue","S Main Street","S Maple Street","S Market Street","S Mill Street","S Monroe Street","S Oak Street","S Park Street","S Pine Street","S Railroad Street","S State Street","S Union Street","S Walnut Street","S Washington Avenue","S Washington Street","S Water Street","S West Street","Salisbury Road","Sandringham Road","Sandy Lane","School Close","School Lane","School Road","School Street","Second Avenue","Silver Street","Skyline Drive","Smith Street","Somerset Road","South Avenue","South Drive","South Road","South Street","South View","Spring Gardens","Spring Street","Springfield Close","Springfield Road","Spruce Street","St Andrew's Road","St Andrews Close","St George's Road","St John's Road","St Mary's Close","St Mary's Road","Stanley Road","Stanley Street","State Avenue","State Line Road","State Road","State Street","Station Road","Station Street","Stoney Lane","Sycamore Avenue","Sycamore Close","Sycamore Drive","Sycamore Street","Talbot Road","Tennyson Road","The Avenue","The Beeches","The Causeway","The Chase","The Coppice","The Copse","The Crescent","The Croft","The Dell","The Drive","The Fairway","The Glebe","The Grange","The Green","The Grove","The Hawthorns","The Lane","The Laurels","The Limes","The Maltings","The Meadows","The Mews","The Mount","The Oaks","The Orchard","The Oval","The Paddock","The Paddocks","The Poplars","The Ridgeway","The Ridings","The Rise","The Sidings","The Spinney","The Square","The Willows","The Woodlands","Third Avenue","Third Street","Tower Road","Trinity Road","Tudor Close","Union Avenue","Union Street","University Avenue","University Drive","Valley Road","Veterans Memorial Drive","Veterans Memorial Highway","Vicarage Close","Vicarage Lane","Vicarage Road","Victoria Place","Victoria Road","Victoria Street","Vine Street","W 10th Street","W 11th Street","W 12th Street","W 14th Street","W 1st Street","W 2nd Street","W 3rd Street","W 4th Avenue","W 4th Street","W 5th Street","W 6th Avenue","W 6th Street","W 7th Street","W 8th Street","W 9th Street","W Bridge Street","W Broad Street","W Broadway","W Broadway Avenue","W Broadway Street","W Center Street","W Central Avenue","W Chestnut Street","W Church Street","W Division Street","W Elm Street","W Franklin Street","W Front Street","W Grand Avenue","W High Street","W Jackson Street","W Jefferson Street","W Lake Street","W Main","W Main Street","W Maple Street","W Market Street","W Monroe Street","W North Street","W Oak Street","W Park Street","W Pine Street","W River Road","W South Street","W State Street","W Union Street","W Walnut Street","W Washington Avenue","W Washington Street","Walnut Close","Walnut Street","Warren Close","Warren Road","Washington Avenue","Washington Boulevard","Washington Road","Washington Street","Water Lane","Water Street","Waterloo Road","Waterside","Watery Lane","Waverley Road","Well Lane","Wellington Road","Wellington Street","West Avenue","West End","West Lane","West Road","West Street","West View","Western Avenue","Western Road","Westfield Road","Westgate","William Street","Willow Close","Willow Drive","Willow Grove","Willow Road","Willow Street","Windermere Road","Windmill Close","Windmill Lane","Windsor Avenue","Windsor Close","Windsor Drive","Wood Lane","Wood Street","Woodland Close","Woodland Road","Woodlands","Woodlands Avenue","Woodlands Close","Woodlands Road","Woodside","Woodside Road","Wren Close","Yew Tree Close","York Road","York Street"],street_pattern:["{{person.first_name.generic}} {{location.street_suffix}}","{{person.last_name.generic}} {{location.street_suffix}}","{{location.street_name}}"],street_suffix:["Alley","Avenue","Branch","Bridge","Brook","Brooks","Burg","Burgs","Bypass","Camp","Canyon","Cape","Causeway","Center","Centers","Circle","Circles","Cliff","Cliffs","Club","Common","Corner","Corners","Course","Court","Courts","Cove","Coves","Creek","Crescent","Crest","Crossing","Crossroad","Curve","Dale","Dam","Divide","Drive","Drives","Estate","Estates","Expressway","Extension","Extensions","Fall","Falls","Ferry","Field","Fields","Flat","Flats","Ford","Fords","Forest","Forge","Forges","Fork","Forks","Fort","Freeway","Garden","Gardens","Gateway","Glen","Glens","Green","Greens","Grove","Groves","Harbor","Harbors","Haven","Heights","Highway","Hill","Hills","Hollow","Inlet","Island","Islands","Isle","Junction","Junctions","Key","Keys","Knoll","Knolls","Lake","Lakes","Land","Landing","Lane","Light","Lights","Loaf","Lock","Locks","Lodge","Loop","Mall","Manor","Manors","Meadow","Meadows","Mews","Mill","Mills","Mission","Motorway","Mount","Mountain","Mountains","Neck","Orchard","Oval","Overpass","Park","Parks","Parkway","Parkways","Pass","Passage","Path","Pike","Pine","Pines","Place","Plain","Plains","Plaza","Point","Points","Port","Ports","Prairie","Radial","Ramp","Ranch","Rapid","Rapids","Rest","Ridge","Ridges","River","Road","Roads","Route","Row","Rue","Run","Shoal","Shoals","Shore","Shores","Skyway","Spring","Springs","Spur","Spurs","Square","Squares","Station","Stravenue","Stream","Street","Streets","Summit","Terrace","Throughway","Trace","Track","Trafficway","Trail","Tunnel","Turnpike","Underpass","Union","Unions","Valley","Valleys","Via","Viaduct","View","Views","Village","Villages","Ville","Vista","Walk","Walks","Wall","Way","Ways","Well","Wells"]},lorem:{word:["a","ab","abbas","abduco","abeo","abscido","absconditus","absens","absorbeo","absque","abstergo","absum","abundans","abutor","accedo","accendo","acceptus","accommodo","accusamus","accusantium","accusator","acer","acerbitas","acervus","acidus","acies","acquiro","acsi","ad","adamo","adaugeo","addo","adduco","ademptio","adeo","adeptio","adfectus","adfero","adficio","adflicto","adhaero","adhuc","adicio","adimpleo","adinventitias","adipisci","adipiscor","adiuvo","administratio","admiratio","admitto","admoneo","admoveo","adnuo","adopto","adsidue","adstringo","adsuesco","adsum","adulatio","adulescens","aduro","advenio","adversus","advoco","aedificium","aeger","aegre","aegrotatio","aegrus","aeneus","aequitas","aequus","aer","aestas","aestivus","aestus","aetas","aeternus","ager","aggero","aggredior","agnitio","agnosco","ago","ait","aiunt","alias","alienus","alii","alioqui","aliqua","aliquam","aliquid","alius","allatus","alo","alter","altus","alveus","amaritudo","ambitus","ambulo","amet","amicitia","amiculum","amissio","amita","amitto","amo","amor","amoveo","amplexus","amplitudo","amplus","ancilla","angelus","angulus","angustus","animadverto","animi","animus","annus","anser","ante","antea","antepono","antiquus","aperiam","aperio","aperte","apostolus","apparatus","appello","appono","appositus","approbo","apto","aptus","apud","aqua","ara","aranea","arbitro","arbor","arbustum","arca","arceo","arcesso","architecto","arcus","argentum","argumentum","arguo","arma","armarium","aro","ars","articulus","artificiose","arto","arx","ascisco","ascit","asper","asperiores","aspernatur","aspicio","asporto","assentator","assumenda","astrum","at","atavus","ater","atque","atqui","atrocitas","atrox","attero","attollo","attonbitus","auctor","auctus","audacia","audax","audentia","audeo","audio","auditor","aufero","aureus","aurum","aut","autem","autus","auxilium","avaritia","avarus","aveho","averto","baiulus","balbus","barba","bardus","basium","beatae","beatus","bellicus","bellum","bene","beneficium","benevolentia","benigne","bestia","bibo","bis","blandior","blanditiis","bonus","bos","brevis","cado","caecus","caelestis","caelum","calamitas","calcar","calco","calculus","callide","campana","candidus","canis","canonicus","canto","capillus","capio","capitulus","capto","caput","carbo","carcer","careo","caries","cariosus","caritas","carmen","carpo","carus","casso","caste","casus","catena","caterva","cattus","cauda","causa","caute","caveo","cavus","cedo","celebrer","celer","celo","cena","cenaculum","ceno","censura","centum","cerno","cernuus","certe","certus","cervus","cetera","charisma","chirographum","cibo","cibus","cicuta","cilicium","cimentarius","ciminatio","cinis","circumvenio","cito","civis","civitas","clam","clamo","claro","clarus","claudeo","claustrum","clementia","clibanus","coadunatio","coaegresco","coepi","coerceo","cogito","cognatus","cognomen","cogo","cohaero","cohibeo","cohors","colligo","collum","colo","color","coma","combibo","comburo","comedo","comes","cometes","comis","comitatus","commemoro","comminor","commodi","commodo","communis","comparo","compello","complectus","compono","comprehendo","comptus","conatus","concedo","concido","conculco","condico","conduco","confero","confido","conforto","confugo","congregatio","conicio","coniecto","conitor","coniuratio","conor","conqueror","conscendo","consectetur","consequatur","consequuntur","conservo","considero","conspergo","constans","consuasor","contabesco","contego","contigo","contra","conturbo","conventus","convoco","copia","copiose","cornu","corona","corporis","corpus","correptius","corrigo","corroboro","corrumpo","corrupti","coruscus","cotidie","crapula","cras","crastinus","creator","creber","crebro","credo","creo","creptio","crepusculum","cresco","creta","cribro","crinis","cruciamentum","crudelis","cruentus","crur","crustulum","crux","cubicularis","cubitum","cubo","cui","cuius","culpa","culpo","cultellus","cultura","cum","cumque","cunabula","cunae","cunctatio","cupiditas","cupiditate","cupio","cuppedia","cupressus","cur","cura","curatio","curia","curiositas","curis","curo","curriculum","currus","cursim","curso","cursus","curto","curtus","curvo","custodia","damnatio","damno","dapifer","debeo","debilito","debitis","decens","decerno","decet","decimus","decipio","decor","decretum","decumbo","dedecor","dedico","deduco","defaeco","defendo","defero","defessus","defetiscor","deficio","defleo","defluo","defungo","degenero","degero","degusto","deinde","delectatio","delectus","delego","deleniti","deleo","delibero","delicate","delinquo","deludo","demens","demergo","demitto","demo","demonstro","demoror","demulceo","demum","denego","denique","dens","denuncio","denuo","deorsum","depereo","depono","depopulo","deporto","depraedor","deprecator","deprimo","depromo","depulso","deputo","derelinquo","derideo","deripio","deserunt","desidero","desino","desipio","desolo","desparatus","despecto","dicta","dignissimos","distinctio","dolor","dolore","dolorem","doloremque","dolores","doloribus","dolorum","ducimus","ea","eaque","earum","eius","eligendi","enim","eos","error","esse","est","et","eum","eveniet","ex","excepturi","exercitationem","expedita","explicabo","facere","facilis","fuga","fugiat","fugit","harum","hic","id","illo","illum","impedit","in","incidunt","infit","inflammatio","inventore","ipsa","ipsam","ipsum","iste","itaque","iure","iusto","labore","laboriosam","laborum","laudantium","libero","magnam","magni","maiores","maxime","minima","minus","modi","molestiae","molestias","mollitia","nam","natus","necessitatibus","nemo","neque","nesciunt","nihil","nisi","nobis","non","nostrum","nulla","numquam","occaecati","ocer","odio","odit","officia","officiis","omnis","optio","paens","pariatur","patior","patria","patrocinor","patruus","pauci","paulatim","pauper","pax","peccatus","pecco","pecto","pectus","pecus","peior","pel","perferendis","perspiciatis","placeat","porro","possimus","praesentium","provident","quae","quaerat","quam","quas","quasi","qui","quia","quibusdam","quidem","quis","quisquam","quo","quod","quos","ratione","recusandae","reiciendis","rem","repellat","repellendus","reprehenderit","repudiandae","rerum","saepe","sapiente","sed","sequi","similique","sint","sit","socius","sodalitas","sol","soleo","solio","solitudo","solium","sollers","sollicito","solum","solus","soluta","solutio","solvo","somniculosus","somnus","sonitus","sono","sophismata","sopor","sordeo","sortitus","spargo","speciosus","spectaculum","speculum","sperno","spero","spes","spiculum","spiritus","spoliatio","sponte","stabilis","statim","statua","stella","stillicidium","stipes","stips","sto","strenuus","strues","studio","stultus","suadeo","suasoria","sub","subito","subiungo","sublime","subnecto","subseco","substantia","subvenio","succedo","succurro","sufficio","suffoco","suffragium","suggero","sui","sulum","sum","summa","summisse","summopere","sumo","sumptus","sunt","supellex","super","suppellex","supplanto","suppono","supra","surculus","surgo","sursum","suscipio","suscipit","suspendo","sustineo","suus","synagoga","tabella","tabernus","tabesco","tabgo","tabula","taceo","tactus","taedium","talio","talis","talus","tam","tamdiu","tamen","tametsi","tamisium","tamquam","tandem","tantillus","tantum","tardus","tego","temeritas","temperantia","templum","tempora","tempore","temporibus","temptatio","tempus","tenax","tendo","teneo","tener","tenetur","tenuis","tenus","tepesco","tepidus","ter","terebro","teres","terga","tergeo","tergiversatio","tergo","tergum","termes","terminatio","tero","terra","terreo","territo","terror","tersus","tertius","testimonium","texo","textilis","textor","textus","thalassinus","theatrum","theca","thema","theologus","thermae","thesaurus","thesis","thorax","thymbra","thymum","tibi","timidus","timor","titulus","tolero","tollo","tondeo","tonsor","torqueo","torrens","tot","totam","totidem","toties","totus","tracto","trado","traho","trans","tredecim","tremo","trepide","tres","tribuo","tricesimus","triduana","tripudio","tristis","triumphus","trucido","truculenter","tubineus","tui","tum","tumultus","tunc","turba","turbo","turpis","tutamen","tutis","tyrannus","uberrime","ubi","ulciscor","ullam","ullus","ulterius","ultio","ultra","umbra","umerus","umquam","una","unde","undique","universe","unus","urbanus","urbs","uredo","usitas","usque","ustilo","ustulo","usus","ut","uter","uterque","utilis","utique","utor","utpote","utrimque","utroque","utrum","uxor","vaco","vacuus","vado","vae","valde","valens","valeo","valetudo","validus","vallum","vapulus","varietas","varius","vehemens","vel","velit","velociter","velum","velut","venia","veniam","venio","ventito","ventosus","ventus","venustas","ver","verbera","verbum","vere","verecundia","vereor","vergo","veritas","veritatis","vero","versus","verto","verumtamen","verus","vesco","vesica","vesper","vespillo","vester","vestigium","vestrum","vetus","via","vicinus","vicissitudo","victoria","victus","videlicet","video","viduo","vigilo","vigor","vilicus","vilis","vilitas","villa","vinco","vinculum","vindico","vinitor","vinum","vir","virga","virgo","viridis","viriliter","virtus","vis","viscus","vita","vitae","vitiosus","vitium","vito","vivo","vix","vobis","vociferor","voco","volaticus","volo","volubilis","voluntarius","volup","voluptas","voluptate","voluptatem","voluptates","voluptatibus","voluptatum","volutabrum","volva","vomer","vomica","vomito","vorago","vorax","voro","vos","votum","voveo","vox","vulariter","vulgaris","vulgivagus","vulgo","vulgus","vulnero","vulnus","vulpes","vulticulus","xiphias"]},metadata:{title:"English",code:"en",language:"en",endonym:"English",dir:"ltr",script:"Latn"},music:{album:['"Awaken, My Love!"',"(What's The Story) Morning Glory?","- Tragedy +","13 Reasons Why (Season 3)","21st Century Breakdown","30 De Febrero","432 Hz Deep Healing","5-Star","528 Hz Meditation Music","54+1","8 Mile","808s & Heartbreak","9 To 5 And Odd Jobs","A Beautiful Lie","A Day At The Races","A Day Without Rain","A Fever You Can't Sweat Out","A Gangsta's Pain","A Gift & A Curse","A Hard Day's Night","A Head Full Of Dreams","A Kind Of Magic","A Million Ways To Murder","A Moment Apart","A Song For Every Moon","A Thousand Suns","A Winter Romance","ABBA","AI YoungBoy","AJ Tracey","Act One","After Hours","Agent Provocateur","All About You","All I Know So Far: Setlist","All Or Nothing","All Out","All Over The Place","All Stand Together","All The Lost Souls","All The Things I Never Said","All Things Must Pass","Alleen","Alright, Still","Alta Suciedad","America","American Heartbreak","American Teen","And Justice For None","Animal Songs","Another Friday Night","Anything Goes","Ao Vivo Em São Paulo","Ao Vivo No Ibirapuera","Apricot Princess","Aqui E Agora (Ao Vivo)","Arcane League Of Legends","Ardipithecus","Aretha Now","Around The Fur","Arrival","Artist 2.0","As She Pleases","Ascend","Ashlyn","Astro Lounge","At Night, Alone.","At. Long. Last. ASAP","Atlas","Audioslave","Aura","Austin","Awake","Away From The Sun","Ayayay!","Baby On Baby","Back For Everything","Back From The Edge","Back In Black","Back To Black","Back To The Game","Bad","Bahía Ducati","Baila","Barbie The Album","Battleground","Bayou Country","Bcos U Will Never B Free","Be","Be Here Now","Beautiful Mind","Beautiful Thugger Girls","Beautiful Trauma","Beauty And The Beast","Beggars Banquet","Being Funny In A Foreign Language","Berlin Lebt","Berry Is On Top","Best White Noise For Baby Sleep - Loopable With No Fade","Big Baby DRAM","Bigger, Better, Faster, More!","Billy Talent II","Black Star Elephant","Blackout","Blank Face LP","Bleach","Blizzard Of Ozz","Blonde","Blood Sugar Sex Magik","Bloom","Blowin' Your Mind!","Blu Celeste","Blue","Blue Banisters","Blue Hawaii","Blue Neighbourhood","Bluebird Days","Bobby Tarantino","Bobby Tarantino II","Bon Iver","Born Pink","Born To Run","Brand New Eyes","Break The Cycle","Breakfast In America","Breakthrough","Brett Young","Bridge Over Troubled Water","Bright: The Album","Brol","Buds","Buena Vista Social Club","Built On Glass","Bury Me At Makeout Creek","Busyhead","By The Way","CB6","CNCO","California Sunrise","Californication","Call Me Irresponsible","Calm","Camino Palmero","Camp","Caracal","Carbon Fiber Hits","Carnival","Carry On","Cartel De Santa","Certified Lover Boy","Chaaama","Chama Meu Nome","Chapter 1: Snake Oil","Chapter 2: Swamp Savant","Chapter One","Charlie's Angels","Cherry Bomb","Chief","Chocolate Factory","Chosen","Chris Brown","Christina Aguilera","Chromatica","Church","City Of Evil","Clandestino","Clouds","Coco","Collision Course","Colour Vision","Combat Rock","Come Around Sundown","Come Away With Me","Come Home The Kids Miss You","Come What(ever) May","Commando","Common Sense","Communion","Conditions","Confident","Confrontation","Control The Streets, Volume 2","Corinne Bailey Rae","Costello Music","Cottonwood","Covers, Vol. 2","Cozy Tapes Vol. 2: Too Cozy","Crash Talk","Crazy Love","Crazysexycool","Crowded House","Cruisin' With Junior H","Culture","Current Mood","DS2","Dale","Danger Days: The True Lives Of The Fabulous Killjoys","Dangerous Woman","Dangerous: The Double Album","Dark Horse","Day69","Daydream","De Fiesta","De Viaje","DeAnn","Death Race For Love","Delirium","Delta","Demidevil","Depression Cherry","Descendants","Desgenerados Mixtape","Destin","Destiny Fulfilled","Desvelado","Detroit 2","Dex Meets Dexter","Dharma","Die A Legend","Different World","Dig Your Roots","Digital Druglord","Dirt","Disclaimer I / II","Discovery","Disraeli Gears","Disumano","Dizzy Up The Girl","Don't Play That Song","Donda","Donde Quiero Estar","Doo-Wops & Hooligans","Down The Way","Dr. Feelgood","Dream Your Life Away","Dreaming Out Loud","Drip Harder","Drive","Drones","Dropped Outta College","Drowning","Dua Warna Cinta","Dulce Beat","Dusty In Memphis","Dutty Rock","Dying To Live","ENR","East Atlanta Love Letter","Editorial","Edna","El Abayarde","El Amor En Los Tiempos Del Perreo","El Camino","El Comienzo","El Dorado","El Karma","El Mal Querer","El Malo","El Trabajo Es La Suerte","El Viaje De Copperpot","Electric Ladyland","Emotion","En Tus Planes","Endless Summer Vacation","Enter The Wu-Tang (36 Chambers)","Equals (=)","Estrella","Euphoria","Europop","Evermore","Every Kingdom","Everyday Life","Evolve","Expectations","Face Yourself","Facelift","Fallin'","Fancy You","Fantasía","Favourite Worst Nightmare","Fear Of The Dark","Fearless","Feel Something","Feels Like Home","Femme Fatale","Ferxxocalipsis","Fifty Shades Darker","Fifty Shades Freed","Fifty Shades Of Grey","Final (Vol.1)","Finding Beauty In Negative Spaces","Fine Line","First Impressions Of Earth","First Steps","Five Seconds Flat","Folklore","For Emma, Forever Ago","Forajido EP 1","Forever","Forever Young","Formula Of Love: O+T=<3","Free 6lack","Freudian","Frozen II","Full Moon Fever","Funhouse","Funk Wav Bounces Vol.1","Future History","FutureSex/LoveSounds","Fuzzybrain","Gallery","Gangsta's Paradise","Gemini","Gemini Rights","Generationwhy","Get A Grip","Get Up","Gettin' Old","Girl","Gladiator","Glisten","Globalization","Gloria","Glory Days","God's Project","Gold Skies","Golden","Good Evening","Good Thing","Goodbye Yellow Brick Road","Gossip Columns","Got Your Six","Graceland","Graduation","Grand Champ","Grandson, Vol. 1","Green River","Guerra","Ha*Ash Primera Fila - Hecho Realidad","Haiz","Hamilton","Happy Endings","Harry Styles","Hasta La Raíz","Hatful Of Hollow","Head In The Clouds","Heard It In A Past Life","Heart Shaped World","Heartbeat City","Heartbreak On A Full Moon / Cuffing Season - 12 Days Of Christmas","Heaven Or Hell","Heaven knows","Hellbilly Deluxe","Hellboy","Help!","Her Loss","Here Comes The Cowboy","Hey World","High School Musical","High Tide In The Snake's Nest","Historias De Un Capricornio","Hndrxx","Hombres G (Devuélveme A Mi Chica)","Homerun","Homework","Hot Fuss","Hot Pink","Hot Sauce / Hello Future","Hot Space","Hotel Diablo","Houses Of The Holy","How Big, How Blue, How Beautiful","How I'm Feeling","How To Be Human","How To Save A Life","How To: Friend, Love, Freefall","Hozier","Human","Huncho Jack, Jack Huncho","Hunter Hayes","Hysteria","I Am...Sasha Fierce","I Can't Handle Change","I Met You When I Was 18. (The Playlist)","I Never Liked You","I Never Loved A Man The Way I Love You","I See You","I Think You Think Too Much Of Me","I Used To Know Her","I Used To Think I Could Fly","I'm Comin' Over","Ich & Keine Maske","If You Can Believe Your Eyes & Ears","Il Ballo Della Vita","Ill Communication","Imagination & The Misfit Kid","Imagine","Immortalized","In A Perfect World...","In Colour","In My Own Words","In Rainbows","In Return","In The Lonely Hour","Infest","Innuendo","Inter Shibuya - La Mafia","Interstellar","Is This It","It Was Written","It's Not Me, It's You","It's Only Me","Ivory","JackBoys","Jamie","Jazz","Jibrail & Iblis","Jordi","Jordin Sparks","Jose","Just As I Am","Just Cause Y'all Waited 2","Just Like You","Justified","K-12 / After School","K.I.D.S.","K.O.","K.O.B. Live","KG0516","KOD","Kane Brown","Kid A","Kid Krow","Kids See Ghosts","Kids in Love","Kinks (You Really Got Me)","Know-It-All","Konvicted","Kring","LANY","LM5","La Criatura","La Flaca","La Melodia De La Calle","La Revolucion","Lady Lady","Lady Wood","Langit Mong Bughaw","Las Que No Iban A Salir","Last Day Of Summer","Last Year Was Complicated","Layers","Layover","Lazarus","Led Zeppelin","Left Of The Middle","Leftoverture","Legends Never Die","Let's Skip To The Wedding","Let's Talk About Love","Licensed To Ill","Life In Cartoon Motion","Life Thru A Lens","Lifelines","Like..?","Lil Big Pac","Lil Boat","Lil Boat 2","Lil Boat 3.5","Lil Kiwi","Lil Pump","Limon Y Sal","Listen Without Prejudice","Little Voice","Live On Red Barn Radio I & II","Lo Que Andábamos Buscando","Lofi Fruits Music 2021","London Calling","Los Campeones Del Pueblo","Los Extraterrestres","Los Favoritos 2","Lost","Lost In Love","Loud","Love Sick","Love Story","Love Stuff","Love Yourself: Tear","Lover","Luca Brasi 2: Gangsta Grillz","Lust For Life","Luv Is Rage","M!ssundaztood","Ma Fleur","Made In Lagos","Mafia Bidness","Magazines Or Novels","Mainstream Sellout","Majestic","Make It Big","Make Yourself","Making Mirrors","Mamma Mia! Here We Go Again","Man Of The Woods","Manic","Me And My Gang","Meduza","Meet The Orphans","Meet The Woo","Melim","Mellon Collie And The Infinite Sadness","Melly vs. Melvin","Memories...Do Not Open","Menagerie","Midnights","Minecraft - Volume Alpha","Minutes To Midnight","Mix Pa Llorar En Tu Cuarto","Modo Avión","Monkey Business","Mono.","Montana","Montevallo","Moosetape","Morning View","Motivan2","Moving Pictures","Mr. Davis","Mr. Misunderstood","Mulan","Mura Masa","Music From The Edge Of Heaven","Music Of The Sun","My House","My Kinda Party","My Krazy Life","My Liver Will Handle What My Heart Can't","My Moment","My Own Lane","My Turn","My Worlds","Na Praia (Ao Vivo)","Nakamura","Nation Of Two","Navegando","Need You Now","Neon Future III","Neotheater","Never Trust A Happy Song","New English","News Of The World","Nicole","Night & Day","Nimmerland","Nimrod","Nine Track Mind","No Angel","No Me Pidas Perdón","No More Drama","No Protection","No Strings Attached","No Time To Die","Nobody Is Listening","Non Stop Erotic Cabaret","Non-Fiction","Northsbest","Nostalgia","Nostalgia, Ultra","Notes On A Conditional Form","Now Or Never","O Embaixador (Ao Vivo)","O My Heart","OK Computer","Ocean","Ocean Avenue","Ocean Eyes","Odisea","Oh My My","Oh, What A Life","On The 6","One In A Million","One More Light","One Of These Nights","Open Up And Say...Ahh!","Ordinary Man","Origins","Out Of The Blue","Over It","OzuTochi","PTSD","Pa Las Baby's Y Belikeada","Pa Que Hablen","Pa' Luego Es Tarde","Pa' Otro La 'O","Pablo Honey","Pain Is Love","Pain Is Temporary","Painting Pictures","Palmen Aus Plastik 2","Para Mi Ex","Para Siempre","Partners In Crime","Pawn Shop","Pegasus / Neon Shark VS Pegasus","Pet Sounds","Piece By Piece","Pier Pressure","Pineapple Sunrise","Piseiro 2020 Ao Vivo","Planet Pit","Plans","Play Deep","Playa Saturno","Por Primera Vez","Por Vida","Positions","Post Human: Survival Horror","Poster Girl","Prazer, Eu Sou Ferrugem (Ao Vivo)","Pretty Girls Like Trap Music","Pretty. Odd.","Prince Royce","Prisma","Prometo","Providence","Puberty 2","Punisher","Purgatory","Purple Rain","Que Bendición","Queen Of The Clouds","Quiero Volver","R&G (Rhythm & Gangsta): The Masterpiece","Raise!","Ransom 2","Rapunzel","Rare","Re Mida","Ready To Die","Realer","Rebelde","Reclassified","Recovery","Recuerden Mi Estilo","Reggatta De Blanc","Regulate… G Funk Era","Reik","Reise, Reise","Relapse","Relaxing Piano Lullabies And Natural Sleep Aid For Baby Sleep Music","Religiously. The Album.","Replay","Results May Vary","Revenge","Revolve","Revolver","Ricky Martin","Rien 100 Rien","Ripcord","Rise And Fall, Rage And Grace","Rise Of An Empire","Robin Hood: Prince Of Thieves","Rock N Roll Jesus","Romance","Romances","Ronan","Royal Blood","Rumours","Sad Boyz 4 Life II","San Lucas","Santana World","Saturation III","Sauce Boyz","Savage Mode","Saxobeats","Scarlet","Schwarzes Herz","Seal The Deal & Let's Boogie","Section.80","Segundo Romance","Sehnsucht","Shake The Snow Globe","Shang-Chi And The Legend Of The Ten Rings: The Album","Sheer Heart Attack","Shiesty Season","Shock Value","Shoot For The Stars, Aim For The Moon","Signed Sealed And Delivered","Signos","Silent Alarm","Simplemente Gracias","Sin Bandera","Sing Me A Lullaby, My Sweet Temptation","Sinner","Sirio","Sit Still, Look Pretty","Skin","Slowhand","Smash","Smithereens","Snow Cougar","Social Cues","Some Girls","Song Hits From Holiday Inn","Songs For Dads","Songs For The Deaf","Songs For You, Truths For Me","Songs In The Key Of Life","Souled Out","Sounds Of Silence","Soy Como Quiero Ser","Speak Now","Speak Your Mind","Speakerboxxx/The Love Below","Spider-Man: Into The Spider-Verse","Split Decision","Square Up","SremmLife","Starboy","Stay +","Stay Dangerous","Staying At Tamara's","Steppenwolf","Stick Season","Still Bill","Straight Outta Compton","Strange Trails","Stronger","Suavemente","Sublime","Suck It and See","Sucker","Sueños","Sugar","Summer Forever","Summer,","Sunset Season","Sunshine On Leith","Surfer Rosa","Sweet Talker","SweetSexySavage","System Of A Down","TA13OO","Talk That Talk","Talking Heads: 77","Tangled Up","Tango In The Night","Taxi Driver","Taylor Swift","Tell Me It's Real","Ten","Ten Summoner's Tales","Terra Sem Cep (Ao Vivo)","Terral","Testing","Tha Carter III","Thank Me Later","That's Christmas To Me","The Academy","The Adventures Of Bobby Ray","The Album","The Andy Williams Christmas Album","The Aviary","The Balcony","The Battle Of Los Angeles","The Beatles (White Album)","The Beginning","The Better Life","The Big Day","The Book","The Breakfast Club","The Cars","The Colour And The Shape","The Death Of Peace Of Mind","The Diary Of Alicia Keys","The Documentary","The Emancipation Of Mimi","The Eminem Show","The End Of Everything","The Final Countdown","The Forever Story","The Foundation","The Goat","The Golden Child","The Good Parts","The Greatest Showman: Reimagined","The Green Trip","The Hardest Love","The Head And The Heart","The Human Condition","The Infamous","The Lady Killer","The Last Don II","The Lion King","The Lockdown Sessions","The London Sessions","The Lord Of The Rings: The Fellowship Of The Ring","The Lost Boy","The Magic Of Christmas / The Christmas Song","The Marshall Mathers LP","The Martin Garrix Collection","The Melodic Blue","The Mockingbird & The Crow","The Pains Of Growing","The Papercut Chronicles","The Perfect Luv Tape","The Pinkprint","The Predator","The Queen Is Dead","The ReVe Festival: Finale","The Rise And Fall Of Ziggy Stardust And The Spiders From Mars","The Rising Tied","The River","The Stone Roses","The Story Of Us","The Stranger","The Sufferer & The Witness","The Sun's Tirade","The Temptations Sing Smokey","The Time Of Our Lives","The Way It Is","The Wonderful World Of Sam Cooke","The Writing's On The Wall","The Young And The Hopeless","Therapy","Therapy Session","There Is More (Live)","There Is Nothing Left To Lose","These Things Happen","Third Eye Blind","This Is Me...Then","This Unruly Mess I've Made","Threat to Survival","Thrill Of The Chase","Time","Timelezz","To Let A Good Thing Die","To Pimp A Butterfly","Toast To Our Differences","Todos Os Cantos, Vol. 1 (Ao Vivo)","Too Hard","Torches X","Total Xanarchy","Toto IV","Toulouse Street","Tourist History","Toxicity","Tragic Kingdom","Tranquility Base Hotel & Casino","Traumazine","Traveler","Tres Hombres","Trip At Knight","Tron: Legacy","True Blue","True Colors","Trustfall","Tu Veneno Mortal","Tudo Em Paz","Ubuntu","Ugly Is Beautiful","Ultra 2021","Una Mattina","Unbroken","Uncovered","Under Pressure","Unsponsored Content","Unstoppable","Unwritten","Urban Flora","Urban Hymns","Use Your Illusion I","Veneer","Versions Of Me","Vibes","Vice Versa","Vices & Virtues","Victory","Vida","Viejo Marihuano","Visualízate","Walk Away","Walk Me Home...","Watch The Throne","Wave","We Broke The Rules","We Love You Tecca","We Love You Tecca 2","Weezer (Green Album)","Welcome To The Madhouse","Westlife","What A Time To Be Alive","What Do You Think About The Car?","What Is Love?","What Makes You Country","What Separates Me From You","What You See Is What You Get / What You See Ain't Always What You Get","When It's Dark Out","When We All Fall Asleep, Where Do We Go?","Where The Light Is","While The World Was Burning","White Pony","Whitney","Who Really Cares","Who You Are","Who's Next","Wide Open","Wilder Mind","Wildfire","Willy And The Poor Boys","Wings / You Never Walk Alone","Wish","Wish You Were Here","Without Warning","Wonder","X&Y","XOXO","Y Que Quede Claro","YBN: The Mixtape","Yo Creo","You Will Regret","Youngblood","Younger Now","Youth"],artist:["$NOT","$uicideboy$","(G)I-DLE","*NSYNC","2 Chainz","21 Savage","6LACK","? & The Mysterians","A Boogie Wit da Hoodie","A Taste of Honey","A Tribe Called Quest","A-Ha","ABBA","AC/DC","AJ Tracey","ATEEZ","Ace of Base","Adele","Ado","Aerosmith","Agust D","Aitana","Al Dexter & his Troopers","Al Green","Al Jolson","Al Martino","Alan Jackson","Alannah Myles","Alec Benjamin","Alejandro Sanz","Alesso","Alfredo Olivas","Ali Gatie","Alice In Chains","Alina Baraz","All Time Low","All-4-One","All-American Rejects","Alok","America","American Quartet","Amii Stewart","Amitabh Bhattacharya","Ana Castela","Anderson .Paak","Andy Grammer","Angus & Julia Stone","Anirudh Ravichander","Anita Ward","Anitta","Anton Karas","Anuel AA","Arcade Fire","Archie Bell & The Drells","Archies","Aretha Franklin","Arizona Zervas","Armin van Buuren","Arthur Conley","Artie Shaw","Asake","Asees Kaur","Association","Atif Aslam","Audioslave","Aventura","Avril Lavigne","Aya Nakamura","B J Thomas","B.o.B","BLACKPINK","BONES","BROCKHAMPTON","BTS","Baby Keem","Bachman-Turner Overdrive","Backstreet Boys","Bad Bunny","Badshah","Bailey Zimmerman","Banda El Recodo","Barbra Streisand","Barry White","Bazzi","Bebe Rexha","Becky G","Becky Hill","Bee Gees","Ben Bernie","Ben Howard","Ben Selvin","Berlin","Bessie Smith","Bethel Music","Bette Midler","Beyonce","Bibi Blocksberg","Bibi und Tina","BigXthaPlug","Bill Doggett","Bill Haley & his Comets","Bill Withers","Billy Davis Jr","Billy Joel","Billy Paul","Billy Preston","Billy Swan","Birdy","Bizarrap","Blake Shelton","Blur","Bob Marley & The Wailers","Bob Seger","Bobby Darin","Bobby Lewis","Bobby McFerrin","Bobby Vinton","Boney M.","Bonez MC","Bonnie Tyler","Booba","Boston","BoyWithUke","Boyce Avenue","Bradley Cooper","Bread","Brent Faiyaz","Brett Young","Bring Me The Horizon","Britney Spears","Brooks & Dunn","Bruce Channel","Bruno & Marrone","Bryan Adams","Bryce Vine","Buddy Holly","Burna Boy","C. Tangana","CKay","CRO","Camilo","Capital Bra","Captain & Tennille","Cardi B","Carin Leon","Carlos Vives","Carly Simon","Carpenters","Cavetown","Celine Dion","Central Cee","Chaka Khan","Champs","Charlie Rich","Chayanne","Cheat Codes","Cher","Chic","Chicago","Chris Brown","Chris Isaak","Chris Young","Christina Aguilera","Christina Perri","Christopher Cross","Chuck Berry","Ciara","Cigarettes After Sex","Cliff Edwards (Ukelele Ike)","Cody Johnson","Colbie Caillat","Colby O'Donis","Cole Swindell","Coleman Hawkins","Contours","Coolio","Count Basie","Cris Mj","Culture Club","Cyndi Lauper","D-Block Europe","DAY6","DJ Khaled","DJ Luian","DJ Nelson","DMX","DNCE","DaVido","Dadju","Daft Punk","Dan + Shay","Daniel Powter","Danny Ocean","Darius Rucker","Dave","David Bowie","David Guetta","Daya","Dean Martin","Deee-Lite","Deep Purple","Deftones","Demi Lovato","Dennis Lloyd","Denzel Curry","Dermot Kennedy","Desiigner","Devo","Dewa 19","Dexys Midnight Runners","Diddy","Dido","Die drei !!!","Diego & Victor Hugo","Diljit Dosanjh","Dimitri Vegas & Like Mike","Dinah Shore","Dionne Warwick","Dire Straits","Disclosure","Dixie Cups","Doja Cat","Dolly Parton","Don Diablo","Don Henley","Don McLean","Don Omar","Donna Summer","Donovan","Dr. Dre","Drake","Dreamville","Dua Lipa","EMF","ENHYPEN","Earth, Wind & Fire","Ed Sheeran","Eddie Cantor","Eddie Cochran","Eddy Howard","Edgar Winter Group","Edwin Hawkins Singers","Edwin Starr","El Alfa","Eladio Carrion","Electric Light Orchestra","Elevation Worship","Ella Henderson","Ellie Goulding","Elton John","Elvis Presley","Empire of the Sun","En Vogue","Enrique Iglesias","Eslabon Armado","Ethel Waters","Etta James","Evanescence","Exile","Extreme","Faith Hill","Fall Out Boy","Fanny Brice","Farruko","Fats Domino","Fats Waller","Feid","Felix Jaehn","Fergie","Fetty Wap","Fiersa Besari","Fifth Harmony","Fine Young Cannibals","Five Finger Death Punch","Fleetwood Mac","Flo-Rida","Florence + The Machine","Flume","Foo Fighters","Foreigner","Foster The People","Four Aces","Frank Ocean","Frank Sinatra","Frankie Avalon","Frankie Valli","Fred Astaire","Freda Payne","Freddie Dredd","Freddy Fender","French Montana","Fuerza Regida","Fujii Kaze","Future","G-Eazy","Garfunkel and Oates","Gary Lewis & The Playboys","Gary Numan","Gene Autry","Gene Chandler","Gene Vincent","George Michael","George Strait","Gera MX","Ghost","Ghostemane","Gigi D'Agostino","Gladys Knight & The Pips","Glass Animals","Glee Cast","Gloria Gaynor","Godsmack","Gorillaz","Gotye","Grand Funk Railroad","Green Day","Grouplove","Grupo Firme","Grupo Marca Registrada","Gryffin","Gucci Mane","Guess Who","Gunna","Gusttavo Lima","Guy Mitchell","Gwen Stefani","Gzuz","H.E.R.","HARDY","Hailee Steinfeld","Halsey","Hans Zimmer","Harris Jayaraj","Harry Chapin","Harry James","Harry Nilsson","Harry Styles","Hayley Williams","Herb Alpert","Herman's Hermits","Hillsong UNITED","Hillsong Worship","Hollywood Undead","Honey Cone","Hoobastank","Hues Corporation","I Prevail","ITZY","IVE","Ice Cube","Ice Spice","Iggy Azalea","Imagine Dragons","Incubus","Internet Money","Isaac Hayes","J Geils Band","J. Cole","JAY-Z","JJ Lin","JP Saxe","JVKE","Jack Harlow","Jack Johnson","Jackie Wilson","Jacquees","James Arthur","James Brown","James TW","James Taylor","Jamie Foxx","Janet Jackson","Janis Joplin","Jason Aldean","Jason Mraz","Jay Chou","Jay Sean","Jay Wheeler","Jaymes Young","Jean Knight","Jeezy","Jennifer Lopez","Jennifer Warnes","Jeremih","Jeremy Zucker","Jerry Lee Lewis","Jerry Murad's Harmonicats","Jess Glynne","Jessie J","Jewel","Jimi Hendrix","Jimin","Jimmie Rodgers","Jimmy Dean","Jo Stafford","Joan Jett & The Blackhearts","Joao Gilberto","Joel Corry","John Fred & The Playboy Band","John Legend","John Mayer","John Williams","Johnnie Ray","Johnnie Taylor","Johnny Cash","Johnny Horton","Johnny Mathis","Johnny Mercer","Johnny Nash","Joji","Jon Bellion","Jonas Blue","Jonas Brothers","Joni James","Jorja Smith","Juan Gabriel","Juan Luis Guerra 4.40","Juanes","Juice Newton","Julia Michaels","Justin Bieber","Justin Quiles","KALEO","KAROL G","KAYTRANADA","KK","KSI","KYLE","Kacey Musgraves","Kane Brown","Kanye West","Karan Aujla","Kate Smith","Katy Perry","Kay Kyser","Ke$ha","Kehlani","Kelly Clarkson","Kenny Chesney","Kenny Loggins","Kenny Rogers","Kenshi Yonezu","Kenya Grace","Kevin Gates","Key Glock","Khalid","Kim Carnes","Kim Petras","Kimbra","Kina","King Gnu","Kings of Leon","Kingsmen","Kitty Kallen","Kodak Black","Kodaline","Kollegah","Kool & The Gang","Kungs","Kygo","Kylie Minogue","LE SSERAFIM","LISA","LMFAO","LUDMILLA","La Adictiva Banda San José de Mesillas","La Oreja de Van Gogh","Labrinth","Lady Antebellum","Lady GaGa","Lainey Wilson","Lana Del Rey","Latto","Lauryn Hill","Lauv","League of Legends","Lee Brice","Leon Bridges","Leona Lewis","Lesley Gore","Leslie Odom Jr.","Liam Payne","Lifehouse","Lil Baby","Lil Dicky","Lil Durk","Lil Mosey","Lil Nas X","Lil Pump","Lil Skies","Lil Tjay","Lil Uzi Vert","Lil Yachty","Lil' Kim","Lil' Wayne","Lin-Manuel Miranda","Linkin Park","Lionel Richie","Lipps Inc","Lisa Loeb","Little Peggy March","Little Richard","Lofi Fruits Music","Lord Huron","Los Del Rio","Los Dos Carnales","Los Lobos","Los Temerarios","Los Tigres Del Norte","Los Tucanes De Tijuana","Lou Reed","Loud Luxury","Louis Jordan","Louis Tomlinson","Love Unlimited","Lovin' Spoonful","Luan Santana","Luciano","Luis Miguel","Luis R Conriquez","Lulu","Lunay","Lupe Fiasco","M","MAX","MC Hammer","MC Ryan SP","MKTO","Mabel","Machine Gun Kelly","Madison Beer","Madonna","Mahalini","Major Lazer","Mambo Kingz","Maneskin","Marco Antonio Solís","Margaret Whiting","Maria Becerra","Mario","Mario Lanza","Mark Ronson","Maroon 5","Marshmello","Martin Garrix","Mary Ford","Mary J Blige","Mary J. Blige","Mary Wells","Matoma","Mau y Ricky","Meek Mill","Megadeth","Melanie","Melanie Martinez","Melendi","Men At Work","Metro Boomin","Michael Bublé","Michael Jackson","Michael McDonald","Michael Sembello","Miguel","Mike Posner","Miley Cyrus","Milky Chance","Minnie Riperton","Miracle Tones","Miranda Lambert","Mohit Chauhan","Mon Laferte","Moneybagg Yo","Monsta X","Mora","Morad","Morat","Mother Mother","Motley Crue","Ms. Lauryn Hill","Mumford & Sons","Muse","Mya","Myke Towers","NCT 127","NCT DREAM","NEFFEX","Nadin Amizah","Nancy Sinatra","Nat King Cole","Nate Smith","Natti Natasha","Nayer","Neil Diamond","Neil Sedaka","Nekfeu","Nelly","New Vaudeville Band","Next","Nickelback","Nicki Minaj","Nicki Nicole","Nicky Jam","Nina Simone","Ninho","Nipsey Hussle","Nirvana","Niska","No Doubt","Norah Jones","Normani","OMI","ONE OK ROCK","Oasis","Official HIGE DANdism","Offset","Old Dominion","Oliver Heldens","Olivia Rodrigo","Omah Lay","One Direction","Otis Redding","OutKast","Owl City","P Diddy","P!nk","PLK","PNL","Pamungkas","Passenger","Pat Boone","Patsy Cline","Patti LaBelle","Patti Page","Paul & Paula","Paul Revere & the Raiders","Paul Robeson","Paul Russell","Paul Whiteman","Paula Abdul","Peaches & Herb","Pearl Jam","Pee Wee Hunt","Pee Wee King","Pentatonix","Percy Faith","Percy Sledge","Peso Pluma","Peter Cetera","Peter Gabriel","Peter, Paul & Mary","Pharrell Williams","Pierce The Veil","Pineapple StormTv","Pink Floyd","Pink Sweat$","Piso 21","Pitbull","Plan B","Player","Polo G","Pop Smoke","Portugal. The Man","Pouya","Prince","Prince Royce","Pusha T","Quality Control","Queen","Quinn XCII","R. Kelly","RAF Camora","RAYE","REM","REO Speedwagon","Radiohead","Rag'n'Bone Man","Rage Against The Machine","Rahat Fateh Ali Khan","Rainbow Kitten Surprise","Rammstein","Rauw Alejandro","Ray Charles","Ray Parker Jr","Ray Stevens","Red Foley","Red Hot Chili Peppers","Red Velvet","Regard","Regina Belle","Reik","Rels B","Rema","Ricardo Arjona","Rich The Kid","Rick Astley","Rick Dees & his Cast of Idiots","Rick Ross","Rick Springfield","Ricky Martin","Ricky Nelson","Rihanna","Rita Ora","Ritchie Valens","Rizky Febian","Rob Thomas","Roberta Flack","Robin Schulz","Robin Thicke","Rod Stewart","Rod Wave","Roddy Ricch","Roger Miller","Romeo Santos","Rosemary Clooney","Roxette","Roy Acuff","Roy Orbison","Rudimental","Ruel","Ruth B.","Ryan Lewis","SCH","SEVENTEEN","SWV","Sabaton","Sabrina Carpenter","Sachet Tandon","Sachin-Jigar","Sade","Sam Cooke","Sam Feldt","Sam Hunt","Sam Smith","Sam The Sham & The Pharaohs","Sammy Davis Jr","Sammy Kaye","Santana","Sasha Alex Sloan","Savage Garden","Saweetie","Scorpions","Sean Kingston","Sean Paul","Sebastian Yatra","Sech","Seeb","Sezen Aksu","Sfera Ebbasta","Shaggy","Shania Twain","Shawn Mendes","Sheena Easton","Shinedown","Shubh","Sia","Sid Sriram","Sidhu Moose Wala","Silk","Silver Convention","Simon & Garfunkel","Sinead O'Connor","Sir Mix-a-Lot","Sister Sledge","Ski Mask The Slump God","Skillet","Skrillex","Sleeping At Last","Smokey Robinson","Snoop Dogg","Snow Patrol","Soda Stereo","Sonu Nigam","Sophie Ellis-Bextor","Spencer Davis Group","Spice Girls","Stan Getz","Starland Vocal Band","Stephen Sanchez","Steve Aoki","Steve Lacy","Steve Winwood","Stevie B","Sting","Stormzy","Strawberry Alarm Clock","Stray Kids","Stromae","Sublime","Sum 41","Summer Walker","Supertramp","Survivor","Swedish House Mafia","System Of A Down","T-Pain","T.I.","TAEYEON","TKKG","TLC","TOMORROW X TOGETHER","TOTO","TWICE","Tag Team","Tainy","Tammi Terrell","Tanishk Bagchi","Tate McRae","Taylor Swift","Tears For Fears","Tems","Tennessee Ernie Ford","Terence Trent D'Arby","Teresa Brewer","Terry Jacks","The Ames Brothers","The Animals","The B52s","The Bangles","The Beatles","The Black Eyed Peas","The Black Keys","The Box Tops","The Chainsmokers","The Chiffons","The Chordettes","The Clash","The Coasters","The Commodores","The Cowsills","The Cranberries","The Crew-Cuts","The Cure","The Detroit Spinners","The Diamonds","The Doobie Brothers","The Doors","The Drifters","The Emotions","The Eurythmics","The Fireballs","The Flamingos","The Foundations","The Four Seasons","The Fray","The Game","The Go Gos","The Goo Goo Dolls","The Head And The Heart","The Hollies","The Ink Spots","The Isley Brothers","The Jackson 5","The Kid LAROI","The Killers","The Kingston Trio","The Kooks","The Lemon Pipers","The Living Tombstone","The Lumineers","The Mamas & The Papas","The Marvelettes","The McCoys","The Mills Brothers","The Miracles","The Monkees","The Moody Blues","The National","The Neighbourhood","The Notorious B.I.G.","The O'Jays","The Offspring","The Osmonds","The Partridge Family","The Penguins","The Pet Shop Boys","The Platters","The Righteous Brothers","The Rolling Stones","The Ronettes","The Score","The Script","The Seekers","The Shangri-Las","The Smashing Pumpkins","The Staple Singers","The Strokes","The Supremes","The Temptations","The Turtles","The Vamps","The Verve","The Village People","The Weavers","The White Stripes","The Young Rascals","The Zombies","Thelma Houston","Thomas Rhett","Three Days Grace","Three Dog Night","Three Man Down","Timbaland","Timmy Trumpet","Toby Keith","Tom Jones","Tom Petty and the Heartbreakers","Tommy Dorsey","Tommy Edwards","Tommy James & the Shondells","Tone Loc","Toni Braxton","Topic","Tory Lanez","Tove Lo","Trevor Daniel","Trey Songz","Trippie Redd","Trueno","Tulsi Kumar","Tulus","Twenty One Pilots","Two Feet","Ty Dolla $ign","Tyga","Tyler Hubbard","U2","UB40","UZI","Ufo361","Upchurch","V","Vampire Weekend","Van McCoy","Van Morrison","Vance Joy","Vanessa Carlton","Vanessa Williams","Vera Lynn","Vernon Dalhart","Vicente Fernandez","Vishal-Shekhar","Volbeat","WILLOW","Wale","Wallows","Weezer","Wham!","Whitney Houston","Why Don't We","Wilbert Harrison","Wilson Phillips","Wiz Khalifa","Woody Guthrie","Wyclef Jean","XXXTENTACION","Xavi","YG","YNW Melly","YOASOBI","Yandel","Years & Years","Yeat","Yo Gotti","Young Dolph","Young Miko","Young Thug","YoungBoy Never Broke Again","Yung Gravy","Yuuri","Yuvan Shankar Raja","ZAYN","ZZ Top","Zac Brown Band","Zach Bryan","Zara Larsson","aespa","benny blanco","blink-182","d4vd","deadmau5","girl in red","gnash","iann dior","will.i.am"],genre:["Acid House","Acid Jazz","Acid Rock","Acoustic","Acoustic Blues","Afro-Pop","Afrobeat","Alt-Rock","Alternative","Ambient","American Trad Rock","Americana","Anime","Arena Rock","Art-Rock","Avant-Garde","Avant-Punk","Baladas y Boleros","Barbershop","Baroque","Bebop","Big Band","Black Metal","Blue Note","Bluegrass","Blues","Boogaloo","Bop","Bossa Nova","Bounce","Brazilian Funk","Breakbeat","Britpop","CCM","Cajun","Cantopop","Celtic","Celtic Folk","Chamber Music","Chant","Chanukah","Chicago Blues","Chicago House","Chicano","Children’s Music","Chill","Choral","Christian","Christmas","Classical","Club","College Rock","Conjunto","Cool Jazz","Country","Crunk","Dance","Dancehall","Death Metal","Deep House","Delta Blues","Detroit Techno","Dirty South","Disco","Disney","Dixieland","Doo-wop","Downtempo","Dream Pop","Drill","Drinking Songs","Drone","Drum'n'bass","Dub","Dubstep","EDM","Early Music","East Coast Rap","Easter","Easy Listening","Eclectic","Electric Blues","Electro","Electronic","Electronica","Emo","Enka","Environmental","Ethio-jazz","Experimental","Experimental Rock","Flamenco","Folk","Folk-Rock","Forro","French Pop","Funk","Fusion","Gangsta Rap","Garage","German Folk","German Pop","Glam Rock","Gospel","Goth","Grime","Grindcore","Groove","Grunge","Hair Metal","Halloween","Happy","Hard Bop","Hard Dance","Hard Rock","Hardcore","Hardcore Punk","Hardcore Rap","Hardstyle","Healing","Heavy Metal","High Classical","Hip Hop","Holiday","Honky Tonk","House","IDM","Impressionist","Indie","Industrial","Instrumental","J-Dance","J-Idol","J-Pop","J-Punk","J-Rock","J-Ska","J-Synth","Jackin House","Jam Bands","Japanese Pop","Jazz","Jungle","K-Pop","Karaoke","Kayokyoku","Kids","Kitsch","Klezmer","Krautrock","Latin","Latin Jazz","Latin Rap","Local","Lounge","Lullabies","MPB","Mainstream Jazz","Malay","Mandopop","March","Mariachi","Mawwal","Medieval","Meditation","Metal","Metalcore","Minimal Techno","Minimalism","Modern","Motown","Mugham","Musicals","Musique Concrète","Nature","Neo-Soul","Nerdcore","New Acoustic","New Age","New Mex","New Wave","No Wave","Noise","Nordic","Novelty","OPM","Oi!","Old School Rap","Opera","Orchestral","Original Score","Outlaw Country","Pagode","Party","Piano","Polka","Pop","Pop Film","Pop Latino","Post Dubstep","Power Pop","Praise & Worship","Progressive House","Progressive Rock","Proto-punk","Psych Rock","Psychedelic","Punk","Punk Rock","Qawwali","Quiet Storm","R&B","Ragtime","Rainy Day","Rap","Reggae","Reggaeton","Regional Mexicano","Relaxation","Renaissance","Retro","Rock","Rockabilly","Rocksteady","Romance","Romantic","Roots Reggae","Roots Rock","SKA","Sad","Salsa","Samba","Second Line","Sertanejo","Shaabi","Shoegaze","Sleep","Smooth Jazz","Soft Rock","Soul","Soundtrack","Southern Gospel","Southern Rock","Space Rock","Stage And Screen","Steampunk","Summer","Surf","Swamp Pop","Swing","Synth Pop","Tango","Techno","Teen Pop","Tejano","Tex-Mex","Thanksgiving","Traditional","Trance","Trip Hop","Tropical","Underground Rap","Urban","Urban Cowboy","West Coast Rap","Western Swing","World","Worldbeat","Zydeco"],song_name:["(Everything I Do) I Do it For You","(Ghost) Riders in the Sky","(I Can't Get No) Satisfaction","(I've Got a Gal In) Kalamazoo","(I've Had) the Time of My Life","(It's No) Sin","(Just Like) Starting Over","(Let Me Be Your) Teddy Bear","(Put Another Nickel In) Music! Music! Music!","(Sexual) Healing","(Sittin' On) the Dock of the Bay","(They Long to Be) Close to You","(You Keep Me) Hangin' On","(You're My) Soul & Inspiration","(Your Love Keeps Lifting Me) Higher & Higher","12th Street Rag","1999","19th Nervous Breakdown","50 Ways to Leave Your Lover","9 to 5","96 Tears","A Boy Named Sue","A Hard Day's Night","A String of Pearls","A Thousand Miles","A Tree in the Meadow","A Whiter Shade of Pale","A Whole New World (Aladdin's Theme)","A Woman in Love","A-Tisket A-Tasket","ABC","Abracadabra","Ac-cent-tchu-ate the Positive","Addicted to Love","After You've Gone","Afternoon Delight","Again","Against All Odds (Take a Look At Me Now)","Ain't Misbehavin'","Ain't No Mountain High Enough","Ain't No Sunshine","Ain't That a Shame","Airplanes","All Along the Watchtower","All I Have to Do is Dream","All I Wanna Do","All My Lovin' (You're Never Gonna Get It)","All Night Long (All Night)","All Out of Love","All Shook Up","All You Need is Love","Alone","Alone Again (Naturally)","Always On My Mind","American Pie","American Woman","Angie","Another Brick in the Wall (part 2)","Another Day in Paradise","Another Night","Another One Bites the Dust","Apologize","April Showers","Aquarius/Let The Sunshine In","Are You Lonesome Tonight?","Arthur's Theme (Best That You Can Do)","As Time Goes By","At Last","At the Hop","Auf Wiederseh'n Sweetheart","Baby Baby","Baby Come Back","Baby Got Back","Baby Love","Baby One More Time","Bad","Bad Day","Bad Girls","Bad Moon Rising","Bad Romance","Baker Street","Ball of Confusion (That's What the World is Today)","Ballad of the Green Berets","Ballerina","Band On the Run","Band of Gold","Battle of New Orleans","Be Bop a Lula","Be My Baby","Be My Love","Beat It","Beautiful Day","Beauty & the Beast","Because I Love You (The Postman Song)","Because You Loved Me","Because of You","Before The Next Teardrop Falls","Begin the Beguine","Behind Closed Doors","Being With You","Believe","Ben","Bennie & the Jets","Besame Mucho","Best of My Love","Bette Davis Eyes","Big Bad John","Big Girls Don't Cry","Billie Jean","Bitter Sweet Symphony","Black Or White","Black Velvet","Blaze of Glory","Bleeding Love","Blue Suede Shoes","Blue Tango","Blueberry Hill","Blurred Lines","Body & Soul","Bohemian Rhapsody","Boogie Oogie Oogie","Boogie Woogie Bugle Boy","Boom Boom Pow","Born in the USA","Born to Be Wild","Born to Run","Boulevard of Broken Dreams","Brand New Key","Brandy (You're A Fine Girl)","Breaking Up is Hard to Do","Breathe","Bridge Over Troubled Water","Brother","Brother Louie","Brown Eyed Girl","Brown Sugar","Build Me Up Buttercup","Burn","Buttons & Bows","Bye","Bye Bye","Bye Bye Love","Caldonia Boogie (What Makes Your Big Head So Hard)","California Dreamin'","California Girls","Call Me","Call Me Maybe","Can You Feel the Love Tonight","Can't Buy Me Love","Can't Get Enough of Your Love","Can't Help Falling in Love","Candle in the Wind '97","Candy Man","Car Wash","Careless Whisper","Cars","Cat's in the Cradle","Cathy's Clown","Celebration","Centerfold","Chain of Fools","Chances Are","Change the World","Chapel of Love","Chattanooga Choo Choo","Chattanoogie Shoe-Shine Boy","Check On It","Cheek to Cheek","Cherish","Cherry Pink & Apple Blossom White","Cold","Colors of the Wind","Come On Eileen","Come On-a My House","Come Together","Coming Up","Cracklin' Rosie","Crazy","Crazy For You","Crazy Little Thing Called Love","Crazy in Love","Creep","Crimson & Clover","Crocodile Rock","Cry","Cry Like a Baby","Crying","Da Doo Ron Ron (When He Walked Me Home)","Dance to the Music","Dancing Queen","Dancing in the Dark","Dancing in the Street","Dardanella","Daydream Believer","December 1963 (Oh What a Night)","Delicado","Dilemma","Disco Duck","Disco Lady","Disturbia","Dizzy","Do That to Me One More Time","Do Wah Diddy Diddy","Do Ya Think I'm Sexy?","Do You Love Me?","Don't Be Cruel","Don't Fence Me In","Don't Go Breaking My Heart","Don't Leave Me This Way","Don't Let the Stars Get in Your Eyes","Don't Let the Sun Go Down On Me","Don't Speak","Don't Stop 'Til You Get Enough","Don't Worry Be Happy","Don't You (Forget About Me)","Don't You Want Me","Doo Wop (That Thing)","Down","Down Hearted Blues","Down Under","Downtown","Dreamlover","Dreams","Drop it Like It's Hot","Drops of Jupiter (Tell Me)","Duke of Earl","E.T.","Earth Angel","Ebony & Ivory","Eight Days a Week","Empire State Of Mind","End of the Road","Endless Love","Escape (The Pina Colada Song)","Eve of Destruction","Every Breath You Take","Every Little Thing She Does is Magic","Everybody Loves Somebody","Everybody Wants to Rule the World","Everyday People","Eye of the Tiger","Faith","Fallin'","Fame","Family Affair","Fantasy","Fast Car","Feel Good Inc","Feel Like Making Love","Fire & Rain","Firework","Flashdance. What a Feeling","Fly Robin Fly","Foolish Games","Footloose","For What It's Worth (Stop","Fortunate Son","Frankenstein","Freak Me","Freebird","Frenesi","Funkytown","Gangsta's Paradise","Georgia On My Mind","Georgy Girl","Get Back","Get Down Tonight","Get Off of My Cloud","Ghostbusters","Gimme Some Lovin'","Girls Just Wanna Have Fun","Give Me Everything","Gives You Hell","Glamorous","Glory of Love","Go Your Own Way","God Bless America","God Bless the Child","Gold Digger","Gonna Make You Sweat (Everybody Dance Now)","Good Lovin'","Good Times","Good Vibrations","Goodbye Yellow Brick Road","Goodnight","Got to Give it Up","Grease","Great Balls of Fire","Greatest Love of All","Green Onions","Green River","Green Tambourine","Grenade","Groove is in the Heart","Groovin'","Gypsies","Hair","Hang On Sloopy","Hanging by a Moment","Hanky Panky","Happy Days Are Here Again","Happy Together","Harbour Lights","Hard to Say I'm Sorry","Harper Valley PTA","Have You Ever Really Loved a Woman?","He'll Have to Go","He's So Fine","He's a Rebel","Heart of Glass","Heart of Gold","Heartbreak Hotel","Hello","Hello Dolly","Help Me","Help!","Here Without You","Here in My Heart","Hero","Hey Baby","Hey Jude","Hey Paula","Hey There","Hey There Delilah","Hey Ya!","Higher Love","Hips don't lie","Hit the Road","Hold On","Hollaback Girl","Honey","Honky Tonk","Honky Tonk Woman","Horse With No Name","Hot Child In The City","Hot Stuff","Hotel California","Hound Dog","House of the Rising Sun","How Deep is Your Love?","How Do I Live?","How Do You Mend a Broken Heart","How High the Moon","How Much is That Doggy in the Window?","How Will I Know","How You Remind Me","How to Save a Life","Hungry Heart","Hurt So Good","I Believe I Can Fly","I Can Dream","I Can Help","I Can See Clearly Now","I Can't Get Next to You","I Can't Get Started","I Can't Go For That (No Can Do)","I Can't Help Myself (Sugar Pie","I Can't Stop Loving You","I Don't Want to Miss a Thing","I Fall to Pieces","I Feel Fine","I Feel For You","I Feel Love","I Get Around","I Got You (I Feel Good)","I Got You Babe","I Gotta Feeling","I Heard it Through the Grapevine","I Honestly Love You","I Just Called to Say I Love You","I Just Wanna Be Your Everything","I Kissed A Girl","I Love Rock 'n' Roll","I Need You Now","I Only Have Eyes For You","I Shot the Sheriff","I Still Haven't Found What I'm Looking For","I Swear","I Think I Love You","I Walk the Line","I Wanna Dance With Somebody (Who Loves Me)","I Wanna Love You","I Want You Back","I Want to Hold Your Hand","I Want to Know What Love Is","I Went to Your Wedding","I Will Always Love You","I Will Follow Him","I Will Survive","I Write the Songs","I'll Be Missing You","I'll Be There","I'll Make Love to You","I'll Never Smile Again","I'll Take You There","I'll Walk Alone","I'll be seeing you","I'm Looking Over a Four Leaf Clover","I'm So Lonesome I Could Cry","I'm Sorry","I'm Walking Behind You","I'm Your Boogie Man","I'm Yours","I'm a Believer","I've Heard That Song Before","If (They Made Me a King)","If I Didn't Care","If You Don't Know Me By Now","If You Leave Me Now","Imagine","In Da Club","In the End","In the Ghetto","In the Mood","In the Summertime","In the Year 2525 (Exordium & Terminus)","Incense & Peppermints","Indian Reservation (The Lament Of The Cherokee Reservation Indian)","Instant Karma","Iris","Ironic","Irreplaceable","It Had to Be You","It's All in the Game","It's My Party","It's Now Or Never","It's Still Rock 'n' Roll to Me","It's Too Late","Jack & Diane","Jailhouse Rock","Jessie's Girl","Jive Talkin'","Johnny B Goode","Joy to the World","Judy in Disguise (With Glasses)","Jump","Jumpin' Jack Flash","Just Dance","Just My Imagination (Running Away With Me)","Just the Way You Are","Kansas City","Karma Chameleon","Keep On Loving You","Killing Me Softly With His Song","King of the Road","Kiss","Kiss & Say Goodbye","Kiss From a Rose","Kiss Me","Kiss On My List","Kiss You All Over","Knock On Wood","Knock Three Times","Kokomo","Kryptonite","Kung Fu Fighting","La Bamba","Lady","Lady Marmalade (Voulez-Vous Coucher Aver Moi Ce Soir?)","Last Train to Clarksville","Layla","Le Freak","Leader of the Pack","Lean On Me","Leaving","Let Me Call You Sweetheart","Let Me Love You","Let it Be","Let it Snow! Let it Snow! Let it Snow!","Let's Dance","Let's Get it On","Let's Groove","Let's Hear it For the Boy","Let's Stay Together","Light My Fire","Lights","Like a Prayer","Like a Rolling Stone","Like a Virgin","Little Darlin'","Little Things Mean a Lot","Live & Let Die","Livin' La Vida Loca","Livin' On a Prayer","Living For the City","Locked Out Of Heaven","Lola","Lonely Boy","Long Cool Woman in a Black Dress","Long Tall Sally","Look Away","Lookin' Out My Back Door","Lose Yourself","Losing My Religion","Louie Louie","Love Child","Love Hangover","Love In This Club","Love Is Blue (L'Amour Est Bleu)","Love Letters in the Sand","Love Me Do","Love Me Tender","Love Shack","Love Theme From 'A Star is Born' (Evergreen)","Love Train","Love Will Keep Us Together","Love is a Many Splendoured Thing","Love to Love You Baby","Love's Theme","Loving You","Low","Macarena","Mack the Knife","Maggie May","Magic","Magic Carpet Ride","Make Love to Me","Make it With You","Makin' Whoopee","Mama Told Me Not to Come","Man in the Mirror","Manana (Is Soon Enough For Me)","Maneater","Maniac","Maybellene","Me & Bobby McGee","Me & Mrs Jones","Memories Are Made of This","Mercy Mercy Me (The Ecology)","Mickey","Midnight Train to Georgia","Minnie the Moocher","Miss You","Miss You Much","Mister Sandman","Mmmbop","Mona Lisa","Monday Monday","Money For Nothing","Mony Mony","Mood Indigo","Moonlight Cocktail","Moonlight Serenade","More Than Words","More Than a Feeling","Morning Train (Nine to Five)","Mr Big Stuff","Mr Brightside","Mr Tambourine Man","Mrs Brown You've Got a Lovely Daughter","Mrs Robinson","Mule Train","Music","My Blue Heaven","My Boyfriend's Back","My Eyes Adored You","My Girl","My Guy","My Heart Will Go On","My Life","My Love","My Man","My Prayer","My Sharona","My Sweet Lord","Na Na Hey Hey (Kiss Him Goodbye)","Nature Boy","Near You","Need You Now","Need You Tonight","Never Gonna Give You Up","Night & Day","Night Fever","Nights in White Satin","No One","No Scrubs","Nobody Does it Better","Nothin' on You","Nothing Compares 2 U","Nothing's Gonna Stop Us Now","Ode To Billie Joe","Oh","Oh Happy Day","Oh My Papa (O Mein Papa)","Ol' Man River","Ole Buttermilk Sky","On Bended Knee","On My Own","On the Atchison","One","One Bad Apple","One More Try","One O'Clock Jump","One Sweet Day","One of These Nights","One of Us","Only The Lonely (Know The Way I Feel)","Only You (And You Alone)","Open Arms","Over There","Over the Rainbow","Paint it Black","Papa Don't Preach","Papa Was a Rolling Stone","Papa's Got a Brand New Bag","Paper Doll","Paper Planes","Paperback Writer","Party Rock Anthem","Peg o' My Heart","Peggy Sue","Pennies From Heaven","Penny Lane","People","People Got to Be Free","Personality","Philadelphia Freedom","Physical","Piano Man","Pick Up the Pieces","Pistol Packin' Mama","Play That Funky Music","Please Mr Postman","Poker Face","Pon De Replay","Pony Time","Pop Muzik","Prisoner of Love","Private Eyes","Promiscuous","Proud Mary","Purple Haze","Purple Rain","Puttin' on the Ritz","Que sera sera (Whatever will be will be)","Queen of Hearts","Rag Doll","Rag Mop","Rags to Riches","Raindrops Keep Falling On My Head","Rapture","Ray of Light","Reach Out (I'll Be There)","Red Red Wine","Rehab","Respect","Return to Sender","Reunited","Revolution","Rhapsody in Blue","Rhinestone Cowboy","Rich Girl","Riders On the Storm","Right Back Where We Started From","Ring My Bell","Ring of Fire","Rock Around the Clock","Rock With You","Rock Your Baby","Rock the Boat","Rock the Casbah","Roll Over Beethoven","Roll With It","Rolling In The Deep","Rosanna","Roses Are Red","Royals","Ruby Tuesday","Rudolph","Rum & Coca-Cola","Runaround Sue","Runaway","Running Scared","Rush Rush","Sailing","Save the Best For Last","Save the Last Dance For Me","Say It Right","Say My Name","Say Say Say","Say You","School's Out","Seasons in the Sun","Secret Love","Sentimental Journey","Sexyback","Sh-Boom (Life Could Be a Dream)","Shadow Dancing","Shake Down","Shake You Down","She Drives Me Crazy","She Loves You","She's a Lady","Shining Star","Shop Around","Shout","Silly Love Songs","Since U Been Gone","Sing","Singing The Blues","Single Ladies (Put A Ring On It)","Sir Duke","Sixteen Tons","Sledgehammer","Sleep Walk","Sleepy Lagoon","Slow Poke","Smells Like Teen Spirit","Smoke Gets in Your Eyes","Smoke On the Water","Smoke! Smoke! Smoke! (That Cigarette)","Smooth","So Much in Love","Soldier Boy","Some Enchanted Evening","Some of These Days","Somebody That I Used to Know","Somebody to Love","Someday","Somethin' Stupid","Something","Soul Man","Spanish Harlem","Spill the Wine","Spinning Wheel","Spirit in the Sky","St George & the Dragonette","St Louis Blues","Stagger Lee","Stairway to Heaven","Stand By Me","Stardust","Stars & Stripes Forever","Stay (I Missed You)","Stayin' Alive","Stop! in the Name of Love","Stormy Weather (Keeps Rainin' All the Time)","Straight Up","Strange Fruit","Stranger On the Shore","Strangers in the Night","Strawberry Fields Forever","Streets of Philadelphia","Stronger","Stuck On You","Sugar Shack","Sugar Sugar","Summer in the City","Summertime Blues","Sunday","Sunshine Superman","Sunshine of Your Love","Superstar","Superstition","Surfin' USA","Suspicious Minds","Swanee","Sweet Caroline (Good Times Never Seemed So Good)","Sweet Child O' Mine","Sweet Dreams (Are Made of This)","Sweet Georgia Brown","Sweet Home Alabama","Sweet Soul Music","Swinging On a Star","T For Texas (Blue Yodel No 1)","TSOP (The Sound of Philadelphia)","Take Me Home","Take My Breath Away","Take On Me","Take The 'A' Train","Take a Bow","Tammy","Tangerine","Tears in Heaven","Tears of a Clown","Temperature","Tennessee Waltz","Tequila","Tha Crossroads","Thank You (Falettinme be Mice Elf Again)","That Lucky Old Sun (Just Rolls Around Heaven All Day)","That Old Black Magic","That'll Be the Day","That's Amore","That's What Friends Are For","That's the Way (I Like It)","That's the Way Love Goes","The Boy is Mine","The Boys of Summer","The Christmas Song (Chestnuts Roasting On An Open Fire)","The End of the World","The First Time Ever I Saw Your Face","The Girl From Ipanema","The Glow-Worm","The Great Pretender","The Gypsy","The Hustle","The Joker","The Last Dance","The Letter","The Loco-Motion","The Long & Winding Road","The Love You Save","The Morning After","The Power of Love","The Prisoner's Song","The Reason","The Rose","The Sign","The Song From Moulin Rouge (Where Is Your Heart)","The Sounds of Silence","The Streak","The Sweet Escape","The Thing","The Tide is High","The Tracks of My Tears","The Twist","The Wanderer","The Way We Were","The Way You Look Tonight","The Way You Move","Theme From 'A Summer Place'","Theme From 'Greatest American Hero' (Believe It Or Not)","Theme From 'Shaft'","There goes my baby","These Boots Are Made For Walking","Third Man Theme","This Diamond Ring","This Guy's in Love With You","This Land is Your Land","This Love","This Ole House","This Used to Be My Playground","Three Coins in the Fountain","Three Times a Lady","Thrift Shop","Thriller","Ticket to Ride","Tie a Yellow Ribbon 'round the Old Oak Tree","Tiger Rag","Tighten Up","Tik-Toc","Till I Waltz Again With You","Till The End of Time","Time After Time","Time of the Season","To Sir","Tom Dooley","Tonight's the Night (Gonna Be Alright)","Too Close","Too Young","Tossing & Turning","Total Eclipse of the Heart","Touch Me","Toxic","Travellin' Band","Travellin' Man","Truly Madly Deeply","Turn! Turn! Turn! (To Everything There is a Season)","Tutti Frutti","Twist & Shout","Two Hearts","U Can't Touch This","U Got it Bad","Umbrella","Un-Break My Heart","Unbelievable","Unchained Melody","Uncle Albert (Admiral Halsey)","Under the Boardwalk","Under the Bridge","Unforgettable","Up Around the Bend","Up Up & Away","Up Where We Belong","Upside Down","Use Somebody","Vaya Con Dios (may God Be With You)","Venus","Vision of Love","Viva La Vida","Vogue","Volare","Wabash Cannonball","Waiting For a Girl Like You","Wake Me Up Before You Go Go","Wake Up Little Susie","Walk Don't Run","Walk Like a Man","Walk Like an Egyptian","Walk On By","Walk On the Wild Side","Walk This Way","Wannabe","Want Ads","Wanted","War","Waterfalls","Wayward Wind","We Are Family","We Are Young","We Are the Champions","We Are the World","We Belong Together","We Built This City","We Can Work it Out","We Didn't Start the Fire","We Found Love","We Got The Beat","We Will Rock You","We've Only Just Begun","Weak","Wedding Bell Blues","West End Blues","West End Girls","What Goes Around Comes Around","What a Fool Believes","What'd I Say","What's Going On?","What's Love Got to Do With It?","Whatcha Say","Wheel of Fortune","When Doves Cry","When You Wish Upon a Star","When a Man Loves a Woman","Where Did Our Love Go","Where is the Love?","Whip It","Whispering","White Christmas","White Rabbit","Whole Lotta Love","Whole Lotta Shakin' Goin' On","Whoomp! (There it Is)","Why Do Fools Fall in Love?","Why Don't You Believe Me?","Wichita Lineman","Wicked Game","Wild Thing","Wild Wild West","Will It Go Round In Circles","Will You Love Me Tomorrow","Winchester Cathedral","Wind Beneath My Wings","Wipe Out","Wishing Well","With Or Without You","Without Me","Without You","Woman","Won't Get Fooled Again","Wooly Bully","Working My Way Back to You","YMCA","Yakety Yak","Yeah!","Yellow Rose of Texas","Yesterday","You Ain't Seen Nothin' Yet","You Always Hurt the One You Love","You Are the Sunshine of My Life","You Belong With Me","You Belong to Me","You Can't Hurry Love","You Don't Bring Me Flowers","You Don't Have to Be a Star (To Be in My Show)","You Light Up My Life","You Make Me Feel Brand New","You Make Me Feel Like Dancing","You Really Got Me","You Send Me","You Sexy Thing","You Were Meant for Me","You make Me Wanna","You'll Never Know","You're Beautiful","You're So Vain","You're Still the One","You're the One That I Want","You've Got a Friend","You've Lost That Lovin' Feelin'","Your Cheatin' Heart","Your Song"]},person:{bio_part:["activist","artist","author","blogger","business owner","coach","creator","designer","developer","dreamer","educator","engineer","entrepreneur","environmentalist","film lover","filmmaker","foodie","founder","friend","gamer","geek","grad","inventor","leader","model","musician","nerd","parent","patriot","person","philosopher","photographer","public speaker","scientist","singer","streamer","student","teacher","traveler","veteran","writer"],bio_pattern:["{{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}}","{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}","{{word.noun}} {{person.bio_supporter}} {{internet.emoji}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}}","{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}} {{internet.emoji}}"],bio_supporter:["advocate","devotee","enthusiast","fan","junkie","lover","supporter"],first_name:{generic:["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aimee","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arden","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","Edd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gayle","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"],female:["Mary","Patricia","Linda","Barbara","Elizabeth","Jennifer","Maria","Susan","Margaret","Dorothy","Lisa","Nancy","Karen","Betty","Helen","Sandra","Donna","Carol","Ruth","Sharon","Michelle","Laura","Sarah","Kimberly","Deborah","Jessica","Shirley","Cynthia","Angela","Melissa","Brenda","Amy","Anna","Rebecca","Virginia","Kathleen","Pamela","Martha","Debra","Amanda","Stephanie","Carolyn","Christine","Marie","Janet","Catherine","Frances","Ann","Joyce","Diane","Alice","Julie","Heather","Teresa","Doris","Gloria","Evelyn","Jean","Cheryl","Mildred","Katherine","Joan","Ashley","Judith","Rose","Janice","Kelly","Nicole","Judy","Christina","Kathy","Theresa","Beverly","Denise","Tammy","Irene","Jane","Lori","Rachel","Marilyn","Andrea","Kathryn","Louise","Sara","Anne","Jacqueline","Wanda","Bonnie","Julia","Ruby","Lois","Tina","Phyllis","Norma","Paula","Diana","Annie","Lillian","Emily","Robin","Peggy","Crystal","Gladys","Rita","Dawn","Connie","Florence","Tracy","Edna","Tiffany","Carmen","Rosa","Cindy","Grace","Wendy","Victoria","Edith","Kim","Sherry","Sylvia","Josephine","Thelma","Shannon","Sheila","Ethel","Ellen","Elaine","Marjorie","Carrie","Charlotte","Monica","Esther","Pauline","Emma","Juanita","Anita","Rhonda","Hazel","Amber","Eva","Debbie","April","Leslie","Clara","Lucille","Jamie","Joanne","Eleanor","Valerie","Danielle","Megan","Alicia","Suzanne","Michele","Gail","Bertha","Darlene","Veronica","Jill","Erin","Geraldine","Lauren","Cathy","Joann","Lorraine","Lynn","Sally","Regina","Erica","Beatrice","Dolores","Bernice","Audrey","Yvonne","Annette","June","Samantha","Marion","Dana","Stacy","Ana","Renee","Ida","Vivian","Roberta","Holly","Brittany","Melanie","Loretta","Yolanda","Jeanette","Laurie","Katie","Kristen","Vanessa","Alma","Sue","Elsie","Beth","Jeanne","Vicki","Carla","Tara","Rosemary","Eileen","Terri","Gertrude","Lucy","Tonya","Ella","Stacey","Wilma","Gina","Kristin","Jessie","Natalie","Agnes","Vera","Willie","Charlene","Bessie","Delores","Melinda","Pearl","Arlene","Maureen","Colleen","Allison","Tamara","Joy","Georgia","Constance","Lillie","Claudia","Jackie","Marcia","Tanya","Nellie","Minnie","Marlene","Heidi","Glenda","Lydia","Viola","Courtney","Marian","Stella","Caroline","Dora","Jo","Vickie","Mattie","Terry","Maxine","Irma","Mabel","Marsha","Myrtle","Lena","Christy","Deanna","Patsy","Hilda","Gwendolyn","Jennie","Nora","Margie","Nina","Cassandra","Leah","Penny","Kay","Priscilla","Naomi","Carole","Brandy","Olga","Billie","Dianne","Tracey","Leona","Jenny","Felicia","Sonia","Miriam","Velma","Becky","Bobbie","Violet","Kristina","Toni","Misty","Mae","Shelly","Daisy","Ramona","Sherri","Erika","Katrina","Claire","Lindsey","Lindsay","Geneva","Guadalupe","Belinda","Margarita","Sheryl","Cora","Faye","Ada","Natasha","Sabrina","Isabel","Marguerite","Hattie","Harriet","Molly","Cecilia","Kristi","Brandi","Blanche","Sandy","Rosie","Joanna","Iris","Eunice","Angie","Inez","Lynda","Madeline","Amelia","Alberta","Genevieve","Monique","Jodi","Janie","Maggie","Kayla","Sonya","Jan","Lee","Kristine","Candace","Fannie","Maryann","Opal","Alison","Yvette","Melody","Luz","Susie","Olivia","Flora","Shelley","Kristy","Mamie","Lula","Lola","Verna","Beulah","Antoinette","Candice","Juana","Jeannette","Pam","Kelli","Hannah","Whitney","Bridget","Karla","Celia","Latoya","Patty","Shelia","Gayle","Della","Vicky","Lynne","Sheri","Marianne","Kara","Jacquelyn","Erma","Blanca","Myra","Leticia","Pat","Krista","Roxanne","Angelica","Johnnie","Robyn","Francis","Adrienne","Rosalie","Alexandra","Brooke","Bethany","Sadie","Bernadette","Traci","Jody","Kendra","Jasmine","Nichole","Rachael","Chelsea","Mable","Ernestine","Muriel","Marcella","Elena","Krystal","Angelina","Nadine","Kari","Estelle","Dianna","Paulette","Lora","Mona","Doreen","Rosemarie","Angel","Desiree","Antonia","Hope","Ginger","Janis","Betsy","Christie","Freda","Mercedes","Meredith","Lynette","Teri","Cristina","Eula","Leigh","Meghan","Sophia","Eloise","Rochelle","Gretchen","Cecelia","Raquel","Henrietta","Alyssa","Jana","Kelley","Gwen","Kerry","Jenna","Tricia","Laverne","Olive","Alexis","Tasha","Silvia","Elvira","Casey","Delia","Sophie","Kate","Patti","Lorena","Kellie","Sonja","Lila","Lana","Darla","May","Mindy","Essie","Mandy","Lorene","Elsa","Josefina","Jeannie","Miranda","Dixie","Lucia","Marta","Faith","Lela","Johanna","Shari","Camille","Tami","Shawna","Elisa","Ebony","Melba","Ora","Nettie","Tabitha","Ollie","Jaime","Winifred","Kristie"],male:["James","John","Robert","Michael","William","David","Richard","Charles","Joseph","Thomas","Christopher","Daniel","Paul","Mark","Donald","George","Kenneth","Steven","Edward","Brian","Ronald","Anthony","Kevin","Jason","Matthew","Gary","Timothy","Jose","Larry","Jeffrey","Frank","Scott","Eric","Stephen","Andrew","Raymond","Gregory","Joshua","Jerry","Dennis","Walter","Patrick","Peter","Harold","Douglas","Henry","Carl","Arthur","Ryan","Roger","Joe","Juan","Jack","Albert","Jonathan","Justin","Terry","Gerald","Keith","Samuel","Willie","Ralph","Lawrence","Nicholas","Roy","Benjamin","Bruce","Brandon","Adam","Harry","Fred","Wayne","Billy","Steve","Louis","Jeremy","Aaron","Randy","Howard","Eugene","Carlos","Russell","Bobby","Victor","Martin","Ernest","Phillip","Todd","Jesse","Craig","Alan","Shawn","Clarence","Sean","Philip","Chris","Johnny","Earl","Jimmy","Antonio","Danny","Bryan","Tony","Luis","Mike","Stanley","Leonard","Nathan","Dale","Manuel","Rodney","Curtis","Norman","Allen","Marvin","Vincent","Glenn","Jeffery","Travis","Jeff","Chad","Jacob","Lee","Melvin","Alfred","Kyle","Francis","Bradley","Jesus","Herbert","Frederick","Ray","Joel","Edwin","Don","Eddie","Ricky","Troy","Randall","Barry","Alexander","Bernard","Mario","Leroy","Francisco","Marcus","Micheal","Theodore","Clifford","Miguel","Oscar","Jay","Jim","Tom","Calvin","Alex","Jon","Ronnie","Bill","Lloyd","Tommy","Leon","Derek","Warren","Darrell","Jerome","Floyd","Leo","Alvin","Tim","Wesley","Gordon","Dean","Greg","Jorge","Dustin","Pedro","Derrick","Dan","Lewis","Zachary","Corey","Herman","Maurice","Vernon","Roberto","Clyde","Glen","Hector","Shane","Ricardo","Sam","Rick","Lester","Brent","Ramon","Charlie","Tyler","Gilbert","Gene","Marc","Reginald","Ruben","Brett","Angel","Nathaniel","Rafael","Leslie","Edgar","Milton","Raul","Ben","Chester","Cecil","Duane","Franklin","Andre","Elmer","Brad","Gabriel","Ron","Mitchell","Roland","Arnold","Harvey","Jared","Adrian","Karl","Cory","Claude","Erik","Darryl","Jamie","Neil","Jessie","Christian","Javier","Fernando","Clinton","Ted","Mathew","Tyrone","Darren","Lonnie","Lance","Cody","Julio","Kelly","Kurt","Allan","Nelson","Guy","Clayton","Hugh","Max","Dwayne","Dwight","Armando","Felix","Jimmie","Everett","Jordan","Ian","Wallace","Ken","Bob","Jaime","Casey","Alfredo","Alberto","Dave","Ivan","Johnnie","Sidney","Byron","Julian","Isaac","Morris","Clifton","Willard","Daryl","Ross","Virgil","Andy","Marshall","Salvador","Perry","Kirk","Sergio","Marion","Tracy","Seth","Kent","Terrance","Rene","Eduardo","Terrence","Enrique","Freddie","Wade","Austin","Stuart","Fredrick","Arturo","Alejandro","Jackie","Joey","Nick","Luther","Wendell","Jeremiah","Evan","Julius","Dana","Donnie","Otis","Shannon","Trevor","Oliver","Luke","Homer","Gerard","Doug","Kenny","Hubert","Angelo","Shaun","Lyle","Matt","Lynn","Alfonso","Orlando","Rex","Carlton","Ernesto","Cameron","Neal","Pablo","Lorenzo","Omar","Wilbur","Blake","Grant","Horace","Roderick","Kerry","Abraham","Willis","Rickey","Jean","Ira","Andres","Cesar","Johnathan","Malcolm","Rudolph","Damon","Kelvin","Rudy","Preston","Alton","Archie","Marco","Wm","Pete","Randolph","Garry","Geoffrey","Jonathon","Felipe","Bennie","Gerardo","Ed","Dominic","Robin","Loren","Delbert","Colin","Guillermo","Earnest","Lucas","Benny","Noel","Spencer","Rodolfo","Myron","Edmund","Garrett","Salvatore","Cedric","Lowell","Gregg","Sherman","Wilson","Devin","Sylvester","Kim","Roosevelt","Israel","Jermaine","Forrest","Wilbert","Leland","Simon","Guadalupe","Clark","Irving","Carroll","Bryant","Owen","Rufus","Woodrow","Sammy","Kristopher","Mack","Levi","Marcos","Gustavo","Jake","Lionel","Marty","Taylor","Ellis","Dallas","Gilberto","Clint","Nicolas","Laurence","Ismael","Orville","Drew","Jody","Ervin","Dewey","Al","Wilfred","Josh","Hugo","Ignacio","Caleb","Tomas","Sheldon","Erick","Frankie","Stewart","Doyle","Darrel","Rogelio","Terence","Santiago","Alonzo","Elias","Bert","Elbert","Ramiro","Conrad","Pat","Noah","Grady","Phil","Cornelius","Lamar","Rolando","Clay","Percy","Dexter","Bradford","Merle","Darin","Amos","Terrell","Moses","Irvin","Saul","Roman","Darnell","Randal","Tommie","Timmy","Darrin","Winston","Brendan","Toby","Van","Abel","Dominick","Boyd","Courtney","Jan","Emilio","Elijah","Cary","Domingo","Santos","Aubrey","Emmett","Marlon","Emanuel","Jerald","Edmond"]},gender:["Agender","Androgyne","Androgynous","Bigender","Cis female","Cis male","Cis man","Cis woman","Cis","Cisgender female","Cisgender male","Cisgender man","Cisgender woman","Cisgender","Demi-boy","Demi-girl","Demi-man","Demi-woman","Demiflux","Demigender","F2M","FTM","Female to male trans man","Female to male transgender man","Female to male transsexual man","Female to male","Gender fluid","Gender neutral","Gender nonconforming","Gender questioning","Gender variant","Genderflux","Genderqueer","Hermaphrodite","Intersex man","Intersex person","Intersex woman","Intersex","M2F","MTF","Male to female trans woman","Male to female transgender woman","Male to female transsexual woman","Male to female","Man","Multigender","Neither","Neutrois","Non-binary","Omnigender","Other","Pangender","Polygender","T* man","T* woman","Trans female","Trans male","Trans man","Trans person","Trans woman","Trans","Transsexual female","Transsexual male","Transsexual man","Transsexual person","Transsexual woman","Transsexual","Transgender female","Transgender person","Transmasculine","Trigender","Two* person","Two-spirit person","Two-spirit","Woman","Xenogender"],job_area:["Solutions","Program","Brand","Security","Research","Marketing","Directives","Implementation","Integration","Functionality","Response","Paradigm","Tactics","Identity","Markets","Group","Division","Applications","Optimization","Operations","Infrastructure","Intranet","Communications","Web","Branding","Quality","Assurance","Mobility","Accounts","Data","Creative","Configuration","Accountability","Interactions","Factors","Usability","Metrics"],job_descriptor:["Lead","Senior","Direct","Corporate","Dynamic","Future","Product","National","Regional","District","Central","Global","Customer","Investor","International","Legacy","Forward","Internal","Human","Chief","Principal"],job_title_pattern:["{{person.jobDescriptor}} {{person.jobArea}} {{person.jobType}}"],job_type:["Supervisor","Associate","Executive","Liaison","Officer","Manager","Engineer","Specialist","Director","Coordinator","Administrator","Architect","Analyst","Designer","Planner","Orchestrator","Technician","Developer","Producer","Consultant","Assistant","Facilitator","Agent","Representative","Strategist"],last_name:{generic:["Abbott","Abernathy","Abshire","Adams","Altenwerth","Anderson","Ankunding","Armstrong","Auer","Aufderhar","Bahringer","Bailey","Balistreri","Barrows","Bartell","Bartoletti","Barton","Bashirian","Batz","Bauch","Baumbach","Bayer","Beahan","Beatty","Bechtelar","Becker","Bednar","Beer","Beier","Berge","Bergnaum","Bergstrom","Bernhard","Bernier","Bins","Blanda","Blick","Block","Bode","Boehm","Bogan","Bogisich","Borer","Bosco","Botsford","Boyer","Boyle","Bradtke","Brakus","Braun","Breitenberg","Brekke","Brown","Bruen","Buckridge","Carroll","Carter","Cartwright","Casper","Cassin","Champlin","Christiansen","Cole","Collier","Collins","Conn","Connelly","Conroy","Considine","Corkery","Cormier","Corwin","Cremin","Crist","Crona","Cronin","Crooks","Cruickshank","Cummerata","Cummings","Dach","D'Amore","Daniel","Dare","Daugherty","Davis","Deckow","Denesik","Dibbert","Dickens","Dicki","Dickinson","Dietrich","Donnelly","Dooley","Douglas","Doyle","DuBuque","Durgan","Ebert","Effertz","Emard","Emmerich","Erdman","Ernser","Fadel","Fahey","Farrell","Fay","Feeney","Feest","Feil","Ferry","Fisher","Flatley","Frami","Franecki","Franey","Friesen","Fritsch","Funk","Gerhold","Gerlach","Gibson","Gislason","Gleason","Gleichner","Glover","Goldner","Goodwin","Gorczany","Gottlieb","Goyette","Grady","Graham","Grant","Green","Greenfelder","Greenholt","Grimes","Gulgowski","Gusikowski","Gutkowski","Gutmann","Haag","Hackett","Hagenes","Hahn","Haley","Halvorson","Hamill","Hammes","Hand","Hane","Hansen","Harber","Harris","Hartmann","Harvey","Hauck","Hayes","Heaney","Heathcote","Hegmann","Heidenreich","Heller","Herman","Hermann","Hermiston","Herzog","Hessel","Hettinger","Hickle","Hilll","Hills","Hilpert","Hintz","Hirthe","Hodkiewicz","Hoeger","Homenick","Hoppe","Howe","Howell","Hudson","Huel","Huels","Hyatt","Jacobi","Jacobs","Jacobson","Jakubowski","Jaskolski","Jast","Jenkins","Jerde","Johns","Johnson","Johnston","Jones","Kassulke","Kautzer","Keebler","Keeling","Kemmer","Kerluke","Kertzmann","Kessler","Kiehn","Kihn","Kilback","King","Kirlin","Klein","Kling","Klocko","Koch","Koelpin","Koepp","Kohler","Konopelski","Koss","Kovacek","Kozey","Krajcik","Kreiger","Kris","Kshlerin","Kub","Kuhic","Kuhlman","Kuhn","Kulas","Kunde","Kunze","Kuphal","Kutch","Kuvalis","Labadie","Lakin","Lang","Langosh","Langworth","Larkin","Larson","Leannon","Lebsack","Ledner","Leffler","Legros","Lehner","Lemke","Lesch","Leuschke","Lind","Lindgren","Littel","Little","Lockman","Lowe","Lubowitz","Lueilwitz","Luettgen","Lynch","Macejkovic","MacGyver","Maggio","Mann","Mante","Marks","Marquardt","Marvin","Mayer","Mayert","McClure","McCullough","McDermott","McGlynn","McKenzie","McLaughlin","Medhurst","Mertz","Metz","Miller","Mills","Mitchell","Moen","Mohr","Monahan","Moore","Morar","Morissette","Mosciski","Mraz","Mueller","Muller","Murazik","Murphy","Murray","Nader","Nicolas","Nienow","Nikolaus","Nitzsche","Nolan","Oberbrunner","O'Connell","O'Conner","O'Hara","O'Keefe","O'Kon","Okuneva","Olson","Ondricka","O'Reilly","Orn","Ortiz","Osinski","Pacocha","Padberg","Pagac","Parisian","Parker","Paucek","Pfannerstill","Pfeffer","Pollich","Pouros","Powlowski","Predovic","Price","Prohaska","Prosacco","Purdy","Quigley","Quitzon","Rath","Ratke","Rau","Raynor","Reichel","Reichert","Reilly","Reinger","Rempel","Renner","Reynolds","Rice","Rippin","Ritchie","Robel","Roberts","Rodriguez","Rogahn","Rohan","Rolfson","Romaguera","Roob","Rosenbaum","Rowe","Ruecker","Runolfsdottir","Runolfsson","Runte","Russel","Rutherford","Ryan","Sanford","Satterfield","Sauer","Sawayn","Schaden","Schaefer","Schamberger","Schiller","Schimmel","Schinner","Schmeler","Schmidt","Schmitt","Schneider","Schoen","Schowalter","Schroeder","Schulist","Schultz","Schumm","Schuppe","Schuster","Senger","Shanahan","Shields","Simonis","Sipes","Skiles","Smith","Smitham","Spencer","Spinka","Sporer","Stamm","Stanton","Stark","Stehr","Steuber","Stiedemann","Stokes","Stoltenberg","Stracke","Streich","Stroman","Strosin","Swaniawski","Swift","Terry","Thiel","Thompson","Tillman","Torp","Torphy","Towne","Toy","Trantow","Tremblay","Treutel","Tromp","Turcotte","Turner","Ullrich","Upton","Vandervort","Veum","Volkman","Von","VonRueden","Waelchi","Walker","Walsh","Walter","Ward","Waters","Watsica","Weber","Wehner","Weimann","Weissnat","Welch","West","White","Wiegand","Wilderman","Wilkinson","Will","Williamson","Willms","Windler","Wintheiser","Wisoky","Wisozk","Witting","Wiza","Wolf","Wolff","Wuckert","Wunsch","Wyman","Yost","Yundt","Zboncak","Zemlak","Ziemann","Zieme","Zulauf"]},last_name_pattern:{generic:[{value:"{{person.last_name.generic}}",weight:95},{value:"{{person.last_name.generic}}-{{person.last_name.generic}}",weight:5}]},middle_name:{generic:["Addison","Alex","Anderson","Angel","Arden","August","Austin","Avery","Bailey","Billie","Blake","Bowie","Brooklyn","Cameron","Charlie","Corey","Dakota","Drew","Elliott","Ellis","Emerson","Finley","Gray","Greer","Harper","Hayden","Jaden","James","Jamie","Jordan","Jules","Kai","Kendall","Kennedy","Kyle","Leslie","Logan","London","Marlowe","Micah","Nico","Noah","North","Parker","Phoenix","Quinn","Reagan","Reese","Reign","Riley","River","Robin","Rory","Rowan","Ryan","Sage","Sasha","Sawyer","Shawn","Shiloh","Skyler","Taylor"],female:["Abigail","Adele","Alex","Alice","Alisha","Amber","Amelia","Amora","Anaïs","Angelou","Anika","Anise","Annabel","Anne","Aphrodite","Aretha","Arya","Ashton","Aster","Audrey","Avery","Bailee","Bay","Belle","Beth","Billie","Blair","Blaise","Blake","Blanche","Blue","Bree","Brielle","Brienne","Brooke","Caleen","Candice","Caprice","Carelyn","Caylen","Celine","Cerise","Cia","Claire","Claudia","Clementine","Coral","Coraline","Dahlia","Dakota","Dawn","Della","Demi","Denise","Denver","Devine","Devon","Diana","Dylan","Ebony","Eden","Eleanor","Elein","Elizabeth","Ellen","Elodie","Eloise","Ember","Emma","Erin","Eyre","Faith","Farrah","Fawn","Fayre","Fern","France","Francis","Frida","Genisis","Georgia","Grace","Gwen","Harley","Harper","Hazel","Helen","Hippolyta","Holly","Hope","Imani","Iowa","Ireland","Irene","Iris","Isa","Isla","Ivy","Jade","Jane","Jazz","Jean","Jess","Jett","Jo","Joan","Jolie","Jordan","Josie","Journey","Joy","Jules","Julien","Juliet","Juniper","Justice","Kali","Karma","Kat","Kate","Kennedy","Keva","Kylie","Lake","Lane","Lark","Layla","Lee","Leigh","Leona","Lexi","London","Lou","Louise","Love","Luna","Lux","Lynn","Lyric","Maddie","Mae","Marie","Matilda","Maude","Maybel","Meadow","Medusa","Mercy","Michelle","Mirabel","Monroe","Morgan","Nalia","Naomi","Nova","Olive","Paige","Parker","Pax","Pearl","Penelope","Phoenix","Quinn","Rae","Rain","Raven","Ray","Raye","Rebel","Reese","Reeve","Regan","Riley","River","Robin","Rory","Rose","Royal","Ruth","Rylie","Sage","Sam","Saturn","Scout","Serena","Sky","Skylar","Sofia","Sophia","Storm","Sue","Suzanne","Sydney","Taylen","Taylor","Teagan","Tempest","Tenley","Thea","Trinity","Valerie","Venus","Vera","Violet","Willow","Winter","Xena","Zaylee","Zion","Zoe"],male:["Ace","Aiden","Alexander","Ander","Anthony","Asher","August","Aziel","Bear","Beckham","Benjamin","Buddy","Calvin","Carter","Charles","Christopher","Clyde","Cooper","Daniel","David","Dior","Dylan","Elijah","Ellis","Emerson","Ethan","Ezra","Fletcher","Flynn","Gabriel","Grayson","Gus","Hank","Harrison","Hendrix","Henry","Houston","Hudson","Hugh","Isaac","Jack","Jackson","Jacob","Jakobe","James","Jaxon","Jaxtyn","Jayden","John","Joseph","Josiah","Jude","Julian","Karsyn","Kenji","Kobe","Kylo","Lennon","Leo","Levi","Liam","Lincoln","Logan","Louis","Lucas","Lucky","Luke","Mason","Mateo","Matthew","Maverick","Michael","Monroe","Nixon","Ocean","Oliver","Otis","Otto","Owen","Ozzy","Parker","Rocky","Samuel","Sebastian","Sonny","Teddy","Theo","Theodore","Thomas","Truett","Walter","Warren","Watson","William","Wison","Wyatt","Ziggy","Zyair"]},name:[{value:"{{person.firstName}} {{person.lastName}}",weight:49},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}}",weight:7},{value:"{{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:7},{value:"{{person.prefix}} {{person.firstName}} {{person.lastName}} {{person.suffix}}",weight:1}],prefix:{generic:["Dr.","Miss","Mr.","Mrs.","Ms."],female:["Mrs.","Ms.","Miss","Dr."],male:["Mr.","Dr."]},sex:["female","male"],suffix:["Jr.","Sr.","I","II","III","IV","V","MD","DDS","PhD","DVM"],western_zodiac_sign:["Aquarius","Pisces","Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn"]},phone_number:{format:{human:["!##-!##-####","(!##) !##-####","1-!##-!##-####","!##.!##.####","!##-!##-#### x###","(!##) !##-#### x###","1-!##-!##-#### x###","!##.!##.#### x###","!##-!##-#### x####","(!##) !##-#### x####","1-!##-!##-#### x####","!##.!##.#### x####","!##-!##-#### x#####","(!##) !##-#### x#####","1-!##-!##-#### x#####","!##.!##.#### x#####"],international:["+1!##!######"],national:["(!##) !##-####"]}},science:{chemical_element:[{symbol:"H",name:"Hydrogen",atomicNumber:1},{symbol:"He",name:"Helium",atomicNumber:2},{symbol:"Li",name:"Lithium",atomicNumber:3},{symbol:"Be",name:"Beryllium",atomicNumber:4},{symbol:"B",name:"Boron",atomicNumber:5},{symbol:"C",name:"Carbon",atomicNumber:6},{symbol:"N",name:"Nitrogen",atomicNumber:7},{symbol:"O",name:"Oxygen",atomicNumber:8},{symbol:"F",name:"Fluorine",atomicNumber:9},{symbol:"Ne",name:"Neon",atomicNumber:10},{symbol:"Na",name:"Sodium",atomicNumber:11},{symbol:"Mg",name:"Magnesium",atomicNumber:12},{symbol:"Al",name:"Aluminium",atomicNumber:13},{symbol:"Si",name:"Silicon",atomicNumber:14},{symbol:"P",name:"Phosphorus",atomicNumber:15},{symbol:"S",name:"Sulfur",atomicNumber:16},{symbol:"Cl",name:"Chlorine",atomicNumber:17},{symbol:"Ar",name:"Argon",atomicNumber:18},{symbol:"K",name:"Potassium",atomicNumber:19},{symbol:"Ca",name:"Calcium",atomicNumber:20},{symbol:"Sc",name:"Scandium",atomicNumber:21},{symbol:"Ti",name:"Titanium",atomicNumber:22},{symbol:"V",name:"Vanadium",atomicNumber:23},{symbol:"Cr",name:"Chromium",atomicNumber:24},{symbol:"Mn",name:"Manganese",atomicNumber:25},{symbol:"Fe",name:"Iron",atomicNumber:26},{symbol:"Co",name:"Cobalt",atomicNumber:27},{symbol:"Ni",name:"Nickel",atomicNumber:28},{symbol:"Cu",name:"Copper",atomicNumber:29},{symbol:"Zn",name:"Zinc",atomicNumber:30},{symbol:"Ga",name:"Gallium",atomicNumber:31},{symbol:"Ge",name:"Germanium",atomicNumber:32},{symbol:"As",name:"Arsenic",atomicNumber:33},{symbol:"Se",name:"Selenium",atomicNumber:34},{symbol:"Br",name:"Bromine",atomicNumber:35},{symbol:"Kr",name:"Krypton",atomicNumber:36},{symbol:"Rb",name:"Rubidium",atomicNumber:37},{symbol:"Sr",name:"Strontium",atomicNumber:38},{symbol:"Y",name:"Yttrium",atomicNumber:39},{symbol:"Zr",name:"Zirconium",atomicNumber:40},{symbol:"Nb",name:"Niobium",atomicNumber:41},{symbol:"Mo",name:"Molybdenum",atomicNumber:42},{symbol:"Tc",name:"Technetium",atomicNumber:43},{symbol:"Ru",name:"Ruthenium",atomicNumber:44},{symbol:"Rh",name:"Rhodium",atomicNumber:45},{symbol:"Pd",name:"Palladium",atomicNumber:46},{symbol:"Ag",name:"Silver",atomicNumber:47},{symbol:"Cd",name:"Cadmium",atomicNumber:48},{symbol:"In",name:"Indium",atomicNumber:49},{symbol:"Sn",name:"Tin",atomicNumber:50},{symbol:"Sb",name:"Antimony",atomicNumber:51},{symbol:"Te",name:"Tellurium",atomicNumber:52},{symbol:"I",name:"Iodine",atomicNumber:53},{symbol:"Xe",name:"Xenon",atomicNumber:54},{symbol:"Cs",name:"Caesium",atomicNumber:55},{symbol:"Ba",name:"Barium",atomicNumber:56},{symbol:"La",name:"Lanthanum",atomicNumber:57},{symbol:"Ce",name:"Cerium",atomicNumber:58},{symbol:"Pr",name:"Praseodymium",atomicNumber:59},{symbol:"Nd",name:"Neodymium",atomicNumber:60},{symbol:"Pm",name:"Promethium",atomicNumber:61},{symbol:"Sm",name:"Samarium",atomicNumber:62},{symbol:"Eu",name:"Europium",atomicNumber:63},{symbol:"Gd",name:"Gadolinium",atomicNumber:64},{symbol:"Tb",name:"Terbium",atomicNumber:65},{symbol:"Dy",name:"Dysprosium",atomicNumber:66},{symbol:"Ho",name:"Holmium",atomicNumber:67},{symbol:"Er",name:"Erbium",atomicNumber:68},{symbol:"Tm",name:"Thulium",atomicNumber:69},{symbol:"Yb",name:"Ytterbium",atomicNumber:70},{symbol:"Lu",name:"Lutetium",atomicNumber:71},{symbol:"Hf",name:"Hafnium",atomicNumber:72},{symbol:"Ta",name:"Tantalum",atomicNumber:73},{symbol:"W",name:"Tungsten",atomicNumber:74},{symbol:"Re",name:"Rhenium",atomicNumber:75},{symbol:"Os",name:"Osmium",atomicNumber:76},{symbol:"Ir",name:"Iridium",atomicNumber:77},{symbol:"Pt",name:"Platinum",atomicNumber:78},{symbol:"Au",name:"Gold",atomicNumber:79},{symbol:"Hg",name:"Mercury",atomicNumber:80},{symbol:"Tl",name:"Thallium",atomicNumber:81},{symbol:"Pb",name:"Lead",atomicNumber:82},{symbol:"Bi",name:"Bismuth",atomicNumber:83},{symbol:"Po",name:"Polonium",atomicNumber:84},{symbol:"At",name:"Astatine",atomicNumber:85},{symbol:"Rn",name:"Radon",atomicNumber:86},{symbol:"Fr",name:"Francium",atomicNumber:87},{symbol:"Ra",name:"Radium",atomicNumber:88},{symbol:"Ac",name:"Actinium",atomicNumber:89},{symbol:"Th",name:"Thorium",atomicNumber:90},{symbol:"Pa",name:"Protactinium",atomicNumber:91},{symbol:"U",name:"Uranium",atomicNumber:92},{symbol:"Np",name:"Neptunium",atomicNumber:93},{symbol:"Pu",name:"Plutonium",atomicNumber:94},{symbol:"Am",name:"Americium",atomicNumber:95},{symbol:"Cm",name:"Curium",atomicNumber:96},{symbol:"Bk",name:"Berkelium",atomicNumber:97},{symbol:"Cf",name:"Californium",atomicNumber:98},{symbol:"Es",name:"Einsteinium",atomicNumber:99},{symbol:"Fm",name:"Fermium",atomicNumber:100},{symbol:"Md",name:"Mendelevium",atomicNumber:101},{symbol:"No",name:"Nobelium",atomicNumber:102},{symbol:"Lr",name:"Lawrencium",atomicNumber:103},{symbol:"Rf",name:"Rutherfordium",atomicNumber:104},{symbol:"Db",name:"Dubnium",atomicNumber:105},{symbol:"Sg",name:"Seaborgium",atomicNumber:106},{symbol:"Bh",name:"Bohrium",atomicNumber:107},{symbol:"Hs",name:"Hassium",atomicNumber:108},{symbol:"Mt",name:"Meitnerium",atomicNumber:109},{symbol:"Ds",name:"Darmstadtium",atomicNumber:110},{symbol:"Rg",name:"Roentgenium",atomicNumber:111},{symbol:"Cn",name:"Copernicium",atomicNumber:112},{symbol:"Nh",name:"Nihonium",atomicNumber:113},{symbol:"Fl",name:"Flerovium",atomicNumber:114},{symbol:"Mc",name:"Moscovium",atomicNumber:115},{symbol:"Lv",name:"Livermorium",atomicNumber:116},{symbol:"Ts",name:"Tennessine",atomicNumber:117},{symbol:"Og",name:"Oganesson",atomicNumber:118}],unit:[{name:"meter",symbol:"m"},{name:"second",symbol:"s"},{name:"mole",symbol:"mol"},{name:"ampere",symbol:"A"},{name:"kelvin",symbol:"K"},{name:"candela",symbol:"cd"},{name:"kilogram",symbol:"kg"},{name:"radian",symbol:"rad"},{name:"hertz",symbol:"Hz"},{name:"newton",symbol:"N"},{name:"pascal",symbol:"Pa"},{name:"joule",symbol:"J"},{name:"watt",symbol:"W"},{name:"coulomb",symbol:"C"},{name:"volt",symbol:"V"},{name:"ohm",symbol:"Ω"},{name:"tesla",symbol:"T"},{name:"degree Celsius",symbol:"°C"},{name:"lumen",symbol:"lm"},{name:"becquerel",symbol:"Bq"},{name:"gray",symbol:"Gy"},{name:"sievert",symbol:"Sv"},{name:"steradian",symbol:"sr"},{name:"farad",symbol:"F"},{name:"siemens",symbol:"S"},{name:"weber",symbol:"Wb"},{name:"henry",symbol:"H"},{name:"lux",symbol:"lx"},{name:"katal",symbol:"kat"}]},team:{creature:["ants","bats","bears","bees","birds","buffalo","cats","chickens","cattle","dogs","dolphins","ducks","elephants","fishes","foxes","frogs","geese","goats","horses","kangaroos","lions","monkeys","owls","oxen","penguins","people","pigs","rabbits","sheep","tigers","whales","wolves","zebras","banshees","crows","black cats","chimeras","ghosts","conspirators","dragons","dwarves","elves","enchanters","exorcists","sons","foes","giants","gnomes","goblins","gooses","griffins","lycanthropes","nemesis","ogres","oracles","prophets","sorcerors","spiders","spirits","vampires","warlocks","vixens","werewolves","witches","worshipers","zombies","druids"],name:["{{location.state}} {{team.creature}}"]},vehicle:{bicycle_type:["Adventure Road Bicycle","BMX Bicycle","City Bicycle","Cruiser Bicycle","Cyclocross Bicycle","Dual-Sport Bicycle","Fitness Bicycle","Flat-Foot Comfort Bicycle","Folding Bicycle","Hybrid Bicycle","Mountain Bicycle","Recumbent Bicycle","Road Bicycle","Tandem Bicycle","Touring Bicycle","Track/Fixed-Gear Bicycle","Triathlon/Time Trial Bicycle","Tricycle"],fuel:["Diesel","Electric","Gasoline","Hybrid"],manufacturer:["Aston Martin","Audi","BMW","Bentley","Bugatti","Cadillac","Chevrolet","Chrysler","Dodge","Ferrari","Fiat","Ford","Honda","Hyundai","Jaguar","Jeep","Kia","Lamborghini","Land Rover","Maserati","Mazda","Mercedes Benz","Mini","Nissan","Polestar","Porsche","Rolls Royce","Smart","Tesla","Toyota","Volkswagen","Volvo"],model:["1","2","911","A4","A8","ATS","Accord","Alpine","Altima","Aventador","Beetle","CTS","CX-9","Camaro","Camry","Challenger","Charger","Civic","Colorado","Corvette","Countach","Cruze","Durango","El Camino","Element","Escalade","Expedition","Explorer","F-150","Fiesta","Focus","Fortwo","Golf","Grand Caravan","Grand Cherokee","Impala","Jetta","Land Cruiser","LeBaron","Malibu","Mercielago","Model 3","Model S","Model T","Model X","Model Y","Mustang","PT Cruiser","Prius","Ranchero","Roadster","Sentra","Silverado","Spyder","Taurus","V90","Volt","Wrangler","XC90","XTS"],type:["Cargo Van","Convertible","Coupe","Crew Cab Pickup","Extended Cab Pickup","Hatchback","Minivan","Passenger Van","SUV","Sedan","Wagon"]},word:{adjective:["abandoned","able","acceptable","acclaimed","accomplished","accurate","aching","acidic","actual","admired","adolescent","advanced","affectionate","afraid","aged","aggravating","aggressive","agile","agitated","agreeable","ajar","alarmed","alert","alienated","alive","all","altruistic","amazing","ambitious","ample","amused","angelic","anguished","animated","annual","another","antique","any","apprehensive","appropriate","apt","arid","artistic","ashamed","assured","astonishing","athletic","austere","authentic","authorized","avaricious","average","aware","awesome","awful","babyish","back","bad","baggy","bare","basic","beloved","beneficial","best","better","big","biodegradable","bitter","black","black-and-white","blank","blaring","bleak","blind","blond","blue","blushing","bogus","boiling","bony","boring","bossy","both","bouncy","bowed","brave","breakable","bright","brilliant","brisk","broken","brown","bruised","bulky","burdensome","burly","bustling","busy","buttery","buzzing","calculating","candid","carefree","careless","caring","cautious","cavernous","celebrated","charming","cheap","cheerful","chilly","chubby","circular","classic","clean","clear","clear-cut","close","closed","cloudy","clueless","clumsy","cluttered","coarse","colorful","colorless","colossal","comfortable","common","compassionate","competent","complete","complicated","concerned","concrete","confused","considerate","content","cool","cooperative","coordinated","corny","corrupt","courageous","courteous","crafty","crazy","creamy","creative","criminal","critical","crooked","crowded","cruel","crushing","cuddly","cultivated","cumbersome","curly","cute","damaged","damp","dapper","dark","darling","dazzling","dead","deadly","deafening","dearest","decent","decisive","deep","defenseless","defensive","deficient","definite","definitive","delectable","delicious","delirious","dense","dental","dependable","dependent","descriptive","deserted","determined","devoted","different","difficult","digital","diligent","dim","direct","dirty","discrete","disloyal","dismal","distant","distinct","distorted","doting","downright","drab","dramatic","dreary","dual","dull","dutiful","each","early","earnest","easy","ecstatic","edible","educated","elastic","elderly","electric","elegant","elementary","elliptical","eminent","emotional","empty","enchanted","enchanting","energetic","enlightened","enraged","entire","equatorial","essential","esteemed","ethical","everlasting","every","evil","exalted","excellent","excitable","excited","exhausted","exotic","expensive","experienced","expert","extra-large","extroverted","failing","faint","fair","fake","familiar","fantastic","far","far-flung","far-off","faraway","fat","fatal","fatherly","favorable","favorite","fearless","feline","filthy","fine","finished","firm","first","firsthand","fixed","flashy","flawed","flawless","flickering","flimsy","flowery","fluffy","flustered","focused","fond","foolhardy","foolish","forceful","formal","forsaken","fortunate","fragrant","frail","frank","free","french","frequent","friendly","frightened","frilly","frivolous","frizzy","front","frozen","frugal","fruitful","functional","funny","fussy","fuzzy","gaseous","general","gentle","genuine","gifted","gigantic","giving","glaring","glass","gleaming","glittering","gloomy","glorious","glossy","glum","golden","good","good-natured","gorgeous","graceful","gracious","grandiose","granular","grave","gray","great","greedy","grim","grimy","gripping","grizzled","grouchy","grounded","growing","grown","grubby","gruesome","grumpy","guilty","gullible","gummy","hairy","handsome","handy","happy","happy-go-lucky","hard-to-find","harmful","hasty","hateful","haunting","heartfelt","heavenly","heavy","hefty","helpful","helpless","hidden","hoarse","hollow","homely","honorable","honored","hopeful","hospitable","hot","huge","humble","humiliating","hungry","hurtful","husky","icy","ideal","idealistic","idolized","ignorant","ill","ill-fated","illiterate","illustrious","imaginary","imaginative","immaculate","immediate","immense","impartial","impassioned","impeccable","impish","impolite","important","impossible","impractical","impressionable","impressive","improbable","impure","inborn","incomparable","incomplete","inconsequential","indelible","indolent","inexperienced","infamous","infatuated","inferior","infinite","informal","innocent","insecure","insidious","insignificant","insistent","instructive","intelligent","intent","interesting","internal","international","intrepid","ironclad","irresponsible","jagged","jam-packed","jaunty","jealous","jittery","joyful","joyous","jubilant","judicious","juicy","jumbo","junior","juvenile","kaleidoscopic","key","knotty","knowledgeable","known","kooky","kosher","lanky","last","lasting","late","lavish","lawful","lazy","leading","lean","left","legal","light","lighthearted","likable","likely","limited","limp","limping","linear","lined","liquid","little","live","lively","livid","lone","lonely","long","long-term","lost","lovable","lovely","low","lucky","lumbering","lumpy","lustrous","mad","made-up","magnificent","majestic","major","male","mammoth","married","marvelous","massive","mature","meager","mealy","mean","measly","meaty","mediocre","medium","memorable","menacing","merry","messy","metallic","mild","milky","mindless","minor","minty","miserable","miserly","misguided","mixed","moist","monstrous","monthly","monumental","moral","motionless","muddy","muffled","multicolored","mundane","murky","mushy","musty","muted","mysterious","narrow","natural","naughty","nautical","near","neat","necessary","needy","negative","neglected","negligible","neighboring","nervous","new","next","nice","nifty","nimble","nippy","nocturnal","normal","noted","noteworthy","noxious","numb","nutritious","obedient","oblong","obvious","odd","oddball","official","oily","old","old-fashioned","only","optimal","optimistic","orange","orderly","ordinary","ornate","ornery","other","our","outgoing","outlandish","outlying","outrageous","outstanding","oval","overcooked","overdue","palatable","pale","paltry","parallel","parched","partial","passionate","pastel","peaceful","peppery","perfumed","perky","personal","pertinent","pessimistic","petty","phony","physical","pink","pitiful","plain","pleasant","pleased","pleasing","plump","pointed","pointless","polished","polite","political","poor","portly","posh","possible","potable","powerful","powerless","practical","precious","present","prestigious","pretty","pricey","prickly","primary","prime","private","probable","productive","profitable","profuse","proper","proud","prudent","punctual","puny","pure","purple","pushy","putrid","puzzled","qualified","quarrelsome","quarterly","queasy","querulous","questionable","quick","quick-witted","quiet","quintessential","quixotic","radiant","ragged","rapid","rare","raw","realistic","reasonable","recent","reckless","rectangular","red","reflecting","regal","regular","remarkable","remorseful","repentant","respectful","responsible","rewarding","rich","right","rigid","ripe","roasted","robust","rosy","rotating","rotten","rough","round","rowdy","royal","rubbery","ruddy","rundown","runny","rural","rusty","sad","salty","same","sandy","sarcastic","sardonic","scaly","scared","scary","scented","scientific","scornful","scratchy","second","second-hand","secondary","secret","self-assured","self-reliant","selfish","sentimental","separate","serene","serpentine","severe","shabby","shadowy","shady","shallow","shameful","shameless","shimmering","shiny","shocked","shoddy","short","short-term","showy","shrill","shy","sick","silent","silky","silver","similar","simple","simplistic","sinful","sizzling","skeletal","sleepy","slight","slimy","slow","slushy","small","smart","smoggy","smooth","smug","snappy","snarling","sneaky","sniveling","snoopy","sociable","soft","soggy","somber","some","sophisticated","sore","sorrowful","soulful","soupy","sour","spanish","sparkling","sparse","specific","speedy","spherical","spiffy","spirited","spiteful","splendid","spotless","square","squeaky","squiggly","stable","staid","stained","stale","standard","stark","steel","steep","sticky","stiff","stingy","stormy","straight","strange","strict","strident","striking","strong","stunning","stupendous","sturdy","stylish","subdued","submissive","substantial","subtle","suburban","sudden","sugary","sunny","super","superb","superficial","superior","supportive","sure-footed","surprised","svelte","sweet","swift","talkative","tall","tame","tangible","tasty","tattered","taut","tedious","teeming","tempting","tender","tense","tepid","terrible","that","these","thick","thin","thorny","thorough","those","thrifty","tidy","tight","timely","tinted","tiny","tired","torn","total","tough","tragic","trained","triangular","tricky","trim","trivial","troubled","true","trusting","trustworthy","trusty","turbulent","twin","ugly","ultimate","unaware","uncomfortable","uncommon","unconscious","understated","uneven","unfinished","unfit","unfortunate","unhappy","unhealthy","uniform","unimportant","unique","unkempt","unknown","unlawful","unlined","unlucky","unpleasant","unrealistic","unripe","unruly","unselfish","unsightly","unsteady","unsung","untidy","untimely","untried","untrue","unused","unusual","unwelcome","unwieldy","unwilling","unwritten","upbeat","upright","upset","urban","usable","useless","utilized","utter","vague","vain","valuable","variable","vast","velvety","vengeful","vibrant","victorious","violent","vivacious","vivid","voluminous","warlike","warm","warmhearted","warped","wasteful","waterlogged","watery","wavy","wealthy","weary","webbed","wee","weekly","weighty","weird","well-documented","well-groomed","well-lit","well-made","well-off","well-to-do","well-worn","which","whimsical","whirlwind","whispered","white","whole","whopping","wicked","wide","wide-eyed","wiggly","willing","wilted","winding","windy","winged","wise","witty","wobbly","woeful","wonderful","wordy","worldly","worse","worst","worthless","worthwhile","worthy","wrathful","wretched","writhing","wrong","wry","yearly","yellow","yellowish","young","youthful","yummy","zany","zealous","zesty"],adverb:["abnormally","absentmindedly","accidentally","acidly","actually","adventurously","afterwards","almost","always","angrily","annually","anxiously","arrogantly","awkwardly","badly","bashfully","beautifully","bitterly","bleakly","blindly","blissfully","boastfully","boldly","bravely","briefly","brightly","briskly","broadly","busily","calmly","carefully","carelessly","cautiously","certainly","cheerfully","clearly","cleverly","closely","coaxingly","colorfully","commonly","continually","coolly","correctly","courageously","crossly","cruelly","curiously","daily","daintily","dearly","deceivingly","deeply","defiantly","deliberately","delightfully","diligently","dimly","doubtfully","dreamily","easily","elegantly","energetically","enormously","enthusiastically","equally","especially","even","evenly","eventually","exactly","excitedly","extremely","fairly","faithfully","famously","far","fast","fatally","ferociously","fervently","fiercely","fondly","foolishly","fortunately","frankly","frantically","freely","frenetically","frightfully","fully","furiously","generally","generously","gently","gladly","gleefully","gracefully","gratefully","greatly","greedily","happily","hastily","healthily","heavily","helpfully","helplessly","highly","honestly","hopelessly","hourly","hungrily","immediately","innocently","inquisitively","instantly","intensely","intently","interestingly","inwardly","irritably","jaggedly","jealously","joshingly","jovially","joyfully","joyously","jubilantly","judgementally","justly","keenly","kiddingly","kindheartedly","kindly","kissingly","knavishly","knottily","knowingly","knowledgeably","kookily","lazily","less","lightly","likely","limply","lively","loftily","longingly","loosely","loudly","lovingly","loyally","madly","majestically","meaningfully","mechanically","merrily","miserably","mockingly","monthly","more","mortally","mostly","mysteriously","naturally","nearly","neatly","needily","nervously","never","nicely","noisily","not","obediently","obnoxiously","oddly","offensively","officially","often","only","openly","optimistically","overconfidently","owlishly","painfully","partially","patiently","perfectly","physically","playfully","politely","poorly","positively","potentially","powerfully","promptly","properly","punctually","quaintly","quarrelsomely","queasily","questionably","questioningly","quicker","quickly","quietly","quirkily","quizzically","rapidly","rarely","readily","really","reassuringly","recklessly","regularly","reluctantly","repeatedly","reproachfully","restfully","righteously","rightfully","rigidly","roughly","rudely","sadly","safely","scarcely","scarily","searchingly","sedately","seemingly","seldom","selfishly","separately","seriously","shakily","sharply","sheepishly","shrilly","shyly","silently","sleepily","slowly","smoothly","softly","solemnly","solidly","sometimes","soon","speedily","stealthily","sternly","strictly","successfully","suddenly","surprisingly","suspiciously","sweetly","swiftly","sympathetically","tenderly","tensely","terribly","thankfully","thoroughly","thoughtfully","tightly","tomorrow","too","tremendously","triumphantly","truly","truthfully","ultimately","unabashedly","unaccountably","unbearably","unethically","unexpectedly","unfortunately","unimpressively","unnaturally","unnecessarily","upbeat","upliftingly","upright","upside-down","upward","upwardly","urgently","usefully","uselessly","usually","utterly","vacantly","vaguely","vainly","valiantly","vastly","verbally","very","viciously","victoriously","violently","vivaciously","voluntarily","warmly","weakly","wearily","well","wetly","wholly","wildly","willfully","wisely","woefully","wonderfully","worriedly","wrongly","yawningly","yearly","yearningly","yesterday","yieldingly","youthfully"],conjunction:["after","although","and","as","because","before","but","consequently","even","finally","for","furthermore","hence","how","however","if","inasmuch","incidentally","indeed","instead","lest","likewise","meanwhile","nor","now","once","or","provided","since","so","supposing","than","that","though","till","unless","until","what","when","whenever","where","whereas","wherever","whether","which","while","who","whoever","whose","why","yet"],interjection:["yuck","oh","phooey","blah","boo","whoa","yowza","huzzah","boohoo","fooey","geez","pfft","ew","ah","yum","brr","hm","yahoo","aha","woot","drat","gah","meh","psst","aw","ugh","yippee","eek","gee","bah","gadzooks","duh","ha","mmm","ouch","phew","ack","uh-huh","gosh","hmph","pish","zowie","er","ick","oof","um"],noun:["CD","SUV","abacus","academics","accelerator","accompanist","account","accountability","acquaintance","ad","adaptation","address","adrenalin","adult","advancement","advertisement","adviser","affect","affiliate","aftermath","agreement","airbus","aircraft","airline","airmail","airman","airport","alb","alert","allegation","alliance","alligator","allocation","almighty","amendment","amnesty","analogy","angle","annual","antelope","anticodon","apparatus","appliance","approach","apricot","arcade","archaeology","armchair","armoire","asset","assist","atrium","attraction","availability","avalanche","awareness","babushka","backbone","backburn","bakeware","bandwidth","bar","barge","baritone","barracks","baseboard","basket","bathhouse","bathrobe","battle","begonia","behest","bell","bench","bend","beret","best-seller","bid","bidet","bin","birdbath","birdcage","birth","blight","blossom","blowgun","bob","bog","bonfire","bonnet","bookcase","bookend","boulevard","bourgeoisie","bowler","bowling","boyfriend","brace","bracelet","bran","breastplate","brief","brochure","brook","brush","bug","bump","bungalow","cafe","cake","calculus","cannon","cantaloupe","cap","cappelletti","captain","caption","carboxyl","cardboard","carnival","case","casement","cash","casket","cassava","castanet","catalyst","cauliflower","cellar","celsius","cemetery","ceramic","ceramics","certification","chainstay","chairperson","challenge","championship","chap","chapel","character","characterization","charlatan","charm","chasuble","cheese","cheetah","chiffonier","chops","chow","cinder","cinema","circumference","citizen","clamp","clavicle","cleaner","climb","co-producer","coal","coast","cod","coil","coin","coliseum","collaboration","collectivization","colon","colonialism","comestible","commercial","commodity","community","comparison","completion","complication","compromise","concentration","configuration","confusion","conservation","conservative","consistency","contractor","contrail","convection","conversation","cook","coordination","cop-out","cope","cork","cornet","corporation","corral","cosset","costume","couch","council","councilman","countess","courtroom","cow","creator","creature","crest","cricket","crocodile","cross-contamination","cruelty","cuckoo","curl","custody","custom","cutlet","cutover","cycle","daddy","dandelion","dash","daughter","dead","decision","deck","declaration","decongestant","decryption","deduction","deed","deer","defendant","density","department","dependency","deployment","depot","derby","descendant","descent","design","designation","desk","detective","devastation","developing","developmental","devil","diagram","digestive","digit","dime","director","disadvantage","disappointment","disclosure","disconnection","discourse","dish","disk","disposer","distinction","diver","diversity","dividend","divine","doing","doorpost","doubter","draft","draw","dream","dredger","dress","drive","drug","duffel","dulcimer","dusk","duster","dwell","e-mail","earth","ecliptic","ectoderm","edge","editor","effector","eggplant","electronics","elevation","elevator","elver","embarrassment","embossing","emergent","encouragement","entry","epic","equal","essence","eternity","ethyl","euphonium","event","exasperation","excess","executor","exhaust","expansion","expense","experience","exploration","extension","extent","exterior","eyebrow","eyeliner","farm","farmer","fat","fax","feather","fedora","fellow","fen","fencing","ferret","festival","fibre","filter","final","finding","finer","finger","fireplace","fisherman","fishery","fit","flame","flat","fledgling","flight","flint","flood","flu","fog","fold","folklore","follower","following","foodstuffs","footrest","forage","forager","forgery","fork","formamide","formation","formula","fort","fowl","fraudster","freckle","freezing","freight","fuel","fun","fund","fundraising","futon","gallery","galoshes","gastropod","gazebo","gerbil","ghost","giant","gift","giggle","glider","gloom","goat","godfather","godparent","going","goodwill","governance","government","gown","gradient","graffiti","grandpa","grandson","granny","grass","gray","gripper","grouper","guacamole","guard","guidance","guide","gym","gymnast","habit","haircut","halt","hamburger","hammock","handful","handle","handover","harp","haversack","hawk","heartache","heartbeat","heating","hello","help","hepatitis","heroine","hexagon","hierarchy","hippodrome","honesty","hoof","hope","horde","hornet","horst","hose","hospitalization","hovel","hovercraft","hubris","humidity","humor","hundred","hunger","hunt","husband","hutch","hydrant","hydrocarbon","hydrolyse","hydrolyze","hyena","hygienic","hyphenation","ice-cream","icebreaker","igloo","ignorance","illusion","impact","import","importance","impostor","in-joke","incandescence","independence","individual","information","injunction","innovation","insolence","inspection","instance","institute","instruction","instructor","integer","intellect","intent","interchange","interior","intervention","interviewer","invite","iridescence","issue","jacket","jazz","jellyfish","jet","jogging","joy","juggernaut","jump","jungle","junior","jury","kettledrum","kick","kielbasa","kinase","king","kiss","kit","knickers","knight","knitting","knuckle","label","labourer","lace","lady","lamp","language","larva","lashes","laughter","lava","lawmaker","lay","leading","league","legend","legging","legislature","lender","license","lid","lieu","lifestyle","lift","linseed","litter","loaf","lobster","longboat","lotion","lounge","louse","lox","loyalty","luck","lyre","maestro","mainstream","maintainer","majority","makeover","making","mallard","management","manner","mantua","marathon","march","marimba","marketplace","marksman","markup","marten","massage","masterpiece","mathematics","meadow","meal","meander","meatloaf","mechanic","median","membership","mentor","merit","metabolite","metal","middle","midwife","milestone","millet","minion","minister","minor","minority","mixture","mobility","molasses","mom","moment","monasticism","monocle","monster","morbidity","morning","mortise","mountain","mouser","mousse","mozzarella","muscat","mythology","napkin","necklace","nectarine","negotiation","nephew","nerve","netsuke","newsletter","newsprint","newsstand","nightlife","noon","nougat","nucleotidase","nudge","numeracy","numeric","nun","obedience","obesity","object","obligation","ocelot","octave","offset","oil","omelet","onset","opera","operating","optimal","orchid","order","ostrich","other","outlaw","outrun","outset","overcoat","overheard","overload","ownership","pacemaker","packaging","paintwork","palate","pants","pantyhose","papa","parade","parsnip","partridge","passport","pasta","patroller","pear","pearl","pecan","pendant","peninsula","pension","peony","pepper","perfection","permafrost","perp","petal","petticoat","pharmacopoeia","phrase","pick","piglet","pigpen","pigsty","pile","pillbox","pillow","pilot","pine","pinstripe","place","plain","planula","plastic","platter","platypus","pleasure","pliers","plugin","plumber","pneumonia","pocket-watch","poetry","polarisation","polyester","pomelo","pop","poppy","popularity","populist","porter","possession","postbox","precedent","premeditation","premier","premise","premium","pressure","presume","priesthood","printer","privilege","procurement","produce","programme","prohibition","promise","pronoun","providence","provider","provision","publication","publicity","pulse","punctuation","pupil","puppet","puritan","quart","quinoa","quit","railway","range","rationale","ravioli","rawhide","reach","reasoning","reboot","receptor","recommendation","reconsideration","recovery","redesign","relative","release","remark","reorganisation","repeat","replacement","reporter","representation","republican","request","requirement","reservation","resolve","resource","responsibility","restaurant","retention","retrospectivity","reward","ribbon","rim","riser","roadway","role","rosemary","roundabout","rubric","ruin","rule","runway","rust","safe","sailor","saloon","sand","sandbar","sanity","sarong","sauerkraut","saw","scaffold","scale","scarification","scenario","schedule","schnitzel","scholarship","scorn","scorpion","scout","scrap","scratch","seafood","seagull","seal","season","secrecy","secret","section","sediment","self-confidence","sermon","sesame","settler","shadowbox","shark","shipper","shore","shoulder","sideboard","siege","sightseeing","signature","silk","simple","singing","skean","skeleton","skyline","skyscraper","slide","slime","slipper","smog","smoke","sock","soliloquy","solution","solvency","someplace","sonar","sonata","sonnet","soup","soybean","space","spear","spirit","spork","sport","spring","sprinkles","squid","stall","starboard","statue","status","stay","steak","steeple","step","step-mother","sticker","stir-fry","stitcher","stock","stool","story","strait","stranger","strategy","straw","stump","subexpression","submitter","subsidy","substitution","suitcase","summary","summer","sunbeam","sundae","supplier","surface","sushi","suspension","sustenance","swanling","swath","sweatshop","swim","swine","swing","switch","switchboard","swordfish","synergy","t-shirt","tabletop","tackle","tail","tapioca","taro","tarragon","taxicab","teammate","technician","technologist","tectonics","tenant","tenement","tennis","tentacle","teriyaki","term","testimonial","testing","thigh","thongs","thorn","thread","thunderbolt","thyme","tinderbox","toaster","tomatillo","tomb","tomography","tool","tooth","toothbrush","toothpick","topsail","traditionalism","traffic","translation","transom","transparency","trash","travel","tray","trench","tribe","tributary","trick","trolley","tuba","tuber","tune-up","turret","tusk","tuxedo","typeface","typewriter","unblinking","underneath","underpants","understanding","unibody","unique","unit","utilization","valentine","validity","valley","valuable","vanadyl","vein","velocity","venom","version","verve","vestment","veto","viability","vibraphone","vibration","vicinity","video","violin","vision","vista","vol","volleyball","wafer","waist","wallaby","warming","wasabi","waterspout","wear","wedding","whack","whale","wheel","widow","wilderness","willow","window","wombat","word","worth","wriggler","yak","yarmulke","yeast","yin","yogurt","zebra","zen"],preposition:["a","abaft","aboard","about","above","absent","across","afore","after","against","along","alongside","amid","amidst","among","amongst","an","anenst","anti","apropos","apud","around","as","aside","astride","at","athwart","atop","barring","before","behind","below","beneath","beside","besides","between","beyond","but","by","circa","concerning","considering","despite","down","during","except","excepting","excluding","failing","following","for","forenenst","from","given","in","including","inside","into","lest","like","mid","midst","minus","modulo","near","next","notwithstanding","of","off","on","onto","opposite","out","outside","over","pace","past","per","plus","pro","qua","regarding","round","sans","save","since","than","the","through","throughout","till","times","to","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","via","vice","with","within","without","worth"],verb:["abnegate","abscond","abseil","absolve","accentuate","accept","access","accessorise","accompany","account","accredit","achieve","acknowledge","acquire","adjourn","adjudge","admonish","adumbrate","advocate","afford","airbrush","ameliorate","amend","amount","anaesthetise","analyse","anesthetize","anneal","annex","antagonize","ape","apologise","apostrophize","appertain","appreciate","appropriate","approximate","arbitrate","archive","arraign","arrange","ascertain","ascribe","assail","atomize","attend","attest","attribute","augment","avow","axe","baa","banish","bank","baptise","battle","beard","beep","behold","belabor","bemuse","besmirch","bestride","better","bewail","bicycle","bide","bind","biodegrade","blacken","blaspheme","bleach","blend","blink","bliss","bloom","bludgeon","bobble","boggle","bolster","book","boom","bootleg","border","bore","boss","braid","brand","brandish","break","breed","broadcast","broadside","brood","browse","buck","burgeon","bus","butter","buzzing","camouflage","cannibalise","canter","cap","capitalise","capitalize","capsize","card","carouse","carp","carpool","catalog","catalyze","catch","categorise","cease","celebrate","censor","certify","char","charter","chase","chatter","chime","chip","christen","chromakey","chunder","chunter","cinch","circle","circulate","circumnavigate","clamor","clamour","claw","cleave","clinch","clinking","clone","clonk","coagulate","coexist","coincide","collaborate","colligate","colorize","colour","comb","come","commandeer","commemorate","communicate","compete","conceal","conceptualize","conclude","concrete","condense","cone","confide","confirm","confiscate","confound","confute","congregate","conjecture","connect","consign","construe","contradict","contrast","contravene","controvert","convalesce","converse","convince","convoke","coop","cop","corner","covenant","cow","crackle","cram","crank","creak","creaking","cripple","croon","cross","crumble","crystallize","culminate","culture","curry","curse","customise","cycle","dally","dampen","darn","debit","debut","decide","decode","decouple","decriminalize","deduce","deduct","deflate","deflect","deform","defrag","degenerate","degrease","delete","delight","deliquesce","demob","demobilise","democratize","demonstrate","denitrify","deny","depart","depend","deplore","deploy","deprave","depute","dereference","describe","desecrate","deselect","destock","detain","develop","devise","dial","dicker","digitize","dilate","disapprove","disarm","disbar","discontinue","disgorge","dishearten","dishonor","disinherit","dislocate","dispense","display","dispose","disrespect","dissemble","ditch","divert","dock","doodle","downchange","downshift","dowse","draft","drag","drain","dramatize","drowse","drum","dwell","economise","edge","efface","egg","eke","electrify","embalm","embed","embody","emboss","emerge","emphasise","emphasize","emulsify","encode","endow","enfold","engage","engender","enhance","enlist","enrage","enrich","enroll","entice","entomb","entrench","entwine","equate","essay","etch","eulogise","even","evince","exacerbate","exaggerate","exalt","exempt","exonerate","expatiate","explode","expostulate","extract","extricate","eyeglasses","fabricate","facilitate","factorise","factorize","fail","fall","familiarize","fashion","father","fathom","fax","federate","feminize","fence","fess","fictionalize","fiddle","fidget","fill","flash","fleck","flight","floodlight","floss","fluctuate","fluff","fly","focalise","foot","forearm","forecast","foretell","forgather","forgo","fork","form","forswear","founder","fraternise","fray","frizz","fumigate","function","furlough","fuss","gad","gallivant","galvanize","gape","garage","garrote","gasp","gestate","give","glimmer","glisten","gloat","gloss","glow","gnash","gnaw","goose","govern","grade","graduate","graft","grok","guest","guilt","gulp","gum","gurn","gust","gut","guzzle","ham","harangue","harvest","hassle","haul","haze","headline","hearten","heighten","highlight","hoick","hold","hole","hollow","holster","home","homeschool","hoot","horn","horse","hotfoot","house","hover","howl","huddle","huff","hunger","hunt","husk","hype","hypothesise","hypothesize","idle","ignite","imagineer","impact","impanel","implode","incinerate","incline","inculcate","industrialize","ingratiate","inhibit","inject","innovate","inscribe","insert","insist","inspect","institute","institutionalize","intend","intermarry","intermesh","intermix","internalise","internalize","internationalize","intrigue","inure","inveigle","inventory","investigate","irk","iterate","jaywalk","jell","jeopardise","jiggle","jive","joint","jot","jut","keel","knife","knit","know","kowtow","lack","lampoon","large","leap","lecture","legitimize","lend","libel","liberalize","license","ligate","list","lobotomise","lock","log","loose","low","lowball","machine","magnetize","major","make","malfunction","manage","manipulate","maroon","masculinize","mash","mask","masquerade","massage","masticate","materialise","matter","maul","memorise","merge","mesh","metabolise","microblog","microchip","micromanage","militate","mill","minister","minor","misappropriate","miscalculate","misfire","misjudge","miskey","mismatch","mispronounce","misread","misreport","misspend","mob","mobilise","mobilize","moisten","mooch","moor","moralise","mortar","mosh","mothball","motivate","motor","mould","mount","muddy","mummify","mutate","mystify","nab","narrate","narrowcast","nasalise","nauseate","navigate","neaten","neck","neglect","norm","notarize","object","obscure","observe","obsess","obstruct","obtrude","offend","offset","option","orchestrate","orient","orientate","outbid","outdo","outfit","outflank","outfox","outnumber","outrank","outrun","outsource","overburden","overcharge","overcook","overdub","overfeed","overload","overplay","overproduce","overreact","override","overspend","overstay","overtrain","overvalue","overwork","own","oxidise","oxidize","oxygenate","pace","pack","pale","pant","paralyse","parody","part","pause","pave","penalise","persecute","personalise","perspire","pertain","peter","pike","pillory","pinion","pip","pity","pivot","pixellate","plagiarise","plait","plan","please","pluck","ponder","popularize","portray","prance","preclude","preheat","prejudge","preregister","presell","preside","pretend","print","prioritize","probate","probe","proceed","procrastinate","profane","progress","proliferate","proofread","propound","proselytise","provision","pry","publicize","puff","pull","pulp","pulverize","purse","put","putrefy","quadruple","quaff","quantify","quarrel","quash","quaver","question","quiet","quintuple","quip","quit","rag","rally","ramp","randomize","rationalise","rationalize","ravage","ravel","react","readies","readjust","readmit","ready","reapply","rear","reassemble","rebel","reboot","reborn","rebound","rebuff","rebuild","rebuke","recede","reckon","reclassify","recompense","reconstitute","record","recount","redact","redevelop","redound","redraw","redress","reel","refer","reference","refine","reflate","refute","regulate","reiterate","rejigger","rejoin","rekindle","relaunch","relieve","remand","remark","reopen","reorient","replicate","repossess","represent","reprimand","reproach","reprove","repurpose","requite","reschedule","resort","respray","restructure","retool","retract","revere","revitalise","revoke","reword","rewrite","ride","ridge","rim","ring","rise","rival","roger","rosin","rot","rout","row","rue","rule","safeguard","sashay","sate","satirise","satirize","satisfy","saturate","savour","scale","scamper","scar","scare","scarper","scent","schematise","scheme","schlep","scoff","scoop","scope","scotch","scowl","scrabble","scram","scramble","scrape","screw","scruple","scrutinise","scuffle","scuttle","search","secularize","see","segregate","sell","sense","sensitize","sequester","serenade","serialize","serve","service","settle","sew","shaft","sham","shampoo","shanghai","shear","sheathe","shell","shinny","shirk","shoot","shoulder","shout","shovel","showboat","shred","shrill","shudder","shush","sidetrack","sign","silt","sin","singe","sit","sizzle","skateboard","ski","slake","slap","slather","sleet","slink","slip","slope","slump","smarten","smuggle","snack","sneak","sniff","snoop","snow","snowplow","snuggle","soap","solace","solder","solicit","source","spark","spattering","spectacles","spectate","spellcheck","spew","spice","spirit","splash","splay","split","splosh","splurge","spook","square","squirm","stabilise","stable","stack","stage","stake","starch","state","statement","stiffen","stigmatize","sting","stint","stoop","store","storyboard","stratify","structure","stuff","stunt","substantiate","subtract","suckle","suffice","suffocate","summarise","sun","sunbathe","sunder","sup","surge","surprise","swat","swathe","sway","swear","swelter","swerve","swill","swing","symbolise","synthesise","syringe","table","tabulate","tag","tame","tank","tankful","tarry","task","taxicab","team","telescope","tenant","terraform","terrorise","testify","think","throbbing","thump","tighten","toady","toe","tough","tousle","traduce","train","transcend","transplant","trash","treasure","treble","trek","trial","tromp","trouser","trust","tune","tut","twine","twist","typify","unbalance","uncork","uncover","underachieve","undergo","underplay","unearth","unfreeze","unfurl","unlearn","unscramble","unzip","uproot","upsell","usher","vacation","vamoose","vanish","vary","veg","venture","verify","vet","veto","volunteer","vulgarise","waft","wallop","waltz","warp","wash","waver","weary","weatherize","wedge","weep","weight","welcome","westernise","westernize","while","whine","whisper","whistle","whitewash","whup","wilt","wing","wire","wisecrack","wolf","wound","wring","writ","yak","yawn","yearn","yuppify"]}},ww=class extends Error{};var Cw=class{constructor(e){this.faker=e,function(e){let t=Object.getPrototypeOf(e);do{for(let r of Object.getOwnPropertyNames(t))"function"==typeof e[r]&&"constructor"!==r&&(e[r]=e[r].bind(e));t=Object.getPrototypeOf(t)}while(t!==Object.prototype)}(this)}},_w=class extends Cw{constructor(e){super(e),this.faker=e}},Sw=(e=>(e.Narrowbody="narrowbody",e.Regional="regional",e.Widebody="widebody",e))(Sw||{}),Aw=["0","1","2","3","4","5","6","7","8","9"],Mw=["0","O","1","I","L"],Tw={regional:20,narrowbody:35,widebody:60},Bw={regional:["A","B","C","D"],narrowbody:["A","B","C","D","E","F"],widebody:["A","B","C","D","E","F","G","H","J","K"]},Lw=class extends _w{airport(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airport)}airline(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airline)}airplane(){return this.faker.helpers.arrayElement(this.faker.definitions.airline.airplane)}recordLocator(e={}){let{allowNumerics:t=!1,allowVisuallySimilarCharacters:r=!1}=e,a=[];return t||a.push(...Aw),r||a.push(...Mw),this.faker.string.alphanumeric({length:6,casing:"upper",exclude:a})}seat(e={}){let{aircraftType:t="narrowbody"}=e,r=Tw[t],a=Bw[t];return`${this.faker.number.int({min:1,max:r})}${this.faker.helpers.arrayElement(a)}`}aircraftType(){return this.faker.helpers.enumValue(Sw)}flightNumber(e={}){let{length:t={min:1,max:4},addLeadingZeros:r=!1}=e,a=this.faker.string.numeric({length:t,allowLeadingZeros:!1});return r?a.padStart(4,"0"):a}},Ew=(e=>(e.SRGB="sRGB",e.DisplayP3="display-p3",e.REC2020="rec2020",e.A98RGB="a98-rgb",e.ProphotoRGB="prophoto-rgb",e))(Ew||{}),Rw=(e=>(e.RGB="rgb",e.RGBA="rgba",e.HSL="hsl",e.HSLA="hsla",e.HWB="hwb",e.CMYK="cmyk",e.LAB="lab",e.LCH="lch",e.COLOR="color",e))(Rw||{});function Hw(e){return e.map((e=>{if(e%1!=0){let t=new ArrayBuffer(4);return new DataView(t).setFloat32(0,e),Hw([...new Uint8Array(t)]).replaceAll(" ","")}return(e>>>0).toString(2).padStart(8,"0")})).join(" ")}function Dw(e,t,r="rgb",a="sRGB"){switch(t){case"css":return function(e,t="rgb",r="sRGB"){let a=e=>Math.round(100*e);switch(t){case"rgba":return`rgba(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]})`;case"color":return`color(${r} ${e[0]} ${e[1]} ${e[2]})`;case"cmyk":return`cmyk(${a(e[0])}%, ${a(e[1])}%, ${a(e[2])}%, ${a(e[3])}%)`;case"hsl":return`hsl(${e[0]}deg ${a(e[1])}% ${a(e[2])}%)`;case"hsla":return`hsl(${e[0]}deg ${a(e[1])}% ${a(e[2])}% / ${a(e[3])})`;case"hwb":return`hwb(${e[0]} ${a(e[1])}% ${a(e[2])}%)`;case"lab":return`lab(${a(e[0])}% ${e[1]} ${e[2]})`;case"lch":return`lch(${a(e[0])}% ${e[1]} ${e[2]})`;case"rgb":return`rgb(${e[0]}, ${e[1]}, ${e[2]})`}}(e,r,a);case"binary":return Hw(e);case"decimal":return e}}var Pw=class extends _w{human(){return this.faker.helpers.arrayElement(this.faker.definitions.color.human)}space(){return this.faker.helpers.arrayElement(this.faker.definitions.color.space)}cssSupportedFunction(){return this.faker.helpers.enumValue(Rw)}cssSupportedSpace(){return this.faker.helpers.enumValue(Ew)}rgb(e={}){let t,{format:r="hex",includeAlpha:a=!1,prefix:i="#",casing:n="lower"}=e,o="rgb";return"hex"===r?(t=this.faker.string.hexadecimal({length:a?8:6,prefix:""}),t=function(e,t){let{prefix:r,casing:a}=t;switch(a){case"upper":e=e.toUpperCase();break;case"lower":e=e.toLowerCase()}return r&&(e=r+e),e}(t,{prefix:i,casing:n}),t):(t=Array.from({length:3},(()=>this.faker.number.int(255))),a&&(t.push(this.faker.number.float({multipleOf:.01})),o="rgba"),Dw(t,r,o))}cmyk(e={}){let{format:t="decimal"}=e;return Dw(Array.from({length:4},(()=>this.faker.number.float({multipleOf:.01}))),t,"cmyk")}hsl(e={}){let{format:t="decimal",includeAlpha:r=!1}=e,a=[this.faker.number.int(360)];for(let t=0;t<(e?.includeAlpha?3:2);t++)a.push(this.faker.number.float({multipleOf:.01}));return Dw(a,t,r?"hsla":"hsl")}hwb(e={}){let{format:t="decimal"}=e,r=[this.faker.number.int(360)];for(let e=0;e<2;e++)r.push(this.faker.number.float({multipleOf:.01}));return Dw(r,t,"hwb")}lab(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let e=0;e<2;e++)r.push(this.faker.number.float({min:-100,max:100,multipleOf:1e-4}));return Dw(r,t,"lab")}lch(e={}){let{format:t="decimal"}=e,r=[this.faker.number.float({multipleOf:1e-6})];for(let e=0;e<2;e++)r.push(this.faker.number.float({max:230,multipleOf:.1}));return Dw(r,t,"lch")}colorByCSSColorSpace(e={}){let{format:t="decimal",space:r="sRGB"}=e;return Dw(Array.from({length:3},(()=>this.faker.number.float({multipleOf:1e-4}))),t,"color",r)}},Nw=(e=>(e.Legacy="legacy",e.Segwit="segwit",e.Bech32="bech32",e.Taproot="taproot",e))(Nw||{}),Gw=(e=>(e.Mainnet="mainnet",e.Testnet="testnet",e))(Gw||{}),Iw={legacy:{prefix:{mainnet:"1",testnet:"m"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},segwit:{prefix:{mainnet:"3",testnet:"2"},length:{min:26,max:34},casing:"mixed",exclude:"0OIl"},bech32:{prefix:{mainnet:"bc1",testnet:"tb1"},length:{min:42,max:42},casing:"lower",exclude:"1bBiIoO"},taproot:{prefix:{mainnet:"bc1p",testnet:"tb1p"},length:{min:62,max:62},casing:"lower",exclude:"1bBiIoO"}},Ww=(e=>(e.Female="female",e.Male="male",e))(Ww||{});function Fw(e,t,r){let{generic:a,female:i,male:n}=r;switch(t){case"female":return i??a;case"male":return n??a;default:return a??e.helpers.arrayElement([i,n])??[]}}var zw=class extends _w{firstName(e){return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.first_name))}lastName(e){if(null!=this.faker.rawDefinitions.person?.last_name_pattern){let t=this.faker.helpers.weightedArrayElement(Fw(this.faker,e,this.faker.rawDefinitions.person.last_name_pattern));return this.faker.helpers.fake(t)}return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.last_name))}middleName(e){return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.middle_name))}fullName(e={}){let{sex:t=this.faker.helpers.arrayElement(["female","male"]),firstName:r=this.firstName(t),lastName:a=this.lastName(t)}=e,i=this.faker.helpers.weightedArrayElement(this.faker.definitions.person.name);return this.faker.helpers.mustache(i,{"person.prefix":()=>this.prefix(t),"person.firstName":()=>r,"person.middleName":()=>this.middleName(t),"person.lastName":()=>a,"person.suffix":()=>this.suffix()})}gender(){return this.faker.helpers.arrayElement(this.faker.definitions.person.gender)}sex(){return this.faker.helpers.arrayElement(this.faker.definitions.person.sex)}sexType(){return this.faker.helpers.enumValue(Ww)}bio(){let{bio_pattern:e}=this.faker.definitions.person;return this.faker.helpers.fake(e)}prefix(e){return this.faker.helpers.arrayElement(Fw(this.faker,e,this.faker.definitions.person.prefix))}suffix(){return this.faker.helpers.arrayElement(this.faker.definitions.person.suffix)}jobTitle(){return this.faker.helpers.fake(this.faker.definitions.person.job_title_pattern)}jobDescriptor(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_descriptor)}jobArea(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_area)}jobType(){return this.faker.helpers.arrayElement(this.faker.definitions.person.job_type)}zodiacSign(){return this.faker.helpers.arrayElement(this.faker.definitions.person.western_zodiac_sign)}},Ow=class{N=624;M=397;MATRIX_A=2567483615;UPPER_MASK=2147483648;LOWER_MASK=2147483647;mt=Array.from({length:this.N});mti=this.N+1;unsigned32(e){return e<0?(e^this.UPPER_MASK)+this.UPPER_MASK:e}subtraction32(e,t){return e<t?this.unsigned32(4294967296-(t-e)&4294967295):e-t}addition32(e,t){return this.unsigned32(e+t&4294967295)}multiplication32(e,t){let r=0;for(let a=0;a<32;++a)e>>>a&1&&(r=this.addition32(r,this.unsigned32(t<<a)));return r}initGenrand(e){for(this.mt[0]=this.unsigned32(4294967295&e),this.mti=1;this.mti<this.N;this.mti++)this.mt[this.mti]=this.addition32(this.multiplication32(1812433253,this.unsigned32(this.mt[this.mti-1]^this.mt[this.mti-1]>>>30)),this.mti),this.mt[this.mti]=this.unsigned32(4294967295&this.mt[this.mti])}initByArray(e,t){this.initGenrand(19650218);let r=1,a=0,i=this.N>t?this.N:t;for(;i;i--)this.mt[r]=this.addition32(this.addition32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1664525)),e[a]),a),this.mt[r]=this.unsigned32(4294967295&this.mt[r]),r++,a++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1),a>=t&&(a=0);for(i=this.N-1;i;i--)this.mt[r]=this.subtraction32(this.unsigned32(this.mt[r]^this.multiplication32(this.unsigned32(this.mt[r-1]^this.mt[r-1]>>>30),1566083941)),r),this.mt[r]=this.unsigned32(4294967295&this.mt[r]),r++,r>=this.N&&(this.mt[0]=this.mt[this.N-1],r=1);this.mt[0]=2147483648}mag01=[0,this.MATRIX_A];genrandInt32(){let e;if(this.mti>=this.N){let t;for(this.mti===this.N+1&&this.initGenrand(5489),t=0;t<this.N-this.M;t++)e=this.unsigned32(this.mt[t]&this.UPPER_MASK|this.mt[t+1]&this.LOWER_MASK),this.mt[t]=this.unsigned32(this.mt[t+this.M]^e>>>1^this.mag01[1&e]);for(;t<this.N-1;t++)e=this.unsigned32(this.mt[t]&this.UPPER_MASK|this.mt[t+1]&this.LOWER_MASK),this.mt[t]=this.unsigned32(this.mt[t+(this.M-this.N)]^e>>>1^this.mag01[1&e]);e=this.unsigned32(this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK),this.mt[this.N-1]=this.unsigned32(this.mt[this.M-1]^e>>>1^this.mag01[1&e]),this.mti=0}return e=this.mt[this.mti++],e=this.unsigned32(e^e>>>11),e=this.unsigned32(e^e<<7&2636928640),e=this.unsigned32(e^e<<15&4022730752),e=this.unsigned32(e^e>>>18),e}genrandInt31(){return this.genrandInt32()>>>1}genrandReal1(){return this.genrandInt32()*(1/4294967295)}genrandReal2(){return this.genrandInt32()*(1/4294967296)}genrandReal3(){return(this.genrandInt32()+.5)*(1/4294967296)}genrandRes53(){return(67108864*(this.genrandInt32()>>>5)+(this.genrandInt32()>>>6))*(1/9007199254740992)}};function Kw(){let e=new Ow;return e.initGenrand(Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)),{next:()=>e.genrandRes53(),seed(t){"number"==typeof t?e.initGenrand(t):Array.isArray(t)&&e.initByArray(t,t.length)}}}var Jw=class extends Cw{boolean(e={}){"number"==typeof e&&(e={probability:e});let{probability:t=.5}=e;return!(t<=0)&&(t>=1||this.faker.number.float()<t)}},Vw=()=>{throw new ww("You cannot edit the locale data on the faker instance")};function jw(e){let t={};return new Proxy(e,{has:()=>!0,get:(e,r)=>"symbol"==typeof r||"nodeType"===r?e[r]:r in t?t[r]:t[r]=function(e,t={}){return new Proxy(t,{has:(e,t)=>null!=e[t],get(t,r){let a=t[r];return"symbol"==typeof r||"nodeType"===r||Yw(a,e,r.toString()),a},set:Vw,deleteProperty:Vw})}(r,e[r]),set:Vw,deleteProperty:Vw})}function Yw(e,...t){if(null===e)throw new ww(`The locale data for '${t.join(".")}' aren't applicable to this locale.\n If you think this is a bug, please report it at: https://github.com/faker-js/faker`);if(void 0===e)throw new ww(`The locale data for '${t.join(".")}' are missing in this locale.\n Please contribute the missing data to the project or use a locale/Faker instance that has these data.\n For more information see https://fakerjs.dev/guide/localization.html`)}function $w(e,t="refDate"){let r=new Date(e);if(Number.isNaN(r.valueOf()))throw new ww(`Invalid ${t} date: ${e.toString()}`);return r}var Uw=class extends Cw{anytime(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=$w(t).getTime();return this.between({from:r-31536e6,to:r+31536e6})}past(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Years must be greater than 0.");let a=$w(r).getTime();return this.between({from:a-365*t*24*3600*1e3,to:a-1e3})}future(e={}){let{years:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Years must be greater than 0.");let a=$w(r).getTime();return this.between({from:a+1e3,to:a+365*t*24*3600*1e3})}between(e){if(null==e||null==e.from||null==e.to)throw new ww("Must pass an options object with `from` and `to` values.");let{from:t,to:r}=e,a=$w(t,"from").getTime(),i=$w(r,"to").getTime();if(a>i)throw new ww("`from` date must be before `to` date.");return new Date(this.faker.number.int({min:a,max:i}))}betweens(e){if(null==e||null==e.from||null==e.to)throw new ww("Must pass an options object with `from` and `to` values.");let{from:t,to:r,count:a=3}=e;return this.faker.helpers.multiple((()=>this.between({from:t,to:r})),{count:a}).sort(((e,t)=>e.getTime()-t.getTime()))}recent(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Days must be greater than 0.");let a=$w(r).getTime();return this.between({from:a-24*t*3600*1e3,to:a-1e3})}soon(e={}){let{days:t=1,refDate:r=this.faker.defaultRefDate()}=e;if(t<=0)throw new ww("Days must be greater than 0.");let a=$w(r).getTime();return this.between({from:a+1e3,to:a+24*t*3600*1e3})}birthdate(e={}){let{mode:t="age",min:r=18,max:a=80,refDate:i=this.faker.defaultRefDate(),mode:n,min:o,max:c}=e;if([o,c,n].filter((e=>null!=e)).length%3!=0)throw new ww("The 'min', 'max', and 'mode' options must be set together.");let l=$w(i),s=l.getUTCFullYear();switch(t){case"age":{let e=new Date(l).setUTCFullYear(s-a-1)+864e5,t=new Date(l).setUTCFullYear(s-r);if(e>t)throw new ww(`Max age ${a} should be greater than or equal to min age ${r}.`);return this.between({from:e,to:t})}case"year":{let e=new Date(Date.UTC(0,0,2)).setUTCFullYear(r),t=new Date(Date.UTC(0,11,30)).setUTCFullYear(a);if(e>t)throw new ww(`Max year ${a} should be greater than or equal to min year ${r}.`);return this.between({from:e,to:t})}}}},qw=class extends Uw{constructor(e){super(e),this.faker=e}month(e={}){let t,{abbreviated:r=!1,context:a=!1}=e,i=this.faker.definitions.date.month;t=r?a&&null!=i.abbr_context?"abbr_context":"abbr":a&&null!=i.wide_context?"wide_context":"wide";let n=i[t];return Yw(n,"date.month",t),this.faker.helpers.arrayElement(n)}weekday(e={}){let t,{abbreviated:r=!1,context:a=!1}=e,i=this.faker.definitions.date.weekday;t=r?a&&null!=i.abbr_context?"abbr_context":"abbr":a&&null!=i.wide_context?"wide_context":"wide";let n=i[t];return Yw(n,"date.weekday",t),this.faker.helpers.arrayElement(n)}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.date.time_zone)}},Zw=/\.|\(/;function Qw(e,t,r){let[a,i]=function(e){let t=e.indexOf(")",1);if(-1===t)throw new ww(`Missing closing parenthesis in '${e}'`);for(;-1!==t;){let r=e.substring(1,t);try{return[t,JSON.parse(`[${r}]`)]}catch{if(!r.includes("'")&&!r.includes('"'))try{return[t,JSON.parse(`["${r}"]`)]}catch{}}t=e.indexOf(")",t+1)}t=e.lastIndexOf(")");let r=e.substring(1,t);return[t,[r]]}(e),n=e[a+1];switch(n){case".":case"(":case void 0:break;default:throw new ww(`Expected dot ('.'), open parenthesis ('('), or nothing after function call but got '${n}'`)}return[a+("."===n?2:1),t.map((t=>"function"==typeof t?t(...i):(console.warn(`[@faker-js/faker]: Invoking expressions which are not functions is deprecated since v9.0 and will be removed in v10.0.\nPlease remove the parentheses or replace the expression with an actual function.\n${r}\n${" ".repeat(r.length-e.length)}^`),t)))]}function Xw(e,t){let r=Zw.exec(e),a="."===(r?.[0]??""),i=r?.index??e.length,n=e.substring(0,i);if(0===n.length)throw new ww(`Expression parts cannot be empty in '${e}'`);let o=e[i+1];if(a&&(null==o||"."===o||"("===o))throw new ww(`Found dot without property name in '${e}'`);return[i+(a?1:0),t.map((e=>function(e,t){switch(typeof e){case"function":try{e=e()}catch{return}return e?.[t];case"object":return e?.[t];default:return}}(e,n)))]}function eC(e){let t=function(e){e=e.replaceAll(/[\s-]/g,"");let t=0,r=!1;for(let a=e.length-1;a>=0;a--){let i=Number.parseInt(e[a]);r&&(i*=2,i>9&&(i=i%10+1)),t+=i,r=!r}return t%10}(e.replace(/L?$/,"0"));return 0===t?0:10-t}function tC(e,t,r,a){let i=1;if(t)switch(t){case"?":i=e.datatype.boolean()?0:1;break;case"*":{let t=1;for(;e.datatype.boolean();)t*=2;i=e.number.int({min:0,max:t});break}case"+":{let t=1;for(;e.datatype.boolean();)t*=2;i=e.number.int({min:1,max:t});break}default:throw new ww("Unknown quantifier symbol provided.")}else null!=r&&null!=a?i=e.number.int({min:Number.parseInt(r),max:Number.parseInt(a)}):null!=r&&null==a&&(i=Number.parseInt(r));return i}function rC(e,t="",r="#"){let a="";for(let i=0;i<t.length;i++)t.charAt(i)===r?a+=e.number.int(9):"!"===t.charAt(i)?a+=e.number.int({min:2,max:9}):a+=t.charAt(i);return a}var aC=class extends Cw{slugify(e=""){return e.normalize("NFKD").replaceAll(/[\u0300-\u036F]/g,"").replaceAll(" ","-").replaceAll(/[^\w.-]+/g,"")}replaceSymbols(e=""){let t=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],r="";for(let a=0;a<e.length;a++)"#"===e.charAt(a)?r+=this.faker.number.int(9):"?"===e.charAt(a)?r+=this.arrayElement(t):"*"===e.charAt(a)?r+=this.faker.datatype.boolean()?this.arrayElement(t):this.faker.number.int(9):r+=e.charAt(a);return r}replaceCreditCardSymbols(e="6453-####-####-####-###L",t="#"){e=function(e,t=""){let r,a,i,n,o=/(.)\{(\d+),(\d+)\}/,c=/(.)\{(\d+)\}/,l=/\[(\d+)-(\d+)\]/,s=o.exec(t);for(;null!=s;)r=Number.parseInt(s[2]),a=Number.parseInt(s[3]),r>a&&(i=a,a=r,r=i),n=e.number.int({min:r,max:a}),t=t.slice(0,s.index)+s[1].repeat(n)+t.slice(s.index+s[0].length),s=o.exec(t);for(s=c.exec(t);null!=s;)n=Number.parseInt(s[2]),t=t.slice(0,s.index)+s[1].repeat(n)+t.slice(s.index+s[0].length),s=c.exec(t);for(s=l.exec(t);null!=s;)r=Number.parseInt(s[1]),a=Number.parseInt(s[2]),r>a&&(i=a,a=r,r=i),t=t.slice(0,s.index)+e.number.int({min:r,max:a}).toString()+t.slice(s.index+s[0].length),s=l.exec(t);return t}(this.faker,e);let r=eC(e=rC(this.faker,e,t));return e.replace("L",String(r))}fromRegExp(e){let t=!1;e instanceof RegExp&&(t=e.flags.includes("i"),e=e.toString(),e=/\/(.+?)\//.exec(e)?.[1]??"");let r,a,i,n=/([.A-Za-z0-9])(?:\{(\d+)(?:,(\d+)|)\}|(\?|\*|\+))(?![^[]*]|[^{]*})/,o=n.exec(e);for(;null!=o;){let t=o[2],r=o[3],a=o[4];i=tC(this.faker,a,t,r),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=n.exec(e)}let c=/(\d-\d|\w-\w|\d|\w|[-!@#$&()`.+,/"])/,l=/\[(\^|)(-|)(.+?)\](?:\{(\d+)(?:,(\d+)|)\}|(\?|\*|\+)|)/;for(o=l.exec(e);null!=o;){let n="^"===o[1],s="-"===o[2],u=o[4],h=o[5],d=o[6],p=[],y=o[3],f=c.exec(y);for(s&&p.push(45);null!=f;){if(f[0].includes("-")){let e=f[0].split("-").map((e=>e.codePointAt(0)??Number.NaN));if(r=e[0],a=e[1],r>a)throw new ww("Character range provided is out of order.");for(let e=r;e<=a;e++)if(t&&Number.isNaN(Number(String.fromCodePoint(e)))){let t=String.fromCodePoint(e);p.push(t.toUpperCase().codePointAt(0)??Number.NaN,t.toLowerCase().codePointAt(0)??Number.NaN)}else p.push(e)}else t&&Number.isNaN(Number(f[0]))?p.push(f[0].toUpperCase().codePointAt(0)??Number.NaN,f[0].toLowerCase().codePointAt(0)??Number.NaN):p.push(f[0].codePointAt(0)??Number.NaN);y=y.substring(f[0].length),f=c.exec(y)}if(i=tC(this.faker,d,u,h),n){let e=-1;for(let t=48;t<=57;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t);for(let t=65;t<=90;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t);for(let t=97;t<=122;t++)e=p.indexOf(t),e>-1?p.splice(e,1):p.push(t)}let m=this.multiple((()=>String.fromCodePoint(this.arrayElement(p))),{count:i}).join("");e=e.slice(0,o.index)+m+e.slice(o.index+o[0].length),o=l.exec(e)}let s=/(.)\{(\d+),(\d+)\}/;for(o=s.exec(e);null!=o;){if(r=Number.parseInt(o[2]),a=Number.parseInt(o[3]),r>a)throw new ww("Numbers out of order in {} quantifier.");i=this.faker.number.int({min:r,max:a}),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=s.exec(e)}let u=/(.)\{(\d+)\}/;for(o=u.exec(e);null!=o;)i=Number.parseInt(o[2]),e=e.slice(0,o.index)+o[1].repeat(i)+e.slice(o.index+o[0].length),o=u.exec(e);return e}shuffle(e,t={}){let{inplace:r=!1}=t;r||(e=[...e]);for(let t=e.length-1;t>0;--t){let r=this.faker.number.int(t);[e[t],e[r]]=[e[r],e[t]]}return e}uniqueArray(e,t){if(Array.isArray(e)){let r=[...new Set(e)];return this.shuffle(r).splice(0,t)}let r=new Set;try{if("function"==typeof e){let a=1e3*t,i=0;for(;r.size<t&&i<a;)r.add(e()),i++}}catch{}return[...r]}mustache(e,t){if(null==e)return"";for(let r in t){let a=new RegExp(`{{${r}}}`,"g"),i=t[r];"string"==typeof i&&(i=i.replaceAll("$","$$$$")),e=e.replace(a,i)}return e}maybe(e,t={}){if(this.faker.datatype.boolean(t))return e()}objectKey(e){let t=Object.keys(e);return this.arrayElement(t)}objectValue(e){return e[this.faker.helpers.objectKey(e)]}objectEntry(e){let t=this.faker.helpers.objectKey(e);return[t,e[t]]}arrayElement(e){if(0===e.length)throw new ww("Cannot get value from empty dataset.");return e[e.length>1?this.faker.number.int({max:e.length-1}):0]}weightedArrayElement(e){if(0===e.length)throw new ww("weightedArrayElement expects an array with at least one element");if(!e.every((e=>e.weight>0)))throw new ww("weightedArrayElement expects an array of { weight, value } objects where weight is a positive number");let t=e.reduce(((e,{weight:t})=>e+t),0),r=this.faker.number.float({min:0,max:t}),a=0;for(let{weight:t,value:i}of e)if(a+=t,r<a)return i;return e.at(-1).value}arrayElements(e,t){if(0===e.length)return[];let r=this.rangeToNumber(t??{min:1,max:e.length});if(r>=e.length)return this.shuffle(e);if(r<=0)return[];let a,i,n=[...e],o=e.length,c=o-r;for(;o-- >c;)i=this.faker.number.int(o),a=n[i],n[i]=n[o],n[o]=a;return n.slice(c)}enumValue(e){let t=Object.keys(e).filter((e=>Number.isNaN(Number(e))));return e[this.arrayElement(t)]}rangeToNumber(e){return"number"==typeof e?e:this.faker.number.int(e)}multiple(e,t={}){let r=this.rangeToNumber(t.count??3);return r<=0?[]:Array.from({length:r},e)}},iC=class extends aC{constructor(e){super(e),this.faker=e}fake(e){let t=(e="string"==typeof e?e:this.arrayElement(e)).search(/{{[a-z]/),r=e.indexOf("}}",t);if(-1===t||-1===r)return e;let a=function(e,t,r=[t,t.rawDefinitions]){if(0===e.length)throw new ww("Eval expression cannot be empty.");if(0===r.length)throw new ww("Eval entrypoints cannot be empty.");let a=r,i=e;do{let r;i.startsWith("(")?[r,a]=Qw(i,a,e):[r,a]=Xw(i,a),i=i.substring(r),a=a.filter((e=>null!=e)).map((e=>Array.isArray(e)?t.helpers.arrayElement(e):e))}while(i.length>0&&a.length>0);if(0===a.length)throw new ww(`Cannot resolve expression '${e}'`);let n=a[0];return"function"==typeof n?n():n}(e.substring(t+2,r+2).replace("}}","").replace("{{",""),this.faker),i=String(a),n=e.substring(0,t)+i+e.substring(r+2);return this.fake(n)}},nC=class extends Cw{int(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=Number.MAX_SAFE_INTEGER,multipleOf:a=1}=e;if(!Number.isInteger(a))throw new ww("multipleOf should be an integer.");if(a<=0)throw new ww("multipleOf should be greater than 0.");let i=Math.ceil(t/a),n=Math.floor(r/a);if(i===n)return i*a;if(n<i)throw new ww(r>=t?`No suitable integer value between ${t} and ${r} found.`:`Max ${r} should be greater than min ${t}.`);let o=this.faker._randomizer.next(),c=n-i+1;return Math.floor(o*c+i)*a}float(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=1,fractionDigits:a,multipleOf:i,multipleOf:n=(null==a?void 0:10**-a)}=e;if(r===t)return t;if(r<t)throw new ww(`Max ${r} should be greater than min ${t}.`);if(null!=a){if(null!=i)throw new ww("multipleOf and fractionDigits cannot be set at the same time.");if(!Number.isInteger(a))throw new ww("fractionDigits should be an integer.");if(a<0)throw new ww("fractionDigits should be greater than or equal to 0.")}if(null!=n){if(n<=0)throw new ww("multipleOf should be greater than 0.");let e=Math.log10(n),a=n<1&&Number.isInteger(e)?10**-e:1/n;return this.int({min:t*a,max:r*a})/a}return this.faker._randomizer.next()*(r-t)+t}binary(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=1}=e;return this.int({max:r,min:t}).toString(2)}octal(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=7}=e;return this.int({max:r,min:t}).toString(8)}hex(e={}){"number"==typeof e&&(e={max:e});let{min:t=0,max:r=15}=e;return this.int({max:r,min:t}).toString(16)}bigInt(e={}){("bigint"==typeof e||"number"==typeof e||"string"==typeof e||"boolean"==typeof e)&&(e={max:e});let t=BigInt(e.min??0),r=BigInt(e.max??t+BigInt(999999999999999));if(r===t)return t;if(r<t)throw new ww(`Max ${r} should be larger then min ${t}.`);let a=r-t;return t+BigInt(this.faker.string.numeric({length:a.toString(10).length,allowLeadingZeros:!0}))%(a+BigInt(1))}},oC=[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ"],cC=[..."abcdefghijklmnopqrstuvwxyz"],lC=[..."0123456789"],sC=class extends Cw{fromCharacters(e,t=1){if((t=this.faker.helpers.rangeToNumber(t))<=0)return"";if("string"==typeof e&&(e=[...e]),0===e.length)throw new ww("Unable to generate string: No characters to select from.");return this.faker.helpers.multiple((()=>this.faker.helpers.arrayElement(e)),{count:t}).join("")}alpha(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let r,{casing:a="mixed"}=e,{exclude:i=[]}=e;switch("string"==typeof i&&(i=[...i]),a){case"upper":r=[...oC];break;case"lower":r=[...cC];break;case"mixed":r=[...cC,...oC]}return r=r.filter((e=>!i.includes(e))),this.fromCharacters(r,t)}alphanumeric(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let{casing:r="mixed"}=e,{exclude:a=[]}=e;"string"==typeof a&&(a=[...a]);let i=[...lC];switch(r){case"upper":i.push(...oC);break;case"lower":i.push(...cC);break;case"mixed":i.push(...cC,...oC)}return i=i.filter((e=>!a.includes(e))),this.fromCharacters(i,t)}binary(e={}){let{prefix:t="0b"}=e,r=t;return r+=this.fromCharacters(["0","1"],e.length??1),r}octal(e={}){let{prefix:t="0o"}=e,r=t;return r+=this.fromCharacters(["0","1","2","3","4","5","6","7"],e.length??1),r}hexadecimal(e={}){let{casing:t="mixed",prefix:r="0x"}=e,a=this.faker.helpers.rangeToNumber(e.length??1);if(a<=0)return r;let i=this.fromCharacters(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","A","B","C","D","E","F"],a);return"upper"===t?i=i.toUpperCase():"lower"===t&&(i=i.toLowerCase()),`${r}${i}`}numeric(e={}){"number"==typeof e&&(e={length:e});let t=this.faker.helpers.rangeToNumber(e.length??1);if(t<=0)return"";let{allowLeadingZeros:r=!0}=e,{exclude:a=[]}=e;"string"==typeof a&&(a=[...a]);let i=lC.filter((e=>!a.includes(e)));if(0===i.length||1===i.length&&!r&&"0"===i[0])throw new ww("Unable to generate numeric string, because all possible digits are excluded.");let n="";return!r&&!a.includes("0")&&(n+=this.faker.helpers.arrayElement(i.filter((e=>"0"!==e)))),n+=this.fromCharacters(i,t-n.length),n}sample(e=10){e=this.faker.helpers.rangeToNumber(e);let t={min:33,max:125},r="";for(;r.length<e;)r+=String.fromCodePoint(this.faker.number.int(t));return r}uuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replaceAll("x",(()=>this.faker.number.hex({min:0,max:15}))).replaceAll("y",(()=>this.faker.number.hex({min:8,max:11})))}nanoid(e=21){if((e=this.faker.helpers.rangeToNumber(e))<=0)return"";let t=[{value:()=>this.alphanumeric(1),weight:62},{value:()=>this.faker.helpers.arrayElement(["_","-"]),weight:2}],r="";for(;r.length<e;){r+=this.faker.helpers.weightedArrayElement(t)()}return r}symbol(e=1){return this.fromCharacters(["!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","?","@","[","\\","]","^","_","`","{","|","}","~"],e)}},uC=class{_defaultRefDate=()=>new Date;get defaultRefDate(){return this._defaultRefDate}setDefaultRefDate(e=()=>new Date){this._defaultRefDate="function"==typeof e?e:()=>new Date(e)}_randomizer;datatype=new Jw(this);date=new Uw(this);helpers=new aC(this);number=new nC(this);string=new sC(this);constructor(e={}){let{randomizer:t=Kw()}=e;this._randomizer=t}seed(e=Math.ceil(Math.random()*Number.MAX_SAFE_INTEGER)){return this._randomizer.seed(e),e}};function hC(e){let t=`[@faker-js/faker]: ${e.deprecated} is deprecated`;e.since&&(t+=` since v${e.since}`),e.until&&(t+=` and will be removed in v${e.until}`),e.proposed&&(t+=`. Please use ${e.proposed} instead`),console.warn(`${t}.`)}new uC;var dC=class extends _w{dog(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.dog)}cat(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cat)}snake(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.snake)}bear(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bear)}lion(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.lion)}cetacean(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cetacean)}horse(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.horse)}bird(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.bird)}cow(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.cow)}fish(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.fish)}crocodilia(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.crocodilia)}insect(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.insect)}rabbit(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rabbit)}rodent(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.rodent)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.animal.type)}},pC={0:[[1999999,2],[2279999,3],[2289999,4],[3689999,3],[3699999,4],[6389999,3],[6397999,4],[6399999,7],[6449999,3],[6459999,7],[6479999,3],[6489999,7],[6549999,3],[6559999,4],[6999999,3],[8499999,4],[8999999,5],[9499999,6],[9999999,7]],1:[[99999,3],[299999,2],[349999,3],[399999,4],[499999,3],[699999,2],[999999,4],[3979999,3],[5499999,4],[6499999,5],[6799999,4],[6859999,5],[7139999,4],[7169999,3],[7319999,4],[7399999,7],[7749999,5],[7753999,7],[7763999,5],[7764999,7],[7769999,5],[7782999,7],[7899999,5],[7999999,4],[8004999,5],[8049999,5],[8379999,5],[8384999,7],[8671999,5],[8675999,4],[8697999,5],[9159999,6],[9165059,7],[9168699,6],[9169079,7],[9195999,6],[9196549,7],[9729999,6],[9877999,4],[9911499,6],[9911999,7],[9989899,6],[9999999,7]]},yC=class extends _w{department(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.department)}productName(){return`${this.productAdjective()} ${this.productMaterial()} ${this.product()}`}price(e={}){let{dec:t=2,max:r=1e3,min:a=1,symbol:i=""}=e;if(a<0||r<0)return`${i}0`;if(a===r)return`${i}${a.toFixed(t)}`;let n=this.faker.number.float({min:a,max:r,fractionDigits:t});if(0===t)return`${i}${n.toFixed(t)}`;let o=.1**t,c=n-n*10**t%10*o+this.faker.helpers.weightedArrayElement([{weight:5,value:9},{weight:3,value:5},{weight:1,value:0},{weight:1,value:this.faker.number.int({min:0,max:9})}])*o;return a<=c&&c<=r?`${i}${c.toFixed(t)}`:`${i}${n.toFixed(t)}`}productAdjective(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.adjective)}productMaterial(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.material)}product(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_name.product)}productDescription(){return this.faker.helpers.arrayElement(this.faker.definitions.commerce.product_description)}isbn(e={}){"number"==typeof e&&(e={variant:e});let{variant:t=13,separator:r="-"}=e,[a,i]=this.faker.helpers.objectEntry(pC),n=this.faker.string.numeric(8),o=Number.parseInt(n.slice(0,-1)),c=i.find((([e])=>o<=e))?.[1];if(!c)throw new ww(`Unable to find a registrant length for the group ${a}`);let l=["978",a,n.slice(0,c),n.slice(c)];10===t&&l.shift();let s=l.join(""),u=0;for(let e=0;e<t-1;e++){u+=(10===t?e+1:e%2?3:1)*Number.parseInt(s[e])}return u=10===t?u%11:(10-u%10)%10,l.push(10===u?"X":u.toString()),l.join(r)}},fC=class extends _w{name(){return this.faker.helpers.fake(this.faker.definitions.company.name_pattern)}catchPhrase(){return[this.catchPhraseAdjective(),this.catchPhraseDescriptor(),this.catchPhraseNoun()].join(" ")}buzzPhrase(){return[this.buzzVerb(),this.buzzAdjective(),this.buzzNoun()].join(" ")}catchPhraseAdjective(){return this.faker.helpers.arrayElement(this.faker.definitions.company.adjective)}catchPhraseDescriptor(){return this.faker.helpers.arrayElement(this.faker.definitions.company.descriptor)}catchPhraseNoun(){return this.faker.helpers.arrayElement(this.faker.definitions.company.noun)}buzzAdjective(){return this.faker.helpers.arrayElement(this.faker.definitions.company.buzz_adjective)}buzzVerb(){return this.faker.helpers.arrayElement(this.faker.definitions.company.buzz_verb)}buzzNoun(){return this.faker.helpers.arrayElement(this.faker.definitions.company.buzz_noun)}},mC=class extends _w{column(){return this.faker.helpers.arrayElement(this.faker.definitions.database.column)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.database.type)}collation(){return this.faker.helpers.arrayElement(this.faker.definitions.database.collation)}engine(){return this.faker.helpers.arrayElement(this.faker.definitions.database.engine)}mongodbObjectId(){return this.faker.string.hexadecimal({length:24,casing:"lower",prefix:""})}},gC={alpha:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],formats:[{country:"AL",total:28,bban:[{type:"n",count:8},{type:"c",count:16}],format:"ALkk bbbs sssx cccc cccc cccc cccc"},{country:"AD",total:24,bban:[{type:"n",count:8},{type:"c",count:12}],format:"ADkk bbbb ssss cccc cccc cccc"},{country:"AT",total:20,bban:[{type:"n",count:5},{type:"n",count:11}],format:"ATkk bbbb bccc cccc cccc"},{country:"AZ",total:28,bban:[{type:"a",count:4},{type:"n",count:20}],format:"AZkk bbbb cccc cccc cccc cccc cccc"},{country:"BH",total:22,bban:[{type:"a",count:4},{type:"c",count:14}],format:"BHkk bbbb cccc cccc cccc cc"},{country:"BE",total:16,bban:[{type:"n",count:3},{type:"n",count:9}],format:"BEkk bbbc cccc ccxx"},{country:"BA",total:20,bban:[{type:"n",count:6},{type:"n",count:10}],format:"BAkk bbbs sscc cccc ccxx"},{country:"BR",total:29,bban:[{type:"n",count:13},{type:"n",count:10},{type:"a",count:1},{type:"c",count:1}],format:"BRkk bbbb bbbb ssss sccc cccc ccct n"},{country:"BG",total:22,bban:[{type:"a",count:4},{type:"n",count:6},{type:"c",count:8}],format:"BGkk bbbb ssss ddcc cccc cc"},{country:"CR",total:22,bban:[{type:"n",count:1},{type:"n",count:3},{type:"n",count:14}],format:"CRkk xbbb cccc cccc cccc cc"},{country:"HR",total:21,bban:[{type:"n",count:7},{type:"n",count:10}],format:"HRkk bbbb bbbc cccc cccc c"},{country:"CY",total:28,bban:[{type:"n",count:8},{type:"c",count:16}],format:"CYkk bbbs ssss cccc cccc cccc cccc"},{country:"CZ",total:24,bban:[{type:"n",count:10},{type:"n",count:10}],format:"CZkk bbbb ssss sscc cccc cccc"},{country:"DK",total:18,bban:[{type:"n",count:4},{type:"n",count:10}],format:"DKkk bbbb cccc cccc cc"},{country:"DO",total:28,bban:[{type:"a",count:4},{type:"n",count:20}],format:"DOkk bbbb cccc cccc cccc cccc cccc"},{country:"TL",total:23,bban:[{type:"n",count:3},{type:"n",count:16}],format:"TLkk bbbc cccc cccc cccc cxx"},{country:"EE",total:20,bban:[{type:"n",count:4},{type:"n",count:12}],format:"EEkk bbss cccc cccc cccx"},{country:"FO",total:18,bban:[{type:"n",count:4},{type:"n",count:10}],format:"FOkk bbbb cccc cccc cx"},{country:"FI",total:18,bban:[{type:"n",count:6},{type:"n",count:8}],format:"FIkk bbbb bbcc cccc cx"},{country:"FR",total:27,bban:[{type:"n",count:10},{type:"c",count:11},{type:"n",count:2}],format:"FRkk bbbb bggg ggcc cccc cccc cxx"},{country:"GE",total:22,bban:[{type:"a",count:2},{type:"n",count:16}],format:"GEkk bbcc cccc cccc cccc cc"},{country:"DE",total:22,bban:[{type:"n",count:8},{type:"n",count:10}],format:"DEkk bbbb bbbb cccc cccc cc"},{country:"GI",total:23,bban:[{type:"a",count:4},{type:"c",count:15}],format:"GIkk bbbb cccc cccc cccc ccc"},{country:"GR",total:27,bban:[{type:"n",count:7},{type:"c",count:16}],format:"GRkk bbbs sssc cccc cccc cccc ccc"},{country:"GL",total:18,bban:[{type:"n",count:4},{type:"n",count:10}],format:"GLkk bbbb cccc cccc cc"},{country:"GT",total:28,bban:[{type:"c",count:4},{type:"c",count:4},{type:"c",count:16}],format:"GTkk bbbb mmtt cccc cccc cccc cccc"},{country:"HU",total:28,bban:[{type:"n",count:8},{type:"n",count:16}],format:"HUkk bbbs sssk cccc cccc cccc cccx"},{country:"IS",total:26,bban:[{type:"n",count:6},{type:"n",count:16}],format:"ISkk bbbb sscc cccc iiii iiii ii"},{country:"IE",total:22,bban:[{type:"c",count:4},{type:"n",count:6},{type:"n",count:8}],format:"IEkk aaaa bbbb bbcc cccc cc"},{country:"IL",total:23,bban:[{type:"n",count:6},{type:"n",count:13}],format:"ILkk bbbn nncc cccc cccc ccc"},{country:"IT",total:27,bban:[{type:"a",count:1},{type:"n",count:10},{type:"c",count:12}],format:"ITkk xaaa aabb bbbc cccc cccc ccc"},{country:"JO",total:30,bban:[{type:"a",count:4},{type:"n",count:4},{type:"n",count:18}],format:"JOkk bbbb nnnn cccc cccc cccc cccc cc"},{country:"KZ",total:20,bban:[{type:"n",count:3},{type:"c",count:13}],format:"KZkk bbbc cccc cccc cccc"},{country:"XK",total:20,bban:[{type:"n",count:4},{type:"n",count:12}],format:"XKkk bbbb cccc cccc cccc"},{country:"KW",total:30,bban:[{type:"a",count:4},{type:"c",count:22}],format:"KWkk bbbb cccc cccc cccc cccc cccc cc"},{country:"LV",total:21,bban:[{type:"a",count:4},{type:"c",count:13}],format:"LVkk bbbb cccc cccc cccc c"},{country:"LB",total:28,bban:[{type:"n",count:4},{type:"c",count:20}],format:"LBkk bbbb cccc cccc cccc cccc cccc"},{country:"LI",total:21,bban:[{type:"n",count:5},{type:"c",count:12}],format:"LIkk bbbb bccc cccc cccc c"},{country:"LT",total:20,bban:[{type:"n",count:5},{type:"n",count:11}],format:"LTkk bbbb bccc cccc cccc"},{country:"LU",total:20,bban:[{type:"n",count:3},{type:"c",count:13}],format:"LUkk bbbc cccc cccc cccc"},{country:"MK",total:19,bban:[{type:"n",count:3},{type:"c",count:10},{type:"n",count:2}],format:"MKkk bbbc cccc cccc cxx"},{country:"MT",total:31,bban:[{type:"a",count:4},{type:"n",count:5},{type:"c",count:18}],format:"MTkk bbbb ssss sccc cccc cccc cccc ccc"},{country:"MR",total:27,bban:[{type:"n",count:10},{type:"n",count:13}],format:"MRkk bbbb bsss sscc cccc cccc cxx"},{country:"MU",total:30,bban:[{type:"a",count:4},{type:"n",count:4},{type:"n",count:15},{type:"a",count:3}],format:"MUkk bbbb bbss cccc cccc cccc 000d dd"},{country:"MC",total:27,bban:[{type:"n",count:10},{type:"c",count:11},{type:"n",count:2}],format:"MCkk bbbb bsss sscc cccc cccc cxx"},{country:"MD",total:24,bban:[{type:"c",count:2},{type:"c",count:18}],format:"MDkk bbcc cccc cccc cccc cccc"},{country:"ME",total:22,bban:[{type:"n",count:3},{type:"n",count:15}],format:"MEkk bbbc cccc cccc cccc xx"},{country:"NL",total:18,bban:[{type:"a",count:4},{type:"n",count:10}],format:"NLkk bbbb cccc cccc cc"},{country:"NO",total:15,bban:[{type:"n",count:4},{type:"n",count:7}],format:"NOkk bbbb cccc ccx"},{country:"PK",total:24,bban:[{type:"a",count:4},{type:"n",count:16}],format:"PKkk bbbb cccc cccc cccc cccc"},{country:"PS",total:29,bban:[{type:"c",count:4},{type:"n",count:9},{type:"n",count:12}],format:"PSkk bbbb xxxx xxxx xccc cccc cccc c"},{country:"PL",total:28,bban:[{type:"n",count:8},{type:"n",count:16}],format:"PLkk bbbs sssx cccc cccc cccc cccc"},{country:"PT",total:25,bban:[{type:"n",count:8},{type:"n",count:13}],format:"PTkk bbbb ssss cccc cccc cccx x"},{country:"QA",total:29,bban:[{type:"a",count:4},{type:"c",count:21}],format:"QAkk bbbb cccc cccc cccc cccc cccc c"},{country:"RO",total:24,bban:[{type:"a",count:4},{type:"c",count:16}],format:"ROkk bbbb cccc cccc cccc cccc"},{country:"SM",total:27,bban:[{type:"a",count:1},{type:"n",count:10},{type:"c",count:12}],format:"SMkk xaaa aabb bbbc cccc cccc ccc"},{country:"SA",total:24,bban:[{type:"n",count:2},{type:"c",count:18}],format:"SAkk bbcc cccc cccc cccc cccc"},{country:"RS",total:22,bban:[{type:"n",count:3},{type:"n",count:15}],format:"RSkk bbbc cccc cccc cccc xx"},{country:"SK",total:24,bban:[{type:"n",count:10},{type:"n",count:10}],format:"SKkk bbbb ssss sscc cccc cccc"},{country:"SI",total:19,bban:[{type:"n",count:5},{type:"n",count:10}],format:"SIkk bbss sccc cccc cxx"},{country:"ES",total:24,bban:[{type:"n",count:10},{type:"n",count:10}],format:"ESkk bbbb gggg xxcc cccc cccc"},{country:"SE",total:24,bban:[{type:"n",count:3},{type:"n",count:17}],format:"SEkk bbbc cccc cccc cccc cccc"},{country:"CH",total:21,bban:[{type:"n",count:5},{type:"c",count:12}],format:"CHkk bbbb bccc cccc cccc c"},{country:"TN",total:24,bban:[{type:"n",count:5},{type:"n",count:15}],format:"TNkk bbss sccc cccc cccc cccc"},{country:"TR",total:26,bban:[{type:"n",count:5},{type:"n",count:1},{type:"n",count:16}],format:"TRkk bbbb bxcc cccc cccc cccc cc"},{country:"AE",total:23,bban:[{type:"n",count:3},{type:"n",count:16}],format:"AEkk bbbc cccc cccc cccc ccc"},{country:"GB",total:22,bban:[{type:"a",count:4},{type:"n",count:6},{type:"n",count:8}],format:"GBkk bbbb ssss sscc cccc cc"},{country:"VG",total:24,bban:[{type:"a",count:4},{type:"n",count:16}],format:"VGkk bbbb cccc cccc cccc cccc"}],iso3166:["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"],mod97:e=>{let t=0;for(let r of e)t=(10*t+ +r)%97;return t},pattern10:["01","02","03","04","05","06","07","08","09"],pattern100:["001","002","003","004","005","006","007","008","009"],toDigitString:e=>e.replaceAll(/[A-Z]/gi,(e=>String((e.toUpperCase().codePointAt(0)??Number.NaN)-55)))},bC=gC;var vC=class extends _w{accountNumber(e={}){"number"==typeof e&&(e={length:e});let{length:t=8}=e;return this.faker.string.numeric({length:t,allowLeadingZeros:!0})}accountName(){return[this.faker.helpers.arrayElement(this.faker.definitions.finance.account_type),"Account"].join(" ")}routingNumber(){let e=this.faker.string.numeric({length:8,allowLeadingZeros:!0}),t=0;for(let r=0;r<e.length;r+=3)t+=3*Number(e[r]),t+=7*Number(e[r+1]),t+=Number(e[r+2])||0;return`${e}${10*Math.ceil(t/10)-t}`}maskedNumber(e={}){"number"==typeof e&&(e={length:e});let{ellipsis:t=!0,length:r=4,parens:a=!0}=e,i=this.faker.string.numeric({length:r});return t&&(i=`...${i}`),a&&(i=`(${i})`),i}amount(e={}){let{autoFormat:t=!1,dec:r=2,max:a=1e3,min:i=0,symbol:n=""}=e,o=this.faker.number.float({max:a,min:i,fractionDigits:r});return n+(t?o.toLocaleString(void 0,{minimumFractionDigits:r}):o.toFixed(r))}transactionType(){return this.faker.helpers.arrayElement(this.faker.definitions.finance.transaction_type)}currency(){return this.faker.helpers.arrayElement(this.faker.definitions.finance.currency)}currencyCode(){return this.currency().code}currencyName(){return this.currency().name}currencySymbol(){let e;do{e=this.currency().symbol}while(0===e.length);return e}bitcoinAddress(e={}){let{type:t=this.faker.helpers.enumValue(Nw),network:r="mainnet"}=e,a=Iw[t],i=a.prefix[r],n=this.faker.number.int(a.length);return i+this.faker.string.alphanumeric({length:n-i.length,casing:a.casing,exclude:a.exclude})}litecoinAddress(){let e=this.faker.number.int({min:26,max:33});return this.faker.string.fromCharacters("LM3")+this.faker.string.fromCharacters("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ",e-1)}creditCardNumber(e={}){"string"==typeof e&&(e={issuer:e});let t,{issuer:r=""}=e,a=this.faker.definitions.finance.credit_card,i=r.toLowerCase();if(i in a)t=this.faker.helpers.arrayElement(a[i]);else if(r.includes("#"))t=r;else{let e=this.faker.helpers.objectValue(a);t=this.faker.helpers.arrayElement(e)}return t=t.replaceAll("/",""),this.faker.helpers.replaceCreditCardSymbols(t)}creditCardCVV(){return this.faker.string.numeric({length:3,allowLeadingZeros:!0})}creditCardIssuer(){return this.faker.helpers.objectKey(this.faker.definitions.finance.credit_card)}pin(e={}){"number"==typeof e&&(e={length:e});let{length:t=4}=e;if(t<1)throw new ww("minimum length is 1");return this.faker.string.numeric({length:t,allowLeadingZeros:!0})}ethereumAddress(){return this.faker.string.hexadecimal({length:40,casing:"lower"})}iban(e={}){let{countryCode:t,formatted:r=!1}=e,a=t?bC.formats.find((e=>e.country===t)):this.faker.helpers.arrayElement(bC.formats);if(!a)throw new ww(`Country code ${t} not supported.`);let i="",n=0;for(let e of a.bban){let t=e.count;for(n+=e.count;t>0;)"a"===e.type?i+=this.faker.helpers.arrayElement(bC.alpha):"c"===e.type?this.faker.datatype.boolean(.8)?i+=this.faker.number.int(9):i+=this.faker.helpers.arrayElement(bC.alpha):t>=3&&this.faker.datatype.boolean(.3)?this.faker.datatype.boolean()?(i+=this.faker.helpers.arrayElement(bC.pattern100),t-=2):(i+=this.faker.helpers.arrayElement(bC.pattern10),t--):i+=this.faker.number.int(9),t--;i=i.substring(0,n)}let o=98-bC.mod97(bC.toDigitString(`${i}${a.country}00`));o<10&&(o=`0${o}`);let c=`${a.country}${o}${i}`;return r?function(e){let t="";for(let r=0;r<e.length;r+=4)t+=`${e.substring(r,r+4)} `;return t.trimEnd()}(c):c}bic(e={}){let{includeBranchCode:t=this.faker.datatype.boolean()}=e;return`${this.faker.string.alpha({length:4,casing:"upper"})}${this.faker.helpers.arrayElement(bC.iso3166)}${this.faker.string.alphanumeric({length:2,casing:"upper"})}${t?this.faker.datatype.boolean()?this.faker.string.alphanumeric({length:3,casing:"upper"}):"XXX":""}`}transactionDescription(){let e=this.amount(),t=this.faker.company.name(),r=this.transactionType(),a=this.accountNumber();return`${r} transaction at ${t} using card ending with ***${this.maskedNumber()} for ${this.currencyCode()} ${e} in account ***${a}`}},xC=class extends _w{adjective(){return this.faker.helpers.fake(this.faker.definitions.food.adjective)}description(){return this.faker.helpers.fake(this.faker.definitions.food.description_pattern)}dish(){let e=e=>e.split(" ").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ");return this.faker.datatype.boolean()?e(this.faker.helpers.fake(this.faker.definitions.food.dish_pattern)):e(this.faker.helpers.arrayElement(this.faker.definitions.food.dish))}ethnicCategory(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ethnic_category)}fruit(){return this.faker.helpers.arrayElement(this.faker.definitions.food.fruit)}ingredient(){return this.faker.helpers.arrayElement(this.faker.definitions.food.ingredient)}meat(){return this.faker.helpers.arrayElement(this.faker.definitions.food.meat)}spice(){return this.faker.helpers.arrayElement(this.faker.definitions.food.spice)}vegetable(){return this.faker.helpers.arrayElement(this.faker.definitions.food.vegetable)}},kC=class extends _w{branch(){return`${this.faker.hacker.noun().replace(" ","-")}-${this.faker.hacker.verb().replace(" ","-")}`}commitEntry(e={}){let{merge:t=this.faker.datatype.boolean({probability:.2}),eol:r="CRLF",refDate:a}=e,i=[`commit ${this.faker.git.commitSha()}`];t&&i.push(`Merge: ${this.commitSha({length:7})} ${this.commitSha({length:7})}`);let n=this.faker.person.firstName(),o=this.faker.person.lastName(),c=this.faker.person.fullName({firstName:n,lastName:o}),l=this.faker.internet.userName({firstName:n,lastName:o}),s=this.faker.helpers.arrayElement([c,l]),u=this.faker.internet.email({firstName:n,lastName:o});s=s.replaceAll(/^[.,:;"\\']|[<>\n]|[.,:;"\\']$/g,""),i.push(`Author: ${s} <${u}>`,`Date: ${this.commitDate({refDate:a})}`,"",`${" ".repeat(4)}${this.commitMessage()}`,"");let h="CRLF"===r?"\r\n":"\n";return i.join(h)}commitMessage(){return`${this.faker.hacker.verb()} ${this.faker.hacker.adjective()} ${this.faker.hacker.noun()}`}commitDate(e={}){let{refDate:t=this.faker.defaultRefDate()}=e,r=this.faker.date.recent({days:1,refDate:t}),a=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][r.getUTCDay()],i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][r.getUTCMonth()],n=r.getUTCDate(),o=r.getUTCHours().toString().padStart(2,"0"),c=r.getUTCMinutes().toString().padStart(2,"0"),l=r.getUTCSeconds().toString().padStart(2,"0"),s=r.getUTCFullYear(),u=this.faker.number.int({min:-11,max:12});return`${a} ${i} ${n} ${o}:${c}:${l} ${s} ${u>=0?"+":"-"}${Math.abs(u).toString().padStart(2,"0")}00`}commitSha(e={}){let{length:t=40}=e;return this.faker.string.hexadecimal({length:t,casing:"lower",prefix:""})}},wC=class extends _w{abbreviation(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.abbreviation)}adjective(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.adjective)}noun(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.noun)}verb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.verb)}ingverb(){return this.faker.helpers.arrayElement(this.faker.definitions.hacker.ingverb)}phrase(){let e={abbreviation:this.abbreviation,adjective:this.adjective,ingverb:this.ingverb,noun:this.noun,verb:this.verb},t=this.faker.helpers.arrayElement(this.faker.definitions.hacker.phrase);return this.faker.helpers.mustache(t,e)}},CC=typeof Buffer>"u"?e=>{let t=(new TextEncoder).encode(e),r=Array.from(t,(e=>String.fromCodePoint(e))).join("");return btoa(r)}:e=>Buffer.from(e).toString("base64"),_C=class extends _w{avatar(){return this.avatarGitHub()}avatarGitHub(){return`https://avatars.githubusercontent.com/u/${this.faker.number.int(1e8)}`}avatarLegacy(){return hC({deprecated:"faker.image.avatarLegacy()",proposed:"faker.image.avatar()",since:"9.0.2",until:"10.0.0"}),`https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/${this.faker.number.int(1249)}.jpg`}url(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999})}=e;return this.faker.helpers.arrayElement([this.urlLoremFlickr,({width:e,height:t})=>this.urlPicsumPhotos({width:e,height:t,grayscale:!1,blur:0})])({width:t,height:r})}urlLoremFlickr(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),category:a}=e;return`https://loremflickr.com/${t}/${r}${null==a?"":`/${a}`}?lock=${this.faker.number.int()}`}urlPicsumPhotos(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),grayscale:a=this.faker.datatype.boolean(),blur:i=this.faker.number.int({max:10})}=e,n=`https://picsum.photos/seed/${this.faker.string.alphanumeric({length:{min:5,max:10}})}/${t}/${r}`,o="number"==typeof i&&i>=1&&i<=10;return(a||o)&&(n+="?",a&&(n+="grayscale"),a&&o&&(n+="&"),o&&(n+=`blur=${i}`)),n}urlPlaceholder(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),backgroundColor:a=this.faker.color.rgb({format:"hex",prefix:""}),textColor:i=this.faker.color.rgb({format:"hex",prefix:""}),format:n=this.faker.helpers.arrayElement(["gif","jpeg","jpg","png","webp"]),text:o=this.faker.lorem.words()}=e,c="https://via.placeholder.com";return c+=`/${t}`,c+=`x${r}`,c+=`/${a}`,c+=`/${i}`,c+=`.${n}`,c+=`?text=${encodeURIComponent(o)}`,c}dataUri(e={}){let{width:t=this.faker.number.int({min:1,max:3999}),height:r=this.faker.number.int({min:1,max:3999}),color:a=this.faker.color.rgb(),type:i=this.faker.helpers.arrayElements(["svg-uri","svg-base64"])}=e,n=`<svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full" width="${t}" height="${r}"><rect width="100%" height="100%" fill="${a}"/><text x="${t/2}" y="${r/2}" font-size="20" alignment-baseline="middle" text-anchor="middle" fill="white">${t}x${r}</text></svg>`;return"svg-uri"===i?`data:image/svg+xml;charset=UTF-8,${encodeURIComponent(n)}`:`data:image/svg+xml;base64,${CC(n)}`}},SC=Object.fromEntries([["А","A"],["а","a"],["Б","B"],["б","b"],["В","V"],["в","v"],["Г","G"],["г","g"],["Д","D"],["д","d"],["ъе","ye"],["Ъе","Ye"],["ъЕ","yE"],["ЪЕ","YE"],["Е","E"],["е","e"],["Ё","Yo"],["ё","yo"],["Ж","Zh"],["ж","zh"],["З","Z"],["з","z"],["И","I"],["и","i"],["ый","iy"],["Ый","Iy"],["ЫЙ","IY"],["ыЙ","iY"],["Й","Y"],["й","y"],["К","K"],["к","k"],["Л","L"],["л","l"],["М","M"],["м","m"],["Н","N"],["н","n"],["О","O"],["о","o"],["П","P"],["п","p"],["Р","R"],["р","r"],["С","S"],["с","s"],["Т","T"],["т","t"],["У","U"],["у","u"],["Ф","F"],["ф","f"],["Х","Kh"],["х","kh"],["Ц","Ts"],["ц","ts"],["Ч","Ch"],["ч","ch"],["Ш","Sh"],["ш","sh"],["Щ","Sch"],["щ","sch"],["Ъ",""],["ъ",""],["Ы","Y"],["ы","y"],["Ь",""],["ь",""],["Э","E"],["э","e"],["Ю","Yu"],["ю","yu"],["Я","Ya"],["я","ya"]]),AC=Object.fromEntries([["α","a"],["β","v"],["γ","g"],["δ","d"],["ε","e"],["ζ","z"],["η","i"],["θ","th"],["ι","i"],["κ","k"],["λ","l"],["μ","m"],["ν","n"],["ξ","ks"],["ο","o"],["π","p"],["ρ","r"],["σ","s"],["τ","t"],["υ","y"],["φ","f"],["χ","x"],["ψ","ps"],["ω","o"],["ά","a"],["έ","e"],["ί","i"],["ό","o"],["ύ","y"],["ή","i"],["ώ","o"],["ς","s"],["ϊ","i"],["ΰ","y"],["ϋ","y"],["ΐ","i"],["Α","A"],["Β","B"],["Γ","G"],["Δ","D"],["Ε","E"],["Ζ","Z"],["Η","I"],["Θ","TH"],["Ι","I"],["Κ","K"],["Λ","L"],["Μ","M"],["Ν","N"],["Ξ","KS"],["Ο","O"],["Π","P"],["Ρ","R"],["Σ","S"],["Τ","T"],["Υ","Y"],["Φ","F"],["Χ","X"],["Ψ","PS"],["Ω","O"],["Ά","A"],["Έ","E"],["Ί","I"],["Ό","O"],["Ύ","Y"],["Ή","I"],["Ώ","O"],["Ϊ","I"],["Ϋ","Y"]]),MC=Object.fromEntries([["ء","e"],["آ","a"],["أ","a"],["ؤ","w"],["إ","i"],["ئ","y"],["ا","a"],["ب","b"],["ة","t"],["ت","t"],["ث","th"],["ج","j"],["ح","h"],["خ","kh"],["د","d"],["ذ","dh"],["ر","r"],["ز","z"],["س","s"],["ش","sh"],["ص","s"],["ض","d"],["ط","t"],["ظ","z"],["ع","e"],["غ","gh"],["ـ","_"],["ف","f"],["ق","q"],["ك","k"],["ل","l"],["م","m"],["ن","n"],["ه","h"],["و","w"],["ى","a"],["ي","y"],["َ‎","a"],["ُ","u"],["ِ‎","i"]]),TC=Object.fromEntries([["ա","a"],["Ա","A"],["բ","b"],["Բ","B"],["գ","g"],["Գ","G"],["դ","d"],["Դ","D"],["ե","ye"],["Ե","Ye"],["զ","z"],["Զ","Z"],["է","e"],["Է","E"],["ը","y"],["Ը","Y"],["թ","t"],["Թ","T"],["ժ","zh"],["Ժ","Zh"],["ի","i"],["Ի","I"],["լ","l"],["Լ","L"],["խ","kh"],["Խ","Kh"],["ծ","ts"],["Ծ","Ts"],["կ","k"],["Կ","K"],["հ","h"],["Հ","H"],["ձ","dz"],["Ձ","Dz"],["ղ","gh"],["Ղ","Gh"],["ճ","tch"],["Ճ","Tch"],["մ","m"],["Մ","M"],["յ","y"],["Յ","Y"],["ն","n"],["Ն","N"],["շ","sh"],["Շ","Sh"],["ո","vo"],["Ո","Vo"],["չ","ch"],["Չ","Ch"],["պ","p"],["Պ","P"],["ջ","j"],["Ջ","J"],["ռ","r"],["Ռ","R"],["ս","s"],["Ս","S"],["վ","v"],["Վ","V"],["տ","t"],["Տ","T"],["ր","r"],["Ր","R"],["ց","c"],["Ց","C"],["ու","u"],["ՈՒ","U"],["Ու","U"],["փ","p"],["Փ","P"],["ք","q"],["Ք","Q"],["օ","o"],["Օ","O"],["ֆ","f"],["Ֆ","F"],["և","yev"]]),BC={...SC,...AC,...MC,...Object.fromEntries([["چ","ch"],["ک","k"],["گ","g"],["پ","p"],["ژ","zh"],["ی","y"]]),...TC,...Object.fromEntries([["א","a"],["ב","b"],["ג","g"],["ד","d"],["ה","h"],["ו","v"],["ז","z"],["ח","ch"],["ט","t"],["י","y"],["כ","k"],["ך","kh"],["ל","l"],["ם","m"],["מ","m"],["ן","n"],["נ","n"],["ס","s"],["ע","a"],["פ","f"],["ף","ph"],["צ","ts"],["ץ","ts"],["ק","k"],["ר","r"],["ש","sh"],["ת","t"],["ו","v"]])};function LC(e){let t=()=>e.helpers.arrayElement(["AB","AF","AN","AR","AS","AZ","BE","BG","BN","BO","BR","BS","CA","CE","CO","CS","CU","CY","DA","DE","EL","EN","EO","ES","ET","EU","FA","FI","FJ","FO","FR","FY","GA","GD","GL","GV","HE","HI","HR","HT","HU","HY","ID","IS","IT","JA","JV","KA","KG","KO","KU","KW","KY","LA","LB","LI","LN","LT","LV","MG","MK","MN","MO","MS","MT","MY","NB","NE","NL","NN","NO","OC","PL","PT","RM","RO","RU","SC","SE","SK","SL","SO","SQ","SR","SV","SW","TK","TR","TY","UK","UR","UZ","VI","VO","YI","ZH"]),r=t=>e.helpers.arrayElement({lin:["i686","x86_64"],mac:["Intel","PPC","U; Intel","U; PPC"],win:["","WOW64","Win64; x64"]}[t]),a={net:()=>[e.number.int({min:1,max:4}),e.number.int(9),e.number.int({min:1e4,max:99999}),e.number.int(9)].join("."),nt:()=>[e.number.int({min:5,max:6}),e.number.int(3)].join("."),ie:()=>e.number.int({min:7,max:11}),trident:()=>[e.number.int({min:3,max:7}),e.number.int(1)].join("."),osx:t=>[10,e.number.int({min:5,max:10}),e.number.int(9)].join(t||"."),chrome:()=>[e.number.int({min:13,max:39}),0,e.number.int({min:800,max:899}),0].join("."),presto:()=>`2.9.${e.number.int({min:160,max:190})}`,presto2:()=>`${e.number.int({min:10,max:12})}.00`,safari:()=>[e.number.int({min:531,max:538}),e.number.int(2),e.number.int(2)].join(".")},i={firefox(t){let i=`${e.number.int({min:5,max:15})}${(t=>{let r="";for(let a=0;a<t;a++)r+=`.${e.string.numeric({allowLeadingZeros:!0})}`;return r})(2)}`,n=`Gecko/20100101 Firefox/${i}`,o=r(t);return`Mozilla/5.0 ${"win"===t?`(Windows NT ${a.nt()}${o?`; ${o}`:""}`:"mac"===t?`(Macintosh; ${o} Mac OS X ${a.osx()}`:`(X11; Linux ${o}`}; rv:${i.slice(0,-2)}) ${n}`},iexplorer(){let t=a.ie();return t>=11?`Mozilla/5.0 (Windows NT 6.${e.number.int({min:1,max:3})}; Trident/7.0; ${e.datatype.boolean()?"Touch; ":""}rv:11.0) like Gecko`:`Mozilla/5.0 (compatible; MSIE ${t}.0; Windows NT ${a.nt()}; Trident/${a.trident()}${e.datatype.boolean()?`; .NET CLR ${a.net()}`:""})`},opera(i){let n=` Presto/${a.presto()} Version/${a.presto2()})`,o="win"===i?`(Windows NT ${a.nt()}; U; ${t()}${n}`:"lin"===i?`(X11; Linux ${r(i)}; U; ${t()}${n}`:`(Macintosh; Intel Mac OS X ${a.osx()} U; ${t()} Presto/${a.presto()} Version/${a.presto2()})`;return`Opera/${e.number.int({min:9,max:14})}.${e.number.int(99)} ${o}`},safari(i){let n=a.safari(),o=`${e.number.int({min:4,max:7})}.${e.number.int(1)}.${e.number.int(10)}`;return`Mozilla/5.0 ${"mac"===i?`(Macintosh; ${r("mac")} Mac OS X ${a.osx("_")} rv:${e.number.int({min:2,max:6})}.0; ${t()}) `:`(Windows; U; Windows NT ${a.nt()})`}AppleWebKit/${n} (KHTML, like Gecko) Version/${o} Safari/${n}`},chrome(e){let t=a.safari();return`Mozilla/5.0 ${"mac"===e?`(Macintosh; ${r("mac")} Mac OS X ${a.osx("_")}) `:"win"===e?`(Windows; U; Windows NT ${a.nt()})`:`(X11; Linux ${r(e)}`} AppleWebKit/${t} (KHTML, like Gecko) Chrome/${a.chrome()} Safari/${t}`}},[n,o]=(()=>{let t={chrome:["win","mac","lin"],firefox:["win","mac","lin"],opera:["win","mac","lin"],safari:["win","mac"],iexplorer:["win"]},r=e.helpers.objectKey(t);return[r,e.helpers.arrayElement(t[r])]})();return i[n](o)}var EC=class extends _w{email(e={}){let{firstName:t,lastName:r,provider:a=this.faker.helpers.arrayElement(this.faker.definitions.internet.free_email),allowSpecialCharacters:i=!1}=e,n=this.userName({firstName:t,lastName:r});if(n=n.replaceAll(/[^A-Za-z0-9._+-]+/g,""),n=n.substring(0,50),i){let e=[..."._-"],t=[...".!#$%&'*+-/=?^_`{|}~"];n=n.replace(this.faker.helpers.arrayElement(e),this.faker.helpers.arrayElement(t))}return n=n.replaceAll(/\.{2,}/g,"."),n=n.replace(/^\./,""),n=n.replace(/\.$/,""),`${n}@${a}`}exampleEmail(e={}){let{firstName:t,lastName:r,allowSpecialCharacters:a=!1}=e,i=this.faker.helpers.arrayElement(this.faker.definitions.internet.example_email);return this.email({firstName:t,lastName:r,provider:i,allowSpecialCharacters:a})}userName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName(),lastName:a}=e,i=this.faker.helpers.arrayElement([".","_"]),n=this.faker.number.int(99),o=[()=>`${t}${i}${r}${n}`,()=>`${t}${i}${r}`];a||o.push((()=>`${t}${n}`));let c=this.faker.helpers.arrayElement(o)();return c=c.normalize("NFKD").replaceAll(/[\u0300-\u036F]/g,""),c=[...c].map((e=>{if(BC[e])return BC[e];let t=e.codePointAt(0)??Number.NaN;return t<128?e:t.toString(36)})).join(""),c=c.toString().replaceAll("'",""),c=c.replaceAll(" ",""),c}displayName(e={}){let{firstName:t=this.faker.person.firstName(),lastName:r=this.faker.person.lastName()}=e,a=this.faker.helpers.arrayElement([".","_"]),i=this.faker.number.int(99),n=[()=>`${t}${i}`,()=>`${t}${a}${r}`,()=>`${t}${a}${r}${i}`],o=this.faker.helpers.arrayElement(n)();return o=o.toString().replaceAll("'",""),o=o.replaceAll(" ",""),o}protocol(){return this.faker.helpers.arrayElement(["http","https"])}httpMethod(){return this.faker.helpers.arrayElement(["GET","POST","PUT","DELETE","PATCH"])}httpStatusCode(e={}){let{types:t=Object.keys(this.faker.definitions.internet.http_status_code)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.http_status_code[r])}url(e={}){let{appendSlash:t=this.faker.datatype.boolean(),protocol:r="https"}=e;return`${r}://${this.domainName()}${t?"/":""}`}domainName(){return`${this.domainWord()}.${this.domainSuffix()}`}domainSuffix(){return this.faker.helpers.arrayElement(this.faker.definitions.internet.domain_suffix)}domainWord(){return this.faker.helpers.slugify(`${this.faker.word.adjective()}-${this.faker.word.noun()}`).toLowerCase()}ip(){return this.faker.datatype.boolean()?this.ipv4():this.ipv6()}ipv4(){return Array.from({length:4},(()=>this.faker.number.int(255))).join(".")}ipv6(){return Array.from({length:8},(()=>this.faker.string.hexadecimal({length:4,casing:"lower",prefix:""}))).join(":")}port(){return this.faker.number.int(65535)}userAgent(){return LC(this.faker)}color(e={}){let{redBase:t=0,greenBase:r=0,blueBase:a=0}=e,i=e=>Math.floor((this.faker.number.int(256)+e)/2).toString(16).padStart(2,"0");return`#${i(t)}${i(r)}${i(a)}`}mac(e={}){"string"==typeof e&&(e={separator:e});let t,{separator:r=":"}=e,a="";for([":","-",""].includes(r)||(r=":"),t=0;t<12;t++)a+=this.faker.number.hex(15),t%2==1&&11!==t&&(a+=r);return a}password(e={}){let t=/[aeiouAEIOU]$/,r=/[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/,a=(e,i,n,o)=>{if(o.length>=e)return o;i&&(n=r.test(o)?t:r);let c=this.faker.number.int(94)+33,l=String.fromCodePoint(c);return i&&(l=l.toLowerCase()),n.test(l)?a(e,i,n,o+l):a(e,i,n,o)},{length:i=15,memorable:n=!1,pattern:o=/\w/,prefix:c=""}=e;return a(i,n,o,c)}emoji(e={}){let{types:t=Object.keys(this.faker.definitions.internet.emoji)}=e,r=this.faker.helpers.arrayElement(t);return this.faker.helpers.arrayElement(this.faker.definitions.internet.emoji[r])}},RC=class extends _w{zipCode(e={}){"string"==typeof e&&(e={format:e});let{state:t}=e;if(null!=t){let e=this.faker.definitions.location.postcode_by_state[t];if(null==e)throw new ww(`No zip code definition found for state "${t}"`);return this.faker.helpers.fake(e)}let{format:r=this.faker.definitions.location.postcode}=e;return"string"==typeof r&&(r=[r]),r=this.faker.helpers.arrayElement(r),this.faker.helpers.replaceSymbols(r)}city(){return this.faker.helpers.fake(this.faker.definitions.location.city_pattern)}buildingNumber(){return this.faker.helpers.arrayElement(this.faker.definitions.location.building_number).replaceAll(/#+/g,(e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1})))}street(){return this.faker.helpers.fake(this.faker.definitions.location.street_pattern)}streetAddress(e={}){"boolean"==typeof e&&(e={useFullAddress:e});let{useFullAddress:t}=e,r=this.faker.definitions.location.street_address[t?"full":"normal"];return this.faker.helpers.fake(r)}secondaryAddress(){return this.faker.helpers.fake(this.faker.definitions.location.secondary_address).replaceAll(/#+/g,(e=>this.faker.string.numeric({length:e.length,allowLeadingZeros:!1})))}county(){return this.faker.helpers.arrayElement(this.faker.definitions.location.county)}country(){return this.faker.helpers.arrayElement(this.faker.definitions.location.country)}countryCode(e={}){"string"==typeof e&&(e={variant:e});let{variant:t="alpha-2"}=e,r=(()=>{switch(t){case"numeric":return"numeric";case"alpha-3":return"alpha3";case"alpha-2":return"alpha2"}})();return this.faker.helpers.arrayElement(this.faker.definitions.location.country_code)[r]}state(e={}){let{abbreviated:t=!1}=e,r=t?this.faker.definitions.location.state_abbr:this.faker.definitions.location.state;return this.faker.helpers.arrayElement(r)}latitude(e={}){let{max:t=90,min:r=-90,precision:a=4}=e;return this.faker.number.float({min:r,max:t,fractionDigits:a})}longitude(e={}){let{max:t=180,min:r=-180,precision:a=4}=e;return this.faker.number.float({max:t,min:r,fractionDigits:a})}direction(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal_abbr,...this.faker.definitions.location.direction.ordinal_abbr]):this.faker.helpers.arrayElement([...this.faker.definitions.location.direction.cardinal,...this.faker.definitions.location.direction.ordinal])}cardinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.cardinal)}ordinalDirection(e={}){let{abbreviated:t=!1}=e;return t?this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal_abbr):this.faker.helpers.arrayElement(this.faker.definitions.location.direction.ordinal)}nearbyGPSCoordinate(e={}){let{origin:t,radius:r=10,isMetric:a=!1}=e;if(null==t)return[this.latitude(),this.longitude()];let i=this.faker.number.float({max:2*Math.PI,fractionDigits:5}),n=a?r:1.60934*r,o=.995*this.faker.number.float({max:n,fractionDigits:3})/(4e4/360),c=[t[0]+Math.sin(i)*o,t[1]+Math.cos(i)*o];return c[0]=c[0]%180,(c[0]<-90||c[0]>90)&&(c[0]=180*Math.sign(c[0])-c[0],c[1]+=180),c[1]=(c[1]%360+540)%360-180,[c[0],c[1]]}timeZone(){return this.faker.helpers.arrayElement(this.faker.definitions.location.time_zone)}};var HC={fail:()=>{throw new ww("No words found that match the given length.")},closest:(e,t)=>{let r=function(e,t,r=e=>e){let a={};for(let i of e){let e=t(i);void 0===a[e]&&(a[e]=[]),a[e].push(r(i))}return a}(e,(e=>e.length)),a=Object.keys(r).map(Number),i=Math.min(...a),n=Math.max(...a),o=Math.min(t.min-i,n-t.max);return e.filter((e=>e.length===t.min-o||e.length===t.max+o))},shortest:e=>{let t=Math.min(...e.map((e=>e.length)));return e.filter((e=>e.length===t))},longest:e=>{let t=Math.max(...e.map((e=>e.length)));return e.filter((e=>e.length===t))},"any-length":e=>[...e]};function DC(e){let{wordList:t,length:r,strategy:a="any-length"}=e;if(r){let e="number"==typeof r?e=>e.length===r:e=>e.length>=r.min&&e.length<=r.max,i=t.filter(e);return i.length>0?i:"number"==typeof r?HC[a](t,{min:r,max:r}):HC[a](t,r)}return"shortest"===a||"longest"===a?HC[a](t):[...t]}var PC=class extends _w{word(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.lorem.word}))}words(e=3){return this.faker.helpers.multiple((()=>this.word()),{count:e}).join(" ")}sentence(e={min:3,max:10}){let t=this.words(e);return`${t.charAt(0).toUpperCase()+t.substring(1)}.`}slug(e=3){let t=this.words(e);return this.faker.helpers.slugify(t)}sentences(e={min:2,max:6},t=" "){return this.faker.helpers.multiple((()=>this.sentence()),{count:e}).join(t)}paragraph(e=3){return this.sentences(e)}paragraphs(e=3,t="\n"){return this.faker.helpers.multiple((()=>this.paragraph()),{count:e}).join(t)}text(){return this[this.faker.helpers.arrayElement(["sentence","sentences","paragraph","paragraphs","lines"])]()}lines(e={min:1,max:5}){return this.sentences(e,"\n")}},NC=class extends _w{album(){return this.faker.helpers.arrayElement(this.faker.definitions.music.album)}artist(){return this.faker.helpers.arrayElement(this.faker.definitions.music.artist)}genre(){return this.faker.helpers.arrayElement(this.faker.definitions.music.genre)}songName(){return this.faker.helpers.arrayElement(this.faker.definitions.music.song_name)}},GC=class extends _w{number(e={}){let{style:t="human"}=e,r=this.faker.definitions.phone_number.format[t];if(!r)throw new Error(`No definitions for ${t} in this locale`);let a=this.faker.helpers.arrayElement(r);return rC(this.faker,a)}imei(){return this.faker.helpers.replaceCreditCardSymbols("##-######-######-L","#")}},IC=class extends _w{chemicalElement(){return this.faker.helpers.arrayElement(this.faker.definitions.science.chemical_element)}unit(){return this.faker.helpers.arrayElement(this.faker.definitions.science.unit)}},WC=["video","audio","image","text","application"],FC=["application/pdf","audio/mpeg","audio/wav","image/png","image/jpeg","image/gif","video/mp4","video/mpeg","text/html"],zC=["en","wl","ww"],OC={index:"o",slot:"s",mac:"x",pci:"p"},KC=["SUN","MON","TUE","WED","THU","FRI","SAT"],JC=class extends _w{fileName(e={}){let{extensionCount:t=1}=e,r=this.faker.word.words().toLowerCase().replaceAll(/\W/g,"_"),a=this.faker.helpers.multiple((()=>this.fileExt()),{count:t}).join(".");return 0===a.length?r:`${r}.${a}`}commonFileName(e){return`${this.fileName({extensionCount:0})}.${e||this.commonFileExt()}`}mimeType(){let e=Object.keys(this.faker.definitions.system.mime_type);return this.faker.helpers.arrayElement(e)}commonFileType(){return this.faker.helpers.arrayElement(WC)}commonFileExt(){return this.fileExt(this.faker.helpers.arrayElement(FC))}fileType(){let e=this.faker.definitions.system.mime_type,t=new Set(Object.keys(e).map((e=>e.split("/")[0])));return this.faker.helpers.arrayElement([...t])}fileExt(e){let t=this.faker.definitions.system.mime_type;if("string"==typeof e)return this.faker.helpers.arrayElement(t[e].extensions);let r=new Set(Object.values(t).flatMap((({extensions:e})=>e)));return this.faker.helpers.arrayElement([...r])}directoryPath(){let e=this.faker.definitions.system.directory_path;return this.faker.helpers.arrayElement(e)}filePath(){return`${this.directoryPath()}/${this.fileName()}`}semver(){return[this.faker.number.int(9),this.faker.number.int(9),this.faker.number.int(9)].join(".")}networkInterface(e={}){let t,{interfaceType:r=this.faker.helpers.arrayElement(zC),interfaceSchema:a=this.faker.helpers.objectKey(OC)}=e,i="",n=()=>this.faker.string.numeric({allowLeadingZeros:!0});switch(a){case"index":t=n();break;case"slot":t=`${n()}${this.faker.helpers.maybe((()=>`f${n()}`))??""}${this.faker.helpers.maybe((()=>`d${n()}`))??""}`;break;case"mac":t=this.faker.internet.mac("");break;case"pci":i=this.faker.helpers.maybe((()=>`P${n()}`))??"",t=`${n()}s${n()}${this.faker.helpers.maybe((()=>`f${n()}`))??""}${this.faker.helpers.maybe((()=>`d${n()}`))??""}`}return`${i}${r}${OC[a]}${t}`}cron(e={}){let{includeYear:t=!1,includeNonStandard:r=!1}=e,a=[this.faker.number.int(59),"*"],i=[this.faker.number.int(23),"*"],n=[this.faker.number.int({min:1,max:31}),"*","?"],o=[this.faker.number.int({min:1,max:12}),"*"],c=[this.faker.number.int(6),this.faker.helpers.arrayElement(KC),"*","?"],l=[this.faker.number.int({min:1970,max:2099}),"*"],s=this.faker.helpers.arrayElement(a),u=this.faker.helpers.arrayElement(i),h=this.faker.helpers.arrayElement(n),d=this.faker.helpers.arrayElement(o),p=this.faker.helpers.arrayElement(c),y=this.faker.helpers.arrayElement(l),f=`${s} ${u} ${h} ${d} ${p}`;t&&(f+=` ${y}`);return!r||this.faker.datatype.boolean()?f:this.faker.helpers.arrayElement(["@annually","@daily","@hourly","@monthly","@reboot","@weekly","@yearly"])}},VC=class extends _w{vehicle(){return`${this.manufacturer()} ${this.model()}`}manufacturer(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.manufacturer)}model(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.model)}type(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.type)}fuel(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.fuel)}vin(){let e=["o","i","q","O","I","Q"];return`${this.faker.string.alphanumeric({length:10,casing:"upper",exclude:e})}${this.faker.string.alpha({length:1,casing:"upper",exclude:e})}${this.faker.string.alphanumeric({length:1,casing:"upper",exclude:e})}${this.faker.string.numeric({length:5,allowLeadingZeros:!0})}`}color(){return this.faker.color.human()}vrm(){return`${this.faker.string.alpha({length:2,casing:"upper"})}${this.faker.string.numeric({length:2,allowLeadingZeros:!0})}${this.faker.string.alpha({length:3,casing:"upper"})}`}bicycle(){return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.bicycle_type)}},jC=class extends _w{adjective(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.adjective}))}adverb(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.adverb}))}conjunction(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.conjunction}))}interjection(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.interjection}))}noun(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.noun}))}preposition(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.preposition}))}verb(e={}){let t="number"==typeof e?{length:e}:e;return this.faker.helpers.arrayElement(DC({...t,wordList:this.faker.definitions.word.verb}))}sample(e={}){let t=this.faker.helpers.shuffle([this.adjective,this.adverb,this.conjunction,this.interjection,this.noun,this.preposition,this.verb]);for(let r of t)try{return r(e)}catch{continue}throw new ww("No matching word data available for the current locale")}words(e={}){"number"==typeof e&&(e={count:e});let{count:t={min:1,max:3}}=e;return this.faker.helpers.multiple((()=>this.sample()),{count:t}).join(" ")}},YC=["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New_York","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],$C={color:{space:["Academy Color Encoding System (ACES)","Adobe RGB","Adobe Wide Gamut RGB","British Standard Colour (BS)","CIE 1931 XYZ","CIELAB","CIELUV","CIEUVW","CMY","CMYK","DCI-P3","Display-P3","Federal Standard 595C","HKS","HSL","HSLA","HSLuv","HSV","HWB","LCh","LMS","Munsell Color System","Natural Color System (NSC)","Pantone Matching System (PMS)","ProPhoto RGB Color Space","RAL","RG","RGBA","RGK","Rec. 2020","Rec. 2100","Rec. 601","Rec. 709","Uniform Color Spaces (UCSs)","YDbDr","YIQ","YPbPr","sRGB","sYCC","scRGB","xvYCC"]},database:{collation:["ascii_bin","ascii_general_ci","cp1250_bin","cp1250_general_ci","utf8_bin","utf8_general_ci","utf8_unicode_ci"],engine:["ARCHIVE","BLACKHOLE","CSV","InnoDB","MEMORY","MyISAM"],type:["bigint","binary","bit","blob","boolean","date","datetime","decimal","double","enum","float","geometry","int","mediumint","point","real","serial","set","smallint","text","time","timestamp","tinyint","varchar"]},date:{time_zone:YC},hacker:{abbreviation:["ADP","AGP","AI","API","ASCII","CLI","COM","CSS","DNS","DRAM","EXE","FTP","GB","HDD","HEX","HTTP","IB","IP","JBOD","JSON","OCR","PCI","PNG","RAM","RSS","SAS","SCSI","SDD","SMS","SMTP","SQL","SSD","SSL","TCP","THX","TLS","UDP","USB","UTF8","VGA","XML","XSS"]},internet:{emoji:{smiley:["😀","😃","😄","😁","😆","😅","🤣","😂","🙂","🙃","😉","😊","😇","🥰","😍","🤩","😘","😗","☺️","😚","😙","🥲","😋","😛","😜","🤪","😝","🤑","🤗","🤭","🤫","🤔","🤐","🤨","😐","😑","😶","😶‍🌫️","😏","😒","🙄","😬","😮‍💨","🤥","😌","😔","😪","🤤","😴","😷","🤒","🤕","🤢","🤮","🤧","🥵","🥶","🥴","😵","😵‍💫","🤯","🤠","🥳","🥸","😎","🤓","🧐","😕","😟","🙁","☹️","😮","😯","😲","😳","🥺","😦","😧","😨","😰","😥","😢","😭","😱","😖","😣","😞","😓","😩","😫","🥱","😤","😡","😠","🤬","😈","👿","💀","☠️","💩","🤡","👹","👺","👻","👽","👾","🤖","😺","😸","😹","😻","😼","😽","🙀","😿","😾","🙈","🙉","🙊","💋","💌","💘","💝","💖","💗","💓","💞","💕","💟","❣️","💔","❤️‍🔥","❤️‍🩹","❤️","🧡","💛","💚","💙","💜","🤎","🖤","🤍","💯","💢","💥","💫","💦","💨","🕳️","💣","💬","👁️‍🗨️","🗨️","🗯️","💭","💤"],body:["👋","👋🏻","👋🏼","👋🏽","👋🏾","👋🏿","🤚","🤚🏻","🤚🏼","🤚🏽","🤚🏾","🤚🏿","🖐️","🖐🏻","🖐🏼","🖐🏽","🖐🏾","🖐🏿","✋","✋🏻","✋🏼","✋🏽","✋🏾","✋🏿","🖖","🖖🏻","🖖🏼","🖖🏽","🖖🏾","🖖🏿","👌","👌🏻","👌🏼","👌🏽","👌🏾","👌🏿","🤌","🤌🏻","🤌🏼","🤌🏽","🤌🏾","🤌🏿","🤏","🤏🏻","🤏🏼","🤏🏽","🤏🏾","🤏🏿","✌️","✌🏻","✌🏼","✌🏽","✌🏾","✌🏿","🤞","🤞🏻","🤞🏼","🤞🏽","🤞🏾","🤞🏿","🤟","🤟🏻","🤟🏼","🤟🏽","🤟🏾","🤟🏿","🤘","🤘🏻","🤘🏼","🤘🏽","🤘🏾","🤘🏿","🤙","🤙🏻","🤙🏼","🤙🏽","🤙🏾","🤙🏿","👈","👈🏻","👈🏼","👈🏽","👈🏾","👈🏿","👉","👉🏻","👉🏼","👉🏽","👉🏾","👉🏿","👆","👆🏻","👆🏼","👆🏽","👆🏾","👆🏿","🖕","🖕🏻","🖕🏼","🖕🏽","🖕🏾","🖕🏿","👇","👇🏻","👇🏼","👇🏽","👇🏾","👇🏿","☝️","☝🏻","☝🏼","☝🏽","☝🏾","☝🏿","👍","👍🏻","👍🏼","👍🏽","👍🏾","👍🏿","👎","👎🏻","👎🏼","👎🏽","👎🏾","👎🏿","✊","✊🏻","✊🏼","✊🏽","✊🏾","✊🏿","👊","👊🏻","👊🏼","👊🏽","👊🏾","👊🏿","🤛","🤛🏻","🤛🏼","🤛🏽","🤛🏾","🤛🏿","🤜","🤜🏻","🤜🏼","🤜🏽","🤜🏾","🤜🏿","👏","👏🏻","👏🏼","👏🏽","👏🏾","👏🏿","🙌","🙌🏻","🙌🏼","🙌🏽","🙌🏾","🙌🏿","👐","👐🏻","👐🏼","👐🏽","👐🏾","👐🏿","🤲","🤲🏻","🤲🏼","🤲🏽","🤲🏾","🤲🏿","🤝","🙏","🙏🏻","🙏🏼","🙏🏽","🙏🏾","🙏🏿","✍️","✍🏻","✍🏼","✍🏽","✍🏾","✍🏿","💅","💅🏻","💅🏼","💅🏽","💅🏾","💅🏿","🤳","🤳🏻","🤳🏼","🤳🏽","🤳🏾","🤳🏿","💪","💪🏻","💪🏼","💪🏽","💪🏾","💪🏿","🦾","🦿","🦵","🦵🏻","🦵🏼","🦵🏽","🦵🏾","🦵🏿","🦶","🦶🏻","🦶🏼","🦶🏽","🦶🏾","🦶🏿","👂","👂🏻","👂🏼","👂🏽","👂🏾","👂🏿","🦻","🦻🏻","🦻🏼","🦻🏽","🦻🏾","🦻🏿","👃","👃🏻","👃🏼","👃🏽","👃🏾","👃🏿","🧠","🫀","🫁","🦷","🦴","👀","👁️","👅","👄"],person:["👶","👶🏻","👶🏼","👶🏽","👶🏾","👶🏿","🧒","🧒🏻","🧒🏼","🧒🏽","🧒🏾","🧒🏿","👦","👦🏻","👦🏼","👦🏽","👦🏾","👦🏿","👧","👧🏻","👧🏼","👧🏽","👧🏾","👧🏿","🧑","🧑🏻","🧑🏼","🧑🏽","🧑🏾","🧑🏿","👱","👱🏻","👱🏼","👱🏽","👱🏾","👱🏿","👨","👨🏻","👨🏼","👨🏽","👨🏾","👨🏿","🧔","🧔🏻","🧔🏼","🧔🏽","🧔🏾","🧔🏿","🧔‍♂️","🧔🏻‍♂️","🧔🏼‍♂️","🧔🏽‍♂️","🧔🏾‍♂️","🧔🏿‍♂️","🧔‍♀️","🧔🏻‍♀️","🧔🏼‍♀️","🧔🏽‍♀️","🧔🏾‍♀️","🧔🏿‍♀️","👨‍🦰","👨🏻‍🦰","👨🏼‍🦰","👨🏽‍🦰","👨🏾‍🦰","👨🏿‍🦰","👨‍🦱","👨🏻‍🦱","👨🏼‍🦱","👨🏽‍🦱","👨🏾‍🦱","👨🏿‍🦱","👨‍🦳","👨🏻‍🦳","👨🏼‍🦳","👨🏽‍🦳","👨🏾‍🦳","👨🏿‍🦳","👨‍🦲","👨🏻‍🦲","👨🏼‍🦲","👨🏽‍🦲","👨🏾‍🦲","👨🏿‍🦲","👩","👩🏻","👩🏼","👩🏽","👩🏾","👩🏿","👩‍🦰","👩🏻‍🦰","👩🏼‍🦰","👩🏽‍🦰","👩🏾‍🦰","👩🏿‍🦰","🧑‍🦰","🧑🏻‍🦰","🧑🏼‍🦰","🧑🏽‍🦰","🧑🏾‍🦰","🧑🏿‍🦰","👩‍🦱","👩🏻‍🦱","👩🏼‍🦱","👩🏽‍🦱","👩🏾‍🦱","👩🏿‍🦱","🧑‍🦱","🧑🏻‍🦱","🧑🏼‍🦱","🧑🏽‍🦱","🧑🏾‍🦱","🧑🏿‍🦱","👩‍🦳","👩🏻‍🦳","👩🏼‍🦳","👩🏽‍🦳","👩🏾‍🦳","👩🏿‍🦳","🧑‍🦳","🧑🏻‍🦳","🧑🏼‍🦳","🧑🏽‍🦳","🧑🏾‍🦳","🧑🏿‍🦳","👩‍🦲","👩🏻‍🦲","👩🏼‍🦲","👩🏽‍🦲","👩🏾‍🦲","👩🏿‍🦲","🧑‍🦲","🧑🏻‍🦲","🧑🏼‍🦲","🧑🏽‍🦲","🧑🏾‍🦲","🧑🏿‍🦲","👱‍♀️","👱🏻‍♀️","👱🏼‍♀️","👱🏽‍♀️","👱🏾‍♀️","👱🏿‍♀️","👱‍♂️","👱🏻‍♂️","👱🏼‍♂️","👱🏽‍♂️","👱🏾‍♂️","👱🏿‍♂️","🧓","🧓🏻","🧓🏼","🧓🏽","🧓🏾","🧓🏿","👴","👴🏻","👴🏼","👴🏽","👴🏾","👴🏿","👵","👵🏻","👵🏼","👵🏽","👵🏾","👵🏿","🙍","🙍🏻","🙍🏼","🙍🏽","🙍🏾","🙍🏿","🙍‍♂️","🙍🏻‍♂️","🙍🏼‍♂️","🙍🏽‍♂️","🙍🏾‍♂️","🙍🏿‍♂️","🙍‍♀️","🙍🏻‍♀️","🙍🏼‍♀️","🙍🏽‍♀️","🙍🏾‍♀️","🙍🏿‍♀️","🙎","🙎🏻","🙎🏼","🙎🏽","🙎🏾","🙎🏿","🙎‍♂️","🙎🏻‍♂️","🙎🏼‍♂️","🙎🏽‍♂️","🙎🏾‍♂️","🙎🏿‍♂️","🙎‍♀️","🙎🏻‍♀️","🙎🏼‍♀️","🙎🏽‍♀️","🙎🏾‍♀️","🙎🏿‍♀️","🙅","🙅🏻","🙅🏼","🙅🏽","🙅🏾","🙅🏿","🙅‍♂️","🙅🏻‍♂️","🙅🏼‍♂️","🙅🏽‍♂️","🙅🏾‍♂️","🙅🏿‍♂️","🙅‍♀️","🙅🏻‍♀️","🙅🏼‍♀️","🙅🏽‍♀️","🙅🏾‍♀️","🙅🏿‍♀️","🙆","🙆🏻","🙆🏼","🙆🏽","🙆🏾","🙆🏿","🙆‍♂️","🙆🏻‍♂️","🙆🏼‍♂️","🙆🏽‍♂️","🙆🏾‍♂️","🙆🏿‍♂️","🙆‍♀️","🙆🏻‍♀️","🙆🏼‍♀️","🙆🏽‍♀️","🙆🏾‍♀️","🙆🏿‍♀️","💁","💁🏻","💁🏼","💁🏽","💁🏾","💁🏿","💁‍♂️","💁🏻‍♂️","💁🏼‍♂️","💁🏽‍♂️","💁🏾‍♂️","💁🏿‍♂️","💁‍♀️","💁🏻‍♀️","💁🏼‍♀️","💁🏽‍♀️","💁🏾‍♀️","💁🏿‍♀️","🙋","🙋🏻","🙋🏼","🙋🏽","🙋🏾","🙋🏿","🙋‍♂️","🙋🏻‍♂️","🙋🏼‍♂️","🙋🏽‍♂️","🙋🏾‍♂️","🙋🏿‍♂️","🙋‍♀️","🙋🏻‍♀️","🙋🏼‍♀️","🙋🏽‍♀️","🙋🏾‍♀️","🙋🏿‍♀️","🧏","🧏🏻","🧏🏼","🧏🏽","🧏🏾","🧏🏿","🧏‍♂️","🧏🏻‍♂️","🧏🏼‍♂️","🧏🏽‍♂️","🧏🏾‍♂️","🧏🏿‍♂️","🧏‍♀️","🧏🏻‍♀️","🧏🏼‍♀️","🧏🏽‍♀️","🧏🏾‍♀️","🧏🏿‍♀️","🙇","🙇🏻","🙇🏼","🙇🏽","🙇🏾","🙇🏿","🙇‍♂️","🙇🏻‍♂️","🙇🏼‍♂️","🙇🏽‍♂️","🙇🏾‍♂️","🙇🏿‍♂️","🙇‍♀️","🙇🏻‍♀️","🙇🏼‍♀️","🙇🏽‍♀️","🙇🏾‍♀️","🙇🏿‍♀️","🤦","🤦🏻","🤦🏼","🤦🏽","🤦🏾","🤦🏿","🤦‍♂️","🤦🏻‍♂️","🤦🏼‍♂️","🤦🏽‍♂️","🤦🏾‍♂️","🤦🏿‍♂️","🤦‍♀️","🤦🏻‍♀️","🤦🏼‍♀️","🤦🏽‍♀️","🤦🏾‍♀️","🤦🏿‍♀️","🤷","🤷🏻","🤷🏼","🤷🏽","🤷🏾","🤷🏿","🤷‍♂️","🤷🏻‍♂️","🤷🏼‍♂️","🤷🏽‍♂️","🤷🏾‍♂️","🤷🏿‍♂️","🤷‍♀️","🤷🏻‍♀️","🤷🏼‍♀️","🤷🏽‍♀️","🤷🏾‍♀️","🤷🏿‍♀️","🧑‍⚕️","🧑🏻‍⚕️","🧑🏼‍⚕️","🧑🏽‍⚕️","🧑🏾‍⚕️","🧑🏿‍⚕️","👨‍⚕️","👨🏻‍⚕️","👨🏼‍⚕️","👨🏽‍⚕️","👨🏾‍⚕️","👨🏿‍⚕️","👩‍⚕️","👩🏻‍⚕️","👩🏼‍⚕️","👩🏽‍⚕️","👩🏾‍⚕️","👩🏿‍⚕️","🧑‍🎓","🧑🏻‍🎓","🧑🏼‍🎓","🧑🏽‍🎓","🧑🏾‍🎓","🧑🏿‍🎓","👨‍🎓","👨🏻‍🎓","👨🏼‍🎓","👨🏽‍🎓","👨🏾‍🎓","👨🏿‍🎓","👩‍🎓","👩🏻‍🎓","👩🏼‍🎓","👩🏽‍🎓","👩🏾‍🎓","👩🏿‍🎓","🧑‍🏫","🧑🏻‍🏫","🧑🏼‍🏫","🧑🏽‍🏫","🧑🏾‍🏫","🧑🏿‍🏫","👨‍🏫","👨🏻‍🏫","👨🏼‍🏫","👨🏽‍🏫","👨🏾‍🏫","👨🏿‍🏫","👩‍🏫","👩🏻‍🏫","👩🏼‍🏫","👩🏽‍🏫","👩🏾‍🏫","👩🏿‍🏫","🧑‍⚖️","🧑🏻‍⚖️","🧑🏼‍⚖️","🧑🏽‍⚖️","🧑🏾‍⚖️","🧑🏿‍⚖️","👨‍⚖️","👨🏻‍⚖️","👨🏼‍⚖️","👨🏽‍⚖️","👨🏾‍⚖️","👨🏿‍⚖️","👩‍⚖️","👩🏻‍⚖️","👩🏼‍⚖️","👩🏽‍⚖️","👩🏾‍⚖️","👩🏿‍⚖️","🧑‍🌾","🧑🏻‍🌾","🧑🏼‍🌾","🧑🏽‍🌾","🧑🏾‍🌾","🧑🏿‍🌾","👨‍🌾","👨🏻‍🌾","👨🏼‍🌾","👨🏽‍🌾","👨🏾‍🌾","👨🏿‍🌾","👩‍🌾","👩🏻‍🌾","👩🏼‍🌾","👩🏽‍🌾","👩🏾‍🌾","👩🏿‍🌾","🧑‍🍳","🧑🏻‍🍳","🧑🏼‍🍳","🧑🏽‍🍳","🧑🏾‍🍳","🧑🏿‍🍳","👨‍🍳","👨🏻‍🍳","👨🏼‍🍳","👨🏽‍🍳","👨🏾‍🍳","👨🏿‍🍳","👩‍🍳","👩🏻‍🍳","👩🏼‍🍳","👩🏽‍🍳","👩🏾‍🍳","👩🏿‍🍳","🧑‍🔧","🧑🏻‍🔧","🧑🏼‍🔧","🧑🏽‍🔧","🧑🏾‍🔧","🧑🏿‍🔧","👨‍🔧","👨🏻‍🔧","👨🏼‍🔧","👨🏽‍🔧","👨🏾‍🔧","👨🏿‍🔧","👩‍🔧","👩🏻‍🔧","👩🏼‍🔧","👩🏽‍🔧","👩🏾‍🔧","👩🏿‍🔧","🧑‍🏭","🧑🏻‍🏭","🧑🏼‍🏭","🧑🏽‍🏭","🧑🏾‍🏭","🧑🏿‍🏭","👨‍🏭","👨🏻‍🏭","👨🏼‍🏭","👨🏽‍🏭","👨🏾‍🏭","👨🏿‍🏭","👩‍🏭","👩🏻‍🏭","👩🏼‍🏭","👩🏽‍🏭","👩🏾‍🏭","👩🏿‍🏭","🧑‍💼","🧑🏻‍💼","🧑🏼‍💼","🧑🏽‍💼","🧑🏾‍💼","🧑🏿‍💼","👨‍💼","👨🏻‍💼","👨🏼‍💼","👨🏽‍💼","👨🏾‍💼","👨🏿‍💼","👩‍💼","👩🏻‍💼","👩🏼‍💼","👩🏽‍💼","👩🏾‍💼","👩🏿‍💼","🧑‍🔬","🧑🏻‍🔬","🧑🏼‍🔬","🧑🏽‍🔬","🧑🏾‍🔬","🧑🏿‍🔬","👨‍🔬","👨🏻‍🔬","👨🏼‍🔬","👨🏽‍🔬","👨🏾‍🔬","👨🏿‍🔬","👩‍🔬","👩🏻‍🔬","👩🏼‍🔬","👩🏽‍🔬","👩🏾‍🔬","👩🏿‍🔬","🧑‍💻","🧑🏻‍💻","🧑🏼‍💻","🧑🏽‍💻","🧑🏾‍💻","🧑🏿‍💻","👨‍💻","👨🏻‍💻","👨🏼‍💻","👨🏽‍💻","👨🏾‍💻","👨🏿‍💻","👩‍💻","👩🏻‍💻","👩🏼‍💻","👩🏽‍💻","👩🏾‍💻","👩🏿‍💻","🧑‍🎤","🧑🏻‍🎤","🧑🏼‍🎤","🧑🏽‍🎤","🧑🏾‍🎤","🧑🏿‍🎤","👨‍🎤","👨🏻‍🎤","👨🏼‍🎤","👨🏽‍🎤","👨🏾‍🎤","👨🏿‍🎤","👩‍🎤","👩🏻‍🎤","👩🏼‍🎤","👩🏽‍🎤","👩🏾‍🎤","👩🏿‍🎤","🧑‍🎨","🧑🏻‍🎨","🧑🏼‍🎨","🧑🏽‍🎨","🧑🏾‍🎨","🧑🏿‍🎨","👨‍🎨","👨🏻‍🎨","👨🏼‍🎨","👨🏽‍🎨","👨🏾‍🎨","👨🏿‍🎨","👩‍🎨","👩🏻‍🎨","👩🏼‍🎨","👩🏽‍🎨","👩🏾‍🎨","👩🏿‍🎨","🧑‍✈️","🧑🏻‍✈️","🧑🏼‍✈️","🧑🏽‍✈️","🧑🏾‍✈️","🧑🏿‍✈️","👨‍✈️","👨🏻‍✈️","👨🏼‍✈️","👨🏽‍✈️","👨🏾‍✈️","👨🏿‍✈️","👩‍✈️","👩🏻‍✈️","👩🏼‍✈️","👩🏽‍✈️","👩🏾‍✈️","👩🏿‍✈️","🧑‍🚀","🧑🏻‍🚀","🧑🏼‍🚀","🧑🏽‍🚀","🧑🏾‍🚀","🧑🏿‍🚀","👨‍🚀","👨🏻‍🚀","👨🏼‍🚀","👨🏽‍🚀","👨🏾‍🚀","👨🏿‍🚀","👩‍🚀","👩🏻‍🚀","👩🏼‍🚀","👩🏽‍🚀","👩🏾‍🚀","👩🏿‍🚀","🧑‍🚒","🧑🏻‍🚒","🧑🏼‍🚒","🧑🏽‍🚒","🧑🏾‍🚒","🧑🏿‍🚒","👨‍🚒","👨🏻‍🚒","👨🏼‍🚒","👨🏽‍🚒","👨🏾‍🚒","👨🏿‍🚒","👩‍🚒","👩🏻‍🚒","👩🏼‍🚒","👩🏽‍🚒","👩🏾‍🚒","👩🏿‍🚒","👮","👮🏻","👮🏼","👮🏽","👮🏾","👮🏿","👮‍♂️","👮🏻‍♂️","👮🏼‍♂️","👮🏽‍♂️","👮🏾‍♂️","👮🏿‍♂️","👮‍♀️","👮🏻‍♀️","👮🏼‍♀️","👮🏽‍♀️","👮🏾‍♀️","👮🏿‍♀️","🕵️","🕵🏻","🕵🏼","🕵🏽","🕵🏾","🕵🏿","🕵️‍♂️","🕵🏻‍♂️","🕵🏼‍♂️","🕵🏽‍♂️","🕵🏾‍♂️","🕵🏿‍♂️","🕵️‍♀️","🕵🏻‍♀️","🕵🏼‍♀️","🕵🏽‍♀️","🕵🏾‍♀️","🕵🏿‍♀️","💂","💂🏻","💂🏼","💂🏽","💂🏾","💂🏿","💂‍♂️","💂🏻‍♂️","💂🏼‍♂️","💂🏽‍♂️","💂🏾‍♂️","💂🏿‍♂️","💂‍♀️","💂🏻‍♀️","💂🏼‍♀️","💂🏽‍♀️","💂🏾‍♀️","💂🏿‍♀️","🥷","🥷🏻","🥷🏼","🥷🏽","🥷🏾","🥷🏿","👷","👷🏻","👷🏼","👷🏽","👷🏾","👷🏿","👷‍♂️","👷🏻‍♂️","👷🏼‍♂️","👷🏽‍♂️","👷🏾‍♂️","👷🏿‍♂️","👷‍♀️","👷🏻‍♀️","👷🏼‍♀️","👷🏽‍♀️","👷🏾‍♀️","👷🏿‍♀️","🤴","🤴🏻","🤴🏼","🤴🏽","🤴🏾","🤴🏿","👸","👸🏻","👸🏼","👸🏽","👸🏾","👸🏿","👳","👳🏻","👳🏼","👳🏽","👳🏾","👳🏿","👳‍♂️","👳🏻‍♂️","👳🏼‍♂️","👳🏽‍♂️","👳🏾‍♂️","👳🏿‍♂️","👳‍♀️","👳🏻‍♀️","👳🏼‍♀️","👳🏽‍♀️","👳🏾‍♀️","👳🏿‍♀️","👲","👲🏻","👲🏼","👲🏽","👲🏾","👲🏿","🧕","🧕🏻","🧕🏼","🧕🏽","🧕🏾","🧕🏿","🤵","🤵🏻","🤵🏼","🤵🏽","🤵🏾","🤵🏿","🤵‍♂️","🤵🏻‍♂️","🤵🏼‍♂️","🤵🏽‍♂️","🤵🏾‍♂️","🤵🏿‍♂️","🤵‍♀️","🤵🏻‍♀️","🤵🏼‍♀️","🤵🏽‍♀️","🤵🏾‍♀️","🤵🏿‍♀️","👰","👰🏻","👰🏼","👰🏽","👰🏾","👰🏿","👰‍♂️","👰🏻‍♂️","👰🏼‍♂️","👰🏽‍♂️","👰🏾‍♂️","👰🏿‍♂️","👰‍♀️","👰🏻‍♀️","👰🏼‍♀️","👰🏽‍♀️","👰🏾‍♀️","👰🏿‍♀️","🤰","🤰🏻","🤰🏼","🤰🏽","🤰🏾","🤰🏿","🤱","🤱🏻","🤱🏼","🤱🏽","🤱🏾","🤱🏿","👩‍🍼","👩🏻‍🍼","👩🏼‍🍼","👩🏽‍🍼","👩🏾‍🍼","👩🏿‍🍼","👨‍🍼","👨🏻‍🍼","👨🏼‍🍼","👨🏽‍🍼","👨🏾‍🍼","👨🏿‍🍼","🧑‍🍼","🧑🏻‍🍼","🧑🏼‍🍼","🧑🏽‍🍼","🧑🏾‍🍼","🧑🏿‍🍼","👼","👼🏻","👼🏼","👼🏽","👼🏾","👼🏿","🎅","🎅🏻","🎅🏼","🎅🏽","🎅🏾","🎅🏿","🤶","🤶🏻","🤶🏼","🤶🏽","🤶🏾","🤶🏿","🧑‍🎄","🧑🏻‍🎄","🧑🏼‍🎄","🧑🏽‍🎄","🧑🏾‍🎄","🧑🏿‍🎄","🦸","🦸🏻","🦸🏼","🦸🏽","🦸🏾","🦸🏿","🦸‍♂️","🦸🏻‍♂️","🦸🏼‍♂️","🦸🏽‍♂️","🦸🏾‍♂️","🦸🏿‍♂️","🦸‍♀️","🦸🏻‍♀️","🦸🏼‍♀️","🦸🏽‍♀️","🦸🏾‍♀️","🦸🏿‍♀️","🦹","🦹🏻","🦹🏼","🦹🏽","🦹🏾","🦹🏿","🦹‍♂️","🦹🏻‍♂️","🦹🏼‍♂️","🦹🏽‍♂️","🦹🏾‍♂️","🦹🏿‍♂️","🦹‍♀️","🦹🏻‍♀️","🦹🏼‍♀️","🦹🏽‍♀️","🦹🏾‍♀️","🦹🏿‍♀️","🧙","🧙🏻","🧙🏼","🧙🏽","🧙🏾","🧙🏿","🧙‍♂️","🧙🏻‍♂️","🧙🏼‍♂️","🧙🏽‍♂️","🧙🏾‍♂️","🧙🏿‍♂️","🧙‍♀️","🧙🏻‍♀️","🧙🏼‍♀️","🧙🏽‍♀️","🧙🏾‍♀️","🧙🏿‍♀️","🧚","🧚🏻","🧚🏼","🧚🏽","🧚🏾","🧚🏿","🧚‍♂️","🧚🏻‍♂️","🧚🏼‍♂️","🧚🏽‍♂️","🧚🏾‍♂️","🧚🏿‍♂️","🧚‍♀️","🧚🏻‍♀️","🧚🏼‍♀️","🧚🏽‍♀️","🧚🏾‍♀️","🧚🏿‍♀️","🧛","🧛🏻","🧛🏼","🧛🏽","🧛🏾","🧛🏿","🧛‍♂️","🧛🏻‍♂️","🧛🏼‍♂️","🧛🏽‍♂️","🧛🏾‍♂️","🧛🏿‍♂️","🧛‍♀️","🧛🏻‍♀️","🧛🏼‍♀️","🧛🏽‍♀️","🧛🏾‍♀️","🧛🏿‍♀️","🧜","🧜🏻","🧜🏼","🧜🏽","🧜🏾","🧜🏿","🧜‍♂️","🧜🏻‍♂️","🧜🏼‍♂️","🧜🏽‍♂️","🧜🏾‍♂️","🧜🏿‍♂️","🧜‍♀️","🧜🏻‍♀️","🧜🏼‍♀️","🧜🏽‍♀️","🧜🏾‍♀️","🧜🏿‍♀️","🧝","🧝🏻","🧝🏼","🧝🏽","🧝🏾","🧝🏿","🧝‍♂️","🧝🏻‍♂️","🧝🏼‍♂️","🧝🏽‍♂️","🧝🏾‍♂️","🧝🏿‍♂️","🧝‍♀️","🧝🏻‍♀️","🧝🏼‍♀️","🧝🏽‍♀️","🧝🏾‍♀️","🧝🏿‍♀️","🧞","🧞‍♂️","🧞‍♀️","🧟","🧟‍♂️","🧟‍♀️","💆","💆🏻","💆🏼","💆🏽","💆🏾","💆🏿","💆‍♂️","💆🏻‍♂️","💆🏼‍♂️","💆🏽‍♂️","💆🏾‍♂️","💆🏿‍♂️","💆‍♀️","💆🏻‍♀️","💆🏼‍♀️","💆🏽‍♀️","💆🏾‍♀️","💆🏿‍♀️","💇","💇🏻","💇🏼","💇🏽","💇🏾","💇🏿","💇‍♂️","💇🏻‍♂️","💇🏼‍♂️","💇🏽‍♂️","💇🏾‍♂️","💇🏿‍♂️","💇‍♀️","💇🏻‍♀️","💇🏼‍♀️","💇🏽‍♀️","💇🏾‍♀️","💇🏿‍♀️","🚶","🚶🏻","🚶🏼","🚶🏽","🚶🏾","🚶🏿","🚶‍♂️","🚶🏻‍♂️","🚶🏼‍♂️","🚶🏽‍♂️","🚶🏾‍♂️","🚶🏿‍♂️","🚶‍♀️","🚶🏻‍♀️","🚶🏼‍♀️","🚶🏽‍♀️","🚶🏾‍♀️","🚶🏿‍♀️","🧍","🧍🏻","🧍🏼","🧍🏽","🧍🏾","🧍🏿","🧍‍♂️","🧍🏻‍♂️","🧍🏼‍♂️","🧍🏽‍♂️","🧍🏾‍♂️","🧍🏿‍♂️","🧍‍♀️","🧍🏻‍♀️","🧍🏼‍♀️","🧍🏽‍♀️","🧍🏾‍♀️","🧍🏿‍♀️","🧎","🧎🏻","🧎🏼","🧎🏽","🧎🏾","🧎🏿","🧎‍♂️","🧎🏻‍♂️","🧎🏼‍♂️","🧎🏽‍♂️","🧎🏾‍♂️","🧎🏿‍♂️","🧎‍♀️","🧎🏻‍♀️","🧎🏼‍♀️","🧎🏽‍♀️","🧎🏾‍♀️","🧎🏿‍♀️","🧑‍🦯","🧑🏻‍🦯","🧑🏼‍🦯","🧑🏽‍🦯","🧑🏾‍🦯","🧑🏿‍🦯","👨‍🦯","👨🏻‍🦯","👨🏼‍🦯","👨🏽‍🦯","👨🏾‍🦯","👨🏿‍🦯","👩‍🦯","👩🏻‍🦯","👩🏼‍🦯","👩🏽‍🦯","👩🏾‍🦯","👩🏿‍🦯","🧑‍🦼","🧑🏻‍🦼","🧑🏼‍🦼","🧑🏽‍🦼","🧑🏾‍🦼","🧑🏿‍🦼","👨‍🦼","👨🏻‍🦼","👨🏼‍🦼","👨🏽‍🦼","👨🏾‍🦼","👨🏿‍🦼","👩‍🦼","👩🏻‍🦼","👩🏼‍🦼","👩🏽‍🦼","👩🏾‍🦼","👩🏿‍🦼","🧑‍🦽","🧑🏻‍🦽","🧑🏼‍🦽","🧑🏽‍🦽","🧑🏾‍🦽","🧑🏿‍🦽","👨‍🦽","👨🏻‍🦽","👨🏼‍🦽","👨🏽‍🦽","👨🏾‍🦽","👨🏿‍🦽","👩‍🦽","👩🏻‍🦽","👩🏼‍🦽","👩🏽‍🦽","👩🏾‍🦽","👩🏿‍🦽","🏃","🏃🏻","🏃🏼","🏃🏽","🏃🏾","🏃🏿","🏃‍♂️","🏃🏻‍♂️","🏃🏼‍♂️","🏃🏽‍♂️","🏃🏾‍♂️","🏃🏿‍♂️","🏃‍♀️","🏃🏻‍♀️","🏃🏼‍♀️","🏃🏽‍♀️","🏃🏾‍♀️","🏃🏿‍♀️","💃","💃🏻","💃🏼","💃🏽","💃🏾","💃🏿","🕺","🕺🏻","🕺🏼","🕺🏽","🕺🏾","🕺🏿","🕴️","🕴🏻","🕴🏼","🕴🏽","🕴🏾","🕴🏿","👯","👯‍♂️","👯‍♀️","🧖","🧖🏻","🧖🏼","🧖🏽","🧖🏾","🧖🏿","🧖‍♂️","🧖🏻‍♂️","🧖🏼‍♂️","🧖🏽‍♂️","🧖🏾‍♂️","🧖🏿‍♂️","🧖‍♀️","🧖🏻‍♀️","🧖🏼‍♀️","🧖🏽‍♀️","🧖🏾‍♀️","🧖🏿‍♀️","🧗","🧗🏻","🧗🏼","🧗🏽","🧗🏾","🧗🏿","🧗‍♂️","🧗🏻‍♂️","🧗🏼‍♂️","🧗🏽‍♂️","🧗🏾‍♂️","🧗🏿‍♂️","🧗‍♀️","🧗🏻‍♀️","🧗🏼‍♀️","🧗🏽‍♀️","🧗🏾‍♀️","🧗🏿‍♀️","🤺","🏇","🏇🏻","🏇🏼","🏇🏽","🏇🏾","🏇🏿","⛷️","🏂","🏂🏻","🏂🏼","🏂🏽","🏂🏾","🏂🏿","🏌️","🏌🏻","🏌🏼","🏌🏽","🏌🏾","🏌🏿","🏌️‍♂️","🏌🏻‍♂️","🏌🏼‍♂️","🏌🏽‍♂️","🏌🏾‍♂️","🏌🏿‍♂️","🏌️‍♀️","🏌🏻‍♀️","🏌🏼‍♀️","🏌🏽‍♀️","🏌🏾‍♀️","🏌🏿‍♀️","🏄","🏄🏻","🏄🏼","🏄🏽","🏄🏾","🏄🏿","🏄‍♂️","🏄🏻‍♂️","🏄🏼‍♂️","🏄🏽‍♂️","🏄🏾‍♂️","🏄🏿‍♂️","🏄‍♀️","🏄🏻‍♀️","🏄🏼‍♀️","🏄🏽‍♀️","🏄🏾‍♀️","🏄🏿‍♀️","🚣","🚣🏻","🚣🏼","🚣🏽","🚣🏾","🚣🏿","🚣‍♂️","🚣🏻‍♂️","🚣🏼‍♂️","🚣🏽‍♂️","🚣🏾‍♂️","🚣🏿‍♂️","🚣‍♀️","🚣🏻‍♀️","🚣🏼‍♀️","🚣🏽‍♀️","🚣🏾‍♀️","🚣🏿‍♀️","🏊","🏊🏻","🏊🏼","🏊🏽","🏊🏾","🏊🏿","🏊‍♂️","🏊🏻‍♂️","🏊🏼‍♂️","🏊🏽‍♂️","🏊🏾‍♂️","🏊🏿‍♂️","🏊‍♀️","🏊🏻‍♀️","🏊🏼‍♀️","🏊🏽‍♀️","🏊🏾‍♀️","🏊🏿‍♀️","⛹️","⛹🏻","⛹🏼","⛹🏽","⛹🏾","⛹🏿","⛹️‍♂️","⛹🏻‍♂️","⛹🏼‍♂️","⛹🏽‍♂️","⛹🏾‍♂️","⛹🏿‍♂️","⛹️‍♀️","⛹🏻‍♀️","⛹🏼‍♀️","⛹🏽‍♀️","⛹🏾‍♀️","⛹🏿‍♀️","🏋️","🏋🏻","🏋🏼","🏋🏽","🏋🏾","🏋🏿","🏋️‍♂️","🏋🏻‍♂️","🏋🏼‍♂️","🏋🏽‍♂️","🏋🏾‍♂️","🏋🏿‍♂️","🏋️‍♀️","🏋🏻‍♀️","🏋🏼‍♀️","🏋🏽‍♀️","🏋🏾‍♀️","🏋🏿‍♀️","🚴","🚴🏻","🚴🏼","🚴🏽","🚴🏾","🚴🏿","🚴‍♂️","🚴🏻‍♂️","🚴🏼‍♂️","🚴🏽‍♂️","🚴🏾‍♂️","🚴🏿‍♂️","🚴‍♀️","🚴🏻‍♀️","🚴🏼‍♀️","🚴🏽‍♀️","🚴🏾‍♀️","🚴🏿‍♀️","🚵","🚵🏻","🚵🏼","🚵🏽","🚵🏾","🚵🏿","🚵‍♂️","🚵🏻‍♂️","🚵🏼‍♂️","🚵🏽‍♂️","🚵🏾‍♂️","🚵🏿‍♂️","🚵‍♀️","🚵🏻‍♀️","🚵🏼‍♀️","🚵🏽‍♀️","🚵🏾‍♀️","🚵🏿‍♀️","🤸","🤸🏻","🤸🏼","🤸🏽","🤸🏾","🤸🏿","🤸‍♂️","🤸🏻‍♂️","🤸🏼‍♂️","🤸🏽‍♂️","🤸🏾‍♂️","🤸🏿‍♂️","🤸‍♀️","🤸🏻‍♀️","🤸🏼‍♀️","🤸🏽‍♀️","🤸🏾‍♀️","🤸🏿‍♀️","🤼","🤼‍♂️","🤼‍♀️","🤽","🤽🏻","🤽🏼","🤽🏽","🤽🏾","🤽🏿","🤽‍♂️","🤽🏻‍♂️","🤽🏼‍♂️","🤽🏽‍♂️","🤽🏾‍♂️","🤽🏿‍♂️","🤽‍♀️","🤽🏻‍♀️","🤽🏼‍♀️","🤽🏽‍♀️","🤽🏾‍♀️","🤽🏿‍♀️","🤾","🤾🏻","🤾🏼","🤾🏽","🤾🏾","🤾🏿","🤾‍♂️","🤾🏻‍♂️","🤾🏼‍♂️","🤾🏽‍♂️","🤾🏾‍♂️","🤾🏿‍♂️","🤾‍♀️","🤾🏻‍♀️","🤾🏼‍♀️","🤾🏽‍♀️","🤾🏾‍♀️","🤾🏿‍♀️","🤹","🤹🏻","🤹🏼","🤹🏽","🤹🏾","🤹🏿","🤹‍♂️","🤹🏻‍♂️","🤹🏼‍♂️","🤹🏽‍♂️","🤹🏾‍♂️","🤹🏿‍♂️","🤹‍♀️","🤹🏻‍♀️","🤹🏼‍♀️","🤹🏽‍♀️","🤹🏾‍♀️","🤹🏿‍♀️","🧘","🧘🏻","🧘🏼","🧘🏽","🧘🏾","🧘🏿","🧘‍♂️","🧘🏻‍♂️","🧘🏼‍♂️","🧘🏽‍♂️","🧘🏾‍♂️","🧘🏿‍♂️","🧘‍♀️","🧘🏻‍♀️","🧘🏼‍♀️","🧘🏽‍♀️","🧘🏾‍♀️","🧘🏿‍♀️","🛀","🛀🏻","🛀🏼","🛀🏽","🛀🏾","🛀🏿","🛌","🛌🏻","🛌🏼","🛌🏽","🛌🏾","🛌🏿","🧑‍🤝‍🧑","🧑🏻‍🤝‍🧑🏻","🧑🏻‍🤝‍🧑🏼","🧑🏻‍🤝‍🧑🏽","🧑🏻‍🤝‍🧑🏾","🧑🏻‍🤝‍🧑🏿","🧑🏼‍🤝‍🧑🏻","🧑🏼‍🤝‍🧑🏼","🧑🏼‍🤝‍🧑🏽","🧑🏼‍🤝‍🧑🏾","🧑🏼‍🤝‍🧑🏿","🧑🏽‍🤝‍🧑🏻","🧑🏽‍🤝‍🧑🏼","🧑🏽‍🤝‍🧑🏽","🧑🏽‍🤝‍🧑🏾","🧑🏽‍🤝‍🧑🏿","🧑🏾‍🤝‍🧑🏻","🧑🏾‍🤝‍🧑🏼","🧑🏾‍🤝‍🧑🏽","🧑🏾‍🤝‍🧑🏾","🧑🏾‍🤝‍🧑🏿","🧑🏿‍🤝‍🧑🏻","🧑🏿‍🤝‍🧑🏼","🧑🏿‍🤝‍🧑🏽","🧑🏿‍🤝‍🧑🏾","🧑🏿‍🤝‍🧑🏿","👭","👭🏻","👩🏻‍🤝‍👩🏼","👩🏻‍🤝‍👩🏽","👩🏻‍🤝‍👩🏾","👩🏻‍🤝‍👩🏿","👩🏼‍🤝‍👩🏻","👭🏼","👩🏼‍🤝‍👩🏽","👩🏼‍🤝‍👩🏾","👩🏼‍🤝‍👩🏿","👩🏽‍🤝‍👩🏻","👩🏽‍🤝‍👩🏼","👭🏽","👩🏽‍🤝‍👩🏾","👩🏽‍🤝‍👩🏿","👩🏾‍🤝‍👩🏻","👩🏾‍🤝‍👩🏼","👩🏾‍🤝‍👩🏽","👭🏾","👩🏾‍🤝‍👩🏿","👩🏿‍🤝‍👩🏻","👩🏿‍🤝‍👩🏼","👩🏿‍🤝‍👩🏽","👩🏿‍🤝‍👩🏾","👭🏿","👫","👫🏻","👩🏻‍🤝‍👨🏼","👩🏻‍🤝‍👨🏽","👩🏻‍🤝‍👨🏾","👩🏻‍🤝‍👨🏿","👩🏼‍🤝‍👨🏻","👫🏼","👩🏼‍🤝‍👨🏽","👩🏼‍🤝‍👨🏾","👩🏼‍🤝‍👨🏿","👩🏽‍🤝‍👨🏻","👩🏽‍🤝‍👨🏼","👫🏽","👩🏽‍🤝‍👨🏾","👩🏽‍🤝‍👨🏿","👩🏾‍🤝‍👨🏻","👩🏾‍🤝‍👨🏼","👩🏾‍🤝‍👨🏽","👫🏾","👩🏾‍🤝‍👨🏿","👩🏿‍🤝‍👨🏻","👩🏿‍🤝‍👨🏼","👩🏿‍🤝‍👨🏽","👩🏿‍🤝‍👨🏾","👫🏿","👬","👬🏻","👨🏻‍🤝‍👨🏼","👨🏻‍🤝‍👨🏽","👨🏻‍🤝‍👨🏾","👨🏻‍🤝‍👨🏿","👨🏼‍🤝‍👨🏻","👬🏼","👨🏼‍🤝‍👨🏽","👨🏼‍🤝‍👨🏾","👨🏼‍🤝‍👨🏿","👨🏽‍🤝‍👨🏻","👨🏽‍🤝‍👨🏼","👬🏽","👨🏽‍🤝‍👨🏾","👨🏽‍🤝‍👨🏿","👨🏾‍🤝‍👨🏻","👨🏾‍🤝‍👨🏼","👨🏾‍🤝‍👨🏽","👬🏾","👨🏾‍🤝‍👨🏿","👨🏿‍🤝‍👨🏻","👨🏿‍🤝‍👨🏼","👨🏿‍🤝‍👨🏽","👨🏿‍🤝‍👨🏾","👬🏿","💏","💏🏻","💏🏼","💏🏽","💏🏾","💏🏿","🧑🏻‍❤️‍💋‍🧑🏼","🧑🏻‍❤️‍💋‍🧑🏽","🧑🏻‍❤️‍💋‍🧑🏾","🧑🏻‍❤️‍💋‍🧑🏿","🧑🏼‍❤️‍💋‍🧑🏻","🧑🏼‍❤️‍💋‍🧑🏽","🧑🏼‍❤️‍💋‍🧑🏾","🧑🏼‍❤️‍💋‍🧑🏿","🧑🏽‍❤️‍💋‍🧑🏻","🧑🏽‍❤️‍💋‍🧑🏼","🧑🏽‍❤️‍💋‍🧑🏾","🧑🏽‍❤️‍💋‍🧑🏿","🧑🏾‍❤️‍💋‍🧑🏻","🧑🏾‍❤️‍💋‍🧑🏼","🧑🏾‍❤️‍💋‍🧑🏽","🧑🏾‍❤️‍💋‍🧑🏿","🧑🏿‍❤️‍💋‍🧑🏻","🧑🏿‍❤️‍💋‍🧑🏼","🧑🏿‍❤️‍💋‍🧑🏽","🧑🏿‍❤️‍💋‍🧑🏾","👩‍❤️‍💋‍👨","👩🏻‍❤️‍💋‍👨🏻","👩🏻‍❤️‍💋‍👨🏼","👩🏻‍❤️‍💋‍👨🏽","👩🏻‍❤️‍💋‍👨🏾","👩🏻‍❤️‍💋‍👨🏿","👩🏼‍❤️‍💋‍👨🏻","👩🏼‍❤️‍💋‍👨🏼","👩🏼‍❤️‍💋‍👨🏽","👩🏼‍❤️‍💋‍👨🏾","👩🏼‍❤️‍💋‍👨🏿","👩🏽‍❤️‍💋‍👨🏻","👩🏽‍❤️‍💋‍👨🏼","👩🏽‍❤️‍💋‍👨🏽","👩🏽‍❤️‍💋‍👨🏾","👩🏽‍❤️‍💋‍👨🏿","👩🏾‍❤️‍💋‍👨🏻","👩🏾‍❤️‍💋‍👨🏼","👩🏾‍❤️‍💋‍👨🏽","👩🏾‍❤️‍💋‍👨🏾","👩🏾‍❤️‍💋‍👨🏿","👩🏿‍❤️‍💋‍👨🏻","👩🏿‍❤️‍💋‍👨🏼","👩🏿‍❤️‍💋‍👨🏽","👩🏿‍❤️‍💋‍👨🏾","👩🏿‍❤️‍💋‍👨🏿","👨‍❤️‍💋‍👨","👨🏻‍❤️‍💋‍👨🏻","👨🏻‍❤️‍💋‍👨🏼","👨🏻‍❤️‍💋‍👨🏽","👨🏻‍❤️‍💋‍👨🏾","👨🏻‍❤️‍💋‍👨🏿","👨🏼‍❤️‍💋‍👨🏻","👨🏼‍❤️‍💋‍👨🏼","👨🏼‍❤️‍💋‍👨🏽","👨🏼‍❤️‍💋‍👨🏾","👨🏼‍❤️‍💋‍👨🏿","👨🏽‍❤️‍💋‍👨🏻","👨🏽‍❤️‍💋‍👨🏼","👨🏽‍❤️‍💋‍👨🏽","👨🏽‍❤️‍💋‍👨🏾","👨🏽‍❤️‍💋‍👨🏿","👨🏾‍❤️‍💋‍👨🏻","👨🏾‍❤️‍💋‍👨🏼","👨🏾‍❤️‍💋‍👨🏽","👨🏾‍❤️‍💋‍👨🏾","👨🏾‍❤️‍💋‍👨🏿","👨🏿‍❤️‍💋‍👨🏻","👨🏿‍❤️‍💋‍👨🏼","👨🏿‍❤️‍💋‍👨🏽","👨🏿‍❤️‍💋‍👨🏾","👨🏿‍❤️‍💋‍👨🏿","👩‍❤️‍💋‍👩","👩🏻‍❤️‍💋‍👩🏻","👩🏻‍❤️‍💋‍👩🏼","👩🏻‍❤️‍💋‍👩🏽","👩🏻‍❤️‍💋‍👩🏾","👩🏻‍❤️‍💋‍👩🏿","👩🏼‍❤️‍💋‍👩🏻","👩🏼‍❤️‍💋‍👩🏼","👩🏼‍❤️‍💋‍👩🏽","👩🏼‍❤️‍💋‍👩🏾","👩🏼‍❤️‍💋‍👩🏿","👩🏽‍❤️‍💋‍👩🏻","👩🏽‍❤️‍💋‍👩🏼","👩🏽‍❤️‍💋‍👩🏽","👩🏽‍❤️‍💋‍👩🏾","👩🏽‍❤️‍💋‍👩🏿","👩🏾‍❤️‍💋‍👩🏻","👩🏾‍❤️‍💋‍👩🏼","👩🏾‍❤️‍💋‍👩🏽","👩🏾‍❤️‍💋‍👩🏾","👩🏾‍❤️‍💋‍👩🏿","👩🏿‍❤️‍💋‍👩🏻","👩🏿‍❤️‍💋‍👩🏼","👩🏿‍❤️‍💋‍👩🏽","👩🏿‍❤️‍💋‍👩🏾","👩🏿‍❤️‍💋‍👩🏿","💑","💑🏻","💑🏼","💑🏽","💑🏾","💑🏿","🧑🏻‍❤️‍🧑🏼","🧑🏻‍❤️‍🧑🏽","🧑🏻‍❤️‍🧑🏾","🧑🏻‍❤️‍🧑🏿","🧑🏼‍❤️‍🧑🏻","🧑🏼‍❤️‍🧑🏽","🧑🏼‍❤️‍🧑🏾","🧑🏼‍❤️‍🧑🏿","🧑🏽‍❤️‍🧑🏻","🧑🏽‍❤️‍🧑🏼","🧑🏽‍❤️‍🧑🏾","🧑🏽‍❤️‍🧑🏿","🧑🏾‍❤️‍🧑🏻","🧑🏾‍❤️‍🧑🏼","🧑🏾‍❤️‍🧑🏽","🧑🏾‍❤️‍🧑🏿","🧑🏿‍❤️‍🧑🏻","🧑🏿‍❤️‍🧑🏼","🧑🏿‍❤️‍🧑🏽","🧑🏿‍❤️‍🧑🏾","👩‍❤️‍👨","👩🏻‍❤️‍👨🏻","👩🏻‍❤️‍👨🏼","👩🏻‍❤️‍👨🏽","👩🏻‍❤️‍👨🏾","👩🏻‍❤️‍👨🏿","👩🏼‍❤️‍👨🏻","👩🏼‍❤️‍👨🏼","👩🏼‍❤️‍👨🏽","👩🏼‍❤️‍👨🏾","👩🏼‍❤️‍👨🏿","👩🏽‍❤️‍👨🏻","👩🏽‍❤️‍👨🏼","👩🏽‍❤️‍👨🏽","👩🏽‍❤️‍👨🏾","👩🏽‍❤️‍👨🏿","👩🏾‍❤️‍👨🏻","👩🏾‍❤️‍👨🏼","👩🏾‍❤️‍👨🏽","👩🏾‍❤️‍👨🏾","👩🏾‍❤️‍👨🏿","👩🏿‍❤️‍👨🏻","👩🏿‍❤️‍👨🏼","👩🏿‍❤️‍👨🏽","👩🏿‍❤️‍👨🏾","👩🏿‍❤️‍👨🏿","👨‍❤️‍👨","👨🏻‍❤️‍👨🏻","👨🏻‍❤️‍👨🏼","👨🏻‍❤️‍👨🏽","👨🏻‍❤️‍👨🏾","👨🏻‍❤️‍👨🏿","👨🏼‍❤️‍👨🏻","👨🏼‍❤️‍👨🏼","👨🏼‍❤️‍👨🏽","👨🏼‍❤️‍👨🏾","👨🏼‍❤️‍👨🏿","👨🏽‍❤️‍👨🏻","👨🏽‍❤️‍👨🏼","👨🏽‍❤️‍👨🏽","👨🏽‍❤️‍👨🏾","👨🏽‍❤️‍👨🏿","👨🏾‍❤️‍👨🏻","👨🏾‍❤️‍👨🏼","👨🏾‍❤️‍👨🏽","👨🏾‍❤️‍👨🏾","👨🏾‍❤️‍👨🏿","👨🏿‍❤️‍👨🏻","👨🏿‍❤️‍👨🏼","👨🏿‍❤️‍👨🏽","👨🏿‍❤️‍👨🏾","👨🏿‍❤️‍👨🏿","👩‍❤️‍👩","👩🏻‍❤️‍👩🏻","👩🏻‍❤️‍👩🏼","👩🏻‍❤️‍👩🏽","👩🏻‍❤️‍👩🏾","👩🏻‍❤️‍👩🏿","👩🏼‍❤️‍👩🏻","👩🏼‍❤️‍👩🏼","👩🏼‍❤️‍👩🏽","👩🏼‍❤️‍👩🏾","👩🏼‍❤️‍👩🏿","👩🏽‍❤️‍👩🏻","👩🏽‍❤️‍👩🏼","👩🏽‍❤️‍👩🏽","👩🏽‍❤️‍👩🏾","👩🏽‍❤️‍👩🏿","👩🏾‍❤️‍👩🏻","👩🏾‍❤️‍👩🏼","👩🏾‍❤️‍👩🏽","👩🏾‍❤️‍👩🏾","👩🏾‍❤️‍👩🏿","👩🏿‍❤️‍👩🏻","👩🏿‍❤️‍👩🏼","👩🏿‍❤️‍👩🏽","👩🏿‍❤️‍👩🏾","👩🏿‍❤️‍👩🏿","👪","👨‍👩‍👦","👨‍👩‍👧","👨‍👩‍👧‍👦","👨‍👩‍👦‍👦","👨‍👩‍👧‍👧","👨‍👨‍👦","👨‍👨‍👧","👨‍👨‍👧‍👦","👨‍👨‍👦‍👦","👨‍👨‍👧‍👧","👩‍👩‍👦","👩‍👩‍👧","👩‍👩‍👧‍👦","👩‍👩‍👦‍👦","👩‍👩‍👧‍👧","👨‍👦","👨‍👦‍👦","👨‍👧","👨‍👧‍👦","👨‍👧‍👧","👩‍👦","👩‍👦‍👦","👩‍👧","👩‍👧‍👦","👩‍👧‍👧","🗣️","👤","👥","🫂","👣"],nature:["🐵","🐒","🦍","🦧","🐶","🐕","🦮","🐕‍🦺","🐩","🐺","🦊","🦝","🐱","🐈","🐈‍⬛","🦁","🐯","🐅","🐆","🐴","🐎","🦄","🦓","🦌","🦬","🐮","🐂","🐃","🐄","🐷","🐖","🐗","🐽","🐏","🐑","🐐","🐪","🐫","🦙","🦒","🐘","🦣","🦏","🦛","🐭","🐁","🐀","🐹","🐰","🐇","🐿️","🦫","🦔","🦇","🐻","🐻‍❄️","🐨","🐼","🦥","🦦","🦨","🦘","🦡","🐾","🦃","🐔","🐓","🐣","🐤","🐥","🐦","🐧","🕊️","🦅","🦆","🦢","🦉","🦤","🪶","🦩","🦚","🦜","🐸","🐊","🐢","🦎","🐍","🐲","🐉","🦕","🦖","🐳","🐋","🐬","🦭","🐟","🐠","🐡","🦈","🐙","🐚","🐌","🦋","🐛","🐜","🐝","🪲","🐞","🦗","🪳","🕷️","🕸️","🦂","🦟","🪰","🪱","🦠","💐","🌸","💮","🏵️","🌹","🥀","🌺","🌻","🌼","🌷","🌱","🪴","🌲","🌳","🌴","🌵","🌾","🌿","☘️","🍀","🍁","🍂","🍃"],food:["🍇","🍈","🍉","🍊","🍋","🍌","🍍","🥭","🍎","🍏","🍐","🍑","🍒","🍓","🫐","🥝","🍅","🫒","🥥","🥑","🍆","🥔","🥕","🌽","🌶️","🫑","🥒","🥬","🥦","🧄","🧅","🍄","🥜","🌰","🍞","🥐","🥖","🫓","🥨","🥯","🥞","🧇","🧀","🍖","🍗","🥩","🥓","🍔","🍟","🍕","🌭","🥪","🌮","🌯","🫔","🥙","🧆","🥚","🍳","🥘","🍲","🫕","🥣","🥗","🍿","🧈","🧂","🥫","🍱","🍘","🍙","🍚","🍛","🍜","🍝","🍠","🍢","🍣","🍤","🍥","🥮","🍡","🥟","🥠","🥡","🦀","🦞","🦐","🦑","🦪","🍦","🍧","🍨","🍩","🍪","🎂","🍰","🧁","🥧","🍫","🍬","🍭","🍮","🍯","🍼","🥛","☕","🫖","🍵","🍶","🍾","🍷","🍸","🍹","🍺","🍻","🥂","🥃","🥤","🧋","🧃","🧉","🧊","🥢","🍽️","🍴","🥄","🔪","🏺"],travel:["🌍","🌎","🌏","🌐","🗺️","🗾","🧭","🏔️","⛰️","🌋","🗻","🏕️","🏖️","🏜️","🏝️","🏞️","🏟️","🏛️","🏗️","🧱","🪨","🪵","🛖","🏘️","🏚️","🏠","🏡","🏢","🏣","🏤","🏥","🏦","🏨","🏩","🏪","🏫","🏬","🏭","🏯","🏰","💒","🗼","🗽","⛪","🕌","🛕","🕍","⛩️","🕋","⛲","⛺","🌁","🌃","🏙️","🌄","🌅","🌆","🌇","🌉","♨️","🎠","🎡","🎢","💈","🎪","🚂","🚃","🚄","🚅","🚆","🚇","🚈","🚉","🚊","🚝","🚞","🚋","🚌","🚍","🚎","🚐","🚑","🚒","🚓","🚔","🚕","🚖","🚗","🚘","🚙","🛻","🚚","🚛","🚜","🏎️","🏍️","🛵","🦽","🦼","🛺","🚲","🛴","🛹","🛼","🚏","🛣️","🛤️","🛢️","⛽","🚨","🚥","🚦","🛑","🚧","⚓","⛵","🛶","🚤","🛳️","⛴️","🛥️","🚢","✈️","🛩️","🛫","🛬","🪂","💺","🚁","🚟","🚠","🚡","🛰️","🚀","🛸","🛎️","🧳","⌛","⏳","⌚","⏰","⏱️","⏲️","🕰️","🕛","🕧","🕐","🕜","🕑","🕝","🕒","🕞","🕓","🕟","🕔","🕠","🕕","🕡","🕖","🕢","🕗","🕣","🕘","🕤","🕙","🕥","🕚","🕦","🌑","🌒","🌓","🌔","🌕","🌖","🌗","🌘","🌙","🌚","🌛","🌜","🌡️","☀️","🌝","🌞","🪐","⭐","🌟","🌠","🌌","☁️","⛅","⛈️","🌤️","🌥️","🌦️","🌧️","🌨️","🌩️","🌪️","🌫️","🌬️","🌀","🌈","🌂","☂️","☔","⛱️","⚡","❄️","☃️","⛄","☄️","🔥","💧","🌊"],activity:["🎃","🎄","🎆","🎇","🧨","✨","🎈","🎉","🎊","🎋","🎍","🎎","🎏","🎐","🎑","🧧","🎀","🎁","🎗️","🎟️","🎫","🎖️","🏆","🏅","🥇","🥈","🥉","⚽","⚾","🥎","🏀","🏐","🏈","🏉","🎾","🥏","🎳","🏏","🏑","🏒","🥍","🏓","🏸","🥊","🥋","🥅","⛳","⛸️","🎣","🤿","🎽","🎿","🛷","🥌","🎯","🪀","🪁","🎱","🔮","🪄","🧿","🎮","🕹️","🎰","🎲","🧩","🧸","🪅","🪆","♠️","♥️","♦️","♣️","♟️","🃏","🀄","🎴","🎭","🖼️","🎨","🧵","🪡","🧶","🪢"],object:["👓","🕶️","🥽","🥼","🦺","👔","👕","👖","🧣","🧤","🧥","🧦","👗","👘","🥻","🩱","🩲","🩳","👙","👚","👛","👜","👝","🛍️","🎒","🩴","👞","👟","🥾","🥿","👠","👡","🩰","👢","👑","👒","🎩","🎓","🧢","🪖","⛑️","📿","💄","💍","💎","🔇","🔈","🔉","🔊","📢","📣","📯","🔔","🔕","🎼","🎵","🎶","🎙️","🎚️","🎛️","🎤","🎧","📻","🎷","🪗","🎸","🎹","🎺","🎻","🪕","🥁","🪘","📱","📲","☎️","📞","📟","📠","🔋","🔌","💻","🖥️","🖨️","⌨️","🖱️","🖲️","💽","💾","💿","📀","🧮","🎥","🎞️","📽️","🎬","📺","📷","📸","📹","📼","🔍","🔎","🕯️","💡","🔦","🏮","🪔","📔","📕","📖","📗","📘","📙","📚","📓","📒","📃","📜","📄","📰","🗞️","📑","🔖","🏷️","💰","🪙","💴","💵","💶","💷","💸","💳","🧾","💹","✉️","📧","📨","📩","📤","📥","📦","📫","📪","📬","📭","📮","🗳️","✏️","✒️","🖋️","🖊️","🖌️","🖍️","📝","💼","📁","📂","🗂️","📅","📆","🗒️","🗓️","📇","📈","📉","📊","📋","📌","📍","📎","🖇️","📏","📐","✂️","🗃️","🗄️","🗑️","🔒","🔓","🔏","🔐","🔑","🗝️","🔨","🪓","⛏️","⚒️","🛠️","🗡️","⚔️","🔫","🪃","🏹","🛡️","🪚","🔧","🪛","🔩","⚙️","🗜️","⚖️","🦯","🔗","⛓️","🪝","🧰","🧲","🪜","⚗️","🧪","🧫","🧬","🔬","🔭","📡","💉","🩸","💊","🩹","🩺","🚪","🛗","🪞","🪟","🛏️","🛋️","🪑","🚽","🪠","🚿","🛁","🪤","🪒","🧴","🧷","🧹","🧺","🧻","🪣","🧼","🪥","🧽","🧯","🛒","🚬","⚰️","🪦","⚱️","🗿","🪧"],symbol:["🏧","🚮","🚰","♿","🚹","🚺","🚻","🚼","🚾","🛂","🛃","🛄","🛅","⚠️","🚸","⛔","🚫","🚳","🚭","🚯","🚱","🚷","📵","🔞","☢️","☣️","⬆️","↗️","➡️","↘️","⬇️","↙️","⬅️","↖️","↕️","↔️","↩️","↪️","⤴️","⤵️","🔃","🔄","🔙","🔚","🔛","🔜","🔝","🛐","⚛️","🕉️","✡️","☸️","☯️","✝️","☦️","☪️","☮️","🕎","🔯","♈","♉","♊","♋","♌","♍","♎","♏","♐","♑","♒","♓","⛎","🔀","🔁","🔂","▶️","⏩","⏭️","⏯️","◀️","⏪","⏮️","🔼","⏫","🔽","⏬","⏸️","⏹️","⏺️","⏏️","🎦","🔅","🔆","📶","📳","📴","♀️","♂️","⚧️","✖️","➕","➖","➗","♾️","‼️","⁉️","❓","❔","❕","❗","〰️","💱","💲","⚕️","♻️","⚜️","🔱","📛","🔰","⭕","✅","☑️","✔️","❌","❎","➰","➿","〽️","✳️","✴️","❇️","©️","®️","™️","#️⃣","*️⃣","0️⃣","1️⃣","2️⃣","3️⃣","4️⃣","5️⃣","6️⃣","7️⃣","8️⃣","9️⃣","🔟","🔠","🔡","🔢","🔣","🔤","🅰️","🆎","🅱️","🆑","🆒","🆓","ℹ️","🆔","Ⓜ️","🆕","🆖","🅾️","🆗","🅿️","🆘","🆙","🆚","🈁","🈂️","🈷️","🈶","🈯","🉐","🈹","🈚","🈲","🉑","🈸","🈴","🈳","㊗️","㊙️","🈺","🈵","🔴","🟠","🟡","🟢","🔵","🟣","🟤","⚫","⚪","🟥","🟧","🟨","🟩","🟦","🟪","🟫","⬛","⬜","◼️","◻️","◾","◽","▪️","▫️","🔶","🔷","🔸","🔹","🔺","🔻","💠","🔘","🔳","🔲"],flag:["🏁","🚩","🎌","🏴","🏳️","🏳️‍🌈","🏳️‍⚧️","🏴‍☠️","🇦🇨","🇦🇩","🇦🇪","🇦🇫","🇦🇬","🇦🇮","🇦🇱","🇦🇲","🇦🇴","🇦🇶","🇦🇷","🇦🇸","🇦🇹","🇦🇺","🇦🇼","🇦🇽","🇦🇿","🇧🇦","🇧🇧","🇧🇩","🇧🇪","🇧🇫","🇧🇬","🇧🇭","🇧🇮","🇧🇯","🇧🇱","🇧🇲","🇧🇳","🇧🇴","🇧🇶","🇧🇷","🇧🇸","🇧🇹","🇧🇻","🇧🇼","🇧🇾","🇧🇿","🇨🇦","🇨🇨","🇨🇩","🇨🇫","🇨🇬","🇨🇭","🇨🇮","🇨🇰","🇨🇱","🇨🇲","🇨🇳","🇨🇴","🇨🇵","🇨🇷","🇨🇺","🇨🇻","🇨🇼","🇨🇽","🇨🇾","🇨🇿","🇩🇪","🇩🇬","🇩🇯","🇩🇰","🇩🇲","🇩🇴","🇩🇿","🇪🇦","🇪🇨","🇪🇪","🇪🇬","🇪🇭","🇪🇷","🇪🇸","🇪🇹","🇪🇺","🇫🇮","🇫🇯","🇫🇰","🇫🇲","🇫🇴","🇫🇷","🇬🇦","🇬🇧","🇬🇩","🇬🇪","🇬🇫","🇬🇬","🇬🇭","🇬🇮","🇬🇱","🇬🇲","🇬🇳","🇬🇵","🇬🇶","🇬🇷","🇬🇸","🇬🇹","🇬🇺","🇬🇼","🇬🇾","🇭🇰","🇭🇲","🇭🇳","🇭🇷","🇭🇹","🇭🇺","🇮🇨","🇮🇩","🇮🇪","🇮🇱","🇮🇲","🇮🇳","🇮🇴","🇮🇶","🇮🇷","🇮🇸","🇮🇹","🇯🇪","🇯🇲","🇯🇴","🇯🇵","🇰🇪","🇰🇬","🇰🇭","🇰🇮","🇰🇲","🇰🇳","🇰🇵","🇰🇷","🇰🇼","🇰🇾","🇰🇿","🇱🇦","🇱🇧","🇱🇨","🇱🇮","🇱🇰","🇱🇷","🇱🇸","🇱🇹","🇱🇺","🇱🇻","🇱🇾","🇲🇦","🇲🇨","🇲🇩","🇲🇪","🇲🇫","🇲🇬","🇲🇭","🇲🇰","🇲🇱","🇲🇲","🇲🇳","🇲🇴","🇲🇵","🇲🇶","🇲🇷","🇲🇸","🇲🇹","🇲🇺","🇲🇻","🇲🇼","🇲🇽","🇲🇾","🇲🇿","🇳🇦","🇳🇨","🇳🇪","🇳🇫","🇳🇬","🇳🇮","🇳🇱","🇳🇴","🇳🇵","🇳🇷","🇳🇺","🇳🇿","🇴🇲","🇵🇦","🇵🇪","🇵🇫","🇵🇬","🇵🇭","🇵🇰","🇵🇱","🇵🇲","🇵🇳","🇵🇷","🇵🇸","🇵🇹","🇵🇼","🇵🇾","🇶🇦","🇷🇪","🇷🇴","🇷🇸","🇷🇺","🇷🇼","🇸🇦","🇸🇧","🇸🇨","🇸🇩","🇸🇪","🇸🇬","🇸🇭","🇸🇮","🇸🇯","🇸🇰","🇸🇱","🇸🇲","🇸🇳","🇸🇴","🇸🇷","🇸🇸","🇸🇹","🇸🇻","🇸🇽","🇸🇾","🇸🇿","🇹🇦","🇹🇨","🇹🇩","🇹🇫","🇹🇬","🇹🇭","🇹🇯","🇹🇰","🇹🇱","🇹🇲","🇹🇳","🇹🇴","🇹🇷","🇹🇹","🇹🇻","🇹🇼","🇹🇿","🇺🇦","🇺🇬","🇺🇲","🇺🇳","🇺🇸","🇺🇾","🇺🇿","🇻🇦","🇻🇨","🇻🇪","🇻🇬","🇻🇮","🇻🇳","🇻🇺","🇼🇫","🇼🇸","🇽🇰","🇾🇪","🇾🇹","🇿🇦","🇿🇲","🇿🇼"]},http_status_code:{informational:[100,101,102,103],success:[200,201,202,203,204,205,206,207,208,226],redirection:[300,301,302,303,304,305,306,307,308],clientError:[400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,421,422,423,424,425,426,428,429,431,451],serverError:[500,501,502,503,504,505,506,507,508,510,511]}},location:{country_code:[{alpha2:"AD",alpha3:"AND",numeric:"020"},{alpha2:"AE",alpha3:"ARE",numeric:"784"},{alpha2:"AF",alpha3:"AFG",numeric:"004"},{alpha2:"AG",alpha3:"ATG",numeric:"028"},{alpha2:"AI",alpha3:"AIA",numeric:"660"},{alpha2:"AL",alpha3:"ALB",numeric:"008"},{alpha2:"AM",alpha3:"ARM",numeric:"051"},{alpha2:"AO",alpha3:"AGO",numeric:"024"},{alpha2:"AQ",alpha3:"ATA",numeric:"010"},{alpha2:"AR",alpha3:"ARG",numeric:"032"},{alpha2:"AS",alpha3:"ASM",numeric:"016"},{alpha2:"AT",alpha3:"AUT",numeric:"040"},{alpha2:"AU",alpha3:"AUS",numeric:"036"},{alpha2:"AW",alpha3:"ABW",numeric:"533"},{alpha2:"AX",alpha3:"ALA",numeric:"248"},{alpha2:"AZ",alpha3:"AZE",numeric:"031"},{alpha2:"BA",alpha3:"BIH",numeric:"070"},{alpha2:"BB",alpha3:"BRB",numeric:"052"},{alpha2:"BD",alpha3:"BGD",numeric:"050"},{alpha2:"BE",alpha3:"BEL",numeric:"056"},{alpha2:"BF",alpha3:"BFA",numeric:"854"},{alpha2:"BG",alpha3:"BGR",numeric:"100"},{alpha2:"BH",alpha3:"BHR",numeric:"048"},{alpha2:"BI",alpha3:"BDI",numeric:"108"},{alpha2:"BJ",alpha3:"BEN",numeric:"204"},{alpha2:"BL",alpha3:"BLM",numeric:"652"},{alpha2:"BM",alpha3:"BMU",numeric:"060"},{alpha2:"BN",alpha3:"BRN",numeric:"096"},{alpha2:"BO",alpha3:"BOL",numeric:"068"},{alpha2:"BQ",alpha3:"BES",numeric:"535"},{alpha2:"BR",alpha3:"BRA",numeric:"076"},{alpha2:"BS",alpha3:"BHS",numeric:"044"},{alpha2:"BT",alpha3:"BTN",numeric:"064"},{alpha2:"BV",alpha3:"BVT",numeric:"074"},{alpha2:"BW",alpha3:"BWA",numeric:"072"},{alpha2:"BY",alpha3:"BLR",numeric:"112"},{alpha2:"BZ",alpha3:"BLZ",numeric:"084"},{alpha2:"CA",alpha3:"CAN",numeric:"124"},{alpha2:"CC",alpha3:"CCK",numeric:"166"},{alpha2:"CD",alpha3:"COD",numeric:"180"},{alpha2:"CF",alpha3:"CAF",numeric:"140"},{alpha2:"CG",alpha3:"COG",numeric:"178"},{alpha2:"CH",alpha3:"CHE",numeric:"756"},{alpha2:"CI",alpha3:"CIV",numeric:"384"},{alpha2:"CK",alpha3:"COK",numeric:"184"},{alpha2:"CL",alpha3:"CHL",numeric:"152"},{alpha2:"CM",alpha3:"CMR",numeric:"120"},{alpha2:"CN",alpha3:"CHN",numeric:"156"},{alpha2:"CO",alpha3:"COL",numeric:"170"},{alpha2:"CR",alpha3:"CRI",numeric:"188"},{alpha2:"CU",alpha3:"CUB",numeric:"192"},{alpha2:"CV",alpha3:"CPV",numeric:"132"},{alpha2:"CW",alpha3:"CUW",numeric:"531"},{alpha2:"CX",alpha3:"CXR",numeric:"162"},{alpha2:"CY",alpha3:"CYP",numeric:"196"},{alpha2:"CZ",alpha3:"CZE",numeric:"203"},{alpha2:"DE",alpha3:"DEU",numeric:"276"},{alpha2:"DJ",alpha3:"DJI",numeric:"262"},{alpha2:"DK",alpha3:"DNK",numeric:"208"},{alpha2:"DM",alpha3:"DMA",numeric:"212"},{alpha2:"DO",alpha3:"DOM",numeric:"214"},{alpha2:"DZ",alpha3:"DZA",numeric:"012"},{alpha2:"EC",alpha3:"ECU",numeric:"218"},{alpha2:"EE",alpha3:"EST",numeric:"233"},{alpha2:"EG",alpha3:"EGY",numeric:"818"},{alpha2:"EH",alpha3:"ESH",numeric:"732"},{alpha2:"ER",alpha3:"ERI",numeric:"232"},{alpha2:"ES",alpha3:"ESP",numeric:"724"},{alpha2:"ET",alpha3:"ETH",numeric:"231"},{alpha2:"FI",alpha3:"FIN",numeric:"246"},{alpha2:"FJ",alpha3:"FJI",numeric:"242"},{alpha2:"FK",alpha3:"FLK",numeric:"238"},{alpha2:"FM",alpha3:"FSM",numeric:"583"},{alpha2:"FO",alpha3:"FRO",numeric:"234"},{alpha2:"FR",alpha3:"FRA",numeric:"250"},{alpha2:"GA",alpha3:"GAB",numeric:"266"},{alpha2:"GB",alpha3:"GBR",numeric:"826"},{alpha2:"GD",alpha3:"GRD",numeric:"308"},{alpha2:"GE",alpha3:"GEO",numeric:"268"},{alpha2:"GF",alpha3:"GUF",numeric:"254"},{alpha2:"GG",alpha3:"GGY",numeric:"831"},{alpha2:"GH",alpha3:"GHA",numeric:"288"},{alpha2:"GI",alpha3:"GIB",numeric:"292"},{alpha2:"GL",alpha3:"GRL",numeric:"304"},{alpha2:"GM",alpha3:"GMB",numeric:"270"},{alpha2:"GN",alpha3:"GIN",numeric:"324"},{alpha2:"GP",alpha3:"GLP",numeric:"312"},{alpha2:"GQ",alpha3:"GNQ",numeric:"226"},{alpha2:"GR",alpha3:"GRC",numeric:"300"},{alpha2:"GS",alpha3:"SGS",numeric:"239"},{alpha2:"GT",alpha3:"GTM",numeric:"320"},{alpha2:"GU",alpha3:"GUM",numeric:"316"},{alpha2:"GW",alpha3:"GNB",numeric:"624"},{alpha2:"GY",alpha3:"GUY",numeric:"328"},{alpha2:"HK",alpha3:"HKG",numeric:"344"},{alpha2:"HM",alpha3:"HMD",numeric:"334"},{alpha2:"HN",alpha3:"HND",numeric:"340"},{alpha2:"HR",alpha3:"HRV",numeric:"191"},{alpha2:"HT",alpha3:"HTI",numeric:"332"},{alpha2:"HU",alpha3:"HUN",numeric:"348"},{alpha2:"ID",alpha3:"IDN",numeric:"360"},{alpha2:"IE",alpha3:"IRL",numeric:"372"},{alpha2:"IL",alpha3:"ISR",numeric:"376"},{alpha2:"IM",alpha3:"IMN",numeric:"833"},{alpha2:"IN",alpha3:"IND",numeric:"356"},{alpha2:"IO",alpha3:"IOT",numeric:"086"},{alpha2:"IQ",alpha3:"IRQ",numeric:"368"},{alpha2:"IR",alpha3:"IRN",numeric:"364"},{alpha2:"IS",alpha3:"ISL",numeric:"352"},{alpha2:"IT",alpha3:"ITA",numeric:"380"},{alpha2:"JE",alpha3:"JEY",numeric:"832"},{alpha2:"JM",alpha3:"JAM",numeric:"388"},{alpha2:"JO",alpha3:"JOR",numeric:"400"},{alpha2:"JP",alpha3:"JPN",numeric:"392"},{alpha2:"KE",alpha3:"KEN",numeric:"404"},{alpha2:"KG",alpha3:"KGZ",numeric:"417"},{alpha2:"KH",alpha3:"KHM",numeric:"116"},{alpha2:"KI",alpha3:"KIR",numeric:"296"},{alpha2:"KM",alpha3:"COM",numeric:"174"},{alpha2:"KN",alpha3:"KNA",numeric:"659"},{alpha2:"KP",alpha3:"PRK",numeric:"408"},{alpha2:"KR",alpha3:"KOR",numeric:"410"},{alpha2:"KW",alpha3:"KWT",numeric:"414"},{alpha2:"KY",alpha3:"CYM",numeric:"136"},{alpha2:"KZ",alpha3:"KAZ",numeric:"398"},{alpha2:"LA",alpha3:"LAO",numeric:"418"},{alpha2:"LB",alpha3:"LBN",numeric:"422"},{alpha2:"LC",alpha3:"LCA",numeric:"662"},{alpha2:"LI",alpha3:"LIE",numeric:"438"},{alpha2:"LK",alpha3:"LKA",numeric:"144"},{alpha2:"LR",alpha3:"LBR",numeric:"430"},{alpha2:"LS",alpha3:"LSO",numeric:"426"},{alpha2:"LT",alpha3:"LTU",numeric:"440"},{alpha2:"LU",alpha3:"LUX",numeric:"442"},{alpha2:"LV",alpha3:"LVA",numeric:"428"},{alpha2:"LY",alpha3:"LBY",numeric:"434"},{alpha2:"MA",alpha3:"MAR",numeric:"504"},{alpha2:"MC",alpha3:"MCO",numeric:"492"},{alpha2:"MD",alpha3:"MDA",numeric:"498"},{alpha2:"ME",alpha3:"MNE",numeric:"499"},{alpha2:"MF",alpha3:"MAF",numeric:"663"},{alpha2:"MG",alpha3:"MDG",numeric:"450"},{alpha2:"MH",alpha3:"MHL",numeric:"584"},{alpha2:"MK",alpha3:"MKD",numeric:"807"},{alpha2:"ML",alpha3:"MLI",numeric:"466"},{alpha2:"MM",alpha3:"MMR",numeric:"104"},{alpha2:"MN",alpha3:"MNG",numeric:"496"},{alpha2:"MO",alpha3:"MAC",numeric:"446"},{alpha2:"MP",alpha3:"MNP",numeric:"580"},{alpha2:"MQ",alpha3:"MTQ",numeric:"474"},{alpha2:"MR",alpha3:"MRT",numeric:"478"},{alpha2:"MS",alpha3:"MSR",numeric:"500"},{alpha2:"MT",alpha3:"MLT",numeric:"470"},{alpha2:"MU",alpha3:"MUS",numeric:"480"},{alpha2:"MV",alpha3:"MDV",numeric:"462"},{alpha2:"MW",alpha3:"MWI",numeric:"454"},{alpha2:"MX",alpha3:"MEX",numeric:"484"},{alpha2:"MY",alpha3:"MYS",numeric:"458"},{alpha2:"MZ",alpha3:"MOZ",numeric:"508"},{alpha2:"NA",alpha3:"NAM",numeric:"516"},{alpha2:"NC",alpha3:"NCL",numeric:"540"},{alpha2:"NE",alpha3:"NER",numeric:"562"},{alpha2:"NF",alpha3:"NFK",numeric:"574"},{alpha2:"NG",alpha3:"NGA",numeric:"566"},{alpha2:"NI",alpha3:"NIC",numeric:"558"},{alpha2:"NL",alpha3:"NLD",numeric:"528"},{alpha2:"NO",alpha3:"NOR",numeric:"578"},{alpha2:"NP",alpha3:"NPL",numeric:"524"},{alpha2:"NR",alpha3:"NRU",numeric:"520"},{alpha2:"NU",alpha3:"NIU",numeric:"570"},{alpha2:"NZ",alpha3:"NZL",numeric:"554"},{alpha2:"OM",alpha3:"OMN",numeric:"512"},{alpha2:"PA",alpha3:"PAN",numeric:"591"},{alpha2:"PE",alpha3:"PER",numeric:"604"},{alpha2:"PF",alpha3:"PYF",numeric:"258"},{alpha2:"PG",alpha3:"PNG",numeric:"598"},{alpha2:"PH",alpha3:"PHL",numeric:"608"},{alpha2:"PK",alpha3:"PAK",numeric:"586"},{alpha2:"PL",alpha3:"POL",numeric:"616"},{alpha2:"PM",alpha3:"SPM",numeric:"666"},{alpha2:"PN",alpha3:"PCN",numeric:"612"},{alpha2:"PR",alpha3:"PRI",numeric:"630"},{alpha2:"PS",alpha3:"PSE",numeric:"275"},{alpha2:"PT",alpha3:"PRT",numeric:"620"},{alpha2:"PW",alpha3:"PLW",numeric:"585"},{alpha2:"PY",alpha3:"PRY",numeric:"600"},{alpha2:"QA",alpha3:"QAT",numeric:"634"},{alpha2:"RE",alpha3:"REU",numeric:"638"},{alpha2:"RO",alpha3:"ROU",numeric:"642"},{alpha2:"RS",alpha3:"SRB",numeric:"688"},{alpha2:"RU",alpha3:"RUS",numeric:"643"},{alpha2:"RW",alpha3:"RWA",numeric:"646"},{alpha2:"SA",alpha3:"SAU",numeric:"682"},{alpha2:"SB",alpha3:"SLB",numeric:"090"},{alpha2:"SC",alpha3:"SYC",numeric:"690"},{alpha2:"SD",alpha3:"SDN",numeric:"729"},{alpha2:"SE",alpha3:"SWE",numeric:"752"},{alpha2:"SG",alpha3:"SGP",numeric:"702"},{alpha2:"SH",alpha3:"SHN",numeric:"654"},{alpha2:"SI",alpha3:"SVN",numeric:"705"},{alpha2:"SJ",alpha3:"SJM",numeric:"744"},{alpha2:"SK",alpha3:"SVK",numeric:"703"},{alpha2:"SL",alpha3:"SLE",numeric:"694"},{alpha2:"SM",alpha3:"SMR",numeric:"674"},{alpha2:"SN",alpha3:"SEN",numeric:"686"},{alpha2:"SO",alpha3:"SOM",numeric:"706"},{alpha2:"SR",alpha3:"SUR",numeric:"740"},{alpha2:"SS",alpha3:"SSD",numeric:"728"},{alpha2:"ST",alpha3:"STP",numeric:"678"},{alpha2:"SV",alpha3:"SLV",numeric:"222"},{alpha2:"SX",alpha3:"SXM",numeric:"534"},{alpha2:"SY",alpha3:"SYR",numeric:"760"},{alpha2:"SZ",alpha3:"SWZ",numeric:"748"},{alpha2:"TC",alpha3:"TCA",numeric:"796"},{alpha2:"TD",alpha3:"TCD",numeric:"148"},{alpha2:"TF",alpha3:"ATF",numeric:"260"},{alpha2:"TG",alpha3:"TGO",numeric:"768"},{alpha2:"TH",alpha3:"THA",numeric:"764"},{alpha2:"TJ",alpha3:"TJK",numeric:"762"},{alpha2:"TK",alpha3:"TKL",numeric:"772"},{alpha2:"TL",alpha3:"TLS",numeric:"626"},{alpha2:"TM",alpha3:"TKM",numeric:"795"},{alpha2:"TN",alpha3:"TUN",numeric:"788"},{alpha2:"TO",alpha3:"TON",numeric:"776"},{alpha2:"TR",alpha3:"TUR",numeric:"792"},{alpha2:"TT",alpha3:"TTO",numeric:"780"},{alpha2:"TV",alpha3:"TUV",numeric:"798"},{alpha2:"TW",alpha3:"TWN",numeric:"158"},{alpha2:"TZ",alpha3:"TZA",numeric:"834"},{alpha2:"UA",alpha3:"UKR",numeric:"804"},{alpha2:"UG",alpha3:"UGA",numeric:"800"},{alpha2:"UM",alpha3:"UMI",numeric:"581"},{alpha2:"US",alpha3:"USA",numeric:"840"},{alpha2:"UY",alpha3:"URY",numeric:"858"},{alpha2:"UZ",alpha3:"UZB",numeric:"860"},{alpha2:"VA",alpha3:"VAT",numeric:"336"},{alpha2:"VC",alpha3:"VCT",numeric:"670"},{alpha2:"VE",alpha3:"VEN",numeric:"862"},{alpha2:"VG",alpha3:"VGB",numeric:"092"},{alpha2:"VI",alpha3:"VIR",numeric:"850"},{alpha2:"VN",alpha3:"VNM",numeric:"704"},{alpha2:"VU",alpha3:"VUT",numeric:"548"},{alpha2:"WF",alpha3:"WLF",numeric:"876"},{alpha2:"WS",alpha3:"WSM",numeric:"882"},{alpha2:"YE",alpha3:"YEM",numeric:"887"},{alpha2:"YT",alpha3:"MYT",numeric:"175"},{alpha2:"ZA",alpha3:"ZAF",numeric:"710"},{alpha2:"ZM",alpha3:"ZMB",numeric:"894"},{alpha2:"ZW",alpha3:"ZWE",numeric:"716"}],time_zone:YC},metadata:{title:"Base",code:"base"},system:{directory_path:["/Applications","/bin","/boot","/boot/defaults","/dev","/etc","/etc/defaults","/etc/mail","/etc/namedb","/etc/periodic","/etc/ppp","/home","/home/user","/home/user/dir","/lib","/Library","/lost+found","/media","/mnt","/net","/Network","/opt","/opt/bin","/opt/include","/opt/lib","/opt/sbin","/opt/share","/private","/private/tmp","/private/var","/proc","/rescue","/root","/sbin","/selinux","/srv","/sys","/System","/tmp","/Users","/usr","/usr/X11R6","/usr/bin","/usr/include","/usr/lib","/usr/libdata","/usr/libexec","/usr/local/bin","/usr/local/src","/usr/obj","/usr/ports","/usr/sbin","/usr/share","/usr/src","/var","/var/log","/var/mail","/var/spool","/var/tmp","/var/yp"],mime_type:{"application/epub+zip":{extensions:["epub"]},"application/gzip":{extensions:["gz"]},"application/java-archive":{extensions:["jar","war","ear"]},"application/json":{extensions:["json","map"]},"application/ld+json":{extensions:["jsonld"]},"application/msword":{extensions:["doc","dot"]},"application/octet-stream":{extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/ogg":{extensions:["ogx"]},"application/pdf":{extensions:["pdf"]},"application/rtf":{extensions:["rtf"]},"application/vnd.amazon.ebook":{extensions:["azw"]},"application/vnd.apple.installer+xml":{extensions:["mpkg"]},"application/vnd.mozilla.xul+xml":{extensions:["xul"]},"application/vnd.ms-excel":{extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-fontobject":{extensions:["eot"]},"application/vnd.ms-powerpoint":{extensions:["ppt","pps","pot"]},"application/vnd.oasis.opendocument.presentation":{extensions:["odp"]},"application/vnd.oasis.opendocument.spreadsheet":{extensions:["ods"]},"application/vnd.oasis.opendocument.text":{extensions:["odt"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{extensions:["docx"]},"application/vnd.rar":{extensions:["rar"]},"application/vnd.visio":{extensions:["vsd","vst","vss","vsw"]},"application/x-7z-compressed":{extensions:["7z"]},"application/x-abiword":{extensions:["abw"]},"application/x-bzip":{extensions:["bz"]},"application/x-bzip2":{extensions:["bz2","boz"]},"application/x-csh":{extensions:["csh"]},"application/x-freearc":{extensions:["arc"]},"application/x-httpd-php":{extensions:["php"]},"application/x-sh":{extensions:["sh"]},"application/x-tar":{extensions:["tar"]},"application/xhtml+xml":{extensions:["xhtml","xht"]},"application/xml":{extensions:["xml","xsl","xsd","rng"]},"application/zip":{extensions:["zip"]},"audio/3gpp":{extensions:["3gpp"]},"audio/3gpp2":{extensions:["3g2"]},"audio/aac":{extensions:["aac"]},"audio/midi":{extensions:["mid","midi","kar","rmi"]},"audio/mpeg":{extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/ogg":{extensions:["oga","ogg","spx","opus"]},"audio/opus":{extensions:["opus"]},"audio/wav":{extensions:["wav"]},"audio/webm":{extensions:["weba"]},"font/otf":{extensions:["otf"]},"font/ttf":{extensions:["ttf"]},"font/woff":{extensions:["woff"]},"font/woff2":{extensions:["woff2"]},"image/avif":{extensions:["avif"]},"image/bmp":{extensions:["bmp"]},"image/gif":{extensions:["gif"]},"image/jpeg":{extensions:["jpeg","jpg","jpe"]},"image/png":{extensions:["png"]},"image/svg+xml":{extensions:["svg","svgz"]},"image/tiff":{extensions:["tif","tiff"]},"image/vnd.microsoft.icon":{extensions:["ico"]},"image/webp":{extensions:["webp"]},"text/calendar":{extensions:["ics","ifb"]},"text/css":{extensions:["css"]},"text/csv":{extensions:["csv"]},"text/html":{extensions:["html","htm","shtml"]},"text/javascript":{extensions:["js","mjs"]},"text/plain":{extensions:["txt","text","conf","def","list","log","in","ini"]},"video/3gpp":{extensions:["3gp","3gpp"]},"video/3gpp2":{extensions:["3g2"]},"video/mp2t":{extensions:["ts"]},"video/mp4":{extensions:["mp4","mp4v","mpg4"]},"video/mpeg":{extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/ogg":{extensions:["ogv"]},"video/webm":{extensions:["webm"]},"video/x-msvideo":{extensions:["avi"]}}}},UC=new class extends uC{rawDefinitions;definitions;airline=new Lw(this);animal=new dC(this);color=new Pw(this);commerce=new yC(this);company=new fC(this);database=new mC(this);date=new qw(this);finance=new vC(this);food=new xC(this);git=new kC(this);hacker=new wC(this);helpers=new iC(this);image=new _C(this);internet=new EC(this);location=new RC(this);lorem=new PC(this);music=new NC(this);person=new zw(this);phone=new GC(this);science=new IC(this);system=new JC(this);vehicle=new VC(this);word=new jC(this);get address(){return hC({deprecated:"faker.address",proposed:"faker.location",since:"8.0",until:"10.0"}),this.location}get name(){return hC({deprecated:"faker.name",proposed:"faker.person",since:"8.0",until:"10.0"}),this.person}constructor(e){super({randomizer:e.randomizer});let{locale:t}=e;if(Array.isArray(t)){if(0===t.length)throw new ww("The locale option must contain at least one locale definition.");t=function(e){let t={};for(let r of e)for(let e in r){let a=r[e];void 0===t[e]?t[e]={...a}:t[e]={...a,...t[e]}}return t}(t)}this.rawDefinitions=t,this.definitions=jw(this.rawDefinitions)}getMetadata(){return this.rawDefinitions.metadata??{}}}({locale:[kw,$C]});class qC{data_length=50;generated_data=[];auto_proceed=!0;locale="en_GB";imgAPIs=["https://picsum.photos/500/500?random=","https://avatar.iran.liara.run/public/"];constructor({length:e,auto_proceed:t,locale:r}){void 0!==e&&(this.data_length=e),void 0!==t&&(this.auto_proceed=t),void 0!==r&&(this.locale=r.replace("-","_")),this.auto_proceed&&this.generate()}generate(){return this.make_data()}make_data(){for(let e=0;e<this.data_length;e++){const t=this.generate_data((e+1).toString());e>0&&(t.parentId=this.get_parent_id(e)),this.generated_data.push(t)}return this.generated_data}get_parent_id(e){let t=Math.floor(Math.random()*this.generated_data.length).toString();return t=0==parseInt(t)?"1":t,t==(e+1).toString()&&(t=this.get_parent_id(e)),t}generate_data(e){const t=Math.floor(2*Math.random()),r=this.imgAPIs[Math.floor(Math.random()*this.imgAPIs.length)]+e;return{id:e,name:UC.person.fullName(),role:UC.person.jobTitle(),location:UC.location.city()+", "+UC.location.country(),image:t?r:""}}}class ZC{tree_data=[];handleCollapseChildren=()=>{};center_elem=({})=>null;itemHierarchy=[];tmp_tree_data=[];tree_level_step=2;display_tree_in_step=!0;auto_display_tree_in_step=!0;link_point_position={top:e=>`translate(${parseInt(e.attr("width"))/2}, 0)`,bottom:e=>`translate(${parseInt(e.attr("width"))/2}, ${e.attr("height")})`,right:e=>`translate(${e.attr("width")}, ${e.attr("height")/2})`,left:e=>`translate(0, ${e.attr("height")/2})`};inverse_link_point_position={top:"bottom",bottom:"top",left:"right",right:"left"};chartHeadWidth=120;chartHeadHeight=130;chartHeadLandscapeWidth=240;chartHeadLandscapeHeight=80;chartHeadRoundedWidth=120;chartHeadRoundedHeight=180;color_handler={};chart_head_type="default";show_chart_head_border=!0;animation_rotation_speed=50;animation_rotation_interval=1;head_linker_thumb_circle_radius=8;linker_thumb_icon_color="bright500";linker_thumb_shape="symbolDiamond2";head_image_shape="symbolCircle";head_image_surface_area=60;chart_head_bg="#ffffff";auto_set_chart_head_bg=!1;emitEvent=()=>!1;tree_link_types={curveBumpX:Hx,curveBumpY:Dx,curveBasisClosed:bk,curveLinear:gx,curveStep:Yk,curveStepAfter:Uk,curveStepBefore:$k};tree_link_type=void 0;rootWrapperContainer=null;app_unique_id="";app_root_unique_selector="";constructor(){setTimeout((()=>{this.app_root_unique_selector=`[data-ts-unique-id='${this.app_unique_id}']`}),0)}createDynamicEl(){return new xw}splitStringIntoBatch(e,t){let r=[];for(let a=0;a<e?.length;a+=t)r.push(e.substring(a,Math.min(a+t,e.length)));return r}get_user_initials(e){const t=e?.split(" ");return t?.length>1?t?.[0][0]+t?.at(-1)?.[0]:t?.[0][0]}format_employee_name(e,t=15){const r=e?.split(" "),a=r?.length>2?r?.[0]+" "+r?.at(-1):r?.join(" ");return this.splitStringIntoBatch(a,t)}symbol_type(e){const t=e.replace(/symbol/,"").toLowerCase();return["circle","cross","diamond","square","star","triangle","wye"].includes(t)?"fill":["plus","x","triangle2","asterisk","square2","diamond2"].includes(t)?"stroke":"fill"}get_page_body_bg(){const e=document.body.style.getPropertyValue("background-color");return""==e?"#ffffff":e}get_chart_head_bg(){return this.auto_set_chart_head_bg?this.get_page_body_bg():this.chart_head_bg}get_image_shape_spacing(e){return{symbolCircle:10,symbolCross:10,symbolDiamond:25,symbolDiamond2:10,symbolSquare:0,symbolSquare2:-8,symbolStar:20,symbolTriangle:20,symbolTriangle2:10,symbolWye:20}[e]}makeHead(e,t=!1,r={parent:"bottom",children:"top"}){return"default"==this.chart_head_type?this.defaultHead(e,t,r):"landscape"==this.chart_head_type?this.landscapeHead(e,t,r):"rounded"==this.chart_head_type?this.roundedHead(e,t,r):this.defaultHead(e,t,r)}handleCenterHead(e){e.stopPropagation();const t=e.currentTarget.getBoundingClientRect();this.center_elem(t)}defaultHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=this.get_chart_head_bg(),l=Yt("svg").attr("class","main-svg-el"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("width",this.chartHeadWidth).attr("height",this.chartHeadHeight).attr("style","background-color: "+c).on("dblclick",(e=>this.handleCenterHead(e)));Yt("defs").append("filter").attr("id","blur1").attr("x",0).attr("y",0).append("feGaussianBlur").attr("in","SourceGraphic").attr("stdDeviation","3");const s=l.append("g"),u=s?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadWidth).attr("height",this.chartHeadHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),h=parseInt(u.attr("width"))/2,d=s?.append("g").attr("y",100),p=Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2);if(e.image){let t=h-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=h-this.head_image_surface_area<=10&&0==t?-10:t,o=h-this.head_image_surface_area<1?Math.abs(h-this.head_image_surface_area)+15:0,d.append("defs").append("clipPath").attr("id","default-head-clip-"+e.id).append("path").attr("d",pk().type(bw[this.head_image_shape]).size(p)).attr("transform",`translate(${parseInt(u.attr("width"))/2}, ${this.head_image_surface_area+t})`).attr("fill",n.bright500),d?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",this.head_image_surface_area).attr("height",this.head_image_surface_area).attr("x",parseInt(u.attr("width"))/2-this.head_image_surface_area/2).attr("y",this.head_image_surface_area/2+t).attr("clip-path",`url(#default-head-clip-${e.id})`)}else o=h-this.head_image_surface_area<1?Math.abs(h-this.head_image_surface_area)+15:0,d?.append("path").attr("d",pk().type(bw[this.head_image_shape]).size(p)).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(u.attr("width"))/2}, 50)`),d?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(u.attr("width"))/2).attr("y",56).attr("font-size","95%").text(this.get_user_initials(e.name));this.format_employee_name(e.name).forEach(((e,t)=>{s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",t>0?95+o:80+o).attr("font-size","85%").attr("fill",n.darker).attr("style","text-transform: "+(t>0?"none":"capitalize")).text(e),t>0&&(o+=15)}));const y=s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",100+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,20).forEach(((e,t)=>{y?.append("tspan").attr("x",parseInt(u.attr("width"))/2).attr("dy",t>0?".6rem":0).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=s?.append("text").attr("text-anchor","middle").attr("x",parseInt(u.attr("width"))/2).attr("y",115+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,19).forEach(((e,r)=>{t?.append("tspan").attr("x",parseInt(u.attr("width"))/2).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}const f=this.chartHeadHeight+o;return u?.attr("height",f),l?.attr("height",f),this.add_linker(s,i,a,r,n,u,l,e,t),this.emitEvent("chart_head.create",{headNode:l.node()}),l}landscapeHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=Yt("svg").attr("class","main-svg-el"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("width",this.chartHeadLandscapeWidth).attr("height",this.chartHeadLandscapeHeight).attr("style","background-color: "+this.chart_head_bg).on("dblclick",(e=>this.handleCenterHead(e))),l=c.append("g"),s=l?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadLandscapeWidth).attr("height",this.chartHeadLandscapeHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),u=parseInt(s.attr("height"))/2,h=this.format_employee_name(e.name,18),d=l.append("g").attr("x",0).attr("y",0),p=l.append("g"),y=this.chartHeadLandscapeHeight+o;if(s.attr("height",y),c.attr("height",y),e.image){let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t;const r=this.head_image_surface_area>u?Math.abs(this.head_image_surface_area-u):0;s.attr("height",y+r),c.attr("height",y+r),c.attr("width",this.chartHeadLandscapeWidth+r),s.attr("width",this.chartHeadLandscapeWidth+r),p.append("defs").append("clipPath").attr("id","landscape-clip-"+e.id).append("path").attr("d",pk().type(bw[this.head_image_shape]).size(Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2))).attr("transform",`translate(${parseInt(s.attr("height"))/2}, ${this.head_image_surface_area+(t+20)})`).attr("fill",n.bright500),p?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",this.head_image_surface_area).attr("height",this.head_image_surface_area).attr("x",parseInt(s.attr("height"))/2-this.head_image_surface_area/2).attr("y",this.head_image_surface_area/2+(t+20)).attr("clip-path",`url(#landscape-clip-${e.id})`)}else{const t=this.head_image_surface_area>u?Math.abs(this.head_image_surface_area-u):0;s.attr("height",y+t),c.attr("height",y+t),c.attr("width",this.chartHeadLandscapeWidth+t),s.attr("width",this.chartHeadLandscapeWidth+t),p?.append("path").attr("d",pk().type(bw[this.head_image_shape]).size(Math.pow(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape),2))).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(s.attr("height"))/2}, 50)`),p?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(s.attr("height"))/2).attr("y",parseInt(s.attr("height"))/2+6).attr("font-size","95%").text(this.get_user_initials(e.name))}const f=parseInt(s.attr("height")),m=d?.append("text").attr("x",f).attr("y",30).attr("font-size","95%").attr("fill",n.darker);h.forEach(((e,t)=>{m?.append("tspan").attr("x",f).attr("y",30).attr("dy",t>0?".7rem":0).attr("font-size","95%").attr("style","z-index: +9").text(e.toString()),t>0&&(o+=10)}));const g=d?.append("text").attr("x",f).attr("y",50+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,30).forEach(((e,t)=>{g?.append("tspan").attr("x",f).attr("dy",t>0?".6rem":0).attr("y",50+o).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=d?.append("text").attr("x",f).attr("y",65+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,30).forEach(((e,r)=>{t?.append("tspan").attr("x",f).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}return this.add_linker(l,i,a,r,n,s,c,e,t),this.emitEvent("chart_head.create",{headNode:c.node()}),c}roundedHead(e,t=!1,r={parent:"bottom",children:"top"}){const a=this.tree_data.filter((t=>t.parentId===e.id)).length>0,i=this.tree_data.filter((t=>t.id===e.parentId)).length>0,n=this.color_handler.getColor(e.id);let o=0;const c=Yt("svg").attr("class","main-svg-el rounded-head"+(this.getIsElRootTreeChild(e.id)?" root-svg-el":"")).attr("style","overflow: visible;").attr("width",this.chartHeadRoundedWidth).attr("height",this.chartHeadRoundedHeight).attr("fill","none").on("dblclick",(e=>this.handleCenterHead(e))),l=c.append("g"),s=l?.append("rect").attr("rx",16).attr("ry",16).attr("width",this.chartHeadRoundedWidth).attr("height",this.chartHeadRoundedHeight).attr("stroke",this.show_chart_head_border?n.color:"none").attr("fill","none").attr("stroke-width",0),u=parseInt(s.attr("width"))/2,h=l?.append("g"),d=Math.pow(2*(this.head_image_surface_area-this.get_image_shape_spacing(this.head_image_shape)),2),p=bw[this.head_image_shape];if(e.image){let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t,o=u-this.head_image_surface_area<0?2*Math.abs(u-this.head_image_surface_area):0,h.append("defs").append("clipPath").attr("id","rounded-corners-"+e.id).append("path").attr("d",pk().type(p).size(d)).attr("transform",`translate(${parseInt(s.attr("width"))/2}, ${2*this.head_image_surface_area-this.head_image_surface_area})`).attr("fill",n.bright500),h?.append("image").attr("href",e.image).attr("preserveAspectRatio","xMaxYMax slice").attr("width",2*this.head_image_surface_area).attr("height",2*this.head_image_surface_area).attr("x",parseInt(s.attr("width"))/2-this.head_image_surface_area).attr("y",this.head_image_surface_area-this.head_image_surface_area).attr("clip-path",`url(#rounded-corners-${e.id})`)}else{let t=u-this.head_image_surface_area;t=t>10?0:t-10,t=t>0?-t:t,t=u-this.head_image_surface_area<=10&&0==t?-10:t,o=u-this.head_image_surface_area<0?2*Math.abs(u-this.head_image_surface_area):0,h?.append("path").attr("d",pk().type(p).size(d)).attr("stroke","stroke"==this.symbol_type(this.head_image_shape)?n.color:"none").attr("stroke-width","stroke"==this.symbol_type(this.head_image_shape)?1:0).attr("fill","stroke"==this.symbol_type(this.head_image_shape)?"transparent":n.color).attr("transform",`translate(${parseInt(s.attr("width"))/2}, ${2*this.head_image_surface_area-this.head_image_surface_area})`),h?.append("text").attr("class","").attr("text-anchor","middle").attr("fill","stroke"==this.symbol_type(this.head_image_shape)?n.color:n.bright500).attr("x",parseInt(s.attr("width"))/2).attr("y",this.head_image_surface_area+Math.sqrt(d)/6).attr("font-size",this.head_image_surface_area/1.5+"px").text(this.get_user_initials(e.name))}this.format_employee_name(e.name,27).forEach(((e,t)=>{l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+18).attr("dy",t>0?50+o:0+o).attr("font-size","105%").attr("fill",n.darker).attr("style","text-transform: "+(t>0?"none":"capitalize")).text(e),t>0&&(o+=15)}));const y=l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+35+o).attr("font-size","65%");if(this.splitStringIntoBatch(e.role,20).forEach(((e,t)=>{y?.append("tspan").attr("x",parseInt(s.attr("width"))/2).attr("dy",t>0?".6rem":0).text(e.toString()).attr("fill",n.dark100),t>0&&(o+=10)})),void 0!==e.location){const t=l?.append("text").attr("text-anchor","middle").attr("x",parseInt(s.attr("width"))/2).attr("y",this.chartHeadRoundedWidth+50+o).attr("font-size","65%").attr("fill",n.dark100);this.splitStringIntoBatch(e.location,19).forEach(((e,r)=>{t?.append("tspan").attr("x",parseInt(s.attr("width"))/2).attr("dy",r>0?".6rem":0).text(e.toString()),r>0&&(o+=10)}))}const f=this.chartHeadRoundedHeight+o;return s?.attr("height",f),c?.attr("height",f),this.add_linker(l,i,a,r,n,s,c,e,t),this.emitEvent("chart_head.create",{headNode:c.node()}),c}add_linker(e,t,r,a,i,n,o,c,l){const s=Math.PI*this.head_linker_thumb_circle_radius*this.head_linker_thumb_circle_radius,u=(t,r,a)=>{null!=this.rootWrapperContainer?.querySelector("."+a)&&this.rootWrapperContainer?.querySelector("."+a)?.remove();const o="stroke"==this.symbol_type(this.linker_thumb_shape)?i.bright100:i[this.linker_thumb_icon_color];return e.append("path").attr("d",pk().type("cross"==t?Kx:uk).size(Math.sqrt(s))).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("fill",o).attr("stroke","minus"==t?o:"none").attr("class",a).attr("style","pointer-events: none").attr("stroke-width","minus"==t?2:0).attr("transform",this.link_point_position[r](n))};if(0!=a&&t&&e?.append("path").attr("d",pk().type(bw[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",0).attr("class","ts-linker").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"none").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[a.children](n)),0!=a&&r){const t=this,r="bottom"==a.parent?0:n.attr("height");let h=0;if(e?.append("path").attr("d",pk().type(bw[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("class","ts-linker").attr("style","cursor: pointer;").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"transparent").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[this.inverse_link_point_position[a.children]](n)).on("click",(e=>{const i=e.currentTarget.parentElement;u(h%2==0?"cross":"minus",this.inverse_link_point_position[a.children],"ts-lnk-icn-"+c.id+"-1"),h++,t.handleCollapseChildren?.(o,c.id,r);const n=i.getBoundingClientRect();setTimeout((()=>{h%2==0&&this.center_elem(n)}),0),h%2==0?this.emitEvent("chart_head.expanded",{svgNode:o,head_data:c,pointPosition:a},!1):this.emitEvent("chart_head.collapsed",{svgNode:o,head_data:c,pointPosition:a},!1)})),this.el_has_children(c.id,!0)||h++,u(this.el_has_children(c.id,!0)?"minus":"cross",this.inverse_link_point_position[a.children],"ts-lnk-icn-"+c.id+"-1"),l){const l=0==r?n.attr("height"):0;let h=0;e?.append("path").attr("d",pk().type(bw[this.linker_thumb_shape]).size(s)).attr("x",parseInt(n.attr("width"))/2).attr("y",n.attr("height")).attr("class","ts-linker").attr("style","cursor: pointer").attr("fill","fill"==this.symbol_type(this.linker_thumb_shape)?i.color:"transparent").attr("stroke","stroke"==this.symbol_type(this.linker_thumb_shape)?i.gray:"none").attr("stroke-width","stroke"==this.symbol_type(this.linker_thumb_shape)?1:0).attr("transform",this.link_point_position[this.inverse_link_point_position[a.parent]](n)).on("click",(e=>{const r=e.currentTarget.parentElement;u(h%2==0?"cross":"minus",this.inverse_link_point_position[a.parent],"ts-lnk-icn-"+c.id+"-2"),t.handleCollapseChildren?.(o,c.id,l);const i=r.getBoundingClientRect();h++,setTimeout((()=>{h%2==0&&this.center_elem(i)}),0),h%2==0?this.emitEvent("chart_head.expanded",{svgNode:o,head_data:c,pointPosition:a},!1):this.emitEvent("chart_head.collapsed",{svgNode:o,head_data:c,pointPosition:a},!1)})),u("minus",this.inverse_link_point_position[a.parent],"ts-lnk-icn-"+c.id+"-2")}}}get_tree_items_hierarchy(e,t,r){const a=this.tree_data.filter((t=>t.parentId==e)),i=null==t?1:t+1,n=[];a.forEach((e=>{n.push(e),null!=r&&(null!=r.item_id&&r.item_id==e.id||null!=r.level&&r.level==i)&&r.callbackFn(e,i);this.tree_data.filter((t=>t.parentId==e.id)).length>0&&this.get_tree_items_hierarchy(e.id,i,r)}));const o=this.itemHierarchy.findIndex((e=>e.level==i));return-1==o?this.itemHierarchy.push({level:i,items:n}):this.itemHierarchy[o].items=n,this.itemHierarchy}get_second_ancestor_item(e){const t=this.tree_data.find((t=>t.id==e)),r=this.tree_data.find((e=>e.id==t?.parentId)),a=null==this.tree_data.find((e=>e.id==r?.parentId))?.parentId;let i;return i=null==r?.parentId?t:a?r:this.get_second_ancestor_item(r?.id),i}getElemRelPosInTree(e){const t=this.tree_data.find((t=>t.id==e));return this.tree_data.filter((e=>e.parentId==t.parentId)).findIndex((e=>e.id==t.id))+1}set_tmp_tree_data(e){if(this.display_tree_in_step||this.tree_data.length>500&&this.auto_display_tree_in_step){const t=null==e?"1":e;this.tmp_tree_data=this.get_children_down_to_level(t,this.tree_level_step),null==e&&(this.tmp_tree_data=[this.tree_data[0],...this.tmp_tree_data])}else this.tmp_tree_data=this.tree_data}getIsParentRootEl(e){return null!=e&&null==this.tree_data.find((t=>t.id==e))?.parentId}getIsElRootTreeChild(e){return null!=e&&null==this.tree_data.find((t=>t.id==e))?.parentId}getRootTreeEl(){return this.tree_data.find((e=>null==e.parentId))}el_has_children(e,t=!1){return t?this.tmp_tree_data.filter((t=>t.parentId==e)).length>0:this.tree_data.filter((t=>t.parentId==e)).length>0}get_children_down_to_level(e,t,r=1){let a=r,i=[];const n=this.tree_data.filter((t=>t.parentId==e));let o=[];return a<t&&n.length>0&&(o=n.map((e=>this.get_children_down_to_level(e.id,t,a+1))).flat()),i=[...n,...o],i}data_to_d3_format(e,t){let r=this.tree_data?.find((t=>(null==e?t.parentId:t.id)==e));r={...r,children:[]};return this.tree_data.filter((e=>e.parentId==r.id)).forEach((e=>{t&&(e.stat=1),this.el_has_children(e.id)?r.children.push(this.data_to_d3_format(e.id,t)):r.children.push(e)})),r}}class QC{tree_data=[];color_range=["#b31212","#b34712","#b38d12","#9ab312","#2fb312","#12b362","#12b3a8","#1278b3","#1712b3","#5712b3","#8d12b3","#b3128d","#b3124a","#b31212"];interpolated_color=e=>"";pallet={h:10,s:.5,l:.5,darker:.8,brighter:.8,bright100:.5,dark100:.5,gray:50,gray85:85};constructor({tree_data:e,color_range:t,pallet:r}){this.tree_data=e,void 0!==t&&t.length>0&&(this.color_range=t),null!=r&&(this.pallet=r),this.interpolateColor()}getColor(e){const t=this.get_color_percentage(e),r=this.interpolated_color(t),a=Br(r),i=Or(a);i.h+=this.pallet.h,i.s+=this.pallet.s;const n=Or(a);n.l+=this.pallet.l;const o=ra(this.pallet.gray85);return{color:r,darker:a?.darker(this.pallet.darker).toString(),brighter:a?.brighter(this.pallet.brighter).toString(),bright100:i.brighter(this.pallet.bright100).toString(),dark100:i.darker(this.pallet.dark100).toString(),bright500:n.toString(),gray:ra(this.pallet.gray).toString(),gray85:o.toString()}}get_app_gray(){return ra(50).toString()}get_color_percentage(e){return e/this.tree_data.length}interpolateColor(){this.interpolated_color=Ha(this.color_range)}}class XC{chartHelper;tree_map_arr=[];content_wrapper=null;tsInnerContainer=null;current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}map_children_data_to_head(e,t){const r=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t)),a=this.chartHelper.createDynamicEl();return r.forEach((r=>{const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.makeHead(r);i.appendChild(n?.node());const o=null==t?" st-root-el":"";i.className="ts-head-node-wrapper ts-w-id-"+r.id+o,a.appendChild(i),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:n?.node(),parentId:t}),this.chartHelper?.el_has_children(r.id)&&i.append(this.map_children_data_to_head(n,r.id))})),a.className="ts-head-wrapper child-container",void 0===e&&this.content_wrapper?.appendChild(a),a}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.content_wrapper.className="ts-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"top")}),0)}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId)))}drawBranchLink(e,t,r,a){const i=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===i)return;const n=this.chartHelper?.color_handler.getColor(e),o=r.getBoundingClientRect(),c=t.node().getBoundingClientRect(),l=Math.sqrt(Math.PI*this.chartHelper.head_linker_thumb_circle_radius*this.chartHelper.head_linker_thumb_circle_radius)/2,s=c.width/this.current_scale/2,u=(c.height+l)/this.current_scale,h=o.x/this.current_scale-c.x/this.current_scale+r.clientWidth/2,d=o.top/this.current_scale-c.top/this.current_scale,p=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Dx),y=[{source:[s,u],target:[h,d]}];t?.append("path").data(y).attr("d",p).attr("fill","none").attr("class","linker-line").attr("stroke",n?.gray).attr("stroke-width",1)}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-head-children-hidden");if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)if("true"==i){const e=a?.querySelector(".child-container");e.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),setTimeout((()=>{this.drawBranchLinkFresh()}),0)}else{const e=a?.querySelector(".child-container");e.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")}else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t);a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e){const t=this.tree_map_arr.filter((t=>t.parentId==e));t.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)}))}}class e_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="ts-vs-wrapper",this.head_child_wrapper_1.className="ts-vs-wrapper",this.head_child_wrapper_2.className="ts-vs-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.content_wrapper.className="ts-v-spider-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,null==t,{parent:"bottom",children:c%2==0?"bottom":"top"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"top":"bottom"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden"),o=this.chartHelper.getIsParentRootEl(a);if("true"===n&&!o)return;const c=this.chartHelper?.color_handler.getColor(e),l=r.getBoundingClientRect(),s=t.node().getBoundingClientRect(),u=s.width/this.current_scale/2,h="top"==i?0:s.height/this.current_scale,d=l.x/this.current_scale-s.x/this.current_scale+r.clientWidth/2,p="top"==i?(l.top+l.height)/this.current_scale-s.top/this.current_scale:l.top/this.current_scale-s.top/this.current_scale,y=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Dx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line linker-"+i).attr("stroke-width",1).attr("stroke",c?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden"),o=a?.querySelector(".child-container");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)"true"==n?(o.style.visibility="visible",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(o.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true"));else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-top-head-children-hidden"),n=a?.getAttribute("data-ts-bottom-head-children-hidden");if(0==r?this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2==0)):this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2!=0)),(i&&"false"!=i||0!=r)&&(n&&"false"!=n||0==r)){(0==r?a.parentElement.nextElementSibling:a.parentElement.previousElementSibling).style.visibility="",setTimeout((()=>{this.drawBranchLinkFresh();"true"==(0==r?a?.getAttribute("data-ts-bottom-head-children-hidden"):a?.getAttribute("data-ts-top-head-children-hidden"))&&a.querySelectorAll(".linker-"+(0==r?"top":"bottom")).forEach((e=>e.remove()))}),0),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","false")}else{(0==r?a.parentElement.nextElementSibling:a.parentElement.previousElementSibling).style.visibility="hidden",a.querySelector("svg").querySelectorAll(".linker-"+(0==r?"bottom":"top")).forEach((e=>e.remove())),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","true")}}}class t_{chartHelper;tree_map_arr=[];content_wrapper=null;tsInnerContainer=null;current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.content_wrapper.className="ts-head-wrapper",this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.tsInnerContainer.appendChild(this.content_wrapper),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"left")}),0)}map_children_data_to_head(e,t){const r=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t)),a=this.chartHelper.createDynamicEl();return r.forEach((r=>{const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.createDynamicEl(),o=this.chartHelper.makeHead(r,!1,{parent:"right",children:"left"});n.append(o?.node()),i.appendChild(n);const c=null==t?" st-root-el":"";i.className="ts-head-node-wrapper st-single-h ts-w-id-"+r.id+c,a.appendChild(i),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:o?.node(),parentId:t}),this.chartHelper?.el_has_children(r.id)&&i.append(this.map_children_data_to_head(o,r.id))})),a.className="ts-head-wrapper st-single-h-child-container",void 0===e&&this.content_wrapper?.appendChild(a),a}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId)))}drawBranchLink(e,t,r,a){const i=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===i)return;const n=this.chartHelper?.color_handler.getColor(e),o=r.getBoundingClientRect(),c=t.node().getBoundingClientRect(),l=c.width/this.current_scale,s=c.height/this.current_scale/2,u=o.x/this.current_scale-c.x/this.current_scale+0,h=(o.top+o.height/2)/this.current_scale-c.top/this.current_scale,d=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Hx),p=[{source:[l,s],target:[u,h]}];t?.append("path").data(p).attr("d",d).attr("fill","none").attr("class","linker-line").attr("stroke-width",1).attr("stroke",n?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement.parentElement,i=a?.getAttribute("data-ts-head-children-hidden"),n=a?.querySelector("[class*='child-container']");if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".st-single-h-child-container").innerHTML)"true"==i?(n.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(n.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true"));else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".st-single-h-child-container").remove();const r=this.map_children_data_to_head(e,t);a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e){const t=this.tree_map_arr.filter((t=>t.parentId==e));t.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)}))}}class r_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="st-child-wrapper",this.head_child_wrapper_1.className="st-child-wrapper",this.head_child_wrapper_2.className="st-child-wrapper",this.content_wrapper.className="st-hsw-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.tsInnerContainer?.append(this.content_wrapper),this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,null==t,{parent:"right",children:c%2==0?"right":"left"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"right":"left"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===n)return;const o=this.chartHelper?.color_handler.getColor(e),c=r.getBoundingClientRect(),l=t.node().getBoundingClientRect(),s=Math.sqrt(Math.PI*this.chartHelper.head_linker_thumb_circle_radius*this.chartHelper.head_linker_thumb_circle_radius)/2,u="right"==i?0-s:(l.width+s)/this.current_scale,h=l.height/this.current_scale/2,d=(c.x+("right"==i?c.width:0))/this.current_scale-l.x/this.current_scale+0,p=(c.top+c.height/2)/this.current_scale-l.top/this.current_scale,y=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Hx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line linker-"+i).attr("stroke-width",1).attr("stroke",o?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)"true"==n?(a.querySelector(".child-container").style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()):(a?.setAttribute("data-ts-head-children-hidden","true"),a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.querySelector(".child-container").style.visibility="hidden");else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),setTimeout((()=>{this.drawBranchLinkFresh()}),0)}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-top-head-children-hidden"),n=a?.getAttribute("data-ts-bottom-head-children-hidden");if(0==r?this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2==0)):this.chartHelper.tree_data.filter((e=>e.parentId==t&&this.chartHelper.getElemRelPosInTree(e.id)%2!=0)),(i&&"false"!=i||0!=r)&&(n&&"false"!=n||0==r)){(0==r?a.parentElement.previousElementSibling:a.parentElement.nextElementSibling).style.visibility="visible",setTimeout((()=>{this.drawBranchLinkFresh();"true"==(0==r?a?.getAttribute("data-ts-bottom-head-children-hidden"):a?.getAttribute("data-ts-top-head-children-hidden"))&&a.querySelectorAll(".linker-"+(0==r?"left":"right")).forEach((e=>e.remove()))}),0),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","false")}else{const e=0==r?a.parentElement.previousElementSibling:a.parentElement.nextElementSibling;e.style.visibility="hidden",e.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.querySelectorAll(".linker-"+(0==r?"right":"left")).forEach((e=>e.remove())),a?.setAttribute(0==r?"data-ts-top-head-children-hidden":"data-ts-bottom-head-children-hidden","true")}}}class a_{content_wrapper=null;head_child_wrapper_center=null;head_child_wrapper_1=null;head_child_wrapper_2=null;tsInnerContainer=null;chartHelper;tree_map_arr=[];current_scale=1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,this.chartHelper.handleCollapseChildren=this.handleCollapseChildren.bind(this),setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center=this.chartHelper.createDynamicEl(),this.head_child_wrapper_1=this.chartHelper.createDynamicEl(),this.head_child_wrapper_2=this.chartHelper.createDynamicEl(),this.head_child_wrapper_center.className="st-child-wrapper",this.head_child_wrapper_1.className="st-child-wrapper",this.head_child_wrapper_2.className="st-child-wrapper",this.content_wrapper.className="st-cs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper_1),this.content_wrapper.appendChild(this.head_child_wrapper_2),this.content_wrapper.appendChild(this.head_child_wrapper_center),this.tsInnerContainer?.append(this.content_wrapper),this.chartHelper.set_tmp_tree_data(),this.map_children_data_to_head(),this.drawBranchLinkFresh(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .st-root-el > svg`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"bottom")}),0)}map_children_data_to_head(e,t,r){let a=this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));a=r||this.chartHelper.tmp_tree_data.filter((e=>e.parentId==t));const i=this.chartHelper.createDynamicEl(),n=this.chartHelper.getIsParentRootEl(t)&&null!=t;return a.forEach((r=>{const a=this.chartHelper.createDynamicEl(),o=this.chartHelper.get_second_ancestor_item(r.id);let c=null==o?1:this.chartHelper.getElemRelPosInTree(o?.id);const l=this.chartHelper.makeHead(r,!1,{parent:"right",children:null==t?"bottom":c%2==0?"right":"left"});a.appendChild(l?.node());const s=null==t?" st-root-el":"";if(a.className="ts-head-node-wrapper ts-w-id-"+r.id+s,c%2==0&&a.classList.add("top"),void 0===e?this.head_child_wrapper_center?.appendChild(a):n?this.chartHelper.getElemRelPosInTree(r.id)%2==0?this.head_child_wrapper_1?.appendChild(a):this.head_child_wrapper_2?.appendChild(a):(i.appendChild(a),c%2==0&&i.classList.add("top")),null!=e&&this.tree_map_arr.push({id:r.id,svgNode:e,targetChild:l?.node(),parentId:t,lineOrigin:c%2==0?"right":"left"}),this.chartHelper?.el_has_children(r.id))if(n)this.chartHelper.getElemRelPosInTree(r.id)%2==0?a.prepend(this.map_children_data_to_head(l,r.id)):a.append(this.map_children_data_to_head(l,r.id));else{const e=this.map_children_data_to_head(l,r.id);c%2==0?a.prepend(e):a.appendChild(e)}})),i.classList.add("child-container"),i}drawBranchLinkFresh(){this.chartHelper.rootWrapperContainer?.querySelectorAll(".linker-line").forEach((e=>e.remove())),this.tree_map_arr.forEach((e=>this.drawBranchLink(e.id,e.svgNode,e.targetChild,e.parentId,e.lineOrigin)))}drawBranchLink(e,t,r,a,i="bottom"){const n=this.tsInnerContainer?.querySelector(".ts-w-id-"+a)?.getAttribute("data-ts-head-children-hidden");if("true"===n)return;const o=this.chartHelper?.color_handler.getColor(e),c=this.chartHelper.getIsParentRootEl(a),l=r.getBoundingClientRect(),s=t.node().getBoundingClientRect();let u,h;c?(u=s.width/this.current_scale/2,h=0):(u="right"==i?0:s.width/this.current_scale,h=s.height/this.current_scale/2);const d=(l.x+("right"==i?l.width:0))/this.current_scale-s.x/this.current_scale+0,p=(l.top+l.height/2)/this.current_scale-s.top/this.current_scale,y=Ix(null!=this.chartHelper?.tree_link_type?this.chartHelper?.tree_link_types[this.chartHelper?.tree_link_type]:Hx),f=[{source:[u,h],target:[d,p]}];t?.append("path").data(f).attr("d",y).attr("fill","none").attr("class","linker-line").attr("stroke-width",1).attr("stroke",o?.gray).attr("style","z-index: -1")}handleCollapseChildren(e,t,r){const a=e.node()?.parentElement,i=this.chartHelper.getIsElRootTreeChild(t),n=a?.getAttribute("data-ts-head-children-hidden");if(i)return this.handleCollapseRootElChildren(e,t,r);if(a?.hasAttribute("data-ts-head-children-hidden")||""!=a.querySelector(".child-container").innerHTML)if("true"==n){const e=a?.querySelector(".child-container");e.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}else{const e=a?.querySelector(".child-container");e.style.visibility="hidden",a?.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")}else{this.chartHelper.set_tmp_tree_data(t),a.querySelector(".child-container").remove();const r=this.map_children_data_to_head(e,t),i=this.chartHelper.get_second_ancestor_item(t);(null==i?1:this.chartHelper.getElemRelPosInTree(i?.id))%2==0?a?.prepend(r):a?.appendChild(r),a?.setAttribute("data-ts-head-children-hidden","false"),this.drawBranchLinkFresh()}}removeNodeRecursiveFromTreeMap(e,t){const r=this.tree_map_arr.filter((t=>t.parentId==e));r.forEach((e=>{this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e.id)),1),this.tree_map_arr.filter((t=>t.id==e.id)).length>0&&this.removeNodeRecursiveFromTreeMap(e.id)})),t&&this.tree_map_arr.splice(this.tree_map_arr.findIndex((t=>t.id==e)),1)}handleCollapseRootElChildren(e,t,r){const a=e.node()?.parentElement,i=a?.getAttribute("data-ts-head-children-hidden");i&&"false"!=i?(a.parentElement.previousElementSibling.style.visibility="",a.parentElement.previousElementSibling.previousElementSibling.style.visibility="",a?.setAttribute("data-ts-head-children-hidden","false")):(a.parentElement.previousElementSibling.style.visibility="hidden",a.parentElement.previousElementSibling.previousElementSibling.style.visibility="hidden",a.parentElement.previousElementSibling.querySelectorAll(".linker-line").forEach((e=>e.remove())),a.parentElement.previousElementSibling.previousElementSibling.querySelectorAll(".linker-line").forEach((e=>e.remove())),a?.setAttribute("data-ts-head-children-hidden","true")),this.drawBranchLinkFresh()}}class i_{content_wrapper=null;head_child_wrapper=null;tsInnerContainer=null;chartHelper;current_scale=1;nodes_group=void 0;links_group=void 0;rotate_deg=0;animation_interval=void 0;start_animation=!1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper.className="st-child-wrapper",this.content_wrapper.className="st-grs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper),this.tsInnerContainer?.append(this.content_wrapper),this.map_children_data_to_head(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el > g`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}animate_chat(e=!1,t=!1){if(e)return this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.nodes_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`),this.links_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`);this.start_animation=!this.start_animation,this.start_animation?this.animation_interval=setInterval((()=>{this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.nodes_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`),this.links_group.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`)}),this.chartHelper?.animation_rotation_speed):(null!=this.animation_interval&&clearInterval(this.animation_interval),this.animation_interval=void 0)}map_children_data_to_head(){const e=Cp(this.chartHelper.data_to_d3_format()).sort(((e,t)=>t.height-e.height||e.data.name.localeCompare(t.data.name))),t=540*Math.sqrt(this.chartHelper.tree_data.length/3);kp().size([360,t]).separation(((e,t)=>50))(e);const r=Yt("svg");r.attr("width",580),r.attr("height",250),r.attr("style","overflow: visible");const a=r.append("g").attr("transform",`translate(${r.attr("width")/2},${r.attr("height")/2})`);a.append("g").attr("class","links"),a.append("g").attr("class","nodes"),e.each((e=>{const t=this.chartHelper?.makeHead(e.data,!1,!1);e.head=t.node(),e.head.removeEventListener("dblclick",this.chartHelper.handleCenterHead),e.head.ondblclick=e=>{e.stopPropagation(),e.preventDefault();const t=e.currentTarget.querySelector("g").getBoundingClientRect();this.chartHelper?.center_elem(t)},e.color_set=this.chartHelper?.color_handler.getColor(e.data.id)})),r.select("g.nodes").selectAll("svg.node").data(e.descendants()).enter().append((e=>("rounded"!=this.chartHelper?.chart_head_type&&this.chartHelper?.show_chart_head_border&&(e.head.querySelector("rect").style.fill="white",e.head.querySelector("rect").style.strokeWidth="1"),e.head))).classed("node",!0).select("g").attr("transform",(e=>`rotate(${e.x}, 0, 0) translate(0, ${-e.y})`)),r.select("g.nodes").selectAll("circle.node").data(e.descendants()).enter().append("circle").classed("node",!0).attr("cx",0).attr("cy",(e=>-e.y)).attr("r",5).attr("fill",(e=>e.color_set.color)).attr("stroke",(e=>e.color_set.gray)).attr("stroke-width",1).attr("transform",(e=>`rotate(${e.x}, 0, 0)`));const i=Tx().angle((e=>e.x*Math.PI/180)).radius((e=>e.y));r.select("g.links").selectAll("path.link").data(e.links()).enter().append("path").classed("link",!0).attr("stroke",(e=>e.target.color_set.gray)).attr("fill","none").attr("stroke-width",1.5).attr("d",(e=>i([e.target,e.source]))),this.nodes_group=r.select("g.nodes"),this.links_group=r.select("g.links"),this.head_child_wrapper?.append(r.node())}}class n_{content_wrapper=null;head_child_wrapper=null;tsInnerContainer=null;chartHelper;current_scale=1;root_svg=void 0;rotate_deg=0;animation_interval=void 0;start_animation=!1;constructor({tsInnerContainer:e,chartHelper:t}){this.tsInnerContainer=e,this.chartHelper=t,setTimeout((()=>{this.organizeUI()}),0)}organizeUI(){this.content_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper=this.chartHelper.createDynamicEl(),this.head_child_wrapper.className="st-child-wrapper",this.content_wrapper.className="st-grs-content-wrapper",this.content_wrapper.appendChild(this.head_child_wrapper),this.tsInnerContainer?.append(this.content_wrapper),this.map_children_data_to_head(),Bi((()=>{const e=jt(`${this.chartHelper.app_root_unique_selector} .root-svg-el`).node().getBoundingClientRect();this.chartHelper?.center_elem(e,"center")}),0)}animate_chat(e=!1,t=!1){if(e)return this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.root_svg.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`);this.start_animation=!this.start_animation,this.start_animation?this.animation_interval=setInterval((()=>{this.rotate_deg+=this.chartHelper?.animation_rotation_interval*(t?-1:1),this.root_svg.attr("transform",`rotate(${this.rotate_deg}, 0, 0)`)}),this.chartHelper?.animation_rotation_speed):(null!=this.animation_interval&&clearInterval(this.animation_interval),this.animation_interval=void 0)}map_children_data_to_head(){const e=Cp(this.chartHelper.data_to_d3_format()).sort(((e,t)=>t.height-e.height||e.data.name.localeCompare(t.data.name))),t=540*Math.sqrt(this.chartHelper.tree_data.length/3),r=2*t,a=2*t;e.each((e=>{const t=this.chartHelper?.makeHead(e.data,!1,!1);e.head=t.node(),e.color_set=this.chartHelper?.color_handler.getColor(e.data.id)}));py().size([2*Math.PI,t]).separation(((e,t)=>100))(e);const i=Yt("svg").attr("viewBox",[-110-t,-110-t,r,a]).attr("width",r).attr("height",a).attr("style","background-color: none; max-width: 100%; height: auto; overflow: visible;");i.append("g").attr("fill","none").attr("stroke",this.chartHelper?.color_handler.get_app_gray()).attr("stroke-opacity",1).attr("stroke-width",1.5).selectAll("path").data(e.links()).join("path").attr("d",Wx().angle((e=>e.x)).radius((e=>e.y)));const n=i.append("g").selectAll("g").data(e.descendants()).join("g").attr("transform",(e=>`rotate(${180*e.x/Math.PI-90}) translate(${e.y},0)`));n.append("circle").attr("fill",(e=>e.color_set.color)).attr("r",3),n.append((e=>("rounded"!=this.chartHelper?.chart_head_type&&this.chartHelper?.show_chart_head_border&&(e.head.querySelector("rect").style.fill="white",e.head.querySelector("rect").style.strokeWidth="1"),e.head))),n.append("title").text((e=>e.data.name+" - "+e.data.role)),this.root_svg=i,this.head_child_wrapper?.append(i.node())}}var o_={zoomIn:'<svg viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg" fill="#000000"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill="#000000" fill-rule="evenodd" d="M250,204 L247.503423,204 C247.232903,204 247,204.223858 247,204.5 C247,204.768066 247.22539,205 247.503423,205 L250,205 L250,207.496577 C250,207.767097 250.223858,208 250.5,208 C250.768066,208 251,207.77461 251,207.496577 L251,205 L253.496577,205 C253.767097,205 254,204.776142 254,204.5 C254,204.231934 253.77461,204 253.496577,204 L251,204 L251,201.503423 C251,201.232903 250.776142,201 250.5,201 C250.231934,201 250,201.22539 250,201.503423 L250,204 Z M255.441686,210.141919 C254.121974,211.298772 252.392877,212 250.5,212 C246.357864,212 243,208.642136 243,204.5 C243,200.357864 246.357864,197 250.5,197 C254.642136,197 258,200.357864 258,204.5 C258,206.392877 257.298772,208.121974 256.141919,209.441686 L260.317115,213.616883 C260.508288,213.808056 260.500857,214.12544 260.313149,214.313149 C260.119785,214.506512 259.80289,214.503123 259.616883,214.317115 L255.441686,210.141919 Z M250.5,211 C254.089851,211 257,208.089851 257,204.5 C257,200.910149 254.089851,198 250.5,198 C246.910149,198 244,200.910149 244,204.5 C244,208.089851 246.910149,211 250.5,211 Z" transform="translate(-243 -197)"></path> </g></svg>',zoomOut:'<svg viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" fill="#000000"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <title>zoom-out Created with Sketch Beta. ',resetZoom:' ',rotate:'',rotate_once:' ',rotate_once_anti_clockwise:' ',rotate_anticlockwise:''};class c_{root_ui_element=void 0;zoomInOut=()=>null;resetZoom=()=>null;animate_chat=()=>null;tree_type=void 0;animatable_trees=["goldenRod","radialSpiderLeg"];constructor({root_ui_element:e,zoomInOut:t,resetZoom:r,animate_chat:a}){this.root_ui_element=e,this.zoomInOut=t,this.resetZoom=r,this.animate_chat=a,setTimeout((()=>{this.make_tools()}),0)}make_tools(){const e=new xw;e.className="tools-container",this.root_ui_element?.appendChild(e);const t=document.createElement("div");t.className="tool-item",t.innerHTML=o_.zoomIn,t.title="Zoom in",t.onclick=e=>this.zoomInOut();const r=document.createElement("div");r.className="tool-item",r.innerHTML=o_.zoomOut,r.title="Zoom out",r.onclick=e=>this.zoomInOut("out");const a=document.createElement("div");a.className="tool-item",a.innerHTML=o_.resetZoom,a.title="Reset zoom & position",a.onclick=e=>this.resetZoom();const i=document.createElement("div");i.className="tool-item",i.innerHTML=o_.rotate,i.title="Start/Stop Clockwise Rotation";const n=document.createElement("div");n.className="tool-item",n.innerHTML=o_.rotate_anticlockwise,n.title="Start/Stop Anticlockwise Rotation";const o=document.createElement("div");o.className="tool-item",o.innerHTML=o_.rotate_once,o.title="Rotate Clockwise Once";const c=document.createElement("div");c.className="tool-item",c.innerHTML=o_.rotate_once_anti_clockwise,c.title="Rotate Anticlockwise Once",e.append(t),e.append(r),e.append(a),this.animatable_trees.includes(this.tree_type)&&(e.append(i),e.append(n),e.append(o),e.append(c),i.onclick=e=>this.animate_chat(),n.onclick=e=>this.animate_chat(!1,!0),o.onclick=e=>this.animate_chat(!0),c.onclick=e=>this.animate_chat(!0,!0))}}class l_ extends EventTarget{libraryName="TreeSpider";targetRootContainer=null;rootWrapperContainer=null;tsInnerContainer=null;rootCanvasEl=null;chartHelper={};currentChartUI;zoom_instace;colorHandler={};tree_default_point_position="";instance_unique_id="";options={targetContainer:"",width:"900px",height:"500px",placeEl:"override",tree_data:void 0,color_range:[],tree_type:"default",chart_head_type:"default",show_tools:!0,show_chart_head_border:!1,animation_rotation_speed:10,animation_rotation_interval:1,backgroundPattern:"default",backgroundSize:void 0,customBackground:void 0,backgroundPosition:void 0,head_linker_thumb_circle_radius:8,linker_thumb_icon_color:"bright500",linker_thumb_shape:"symbolCircle",head_image_shape:"symbolCircle",chart_head_bg:"#ffffff",auto_set_chart_head_bg:!1,display_tree_in_step:!1,auto_display_tree_in_step:!0,tree_level_step:2,pallet:{h:10,s:.5,l:.5,darker:3,brighter:.8,bright100:.5,dark100:.5,gray:50,gray85:85},tree_link_type:void 0,random_data_length:200,autoInitialize:!0,zoom_in_distance:1.5,zoom_out_distance:.5,verticalSpace:"120px",font_link:"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap",font_name:"Lato"};constructor(e){if(super(),null==e.targetContainer)throw new Error(this.libraryName+": The target container is required");if(null!=e.tree_data)this.options.tree_data=e.tree_data;else{const t=new qC({length:e.random_data_length||this.options.random_data_length});this.options.tree_data=t.generated_data}this.setOptions(e),this.instance_unique_id="tree_spider_"+this.options.targetContainer.replace(/[\W\D]/,"_"),this.loadFont(),console.info(this.libraryName+" ready!"),this.options.autoInitialize&&this.initialize()}initialize(){if(this.targetRootContainer=document.querySelector(this.options.targetContainer),null===this.targetRootContainer)throw new Error(this.libraryName+": target container not found");this.targetRootContainer.setAttribute("data-tree-spider-initialized",this.instance_unique_id),this.createUI(),setTimeout((()=>{this.emitEvent("library.init",{rootContainer:this.rootWrapperContainer})}),0),console.info(this.libraryName+" initialized!")}initialize_root_container(){this.rootWrapperContainer=new vw,this.rootWrapperContainer.setAttribute("data-ts-unique-id",this.instance_unique_id),this.setCSSPropertyVar("--vertical-space-var",this.options.verticalSpace),this.setCSSPropertyVar("--font-family",this.options.font_name),this.setCSSPropertyVar("--root-cont-width",this.options.width),this.setCSSPropertyVar("--root-cont-height",this.options.height),this.rootWrapperContainer.setAttribute("backgroundPattern",this.options.backgroundPattern),this.rootWrapperContainer.setAttribute("backgroundSize",this.options.backgroundSize),this.rootWrapperContainer.setAttribute("customBackground",this.options.customBackground),this.rootWrapperContainer.setAttribute("backgroundPosition",this.options.backgroundPosition)}setCSSPropertyVar(e,t){this.rootWrapperContainer?.style.setProperty(e,t)}loadFont(){let e,t,r;null==jt('[href="https://fonts.googleapis.com"]').node()&&(t=Yt("link").attr("rel","preconnect").attr("href","https://fonts.googleapis.com")),null==jt('[href="https://fonts.gstatic.com"]').node()&&(r=Yt("link").attr("rel","preconnect").attr("href","https://fonts.gstatic.com").attr("crossOrigin","")),this.options.font_link&&(e=Yt("link").attr("href",this.options.font_link).attr("rel","stylesheet")),null!=t&&document.head.appendChild(t.node()),null!=r&&document.head.appendChild(r.node()),null!=e&&document.head.appendChild(e.node())}setObjectValue(e,t){const r=e;if(0==Object.keys(r).length)return t;for(const e in r)if(Object.keys(t).includes(e)&&Object.hasOwnProperty.call(r,e))if("object"!=typeof r[e]||Array.isArray(r[e]))r[e]=t[e];else{const a=this.setObjectValue(r[e],t[e]);r[e]={...r[e],...a}}return r}createUI(){this.initialize_root_container(),this.chartHelper=new ZC,this.chartHelper.rootWrapperContainer=this.rootWrapperContainer,this.chartHelper.app_unique_id=this.instance_unique_id,this.chartHelper.tree_data=this.options.tree_data,this.chartHelper.center_elem=this.center_elem.bind(this),this.chartHelper.chart_head_type=this.options.chart_head_type,this.chartHelper.animation_rotation_speed=this.options.animation_rotation_speed,this.chartHelper.animation_rotation_interval=this.options.animation_rotation_interval,this.chartHelper.head_linker_thumb_circle_radius=this.options.head_linker_thumb_circle_radius,this.chartHelper.linker_thumb_icon_color=this.options.linker_thumb_icon_color,this.chartHelper.linker_thumb_shape=this.options.linker_thumb_shape,this.chartHelper.head_image_shape=this.options.head_image_shape,this.chartHelper.chart_head_bg=this.options.chart_head_bg,this.chartHelper.auto_set_chart_head_bg=this.options.auto_set_chart_head_bg,this.chartHelper.display_tree_in_step=this.options.display_tree_in_step,this.chartHelper.auto_display_tree_in_step=this.options.auto_display_tree_in_step,this.chartHelper.tree_level_step=this.options.tree_level_step,this.chartHelper.tree_link_type=this.options.tree_link_type,this.chartHelper.emitEvent=this.emitEvent.bind(this),this.colorHandler=new QC({tree_data:this.options.tree_data,color_range:this.options.color_range,pallet:this.options.pallet}),this.chartHelper.color_handler=this.colorHandler,this.placeRootContainer()}zoomInOut(e="in"){const t="in"==e?this.options.zoom_in_distance:this.options.zoom_out_distance;this.zoom_instace?.scaleBy(jt(`[data-ts-unique-id='${this.instance_unique_id}']`),t)}resetZoom(){const e=jt(`[data-ts-unique-id='${this.instance_unique_id}'] .root-svg-el > g`).node().getBoundingClientRect();this.center_elem(e,this.tree_default_point_position)}placeRootContainer(){if(this.tsInnerContainer=this.chartHelper.createDynamicEl(),this.tsInnerContainer.className="ts-inner-container",0==this.options.tree_data?.length){const e=new xw;e.innerText="No data provided!",this.tsInnerContainer.appendChild(e)}if(this.rootWrapperContainer?.appendChild(this.tsInnerContainer),"start"==this.options.placeEl?this.targetRootContainer?.prepend(this.rootWrapperContainer):"end"==this.options.placeEl?this.targetRootContainer?.append(this.rootWrapperContainer):"object"==typeof this.options.placeEl&&Object.keys(this.options.placeEl).length>0?this.targetRootContainer?.insertBefore(this.rootWrapperContainer,this.targetRootContainer.querySelector(this.options.placeEl.beforeEl)):(this.targetRootContainer.innerHTML="",this.targetRootContainer.appendChild(this.rootWrapperContainer)),this.bindPanning(),"default"==this.options.tree_type)this.currentChartUI=new XC({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("vSpiderWalk"==this.options.tree_type)this.currentChartUI=new e_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("hSpider"==this.options.tree_type)this.currentChartUI=new t_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("hSpiderWalk"==this.options.tree_type)this.currentChartUI=new r_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("cellar"==this.options.tree_type)this.currentChartUI=new a_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else if("goldenRod"==this.options.tree_type)this.currentChartUI=new i_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper});else{if("radialSpiderLeg"!=this.options.tree_type)throw new Error("Not implemented and you are welcome to implement it :)");this.currentChartUI=new n_({tree_data:this.options.tree_data,tsInnerContainer:this.tsInnerContainer,chartHelper:this.chartHelper})}if(this.options.tree_data.length>0&&this.options.show_tools){new c_({root_ui_element:this.rootWrapperContainer,zoomInOut:this.zoomInOut.bind(this),resetZoom:this.resetZoom.bind(this),animate_chat:this.currentChartUI?.animate_chat?.bind(this.currentChartUI)}).tree_type=this.options.tree_type}}bindPanning(){const e=this.rootWrapperContainer?.getBoundingClientRect(),t=jt(`[data-ts-unique-id='${this.instance_unique_id}']`);this.zoom_instace=gw().filter((e=>(e.preventDefault(),!(e.ctrlKey&&"wheel"!==e.type||e.button)))).extent([[0,0],[e.width,e.height]]).on("zoom",(e=>{this.emitEvent("zooming",{e:e})&&(this.tsInnerContainer.style.transform=`translate(${e.transform.x}px, ${e.transform.y}px) scale(${e.transform.k})`,this.rootWrapperContainer.style.setProperty("--ts-root-container-cursor","grabbing"),this.currentChartUI.current_scale=e.transform.k)})).on("end",(e=>{this.rootWrapperContainer.style.setProperty("--ts-root-container-cursor","grab")})),t.call(this.zoom_instace).on("dblclick.zoom",(e=>null))}center_elem(e,t="center"){const r=jt(`[data-ts-unique-id='${this.instance_unique_id}']`);""==this.tree_default_point_position&&(this.tree_default_point_position=t);const a=r.node()?.getBoundingClientRect(),i=this.tsInnerContainer?.getBoundingClientRect(),n=(e.left-i.left)/this.currentChartUI.current_scale,o=(e.top-i.top)/this.currentChartUI.current_scale,c=a.width/2-e.width/2/this.currentChartUI.current_scale,l=a.height/2-e.height/2/this.currentChartUI.current_scale;let s=0,u=0;if("center"==t)s=n-c,u=o-l;else if("top"==t)s=n-c,u=o-10;else if("bottom"==t){s=n-c;u=o-(l+(a.height/2-e.height/2))+10}else if("left"==t)s=n-10,u=o-l;else if("right"==t){s=n-(c+(a.width/2-e.width/2))+10,u=o-l}r.transition().duration(2500).call(this.zoom_instace?.transform,cw.translate(-s,-u))}emitEvent(e,t,r=!0){const a=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:r});return this.dispatchEvent(a)}updateChartHeadBg(e){"goldenRod"==this.options.tree_type||"radialSpiderLeg"==this.options.tree_type?(this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.querySelector("rect").style.fill=e)),this.addEventListener("chart_head.expanded",(()=>this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.querySelector("rect").style.fill=e))))):(this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.style.backgroundColor=e)),this.addEventListener("chart_head.expanded",(()=>this.rootWrapperContainer?.querySelectorAll(".main-svg-el").forEach((t=>t.style.backgroundColor=e)))))}on(e,t){this.addEventListener(e,t)}setOptions(e){this.setObjectValue(this.options,e)}zoom(e){this.zoomInOut(e)}startStopRotateCW(){this.currentChartUI?.animate_chat()}startStopRotateACW(){this.currentChartUI?.animate_chat(!1,!0)}rotateOnceCW(){this.currentChartUI?.animate_chat(!0)}rotateOnceACW(){this.currentChartUI?.animate_chat(!0,!0)}} + + +/***/ }), + +/***/ 1782: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"); + +/***/ }), + +/***/ 2203: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream"); + +/***/ }), + +/***/ 9023: +/***/ ((module) => { + +"use strict"; +module.exports = require("util"); + +/***/ }), + +/***/ 4784: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* + * AUTOGENERATED - DON'T EDIT + * Your edits in this file will be overwritten in the next build! + * Modify the docusaurus.config.js file at your site's root instead. + */ +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + "title": "TreeSpider", + "tagline": "JavaScript library for displaying organization structures in style", + "favicon": "img/favicon.ico", + "url": "https://treespider.pryxy.com", + "baseUrl": "/", + "organizationName": "Abayomi Amusa", + "projectName": "treeSpider", + "onBrokenLinks": "throw", + "onBrokenMarkdownLinks": "warn", + "i18n": { + "defaultLocale": "en", + "locales": [ + "en" + ], + "path": "i18n", + "localeConfigs": {} + }, + "presets": [ + [ + "classic", + { + "docs": { + "sidebarPath": "./sidebars.ts", + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/" + }, + "blog": { + "showReadingTime": true, + "feedOptions": { + "type": [ + "rss", + "atom" + ], + "xslt": true + }, + "editUrl": "https://github.com/paulosabayomi/treespider-doc/tree/main/", + "onInlineTags": "warn", + "onInlineAuthors": "warn", + "onUntruncatedBlogPosts": "warn" + }, + "theme": { + "customCss": "./src/css/custom.css" + } + } + ] + ], + "themeConfig": { + "image": "img/treespider-social-card.png", + "navbar": { + "title": "TreeSpider", + "logo": { + "alt": "TreeSpider Logo", + "src": "img/treespider-logo.png" + }, + "items": [ + { + "type": "docSidebar", + "sidebarId": "tutorialSidebar", + "position": "left", + "label": "Documentation" + }, + { + "to": "examples", + "label": "Examples", + "position": "left" + }, + { + "to": "/docs/contributing", + "label": "Contributing", + "position": "left" + }, + { + "href": "https://github.com/paulosabayomi/treeSpider", + "label": "GitHub", + "position": "left" + }, + { + "href": "https://github.com/paulosabayomi/treeSpider/issues", + "label": "Issues & Feature Requests", + "position": "left" + } + ], + "hideOnScroll": false + }, + "footer": { + "style": "dark", + "links": [ + { + "title": "Docs", + "items": [ + { + "label": "Documentation", + "to": "/docs/intro" + } + ] + }, + { + "title": "More", + "items": [ + { + "label": "GitHub", + "href": "https://github.com/paulosabayomi/treeSpider" + } + ] + } + ], + "copyright": "Copyright © 2024 TreeSpider. All rights reserved. Created with ❤ by Abayomi Amusa" + }, + "prism": { + "theme": { + "plain": { + "color": "#393A34", + "backgroundColor": "#f6f8fa" + }, + "styles": [ + { + "types": [ + "comment", + "prolog", + "doctype", + "cdata" + ], + "style": { + "color": "#999988", + "fontStyle": "italic" + } + }, + { + "types": [ + "namespace" + ], + "style": { + "opacity": 0.7 + } + }, + { + "types": [ + "string", + "attr-value" + ], + "style": { + "color": "#e3116c" + } + }, + { + "types": [ + "punctuation", + "operator" + ], + "style": { + "color": "#393A34" + } + }, + { + "types": [ + "entity", + "url", + "symbol", + "number", + "boolean", + "variable", + "constant", + "property", + "regex", + "inserted" + ], + "style": { + "color": "#36acaa" + } + }, + { + "types": [ + "atrule", + "keyword", + "attr-name", + "selector" + ], + "style": { + "color": "#00a4db" + } + }, + { + "types": [ + "function", + "deleted", + "tag" + ], + "style": { + "color": "#d73a49" + } + }, + { + "types": [ + "function-variable" + ], + "style": { + "color": "#6f42c1" + } + }, + { + "types": [ + "tag", + "selector", + "keyword" + ], + "style": { + "color": "#00009f" + } + } + ] + }, + "darkTheme": { + "plain": { + "color": "#F8F8F2", + "backgroundColor": "#282A36" + }, + "styles": [ + { + "types": [ + "prolog", + "constant", + "builtin" + ], + "style": { + "color": "rgb(189, 147, 249)" + } + }, + { + "types": [ + "inserted", + "function" + ], + "style": { + "color": "rgb(80, 250, 123)" + } + }, + { + "types": [ + "deleted" + ], + "style": { + "color": "rgb(255, 85, 85)" + } + }, + { + "types": [ + "changed" + ], + "style": { + "color": "rgb(255, 184, 108)" + } + }, + { + "types": [ + "punctuation", + "symbol" + ], + "style": { + "color": "rgb(248, 248, 242)" + } + }, + { + "types": [ + "string", + "char", + "tag", + "selector" + ], + "style": { + "color": "rgb(255, 121, 198)" + } + }, + { + "types": [ + "keyword", + "variable" + ], + "style": { + "color": "rgb(189, 147, 249)", + "fontStyle": "italic" + } + }, + { + "types": [ + "comment" + ], + "style": { + "color": "rgb(98, 114, 164)" + } + }, + { + "types": [ + "attr-name" + ], + "style": { + "color": "rgb(241, 250, 140)" + } + } + ] + }, + "additionalLanguages": [], + "magicComments": [ + { + "className": "theme-code-block-highlighted-line", + "line": "highlight-next-line", + "block": { + "start": "highlight-start", + "end": "highlight-end" + } + } + ] + }, + "colorMode": { + "defaultMode": "light", + "disableSwitch": false, + "respectPrefersColorScheme": false + }, + "docs": { + "versionPersistence": "localStorage", + "sidebar": { + "hideable": false, + "autoCollapseCategories": false + } + }, + "blog": { + "sidebar": { + "groupByYear": true + } + }, + "metadata": [], + "tableOfContents": { + "minHeadingLevel": 2, + "maxHeadingLevel": 3 + } + }, + "baseUrlIssueBanner": true, + "future": { + "experimental_storage": { + "type": "localStorage", + "namespace": false + }, + "experimental_router": "browser" + }, + "onBrokenAnchors": "warn", + "onDuplicateRoutes": "warn", + "staticDirectories": [ + "static" + ], + "customFields": {}, + "plugins": [], + "themes": [], + "scripts": [], + "headTags": [], + "stylesheets": [], + "clientModules": [], + "titleDelimiter": "|", + "noIndex": false, + "markdown": { + "format": "mdx", + "mermaid": false, + "mdx1Compat": { + "comments": true, + "admonitions": true, + "headingIds": true + }, + "anchors": { + "maintainCase": false + } + } +}); + + +/***/ }), + +/***/ 8168: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _extends) +/* harmony export */ }); +function _extends() { + return _extends = Object.assign ? Object.assign.bind() : function (n) { + for (var e = 1; e < arguments.length; e++) { + var t = arguments[e]; + for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); + } + return n; + }, _extends.apply(null, arguments); +} + + +/***/ }), + +/***/ 2892: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + A: () => (/* binding */ _inheritsLoose) +}); + +;// ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); +} + +;// ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js + +function _inheritsLoose(t, o) { + t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); +} + + +/***/ }), + +/***/ 8587: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (/* binding */ _objectWithoutPropertiesLoose) +/* harmony export */ }); +function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (e.includes(n)) continue; + t[n] = r[n]; + } + return t; +} + + +/***/ }), + +/***/ 8453: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ R: () => (/* binding */ useMDXComponents), +/* harmony export */ x: () => (/* binding */ MDXProvider) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/** + * @import {MDXComponents} from 'mdx/types.js' + * @import {Component, ReactElement, ReactNode} from 'react' + */ + +/** + * @callback MergeComponents + * Custom merge function. + * @param {Readonly} currentComponents + * Current components from the context. + * @returns {MDXComponents} + * Additional components. + * + * @typedef Props + * Configuration for `MDXProvider`. + * @property {ReactNode | null | undefined} [children] + * Children (optional). + * @property {Readonly | MergeComponents | null | undefined} [components] + * Additional components to use or a function that creates them (optional). + * @property {boolean | null | undefined} [disableParentContext=false] + * Turn off outer component context (default: `false`). + */ + + + +/** @type {Readonly} */ +const emptyComponents = {} + +const MDXContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext(emptyComponents) + +/** + * Get current components from the MDX Context. + * + * @param {Readonly | MergeComponents | null | undefined} [components] + * Additional components to use or a function that creates them (optional). + * @returns {MDXComponents} + * Current components. + */ +function useMDXComponents(components) { + const contextComponents = react__WEBPACK_IMPORTED_MODULE_0__.useContext(MDXContext) + + // Memoize to avoid unnecessary top-level context changes + return react__WEBPACK_IMPORTED_MODULE_0__.useMemo( + function () { + // Custom merge via a function prop + if (typeof components === 'function') { + return components(contextComponents) + } + + return {...contextComponents, ...components} + }, + [contextComponents, components] + ) +} + +/** + * Provider for MDX context. + * + * @param {Readonly} properties + * Properties. + * @returns {ReactElement} + * Element. + * @satisfies {Component} + */ +function MDXProvider(properties) { + /** @type {Readonly} */ + let allComponents + + if (properties.disableParentContext) { + allComponents = + typeof properties.components === 'function' + ? properties.components(emptyComponents) + : properties.components || emptyComponents + } else { + allComponents = useMDXComponents(properties.components) + } + + return react__WEBPACK_IMPORTED_MODULE_0__.createElement( + MDXContext.Provider, + {value: allComponents}, + properties.children + ) +} + + +/***/ }), + +/***/ 4164: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* unused harmony export clsx */ +function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ My: () => (/* binding */ Prism), +/* harmony export */ f4: () => (/* binding */ Highlight2) +/* harmony export */ }); +/* unused harmony exports normalizeTokens, themes, useTokenize */ +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6540); +/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4164); +var __create = Object.create; +var __defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// ../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js +var require_prism = __commonJS({ + "../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(exports, module) { + var Prism2 = function() { + var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i; + var uniqueId = 0; + var plainTextGrammar = {}; + var _ = { + /** + * A namespace for utility methods. + * + * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may + * change or disappear at any time. + * + * @namespace + * @memberof Prism + */ + util: { + encode: function encode(tokens) { + if (tokens instanceof Token) { + return new Token(tokens.type, encode(tokens.content), tokens.alias); + } else if (Array.isArray(tokens)) { + return tokens.map(encode); + } else { + return tokens.replace(/&/g, "&").replace(/} [visited] + * @returns {T} + * @template T + */ + clone: function deepClone(o, visited) { + visited = visited || {}; + var clone; + var id; + switch (_.util.type(o)) { + case "Object": + id = _.util.objId(o); + if (visited[id]) { + return visited[id]; + } + clone = /** @type {Record} */ + {}; + visited[id] = clone; + for (var key in o) { + if (o.hasOwnProperty(key)) { + clone[key] = deepClone(o[key], visited); + } + } + return ( + /** @type {any} */ + clone + ); + case "Array": + id = _.util.objId(o); + if (visited[id]) { + return visited[id]; + } + clone = []; + visited[id] = clone; + /** @type {Array} */ + /** @type {any} */ + o.forEach(function(v, i) { + clone[i] = deepClone(v, visited); + }); + return ( + /** @type {any} */ + clone + ); + default: + return o; + } + }, + /** + * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class. + * + * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned. + * + * @param {Element} element + * @returns {string} + */ + getLanguage: function(element) { + while (element) { + var m = lang.exec(element.className); + if (m) { + return m[1].toLowerCase(); + } + element = element.parentElement; + } + return "none"; + }, + /** + * Sets the Prism `language-xxxx` class of the given element. + * + * @param {Element} element + * @param {string} language + * @returns {void} + */ + setLanguage: function(element, language) { + element.className = element.className.replace(RegExp(lang, "gi"), ""); + element.classList.add("language-" + language); + }, + /** + * Returns whether a given class is active for `element`. + * + * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated + * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the + * given class is just the given class with a `no-` prefix. + * + * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is + * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its + * ancestors have the given class or the negated version of it, then the default activation will be returned. + * + * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated + * version of it, the class is considered active. + * + * @param {Element} element + * @param {string} className + * @param {boolean} [defaultActivation=false] + * @returns {boolean} + */ + isActive: function(element, className, defaultActivation) { + var no = "no-" + className; + while (element) { + var classList = element.classList; + if (classList.contains(className)) { + return true; + } + if (classList.contains(no)) { + return false; + } + element = element.parentElement; + } + return !!defaultActivation; + } + }, + /** + * This namespace contains all currently loaded languages and the some helper functions to create and modify languages. + * + * @namespace + * @memberof Prism + * @public + */ + languages: { + /** + * The grammar for plain, unformatted text. + */ + plain: plainTextGrammar, + plaintext: plainTextGrammar, + text: plainTextGrammar, + txt: plainTextGrammar, + /** + * Creates a deep copy of the language with the given id and appends the given tokens. + * + * If a token in `redef` also appears in the copied language, then the existing token in the copied language + * will be overwritten at its original position. + * + * ## Best practices + * + * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language) + * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to + * understand the language definition because, normally, the order of tokens matters in Prism grammars. + * + * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens. + * Furthermore, all non-overwriting tokens should be placed after the overwriting ones. + * + * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`. + * @param {Grammar} redef The new tokens to append. + * @returns {Grammar} The new language created. + * @public + * @example + * Prism.languages['css-with-colors'] = Prism.languages.extend('css', { + * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token + * // at its original position + * 'comment': { ... }, + * // CSS doesn't have a 'color' token, so this token will be appended + * 'color': /\b(?:red|green|blue)\b/ + * }); + */ + extend: function(id, redef) { + var lang2 = _.util.clone(_.languages[id]); + for (var key in redef) { + lang2[key] = redef[key]; + } + return lang2; + }, + /** + * Inserts tokens _before_ another token in a language definition or any other grammar. + * + * ## Usage + * + * This helper method makes it easy to modify existing languages. For example, the CSS language definition + * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded + * in HTML through `